From 62d880d86b9356af4b3170b8c13d73b77b1b96c6 Mon Sep 17 00:00:00 2001 From: Chase Date: Tue, 19 May 2026 13:51:48 -0700 Subject: [PATCH 1/4] feat: improve cowork error surfacingclaude --- .../activities/generate_chat_title.go | 17 ++++--- server/internal/hooks/cache.go | 19 ++++++++ server/internal/hooks/claude_hooks.go | 17 +++++++ server/internal/hooks/codex_hooks.go | 16 +++++-- server/internal/hooks/cursor_hooks.go | 8 +++- server/internal/hooks/cursor_test.go | 13 ++++-- server/internal/hooks/session_capture.go | 44 ++++++++++++++++--- 7 files changed, 113 insertions(+), 21 deletions(-) diff --git a/server/internal/background/activities/generate_chat_title.go b/server/internal/background/activities/generate_chat_title.go index 366bab58dc..5c9a7858d6 100644 --- a/server/internal/background/activities/generate_chat_title.go +++ b/server/internal/background/activities/generate_chat_title.go @@ -41,14 +41,21 @@ type GenerateChatTitleArgs struct { } const ( - defaultChatTitle = "New Chat" - DefaultClaudeChatTitle = "Claude Code Session" - DefaultCursorChatTitle = "Cursor Session" - DefaultCodexChatTitle = "Codex Session" + defaultChatTitle = "New Chat" + DefaultClaudeChatTitle = "Claude Code Session" + DefaultCoworkChatTitle = "Cowork Session" + DefaultClaudeAmbiguous = "Claude Session" + DefaultCursorChatTitle = "Cursor Session" + DefaultCodexChatTitle = "Codex Session" ) func isDefaultChatTitle(title string) bool { - return title == defaultChatTitle || title == DefaultClaudeChatTitle || title == DefaultCursorChatTitle || title == DefaultCodexChatTitle + return title == defaultChatTitle || + title == DefaultClaudeChatTitle || + title == DefaultCoworkChatTitle || + title == DefaultClaudeAmbiguous || + title == DefaultCursorChatTitle || + title == DefaultCodexChatTitle } func (g *GenerateChatTitle) Do(ctx context.Context, args GenerateChatTitleArgs) error { diff --git a/server/internal/hooks/cache.go b/server/internal/hooks/cache.go index 915ecd885d..0489f836e4 100644 --- a/server/internal/hooks/cache.go +++ b/server/internal/hooks/cache.go @@ -23,6 +23,25 @@ func sessionMCPListCacheKey(sessionID string) string { return fmt.Sprintf("session:mcp-list:%s", sessionID) } +// sessionAgentVariantCacheKey returns the Redis key for the agent variant +// of a session ("cowork" or "claude-code"). Stamped by SessionStart based +// on which mcp_inventory_* payload field is present; shares the MCP list +// TTL. Absence means SessionStart hasn't been processed for this session +// yet — callers should treat that as an ambiguous Claude session rather +// than assuming claude-code. +func sessionAgentVariantCacheKey(sessionID string) string { + return fmt.Sprintf("session:agent-variant:%s", sessionID) +} + +const ( + // agentVariantCowork marks a session that originated from a cowork + // (cmux-managed) Claude Code environment rather than the standard CLI. + agentVariantCowork = "cowork" + // agentVariantClaudeCode marks a session that originated from the + // standard Claude Code CLI (where `claude mcp list` was reachable). + agentVariantClaudeCode = "claude-code" +) + // sessionMCPListTTL is how long the parsed MCP list survives without any // hook activity for its session id. Each hook received refreshes it. const sessionMCPListTTL = 12 * time.Hour diff --git a/server/internal/hooks/claude_hooks.go b/server/internal/hooks/claude_hooks.go index 701ef7f95b..f3b22a0295 100644 --- a/server/internal/hooks/claude_hooks.go +++ b/server/internal/hooks/claude_hooks.go @@ -428,6 +428,7 @@ func (s *Service) captureMCPListSnapshot(ctx context.Context, payload *gen.Claud } var entries []MCPServerEntry + var variant string switch { case payload.AdditionalData["mcp_inventory_claude_code"] != nil: raw, ok := payload.AdditionalData["mcp_inventory_claude_code"].(string) @@ -435,8 +436,10 @@ func (s *Service) captureMCPListSnapshot(ctx context.Context, payload *gen.Claud return } entries = ParseClaudeMCPList(raw) + variant = agentVariantClaudeCode case payload.AdditionalData["mcp_inventory_cowork"] != nil: entries = ParseCoworkMCPInventory(payload.AdditionalData["mcp_inventory_cowork"]) + variant = agentVariantCowork default: return } @@ -449,6 +452,14 @@ func (s *Service) captureMCPListSnapshot(ctx context.Context, payload *gen.Claud ) return } + + variantKey := sessionAgentVariantCacheKey(*payload.SessionID) + if err := s.cache.Set(ctx, variantKey, variant, sessionMCPListTTL); err != nil { + s.logger.WarnContext(ctx, "failed to cache session agent variant", + attr.SlogEvent("claude_hook_agent_variant_cache_set_failed"), + attr.SlogError(err), + ) + } } // refreshMCPListTTL extends the MCP list cache TTL for the session if the @@ -464,6 +475,12 @@ func (s *Service) refreshMCPListTTL(ctx context.Context, sessionID string) { attr.SlogError(err), ) } + if err := s.cache.Expire(ctx, sessionAgentVariantCacheKey(sessionID), sessionMCPListTTL); err != nil { + s.logger.WarnContext(ctx, "failed to refresh session agent variant TTL", + attr.SlogEvent("claude_hook_agent_variant_ttl_refresh_failed"), + attr.SlogError(err), + ) + } } // hasOptionalPluginAuth returns true when the Claude request carries both diff --git a/server/internal/hooks/codex_hooks.go b/server/internal/hooks/codex_hooks.go index 60d2d0d844..8002e21993 100644 --- a/server/internal/hooks/codex_hooks.go +++ b/server/internal/hooks/codex_hooks.go @@ -15,7 +15,6 @@ import ( chatRepo "github.com/speakeasy-api/gram/server/internal/chat/repo" "github.com/speakeasy-api/gram/server/internal/contextvalues" "github.com/speakeasy-api/gram/server/internal/conv" - "github.com/speakeasy-api/gram/server/internal/oops" "github.com/speakeasy-api/gram/server/internal/telemetry" ) @@ -32,7 +31,10 @@ func (s *Service) Codex(ctx context.Context, payload *gen.CodexPayload) (*gen.Co logger.WarnContext(ctx, "rejected unauthorized codex hook request", attr.SlogEvent("codex_hook_unauthorized"), ) - return nil, oops.E(oops.CodeUnauthorized, nil, "unauthorized") + return &gen.CodexHookResult{ + Decision: new("deny"), + Reason: new("Speakeasy hooks: unauthorized — check your Gram API key and project slug."), + }, nil } orgID := authCtx.ActiveOrganizationID @@ -86,8 +88,14 @@ func (s *Service) Codex(ctx context.Context, payload *gen.CodexPayload) (*gen.Co s.recordCodexHook(ctx, payload, orgID, projectID, blockReason) if blockReason != "" { - // HTTP 4xx causes the hook.sh to exit 2, which signals a block to the Codex CLI. - return nil, oops.E(oops.CodeForbidden, nil, "%s", userReason) + // Return the Codex hook JSON shape (decision=deny + reason) so the + // Codex CLI surfaces the block reason to the user. Returning a 4xx + // here would hide the reason behind whatever generic message the + // transport layer renders. + return &gen.CodexHookResult{ + Decision: new("deny"), + Reason: &userReason, + }, nil } return &gen.CodexHookResult{ diff --git a/server/internal/hooks/cursor_hooks.go b/server/internal/hooks/cursor_hooks.go index 0033e8beff..78fcffc71b 100644 --- a/server/internal/hooks/cursor_hooks.go +++ b/server/internal/hooks/cursor_hooks.go @@ -18,7 +18,6 @@ import ( chatRepo "github.com/speakeasy-api/gram/server/internal/chat/repo" "github.com/speakeasy-api/gram/server/internal/contextvalues" "github.com/speakeasy-api/gram/server/internal/conv" - "github.com/speakeasy-api/gram/server/internal/oops" "github.com/speakeasy-api/gram/server/internal/telemetry" ) @@ -37,7 +36,12 @@ func (s *Service) Cursor(ctx context.Context, payload *gen.CursorPayload) (*gen. logger.WarnContext(ctx, "rejected unauthorized cursor hook request", attr.SlogEvent("cursor_hook_unauthorized"), ) - return nil, oops.E(oops.CodeUnauthorized, nil, "unauthorized") + return &gen.CursorHookResult{ + Permission: new("deny"), + UserMessage: new("Speakeasy hooks: unauthorized — check your Gram API key and project slug."), + AdditionalContext: nil, + AgentMessage: nil, + }, nil } orgID := authCtx.ActiveOrganizationID diff --git a/server/internal/hooks/cursor_test.go b/server/internal/hooks/cursor_test.go index 4d4938fef9..d3d45223c3 100644 --- a/server/internal/hooks/cursor_test.go +++ b/server/internal/hooks/cursor_test.go @@ -87,12 +87,19 @@ func TestCursor_RequiresAuth(t *testing.T) { t.Parallel() _, ti := newTestHooksService(t) - // Use a bare context without auth + // Use a bare context without auth. The handler returns a shaped JSON + // deny (permission=deny + user_message) instead of an error so the + // Cursor CLI surfaces the reason to the user. ctx := t.Context() - _, err := ti.service.Cursor(ctx, &hooks.CursorPayload{ + result, err := ti.service.Cursor(ctx, &hooks.CursorPayload{ HookEventName: "preToolUse", }) - require.Error(t, err) + require.NoError(t, err) + require.NotNil(t, result) + require.NotNil(t, result.Permission) + assert.Equal(t, "deny", *result.Permission) + require.NotNil(t, result.UserMessage) + assert.Contains(t, *result.UserMessage, "unauthorized") } func TestBuildCursorTelemetryAttributes_BasicFields(t *testing.T) { diff --git a/server/internal/hooks/session_capture.go b/server/internal/hooks/session_capture.go index 92d3300726..4ab32cd8be 100644 --- a/server/internal/hooks/session_capture.go +++ b/server/internal/hooks/session_capture.go @@ -16,7 +16,6 @@ import ( chatRepo "github.com/speakeasy-api/gram/server/internal/chat/repo" "github.com/speakeasy-api/gram/server/internal/conv" "github.com/speakeasy-api/gram/server/internal/hooks/repo" - "github.com/speakeasy-api/gram/server/internal/oops" "github.com/speakeasy-api/gram/server/internal/productfeatures" ) @@ -50,6 +49,30 @@ func isConversationEvent(eventName string) bool { } } +// defaultChatTitleForSession picks the default chat title based on the +// session's agent variant stamped by SessionStart. If the variant is +// unknown (no SessionStart cached yet, or stamped with an unrecognized +// value) we fall back to the ambiguous "Claude Session" title rather than +// assuming claude-code — the title generator will replace it with a real +// one once enough conversation is on file. +func (s *Service) defaultChatTitleForSession(ctx context.Context, sessionID string) string { + if sessionID == "" { + return activities.DefaultClaudeAmbiguous + } + var variant string + if err := s.cache.Get(ctx, sessionAgentVariantCacheKey(sessionID), &variant); err != nil { + return activities.DefaultClaudeAmbiguous + } + switch variant { + case agentVariantCowork: + return activities.DefaultCoworkChatTitle + case agentVariantClaudeCode: + return activities.DefaultClaudeChatTitle + default: + return activities.DefaultClaudeAmbiguous + } +} + // sessionIDToUUID converts a Claude Code session_id string to a UUID. // The session_id is expected to already be a valid UUID string. // If parsing fails, falls back to generating a deterministic UUIDv5 from the session_id. @@ -88,8 +111,11 @@ func makeHookResult(hookEventName string) *gen.ClaudeHookResult { } // handleUserPromptSubmit captures the user's prompt text as a chat message. -// When a blocking risk policy matches, it denies the prompt with HTTP 403. -// The send_hook.sh script converts 4xx responses to exit code 2 (block). +// When a blocking risk policy matches, it returns a hook result with +// continue=false and stopReason set; Claude Code reads those fields from the +// JSON body and surfaces stopReason to the user. Returning 200 with a shaped +// body (instead of 4xx) is what makes the block reason actually visible — +// stderr-only blocks via exit code 2 don't render stopReason at all. func (s *Service) handleUserPromptSubmit(ctx context.Context, payload *gen.ClaudePayload) (*gen.ClaudeHookResult, error) { if s.riskScanner != nil && payload.Prompt != nil && payload.SessionID != nil { if scanResult := s.scanClaudeForEnforcement(ctx, payload); scanResult != nil { @@ -100,7 +126,11 @@ func (s *Service) handleUserPromptSubmit(ctx context.Context, payload *gen.Claud if metadata, err := s.getSessionMetadata(ctx, *payload.SessionID); err == nil { s.writeClaudeBlockToClickHouse(ctx, payload, &metadata, auditReason) } - return nil, oops.E(oops.CodeForbidden, nil, "%s", userReason) + result := makeHookResult(payload.HookEventName) + cont := false + result.Continue = &cont + result.StopReason = &userReason + return result, nil } } return makeHookResult(payload.HookEventName), nil @@ -231,7 +261,7 @@ func (s *Service) persistConversationEvent(ctx context.Context, payload *gen.Cla Generation: 0, } - if err := s.insertMessageWithFallbackUpsert(ctx, metadata, chatID, projectID, msgParams, activities.DefaultClaudeChatTitle); err != nil { + if err := s.insertMessageWithFallbackUpsert(ctx, metadata, chatID, projectID, msgParams, s.defaultChatTitleForSession(ctx, conv.PtrValOr(payload.SessionID, ""))); err != nil { return err } @@ -300,7 +330,7 @@ func (s *Service) writeToolCallRequestToPG(ctx context.Context, payload *gen.Cla Generation: 0, } - return s.insertMessageWithFallbackUpsert(ctx, metadata, chatID, projectID, msgParams, activities.DefaultClaudeChatTitle) + return s.insertMessageWithFallbackUpsert(ctx, metadata, chatID, projectID, msgParams, s.defaultChatTitleForSession(ctx, conv.PtrValOr(payload.SessionID, ""))) } // writeToolCallResultToPG writes a tool result message to PostgreSQL. @@ -354,7 +384,7 @@ func (s *Service) writeToolCallResultToPG(ctx context.Context, payload *gen.Clau // If this was an error, we could optionally set tool_outcome based on isError _ = isError - return s.insertMessageWithFallbackUpsert(ctx, metadata, chatID, projectID, msgParams, activities.DefaultClaudeChatTitle) + return s.insertMessageWithFallbackUpsert(ctx, metadata, chatID, projectID, msgParams, s.defaultChatTitleForSession(ctx, conv.PtrValOr(payload.SessionID, ""))) } // marshalToJSON converts any value to a JSON string. From d163b74e355b2038c1645b72264a80a712d31164 Mon Sep 17 00:00:00 2001 From: Chase Date: Tue, 19 May 2026 15:03:53 -0700 Subject: [PATCH 2/4] chore: improve cowork behavior --- .speakeasy/out.openapi.yaml | 6 ++ client/sdk/.speakeasy/gen.lock | 6 +- .../src/models/components/claudehookresult.ts | 10 +++ server/design/hooks/design.go | 5 ++ server/gen/hooks/service.go | 6 ++ server/gen/http/hooks/client/types.go | 8 +++ server/gen/http/hooks/server/types.go | 8 +++ server/gen/http/openapi3.json | 2 +- server/gen/http/openapi3.yaml | 6 ++ server/internal/hooks/claude_hooks.go | 66 ++++++++----------- server/internal/hooks/session_capture.go | 48 +++++++++++--- 11 files changed, 118 insertions(+), 53 deletions(-) diff --git a/.speakeasy/out.openapi.yaml b/.speakeasy/out.openapi.yaml index 0e1b90908d..fdd232d969 100644 --- a/.speakeasy/out.openapi.yaml +++ b/.speakeasy/out.openapi.yaml @@ -27715,8 +27715,14 @@ components: 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) diff --git a/client/sdk/.speakeasy/gen.lock b/client/sdk/.speakeasy/gen.lock index e82d81080f..122058c28e 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: b61eda2f93c8dec88417e844cab111b7 + docChecksum: 11ed131b1863de49e0dbd372487ea809 docVersion: 0.0.1 speakeasyVersion: 1.761.5 generationVersion: 2.879.13 @@ -157,7 +157,7 @@ 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 docs/models/components/cloneenvironmentrequestbody.md: @@ -3655,7 +3655,7 @@ 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 src/models/components/cloneenvironmentrequestbody.ts: diff --git a/client/sdk/src/models/components/claudehookresult.ts b/client/sdk/src/models/components/claudehookresult.ts index 67bf0189a6..0f940774b6 100644 --- a/client/sdk/src/models/components/claudehookresult.ts +++ b/client/sdk/src/models/components/claudehookresult.ts @@ -15,10 +15,18 @@ export type ClaudeHookResult = { * Whether to continue (SessionStart only) */ continue?: boolean | undefined; + /** + * Top-level block decision for UserPromptSubmit / PostToolUse / Stop / SubagentStop. Use 'block' to halt processing. + */ + decision?: string | undefined; /** * Hook-specific output as JSON object */ hookSpecificOutput?: any | undefined; + /** + * Reason accompanying decision; shown to the user (UserPromptSubmit) or Claude (PostToolUse/Stop). + */ + reason?: string | undefined; /** * Reason if blocked (SessionStart only) */ @@ -39,7 +47,9 @@ export const ClaudeHookResult$inboundSchema: z.ZodMiniType< unknown > = z.object({ continue: z.optional(z.boolean()), + decision: z.optional(z.string()), hookSpecificOutput: z.optional(z.any()), + reason: z.optional(z.string()), stopReason: z.optional(z.string()), suppressOutput: z.optional(z.boolean()), systemMessage: z.optional(z.string()), diff --git a/server/design/hooks/design.go b/server/design/hooks/design.go index e2684ee365..cf4482ff55 100644 --- a/server/design/hooks/design.go +++ b/server/design/hooks/design.go @@ -50,6 +50,11 @@ var ClaudeHookResult = Type("ClaudeHookResult", func() { Attribute("suppressOutput", Boolean, "Whether to suppress the hook's output") Attribute("systemMessage", String, "Warning message shown to the user in the terminal") Attribute("hookSpecificOutput", Any, "Hook-specific output as JSON object") + // UserPromptSubmit, PostToolUse, Stop, and SubagentStop use a top-level + // `decision` field to block: "block" tells Claude to halt processing. + // PreToolUse uses hookSpecificOutput.permissionDecision instead. + Attribute("decision", String, "Top-level block decision for UserPromptSubmit / PostToolUse / Stop / SubagentStop. Use 'block' to halt processing.") + Attribute("reason", String, "Reason accompanying decision; shown to the user (UserPromptSubmit) or Claude (PostToolUse/Stop).") }) // Cursor hook payload diff --git a/server/gen/hooks/service.go b/server/gen/hooks/service.go index d0cb1a26d4..6273b04105 100644 --- a/server/gen/hooks/service.go +++ b/server/gen/hooks/service.go @@ -68,6 +68,12 @@ type ClaudeHookResult struct { SystemMessage *string // Hook-specific output as JSON object HookSpecificOutput any + // Top-level block decision for UserPromptSubmit / PostToolUse / Stop / + // SubagentStop. Use 'block' to halt processing. + Decision *string + // Reason accompanying decision; shown to the user (UserPromptSubmit) or Claude + // (PostToolUse/Stop). + Reason *string } // ClaudePayload is the payload type of the hooks service claude method. diff --git a/server/gen/http/hooks/client/types.go b/server/gen/http/hooks/client/types.go index 0f431b9b0a..314b4bbcc3 100644 --- a/server/gen/http/hooks/client/types.go +++ b/server/gen/http/hooks/client/types.go @@ -179,6 +179,12 @@ type ClaudeResponseBody struct { SystemMessage *string `form:"systemMessage,omitempty" json:"systemMessage,omitempty" xml:"systemMessage,omitempty"` // Hook-specific output as JSON object HookSpecificOutput any `form:"hookSpecificOutput,omitempty" json:"hookSpecificOutput,omitempty" xml:"hookSpecificOutput,omitempty"` + // Top-level block decision for UserPromptSubmit / PostToolUse / Stop / + // SubagentStop. Use 'block' to halt processing. + Decision *string `form:"decision,omitempty" json:"decision,omitempty" xml:"decision,omitempty"` + // Reason accompanying decision; shown to the user (UserPromptSubmit) or Claude + // (PostToolUse/Stop). + Reason *string `form:"reason,omitempty" json:"reason,omitempty" xml:"reason,omitempty"` } // CursorResponseBody is the type of the "hooks" service "cursor" endpoint HTTP @@ -1392,6 +1398,8 @@ func NewClaudeHookResultOK(body *ClaudeResponseBody) *hooks.ClaudeHookResult { SuppressOutput: body.SuppressOutput, SystemMessage: body.SystemMessage, HookSpecificOutput: body.HookSpecificOutput, + Decision: body.Decision, + Reason: body.Reason, } return v diff --git a/server/gen/http/hooks/server/types.go b/server/gen/http/hooks/server/types.go index d4397f53ee..874520c2b7 100644 --- a/server/gen/http/hooks/server/types.go +++ b/server/gen/http/hooks/server/types.go @@ -179,6 +179,12 @@ type ClaudeResponseBody struct { SystemMessage *string `form:"systemMessage,omitempty" json:"systemMessage,omitempty" xml:"systemMessage,omitempty"` // Hook-specific output as JSON object HookSpecificOutput any `form:"hookSpecificOutput,omitempty" json:"hookSpecificOutput,omitempty" xml:"hookSpecificOutput,omitempty"` + // Top-level block decision for UserPromptSubmit / PostToolUse / Stop / + // SubagentStop. Use 'block' to halt processing. + Decision *string `form:"decision,omitempty" json:"decision,omitempty" xml:"decision,omitempty"` + // Reason accompanying decision; shown to the user (UserPromptSubmit) or Claude + // (PostToolUse/Stop). + Reason *string `form:"reason,omitempty" json:"reason,omitempty" xml:"reason,omitempty"` } // CursorResponseBody is the type of the "hooks" service "cursor" endpoint HTTP @@ -1261,6 +1267,8 @@ func NewClaudeResponseBody(res *hooks.ClaudeHookResult) *ClaudeResponseBody { SuppressOutput: res.SuppressOutput, SystemMessage: res.SystemMessage, HookSpecificOutput: res.HookSpecificOutput, + Decision: res.Decision, + Reason: res.Reason, } return body } diff --git a/server/gen/http/openapi3.json b/server/gen/http/openapi3.json index 88c2206e7b..5ac77e8406 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/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"]},"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"]},"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.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/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":{"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"]},"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"]},"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 diff --git a/server/gen/http/openapi3.yaml b/server/gen/http/openapi3.yaml index 2024945b0c..77318eeeb7 100644 --- a/server/gen/http/openapi3.yaml +++ b/server/gen/http/openapi3.yaml @@ -27509,8 +27509,14 @@ components: 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) diff --git a/server/internal/hooks/claude_hooks.go b/server/internal/hooks/claude_hooks.go index f3b22a0295..3819c9ee06 100644 --- a/server/internal/hooks/claude_hooks.go +++ b/server/internal/hooks/claude_hooks.go @@ -376,27 +376,42 @@ func (s *Service) Claude(ctx context.Context, payload *gen.ClaudePayload) (*gen. s.recordHook(ctx, payload) // Route to appropriate handler based on hook type + var ( + result *gen.ClaudeHookResult + err error + ) switch payload.HookEventName { case "SessionStart": - return s.handleSessionStart(ctx, payload) + result, err = s.handleSessionStart(ctx, payload) case "PreToolUse": - return s.handlePreToolUse(ctx, payload) + result, err = s.handlePreToolUse(ctx, payload) case "PostToolUse": - return s.handlePostToolUse(ctx, payload) + result, err = s.handlePostToolUse(ctx, payload) case "PostToolUseFailure": - return s.handlePostToolUseFailure(ctx, payload) + result, err = s.handlePostToolUseFailure(ctx, payload) case "UserPromptSubmit": - return s.handleUserPromptSubmit(ctx, payload) + result, err = s.handleUserPromptSubmit(ctx, payload) case "Stop": - return s.handleStop(ctx, payload) + result, err = s.handleStop(ctx, payload) case "SessionEnd": - return s.handleSessionEnd(ctx, payload) + result, err = s.handleSessionEnd(ctx, payload) case "Notification": - return s.handleNotification(ctx, payload) + result, err = s.handleNotification(ctx, payload) default: logger.ErrorContext(ctx, fmt.Sprintf("Unknown hook event: %s", payload.HookEventName)) - return makeHookResult(payload.HookEventName), nil + result = makeHookResult(payload.HookEventName) + } + + // Debug: log the JSON body we're about to send so we can confirm the + // shape (continue / stopReason / hookSpecificOutput) the agent will see. + if body, jerr := json.Marshal(result); jerr == nil { + logger.InfoContext(ctx, "claude hook response body", + attr.SlogEvent("claude_hook_response_body"), + slog.String("response_body", string(body)), + ) } + + return result, err } func (s *Service) handleSessionStart(ctx context.Context, payload *gen.ClaudePayload) (*gen.ClaudeHookResult, error) { @@ -588,33 +603,19 @@ func (s *Service) getSessionMetadata(ctx context.Context, sessionID string) (Ses func (s *Service) handlePreToolUse(ctx context.Context, payload *gen.ClaudePayload) (*gen.ClaudeHookResult, error) { if s.riskScanner != nil && payload.SessionID != nil { if scanResult := s.scanClaudeForEnforcement(ctx, payload); scanResult != nil { - result := makeHookResult(payload.HookEventName) - output, _ := result.HookSpecificOutput.(*HookSpecificOutput) - deny := "deny" auditReason := fmt.Sprintf("Speakeasy blocked this tool call: matched policy %q (%s)", scanResult.PolicyName, scanResult.Description) userReason := renderUserBlockReason(scanResult.UserMessage, auditReason) - // systemMessage renders as a warning in the user's terminal; - // permissionDecisionReason is what Claude itself sees and may quote - // back to the user. Send the same self-branded message in both so - // the user sees feedback regardless of how Claude chooses to render - // the deny — matches the shadow-MCP guard deny path below. - result.SystemMessage = &userReason - if output != nil { - output.PermissionDecision = &deny - output.PermissionDecisionReason = &userReason - } // Surface the block reason on the trace summary so the dashboard // shows why the call was denied. Always store the technical reason // — the user_message override is for the agent-facing response only. if metadata, err := s.getSessionMetadata(ctx, *payload.SessionID); err == nil { s.writeClaudeBlockToClickHouse(ctx, payload, &metadata, auditReason) } - return result, nil + return constructBlockResponse(payload.HookEventName, userReason), nil } } allow := "allow" - deny := "deny" result := makeHookResult(payload.HookEventName) output, _ := result.HookSpecificOutput.(*HookSpecificOutput) @@ -720,12 +721,7 @@ func (s *Service) handlePreToolUse(ctx context.Context, payload *gen.ClaudePaylo attr.SlogRiskPolicyName(policy.Name), ) s.writeClaudeBlockToClickHouse(ctx, payload, &metadata, auditReason) - result.SystemMessage = &userReason - if output != nil { - output.PermissionDecision = &deny - output.PermissionDecisionReason = &userReason - } - return result, nil + return constructBlockResponse(payload.HookEventName, userReason), nil } matched := matchCachedMCPEntry(entries, serverPrefix) @@ -818,15 +814,7 @@ func (s *Service) handlePreToolUse(ctx context.Context, payload *gen.ClaudePaylo // policy" actions against the URL itself. s.recordShadowMCPBlockFinding(ctx, payload, &metadata, policy, matched, serverPrefix, detail) - // systemMessage renders as a warning in the user's terminal; - // permissionDecisionReason is what Claude itself sees and may quote - // back to the user, so we send the same self-branded message in both. - result.SystemMessage = &userReason - if output != nil { - output.PermissionDecision = &deny - output.PermissionDecisionReason = &userReason - } - return result, nil + return constructBlockResponse(payload.HookEventName, userReason), nil } if output != nil { diff --git a/server/internal/hooks/session_capture.go b/server/internal/hooks/session_capture.go index 4ab32cd8be..b9c2587906 100644 --- a/server/internal/hooks/session_capture.go +++ b/server/internal/hooks/session_capture.go @@ -98,6 +98,8 @@ func makeHookResult(hookEventName string) *gen.ClaudeHookResult { StopReason: nil, SuppressOutput: nil, SystemMessage: nil, + Decision: nil, + Reason: nil, } if hookEventName == "PreToolUse" { result.HookSpecificOutput = &HookSpecificOutput{ @@ -110,12 +112,42 @@ func makeHookResult(hookEventName string) *gen.ClaudeHookResult { return result } +// constructBlockResponse builds a hook result that blocks the current event +// using the JSON shape Claude Code expects for the given hook. Per +// https://code.claude.com/docs/en/hooks#decision-control: +// +// - UserPromptSubmit / PostToolUse / Stop / SubagentStop: top-level +// `decision: "block"` + free-text `reason`. The reason is surfaced to +// the user (UserPromptSubmit) or to Claude (PostToolUse / Stop). +// - PreToolUse: nested `hookSpecificOutput.permissionDecision: "deny"` +// + `permissionDecisionReason`. Top-level `decision` is rejected. +// +// Other events (SessionStart, SessionEnd, Notification, PostToolUseFailure) +// cannot block at all and must not be passed in. +func constructBlockResponse(hookEventName, reason string) *gen.ClaudeHookResult { + result := makeHookResult(hookEventName) + if hookEventName == "PreToolUse" { + deny := "deny" + if output, ok := result.HookSpecificOutput.(*HookSpecificOutput); ok { + output.PermissionDecision = &deny + output.PermissionDecisionReason = &reason + } + return result + } + block := "block" + result.Decision = &block + result.Reason = &reason + return result +} + // handleUserPromptSubmit captures the user's prompt text as a chat message. -// When a blocking risk policy matches, it returns a hook result with -// continue=false and stopReason set; Claude Code reads those fields from the -// JSON body and surfaces stopReason to the user. Returning 200 with a shaped -// body (instead of 4xx) is what makes the block reason actually visible — -// stderr-only blocks via exit code 2 don't render stopReason at all. +// When a blocking risk policy matches, it returns 200 with a top-level +// `decision: "block"` + `reason`, the shape Claude Code documents for +// UserPromptSubmit. Claude Code erases the prompt from context and surfaces +// the reason to the user. Returning 200 with a shaped body (instead of 4xx +// or exit-code-2) is what makes the block reason render — stderr-only +// blocks don't carry the reason field at all. +// https://code.claude.com/docs/en/hooks#decision-control func (s *Service) handleUserPromptSubmit(ctx context.Context, payload *gen.ClaudePayload) (*gen.ClaudeHookResult, error) { if s.riskScanner != nil && payload.Prompt != nil && payload.SessionID != nil { if scanResult := s.scanClaudeForEnforcement(ctx, payload); scanResult != nil { @@ -126,11 +158,7 @@ func (s *Service) handleUserPromptSubmit(ctx context.Context, payload *gen.Claud if metadata, err := s.getSessionMetadata(ctx, *payload.SessionID); err == nil { s.writeClaudeBlockToClickHouse(ctx, payload, &metadata, auditReason) } - result := makeHookResult(payload.HookEventName) - cont := false - result.Continue = &cont - result.StopReason = &userReason - return result, nil + return constructBlockResponse(payload.HookEventName, userReason), nil } } return makeHookResult(payload.HookEventName), nil From b97d8a8306a38a539e002969d5201477382ccc94 Mon Sep 17 00:00:00 2001 From: Chase Date: Tue, 19 May 2026 15:06:38 -0700 Subject: [PATCH 3/4] remove debug --- server/internal/hooks/claude_hooks.go | 9 --------- 1 file changed, 9 deletions(-) diff --git a/server/internal/hooks/claude_hooks.go b/server/internal/hooks/claude_hooks.go index 3819c9ee06..96866ab337 100644 --- a/server/internal/hooks/claude_hooks.go +++ b/server/internal/hooks/claude_hooks.go @@ -402,15 +402,6 @@ func (s *Service) Claude(ctx context.Context, payload *gen.ClaudePayload) (*gen. result = makeHookResult(payload.HookEventName) } - // Debug: log the JSON body we're about to send so we can confirm the - // shape (continue / stopReason / hookSpecificOutput) the agent will see. - if body, jerr := json.Marshal(result); jerr == nil { - logger.InfoContext(ctx, "claude hook response body", - attr.SlogEvent("claude_hook_response_body"), - slog.String("response_body", string(body)), - ) - } - return result, err } From 58a03d2c10aa3187a51418ad24e4697da55b65db Mon Sep 17 00:00:00 2001 From: Chase Date: Tue, 19 May 2026 15:53:51 -0700 Subject: [PATCH 4/4] add back in systemMessage --- server/internal/hooks/session_capture.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/server/internal/hooks/session_capture.go b/server/internal/hooks/session_capture.go index b9c2587906..7188218aa2 100644 --- a/server/internal/hooks/session_capture.go +++ b/server/internal/hooks/session_capture.go @@ -132,6 +132,11 @@ func constructBlockResponse(hookEventName, reason string) *gen.ClaudeHookResult output.PermissionDecision = &deny output.PermissionDecisionReason = &reason } + // systemMessage renders as a warning in the user's terminal; + // permissionDecisionReason is what Claude itself sees and may quote + // back. Set both so the user gets visible feedback regardless of how + // the client renders the deny. + result.SystemMessage = &reason return result } block := "block"