{ "openapi": "3.0.3", "info": { "version": "1.633.1", "title": "Windmill API", "contact": { "name": "Windmill Team", "email": "contact@windmill.dev", "url": "https://windmill.dev" }, "license": { "name": "Apache 2.0", "url": "https://www.apache.org/licenses/LICENSE-2.0.html" }, "x-logo": { "url": "https://windmill.dev/img/windmill.svg" } }, "externalDocs": { "description": "documentation portal", "url": "https://windmill.dev" }, "servers": [ { "url": "/api" } ], "security": [ { "bearerAuth": [] }, { "cookieAuth": [] } ], "paths": { "/version": { "get": { "summary": "get backend version", "operationId": "backendVersion", "tags": [ "settings" ], "responses": { "200": { "description": "git version of backend", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/health/status": { "get": { "summary": "health status", "description": "Health status endpoint. Returns cached health status (database connectivity, worker count).\nCache TTL is fixed at 5 seconds. Use force=true query parameter to bypass cache.\nNote: This endpoint is intentionally different from Kubernetes probes to avoid confusion.\nFor k8s liveness/readiness probes, use /version endpoint.\n", "operationId": "getHealthStatus", "tags": [ "health" ], "security": [], "parameters": [ { "name": "force", "in": "query", "description": "Force a fresh check, bypassing the cache", "required": false, "schema": { "type": "boolean", "default": false } } ], "responses": { "200": { "description": "server is healthy or degraded", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HealthStatusResponse" } } } }, "503": { "description": "server is unhealthy (database unreachable)", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HealthStatusResponse" } } } } } } }, "/health/detailed": { "get": { "summary": "detailed health status", "description": "Returns detailed health information including database pool stats, worker details, and queue status.\nRequires authentication. Use for monitoring dashboards and debugging.\nThis endpoint always returns fresh data (no caching).\n", "operationId": "getHealthDetailed", "tags": [ "health" ], "responses": { "200": { "description": "server is healthy or degraded", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DetailedHealthResponse" } } } }, "503": { "description": "server is unhealthy (database unreachable)", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DetailedHealthResponse" } } } } } } }, "/uptodate": { "get": { "summary": "is backend up to date", "operationId": "backendUptodate", "tags": [ "settings" ], "responses": { "200": { "description": "is backend up to date", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/ee_license": { "get": { "summary": "get license id", "operationId": "getLicenseId", "tags": [ "settings" ], "responses": { "200": { "description": "get license id (empty if not ee)", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/inkeep": { "post": { "summary": "query Windmill AI documentation assistant (EE only)", "operationId": "queryDocumentation", "x-mcp-tool": true, "tags": [ "documentation" ], "requestBody": { "description": "query to send to the AI documentation assistant", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "query": { "type": "string", "description": "The documentation query to send to the AI assistant" } }, "required": [ "query" ] } } } }, "responses": { "200": { "description": "AI documentation assistant response", "content": { "application/json": { "schema": { "type": "object", "description": "Response from Inkeep service" } } } }, "403": { "description": "Enterprise Edition required", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/openapi.yaml": { "get": { "summary": "get openapi yaml spec", "operationId": "getOpenApiYaml", "tags": [ "settings" ], "responses": { "200": { "description": "openapi yaml file content", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/audit/get/{id}": { "get": { "summary": "get audit log (requires admin privilege)", "operationId": "getAuditLog", "tags": [ "audit" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/PathId" } ], "responses": { "200": { "description": "an audit log", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AuditLog" } } } } } } }, "/w/{workspace}/audit/list": { "get": { "summary": "list audit logs (requires admin privilege)", "operationId": "listAuditLogs", "tags": [ "audit" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Page" }, { "$ref": "#/components/parameters/PerPage" }, { "$ref": "#/components/parameters/Before" }, { "$ref": "#/components/parameters/After" }, { "$ref": "#/components/parameters/Username" }, { "$ref": "#/components/parameters/Operation" }, { "name": "operations", "in": "query", "description": "comma separated list of exact operations to include", "schema": { "type": "string" } }, { "name": "exclude_operations", "in": "query", "description": "comma separated list of operations to exclude", "schema": { "type": "string" } }, { "$ref": "#/components/parameters/ResourceName" }, { "$ref": "#/components/parameters/ActionKind" }, { "name": "all_workspaces", "in": "query", "description": "get audit logs for all workspaces", "schema": { "type": "boolean" } } ], "responses": { "200": { "description": "a list of audit logs", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/AuditLog" } } } } } } } }, "/auth/login": { "post": { "security": [], "summary": "login with password", "operationId": "login", "tags": [ "user" ], "requestBody": { "description": "credentials", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Login" } } } }, "responses": { "200": { "description": "Successfully authenticated. The session ID is returned in a cookie named `token` and as plaintext response. Preferred method of authorization is through the bearer token. The cookie is only for browser convenience.\n", "headers": { "Set-Cookie": { "schema": { "type": "string", "example": "token=abcde12345; Path=/; HttpOnly" } } }, "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/auth/logout": { "post": { "security": [], "summary": "logout", "operationId": "logout", "tags": [ "user" ], "responses": { "200": { "description": "clear cookies and clear token (if applicable)", "headers": { "Set-Cookie": { "schema": { "type": "string" } } }, "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/auth/is_smtp_configured": { "get": { "security": [], "summary": "check if SMTP is configured for password reset", "operationId": "isSmtpConfigured", "tags": [ "user" ], "responses": { "200": { "description": "returns true if SMTP is configured", "content": { "application/json": { "schema": { "type": "boolean" } } } } } } }, "/auth/request_password_reset": { "post": { "security": [], "summary": "request password reset email", "operationId": "requestPasswordReset", "tags": [ "user" ], "requestBody": { "description": "email to send password reset link to", "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "email" ], "properties": { "email": { "type": "string", "format": "email" } } } } } }, "responses": { "200": { "description": "password reset email sent (if user exists)", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PasswordResetResponse" } } } }, "400": { "description": "SMTP not configured" } } } }, "/auth/reset_password": { "post": { "security": [], "summary": "reset password using token", "operationId": "resetPassword", "tags": [ "user" ], "requestBody": { "description": "token and new password", "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "token", "new_password" ], "properties": { "token": { "type": "string" }, "new_password": { "type": "string" } } } } } }, "responses": { "200": { "description": "password reset successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PasswordResetResponse" } } } }, "400": { "description": "invalid or expired token" } } } }, "/w/{workspace}/users/get/{username}": { "get": { "summary": "get user (require admin privilege)", "operationId": "getUser", "tags": [ "user", "admin" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "name": "username", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "user created", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/User" } } } } } } }, "/w/{workspace}/users/update/{username}": { "post": { "summary": "update user (require admin privilege)", "operationId": "updateUser", "tags": [ "user", "admin" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "name": "username", "in": "path", "required": true, "schema": { "type": "string" } } ], "requestBody": { "description": "new user", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EditWorkspaceUser" } } } }, "responses": { "200": { "description": "edited user", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/users/is_owner/{path}": { "get": { "summary": "is owner of path", "operationId": "isOwnerOfPath", "tags": [ "user" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" } ], "responses": { "200": { "description": "is owner", "content": { "application/json": { "schema": { "type": "boolean" } } } } } } }, "/users/setpassword": { "post": { "summary": "set password", "operationId": "setPassword", "tags": [ "user" ], "requestBody": { "description": "set password", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "password": { "type": "string" } }, "required": [ "password" ] } } } }, "responses": { "200": { "description": "password set", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/users/set_password_of/{user}": { "post": { "summary": "set password for a specific user (require super admin)", "operationId": "setPasswordForUser", "tags": [ "user" ], "parameters": [ { "name": "user", "in": "path", "required": true, "schema": { "type": "string" } } ], "requestBody": { "description": "set password", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "password": { "type": "string" } }, "required": [ "password" ] } } } }, "responses": { "200": { "description": "password set", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/users/set_login_type/{user}": { "post": { "summary": "set login type for a specific user (require super admin)", "operationId": "setLoginTypeForUser", "tags": [ "user" ], "parameters": [ { "name": "user", "in": "path", "required": true, "schema": { "type": "string" } } ], "requestBody": { "description": "set login type", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "login_type": { "type": "string" } }, "required": [ "login_type" ] } } } }, "responses": { "200": { "description": "login type set", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/users/create": { "post": { "summary": "create user", "operationId": "createUserGlobally", "tags": [ "user" ], "requestBody": { "description": "user info", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "email": { "type": "string" }, "password": { "type": "string" }, "super_admin": { "type": "boolean" }, "name": { "type": "string" }, "company": { "type": "string" }, "skip_email": { "type": "boolean", "description": "Skip sending email notifications to the user" } }, "required": [ "email", "password", "super_admin" ] } } } }, "responses": { "201": { "description": "user created", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/users/update/{email}": { "post": { "summary": "global update user (require super admin)", "operationId": "globalUserUpdate", "tags": [ "user" ], "parameters": [ { "name": "email", "in": "path", "required": true, "schema": { "type": "string" } } ], "requestBody": { "description": "new user info", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "is_super_admin": { "type": "boolean" }, "is_devops": { "type": "boolean" }, "name": { "type": "string" } } } } } }, "responses": { "200": { "description": "user updated", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/users/username_info/{email}": { "get": { "summary": "global username info (require super admin)", "operationId": "globalUsernameInfo", "tags": [ "user" ], "parameters": [ { "name": "email", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "user renamed", "content": { "application/json": { "schema": { "type": "object", "properties": { "username": { "type": "string" }, "workspace_usernames": { "type": "array", "items": { "type": "object", "properties": { "workspace_id": { "type": "string" }, "username": { "type": "string" } }, "required": [ "workspace_id", "username" ] } } }, "required": [ "username", "workspace_usernames" ] } } } } } } }, "/users/rename/{email}": { "post": { "summary": "global rename user (require super admin)", "operationId": "globalUserRename", "tags": [ "user" ], "parameters": [ { "name": "email", "in": "path", "required": true, "schema": { "type": "string" } } ], "requestBody": { "description": "new username", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "new_username": { "type": "string" } }, "required": [ "new_username" ] } } } }, "responses": { "200": { "description": "user renamed", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/users/delete/{email}": { "delete": { "summary": "global delete user (require super admin)", "operationId": "globalUserDelete", "tags": [ "user" ], "parameters": [ { "name": "email", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "user deleted", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/users/overwrite": { "post": { "summary": "global overwrite users (require super admin and EE)", "operationId": "globalUsersOverwrite", "tags": [ "user" ], "requestBody": { "description": "List of users", "required": true, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ExportedUser" } } } } }, "responses": { "200": { "description": "Success message", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/users/export": { "get": { "summary": "global export users (require super admin and EE)", "operationId": "globalUsersExport", "tags": [ "user" ], "responses": { "200": { "description": "exported users", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ExportedUser" } } } } } } } }, "/users/onboarding": { "post": { "summary": "Submit user onboarding data", "operationId": "submitOnboardingData", "tags": [ "user" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "touch_point": { "type": "string" }, "use_case": { "type": "string" } } } } } }, "responses": { "200": { "description": "Onboarding data submitted successfully", "content": { "application/json": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/users/delete/{username}": { "delete": { "summary": "delete user (require admin privilege)", "operationId": "deleteUser", "tags": [ "user", "admin" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "name": "username", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "delete user", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/users/convert_to_group/{username}": { "post": { "summary": "convert manual user to group user (require admin privilege)", "operationId": "convertUserToGroup", "tags": [ "user", "admin" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "name": "username", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "convert user to group user", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/github_app/connected_repositories": { "get": { "summary": "get connected repositories", "operationId": "getGlobalConnectedRepositories", "tags": [ "Git Sync" ], "parameters": [ { "name": "page", "in": "query", "description": "Page number for pagination (default 1)", "required": false, "schema": { "type": "integer", "default": 1 } } ], "responses": { "200": { "description": "connected repositories", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GithubInstallations" } } } } } } }, "/workspaces/list": { "get": { "summary": "list all workspaces visible to me", "operationId": "listWorkspaces", "tags": [ "workspace" ], "responses": { "200": { "description": "all workspaces", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Workspace" } } } } } } } }, "/workspaces/allowed_domain_auto_invite": { "get": { "summary": "is domain allowed for auto invi", "operationId": "isDomainAllowed", "tags": [ "workspace" ], "responses": { "200": { "description": "domain allowed or not", "content": { "application/json": { "schema": { "type": "boolean" } } } } } } }, "/workspaces/users": { "get": { "summary": "list all workspaces visible to me with user info", "operationId": "listUserWorkspaces", "tags": [ "workspace" ], "responses": { "200": { "description": "workspace with associated username", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserWorkspaceList" } } } } } } }, "/w/{workspace}/workspaces/get_as_superadmin": { "get": { "summary": "get workspace as super admin (require to be super admin)", "operationId": "getWorkspaceAsSuperAdmin", "tags": [ "workspace" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "responses": { "200": { "description": "workspace", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Workspace" } } } } } } }, "/workspaces/list_as_superadmin": { "get": { "summary": "list all workspaces as super admin (require to be super admin)", "operationId": "listWorkspacesAsSuperAdmin", "tags": [ "workspace" ], "parameters": [ { "$ref": "#/components/parameters/Page" }, { "$ref": "#/components/parameters/PerPage" } ], "responses": { "200": { "description": "workspaces", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Workspace" } } } } } } } }, "/workspaces/create": { "post": { "summary": "create workspace", "operationId": "createWorkspace", "tags": [ "workspace" ], "requestBody": { "description": "new token", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateWorkspace" } } } }, "responses": { "201": { "description": "token created", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/workspaces/create_workspace_fork_branch": { "post": { "summary": "create forked workspace branch with git sync", "operationId": "createWorkspaceForkGitBranch", "tags": [ "workspace" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "new forked workspace", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateWorkspaceFork" } } } }, "responses": { "201": { "description": "forked workspace branch created", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "string", "format": "uuid" } } } } } } } }, "/w/{workspace}/workspaces/create_fork": { "post": { "summary": "create forked workspace", "operationId": "createWorkspaceFork", "tags": [ "workspace" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "new forked workspace", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateWorkspaceFork" } } } }, "responses": { "201": { "description": "forked workspace created", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/workspaces/exists": { "post": { "summary": "exists workspace", "operationId": "existsWorkspace", "tags": [ "workspace" ], "requestBody": { "description": "id of workspace", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string" } }, "required": [ "id" ] } } } }, "responses": { "200": { "description": "status", "content": { "text/plain": { "schema": { "type": "boolean" } } } } } } }, "/workspaces/exists_username": { "post": { "summary": "exists username", "operationId": "existsUsername", "tags": [ "workspace" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string" }, "username": { "type": "string" } }, "required": [ "id", "username" ] } } } }, "responses": { "200": { "description": "status", "content": { "text/plain": { "schema": { "type": "boolean" } } } } } } }, "/settings/refresh_custom_instance_user_pwd": { "post": { "summary": "Refreshes the password for the custom_instance_user", "operationId": "refreshCustomInstanceUserPwd", "tags": [ "setting" ], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "object" } } } } } } }, "/settings/list_custom_instance_pg_databases": { "post": { "summary": "Returns the set-up statuses of custom instance pg databases", "operationId": "listCustomInstanceDbs", "tags": [ "setting" ], "responses": { "200": { "description": "Statuses of all custom instance dbs", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": { "$ref": "#/components/schemas/CustomInstanceDb" } } } } } } } }, "/settings/setup_custom_instance_pg_database/{name}": { "post": { "summary": "Runs CREATE DATABASE on the Windmill Postgres and grants access to the custom_instance_user", "operationId": "setupCustomInstanceDb", "tags": [ "setting" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "tag": { "$ref": "#/components/schemas/CustomInstanceDbTag" } } } } } }, "parameters": [ { "in": "path", "name": "name", "required": true, "schema": { "type": "string" }, "description": "The name of the database to create" } ], "responses": { "200": { "description": "status", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CustomInstanceDb" } } } } } } }, "/settings/global/{key}": { "get": { "summary": "get global settings", "operationId": "getGlobal", "tags": [ "setting" ], "parameters": [ { "$ref": "#/components/parameters/Key" } ], "responses": { "200": { "description": "status", "content": { "application/json": { "schema": {} } } } } }, "post": { "summary": "post global settings", "operationId": "setGlobal", "tags": [ "setting" ], "parameters": [ { "$ref": "#/components/parameters/Key" } ], "requestBody": { "description": "value set", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "value": {} } } } } }, "responses": { "200": { "description": "status", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/settings/local": { "get": { "summary": "get local settings", "operationId": "getLocal", "tags": [ "setting" ], "responses": { "200": { "description": "status", "content": { "application/json": { "schema": {} } } } } } }, "/settings/test_smtp": { "post": { "summary": "test smtp", "operationId": "testSmtp", "tags": [ "setting" ], "requestBody": { "description": "test smtp payload", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "to": { "type": "string" }, "smtp": { "type": "object", "properties": { "host": { "type": "string" }, "username": { "type": "string" }, "password": { "type": "string" }, "port": { "type": "integer" }, "from": { "type": "string" }, "tls_implicit": { "type": "boolean" }, "disable_tls": { "type": "boolean" } }, "required": [ "host", "username", "password", "port", "from", "tls_implicit", "disable_tls" ] } }, "required": [ "to", "smtp" ] } } } }, "responses": { "200": { "description": "status", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/settings/test_critical_channels": { "post": { "summary": "test critical channels", "operationId": "testCriticalChannels", "tags": [ "setting" ], "requestBody": { "description": "test critical channel payload", "required": true, "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "email": { "type": "string" }, "slack_channel": { "type": "string" } } } } } } }, "responses": { "200": { "description": "status", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/settings/critical_alerts": { "get": { "summary": "Get all critical alerts", "operationId": "getCriticalAlerts", "tags": [ "setting" ], "parameters": [ { "in": "query", "name": "page", "schema": { "type": "integer", "default": 1, "description": "The page number to retrieve (minimum value is 1)" } }, { "in": "query", "name": "page_size", "schema": { "type": "integer", "default": 10, "maximum": 100, "description": "Number of alerts per page (maximum is 100)" } }, { "in": "query", "name": "acknowledged", "schema": { "type": "boolean", "nullable": true, "description": "Filter by acknowledgment status; true for acknowledged, false for unacknowledged, and omit for all alerts" } } ], "responses": { "200": { "description": "Successfully retrieved all critical alerts", "content": { "application/json": { "schema": { "type": "object", "properties": { "alerts": { "type": "array", "items": { "$ref": "#/components/schemas/CriticalAlert" } }, "total_rows": { "type": "integer", "description": "Total number of rows matching the query.", "example": 100 }, "total_pages": { "type": "integer", "description": "Total number of pages based on the page size.", "example": 10 } } } } } } } } }, "/settings/critical_alerts/{id}/acknowledge": { "post": { "summary": "Acknowledge a critical alert", "operationId": "acknowledgeCriticalAlert", "tags": [ "setting" ], "parameters": [ { "in": "path", "name": "id", "required": true, "schema": { "type": "integer" }, "description": "The ID of the critical alert to acknowledge" } ], "responses": { "200": { "description": "Successfully acknowledged the critical alert", "content": { "application/json": { "schema": { "type": "string", "example": "Critical alert acknowledged" } } } } } } }, "/settings/critical_alerts/acknowledge_all": { "post": { "summary": "Acknowledge all unacknowledged critical alerts", "operationId": "acknowledgeAllCriticalAlerts", "tags": [ "setting" ], "responses": { "200": { "description": "Successfully acknowledged all unacknowledged critical alerts.", "content": { "application/json": { "schema": { "type": "string", "example": "All unacknowledged critical alerts acknowledged" } } } } } } }, "/settings/test_license_key": { "post": { "summary": "test license key", "operationId": "testLicenseKey", "tags": [ "setting" ], "requestBody": { "description": "test license key", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "license_key": { "type": "string" } }, "required": [ "license_key" ] } } } }, "responses": { "200": { "description": "status", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/settings/test_object_storage_config": { "post": { "summary": "test object storage config", "operationId": "testObjectStorageConfig", "tags": [ "setting" ], "requestBody": { "description": "test object storage config", "required": true, "content": { "application/json": { "schema": { "type": "object", "additionalProperties": true } } } }, "responses": { "200": { "description": "status", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/settings/send_stats": { "post": { "summary": "send stats", "operationId": "sendStats", "tags": [ "setting" ], "responses": { "200": { "description": "status", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/settings/get_stats": { "get": { "summary": "get encrypted telemetry stats (EE only)", "operationId": "getStats", "tags": [ "setting" ], "responses": { "200": { "description": "base64-encoded encrypted telemetry blob", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/settings/latest_key_renewal_attempt": { "get": { "summary": "get latest key renewal attempt", "operationId": "getLatestKeyRenewalAttempt", "tags": [ "setting" ], "responses": { "200": { "description": "status", "content": { "application/json": { "schema": { "type": "object", "properties": { "result": { "type": "string" }, "attempted_at": { "type": "string", "format": "date-time" } }, "required": [ "result", "attempted_at" ], "nullable": true } } } } } } }, "/settings/renew_license_key": { "post": { "summary": "renew license key", "operationId": "renewLicenseKey", "tags": [ "setting" ], "parameters": [ { "name": "license_key", "in": "query", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "status", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/settings/customer_portal": { "post": { "summary": "create customer portal session", "operationId": "createCustomerPortalSession", "tags": [ "setting" ], "parameters": [ { "name": "license_key", "in": "query", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "url to portal", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/saml/test_metadata": { "post": { "summary": "test metadata", "operationId": "testMetadata", "tags": [ "setting" ], "requestBody": { "description": "test metadata", "required": true, "content": { "application/json": { "schema": { "type": "string" } } } }, "responses": { "200": { "description": "status", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/settings/list_global": { "get": { "summary": "list global settings", "operationId": "listGlobalSettings", "tags": [ "setting" ], "responses": { "200": { "description": "list of settings", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/GlobalSetting" } } } } } } } }, "/min_keep_alive_version": { "get": { "summary": "get minimum worker versions required to stay alive", "operationId": "getMinKeepAliveVersion", "tags": [ "setting" ], "responses": { "200": { "description": "minimum keep-alive versions for workers and agents", "content": { "application/json": { "schema": { "type": "object", "required": [ "worker", "agent" ], "properties": { "worker": { "type": "string", "description": "minimum version for normal workers" }, "agent": { "type": "string", "description": "minimum version for agent workers" } } } } } } } } }, "/.well-known/jwks.json": { "get": { "summary": "get JWKS for Vault JWT authentication", "operationId": "getJwks", "tags": [ "setting" ], "responses": { "200": { "description": "JSON Web Key Set", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/JwksResponse" } } } } } } }, "/settings/test_secret_backend": { "post": { "summary": "test secret backend connection (HashiCorp Vault)", "operationId": "testSecretBackend", "tags": [ "setting" ], "requestBody": { "description": "Vault settings to test", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VaultSettings" } } } }, "responses": { "200": { "description": "connection successful", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/settings/migrate_secrets_to_vault": { "post": { "summary": "migrate secrets from database to HashiCorp Vault", "operationId": "migrateSecretsToVault", "tags": [ "setting" ], "requestBody": { "description": "Vault settings for migration target", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VaultSettings" } } } }, "responses": { "200": { "description": "migration report", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SecretMigrationReport" } } } } } } }, "/settings/migrate_secrets_to_database": { "post": { "summary": "migrate secrets from HashiCorp Vault to database", "operationId": "migrateSecretsToDatabase", "tags": [ "setting" ], "requestBody": { "description": "Vault settings for migration source", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VaultSettings" } } } }, "responses": { "200": { "description": "migration report", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SecretMigrationReport" } } } } } } }, "/users/email": { "get": { "summary": "get current user email (if logged in)", "operationId": "getCurrentEmail", "tags": [ "user" ], "responses": { "200": { "description": "user email", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/users/refresh_token": { "get": { "summary": "refresh the current token", "operationId": "refreshUserToken", "tags": [ "user" ], "parameters": [ { "name": "if_expiring_in_less_than_s", "in": "query", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "new token", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/users/tutorial_progress": { "get": { "summary": "get tutorial progress", "operationId": "getTutorialProgress", "tags": [ "user" ], "responses": { "200": { "description": "tutorial progress", "content": { "application/json": { "schema": { "type": "object", "properties": { "progress": { "type": "integer" }, "skipped_all": { "type": "boolean" } } } } } } } }, "post": { "summary": "update tutorial progress", "operationId": "updateTutorialProgress", "tags": [ "user" ], "requestBody": { "description": "progress update", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "progress": { "type": "integer" }, "skipped_all": { "type": "boolean" } } } } } }, "responses": { "200": { "description": "tutorial progress", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/users/leave_instance": { "post": { "summary": "leave instance", "operationId": "leaveInstance", "tags": [ "user" ], "responses": { "200": { "description": "status", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/users/usage": { "get": { "summary": "get current usage outside of premium workspaces", "operationId": "getUsage", "tags": [ "user" ], "responses": { "200": { "description": "free usage", "content": { "text/plain": { "schema": { "type": "number" } } } } } } }, "/users/all_runnables": { "get": { "summary": "get all runnables in every workspace", "operationId": "getRunnable", "tags": [ "user" ], "responses": { "200": { "description": "free all runnables", "content": { "application/json": { "schema": { "type": "object", "properties": { "workspace": { "type": "string" }, "endpoint_async": { "type": "string" }, "endpoint_sync": { "type": "string" }, "summary": { "type": "string" }, "description": { "type": "string" }, "kind": { "type": "string" } }, "required": [ "workspace", "endpoint_async", "endpoint_sync", "summary", "kind" ] } } } } } } }, "/users/whoami": { "get": { "summary": "get current global whoami (if logged in)", "operationId": "globalWhoami", "tags": [ "user" ], "responses": { "200": { "description": "user email", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GlobalUserInfo" } } } } } } }, "/users/list_invites": { "get": { "summary": "list all workspace invites", "operationId": "listWorkspaceInvites", "tags": [ "user" ], "responses": { "200": { "description": "list all workspace invites", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/WorkspaceInvite" } } } } } } } }, "/w/{workspace}/users/whoami": { "get": { "summary": "whoami", "operationId": "whoami", "tags": [ "user" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "responses": { "200": { "description": "user", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/User" } } } } } } }, "/w/{workspace}/github_app/token": { "post": { "summary": "get github app token", "operationId": "getGithubAppToken", "tags": [ "workspace" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "jwt job token", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "job_token": { "type": "string" } }, "required": [ "job_token" ] } } } }, "responses": { "200": { "description": "github app token", "content": { "application/json": { "schema": { "type": "object", "properties": { "token": { "type": "string" } }, "required": [ "token" ] } } } } } } }, "/w/{workspace}/github_app/install_from_workspace": { "post": { "tags": [ "Git Sync" ], "summary": "Install a GitHub installation from another workspace", "operationId": "installFromWorkspace", "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "source_workspace_id": { "type": "string", "description": "The ID of the workspace containing the installation to copy" }, "installation_id": { "type": "number", "description": "The ID of the GitHub installation to copy" } }, "required": [ "source_workspace_id", "installation_id" ] } } } }, "responses": { "200": { "description": "Installation successfully copied" } } } }, "/w/{workspace}/github_app/installation/{installation_id}": { "delete": { "summary": "Delete a GitHub installation from a workspace", "operationId": "deleteFromWorkspace", "description": "Removes a GitHub installation from the specified workspace. Requires admin privileges.", "tags": [ "Git Sync" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "name": "installation_id", "in": "path", "required": true, "schema": { "type": "integer", "format": "int64" }, "description": "The ID of the GitHub installation to delete" } ], "responses": { "200": { "description": "Installation successfully deleted" } } } }, "/w/{workspace}/github_app/export/{installationId}": { "get": { "summary": "Export GitHub installation JWT token", "description": "Exports the JWT token for a specific GitHub installation in the workspace", "operationId": "exportInstallation", "tags": [ "Git Sync" ], "parameters": [ { "name": "workspace", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "installationId", "in": "path", "required": true, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "Successfully exported the JWT token", "content": { "application/json": { "schema": { "type": "object", "properties": { "jwt_token": { "type": "string" } } } } } } } } }, "/w/{workspace}/github_app/import": { "post": { "summary": "Import GitHub installation from JWT token", "description": "Imports a GitHub installation from a JWT token exported from another instance", "operationId": "importInstallation", "tags": [ "Git Sync" ], "parameters": [ { "name": "workspace", "in": "path", "required": true, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "jwt_token" ], "properties": { "jwt_token": { "type": "string" } } } } } }, "responses": { "200": { "description": "Successfully imported the installation" } } } }, "/users/accept_invite": { "post": { "summary": "accept invite to workspace", "operationId": "acceptInvite", "tags": [ "user" ], "requestBody": { "description": "accept invite", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "workspace_id": { "type": "string" }, "username": { "type": "string" } }, "required": [ "workspace_id" ] } } } }, "responses": { "200": { "description": "status", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/users/decline_invite": { "post": { "summary": "decline invite to workspace", "operationId": "declineInvite", "tags": [ "user" ], "requestBody": { "description": "decline invite", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "workspace_id": { "type": "string" } }, "required": [ "workspace_id" ] } } } }, "responses": { "200": { "description": "status", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/workspaces/invite_user": { "post": { "summary": "invite user to workspace", "operationId": "inviteUser", "tags": [ "workspace" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "WorkspaceInvite", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "email": { "type": "string" }, "is_admin": { "type": "boolean" }, "operator": { "type": "boolean" }, "parent_workspace_id": { "type": "string", "nullable": true } }, "required": [ "email", "is_admin", "operator" ] } } } }, "responses": { "200": { "description": "status", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/workspaces/add_user": { "post": { "summary": "add user to workspace", "operationId": "addUser", "tags": [ "workspace" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "WorkspaceInvite", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "email": { "type": "string" }, "is_admin": { "type": "boolean" }, "username": { "type": "string" }, "operator": { "type": "boolean" } }, "required": [ "email", "is_admin", "operator" ] } } } }, "responses": { "200": { "description": "status", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/workspaces/delete_invite": { "post": { "summary": "delete user invite", "operationId": "delete invite", "tags": [ "workspace" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "WorkspaceInvite", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "email": { "type": "string" }, "is_admin": { "type": "boolean" }, "operator": { "type": "boolean" } }, "required": [ "email", "is_admin", "operator" ] } } } }, "responses": { "200": { "description": "status", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/workspaces/archive": { "post": { "summary": "archive workspace", "operationId": "archiveWorkspace", "tags": [ "workspace" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "responses": { "200": { "description": "status", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/workspaces/unarchive/{workspace}": { "post": { "summary": "unarchive workspace", "operationId": "unarchiveWorkspace", "tags": [ "workspace" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "responses": { "200": { "description": "status", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/workspaces/delete/{workspace}": { "delete": { "summary": "delete workspace (require super admin)", "operationId": "deleteWorkspace", "tags": [ "workspace" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "name": "only_delete_forks", "in": "query", "required": false, "schema": { "type": "boolean" } } ], "responses": { "200": { "description": "status", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/workspaces/leave": { "post": { "summary": "leave workspace", "operationId": "leaveWorkspace", "tags": [ "workspace" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "responses": { "200": { "description": "status", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/workspaces/get_workspace_name": { "get": { "summary": "get workspace name", "operationId": "getWorkspaceName", "tags": [ "workspace" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "responses": { "200": { "description": "status", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/workspaces/change_workspace_name": { "post": { "summary": "change workspace name", "operationId": "changeWorkspaceName", "tags": [ "workspace" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "new_name": { "type": "string" } }, "required": [ "username" ] } } } }, "responses": { "200": { "description": "status", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/workspaces/change_workspace_id": { "post": { "summary": "change workspace id", "operationId": "changeWorkspaceId", "tags": [ "workspace" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "new_id": { "type": "string" }, "new_name": { "type": "string" } }, "required": [ "username" ] } } } }, "responses": { "200": { "description": "status", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/workspaces/change_workspace_color": { "post": { "summary": "change workspace id", "operationId": "changeWorkspaceColor", "tags": [ "workspace" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "color": { "type": "string" } } } } } }, "responses": { "200": { "description": "status", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/users/whois/{username}": { "get": { "summary": "whois", "operationId": "whois", "tags": [ "user" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "name": "username", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "user", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/User" } } } } } } }, "/w/{workspace}/workspaces/operator_settings": { "post": { "operationId": "updateOperatorSettings", "summary": "Update operator settings for a workspace", "description": "Updates the operator settings for a specific workspace. Requires workspace admin privileges.", "tags": [ "workspace" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OperatorSettings" } } } }, "responses": { "200": { "description": "Operator settings updated successfully", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/workspaces/compare/{target_workspace_id}": { "get": { "operationId": "compareWorkspaces", "summary": "Compare two workspaces", "description": "Compares the current workspace with a target workspace to find differences in scripts, flows, apps, resources, and variables. Returns information about items that are ahead, behind, or in conflict.", "tags": [ "workspace" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "name": "target_workspace_id", "in": "path", "required": true, "schema": { "type": "string" }, "description": "The ID of the workspace to compare with" } ], "responses": { "200": { "description": "Workspace comparison results", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WorkspaceComparison" } } } } } } }, "/w/{workspace}/workspaces/reset_diff_tally/{fork_workspace_id}": { "post": { "operationId": "resetDiffTally", "summary": "Resets the ahead and behind deployement counter after a deployement", "description": "This endpoint should be called after a fork deployement", "tags": [ "workspace" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "name": "fork_workspace_id", "in": "path", "required": true, "schema": { "type": "string" }, "description": "The ID of the workspace to compare with" } ], "responses": { "200": { "description": "status", "content": { "application/json": { "schema": {} } } } } } }, "/users/exists/{email}": { "get": { "summary": "exists email", "operationId": "existsEmail", "tags": [ "user" ], "parameters": [ { "name": "email", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "user", "content": { "application/json": { "schema": { "type": "boolean" } } } } } } }, "/users/list_as_super_admin": { "get": { "summary": "list all users as super admin (require to be super amdin)", "operationId": "listUsersAsSuperAdmin", "tags": [ "user" ], "parameters": [ { "$ref": "#/components/parameters/Page" }, { "$ref": "#/components/parameters/PerPage" }, { "name": "active_only", "in": "query", "description": "filter only active users", "schema": { "type": "boolean" } } ], "responses": { "200": { "description": "user", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/GlobalUserInfo" } } } } } } } }, "/w/{workspace}/workspaces/list_pending_invites": { "get": { "summary": "list pending invites for a workspace", "operationId": "listPendingInvites", "tags": [ "workspace" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "responses": { "200": { "description": "user", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/WorkspaceInvite" } } } } } } } }, "/w/{workspace}/workspaces/get_settings": { "get": { "summary": "get settings", "operationId": "getSettings", "tags": [ "workspace" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "responses": { "200": { "description": "status", "content": { "application/json": { "schema": { "type": "object", "properties": { "workspace_id": { "type": "string" }, "slack_name": { "type": "string" }, "slack_team_id": { "type": "string" }, "slack_command_script": { "type": "string" }, "slack_oauth_client_id": { "type": "string" }, "slack_oauth_client_secret": { "type": "string" }, "teams_team_id": { "type": "string" }, "teams_command_script": { "type": "string" }, "teams_team_name": { "type": "string" }, "teams_team_guid": { "type": "string" }, "auto_invite": { "$ref": "#/components/schemas/AutoInviteConfig" }, "plan": { "type": "string" }, "customer_id": { "type": "string" }, "webhook": { "type": "string" }, "deploy_to": { "type": "string" }, "ai_config": { "$ref": "#/components/schemas/AIConfig" }, "error_handler": { "$ref": "#/components/schemas/ErrorHandlerConfig" }, "success_handler": { "$ref": "#/components/schemas/SuccessHandlerConfig" }, "large_file_storage": { "$ref": "#/components/schemas/LargeFileStorage" }, "ducklake": { "$ref": "#/components/schemas/DucklakeSettings" }, "datatable": { "$ref": "#/components/schemas/DataTableSettings" }, "git_sync": { "$ref": "#/components/schemas/WorkspaceGitSyncSettings" }, "deploy_ui": { "$ref": "#/components/schemas/WorkspaceDeployUISettings" }, "default_app": { "type": "string" }, "default_scripts": { "$ref": "#/components/schemas/WorkspaceDefaultScripts" }, "mute_critical_alerts": { "type": "boolean" }, "color": { "type": "string" }, "operator_settings": { "$ref": "#/components/schemas/OperatorSettings" }, "public_app_execution_limit_per_minute": { "type": "integer", "description": "Rate limit for public app executions per minute per server. NULL or 0 means disabled." } } } } } } } } }, "/w/{workspace}/workspaces/get_deploy_to": { "get": { "summary": "get deploy to", "operationId": "getDeployTo", "tags": [ "workspace" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "responses": { "200": { "description": "status", "content": { "application/json": { "schema": { "type": "object", "properties": { "deploy_to": { "type": "string" } } } } } } } } }, "/w/{workspace}/workspaces/is_premium": { "get": { "summary": "get if workspace is premium", "operationId": "getIsPremium", "tags": [ "workspace" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "responses": { "200": { "description": "status", "content": { "application/json": { "schema": { "type": "boolean" } } } } } } }, "/w/{workspace}/workspaces/premium_info": { "get": { "summary": "get premium info", "operationId": "getPremiumInfo", "tags": [ "workspace" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "name": "skip_subscription_fetch", "in": "query", "description": "skip fetching subscription status from stripe", "schema": { "type": "boolean" } } ], "responses": { "200": { "description": "status", "content": { "application/json": { "schema": { "type": "object", "properties": { "premium": { "type": "boolean" }, "usage": { "type": "number" }, "owner": { "type": "string" }, "status": { "type": "string" }, "is_past_due": { "type": "boolean" }, "max_tolerated_executions": { "type": "number" } }, "required": [ "premium", "owner", "is_past_due" ] } } } } } } }, "/w/{workspace}/workspaces/threshold_alert": { "get": { "summary": "get threshold alert info", "operationId": "getThresholdAlert", "tags": [ "workspace" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "responses": { "200": { "description": "status", "content": { "application/json": { "schema": { "type": "object", "properties": { "threshold_alert_amount": { "type": "number" }, "last_alert_sent": { "type": "string", "format": "date-time" } } } } } } } }, "post": { "summary": "set threshold alert info", "operationId": "setThresholdAlert", "tags": [ "workspace" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "threshold alert info", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "threshold_alert_amount": { "type": "number" } } } } } }, "responses": { "200": { "description": "status", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/workspaces/rebuild_dependency_map": { "post": { "summary": "rebuild dependency map", "operationId": "rebuildDependencyMap", "tags": [ "workspace" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "responses": { "200": { "description": "status", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/workspaces/get_dependents/{imported_path}": { "get": { "summary": "get dependents of an imported path", "operationId": "getDependents", "tags": [ "workspace" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "name": "imported_path", "in": "path", "required": true, "schema": { "type": "string" }, "description": "The imported path to get dependents for" } ], "responses": { "200": { "description": "list of dependents", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/DependencyDependent" } } } } } } } }, "/w/{workspace}/workspaces/get_dependents_amounts": { "post": { "summary": "get dependents amounts for multiple imported paths", "operationId": "getDependentsAmounts", "tags": [ "workspace" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "List of imported paths to get dependents counts for", "required": true, "content": { "application/json": { "schema": { "type": "array", "items": { "type": "string" } } } } }, "responses": { "200": { "description": "list of dependents amounts", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/DependentsAmount" } } } } } } } }, "/w/{workspace}/workspaces/get_dependency_map": { "get": { "summary": "get dependency map", "operationId": "getDependencyMap", "tags": [ "workspace" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "responses": { "200": { "description": "dmap", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/DependencyMap" } } } } } } } }, "/w/{workspace}/workspaces/edit_slack_command": { "post": { "summary": "edit slack command", "operationId": "editSlackCommand", "tags": [ "workspace" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "WorkspaceInvite", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "slack_command_script": { "type": "string" } } } } } }, "responses": { "200": { "description": "status", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/workspaces/slack_oauth_config": { "get": { "summary": "get workspace slack oauth config", "operationId": "getWorkspaceSlackOauthConfig", "tags": [ "workspace" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "responses": { "200": { "description": "slack oauth config", "content": { "application/json": { "schema": { "type": "object", "properties": { "slack_oauth_client_id": { "type": "string", "nullable": true }, "slack_oauth_client_secret": { "type": "string", "nullable": true, "description": "Masked with *** if set" } } } } } } } }, "post": { "summary": "set workspace slack oauth config", "operationId": "setWorkspaceSlackOauthConfig", "tags": [ "workspace" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "Slack OAuth Configuration", "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "slack_oauth_client_id", "slack_oauth_client_secret" ], "properties": { "slack_oauth_client_id": { "type": "string" }, "slack_oauth_client_secret": { "type": "string" } } } } } }, "responses": { "200": { "description": "status", "content": { "text/plain": { "schema": { "type": "string" } } } } } }, "delete": { "summary": "delete workspace slack oauth config", "operationId": "deleteWorkspaceSlackOauthConfig", "tags": [ "workspace" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "responses": { "200": { "description": "status", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/workspaces/edit_teams_command": { "post": { "summary": "edit teams command", "operationId": "editTeamsCommand", "tags": [ "workspace" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "WorkspaceInvite", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "slack_command_script": { "type": "string" } } } } } }, "responses": { "200": { "description": "status", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/workspaces/available_teams_ids": { "get": { "summary": "list available teams ids", "operationId": "listAvailableTeamsIds", "tags": [ "workspace" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "name": "search", "in": "query", "description": "Search teams by name. If omitted, returns first page of all teams.", "required": false, "schema": { "type": "string" } }, { "name": "next_link", "in": "query", "description": "Pagination cursor URL from previous response. Pass this to fetch the next page of results.", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "status", "content": { "application/json": { "schema": { "type": "object", "properties": { "teams": { "type": "array", "items": { "type": "object", "properties": { "team_name": { "type": "string" }, "team_id": { "type": "string" } } } }, "total_count": { "type": "integer", "description": "Total number of teams across all pages" }, "per_page": { "type": "integer", "description": "Number of teams per page (configurable via TEAMS_PER_PAGE env var)" }, "next_link": { "type": "string", "nullable": true, "description": "URL to fetch next page of results. Null if no more pages." } } } } } } } } }, "/w/{workspace}/workspaces/available_teams_channels": { "get": { "summary": "list available channels for a specific team", "operationId": "listAvailableTeamsChannels", "tags": [ "workspace" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "name": "team_id", "in": "query", "description": "Microsoft Teams team ID", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "List of channels for the specified team", "content": { "application/json": { "schema": { "type": "object", "properties": { "channels": { "type": "array", "items": { "type": "object", "properties": { "channel_name": { "type": "string" }, "channel_id": { "type": "string" } } } }, "total_count": { "type": "integer" } } } } } } } } }, "/w/{workspace}/workspaces/connect_teams": { "post": { "summary": "connect teams", "operationId": "connectTeams", "tags": [ "workspace" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "connect teams", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "team_id": { "type": "string" }, "team_name": { "type": "string" } } } } } }, "responses": { "200": { "description": "status", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/workspaces/run_slack_message_test_job": { "post": { "summary": "run a job that sends a message to Slack", "operationId": "runSlackMessageTestJob", "tags": [ "workspace" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "path to hub script to run and its corresponding args", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "hub_script_path": { "type": "string" }, "channel": { "type": "string" }, "test_msg": { "type": "string" } } } } } }, "responses": { "200": { "description": "status", "content": { "text/json": { "schema": { "type": "object", "properties": { "job_uuid": { "type": "string" } } } } } } } } }, "/w/{workspace}/workspaces/run_teams_message_test_job": { "post": { "summary": "run a job that sends a message to Teams", "operationId": "runTeamsMessageTestJob", "tags": [ "workspace" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "path to hub script to run and its corresponding args", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "hub_script_path": { "type": "string" }, "channel": { "type": "string" }, "test_msg": { "type": "string" } } } } } }, "responses": { "200": { "description": "status", "content": { "text/json": { "schema": { "type": "object", "properties": { "job_uuid": { "type": "string" } } } } } } } } }, "/w/{workspace}/workspaces/edit_deploy_to": { "post": { "summary": "edit deploy to", "operationId": "editDeployTo", "tags": [ "workspace" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "deploy_to": { "type": "string" } } } } } }, "responses": { "200": { "description": "status", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/workspaces/edit_auto_invite": { "post": { "summary": "edit auto invite", "operationId": "editAutoInvite", "tags": [ "workspace" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "WorkspaceInvite", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "operator": { "type": "boolean" }, "invite_all": { "type": "boolean" }, "auto_add": { "type": "boolean" } } } } } }, "responses": { "200": { "description": "status", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/workspaces/edit_instance_groups": { "post": { "summary": "edit instance groups", "operationId": "editInstanceGroups", "tags": [ "workspace" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "Instance Groups Configuration", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "groups": { "type": "array", "items": { "type": "string" } }, "roles": { "type": "object", "additionalProperties": { "type": "string" } } } } } } }, "responses": { "200": { "description": "status", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/workspaces/edit_webhook": { "post": { "summary": "edit webhook", "operationId": "editWebhook", "tags": [ "workspace" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "WorkspaceWebhook", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "webhook": { "type": "string" } } } } } }, "responses": { "200": { "description": "status", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/workspaces/edit_copilot_config": { "post": { "summary": "edit copilot config", "operationId": "editCopilotConfig", "tags": [ "workspace" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "WorkspaceCopilotConfig", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AIConfig" } } } }, "responses": { "200": { "description": "status", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/workspaces/get_copilot_info": { "get": { "summary": "get copilot info", "operationId": "getCopilotInfo", "tags": [ "workspace" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "responses": { "200": { "description": "status", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AIConfig" } } } } } } }, "/w/{workspace}/workspaces/edit_error_handler": { "post": { "summary": "edit error handler", "operationId": "editErrorHandler", "tags": [ "workspace" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "WorkspaceErrorHandler", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EditErrorHandler" } } } }, "responses": { "200": { "description": "status", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/workspaces/edit_success_handler": { "post": { "summary": "edit success handler", "operationId": "editSuccessHandler", "tags": [ "workspace" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "WorkspaceSuccessHandler", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EditSuccessHandler" } } } }, "responses": { "200": { "description": "status", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/workspaces/edit_large_file_storage_config": { "post": { "summary": "edit large file storage settings", "operationId": "editLargeFileStorageConfig", "tags": [ "workspace" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "LargeFileStorage info", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "large_file_storage": { "$ref": "#/components/schemas/LargeFileStorage" } } } } } }, "responses": { "200": { "description": "status", "content": { "application/json": { "schema": {} } } } } } }, "/w/{workspace}/workspaces/list_ducklakes": { "get": { "summary": "list ducklakes", "operationId": "listDucklakes", "tags": [ "workspace" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "responses": { "200": { "description": "status", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "string" } } } } } } } }, "/w/{workspace}/workspaces/list_datatables": { "get": { "summary": "list Datatables", "operationId": "listDataTables", "tags": [ "workspace" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "responses": { "200": { "description": "status", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "string" } } } } } } } }, "/w/{workspace}/workspaces/list_datatable_schemas": { "get": { "summary": "list schemas of all connected Datatables", "operationId": "listDataTableSchemas", "tags": [ "workspace" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "responses": { "200": { "description": "schemas of all datatables", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/DataTableSchema" } } } } } } } }, "/w/{workspace}/workspaces/edit_ducklake_config": { "post": { "summary": "edit ducklake settings", "operationId": "editDucklakeConfig", "tags": [ "workspace" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "Ducklake settings", "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "settings" ], "properties": { "settings": { "$ref": "#/components/schemas/DucklakeSettings" } } } } } }, "responses": { "200": { "description": "status", "content": { "application/json": { "schema": {} } } } } } }, "/w/{workspace}/workspaces/edit_datatable_config": { "post": { "summary": "edit datatable settings", "operationId": "editDataTableConfig", "tags": [ "workspace" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "DataTable settings", "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "settings" ], "properties": { "settings": { "$ref": "#/components/schemas/DataTableSettings" } } } } } }, "responses": { "200": { "description": "status", "content": { "application/json": { "schema": {} } } } } } }, "/w/{workspace}/workspaces/edit_git_sync_config": { "post": { "summary": "edit workspace git sync settings", "operationId": "editWorkspaceGitSyncConfig", "tags": [ "workspace" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "Workspace Git sync settings", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "git_sync_settings": { "$ref": "#/components/schemas/WorkspaceGitSyncSettings" } } } } } }, "responses": { "200": { "description": "status", "content": { "application/json": { "schema": {} } } } } } }, "/w/{workspace}/workspaces/edit_git_sync_repository": { "post": { "summary": "add or update individual git sync repository", "operationId": "editGitSyncRepository", "tags": [ "workspace" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "Git sync repository settings to add or update", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "git_repo_resource_path": { "type": "string", "description": "The resource path of the git repository to update" }, "repository": { "$ref": "#/components/schemas/GitRepositorySettings" } }, "required": [ "git_repo_resource_path", "repository" ] } } } }, "responses": { "200": { "description": "status", "content": { "application/json": { "schema": {} } } } } } }, "/w/{workspace}/workspaces/delete_git_sync_repository": { "delete": { "summary": "delete individual git sync repository", "operationId": "deleteGitSyncRepository", "tags": [ "workspace" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "Git sync repository to delete", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "git_repo_resource_path": { "type": "string", "description": "The resource path of the git repository to delete" } }, "required": [ "git_repo_resource_path" ] } } } }, "responses": { "200": { "description": "status", "content": { "application/json": { "schema": {} } } } } } }, "/w/{workspace}/workspaces/edit_deploy_ui_config": { "post": { "summary": "edit workspace deploy ui settings", "operationId": "editWorkspaceDeployUISettings", "tags": [ "workspace" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "Workspace deploy UI settings", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "deploy_ui_settings": { "$ref": "#/components/schemas/WorkspaceDeployUISettings" } } } } } }, "responses": { "200": { "description": "status", "content": { "application/json": { "schema": {} } } } } } }, "/w/{workspace}/workspaces/edit_default_app": { "post": { "summary": "edit default app for workspace", "operationId": "editWorkspaceDefaultApp", "tags": [ "workspace" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "Workspace default app", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "default_app_path": { "type": "string" } } } } } }, "responses": { "200": { "description": "status", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/workspaces/default_scripts": { "post": { "summary": "edit default scripts for workspace", "operationId": "editDefaultScripts", "tags": [ "workspace" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "Workspace default app", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WorkspaceDefaultScripts" } } } }, "responses": { "200": { "description": "status", "content": { "text/plain": { "schema": { "type": "string" } } } } } }, "get": { "summary": "get default scripts for workspace", "operationId": "get default scripts", "tags": [ "workspace" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "responses": { "200": { "description": "status", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WorkspaceDefaultScripts" } } } } } } }, "/w/{workspace}/workspaces/set_environment_variable": { "post": { "summary": "set environment variable", "operationId": "setEnvironmentVariable", "tags": [ "workspace" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "Workspace default app", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "name": { "type": "string" }, "value": { "type": "string" } }, "required": [ "name" ] } } } }, "responses": { "200": { "description": "status", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/workspaces/encryption_key": { "get": { "summary": "retrieves the encryption key for this workspace", "operationId": "getWorkspaceEncryptionKey", "tags": [ "workspace" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "responses": { "200": { "description": "status", "content": { "application/json": { "schema": { "type": "object", "properties": { "key": { "type": "string" } }, "required": [ "key" ] } } } } } }, "post": { "summary": "update the encryption key for this workspace", "operationId": "setWorkspaceEncryptionKey", "tags": [ "workspace" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "New encryption key", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "new_key": { "type": "string" }, "skip_reencrypt": { "type": "boolean" } }, "required": [ "new_key" ] } } } }, "responses": { "200": { "description": "status", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/workspaces/default_app": { "get": { "summary": "get default app for workspace", "operationId": "getWorkspaceDefaultApp", "tags": [ "workspace" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "responses": { "200": { "description": "status", "content": { "application/json": { "schema": { "type": "object", "properties": { "default_app_path": { "type": "string" } } } } } } } } }, "/w/{workspace}/workspaces/usage": { "get": { "summary": "get usage", "operationId": "getWorkspaceUsage", "tags": [ "workspace" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "responses": { "200": { "description": "usage", "content": { "text/plain": { "schema": { "type": "number" } } } } } } }, "/w/{workspace}/workspaces/used_triggers": { "get": { "summary": "get used triggers", "operationId": "getUsedTriggers", "tags": [ "workspace" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "responses": { "200": { "description": "status", "content": { "application/json": { "schema": { "type": "object", "properties": { "http_routes_used": { "type": "boolean" }, "websocket_used": { "type": "boolean" }, "kafka_used": { "type": "boolean" }, "nats_used": { "type": "boolean" }, "postgres_used": { "type": "boolean" }, "mqtt_used": { "type": "boolean" }, "gcp_used": { "type": "boolean" }, "sqs_used": { "type": "boolean" }, "email_used": { "type": "boolean" }, "nextcloud_used": { "type": "boolean" } }, "required": [ "http_routes_used", "websocket_used", "kafka_used", "nats_used", "postgres_used", "mqtt_used", "gcp_used", "sqs_used", "email_used", "nextcloud_used" ] } } } } } } }, "/w/{workspace}/users/list": { "get": { "summary": "list users", "operationId": "listUsers", "tags": [ "user" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "responses": { "200": { "description": "user", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/User" } } } } } } } }, "/w/{workspace}/users/list_usage": { "get": { "summary": "list users usage", "operationId": "listUsersUsage", "tags": [ "user" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "responses": { "200": { "description": "user", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/UserUsage" } } } } } } } }, "/w/{workspace}/users/list_usernames": { "get": { "summary": "list usernames", "operationId": "listUsernames", "tags": [ "user" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "responses": { "200": { "description": "user", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "string" } } } } } } } }, "/w/{workspace}/users/username_to_email/{username}": { "get": { "summary": "get email from username", "operationId": "usernameToEmail", "tags": [ "user" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "name": "username", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "email", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/tokens/list/scopes": { "get": { "summary": "list of available scopes", "operationId": "ListAvailableScopes", "tags": [ "token" ], "responses": { "200": { "description": "list of available scopes", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ScopeDomain" } } } } } } } }, "/users/tokens/create": { "post": { "summary": "create token", "operationId": "createToken", "tags": [ "user" ], "requestBody": { "description": "new token", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NewToken" } } } }, "responses": { "201": { "description": "token created", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/users/tokens/impersonate": { "post": { "summary": "create token to impersonate a user (require superadmin)", "operationId": "createTokenImpersonate", "tags": [ "user" ], "requestBody": { "description": "new token", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NewTokenImpersonate" } } } }, "responses": { "201": { "description": "token created", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/users/tokens/delete/{token_prefix}": { "delete": { "summary": "delete token", "operationId": "deleteToken", "tags": [ "user" ], "parameters": [ { "name": "token_prefix", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "delete token", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/users/tokens/list": { "get": { "summary": "list token", "operationId": "listTokens", "tags": [ "user" ], "parameters": [ { "name": "exclude_ephemeral", "in": "query", "schema": { "type": "boolean" } }, { "$ref": "#/components/parameters/Page" }, { "$ref": "#/components/parameters/PerPage" } ], "responses": { "200": { "description": "truncated token", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/TruncatedToken" } } } } } } } }, "/w/{workspace}/oidc/token/{audience}": { "post": { "summary": "get OIDC token (ee only)", "operationId": "getOidcToken", "tags": [ "oidc" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "name": "audience", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "expires_in", "in": "query", "schema": { "type": "number" } } ], "responses": { "200": { "description": "new oidc token", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/variables/create": { "post": { "summary": "create variable", "operationId": "createVariable", "x-mcp-tool": true, "tags": [ "variable" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "name": "already_encrypted", "description": "whether the variable is already encrypted (default false)", "in": "query", "schema": { "type": "boolean" } } ], "requestBody": { "description": "new variable", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateVariable" } } } }, "responses": { "201": { "description": "variable created", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/variables/encrypt": { "post": { "summary": "encrypt value", "operationId": "encryptValue", "tags": [ "variable" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "new variable", "required": true, "content": { "application/json": { "schema": { "type": "string" } } } }, "responses": { "200": { "description": "encrypted value", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/variables/delete/{path}": { "delete": { "summary": "delete variable", "operationId": "deleteVariable", "x-mcp-tool": true, "tags": [ "variable" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" } ], "responses": { "200": { "description": "variable deleted", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/variables/delete_bulk": { "delete": { "summary": "delete variables in bulk", "operationId": "deleteVariablesBulk", "tags": [ "variable" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "paths to delete", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "paths": { "type": "array", "items": { "type": "string" } } }, "required": [ "paths" ] } } } }, "responses": { "200": { "description": "deleted paths", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "string" } } } } } } } }, "/w/{workspace}/variables/update/{path}": { "post": { "summary": "update variable", "operationId": "updateVariable", "x-mcp-tool": true, "tags": [ "variable" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" }, { "name": "already_encrypted", "description": "whether the variable is already encrypted (default false)", "in": "query", "schema": { "type": "boolean" } } ], "requestBody": { "description": "updated variable", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EditVariable" } } } }, "responses": { "200": { "description": "variable updated", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/variables/get/{path}": { "get": { "summary": "get variable", "operationId": "getVariable", "x-mcp-tool": true, "tags": [ "variable" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" }, { "name": "decrypt_secret", "description": "ask to decrypt secret if this variable is secret\n(if not secret no effect, default: true)\n", "in": "query", "schema": { "type": "boolean" } }, { "name": "include_encrypted", "description": "ask to include the encrypted value if secret and decrypt secret is not true (default: false)\n", "in": "query", "schema": { "type": "boolean" } } ], "responses": { "200": { "description": "variable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ListableVariable" } } } } } } }, "/w/{workspace}/variables/get_value/{path}": { "get": { "summary": "get variable value", "operationId": "getVariableValue", "tags": [ "variable" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" }, { "name": "allow_cache", "description": "allow getting a cached value for improved performance\n", "in": "query", "schema": { "type": "boolean" } } ], "responses": { "200": { "description": "variable", "content": { "application/json": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/variables/exists/{path}": { "get": { "summary": "does variable exists at path", "operationId": "existsVariable", "tags": [ "variable" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" } ], "responses": { "200": { "description": "variable", "content": { "application/json": { "schema": { "type": "boolean" } } } } } } }, "/w/{workspace}/variables/list": { "get": { "summary": "list variables", "operationId": "listVariable", "x-mcp-tool": true, "tags": [ "variable" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "name": "path_start", "description": "filter variables by path prefix", "in": "query", "schema": { "type": "string" } }, { "$ref": "#/components/parameters/Page" }, { "$ref": "#/components/parameters/PerPage" } ], "responses": { "200": { "description": "variable list", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ListableVariable" } } } } } } } }, "/w/{workspace}/variables/list_contextual": { "get": { "summary": "list contextual variables", "operationId": "listContextualVariables", "tags": [ "variable" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "responses": { "200": { "description": "contextual variable list", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ContextualVariable" } } } } } } } }, "/w/{workspace}/workspaces/get_secondary_storage_names": { "get": { "summary": "get secondary storage names", "operationId": "getSecondaryStorageNames", "tags": [ "setting" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "name": "include_default", "in": "query", "description": "If true, include \"_default_\" in the list if primary workspace storage is set", "required": false, "schema": { "type": "boolean", "default": false } } ], "responses": { "200": { "description": "status", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "string" } } } } } } } }, "/w/{workspace}/workspaces/critical_alerts": { "get": { "summary": "Get all critical alerts for this workspace", "operationId": "workspaceGetCriticalAlerts", "tags": [ "setting" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "in": "query", "name": "page", "schema": { "type": "integer", "default": 1, "description": "The page number to retrieve (minimum value is 1)" } }, { "in": "query", "name": "page_size", "schema": { "type": "integer", "default": 10, "maximum": 100, "description": "Number of alerts per page (maximum is 100)" } }, { "in": "query", "name": "acknowledged", "schema": { "type": "boolean", "nullable": true, "description": "Filter by acknowledgment status; true for acknowledged, false for unacknowledged, and omit for all alerts" } } ], "responses": { "200": { "description": "Successfully retrieved all critical alerts", "content": { "application/json": { "schema": { "type": "object", "properties": { "alerts": { "type": "array", "items": { "$ref": "#/components/schemas/CriticalAlert" } }, "total_rows": { "type": "integer", "description": "Total number of rows matching the query.", "example": 100 }, "total_pages": { "type": "integer", "description": "Total number of pages based on the page size.", "example": 10 } } } } } } } } }, "/w/{workspace}/workspaces/critical_alerts/{id}/acknowledge": { "post": { "summary": "Acknowledge a critical alert for this workspace", "operationId": "workspaceAcknowledgeCriticalAlert", "tags": [ "setting" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "in": "path", "name": "id", "required": true, "schema": { "type": "integer" }, "description": "The ID of the critical alert to acknowledge" } ], "responses": { "200": { "description": "Successfully acknowledged the critical alert", "content": { "application/json": { "schema": { "type": "string", "example": "Critical alert acknowledged" } } } } } } }, "/w/{workspace}/workspaces/critical_alerts/acknowledge_all": { "post": { "summary": "Acknowledge all unacknowledged critical alerts for this workspace", "operationId": "workspaceAcknowledgeAllCriticalAlerts", "tags": [ "setting" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "responses": { "200": { "description": "Successfully acknowledged all unacknowledged critical alerts.", "content": { "application/json": { "schema": { "type": "string", "example": "All unacknowledged critical alerts acknowledged" } } } } } } }, "/w/{workspace}/workspaces/critical_alerts/mute": { "post": { "summary": "Mute critical alert UI for this workspace", "operationId": "workspaceMuteCriticalAlertsUI", "tags": [ "setting" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "Boolean flag to mute critical alerts.", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "mute_critical_alerts": { "type": "boolean", "description": "Whether critical alerts should be muted.", "example": true } } } } } }, "responses": { "200": { "description": "Successfully updated mute critical alert settings.", "content": { "application/json": { "schema": { "type": "string", "example": "Updated mute critical alert UI settings for workspace: workspace_id" } } } } } } }, "/w/{workspace}/workspaces/protection_rules": { "get": { "summary": "list all protection rules for a workspace", "operationId": "listProtectionRules", "tags": [ "workspace" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "responses": { "200": { "description": "list of protection rules", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ProtectionRuleset" } } } } } } }, "post": { "summary": "create a new protection rule", "operationId": "createProtectionRule", "tags": [ "workspace" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "New protection rule configuration", "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "name", "rules", "bypass_groups", "bypass_users" ], "properties": { "name": { "type": "string", "description": "Unique name for the protection rule", "example": "Production Protection" }, "rules": { "$ref": "#/components/schemas/ProtectionRules" }, "bypass_groups": { "$ref": "#/components/schemas/RuleBypasserGroups" }, "bypass_users": { "$ref": "#/components/schemas/RuleBypasserUsers" } } } } } }, "responses": { "200": { "description": "protection rule created successfully", "content": { "text/plain": { "schema": { "type": "string" } } } }, "400": { "description": "rule with this name already exists" } } } }, "/w/{workspace}/workspaces/protection_rules/{rule_name}": { "post": { "summary": "update an existing protection rule", "operationId": "updateProtectionRule", "tags": [ "workspace" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "name": "rule_name", "in": "path", "required": true, "schema": { "type": "string" }, "description": "Name of the protection rule to update" } ], "requestBody": { "description": "Updated protection rule configuration", "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "rules", "bypass_groups", "bypass_users" ], "properties": { "rules": { "$ref": "#/components/schemas/ProtectionRules" }, "bypass_groups": { "$ref": "#/components/schemas/RuleBypasserGroups" }, "bypass_users": { "$ref": "#/components/schemas/RuleBypasserUsers" } } } } } }, "responses": { "200": { "description": "protection rule updated successfully", "content": { "text/plain": { "schema": { "type": "string" } } } }, "404": { "description": "protection rule not found" } } }, "delete": { "summary": "delete a protection rule", "operationId": "deleteProtectionRule", "tags": [ "workspace" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "name": "rule_name", "in": "path", "required": true, "schema": { "type": "string" }, "description": "Name of the protection rule to delete" } ], "responses": { "200": { "description": "protection rule deleted successfully", "content": { "text/plain": { "schema": { "type": "string" } } } }, "404": { "description": "protection rule not found" } } } }, "/w/{workspace}/workspaces/public_app_rate_limit": { "post": { "summary": "Set public app rate limit for this workspace", "operationId": "setPublicAppRateLimit", "tags": [ "setting" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "Public app rate limit configuration", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "public_app_execution_limit_per_minute": { "type": "integer", "description": "Rate limit for public app executions per minute per server. NULL or 0 to disable.", "example": 100 } } } } } }, "responses": { "200": { "description": "Successfully updated public app rate limit settings.", "content": { "application/json": { "schema": { "type": "string", "example": "Updated public app rate limit for workspace: workspace_id" } } } } } } }, "/oauth/login_callback/{client_name}": { "post": { "security": [], "summary": "login with oauth authorization flow", "operationId": "loginWithOauth", "tags": [ "user" ], "parameters": [ { "$ref": "#/components/parameters/ClientName" } ], "requestBody": { "description": "Partially filled script", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "code": { "type": "string" }, "state": { "type": "string" } } } } } }, "responses": { "200": { "description": "Successfully authenticated. The session ID is returned in a cookie named `token` and as plaintext response. Preferred method of authorization is through the bearer token. The cookie is only for browser convenience.\n", "headers": { "Set-Cookie": { "schema": { "type": "string", "example": "token=abcde12345; Path=/; HttpOnly" } } }, "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/oauth/connect_slack_callback": { "post": { "summary": "connect slack callback", "operationId": "connectSlackCallback", "tags": [ "oauth" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "code endpoint", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "code": { "type": "string" }, "state": { "type": "string" } }, "required": [ "code", "state" ] } } } }, "responses": { "200": { "description": "slack token", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/oauth/connect_slack_callback": { "post": { "summary": "connect slack callback instance", "operationId": "connectSlackCallbackInstance", "tags": [ "oauth" ], "requestBody": { "description": "code endpoint", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "code": { "type": "string" }, "state": { "type": "string" } }, "required": [ "code", "state" ] } } } }, "responses": { "200": { "description": "success message", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/oauth/connect_callback/{client_name}": { "post": { "summary": "connect callback", "operationId": "connectCallback", "tags": [ "oauth" ], "parameters": [ { "$ref": "#/components/parameters/ClientName" } ], "requestBody": { "description": "code endpoint", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "code": { "type": "string" }, "state": { "type": "string" } }, "required": [ "code", "state" ] } } } }, "responses": { "200": { "description": "oauth token", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TokenResponse" } } } } } } }, "/w/{workspace}/oauth/create_account": { "post": { "summary": "create OAuth account", "operationId": "createAccount", "tags": [ "oauth" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "code endpoint", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "refresh_token": { "type": "string", "description": "OAuth refresh token. For authorization_code flow, this contains the actual refresh token. For client_credentials flow, this must be set to an empty string." }, "expires_in": { "type": "integer" }, "client": { "type": "string" }, "grant_type": { "type": "string", "default": "authorization_code" }, "cc_client_id": { "type": "string", "description": "OAuth client ID for resource-level credentials (client_credentials flow only)" }, "cc_client_secret": { "type": "string", "description": "OAuth client secret for resource-level credentials (client_credentials flow only)" }, "cc_token_url": { "type": "string", "description": "OAuth token URL override for resource-level authentication (client_credentials flow only)" }, "mcp_server_url": { "type": "string", "description": "MCP server URL for MCP OAuth token refresh" } }, "required": [ "refresh_token", "expires_in", "client" ] } } } }, "responses": { "200": { "description": "account set", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/oauth/connect_client_credentials/{client}": { "post": { "summary": "connect OAuth using client credentials", "operationId": "connectClientCredentials", "tags": [ "oauth" ], "parameters": [ { "name": "client", "in": "path", "description": "OAuth client name", "required": true, "schema": { "type": "string" } } ], "requestBody": { "description": "client credentials flow parameters", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "scopes": { "type": "array", "items": { "type": "string" } }, "cc_client_id": { "type": "string", "description": "OAuth client ID for resource-level authentication" }, "cc_client_secret": { "type": "string", "description": "OAuth client secret for resource-level authentication" }, "cc_token_url": { "type": "string", "description": "OAuth token URL override for resource-level authentication" } }, "required": [ "cc_client_id", "cc_client_secret" ] } } } }, "responses": { "200": { "description": "OAuth token response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TokenResponse" } } } } } } }, "/w/{workspace}/oauth/refresh_token/{id}": { "post": { "summary": "refresh token", "operationId": "refreshToken", "tags": [ "oauth" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/AccountId" } ], "requestBody": { "description": "variable path", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "path": { "type": "string" } }, "required": [ "path" ] } } } }, "responses": { "200": { "description": "token refreshed", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/oauth/disconnect/{id}": { "post": { "summary": "disconnect account", "operationId": "disconnectAccount", "tags": [ "oauth" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/AccountId" } ], "responses": { "200": { "description": "disconnected client", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/oauth/disconnect_slack": { "post": { "summary": "disconnect slack", "operationId": "disconnectSlack", "tags": [ "oauth" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "responses": { "200": { "description": "disconnected slack", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/oauth/disconnect_teams": { "post": { "summary": "disconnect teams", "operationId": "disconnectTeams", "tags": [ "oauth" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "responses": { "200": { "description": "disconnected teams", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/oauth/list_logins": { "get": { "summary": "list oauth logins", "operationId": "listOAuthLogins", "tags": [ "oauth" ], "responses": { "200": { "description": "list of oauth and saml login clients", "content": { "application/json": { "schema": { "type": "object", "properties": { "oauth": { "type": "array", "items": { "type": "object", "properties": { "type": { "type": "string" }, "display_name": { "type": "string" } }, "required": [ "type" ] } }, "saml": { "type": "string" } }, "required": [ "oauth" ] } } } } } } }, "/oauth/list_connects": { "get": { "summary": "list oauth connects", "operationId": "listOAuthConnects", "tags": [ "oauth" ], "responses": { "200": { "description": "list of oauth connects clients", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "string" } } } } } } } }, "/oauth/get_connect/{client}": { "get": { "summary": "get oauth connect", "operationId": "getOAuthConnect", "tags": [ "oauth" ], "parameters": [ { "name": "client", "description": "client name", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "get", "content": { "application/json": { "schema": { "type": "object", "properties": { "extra_params": { "type": "object" }, "scopes": { "type": "array", "items": { "type": "string" } }, "grant_types": { "type": "array", "items": { "type": "string" } } } } } } } } } }, "/teams/activities": { "post": { "summary": "send update to Microsoft Teams activity", "description": "Respond to a Microsoft Teams activity after a workspace command is run", "operationId": "sendMessageToConversation", "tags": [ "teams" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "conversation_id", "text" ], "properties": { "conversation_id": { "type": "string", "description": "The ID of the Teams conversation/activity" }, "success": { "type": "boolean", "description": "Used for styling the card conditionally", "default": true }, "text": { "type": "string", "description": "The message text to be sent in the Teams card" }, "card_block": { "type": "object", "description": "The card block to be sent in the Teams card" } } } } } }, "responses": { "200": { "description": "Activity processed successfully" } } } }, "/w/{workspace}/resources/create": { "post": { "summary": "create resource", "operationId": "createResource", "x-mcp-tool": true, "tags": [ "resource" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "name": "update_if_exists", "description": "update the resource if it already exists (default false)", "in": "query", "schema": { "type": "boolean" } } ], "requestBody": { "description": "new resource", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateResource" } } } }, "responses": { "201": { "description": "resource created", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/resources/delete/{path}": { "delete": { "summary": "delete resource", "operationId": "deleteResource", "x-mcp-tool": true, "tags": [ "resource" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" } ], "responses": { "200": { "description": "resource deleted", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/resources/delete_bulk": { "delete": { "summary": "delete resources in bulk", "operationId": "deleteResourcesBulk", "tags": [ "resource" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "paths to delete", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "paths": { "type": "array", "items": { "type": "string" } } }, "required": [ "paths" ] } } } }, "responses": { "200": { "description": "deleted paths", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "string" } } } } } } } }, "/w/{workspace}/resources/update/{path}": { "post": { "summary": "update resource", "operationId": "updateResource", "x-mcp-tool": true, "tags": [ "resource" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" } ], "requestBody": { "description": "updated resource", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EditResource" } } } }, "responses": { "200": { "description": "resource updated", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/resources/update_value/{path}": { "post": { "summary": "update resource value", "operationId": "updateResourceValue", "tags": [ "resource" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" } ], "requestBody": { "description": "updated resource", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "value": {} } } } } }, "responses": { "200": { "description": "resource value updated", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/resources/get/{path}": { "get": { "summary": "get resource", "operationId": "getResource", "x-mcp-tool": true, "tags": [ "resource" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" } ], "responses": { "200": { "description": "resource", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Resource" } } } } } } }, "/w/{workspace}/resources/get_value_interpolated/{path}": { "get": { "summary": "get resource interpolated (variables and resources are fully unrolled)", "operationId": "getResourceValueInterpolated", "tags": [ "resource" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" }, { "name": "job_id", "description": "job id", "in": "query", "schema": { "type": "string", "format": "uuid" } }, { "name": "allow_cache", "description": "allow getting a cached value for improved performance", "in": "query", "schema": { "type": "boolean" } } ], "responses": { "200": { "description": "resource value", "content": { "application/json": { "schema": {} } } } } } }, "/w/{workspace}/resources/get_value/{path}": { "get": { "summary": "get resource value", "operationId": "getResourceValue", "tags": [ "resource" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" } ], "responses": { "200": { "description": "resource value", "content": { "application/json": { "schema": {} } } } } } }, "/w/{workspace}/resources/git_commit_hash/{path}": { "get": { "summary": "get git repository latest commit hash", "operationId": "getGitCommitHash", "tags": [ "resource" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" }, { "name": "git_ssh_identity", "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "description": "git commit hash", "content": { "application/json": { "schema": { "type": "object", "properties": { "commit_hash": { "type": "string", "description": "Latest commit hash from git ls-remote" } }, "required": [ "commit_hash" ] } } } } } } }, "/w/{workspace}/resources/exists/{path}": { "get": { "summary": "does resource exists", "operationId": "existsResource", "tags": [ "resource" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" } ], "responses": { "200": { "description": "does resource exists", "content": { "application/json": { "schema": { "type": "boolean" } } } } } } }, "/w/{workspace}/resources/list": { "get": { "summary": "list resources", "operationId": "listResource", "x-mcp-tool": true, "tags": [ "resource" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Page" }, { "$ref": "#/components/parameters/PerPage" }, { "name": "resource_type", "description": "resource_types to list from, separated by ',',", "in": "query", "schema": { "type": "string" } }, { "name": "resource_type_exclude", "description": "resource_types to not list from, separated by ',',", "in": "query", "schema": { "type": "string" } }, { "name": "path_start", "description": "filter resources by path prefix", "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "description": "resource list", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ListableResource" } } } } } } } }, "/w/{workspace}/resources/list_search": { "get": { "summary": "list resources for search", "operationId": "listSearchResource", "tags": [ "resource" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "responses": { "200": { "description": "resource list", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "path": { "type": "string" }, "value": {} }, "required": [ "path", "value" ] } } } } } } } }, "/w/{workspace}/resources/mcp_tools/{path}": { "get": { "summary": "get MCP tools from resource", "operationId": "getMcpTools", "tags": [ "resource" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" } ], "responses": { "200": { "description": "list of MCP tools", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "description": { "type": "string" }, "parameters": { "type": "object" } }, "required": [ "name", "parameters" ] } } } } } } } }, "/w/{workspace}/resources/list_names/{name}": { "get": { "summary": "list resource names", "operationId": "listResourceNames", "tags": [ "resource" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Name" } ], "responses": { "200": { "description": "resource list names", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "path": { "type": "string" } }, "required": [ "name", "path" ] } } } } } } } }, "/w/{workspace}/resources/type/create": { "post": { "summary": "create resource_type", "operationId": "createResourceType", "tags": [ "resource" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "new resource_type", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ResourceType" } } } }, "responses": { "201": { "description": "resource_type created", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/resources/file_resource_type_to_file_ext_map": { "get": { "summary": "get map from resource type to format extension", "operationId": "fileResourceTypeToFileExtMap", "tags": [ "resource" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "responses": { "200": { "description": "map from resource type to file ext", "content": { "application/json": { "schema": {} } } } } } }, "/w/{workspace}/resources/type/delete/{path}": { "delete": { "summary": "delete resource_type", "operationId": "deleteResourceType", "tags": [ "resource" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" } ], "responses": { "200": { "description": "resource_type deleted", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/resources/type/update/{path}": { "post": { "summary": "update resource_type", "operationId": "updateResourceType", "tags": [ "resource" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" } ], "requestBody": { "description": "updated resource_type", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EditResourceType" } } } }, "responses": { "200": { "description": "resource_type updated", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/resources/type/get/{path}": { "get": { "summary": "get resource_type", "operationId": "getResourceType", "tags": [ "resource" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" } ], "responses": { "200": { "description": "resource_type deleted", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ResourceType" } } } } } } }, "/w/{workspace}/resources/type/exists/{path}": { "get": { "summary": "does resource_type exists", "operationId": "existsResourceType", "tags": [ "resource" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" } ], "responses": { "200": { "description": "does resource_type exist", "content": { "application/json": { "schema": { "type": "boolean" } } } } } } }, "/w/{workspace}/resources/type/list": { "get": { "summary": "list resource_types", "operationId": "listResourceType", "x-mcp-tool": true, "tags": [ "resource" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "responses": { "200": { "description": "resource_type list", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ResourceType" } } } } } } } }, "/w/{workspace}/resources/type/listnames": { "get": { "summary": "list resource_types names", "operationId": "listResourceTypeNames", "tags": [ "resource" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "responses": { "200": { "description": "resource_type list", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "string" } } } } } } } }, "/w/{workspace}/npm_proxy/metadata/{package}": { "get": { "summary": "get npm package metadata from private registry", "operationId": "getNpmPackageMetadata", "tags": [ "npm_proxy" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "name": "package", "description": "npm package name", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "package metadata", "content": { "application/json": { "schema": { "type": "object", "properties": { "tags": { "type": "object", "additionalProperties": { "type": "string" } }, "versions": { "type": "array", "items": { "type": "string" } } } } } } } } } }, "/w/{workspace}/npm_proxy/resolve/{package}": { "get": { "summary": "resolve npm package version from private registry", "operationId": "resolveNpmPackageVersion", "tags": [ "npm_proxy" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "name": "package", "description": "npm package name", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "tag", "description": "version tag or reference", "in": "query", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "resolved version", "content": { "application/json": { "schema": { "type": "object", "properties": { "version": { "type": "string", "nullable": true } } } } } } } } }, "/w/{workspace}/npm_proxy/filetree/{package}/{version}": { "get": { "summary": "get npm package file tree from private registry", "operationId": "getNpmPackageFiletree", "tags": [ "npm_proxy" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "name": "package", "description": "npm package name", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "version", "description": "package version", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "package file tree", "content": { "application/json": { "schema": { "type": "object", "properties": { "default": { "type": "string" }, "files": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" } } } } } } } } } } } }, "/w/{workspace}/npm_proxy/file/{package}/{version}/{filepath}": { "get": { "summary": "get specific file from npm package in private registry", "operationId": "getNpmPackageFile", "tags": [ "npm_proxy" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "name": "package", "description": "npm package name", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "version", "description": "package version", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "filepath", "description": "file path within package", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "file content", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/embeddings/query_resource_types": { "get": { "summary": "query resource types by similarity", "operationId": "queryResourceTypes", "tags": [ "resource" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "name": "text", "description": "query text", "in": "query", "required": true, "schema": { "type": "string" } }, { "name": "limit", "description": "query limit", "in": "query", "required": false, "schema": { "type": "number" } } ], "responses": { "200": { "description": "resource type details", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "score": { "type": "number" }, "schema": {} }, "required": [ "name", "score" ] } } } } } } } }, "/integrations/hub/list": { "get": { "summary": "list hub integrations", "operationId": "listHubIntegrations", "tags": [ "integration" ], "parameters": [ { "name": "kind", "description": "query integrations kind", "in": "query", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "integrations details", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" } }, "required": [ "name" ] } } } } } } } }, "/flows/hub/list": { "get": { "summary": "list all hub flows", "operationId": "listHubFlows", "tags": [ "flow" ], "responses": { "200": { "description": "hub flows list", "content": { "application/json": { "schema": { "type": "object", "properties": { "flows": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "number" }, "flow_id": { "type": "number" }, "summary": { "type": "string" }, "apps": { "type": "array", "items": { "type": "string" } }, "approved": { "type": "boolean" }, "votes": { "type": "number" } }, "required": [ "id", "flow_id", "summary", "apps", "approved", "votes" ] } } } } } } } } } }, "/flows/hub/get/{id}": { "get": { "summary": "get hub flow by id", "operationId": "getHubFlowById", "tags": [ "flow" ], "parameters": [ { "$ref": "#/components/parameters/PathId" } ], "responses": { "200": { "description": "flow", "content": { "application/json": { "schema": { "type": "object", "properties": { "flow": { "$ref": "#/components/schemas/OpenFlow" } } } } } } } } }, "/apps/hub/list": { "get": { "summary": "list all hub apps", "operationId": "listHubApps", "tags": [ "app" ], "responses": { "200": { "description": "hub apps list", "content": { "application/json": { "schema": { "type": "object", "properties": { "apps": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "number" }, "app_id": { "type": "number" }, "summary": { "type": "string" }, "apps": { "type": "array", "items": { "type": "string" } }, "approved": { "type": "boolean" }, "votes": { "type": "number" } }, "required": [ "id", "app_id", "summary", "apps", "approved", "votes" ] } } } } } } } } } }, "/apps/hub/get/{id}": { "get": { "summary": "get hub app by id", "operationId": "getHubAppById", "tags": [ "app" ], "parameters": [ { "$ref": "#/components/parameters/PathId" } ], "responses": { "200": { "description": "app", "content": { "application/json": { "schema": { "type": "object", "properties": { "app": { "type": "object", "properties": { "summary": { "type": "string" }, "value": {} }, "required": [ "summary", "value" ] } }, "required": [ "app" ] } } } } } } }, "/apps/hub/get_raw/{id}": { "get": { "summary": "get hub raw app by id", "operationId": "getHubRawAppById", "tags": [ "app" ], "parameters": [ { "$ref": "#/components/parameters/PathId" } ], "responses": { "200": { "description": "raw app", "content": { "application/json": { "schema": { "type": "object", "properties": { "app": { "type": "object", "properties": { "summary": { "type": "string" }, "value": {} }, "required": [ "summary", "value" ] } }, "required": [ "app" ] } } } } } } }, "/apps_u/public_app_by_custom_path/{custom_path}": { "get": { "summary": "get public app by custom path", "operationId": "getPublicAppByCustomPath", "tags": [ "app" ], "parameters": [ { "$ref": "#/components/parameters/CustomPath" } ], "responses": { "200": { "description": "app details", "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/AppWithLastVersion" }, { "type": "object", "properties": { "workspace_id": { "type": "string" } } } ] } } } } } } }, "/scripts/hub/get/{path}": { "get": { "summary": "get hub script content by path", "operationId": "getHubScriptContentByPath", "tags": [ "script" ], "parameters": [ { "$ref": "#/components/parameters/ScriptPath" } ], "responses": { "200": { "description": "script details", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/scripts/hub/get_full/{path}": { "get": { "summary": "get full hub script by path", "operationId": "getHubScriptByPath", "tags": [ "script" ], "parameters": [ { "$ref": "#/components/parameters/ScriptPath" } ], "responses": { "200": { "description": "script details", "content": { "application/json": { "schema": { "type": "object", "properties": { "content": { "type": "string" }, "lockfile": { "type": "string" }, "schema": {}, "language": { "type": "string" }, "summary": { "type": "string" } }, "required": [ "content", "language" ] } } } } } } }, "/scripts/hub/pick/{path}": { "get": { "summary": "record hub script pick", "operationId": "pickHubScriptByPath", "tags": [ "script" ], "parameters": [ { "$ref": "#/components/parameters/ScriptPath" } ], "responses": { "200": { "description": "script pick recorded", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean" } }, "required": [ "success" ] } } } } } } }, "/scripts/hub/top": { "get": { "summary": "get top hub scripts", "operationId": "getTopHubScripts", "tags": [ "script" ], "parameters": [ { "name": "limit", "description": "query limit", "in": "query", "required": false, "schema": { "type": "number" } }, { "name": "app", "description": "query scripts app", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "kind", "description": "query scripts kind", "in": "query", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "hub scripts list", "content": { "application/json": { "schema": { "type": "object", "properties": { "asks": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "number" }, "ask_id": { "type": "number" }, "summary": { "type": "string" }, "app": { "type": "string" }, "version_id": { "type": "number" }, "kind": { "$ref": "#/components/schemas/HubScriptKind" }, "votes": { "type": "number" }, "views": { "type": "number" } }, "required": [ "id", "ask_id", "summary", "app", "version_id", "kind", "views", "votes" ] } } } } } } } } } }, "/embeddings/query_hub_scripts": { "get": { "summary": "query hub scripts by similarity", "operationId": "queryHubScripts", "tags": [ "script" ], "parameters": [ { "name": "text", "description": "query text", "in": "query", "required": true, "schema": { "type": "string" } }, { "name": "kind", "description": "query scripts kind", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "limit", "description": "query limit", "in": "query", "required": false, "schema": { "type": "number" } }, { "name": "app", "description": "query scripts app", "in": "query", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "script details", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "ask_id": { "type": "number" }, "id": { "type": "number" }, "version_id": { "type": "number" }, "summary": { "type": "string" }, "app": { "type": "string" }, "kind": { "$ref": "#/components/schemas/HubScriptKind" }, "score": { "type": "number" } }, "required": [ "ask_id", "id", "version_id", "summary", "app", "kind", "score" ] } } } } } } } }, "/w/{workspace}/scripts/list_search": { "get": { "summary": "list scripts for search", "operationId": "listSearchScript", "tags": [ "script" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "responses": { "200": { "description": "script list", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "path": { "type": "string" }, "content": { "type": "string" } }, "required": [ "path", "content" ] } } } } } } } }, "/w/{workspace}/scripts/list": { "get": { "summary": "list all scripts", "operationId": "listScripts", "x-mcp-tool": true, "tags": [ "script" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Page" }, { "$ref": "#/components/parameters/PerPage" }, { "$ref": "#/components/parameters/OrderDesc" }, { "$ref": "#/components/parameters/CreatedBy" }, { "name": "path_start", "description": "mask to filter matching starting path", "in": "query", "schema": { "type": "string" } }, { "name": "path_exact", "description": "mask to filter exact matching path", "in": "query", "schema": { "type": "string" } }, { "name": "first_parent_hash", "description": "mask to filter scripts whom first direct parent has exact hash", "in": "query", "schema": { "type": "string" } }, { "name": "last_parent_hash", "description": "mask to filter scripts whom last parent in the chain has exact hash.\nBeware that each script stores only a limited number of parents. Hence\nthe last parent hash for a script is not necessarily its top-most parent.\nTo find the top-most parent you will have to jump from last to last hash\n until finding the parent\n", "in": "query", "schema": { "type": "string" } }, { "name": "parent_hash", "description": "is the hash present in the array of stored parent hashes for this script.\nThe same warning applies than for last_parent_hash. A script only store a\nlimited number of direct parent\n", "in": "query", "schema": { "type": "string" } }, { "name": "show_archived", "description": "(default false)\nshow only the archived files.\nwhen multiple archived hash share the same path, only the ones with the latest create_at\nare\ned.\n", "in": "query", "schema": { "type": "boolean" } }, { "name": "include_without_main", "description": "(default false)\ninclude scripts without an exported main function\n", "in": "query", "schema": { "type": "boolean" } }, { "name": "include_draft_only", "description": "(default false)\ninclude scripts that have no deployed version\n", "in": "query", "schema": { "type": "boolean" } }, { "name": "is_template", "description": "(default regardless)\nif true show only the templates\nif false show only the non templates\nif not defined, show all regardless of if the script is a template\n", "in": "query", "schema": { "type": "boolean" } }, { "name": "kinds", "description": "(default regardless)\nscript kinds to filter, split by comma\n", "in": "query", "schema": { "type": "string" } }, { "name": "starred_only", "description": "(default false)\nshow only the starred items\n", "in": "query", "schema": { "type": "boolean" } }, { "name": "with_deployment_msg", "description": "(default false)\ninclude deployment message\n", "in": "query", "schema": { "type": "boolean" } }, { "name": "languages", "in": "query", "description": "Filter to only include scripts written in the given languages.\nAccepts multiple values as a comma-separated list.\n", "schema": { "type": "string" } }, { "name": "without_description", "in": "query", "description": "(default false)\nIf true, the description field will be omitted from the response.\n", "schema": { "type": "boolean" } }, { "name": "dedicated_worker", "in": "query", "description": "(default regardless)\nIf true, show only scripts with dedicated_worker enabled.\nIf false, show only scripts with dedicated_worker disabled.\n", "schema": { "type": "boolean" } } ], "responses": { "200": { "description": "All scripts", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Script" } } } } } } } }, "/w/{workspace}/scripts/list_paths": { "get": { "summary": "list all scripts paths", "operationId": "listScriptPaths", "tags": [ "script" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "responses": { "200": { "description": "list of script paths", "content": { "text/plain": { "schema": { "type": "array", "items": { "type": "string" } } } } } } } }, "/w/{workspace}/drafts/create": { "post": { "summary": "create draft", "operationId": "createDraft", "tags": [ "draft" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "path": { "type": "string" }, "typ": { "type": "string", "enum": [ "flow", "script", "app" ] }, "value": {} }, "required": [ "path", "typ", "enum" ] } } } }, "responses": { "201": { "description": "draft created", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/drafts/delete/{kind}/{path}": { "delete": { "summary": "delete draft", "operationId": "deleteDraft", "tags": [ "draft" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "name": "kind", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "script", "flow", "app" ] } }, { "$ref": "#/components/parameters/ScriptPath" } ], "responses": { "200": { "description": "draft deleted", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/scripts/create": { "post": { "summary": "create script", "operationId": "createScript", "x-mcp-tool": true, "x-mcp-instructions": "To create a script, specify the path (e.g., 'f/my_folder/my_script'), the content (source code), and the language. For TypeScript, use 'bun' unless deno-specific APIs are needed.", "x-mcp-tool-include-fields": [ "path", "content", "language", "summary", "description", "kind", "tag", "deployment_message" ], "tags": [ "script" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "Partially filled script", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NewScript" } } } }, "responses": { "201": { "description": "script created", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/scripts/toggle_workspace_error_handler/p/{path}": { "post": { "summary": "Toggle ON and OFF the workspace error handler for a given script", "operationId": "toggleWorkspaceErrorHandlerForScript", "tags": [ "script" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/ScriptPath" } ], "requestBody": { "description": "Workspace error handler enabled", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "muted": { "type": "boolean" } } } } } }, "responses": { "200": { "description": "error handler toggled", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/workers/custom_tags": { "get": { "summary": "get all instance custom tags (tags are used to dispatch jobs to different worker groups)", "operationId": "getCustomTags", "tags": [ "worker" ], "parameters": [ { "name": "show_workspace_restriction", "in": "query", "schema": { "type": "boolean" }, "required": false } ], "responses": { "200": { "description": "list of custom tags", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "string" } } } } } } } }, "/w/{workspace}/workers/custom_tags": { "get": { "summary": "get custom tags available for this workspace", "operationId": "getCustomTagsForWorkspace", "tags": [ "worker" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "responses": { "200": { "description": "list of custom tags for workspace", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "string" } } } } } } } }, "/workers/get_default_tags": { "get": { "summary": "get all instance default tags", "operationId": "geDefaultTags", "tags": [ "worker" ], "responses": { "200": { "description": "list of default tags", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "string" } } } } } } } }, "/workers/is_default_tags_per_workspace": { "get": { "summary": "is default tags per workspace", "operationId": "isDefaultTagsPerWorkspace", "tags": [ "worker" ], "responses": { "200": { "description": "is the default tags per workspace", "content": { "application/json": { "schema": { "type": "boolean" } } } } } } }, "/w/{workspace}/workspace_dependencies/create": { "post": { "summary": "create workspace dependencies", "operationId": "createWorkspaceDependencies", "tags": [ "workspace_dependencies" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "New workspace dependencies", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NewWorkspaceDependencies" } } } }, "responses": { "201": { "description": "workspace dependencies created", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/workspace_dependencies/archive/{language}": { "post": { "summary": "archive workspace dependencies (require admin)", "operationId": "archiveWorkspaceDependencies", "tags": [ "workspace_dependencies" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "name": "language", "in": "path", "required": true, "schema": { "$ref": "#/components/schemas/ScriptLang" } }, { "name": "name", "in": "query", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "result", "content": { "application/json": { "schema": {} } } } } } }, "/w/{workspace}/workspace_dependencies/delete/{language}": { "post": { "summary": "delete workspace dependencies (require admin)", "operationId": "deleteWorkspaceDependencies", "tags": [ "workspace_dependencies" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "name": "language", "in": "path", "required": true, "schema": { "$ref": "#/components/schemas/ScriptLang" } }, { "name": "name", "in": "query", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "result", "content": { "application/json": { "schema": {} } } } } } }, "/w/{workspace}/workspace_dependencies/list": { "get": { "summary": "list all workspace dependencies", "operationId": "listWorkspaceDependencies", "tags": [ "workspace_dependencies" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "responses": { "200": { "description": "All workspace dependencies", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/WorkspaceDependencies" } } } } } } } }, "/w/{workspace}/workspace_dependencies/get_latest/{language}": { "get": { "summary": "get latest workspace dependencies by language and name", "operationId": "getLatestWorkspaceDependencies", "tags": [ "workspace_dependencies" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "name": "language", "in": "path", "required": true, "schema": { "$ref": "#/components/schemas/ScriptLang" } }, { "name": "name", "in": "query", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "Latest workspace dependencies", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WorkspaceDependencies" } } } } } } }, "/w/{workspace}/scripts/archive/p/{path}": { "post": { "summary": "archive script by path", "operationId": "archiveScriptByPath", "tags": [ "script" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/ScriptPath" } ], "responses": { "200": { "description": "script archived", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/scripts/archive/h/{hash}": { "post": { "summary": "archive script by hash", "operationId": "archiveScriptByHash", "tags": [ "script" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/ScriptHash" } ], "responses": { "200": { "description": "script details", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Script" } } } } } } }, "/w/{workspace}/scripts/delete/h/{hash}": { "post": { "summary": "delete script by hash (erase content but keep hash, require admin)", "operationId": "deleteScriptByHash", "x-mcp-tool": true, "tags": [ "script" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/ScriptHash" } ], "responses": { "200": { "description": "script details", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Script" } } } } } } }, "/w/{workspace}/scripts/delete/p/{path}": { "post": { "summary": "delete script at a given path (require admin)", "operationId": "deleteScriptByPath", "x-mcp-tool": true, "tags": [ "script" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/ScriptPath" }, { "name": "keep_captures", "description": "keep captures", "in": "query", "schema": { "type": "boolean" } } ], "responses": { "200": { "description": "script path", "content": { "application/json": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/scripts/delete_bulk": { "delete": { "summary": "delete scripts in bulk", "operationId": "deleteScriptsBulk", "tags": [ "script" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "paths to delete", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "paths": { "type": "array", "items": { "type": "string" } } }, "required": [ "paths" ] } } } }, "responses": { "200": { "description": "deleted paths", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "string" } } } } } } } }, "/w/{workspace}/scripts/get/p/{path}": { "get": { "summary": "get script by path", "operationId": "getScriptByPath", "x-mcp-tool": true, "tags": [ "script" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/ScriptPath" }, { "name": "with_starred_info", "in": "query", "schema": { "type": "boolean" } } ], "responses": { "200": { "description": "script details", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Script" } } } } } } }, "/w/{workspace}/scripts/get_triggers_count/{path}": { "get": { "summary": "get triggers count of script", "operationId": "getTriggersCountOfScript", "tags": [ "script" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/ScriptPath" } ], "responses": { "200": { "description": "triggers count", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TriggersCount" } } } } } } }, "/w/{workspace}/scripts/list_tokens/{path}": { "get": { "summary": "get tokens with script scope", "operationId": "listTokensOfScript", "tags": [ "script" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/ScriptPath" } ], "responses": { "200": { "description": "tokens list", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/TruncatedToken" } } } } } } } }, "/w/{workspace}/scripts/get/draft/{path}": { "get": { "summary": "get script by path with draft", "operationId": "getScriptByPathWithDraft", "tags": [ "script" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/ScriptPath" } ], "responses": { "200": { "description": "script details", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NewScriptWithDraft" } } } } } } }, "/w/{workspace}/scripts/history/p/{path}": { "get": { "summary": "get history of a script by path", "operationId": "getScriptHistoryByPath", "tags": [ "script" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/ScriptPath" } ], "responses": { "200": { "description": "script history", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ScriptHistory" } } } } } } } }, "/w/{workspace}/scripts/list_paths_from_workspace_runnable/{path}": { "get": { "summary": "list script paths using provided script as a relative import", "operationId": "listScriptPathsFromWorkspaceRunnable", "tags": [ "script" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/ScriptPath" } ], "responses": { "200": { "description": "list of script paths", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "string" } } } } } } } }, "/w/{workspace}/scripts/get_latest_version/{path}": { "get": { "summary": "get scripts's latest version (hash)", "operationId": "getScriptLatestVersion", "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/ScriptPath" } ], "tags": [ "script" ], "responses": { "200": { "description": "Script version/hash", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ScriptHistory" } } } } } } }, "/w/{workspace}/scripts/history_update/h/{hash}/p/{path}": { "post": { "summary": "update history of a script", "operationId": "updateScriptHistory", "tags": [ "script" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/ScriptHash" }, { "$ref": "#/components/parameters/ScriptPath" } ], "requestBody": { "description": "Script deployment message", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "deployment_msg": { "type": "string" } } } } } }, "responses": { "200": { "description": "success", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/scripts/raw/p/{path}": { "get": { "summary": "raw script by path", "operationId": "rawScriptByPath", "tags": [ "script" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/ScriptPath" } ], "responses": { "200": { "description": "script content", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/scripts_u/tokened_raw/{workspace}/{token}/{path}": { "get": { "summary": "raw script by path with a token (mostly used by lsp to be used with import maps to resolve scripts)", "operationId": "rawScriptByPathTokened", "tags": [ "script" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Token" }, { "$ref": "#/components/parameters/ScriptPath" } ], "responses": { "200": { "description": "script content", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/scripts/exists/p/{path}": { "get": { "summary": "exists script by path", "operationId": "existsScriptByPath", "tags": [ "script" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/ScriptPath" } ], "responses": { "200": { "description": "does it exists", "content": { "application/json": { "schema": { "type": "boolean" } } } } } } }, "/w/{workspace}/scripts/get/h/{hash}": { "get": { "summary": "get script by hash", "operationId": "getScriptByHash", "tags": [ "script" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/ScriptHash" }, { "name": "with_starred_info", "in": "query", "schema": { "type": "boolean" } }, { "name": "authed", "in": "query", "schema": { "type": "boolean" } } ], "responses": { "200": { "description": "script details", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Script" } } } } } } }, "/w/{workspace}/scripts/raw/h/{path}": { "get": { "summary": "raw script by hash", "operationId": "rawScriptByHash", "tags": [ "script" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/ScriptPath" } ], "responses": { "200": { "description": "script content", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/scripts/deployment_status/h/{hash}": { "get": { "summary": "get script deployment status", "operationId": "getScriptDeploymentStatus", "tags": [ "script" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/ScriptHash" } ], "responses": { "200": { "description": "script details", "content": { "application/json": { "schema": { "type": "object", "properties": { "lock": { "type": "string" }, "lock_error_logs": { "type": "string" }, "job_id": { "type": "string", "format": "uuid" } } } } } } } } }, "/w/{workspace}/jobs/list_selected_job_groups": { "post": { "summary": "list selected jobs script/flow schemas grouped by (kind, path)", "operationId": "listSelectedJobGroups", "tags": [ "job" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "script args", "required": true, "content": { "application/json": { "schema": { "type": "array", "items": { "type": "string", "format": "uuid" } } } } }, "responses": { "200": { "description": "result", "content": { "text/plain": { "schema": { "type": "array", "items": { "type": "object", "properties": { "kind": { "type": "string", "enum": [ "script", "flow" ] }, "script_path": { "type": "string" }, "latest_schema": { "type": "object" }, "schemas": { "type": "array", "items": { "type": "object", "properties": { "schema": { "type": "object" }, "script_hash": { "type": "string" }, "job_ids": { "type": "array", "items": { "type": "string" } } }, "required": [ "schema", "script_hash", "job_ids" ] } } }, "required": [ "kind", "script_path", "latest_schema", "schemas" ] } } } } } } } }, "/w/{workspace}/jobs/run/p/{path}": { "post": { "summary": "run script by path", "operationId": "runScriptByPath", "x-mcp-tool": true, "x-mcp-instructions": "You should first use getScriptByPath to retrieve the script's schema and understand what arguments are expected.", "x-mcp-tool-include-query-params": [], "tags": [ "job" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/ScriptPath" }, { "name": "scheduled_for", "description": "when to schedule this job (leave empty for immediate run)", "in": "query", "schema": { "type": "string", "format": "date-time" } }, { "name": "scheduled_in_secs", "description": "schedule the script to execute in the number of seconds starting now", "in": "query", "schema": { "type": "integer" } }, { "name": "skip_preprocessor", "description": "skip the preprocessor", "in": "query", "schema": { "type": "boolean" } }, { "$ref": "#/components/parameters/ParentJob" }, { "$ref": "#/components/parameters/WorkerTag" }, { "$ref": "#/components/parameters/CacheTtl" }, { "$ref": "#/components/parameters/NewJobId" }, { "name": "invisible_to_owner", "description": "make the run invisible to the the script owner (default false)", "in": "query", "schema": { "type": "boolean" } } ], "requestBody": { "description": "script args", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ScriptArgs" } } } }, "responses": { "201": { "description": "job created", "content": { "text/plain": { "schema": { "type": "string", "format": "uuid" } } } } } } }, "/w/{workspace}/jobs/run_wait_result/p/{path}": { "post": { "summary": "run script by path", "operationId": "runWaitResultScriptByPath", "tags": [ "job" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/ScriptPath" }, { "$ref": "#/components/parameters/ParentJob" }, { "$ref": "#/components/parameters/WorkerTag" }, { "$ref": "#/components/parameters/CacheTtl" }, { "$ref": "#/components/parameters/NewJobId" }, { "$ref": "#/components/parameters/IncludeHeader" }, { "$ref": "#/components/parameters/QueueLimit" }, { "$ref": "#/components/parameters/SkipPreprocessor" } ], "requestBody": { "description": "script args", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ScriptArgs" } } } }, "responses": { "200": { "description": "job result", "content": { "application/json": { "schema": {} } } } } }, "get": { "summary": "run script by path with get", "operationId": "runWaitResultScriptByPathGet", "tags": [ "job" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/ScriptPath" }, { "$ref": "#/components/parameters/ParentJob" }, { "$ref": "#/components/parameters/WorkerTag" }, { "$ref": "#/components/parameters/CacheTtl" }, { "$ref": "#/components/parameters/NewJobId" }, { "$ref": "#/components/parameters/IncludeHeader" }, { "$ref": "#/components/parameters/QueueLimit" }, { "$ref": "#/components/parameters/Payload" }, { "$ref": "#/components/parameters/SkipPreprocessor" } ], "responses": { "200": { "description": "job result", "content": { "application/json": { "schema": {} } } } } } }, "/w/{workspace}/jobs/run_wait_result/f/{path}": { "post": { "summary": "run flow by path and wait until completion", "operationId": "runWaitResultFlowByPath", "tags": [ "job" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/ScriptPath" }, { "$ref": "#/components/parameters/IncludeHeader" }, { "$ref": "#/components/parameters/QueueLimit" }, { "$ref": "#/components/parameters/NewJobId" }, { "$ref": "#/components/parameters/SkipPreprocessor" }, { "name": "memory_id", "description": "memory ID for chat-enabled flows", "in": "query", "schema": { "type": "string", "format": "uuid" } } ], "requestBody": { "description": "script args", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ScriptArgs" } } } }, "responses": { "200": { "description": "job result", "content": { "application/json": { "schema": {} } } } } } }, "/w/{workspace}/jobs/run_wait_result/fv/{version}": { "post": { "summary": "run flow by version and wait until completion", "operationId": "runWaitResultFlowByVersion", "tags": [ "job" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "name": "version", "description": "flow version ID", "in": "path", "required": true, "schema": { "type": "integer", "format": "int64" } }, { "$ref": "#/components/parameters/IncludeHeader" }, { "$ref": "#/components/parameters/QueueLimit" }, { "$ref": "#/components/parameters/NewJobId" }, { "$ref": "#/components/parameters/SkipPreprocessor" }, { "name": "memory_id", "description": "memory ID for chat-enabled flows", "in": "query", "schema": { "type": "string", "format": "uuid" } } ], "requestBody": { "description": "script args", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ScriptArgs" } } } }, "responses": { "200": { "description": "job result", "content": { "application/json": { "schema": {} } } } } }, "get": { "summary": "run flow by version with GET and wait until completion", "operationId": "runWaitResultFlowByVersionGet", "tags": [ "job" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "name": "version", "description": "flow version ID", "in": "path", "required": true, "schema": { "type": "integer", "format": "int64" } }, { "$ref": "#/components/parameters/IncludeHeader" }, { "$ref": "#/components/parameters/QueueLimit" }, { "$ref": "#/components/parameters/Payload" }, { "$ref": "#/components/parameters/NewJobId" }, { "$ref": "#/components/parameters/SkipPreprocessor" }, { "name": "memory_id", "description": "memory ID for chat-enabled flows", "in": "query", "schema": { "type": "string", "format": "uuid" } } ], "responses": { "200": { "description": "job result", "content": { "application/json": { "schema": {} } } } } } }, "/w/{workspace}/jobs/run_and_stream/f/{path}": { "post": { "summary": "run flow by path and stream updates via SSE", "operationId": "runAndStreamFlowByPath", "tags": [ "job" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/ScriptPath" }, { "$ref": "#/components/parameters/IncludeHeader" }, { "$ref": "#/components/parameters/QueueLimit" }, { "$ref": "#/components/parameters/NewJobId" }, { "$ref": "#/components/parameters/SkipPreprocessor" }, { "name": "memory_id", "description": "memory ID for chat-enabled flows", "in": "query", "schema": { "type": "string", "format": "uuid" } }, { "name": "poll_delay_ms", "description": "delay between polling for job updates in milliseconds", "in": "query", "schema": { "type": "integer", "format": "int64" } } ], "requestBody": { "description": "flow args", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ScriptArgs" } } } }, "responses": { "200": { "description": "server-sent events stream of job updates", "content": { "text/event-stream": { "schema": { "type": "string" } } } } } }, "get": { "summary": "run flow by path with GET and stream updates via SSE", "operationId": "runAndStreamFlowByPathGet", "tags": [ "job" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/ScriptPath" }, { "$ref": "#/components/parameters/IncludeHeader" }, { "$ref": "#/components/parameters/QueueLimit" }, { "$ref": "#/components/parameters/Payload" }, { "$ref": "#/components/parameters/NewJobId" }, { "$ref": "#/components/parameters/SkipPreprocessor" }, { "name": "memory_id", "description": "memory ID for chat-enabled flows", "in": "query", "schema": { "type": "string", "format": "uuid" } }, { "name": "poll_delay_ms", "description": "delay between polling for job updates in milliseconds", "in": "query", "schema": { "type": "integer", "format": "int64" } } ], "responses": { "200": { "description": "server-sent events stream of job updates", "content": { "text/event-stream": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/jobs/run_and_stream/fv/{version}": { "post": { "summary": "run flow by version and stream updates via SSE", "operationId": "runAndStreamFlowByVersion", "tags": [ "job" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "name": "version", "description": "flow version ID", "in": "path", "required": true, "schema": { "type": "integer", "format": "int64" } }, { "$ref": "#/components/parameters/IncludeHeader" }, { "$ref": "#/components/parameters/QueueLimit" }, { "$ref": "#/components/parameters/NewJobId" }, { "$ref": "#/components/parameters/SkipPreprocessor" }, { "name": "memory_id", "description": "memory ID for chat-enabled flows", "in": "query", "schema": { "type": "string", "format": "uuid" } }, { "name": "poll_delay_ms", "description": "delay between polling for job updates in milliseconds", "in": "query", "schema": { "type": "integer", "format": "int64" } } ], "requestBody": { "description": "flow args", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ScriptArgs" } } } }, "responses": { "200": { "description": "server-sent events stream of job updates", "content": { "text/event-stream": { "schema": { "type": "string" } } } } } }, "get": { "summary": "run flow by version with GET and stream updates via SSE", "operationId": "runAndStreamFlowByVersionGet", "tags": [ "job" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "name": "version", "description": "flow version ID", "in": "path", "required": true, "schema": { "type": "integer", "format": "int64" } }, { "$ref": "#/components/parameters/IncludeHeader" }, { "$ref": "#/components/parameters/QueueLimit" }, { "$ref": "#/components/parameters/Payload" }, { "$ref": "#/components/parameters/NewJobId" }, { "$ref": "#/components/parameters/SkipPreprocessor" }, { "name": "memory_id", "description": "memory ID for chat-enabled flows", "in": "query", "schema": { "type": "string", "format": "uuid" } }, { "name": "poll_delay_ms", "description": "delay between polling for job updates in milliseconds", "in": "query", "schema": { "type": "integer", "format": "int64" } } ], "responses": { "200": { "description": "server-sent events stream of job updates", "content": { "text/event-stream": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/jobs/run_and_stream/p/{path}": { "post": { "summary": "run script by path and stream updates via SSE", "operationId": "runAndStreamScriptByPath", "tags": [ "job" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/ScriptPath" }, { "$ref": "#/components/parameters/ParentJob" }, { "$ref": "#/components/parameters/WorkerTag" }, { "$ref": "#/components/parameters/CacheTtl" }, { "$ref": "#/components/parameters/NewJobId" }, { "$ref": "#/components/parameters/IncludeHeader" }, { "$ref": "#/components/parameters/QueueLimit" }, { "$ref": "#/components/parameters/SkipPreprocessor" }, { "name": "poll_delay_ms", "description": "delay between polling for job updates in milliseconds", "in": "query", "schema": { "type": "integer", "format": "int64" } } ], "requestBody": { "description": "script args", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ScriptArgs" } } } }, "responses": { "200": { "description": "server-sent events stream of job updates", "content": { "text/event-stream": { "schema": { "type": "string" } } } } } }, "get": { "summary": "run script by path with GET and stream updates via SSE", "operationId": "runAndStreamScriptByPathGet", "tags": [ "job" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/ScriptPath" }, { "$ref": "#/components/parameters/ParentJob" }, { "$ref": "#/components/parameters/WorkerTag" }, { "$ref": "#/components/parameters/CacheTtl" }, { "$ref": "#/components/parameters/NewJobId" }, { "$ref": "#/components/parameters/IncludeHeader" }, { "$ref": "#/components/parameters/QueueLimit" }, { "$ref": "#/components/parameters/Payload" }, { "$ref": "#/components/parameters/SkipPreprocessor" }, { "name": "poll_delay_ms", "description": "delay between polling for job updates in milliseconds", "in": "query", "schema": { "type": "integer", "format": "int64" } } ], "responses": { "200": { "description": "server-sent events stream of job updates", "content": { "text/event-stream": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/jobs/run_and_stream/h/{hash}": { "post": { "summary": "run script by hash and stream updates via SSE", "operationId": "runAndStreamScriptByHash", "tags": [ "job" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "name": "hash", "in": "path", "required": true, "schema": { "type": "string" } }, { "$ref": "#/components/parameters/ParentJob" }, { "$ref": "#/components/parameters/WorkerTag" }, { "$ref": "#/components/parameters/CacheTtl" }, { "$ref": "#/components/parameters/NewJobId" }, { "$ref": "#/components/parameters/IncludeHeader" }, { "$ref": "#/components/parameters/QueueLimit" }, { "$ref": "#/components/parameters/SkipPreprocessor" }, { "name": "poll_delay_ms", "description": "delay between polling for job updates in milliseconds", "in": "query", "schema": { "type": "integer", "format": "int64" } } ], "requestBody": { "description": "script args", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ScriptArgs" } } } }, "responses": { "200": { "description": "server-sent events stream of job updates", "content": { "text/event-stream": { "schema": { "type": "string" } } } } } }, "get": { "summary": "run script by hash with GET and stream updates via SSE", "operationId": "runAndStreamScriptByHashGet", "tags": [ "job" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "name": "hash", "in": "path", "required": true, "schema": { "type": "string" } }, { "$ref": "#/components/parameters/ParentJob" }, { "$ref": "#/components/parameters/WorkerTag" }, { "$ref": "#/components/parameters/CacheTtl" }, { "$ref": "#/components/parameters/NewJobId" }, { "$ref": "#/components/parameters/IncludeHeader" }, { "$ref": "#/components/parameters/QueueLimit" }, { "$ref": "#/components/parameters/Payload" }, { "$ref": "#/components/parameters/SkipPreprocessor" }, { "name": "poll_delay_ms", "description": "delay between polling for job updates in milliseconds", "in": "query", "schema": { "type": "integer", "format": "int64" } } ], "responses": { "200": { "description": "server-sent events stream of job updates", "content": { "text/event-stream": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/jobs/result_by_id/{flow_job_id}/{node_id}": { "get": { "summary": "get job result by id", "operationId": "resultById", "tags": [ "job" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "name": "flow_job_id", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "node_id", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "job result", "content": { "application/json": { "schema": {} } } } } } }, "/w/{workspace}/flows/list_paths": { "get": { "summary": "list all flow paths", "operationId": "listFlowPaths", "tags": [ "flow" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "responses": { "200": { "description": "list of flow paths", "content": { "text/plain": { "schema": { "type": "array", "items": { "type": "string" } } } } } } } }, "/w/{workspace}/flows/list_search": { "get": { "summary": "list flows for search", "operationId": "listSearchFlow", "tags": [ "flow" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "responses": { "200": { "description": "flow list", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "path": { "type": "string" }, "value": {} }, "required": [ "path", "value" ] } } } } } } } }, "/w/{workspace}/flows/list": { "get": { "summary": "list all flows", "operationId": "listFlows", "x-mcp-tool": true, "tags": [ "flow" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Page" }, { "$ref": "#/components/parameters/PerPage" }, { "$ref": "#/components/parameters/OrderDesc" }, { "$ref": "#/components/parameters/CreatedBy" }, { "name": "path_start", "description": "mask to filter matching starting path", "in": "query", "schema": { "type": "string" } }, { "name": "path_exact", "description": "mask to filter exact matching path", "in": "query", "schema": { "type": "string" } }, { "name": "show_archived", "description": "(default false)\nshow only the archived files.\nwhen multiple archived hash share the same path, only the ones with the latest create_at\nare displayed.\n", "in": "query", "schema": { "type": "boolean" } }, { "name": "starred_only", "description": "(default false)\nshow only the starred items\n", "in": "query", "schema": { "type": "boolean" } }, { "name": "include_draft_only", "description": "(default false)\ninclude items that have no deployed version\n", "in": "query", "schema": { "type": "boolean" } }, { "name": "with_deployment_msg", "description": "(default false)\ninclude deployment message\n", "in": "query", "schema": { "type": "boolean" } }, { "name": "without_description", "in": "query", "description": "(default false)\nIf true, the description field will be omitted from the response.\n", "schema": { "type": "boolean" } }, { "name": "dedicated_worker", "in": "query", "description": "(default regardless)\nIf true, show only flows with dedicated_worker enabled.\nIf false, show only flows with dedicated_worker disabled.\n", "schema": { "type": "boolean" } } ], "responses": { "200": { "description": "All flow", "content": { "application/json": { "schema": { "type": "array", "items": { "allOf": [ { "$ref": "#/components/schemas/Flow" }, { "type": "object", "properties": { "has_draft": { "type": "boolean" }, "draft_only": { "type": "boolean" } } } ] } } } } } } } }, "/w/{workspace}/flows/history/p/{path}": { "get": { "summary": "get flow history by path", "operationId": "getFlowHistory", "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/ScriptPath" } ], "tags": [ "flow" ], "responses": { "200": { "description": "Flow history", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/FlowVersion" } } } } } } } }, "/w/{workspace}/flows/get_latest_version/{path}": { "get": { "summary": "get flow's latest version", "operationId": "getFlowLatestVersion", "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/ScriptPath" } ], "tags": [ "flow" ], "responses": { "200": { "description": "Flow version", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FlowVersion" } } } } } } }, "/w/{workspace}/flows/list_paths_from_workspace_runnable/{runnable_kind}/{path}": { "get": { "summary": "list flow paths from workspace runnable", "operationId": "listFlowPathsFromWorkspaceRunnable", "tags": [ "flow" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/RunnableKind" }, { "$ref": "#/components/parameters/ScriptPath" }, { "name": "match_path_start", "in": "query", "schema": { "type": "boolean" } } ], "responses": { "200": { "description": "list of flow paths", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "string" } } } } } } } }, "/w/{workspace}/flows/get/v/{version}": { "get": { "summary": "get flow version", "operationId": "getFlowVersion", "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "name": "version", "in": "path", "required": true, "schema": { "type": "number" } } ], "tags": [ "flow" ], "responses": { "200": { "description": "flow details", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Flow" } } } } } } }, "/w/{workspace}/flows/history_update/v/{version}": { "post": { "summary": "update flow history", "operationId": "updateFlowHistory", "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "name": "version", "in": "path", "required": true, "schema": { "type": "number" } } ], "requestBody": { "description": "Flow deployment message", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "deployment_msg": { "type": "string" } }, "required": [ "deployment_msg" ] } } } }, "tags": [ "flow" ], "responses": { "200": { "description": "success", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/flows/get/{path}": { "get": { "summary": "get flow by path", "operationId": "getFlowByPath", "x-mcp-tool": true, "tags": [ "flow" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/ScriptPath" }, { "name": "with_starred_info", "in": "query", "schema": { "type": "boolean" } } ], "responses": { "200": { "description": "flow details", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Flow" } } } } } } }, "/w/{workspace}/flows/deployment_status/p/{path}": { "get": { "summary": "get flow deployment status", "operationId": "getFlowDeploymentStatus", "tags": [ "flow" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/ScriptPath" } ], "responses": { "200": { "description": "flow status", "content": { "application/json": { "schema": { "type": "object", "properties": { "lock_error_logs": { "type": "string" }, "job_id": { "type": "string", "format": "uuid" } } } } } } } } }, "/w/{workspace}/flows/get_triggers_count/{path}": { "get": { "summary": "get triggers count of flow", "operationId": "getTriggersCountOfFlow", "tags": [ "flow" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/ScriptPath" } ], "responses": { "200": { "description": "triggers count", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TriggersCount" } } } } } } }, "/w/{workspace}/flows/list_tokens/{path}": { "get": { "summary": "get tokens with flow scope", "operationId": "listTokensOfFlow", "tags": [ "flow" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/ScriptPath" } ], "responses": { "200": { "description": "tokens list", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/TruncatedToken" } } } } } } } }, "/w/{workspace}/flows/toggle_workspace_error_handler/{path}": { "post": { "summary": "Toggle ON and OFF the workspace error handler for a given flow", "operationId": "toggleWorkspaceErrorHandlerForFlow", "tags": [ "flow" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/ScriptPath" } ], "requestBody": { "description": "Workspace error handler enabled", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "muted": { "type": "boolean" } } } } } }, "responses": { "200": { "description": "error handler toggled", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/flows/get/draft/{path}": { "get": { "summary": "get flow by path with draft", "operationId": "getFlowByPathWithDraft", "tags": [ "flow" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/ScriptPath" } ], "responses": { "200": { "description": "flow details with draft", "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/Flow" }, { "type": "object", "properties": { "draft": { "$ref": "#/components/schemas/Flow" } } } ] } } } } } } }, "/w/{workspace}/flows/exists/{path}": { "get": { "summary": "exists flow by path", "operationId": "existsFlowByPath", "tags": [ "flow" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/ScriptPath" } ], "responses": { "200": { "description": "flow details", "content": { "application/json": { "schema": { "type": "boolean" } } } } } } }, "/w/{workspace}/flows/create": { "post": { "summary": "create flow", "operationId": "createFlow", "x-mcp-tool": true, "x-mcp-tool-include-fields": [ "path", "summary", "description", "value", "schema", "tag", "deployment_message" ], "x-mcp-tool-opaque-fields": [ "value", "schema" ], "tags": [ "flow" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "Partially filled flow", "required": true, "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/OpenFlowWPath" }, { "type": "object", "properties": { "draft_only": { "type": "boolean" }, "deployment_message": { "type": "string" } } } ] } } } }, "responses": { "201": { "description": "flow created", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/flows/update/{path}": { "post": { "summary": "update flow", "operationId": "updateFlow", "x-mcp-tool": true, "x-mcp-tool-include-fields": [ "path", "summary", "description", "value", "schema", "tag", "deployment_message" ], "x-mcp-tool-opaque-fields": [ "value", "schema" ], "tags": [ "flow" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/ScriptPath" } ], "requestBody": { "description": "Partially filled flow", "required": true, "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/OpenFlowWPath" }, { "type": "object", "properties": { "deployment_message": { "type": "string" } } } ] } } } }, "responses": { "200": { "description": "flow updated", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/flows/archive/{path}": { "post": { "summary": "archive flow by path", "operationId": "archiveFlowByPath", "tags": [ "flow" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/ScriptPath" } ], "requestBody": { "description": "archiveFlow", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "archived": { "type": "boolean" } } } } } }, "responses": { "200": { "description": "flow archived", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/flows/delete/{path}": { "delete": { "summary": "delete flow by path", "operationId": "deleteFlowByPath", "x-mcp-tool": true, "tags": [ "flow" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/ScriptPath" }, { "name": "keep_captures", "description": "keep captures", "in": "query", "schema": { "type": "boolean" } } ], "responses": { "200": { "description": "flow delete", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/flow_conversations/list": { "get": { "summary": "list flow conversations", "operationId": "listFlowConversations", "tags": [ "flow_conversation" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Page" }, { "$ref": "#/components/parameters/PerPage" }, { "name": "flow_path", "description": "filter conversations by flow path", "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "description": "flow conversations list", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/FlowConversation" } } } } } } } }, "/w/{workspace}/flow_conversations/delete/{conversation_id}": { "delete": { "summary": "delete flow conversation", "operationId": "deleteFlowConversation", "tags": [ "flow_conversation" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "name": "conversation_id", "description": "conversation id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "responses": { "200": { "description": "flow conversation deleted", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/flow_conversations/{conversation_id}/messages": { "get": { "summary": "list conversation messages", "operationId": "listConversationMessages", "tags": [ "flow_conversation" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Page" }, { "$ref": "#/components/parameters/PerPage" }, { "name": "conversation_id", "description": "conversation id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid" } }, { "name": "after_id", "description": "id to fetch only the messages after that id", "in": "query", "required": false, "schema": { "type": "string", "format": "uuid" } } ], "responses": { "200": { "description": "conversation messages", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/FlowConversationMessage" } } } } } } } }, "/w/{workspace}/raw_apps/list": { "get": { "summary": "list all raw apps", "operationId": "listRawApps", "tags": [ "raw_app" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Page" }, { "$ref": "#/components/parameters/PerPage" }, { "$ref": "#/components/parameters/OrderDesc" }, { "$ref": "#/components/parameters/CreatedBy" }, { "name": "path_start", "description": "mask to filter matching starting path", "in": "query", "schema": { "type": "string" } }, { "name": "path_exact", "description": "mask to filter exact matching path", "in": "query", "schema": { "type": "string" } }, { "name": "starred_only", "description": "(default false)\nshow only the starred items\n", "in": "query", "schema": { "type": "boolean" } } ], "responses": { "200": { "description": "All raw apps", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ListableRawApp" } } } } } } } }, "/w/{workspace}/apps/get_data/v/{secretWithExtension}": { "get": { "summary": "get raw app data by", "operationId": "getRawAppData", "tags": [ "app" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "name": "secretWithExtension", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "app details", "content": { "text/javascript": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/apps/list_search": { "get": { "summary": "list apps for search", "operationId": "listSearchApp", "tags": [ "app" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "responses": { "200": { "description": "app list", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "path": { "type": "string" }, "value": {} }, "required": [ "path", "value" ] } } } } } } } }, "/w/{workspace}/apps/list": { "get": { "summary": "list all apps", "operationId": "listApps", "tags": [ "app" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Page" }, { "$ref": "#/components/parameters/PerPage" }, { "$ref": "#/components/parameters/OrderDesc" }, { "$ref": "#/components/parameters/CreatedBy" }, { "name": "path_start", "description": "mask to filter matching starting path", "in": "query", "schema": { "type": "string" } }, { "name": "path_exact", "description": "mask to filter exact matching path", "in": "query", "schema": { "type": "string" } }, { "name": "starred_only", "description": "(default false)\nshow only the starred items\n", "in": "query", "schema": { "type": "boolean" } }, { "name": "include_draft_only", "description": "(default false)\ninclude items that have no deployed version\n", "in": "query", "schema": { "type": "boolean" } }, { "name": "with_deployment_msg", "description": "(default false)\ninclude deployment message\n", "in": "query", "schema": { "type": "boolean" } } ], "responses": { "200": { "description": "All apps", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ListableApp" } } } } } } } }, "/w/{workspace}/apps/create": { "post": { "summary": "create app", "operationId": "createApp", "x-mcp-tool": true, "x-mcp-tool-include-fields": [ "path", "value", "summary", "policy", "deployment_message" ], "x-mcp-tool-opaque-fields": [ "value", "policy" ], "tags": [ "app" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "new app", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "path": { "type": "string" }, "value": {}, "summary": { "type": "string" }, "policy": { "$ref": "#/components/schemas/Policy" }, "draft_only": { "type": "boolean" }, "deployment_message": { "type": "string" }, "custom_path": { "type": "string" } }, "required": [ "path", "value", "summary", "policy" ] } } } }, "responses": { "201": { "description": "app created", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/apps/create_raw": { "post": { "summary": "create app raw", "operationId": "createAppRaw", "tags": [ "app" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "new app", "required": true, "content": { "multipart/form-data": { "schema": { "type": "object", "properties": { "app": { "type": "object", "properties": { "path": { "type": "string" }, "value": {}, "summary": { "type": "string" }, "policy": { "$ref": "#/components/schemas/Policy" }, "draft_only": { "type": "boolean" }, "deployment_message": { "type": "string" }, "custom_path": { "type": "string" } }, "required": [ "path", "value", "summary", "policy" ] }, "js": { "type": "string" }, "css": { "type": "string" } } } } } }, "responses": { "201": { "description": "app created", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/apps/exists/{path}": { "get": { "summary": "does an app exisst at path", "operationId": "existsApp", "tags": [ "app" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" } ], "responses": { "200": { "description": "app exists", "content": { "application/json": { "schema": { "type": "boolean" } } } } } } }, "/w/{workspace}/apps/get/p/{path}": { "get": { "summary": "get app by path", "operationId": "getAppByPath", "tags": [ "app" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/ScriptPath" }, { "name": "with_starred_info", "in": "query", "schema": { "type": "boolean" } } ], "responses": { "200": { "description": "app details", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AppWithLastVersion" } } } } } } }, "/w/{workspace}/apps/get/lite/{path}": { "get": { "summary": "get app lite by path", "operationId": "getAppLiteByPath", "tags": [ "app" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/ScriptPath" } ], "responses": { "200": { "description": "app lite details", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AppWithLastVersion" } } } } } } }, "/w/{workspace}/apps/get/draft/{path}": { "get": { "summary": "get app by path with draft", "operationId": "getAppByPathWithDraft", "tags": [ "app" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/ScriptPath" } ], "responses": { "200": { "description": "app details with draft", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AppWithLastVersionWDraft" } } } } } } }, "/w/{workspace}/apps/history/p/{path}": { "get": { "summary": "get app history by path", "operationId": "getAppHistoryByPath", "tags": [ "app" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/ScriptPath" } ], "responses": { "200": { "description": "app history", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/AppHistory" } } } } } } } }, "/w/{workspace}/apps/get_latest_version/{path}": { "get": { "summary": "get apps's latest version", "operationId": "getAppLatestVersion", "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/ScriptPath" } ], "tags": [ "app" ], "responses": { "200": { "description": "App version", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AppHistory" } } } } } } }, "/w/{workspace}/apps/list_paths_from_workspace_runnable/{runnable_kind}/{path}": { "get": { "summary": "list app paths from workspace runnable", "operationId": "listAppPathsFromWorkspaceRunnable", "tags": [ "app" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/RunnableKind" }, { "$ref": "#/components/parameters/ScriptPath" } ], "responses": { "200": { "description": "list of app paths", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "string" } } } } } } } }, "/w/{workspace}/apps/history_update/a/{id}/v/{version}": { "post": { "summary": "update app history", "operationId": "updateAppHistory", "tags": [ "app" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/PathId" }, { "$ref": "#/components/parameters/PathVersion" } ], "requestBody": { "description": "App deployment message", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "deployment_msg": { "type": "string" } } } } } }, "responses": { "200": { "description": "success", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/apps_u/public_app/{path}": { "get": { "summary": "get public app by secret", "operationId": "getPublicAppBySecret", "tags": [ "app" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" } ], "responses": { "200": { "description": "app details", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AppWithLastVersion" } } } } } } }, "/w/{workspace}/apps_u/public_resource/{path}": { "get": { "summary": "get public resource", "operationId": "get public resource", "tags": [ "app" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" } ], "responses": { "200": { "description": "resource value", "content": { "application/json": { "schema": {} } } } } } }, "/w/{workspace}/apps/secret_of/{path}": { "get": { "summary": "get public secret of app", "operationId": "getPublicSecretOfApp", "tags": [ "app" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" } ], "responses": { "200": { "description": "app secret", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/apps/secret_of_latest_version/{path}": { "get": { "summary": "get public secret of latest version of an app bundle", "operationId": "getPublicSecretOfLatestVersionOfApp", "tags": [ "app" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" } ], "responses": { "200": { "description": "app secret", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/apps/get/v/{id}": { "get": { "summary": "get app by version", "operationId": "getAppByVersion", "tags": [ "app" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/PathId" } ], "responses": { "200": { "description": "app details", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AppWithLastVersion" } } } } } } }, "/w/{workspace}/apps/delete/{path}": { "delete": { "summary": "delete app", "operationId": "deleteApp", "tags": [ "app" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" } ], "responses": { "200": { "description": "app deleted", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/apps/update/{path}": { "post": { "summary": "update app", "operationId": "updateApp", "x-mcp-tool": true, "x-mcp-tool-include-fields": [ "path", "value", "summary", "policy", "deployment_message" ], "x-mcp-tool-opaque-fields": [ "value", "policy" ], "tags": [ "app" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/ScriptPath" } ], "requestBody": { "description": "update app", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "path": { "type": "string" }, "summary": { "type": "string" }, "value": {}, "policy": { "$ref": "#/components/schemas/Policy" }, "deployment_message": { "type": "string" }, "custom_path": { "type": "string" } } } } } }, "responses": { "200": { "description": "app updated", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/apps/update_raw/{path}": { "post": { "summary": "update app", "operationId": "updateAppRaw", "tags": [ "app" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/ScriptPath" } ], "requestBody": { "description": "update app", "required": true, "content": { "multipart/form-data": { "schema": { "type": "object", "properties": { "app": { "type": "object", "properties": { "path": { "type": "string" }, "summary": { "type": "string" }, "value": {}, "policy": { "$ref": "#/components/schemas/Policy" }, "deployment_message": { "type": "string" }, "custom_path": { "type": "string" } } }, "js": { "type": "string" }, "css": { "type": "string" } } } } } }, "responses": { "200": { "description": "app updated", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/apps/custom_path_exists/{custom_path}": { "get": { "summary": "check if custom path exists", "operationId": "customPathExists", "tags": [ "app" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/CustomPath" } ], "responses": { "200": { "description": "custom path exists", "content": { "application/json": { "schema": { "type": "boolean" } } } } } } }, "/w/{workspace}/apps/sign_s3_objects": { "post": { "summary": "sign s3 objects, to be used by anonymous users in public apps", "operationId": "signS3Objects", "tags": [ "app" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "s3 objects to sign", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "s3_objects": { "type": "array", "items": { "$ref": "#/components/schemas/S3Object" } } }, "required": [ "s3_objects" ] } } } }, "responses": { "200": { "description": "signed s3 objects", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/S3Object" } } } } } } } }, "/w/{workspace}/apps_u/execute_component/{path}": { "post": { "summary": "executeComponent", "operationId": "executeComponent", "tags": [ "app" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/ScriptPath" } ], "requestBody": { "description": "update app", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "component": { "type": "string" }, "path": { "type": "string" }, "version": { "type": "integer" }, "args": {}, "raw_code": { "type": "object", "properties": { "content": { "type": "string" }, "language": { "type": "string" }, "path": { "type": "string" }, "lock": { "type": "string" }, "cache_ttl": { "type": "integer" } }, "required": [ "content", "language" ] }, "id": { "type": "integer" }, "force_viewer_static_fields": { "type": "object" }, "force_viewer_one_of_fields": { "type": "object" }, "force_viewer_allow_user_resources": { "type": "array", "items": { "type": "string" } }, "run_query_params": { "type": "object", "description": "Runnable query parameters" } }, "required": [ "args", "component" ] } } } }, "responses": { "200": { "description": "job uuid", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/apps_u/upload_s3_file/{path}": { "post": { "summary": "upload s3 file from app", "operationId": "uploadS3FileFromApp", "tags": [ "app" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" }, { "name": "file_key", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "file_extension", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "s3_resource_path", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "resource_type", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "storage", "in": "query", "schema": { "type": "string" } }, { "name": "content_type", "in": "query", "schema": { "type": "string" } }, { "name": "content_disposition", "in": "query", "schema": { "type": "string" } } ], "requestBody": { "description": "File content", "required": true, "content": { "application/octet-stream": { "schema": { "type": "string", "format": "binary" } } } }, "responses": { "200": { "description": "file uploaded", "content": { "application/json": { "schema": { "type": "object", "properties": { "file_key": { "type": "string" }, "delete_token": { "type": "string" } }, "required": [ "file_key", "delete_token" ] } } } } } } }, "/w/{workspace}/apps_u/delete_s3_file": { "delete": { "summary": "delete s3 file from app", "operationId": "deleteS3FileFromApp", "tags": [ "app" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "name": "delete_token", "in": "query", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "file deleted", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/jobs/run/f/{path}": { "post": { "summary": "run flow by path", "operationId": "runFlowByPath", "x-mcp-tool": true, "x-mcp-instructions": "You should first use getFlowByPath to retrieve the flow's schema and understand what arguments are expected.", "x-mcp-tool-include-query-params": [], "tags": [ "job" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/ScriptPath" }, { "name": "scheduled_for", "description": "when to schedule this job (leave empty for immediate run)", "in": "query", "schema": { "type": "string", "format": "date-time" } }, { "name": "scheduled_in_secs", "description": "schedule the script to execute in the number of seconds starting now", "in": "query", "schema": { "type": "integer" } }, { "$ref": "#/components/parameters/SkipPreprocessor" }, { "$ref": "#/components/parameters/ParentJob" }, { "$ref": "#/components/parameters/WorkerTag" }, { "$ref": "#/components/parameters/NewJobId" }, { "$ref": "#/components/parameters/IncludeHeader" }, { "name": "invisible_to_owner", "description": "make the run invisible to the the flow owner (default false)", "in": "query", "schema": { "type": "boolean" } }, { "name": "memory_id", "description": "memory ID for chat-enabled flows", "in": "query", "schema": { "type": "string", "format": "uuid" } } ], "requestBody": { "description": "flow args", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ScriptArgs" } } } }, "responses": { "201": { "description": "job created", "content": { "text/plain": { "schema": { "type": "string", "format": "uuid" } } } } } } }, "/w/{workspace}/jobs/run/fv/{version}": { "post": { "summary": "run flow by version", "operationId": "runFlowByVersion", "tags": [ "job" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "name": "version", "description": "flow version ID", "in": "path", "required": true, "schema": { "type": "integer", "format": "int64" } }, { "name": "scheduled_for", "description": "when to schedule this job (leave empty for immediate run)", "in": "query", "schema": { "type": "string", "format": "date-time" } }, { "name": "scheduled_in_secs", "description": "schedule the script to execute in the number of seconds starting now", "in": "query", "schema": { "type": "integer" } }, { "$ref": "#/components/parameters/SkipPreprocessor" }, { "$ref": "#/components/parameters/ParentJob" }, { "$ref": "#/components/parameters/WorkerTag" }, { "$ref": "#/components/parameters/NewJobId" }, { "$ref": "#/components/parameters/IncludeHeader" }, { "name": "invisible_to_owner", "description": "make the run invisible to the the flow owner (default false)", "in": "query", "schema": { "type": "boolean" } }, { "name": "memory_id", "description": "memory ID for chat-enabled flows", "in": "query", "schema": { "type": "string", "format": "uuid" } } ], "requestBody": { "description": "flow args", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ScriptArgs" } } } }, "responses": { "201": { "description": "job created", "content": { "text/plain": { "schema": { "type": "string", "format": "uuid" } } } } } } }, "/w/{workspace}/jobs/run/batch_rerun_jobs": { "post": { "summary": "re-run multiple jobs", "operationId": "batchReRunJobs", "tags": [ "job" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "list of job ids to re run and arg tranforms", "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "job_ids", "script_options_by_path", "flow_options_by_path" ], "properties": { "job_ids": { "type": "array", "items": { "type": "string" } }, "script_options_by_path": { "type": "object", "additionalProperties": { "type": "object", "properties": { "input_transforms": { "type": "object", "additionalProperties": { "$ref": "#/components/schemas/InputTransform" } }, "use_latest_version": { "type": "boolean" } } } }, "flow_options_by_path": { "type": "object", "additionalProperties": { "type": "object", "properties": { "input_transforms": { "type": "object", "additionalProperties": { "$ref": "#/components/schemas/InputTransform" } }, "use_latest_version": { "type": "boolean" } } } } } } } } }, "responses": { "201": { "description": "stream of created job uuids separated by \\n. Lines may start with 'Error:'", "content": { "text/event-stream": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/jobs/restart/f/{id}": { "post": { "summary": "restart a completed flow at a given step", "operationId": "restartFlowAtStep", "tags": [ "job" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/JobId" }, { "name": "scheduled_for", "description": "when to schedule this job (leave empty for immediate run)", "in": "query", "schema": { "type": "string", "format": "date-time" } }, { "name": "scheduled_in_secs", "description": "schedule the script to execute in the number of seconds starting now", "in": "query", "schema": { "type": "integer" } }, { "$ref": "#/components/parameters/ParentJob" }, { "$ref": "#/components/parameters/WorkerTag" }, { "$ref": "#/components/parameters/NewJobId" }, { "$ref": "#/components/parameters/IncludeHeader" }, { "name": "invisible_to_owner", "description": "make the run invisible to the the flow owner (default false)", "in": "query", "schema": { "type": "boolean" } } ], "requestBody": { "description": "restart flow parameters", "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "step_id" ], "properties": { "step_id": { "type": "string", "description": "step id to restart the flow from" }, "branch_or_iteration_n": { "type": "integer", "description": "for branchall or loop, the iteration at which the flow should restart (optional)" }, "flow_version": { "type": "integer", "description": "specific flow version to use for restart (optional, uses current version if not specified)" } } } } } }, "responses": { "201": { "description": "job created", "content": { "text/plain": { "schema": { "type": "string", "format": "uuid" } } } } } } }, "/w/{workspace}/jobs/run/h/{hash}": { "post": { "summary": "run script by hash", "operationId": "runScriptByHash", "tags": [ "job" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/ScriptHash" }, { "name": "scheduled_for", "description": "when to schedule this job (leave empty for immediate run)", "in": "query", "schema": { "type": "string", "format": "date-time" } }, { "name": "scheduled_in_secs", "description": "schedule the script to execute in the number of seconds starting now", "in": "query", "schema": { "type": "integer" } }, { "$ref": "#/components/parameters/SkipPreprocessor" }, { "$ref": "#/components/parameters/ParentJob" }, { "$ref": "#/components/parameters/WorkerTag" }, { "$ref": "#/components/parameters/CacheTtl" }, { "$ref": "#/components/parameters/NewJobId" }, { "$ref": "#/components/parameters/IncludeHeader" }, { "name": "invisible_to_owner", "description": "make the run invisible to the the script owner (default false)", "in": "query", "schema": { "type": "boolean" } } ], "requestBody": { "description": "Partially filled args", "required": true, "content": { "application/json": { "schema": { "type": "object" } } } }, "responses": { "201": { "description": "job created", "content": { "text/plain": { "schema": { "type": "string", "format": "uuid" } } } } } } }, "/w/{workspace}/jobs/run/preview": { "post": { "summary": "run script preview", "operationId": "runScriptPreview", "tags": [ "job" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/IncludeHeader" }, { "name": "invisible_to_owner", "description": "make the run invisible to the the script owner (default false)", "in": "query", "schema": { "type": "boolean" } }, { "$ref": "#/components/parameters/NewJobId" } ], "requestBody": { "description": "preview", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Preview" } } } }, "responses": { "201": { "description": "job created", "content": { "text/plain": { "schema": { "type": "string", "format": "uuid" } } } } } } }, "/w/{workspace}/jobs/run_inline/preview": { "post": { "summary": "run script preview without starting a new job", "operationId": "runScriptPreviewInline", "tags": [ "job" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "preview", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PreviewInline" } } } }, "responses": { "200": { "description": "script result", "content": { "application/json": { "schema": {} } } } } } }, "/w/{workspace}/jobs/run_wait_result/preview": { "post": { "summary": "run script preview and wait for result", "operationId": "runScriptPreviewAndWaitResult", "x-mcp-tool": true, "x-mcp-instructions": "Allows testing a script before deploying it. For typescript code, the language to send is either bun or deno. By default, send bun if no deno specific code is detected.", "x-mcp-required-fields": [ "content", "language", "args" ], "tags": [ "job" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "preview", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Preview" } } } }, "responses": { "200": { "description": "job result", "content": { "application/json": { "schema": {} } } } } } }, "/w/{workspace}/jobs/workflow_as_code/{job_id}/{entrypoint}": { "post": { "summary": "run code-workflow task", "operationId": "runCodeWorkflowTask", "tags": [ "job" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "name": "job_id", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "entrypoint", "in": "path", "required": true, "schema": { "type": "string" } } ], "requestBody": { "description": "preview", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WorkflowTask" } } } }, "responses": { "201": { "description": "job created", "content": { "text/plain": { "schema": { "type": "string", "format": "uuid" } } } } } } }, "/w/{workspace}/jobs/run/dependencies": { "post": { "summary": "run a one-off dependencies job", "operationId": "runRawScriptDependencies", "tags": [ "job" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "raw script content", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "raw_scripts": { "type": "array", "items": { "$ref": "#/components/schemas/RawScriptForDependencies" } }, "entrypoint": { "type": "string" } }, "required": [ "entrypoint", "raw_scripts" ] } } } }, "responses": { "201": { "description": "dependency job result", "content": { "application/json": { "schema": { "type": "object", "properties": { "lock": { "type": "string" } }, "required": [ "lock" ] } } } } } } }, "/w/{workspace}/jobs/run/preview_flow": { "post": { "summary": "run flow preview", "operationId": "runFlowPreview", "tags": [ "job" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/IncludeHeader" }, { "name": "invisible_to_owner", "description": "make the run invisible to the the script owner (default false)", "in": "query", "schema": { "type": "boolean" } }, { "$ref": "#/components/parameters/NewJobId" }, { "name": "memory_id", "description": "memory ID for chat-enabled flows", "in": "query", "schema": { "type": "string", "format": "uuid" } } ], "requestBody": { "description": "preview", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FlowPreview" } } } }, "responses": { "201": { "description": "job created", "content": { "text/plain": { "schema": { "type": "string", "format": "uuid" } } } } } } }, "/w/{workspace}/jobs/run_wait_result/preview_flow": { "post": { "summary": "run flow preview and wait for result", "operationId": "runFlowPreviewAndWaitResult", "tags": [ "job" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "name": "memory_id", "description": "memory ID for chat-enabled flows", "in": "query", "schema": { "type": "string", "format": "uuid" } } ], "requestBody": { "description": "preview", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FlowPreview" } } } }, "responses": { "200": { "description": "job result", "content": { "application/json": { "schema": {} } } } } } }, "/w/{workspace}/jobs/run/dynamic_select": { "post": { "summary": "run dynamic select helper function", "operationId": "runDynamicSelect", "tags": [ "job" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "dynamic select request", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DynamicInputData" } } } }, "responses": { "201": { "description": "dynamic select job created", "content": { "text/plain": { "schema": { "type": "string", "format": "uuid" } } } } } } }, "/w/{workspace}/jobs/queue/list": { "get": { "summary": "list all queued jobs", "operationId": "listQueue", "x-mcp-tool": true, "tags": [ "job" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/OrderDesc" }, { "$ref": "#/components/parameters/CreatedBy" }, { "$ref": "#/components/parameters/ParentJob" }, { "$ref": "#/components/parameters/Worker" }, { "$ref": "#/components/parameters/ScriptExactPath" }, { "$ref": "#/components/parameters/ScriptStartPath" }, { "$ref": "#/components/parameters/SchedulePath" }, { "$ref": "#/components/parameters/TriggerPath" }, { "$ref": "#/components/parameters/JobTriggerKind" }, { "$ref": "#/components/parameters/ScriptExactHash" }, { "$ref": "#/components/parameters/StartedBefore" }, { "$ref": "#/components/parameters/StartedAfter" }, { "$ref": "#/components/parameters/Success" }, { "$ref": "#/components/parameters/ScheduledForBeforeNow" }, { "$ref": "#/components/parameters/JobKinds" }, { "$ref": "#/components/parameters/Suspended" }, { "$ref": "#/components/parameters/Running" }, { "$ref": "#/components/parameters/ArgsFilter" }, { "$ref": "#/components/parameters/ResultFilter" }, { "$ref": "#/components/parameters/AllowWildcards" }, { "$ref": "#/components/parameters/Tag" }, { "$ref": "#/components/parameters/Page" }, { "$ref": "#/components/parameters/PerPage" }, { "name": "all_workspaces", "description": "get jobs from all workspaces (only valid if request come from the `admins` workspace)", "in": "query", "schema": { "type": "boolean" } }, { "name": "is_not_schedule", "description": "is not a scheduled job", "in": "query", "schema": { "type": "boolean" } } ], "responses": { "200": { "description": "All queued jobs", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/QueuedJob" } } } } } } } }, "/w/{workspace}/jobs/queue/count": { "get": { "summary": "get queue count", "operationId": "getQueueCount", "tags": [ "job" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "name": "all_workspaces", "description": "get jobs from all workspaces (only valid if request come from the `admins` workspace)", "in": "query", "schema": { "type": "boolean" } } ], "responses": { "200": { "description": "queue count", "content": { "application/json": { "schema": { "type": "object", "properties": { "database_length": { "type": "integer" }, "suspended": { "type": "integer" } }, "required": [ "database_length" ] } } } } } } }, "/w/{workspace}/jobs/completed/count": { "get": { "summary": "get completed count", "operationId": "getCompletedCount", "tags": [ "job" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "responses": { "200": { "description": "completed count", "content": { "application/json": { "schema": { "type": "object", "properties": { "database_length": { "type": "integer" } }, "required": [ "database_length" ] } } } } } } }, "/w/{workspace}/jobs/completed/count_jobs": { "get": { "summary": "count number of completed jobs with filter", "operationId": "countCompletedJobs", "tags": [ "job" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "name": "completed_after_s_ago", "in": "query", "schema": { "type": "integer" } }, { "name": "success", "in": "query", "schema": { "type": "boolean" } }, { "name": "tags", "in": "query", "schema": { "type": "string" } }, { "name": "all_workspaces", "in": "query", "schema": { "type": "boolean" } } ], "responses": { "200": { "description": "Count of completed jobs", "content": { "application/json": { "schema": { "type": "integer" } } } } } } }, "/w/{workspace}/jobs/list_filtered_uuids": { "get": { "summary": "get the ids of all jobs matching the given filters", "operationId": "listFilteredJobsUuids", "tags": [ "job" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/CreatedBy" }, { "$ref": "#/components/parameters/Label" }, { "$ref": "#/components/parameters/Worker" }, { "$ref": "#/components/parameters/ParentJob" }, { "$ref": "#/components/parameters/ScriptExactPath" }, { "$ref": "#/components/parameters/ScriptStartPath" }, { "$ref": "#/components/parameters/SchedulePath" }, { "$ref": "#/components/parameters/ScriptExactHash" }, { "$ref": "#/components/parameters/StartedBefore" }, { "$ref": "#/components/parameters/StartedAfter" }, { "$ref": "#/components/parameters/CreatedBefore" }, { "$ref": "#/components/parameters/CreatedAfter" }, { "$ref": "#/components/parameters/CompletedBefore" }, { "$ref": "#/components/parameters/CompletedAfter" }, { "$ref": "#/components/parameters/CreatedBeforeQueue" }, { "$ref": "#/components/parameters/CreatedAfterQueue" }, { "$ref": "#/components/parameters/Running" }, { "$ref": "#/components/parameters/ScheduledForBeforeNow" }, { "$ref": "#/components/parameters/JobKinds" }, { "$ref": "#/components/parameters/Suspended" }, { "$ref": "#/components/parameters/ArgsFilter" }, { "$ref": "#/components/parameters/Tag" }, { "$ref": "#/components/parameters/ResultFilter" }, { "$ref": "#/components/parameters/Page" }, { "$ref": "#/components/parameters/PerPage" }, { "name": "is_skipped", "description": "is the job skipped", "in": "query", "schema": { "type": "boolean" } }, { "name": "is_flow_step", "description": "is the job a flow step", "in": "query", "schema": { "type": "boolean" } }, { "name": "has_null_parent", "description": "has null parent", "in": "query", "schema": { "type": "boolean" } }, { "name": "success", "description": "filter on successful jobs", "in": "query", "schema": { "type": "boolean" } }, { "name": "all_workspaces", "description": "get jobs from all workspaces (only valid if request come from the `admins` workspace)", "in": "query", "schema": { "type": "boolean" } }, { "name": "is_not_schedule", "description": "is not a scheduled job", "in": "query", "schema": { "type": "boolean" } } ], "responses": { "200": { "description": "uuids of jobs", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "string" } } } } } } } }, "/w/{workspace}/jobs/queue/list_filtered_uuids": { "get": { "summary": "get the ids of all queued jobs matching the given filters", "operationId": "listFilteredQueueUuids", "tags": [ "job" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/OrderDesc" }, { "$ref": "#/components/parameters/CreatedBy" }, { "$ref": "#/components/parameters/ParentJob" }, { "$ref": "#/components/parameters/ScriptExactPath" }, { "$ref": "#/components/parameters/ScriptStartPath" }, { "$ref": "#/components/parameters/SchedulePath" }, { "$ref": "#/components/parameters/ScriptExactHash" }, { "$ref": "#/components/parameters/StartedBefore" }, { "$ref": "#/components/parameters/StartedAfter" }, { "$ref": "#/components/parameters/Success" }, { "$ref": "#/components/parameters/ScheduledForBeforeNow" }, { "$ref": "#/components/parameters/JobKinds" }, { "$ref": "#/components/parameters/Suspended" }, { "$ref": "#/components/parameters/Running" }, { "$ref": "#/components/parameters/ArgsFilter" }, { "$ref": "#/components/parameters/ResultFilter" }, { "$ref": "#/components/parameters/AllowWildcards" }, { "$ref": "#/components/parameters/Tag" }, { "$ref": "#/components/parameters/Page" }, { "$ref": "#/components/parameters/PerPage" }, { "name": "concurrency_key", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "all_workspaces", "description": "get jobs from all workspaces (only valid if request come from the `admins` workspace)", "in": "query", "schema": { "type": "boolean" } }, { "name": "is_not_schedule", "description": "is not a scheduled job", "in": "query", "schema": { "type": "boolean" } } ], "responses": { "200": { "description": "uuids of jobs", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "string" } } } } } } } }, "/w/{workspace}/jobs/queue/cancel_selection": { "post": { "summary": "cancel jobs based on the given uuids", "operationId": "cancelSelection", "tags": [ "job" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "name": "force_cancel", "in": "query", "schema": { "type": "boolean" } } ], "requestBody": { "description": "uuids of the jobs to cancel", "required": true, "content": { "application/json": { "schema": { "type": "array", "items": { "type": "string" } } } } }, "responses": { "200": { "description": "uuids of canceled jobs", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "string" } } } } } } } }, "/w/{workspace}/jobs/get_otel_traces/{id}": { "get": { "summary": "get OpenTelemetry traces for a job", "operationId": "getJobOtelTraces", "tags": [ "job" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/JobId" } ], "responses": { "200": { "description": "list of OTEL Span objects (compatible with OpenTelemetry Span proto)", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object" } } } } } } } }, "/w/{workspace}/trigger/{trigger_kind}/resume_suspended_trigger_jobs/{trigger_path}": { "post": { "summary": "resume all suspended jobs for a specific trigger", "operationId": "resumeSuspendedTriggerJobs", "tags": [ "trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "name": "trigger_kind", "description": "The kind of trigger", "in": "path", "required": true, "schema": { "$ref": "#/components/schemas/JobTriggerKind" } }, { "name": "trigger_path", "description": "The path of the trigger (can contain forward slashes)", "in": "path", "required": true, "schema": { "type": "string" }, "style": "simple", "explode": false } ], "requestBody": { "description": "Optional list of job IDs to reassign", "required": false, "content": { "application/json": { "schema": { "type": "object", "properties": { "job_ids": { "type": "array", "items": { "type": "string", "format": "uuid" }, "description": "Optional list of specific job UUIDs to reassign. If not provided, all suspended jobs for the trigger will be reassigned." } } } } } }, "responses": { "200": { "description": "confirmation message", "content": { "application/json": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/trigger/{trigger_kind}/cancel_suspended_trigger_jobs/{trigger_path}": { "post": { "summary": "cancel all suspended jobs for a specific trigger", "operationId": "cancelSuspendedTriggerJobs", "tags": [ "trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "name": "trigger_kind", "description": "The kind of trigger", "in": "path", "required": true, "schema": { "$ref": "#/components/schemas/JobTriggerKind" } }, { "name": "trigger_path", "description": "The path of the trigger (can contain forward slashes)", "in": "path", "required": true, "schema": { "type": "string" }, "style": "simple", "explode": false } ], "requestBody": { "description": "Optional list of job IDs to cancel", "required": false, "content": { "application/json": { "schema": { "type": "object", "properties": { "job_ids": { "type": "array", "items": { "type": "string", "format": "uuid" }, "description": "Optional list of specific job UUIDs to cancel. If not provided, all suspended jobs for the trigger will be canceled." } } } } } }, "responses": { "200": { "description": "confirmation message", "content": { "application/json": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/jobs/completed/list": { "get": { "summary": "list all completed jobs", "operationId": "listCompletedJobs", "tags": [ "job" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/OrderDesc" }, { "$ref": "#/components/parameters/CreatedBy" }, { "$ref": "#/components/parameters/Label" }, { "$ref": "#/components/parameters/Worker" }, { "$ref": "#/components/parameters/ParentJob" }, { "$ref": "#/components/parameters/ScriptExactPath" }, { "$ref": "#/components/parameters/ScriptStartPath" }, { "$ref": "#/components/parameters/SchedulePath" }, { "$ref": "#/components/parameters/ScriptExactHash" }, { "$ref": "#/components/parameters/StartedBefore" }, { "$ref": "#/components/parameters/StartedAfter" }, { "$ref": "#/components/parameters/Success" }, { "$ref": "#/components/parameters/JobKinds" }, { "$ref": "#/components/parameters/ArgsFilter" }, { "$ref": "#/components/parameters/ResultFilter" }, { "$ref": "#/components/parameters/AllowWildcards" }, { "$ref": "#/components/parameters/Tag" }, { "$ref": "#/components/parameters/Page" }, { "$ref": "#/components/parameters/PerPage" }, { "name": "is_skipped", "description": "is the job skipped", "in": "query", "schema": { "type": "boolean" } }, { "name": "is_flow_step", "description": "is the job a flow step", "in": "query", "schema": { "type": "boolean" } }, { "name": "has_null_parent", "description": "has null parent", "in": "query", "schema": { "type": "boolean" } }, { "name": "is_not_schedule", "description": "is not a scheduled job", "in": "query", "schema": { "type": "boolean" } } ], "responses": { "200": { "description": "All completed jobs", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/CompletedJob" } } } } } } } }, "/w/{workspace}/jobs/completed/export": { "get": { "summary": "export all completed jobs for backup/migration", "operationId": "exportCompletedJobs", "tags": [ "job" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Page" }, { "$ref": "#/components/parameters/PerPage" } ], "responses": { "200": { "description": "All completed jobs exported", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ExportableCompletedJob" } } } } } } } }, "/w/{workspace}/jobs/completed/import": { "post": { "summary": "import completed jobs from backup/migration", "operationId": "importCompletedJobs", "tags": [ "job" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ExportableCompletedJob" } } } } }, "responses": { "200": { "description": "Successfully imported completed jobs", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/jobs/queue/export": { "get": { "summary": "export all queued jobs for backup/migration", "operationId": "exportQueuedJobs", "tags": [ "job" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Page" }, { "$ref": "#/components/parameters/PerPage" } ], "responses": { "200": { "description": "All queued jobs exported", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ExportableQueuedJob" } } } } } } } }, "/w/{workspace}/jobs/queue/import": { "post": { "summary": "import queued jobs from backup/migration", "operationId": "importQueuedJobs", "tags": [ "job" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ExportableQueuedJob" } } } } }, "responses": { "200": { "description": "Successfully imported queued jobs", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/jobs/delete": { "post": { "summary": "delete jobs by IDs from all related tables", "operationId": "deleteJobs", "tags": [ "job" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "array", "items": { "type": "string", "format": "uuid" }, "description": "Array of job IDs to delete" } } } }, "responses": { "200": { "description": "Successfully deleted jobs", "content": { "text/plain": { "schema": { "type": "string", "description": "Summary of deleted jobs and rows" } } } } } } }, "/w/{workspace}/jobs/list": { "get": { "summary": "list all jobs", "operationId": "listJobs", "x-mcp-tool": true, "tags": [ "job" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/CreatedBy" }, { "$ref": "#/components/parameters/Label" }, { "$ref": "#/components/parameters/Worker" }, { "$ref": "#/components/parameters/ParentJob" }, { "$ref": "#/components/parameters/ScriptExactPath" }, { "$ref": "#/components/parameters/ScriptStartPath" }, { "$ref": "#/components/parameters/SchedulePath" }, { "$ref": "#/components/parameters/ScriptExactHash" }, { "$ref": "#/components/parameters/StartedBefore" }, { "$ref": "#/components/parameters/StartedAfter" }, { "$ref": "#/components/parameters/CreatedBefore" }, { "$ref": "#/components/parameters/CreatedAfter" }, { "$ref": "#/components/parameters/CompletedBefore" }, { "$ref": "#/components/parameters/CompletedAfter" }, { "$ref": "#/components/parameters/CreatedBeforeQueue" }, { "$ref": "#/components/parameters/CreatedAfterQueue" }, { "$ref": "#/components/parameters/Running" }, { "$ref": "#/components/parameters/ScheduledForBeforeNow" }, { "$ref": "#/components/parameters/JobKinds" }, { "$ref": "#/components/parameters/Suspended" }, { "$ref": "#/components/parameters/ArgsFilter" }, { "$ref": "#/components/parameters/Tag" }, { "$ref": "#/components/parameters/ResultFilter" }, { "$ref": "#/components/parameters/AllowWildcards" }, { "$ref": "#/components/parameters/PerPage" }, { "$ref": "#/components/parameters/JobTriggerKind" }, { "name": "is_skipped", "description": "is the job skipped", "in": "query", "schema": { "type": "boolean" } }, { "name": "is_flow_step", "description": "is the job a flow step", "in": "query", "schema": { "type": "boolean" } }, { "name": "has_null_parent", "description": "has null parent", "in": "query", "schema": { "type": "boolean" } }, { "name": "success", "description": "filter on successful jobs", "in": "query", "schema": { "type": "boolean" } }, { "name": "all_workspaces", "description": "get jobs from all workspaces (only valid if request come from the `admins` workspace)", "in": "query", "schema": { "type": "boolean" } }, { "name": "is_not_schedule", "description": "is not a scheduled job", "in": "query", "schema": { "type": "boolean" } } ], "responses": { "200": { "description": "All jobs", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Job" } } } } } } } }, "/jobs/db_clock": { "get": { "summary": "get db clock", "operationId": "getDbClock", "tags": [ "job" ], "responses": { "200": { "description": "the timestamp of the db that can be used to compute the drift", "content": { "application/json": { "schema": { "type": "integer" } } } } } } }, "/jobs/completed/count_by_tag": { "get": { "summary": "Count jobs by tag", "operationId": "countJobsByTag", "tags": [ "job" ], "parameters": [ { "name": "horizon_secs", "in": "query", "description": "Past Time horizon in seconds (when to start the count = now - horizon) (default is 3600)", "required": false, "schema": { "type": "integer" } }, { "name": "workspace_id", "in": "query", "description": "Specific workspace ID to filter results (optional)", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "Job counts by tag", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "tag": { "type": "string" }, "count": { "type": "integer" } }, "required": [ "tag", "count" ] } } } } } } } }, "/w/{workspace}/jobs_u/get/{id}": { "get": { "summary": "get job", "operationId": "getJob", "tags": [ "job" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/JobId" }, { "name": "no_logs", "in": "query", "schema": { "type": "boolean" } }, { "name": "no_code", "in": "query", "schema": { "type": "boolean" } } ], "responses": { "200": { "description": "job details", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Job" } } } } } } }, "/w/{workspace}/jobs_u/get_root_job_id/{id}": { "get": { "summary": "get root job id", "operationId": "getRootJobId", "tags": [ "job" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/JobId" } ], "responses": { "200": { "description": "get root job id", "content": { "application/json": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/jobs_u/get_logs/{id}": { "get": { "summary": "get job logs", "operationId": "getJob logs", "tags": [ "job" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/JobId" }, { "name": "remove_ansi_warnings", "in": "query", "schema": { "type": "boolean" } } ], "responses": { "200": { "description": "job details", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/jobs_u/get_completed_logs_tail/{id}": { "get": { "summary": "get completed job logs tail", "operationId": "getCompletedJobLogsTail", "tags": [ "job" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/JobId" } ], "responses": { "200": { "description": "completed job logs tail", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/jobs_u/get_args/{id}": { "get": { "summary": "get job args", "operationId": "getJobArgs", "tags": [ "job" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/JobId" } ], "responses": { "200": { "description": "job args", "content": { "application/json": { "schema": {} } } } } } }, "/w/{workspace}/jobs_u/queue/get_started_at_by_ids": { "post": { "summary": "get started at by ids", "operationId": "getStartedAtByIds", "tags": [ "job" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "ids", "required": true, "content": { "application/json": { "schema": { "type": "array", "items": { "type": "string" } } } } }, "responses": { "200": { "description": "started at by ids", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "string", "format": "date-time" } } } } } } } }, "/w/{workspace}/jobs_u/getupdate/{id}": { "get": { "summary": "get job updates", "operationId": "getJobUpdates", "tags": [ "job" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/JobId" }, { "name": "running", "in": "query", "schema": { "type": "boolean" } }, { "name": "log_offset", "in": "query", "schema": { "type": "integer" } }, { "name": "stream_offset", "in": "query", "schema": { "type": "integer" } }, { "name": "get_progress", "in": "query", "schema": { "type": "boolean" } }, { "name": "no_logs", "in": "query", "schema": { "type": "boolean" } } ], "responses": { "200": { "description": "job details", "content": { "application/json": { "schema": { "type": "object", "properties": { "running": { "type": "boolean" }, "completed": { "type": "boolean" }, "new_logs": { "type": "string" }, "log_offset": { "type": "integer" }, "mem_peak": { "type": "integer" }, "progress": { "type": "integer" }, "stream_offset": { "type": "integer" }, "new_result_stream": { "type": "string" }, "flow_status": { "$ref": "#/components/schemas/FlowStatus" }, "workflow_as_code_status": { "$ref": "#/components/schemas/WorkflowStatus" } } } } } } } } }, "/w/{workspace}/jobs_u/getupdate_sse/{id}": { "get": { "summary": "get job updates via server-sent events", "operationId": "getJobUpdatesSSE", "tags": [ "job" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/JobId" }, { "name": "running", "in": "query", "schema": { "type": "boolean" } }, { "name": "log_offset", "in": "query", "schema": { "type": "integer" } }, { "name": "stream_offset", "in": "query", "schema": { "type": "integer" } }, { "name": "get_progress", "in": "query", "schema": { "type": "boolean" } }, { "name": "only_result", "in": "query", "schema": { "type": "boolean" } }, { "name": "no_logs", "in": "query", "schema": { "type": "boolean" } } ], "responses": { "200": { "description": "server-sent events stream of job updates", "content": { "text/event-stream": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/jobs_u/get_log_file/{path}": { "get": { "summary": "get log file from object store", "operationId": "getLogFileFromStore", "tags": [ "job" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "name": "path", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "job log", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/jobs_u/get_flow_debug_info/{id}": { "get": { "summary": "get flow debug info", "operationId": "getFlowDebugInfo", "tags": [ "job" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/JobId" } ], "responses": { "200": { "description": "flow debug info details", "content": { "application/json": { "schema": {} } } } } } }, "/w/{workspace}/jobs_u/completed/get/{id}": { "get": { "summary": "get completed job", "operationId": "getCompletedJob", "tags": [ "job" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/JobId" } ], "responses": { "200": { "description": "job details", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CompletedJob" } } } } } } }, "/w/{workspace}/jobs_u/completed/get_result/{id}": { "get": { "summary": "get completed job result", "operationId": "getCompletedJobResult", "tags": [ "job" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/JobId" }, { "name": "suspended_job", "in": "query", "schema": { "type": "string" } }, { "name": "resume_id", "in": "query", "schema": { "type": "integer" } }, { "name": "secret", "in": "query", "schema": { "type": "string" } }, { "name": "approver", "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "description": "result", "content": { "application/json": { "schema": {} } } } } } }, "/w/{workspace}/jobs_u/completed/get_result_maybe/{id}": { "get": { "summary": "get completed job result if job is completed", "operationId": "getCompletedJobResultMaybe", "tags": [ "job" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/JobId" }, { "$ref": "#/components/parameters/GetStarted" } ], "responses": { "200": { "description": "result", "content": { "application/json": { "schema": { "type": "object", "properties": { "completed": { "type": "boolean" }, "result": {}, "success": { "type": "boolean" }, "started": { "type": "boolean" } }, "required": [ "completed", "result" ] } } } } } } }, "/w/{workspace}/jobs_u/completed/get_timing/{id}": { "get": { "summary": "get completed job timing", "operationId": "getCompletedJobTiming", "tags": [ "job" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/JobId" } ], "responses": { "200": { "description": "job timing details", "content": { "application/json": { "schema": { "type": "object", "properties": { "created_at": { "type": "string", "format": "date-time" }, "started_at": { "type": "string", "format": "date-time" }, "duration_ms": { "type": "integer" } }, "required": [ "created_at" ] } } } } } } }, "/w/{workspace}/jobs/completed/delete/{id}": { "post": { "summary": "delete completed job (erase content but keep run id)", "operationId": "deleteCompletedJob", "tags": [ "job" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/JobId" } ], "responses": { "200": { "description": "job details", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CompletedJob" } } } } } } }, "/w/{workspace}/jobs_u/queue/cancel/{id}": { "post": { "summary": "cancel queued or running job", "operationId": "cancelQueuedJob", "tags": [ "job" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/JobId" } ], "requestBody": { "description": "reason", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "reason": { "type": "string" } } } } } }, "responses": { "200": { "description": "job canceled", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/jobs_u/queue/cancel_persistent/{path}": { "post": { "summary": "cancel all queued jobs for persistent script", "operationId": "cancelPersistentQueuedJobs", "tags": [ "job" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" } ], "requestBody": { "description": "reason", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "reason": { "type": "string" } } } } } }, "responses": { "200": { "description": "persistent job scaled down to zero", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/jobs_u/queue/force_cancel/{id}": { "post": { "summary": "force cancel queued job", "operationId": "forceCancelQueuedJob", "tags": [ "job" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/JobId" } ], "requestBody": { "description": "reason", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "reason": { "type": "string" } } } } } }, "responses": { "200": { "description": "job canceled", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/jobs/queue/position/{scheduled_for}": { "get": { "summary": "get queue position for a job", "operationId": "getQueuePosition", "tags": [ "job" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "name": "scheduled_for", "in": "path", "required": true, "schema": { "type": "integer", "description": "The scheduled for timestamp in milliseconds" } } ], "responses": { "200": { "description": "queue position information", "content": { "application/json": { "schema": { "type": "object", "properties": { "position": { "type": "integer", "description": "The position in queue (1-based), null if not in queue or already running" } } } } } } } } }, "/w/{workspace}/jobs/queue/scheduled_for/{id}": { "get": { "summary": "get scheduled for timestamp for a job", "operationId": "getScheduledFor", "tags": [ "job" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/JobId" } ], "responses": { "200": { "description": "scheduled for timestamp", "content": { "application/json": { "schema": { "type": "integer" } } } } } } }, "/w/{workspace}/jobs/job_signature/{id}/{resume_id}": { "get": { "summary": "create an HMac signature given a job id and a resume id", "operationId": "createJobSignature", "tags": [ "job" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/JobId" }, { "name": "resume_id", "in": "path", "required": true, "schema": { "type": "integer" } }, { "name": "approver", "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "description": "job signature", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/jobs/resume_urls/{id}/{resume_id}": { "get": { "summary": "get resume urls given a job_id, resume_id and a nonce to resume a flow", "operationId": "getResumeUrls", "tags": [ "job" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/JobId" }, { "name": "resume_id", "in": "path", "required": true, "schema": { "type": "integer" } }, { "name": "approver", "in": "query", "schema": { "type": "string" } }, { "name": "flow_level", "in": "query", "description": "If true, generate resume URLs for the parent flow instead of the specific step. This allows pre-approvals that can be consumed by any later suspend step in the same flow.", "schema": { "type": "boolean" } } ], "responses": { "200": { "description": "url endpoints", "content": { "application/json": { "schema": { "type": "object", "properties": { "approvalPage": { "type": "string" }, "resume": { "type": "string" }, "cancel": { "type": "string" } }, "required": [ "approvalPage", "resume", "cancel" ] } } } } } } }, "/w/{workspace}/jobs/slack_approval/{id}": { "get": { "summary": "generate interactive slack approval for suspended job", "operationId": "getSlackApprovalPayload", "tags": [ "job" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/JobId" }, { "name": "approver", "in": "query", "schema": { "type": "string" } }, { "name": "message", "in": "query", "schema": { "type": "string" } }, { "name": "slack_resource_path", "in": "query", "required": true, "schema": { "type": "string" } }, { "name": "channel_id", "in": "query", "required": true, "schema": { "type": "string" } }, { "name": "flow_step_id", "in": "query", "required": true, "schema": { "type": "string" } }, { "name": "default_args_json", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "dynamic_enums_json", "in": "query", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "Interactive slack approval message sent successfully" } } } }, "/w/{workspace}/jobs/teams_approval/{id}": { "get": { "summary": "generate interactive teams approval for suspended job", "operationId": "getTeamsApprovalPayload", "tags": [ "job" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/JobId" }, { "name": "approver", "in": "query", "schema": { "type": "string" } }, { "name": "message", "in": "query", "schema": { "type": "string" } }, { "name": "team_name", "in": "query", "required": true, "schema": { "type": "string" } }, { "name": "channel_name", "in": "query", "required": true, "schema": { "type": "string" } }, { "name": "flow_step_id", "in": "query", "required": true, "schema": { "type": "string" } }, { "name": "default_args_json", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "dynamic_enums_json", "in": "query", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "Interactive slack approval message sent successfully" } } } }, "/w/{workspace}/jobs_u/resume/{id}/{resume_id}/{signature}": { "get": { "summary": "resume a job for a suspended flow", "operationId": "resumeSuspendedJobGet", "tags": [ "job" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/JobId" }, { "$ref": "#/components/parameters/Payload" }, { "name": "resume_id", "in": "path", "required": true, "schema": { "type": "integer" } }, { "name": "signature", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "approver", "in": "query", "schema": { "type": "string" } } ], "responses": { "201": { "description": "job resumed", "content": { "text/plain": { "schema": { "type": "string" } } } } } }, "post": { "summary": "resume a job for a suspended flow", "operationId": "resumeSuspendedJobPost", "tags": [ "job" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/JobId" }, { "name": "resume_id", "in": "path", "required": true, "schema": { "type": "integer" } }, { "name": "signature", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "approver", "in": "query", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object" } } } }, "responses": { "201": { "description": "job resumed", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/jobs/flow/user_states/{id}/{key}": { "post": { "summary": "set flow user state at a given key", "operationId": "setFlowUserState", "tags": [ "job" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/JobId" }, { "name": "key", "in": "path", "required": true, "schema": { "type": "string" } } ], "requestBody": { "description": "new value", "required": true, "content": { "application/json": { "schema": {} } } }, "responses": { "200": { "description": "flow user state updated", "content": { "text/plain": { "schema": { "type": "string" } } } } } }, "get": { "summary": "get flow user state at a given key", "operationId": "getFlowUserState", "tags": [ "job" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/JobId" }, { "name": "key", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "flow user state updated", "content": { "application/json": { "schema": {} } } } } } }, "/w/{workspace}/jobs/flow/resume/{id}": { "post": { "summary": "resume a job for a suspended flow as an owner", "operationId": "resumeSuspendedFlowAsOwner", "tags": [ "job" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/JobId" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object" } } } }, "responses": { "201": { "description": "job resumed", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/jobs_u/cancel/{id}/{resume_id}/{signature}": { "get": { "summary": "cancel a job for a suspended flow", "operationId": "cancelSuspendedJobGet", "tags": [ "job" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/JobId" }, { "name": "resume_id", "in": "path", "required": true, "schema": { "type": "integer" } }, { "name": "signature", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "approver", "in": "query", "schema": { "type": "string" } } ], "responses": { "201": { "description": "job canceled", "content": { "text/plain": { "schema": { "type": "string" } } } } } }, "post": { "summary": "cancel a job for a suspended flow", "operationId": "cancelSuspendedJobPost", "tags": [ "job" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/JobId" }, { "name": "resume_id", "in": "path", "required": true, "schema": { "type": "integer" } }, { "name": "signature", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "approver", "in": "query", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object" } } } }, "responses": { "201": { "description": "job canceled", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/jobs_u/get_flow/{id}/{resume_id}/{signature}": { "get": { "summary": "get parent flow job of suspended job", "operationId": "getSuspendedJobFlow", "tags": [ "job" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/JobId" }, { "name": "resume_id", "in": "path", "required": true, "schema": { "type": "integer" } }, { "name": "signature", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "approver", "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "description": "parent flow details", "content": { "application/json": { "schema": { "type": "object", "properties": { "job": { "$ref": "#/components/schemas/Job" }, "approvers": { "type": "array", "items": { "type": "object", "properties": { "resume_id": { "type": "integer" }, "approver": { "type": "string" } }, "required": [ "resume_id", "approver" ] } } }, "required": [ "job", "approvers" ] } } } } } } }, "/schedules/preview": { "post": { "summary": "preview schedule", "operationId": "previewSchedule", "tags": [ "schedule" ], "requestBody": { "description": "schedule", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "schedule": { "type": "string" }, "timezone": { "type": "string" }, "cron_version": { "type": "string" } }, "required": [ "schedule", "timezone" ] } } } }, "responses": { "200": { "description": "List of 5 estimated upcoming execution events (in UTC)", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "string", "format": "date-time" } } } } } } } }, "/w/{workspace}/schedules/create": { "post": { "summary": "create schedule", "operationId": "createSchedule", "x-mcp-tool": true, "x-mcp-instructions": "Creates a new schedule.\nThe schedule should include seconds.\nYou should get the schema of the script or flow before creating the schedule to correctly specify the arguments needed.\n", "tags": [ "schedule" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "new schedule", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NewSchedule" } } } }, "responses": { "201": { "description": "schedule created", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/schedules/update/{path}": { "post": { "summary": "update schedule", "operationId": "updateSchedule", "x-mcp-tool": true, "x-mcp-instructions": "Updates a schedule.\nThe schedule should include seconds.\nYou should get the schema of the script or flow before updating the schedule to correctly specify the arguments needed.\n", "tags": [ "schedule" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" } ], "requestBody": { "description": "updated schedule", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EditSchedule" } } } }, "responses": { "200": { "description": "schedule updated", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/schedules/setenabled/{path}": { "post": { "summary": "set enabled schedule", "operationId": "setScheduleEnabled", "tags": [ "schedule" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" } ], "requestBody": { "description": "updated schedule enable", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "enabled": { "type": "boolean" } }, "required": [ "enabled" ] } } } }, "responses": { "200": { "description": "schedule enabled set", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/schedules/delete/{path}": { "delete": { "summary": "delete schedule", "operationId": "deleteSchedule", "x-mcp-tool": true, "tags": [ "schedule" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" } ], "responses": { "200": { "description": "schedule deleted", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/schedules/get/{path}": { "get": { "summary": "get schedule", "operationId": "getSchedule", "x-mcp-tool": true, "tags": [ "schedule" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" } ], "responses": { "200": { "description": "schedule deleted", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Schedule" } } } } } } }, "/w/{workspace}/schedules/exists/{path}": { "get": { "summary": "does schedule exists", "operationId": "existsSchedule", "tags": [ "schedule" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" } ], "responses": { "200": { "description": "schedule exists", "content": { "application/json": { "schema": { "type": "boolean" } } } } } } }, "/w/{workspace}/schedules/list": { "get": { "summary": "list schedules", "operationId": "listSchedules", "x-mcp-tool": true, "tags": [ "schedule" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Page" }, { "$ref": "#/components/parameters/PerPage" }, { "$ref": "#/components/parameters/ArgsFilter" }, { "name": "path", "description": "filter by path", "in": "query", "schema": { "type": "string" } }, { "name": "is_flow", "description": "filter schedules by whether they target a flow", "in": "query", "schema": { "type": "boolean" } }, { "name": "path_start", "description": "filter schedules by path prefix", "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "description": "schedule list", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Schedule" } } } } } } } }, "/w/{workspace}/schedules/list_with_jobs": { "get": { "summary": "list schedules with last 20 jobs", "operationId": "listSchedulesWithJobs", "tags": [ "schedule" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Page" }, { "$ref": "#/components/parameters/PerPage" } ], "responses": { "200": { "description": "schedule list", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ScheduleWJobs" } } } } } } } }, "/w/{workspace}/schedules/setdefaulthandler": { "post": { "summary": "Set default error or recoevery handler", "operationId": "setDefaultErrorOrRecoveryHandler", "tags": [ "schedule" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "Handler description", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "handler_type": { "type": "string", "enum": [ "error", "recovery", "success" ] }, "override_existing": { "type": "boolean" }, "path": { "type": "string" }, "extra_args": { "type": "object" }, "number_of_occurence": { "type": "integer" }, "number_of_occurence_exact": { "type": "boolean" }, "workspace_handler_muted": { "type": "boolean" } }, "required": [ "handler_type", "override_existing" ] } } } }, "responses": { "201": { "description": "default error handler set" } } } }, "/w/{workspace}/openapi/generate": { "post": { "summary": "generate openapi spec from http routes/webhook", "operationId": "generateOpenapiSpec", "tags": [ "openapi" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "openapi spec info and url", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GenerateOpenapiSpec" } } } }, "responses": { "200": { "description": "openapi spec", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/openapi/download": { "post": { "summary": "Download the OpenAPI v3.1 spec as a file", "operationId": "DownloadOpenapiSpec", "tags": [ "openapi" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "openapi spec info and url", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GenerateOpenapiSpec" } } } }, "responses": { "200": { "description": "Downloaded OpenAPI spec", "content": { "application/octet-stream": { "schema": { "type": "string", "format": "binary" } } } } } } }, "/w/{workspace}/http_triggers/create_many": { "post": { "summary": "create many HTTP triggers", "operationId": "createHttpTriggers", "tags": [ "http_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "new http trigger", "required": true, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/NewHttpTrigger" } } } } }, "responses": { "201": { "description": "http trigger created", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/http_triggers/create": { "post": { "summary": "create http trigger", "operationId": "createHttpTrigger", "tags": [ "http_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "new http trigger", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NewHttpTrigger" } } } }, "responses": { "201": { "description": "http trigger created", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/http_triggers/update/{path}": { "post": { "summary": "update http trigger", "operationId": "updateHttpTrigger", "tags": [ "http_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" } ], "requestBody": { "description": "updated trigger", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EditHttpTrigger" } } } }, "responses": { "200": { "description": "http trigger updated", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/http_triggers/delete/{path}": { "delete": { "summary": "delete http trigger", "operationId": "deleteHttpTrigger", "tags": [ "http_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" } ], "responses": { "200": { "description": "http trigger deleted", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/http_triggers/get/{path}": { "get": { "summary": "get http trigger", "operationId": "getHttpTrigger", "tags": [ "http_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" } ], "responses": { "200": { "description": "http trigger deleted", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpTrigger" } } } } } } }, "/w/{workspace}/http_triggers/list": { "get": { "summary": "list http triggers", "operationId": "listHttpTriggers", "tags": [ "http_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId", "required": true }, { "$ref": "#/components/parameters/Page" }, { "$ref": "#/components/parameters/PerPage" }, { "name": "path", "description": "filter by path", "in": "query", "schema": { "type": "string" } }, { "name": "is_flow", "in": "query", "schema": { "type": "boolean" } }, { "name": "path_start", "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "description": "http trigger list", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/HttpTrigger" } } } } } } } }, "/w/{workspace}/http_triggers/exists/{path}": { "get": { "summary": "does http trigger exists", "operationId": "existsHttpTrigger", "tags": [ "http_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" } ], "responses": { "200": { "description": "http trigger exists", "content": { "application/json": { "schema": { "type": "boolean" } } } } } } }, "/w/{workspace}/http_triggers/route_exists": { "post": { "summary": "does route exists", "operationId": "existsRoute", "tags": [ "http_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "route exists request", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "route_path": { "type": "string" }, "http_method": { "$ref": "#/components/schemas/HttpMethod" }, "trigger_path": { "type": "string" }, "workspaced_route": { "type": "boolean" } }, "required": [ "route_path", "http_method" ] } } } }, "responses": { "200": { "description": "route exists", "content": { "application/json": { "schema": { "type": "boolean" } } } } } } }, "/w/{workspace}/http_triggers/setmode/{path}": { "post": { "summary": "enable/disable http trigger", "operationId": "setHttpTriggerMode", "tags": [ "http_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "mode": { "$ref": "#/components/schemas/TriggerMode" } }, "required": [ "mode" ] } } } }, "responses": { "200": { "description": "http trigger enable/disable", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/websocket_triggers/create": { "post": { "summary": "create websocket trigger", "operationId": "createWebsocketTrigger", "tags": [ "websocket_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "new websocket trigger", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NewWebsocketTrigger" } } } }, "responses": { "201": { "description": "websocket trigger created", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/websocket_triggers/update/{path}": { "post": { "summary": "update websocket trigger", "operationId": "updateWebsocketTrigger", "tags": [ "websocket_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" } ], "requestBody": { "description": "updated trigger", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EditWebsocketTrigger" } } } }, "responses": { "200": { "description": "websocket trigger updated", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/websocket_triggers/delete/{path}": { "delete": { "summary": "delete websocket trigger", "operationId": "deleteWebsocketTrigger", "tags": [ "websocket_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" } ], "responses": { "200": { "description": "websocket trigger deleted", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/websocket_triggers/get/{path}": { "get": { "summary": "get websocket trigger", "operationId": "getWebsocketTrigger", "tags": [ "websocket_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" } ], "responses": { "200": { "description": "websocket trigger deleted", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WebsocketTrigger" } } } } } } }, "/w/{workspace}/websocket_triggers/list": { "get": { "summary": "list websocket triggers", "operationId": "listWebsocketTriggers", "tags": [ "websocket_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId", "required": true }, { "$ref": "#/components/parameters/Page" }, { "$ref": "#/components/parameters/PerPage" }, { "name": "path", "description": "filter by path", "in": "query", "schema": { "type": "string" } }, { "name": "is_flow", "in": "query", "schema": { "type": "boolean" } }, { "name": "path_start", "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "description": "websocket trigger list", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/WebsocketTrigger" } } } } } } } }, "/w/{workspace}/websocket_triggers/exists/{path}": { "get": { "summary": "does websocket trigger exists", "operationId": "existsWebsocketTrigger", "tags": [ "websocket_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" } ], "responses": { "200": { "description": "websocket trigger exists", "content": { "application/json": { "schema": { "type": "boolean" } } } } } } }, "/w/{workspace}/websocket_triggers/setmode/{path}": { "post": { "summary": "set enabled websocket trigger", "operationId": "setWebsocketTriggerMode", "tags": [ "websocket_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" } ], "requestBody": { "description": "updated websocket trigger enable", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "mode": { "$ref": "#/components/schemas/TriggerMode" } }, "required": [ "mode" ] } } } }, "responses": { "200": { "description": "websocket trigger enabled set", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/websocket_triggers/test": { "post": { "summary": "test websocket connection", "operationId": "testWebsocketConnection", "tags": [ "websocket_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "test websocket connection", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "url": { "type": "string" }, "url_runnable_args": { "$ref": "#/components/schemas/ScriptArgs" }, "can_return_message": { "type": "boolean" } }, "required": [ "url", "can_return_message" ] } } } }, "responses": { "200": { "description": "successfuly connected to websocket", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/kafka_triggers/create": { "post": { "summary": "create kafka trigger", "operationId": "createKafkaTrigger", "tags": [ "kafka_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "new kafka trigger", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NewKafkaTrigger" } } } }, "responses": { "201": { "description": "kafka trigger created", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/kafka_triggers/update/{path}": { "post": { "summary": "update kafka trigger", "operationId": "updateKafkaTrigger", "tags": [ "kafka_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" } ], "requestBody": { "description": "updated trigger", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EditKafkaTrigger" } } } }, "responses": { "200": { "description": "kafka trigger updated", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/kafka_triggers/delete/{path}": { "delete": { "summary": "delete kafka trigger", "operationId": "deleteKafkaTrigger", "tags": [ "kafka_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" } ], "responses": { "200": { "description": "kafka trigger deleted", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/kafka_triggers/get/{path}": { "get": { "summary": "get kafka trigger", "operationId": "getKafkaTrigger", "tags": [ "kafka_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" } ], "responses": { "200": { "description": "kafka trigger deleted", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/KafkaTrigger" } } } } } } }, "/w/{workspace}/kafka_triggers/list": { "get": { "summary": "list kafka triggers", "operationId": "listKafkaTriggers", "tags": [ "kafka_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId", "required": true }, { "$ref": "#/components/parameters/Page" }, { "$ref": "#/components/parameters/PerPage" }, { "name": "path", "description": "filter by path", "in": "query", "schema": { "type": "string" } }, { "name": "is_flow", "in": "query", "schema": { "type": "boolean" } }, { "name": "path_start", "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "description": "kafka trigger list", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/KafkaTrigger" } } } } } } } }, "/w/{workspace}/kafka_triggers/exists/{path}": { "get": { "summary": "does kafka trigger exists", "operationId": "existsKafkaTrigger", "tags": [ "kafka_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" } ], "responses": { "200": { "description": "kafka trigger exists", "content": { "application/json": { "schema": { "type": "boolean" } } } } } } }, "/w/{workspace}/kafka_triggers/setmode/{path}": { "post": { "summary": "set enabled kafka trigger", "operationId": "setKafkaTriggerMode", "tags": [ "kafka_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" } ], "requestBody": { "description": "updated kafka trigger enable", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "mode": { "$ref": "#/components/schemas/TriggerMode" } }, "required": [ "mode" ] } } } }, "responses": { "200": { "description": "kafka trigger enabled set", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/kafka_triggers/test": { "post": { "summary": "test kafka connection", "operationId": "testKafkaConnection", "tags": [ "kafka_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "test kafka connection", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "connection": { "type": "object" } }, "required": [ "connection" ] } } } }, "responses": { "200": { "description": "successfuly connected to kafka brokers", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/nats_triggers/create": { "post": { "summary": "create nats trigger", "operationId": "createNatsTrigger", "tags": [ "nats_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "new nats trigger", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NewNatsTrigger" } } } }, "responses": { "201": { "description": "nats trigger created", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/nats_triggers/update/{path}": { "post": { "summary": "update nats trigger", "operationId": "updateNatsTrigger", "tags": [ "nats_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" } ], "requestBody": { "description": "updated trigger", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EditNatsTrigger" } } } }, "responses": { "200": { "description": "nats trigger updated", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/nats_triggers/delete/{path}": { "delete": { "summary": "delete nats trigger", "operationId": "deleteNatsTrigger", "tags": [ "nats_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" } ], "responses": { "200": { "description": "nats trigger deleted", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/nats_triggers/get/{path}": { "get": { "summary": "get nats trigger", "operationId": "getNatsTrigger", "tags": [ "nats_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" } ], "responses": { "200": { "description": "nats trigger deleted", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NatsTrigger" } } } } } } }, "/w/{workspace}/nats_triggers/list": { "get": { "summary": "list nats triggers", "operationId": "listNatsTriggers", "tags": [ "nats_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId", "required": true }, { "$ref": "#/components/parameters/Page" }, { "$ref": "#/components/parameters/PerPage" }, { "name": "path", "description": "filter by path", "in": "query", "schema": { "type": "string" } }, { "name": "is_flow", "in": "query", "schema": { "type": "boolean" } }, { "name": "path_start", "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "description": "nats trigger list", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/NatsTrigger" } } } } } } } }, "/w/{workspace}/nats_triggers/exists/{path}": { "get": { "summary": "does nats trigger exists", "operationId": "existsNatsTrigger", "tags": [ "nats_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" } ], "responses": { "200": { "description": "nats trigger exists", "content": { "application/json": { "schema": { "type": "boolean" } } } } } } }, "/w/{workspace}/nats_triggers/setmode/{path}": { "post": { "summary": "set enabled nats trigger", "operationId": "setNatsTriggerMode", "tags": [ "nats_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" } ], "requestBody": { "description": "updated nats trigger enable", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "mode": { "$ref": "#/components/schemas/TriggerMode" } }, "required": [ "mode" ] } } } }, "responses": { "200": { "description": "nats trigger enabled set", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/nats_triggers/test": { "post": { "summary": "test NATS connection", "operationId": "testNatsConnection", "tags": [ "nats_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "test nats connection", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "connection": { "type": "object" } }, "required": [ "connection" ] } } } }, "responses": { "200": { "description": "successfuly connected to NATS servers", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/sqs_triggers/create": { "post": { "summary": "create sqs trigger", "operationId": "createSqsTrigger", "tags": [ "sqs_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "new sqs trigger", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NewSqsTrigger" } } } }, "responses": { "201": { "description": "sqs trigger created", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/sqs_triggers/update/{path}": { "post": { "summary": "update sqs trigger", "operationId": "updateSqsTrigger", "tags": [ "sqs_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" } ], "requestBody": { "description": "updated trigger", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EditSqsTrigger" } } } }, "responses": { "200": { "description": "sqs trigger updated", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/sqs_triggers/delete/{path}": { "delete": { "summary": "delete sqs trigger", "operationId": "deleteSqsTrigger", "tags": [ "sqs_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" } ], "responses": { "200": { "description": "sqs trigger deleted", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/sqs_triggers/get/{path}": { "get": { "summary": "get sqs trigger", "operationId": "getSqsTrigger", "tags": [ "sqs_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" } ], "responses": { "200": { "description": "sqs trigger deleted", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SqsTrigger" } } } } } } }, "/w/{workspace}/sqs_triggers/list": { "get": { "summary": "list sqs triggers", "operationId": "listSqsTriggers", "tags": [ "sqs_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId", "required": true }, { "$ref": "#/components/parameters/Page" }, { "$ref": "#/components/parameters/PerPage" }, { "name": "path", "description": "filter by path", "in": "query", "schema": { "type": "string" } }, { "name": "is_flow", "in": "query", "schema": { "type": "boolean" } }, { "name": "path_start", "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "description": "sqs trigger list", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SqsTrigger" } } } } } } } }, "/w/{workspace}/sqs_triggers/exists/{path}": { "get": { "summary": "does sqs trigger exists", "operationId": "existsSqsTrigger", "tags": [ "sqs_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" } ], "responses": { "200": { "description": "sqs trigger exists", "content": { "application/json": { "schema": { "type": "boolean" } } } } } } }, "/w/{workspace}/sqs_triggers/setmode/{path}": { "post": { "summary": "set enabled sqs trigger", "operationId": "setSqsTriggerMode", "tags": [ "sqs_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" } ], "requestBody": { "description": "updated sqs trigger enable", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "mode": { "$ref": "#/components/schemas/TriggerMode" } }, "required": [ "mode" ] } } } }, "responses": { "200": { "description": "sqs trigger enabled set", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/sqs_triggers/test": { "post": { "summary": "test sqs connection", "operationId": "testSqsConnection", "tags": [ "sqs_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "test sqs connection", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "connection": { "type": "object" } }, "required": [ "connection" ] } } } }, "responses": { "200": { "description": "successfuly connected to sqs", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/native_triggers/integrations/list": { "get": { "summary": "list available native trigger services", "operationId": "listNativeTriggerServices", "tags": [ "workspace_integration" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "responses": { "200": { "description": "native trigger services list", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/WorkspaceIntegrations" } } } } } } } }, "/w/{workspace}/native_triggers/integrations/{service_name}/exists": { "get": { "summary": "check if integrations for a particular service exists", "operationId": "checkIfNativeTriggersServiceExists", "tags": [ "workspace_integration" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "name": "service_name", "in": "path", "required": true, "schema": { "$ref": "#/components/schemas/NativeServiceName" } } ], "responses": { "200": { "description": "integration exists", "content": { "application/json": { "schema": { "type": "boolean" } } } } } } }, "/w/{workspace}/native_triggers/integrations/{service_name}/create": { "post": { "summary": "create native trigger service", "operationId": "createNativeTriggerService", "tags": [ "workspace_integration" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "name": "service_name", "in": "path", "required": true, "schema": { "$ref": "#/components/schemas/NativeServiceName" } } ], "requestBody": { "description": "new native trigger service", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WorkspaceOAuthConfig" } } } }, "responses": { "201": { "description": "native trigger service created", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/native_triggers/integrations/{service_name}/generate_connect_url": { "post": { "summary": "generate connect url for native trigger service", "operationId": "generateNativeTriggerServiceConnectUrl", "tags": [ "workspace_integration" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "name": "service_name", "in": "path", "required": true, "schema": { "$ref": "#/components/schemas/NativeServiceName" } } ], "requestBody": { "description": "redirect_uri", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RedirectUri" } } } }, "responses": { "200": { "description": "native trigger service connect url", "content": { "application/json": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/native_triggers/integrations/{service_name}/delete": { "delete": { "summary": "delete native trigger service", "operationId": "deleteNativeTriggerService", "tags": [ "workspace_integration" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "name": "service_name", "in": "path", "required": true, "schema": { "$ref": "#/components/schemas/NativeServiceName" } } ], "responses": { "200": { "description": "native trigger service deleted", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/native_triggers/integrations/{service_name}/callback/{code}/{state}": { "post": { "summary": "native trigger service oauth callback", "operationId": "nativeTriggerServiceCallback", "tags": [ "workspace_integration" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "name": "service_name", "in": "path", "required": true, "schema": { "$ref": "#/components/schemas/NativeServiceName" } }, { "name": "code", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "state", "in": "path", "required": true, "schema": { "type": "string" } } ], "requestBody": { "description": "redirect_uri", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RedirectUri" } } } }, "responses": { "200": { "description": "native trigger service oauth completed", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/native_triggers/{service_name}/create": { "post": { "summary": "create native trigger", "description": "Creates a new native trigger for the specified service.\nRequires write access to the script or flow that the trigger will be associated with.\n", "operationId": "createNativeTrigger", "tags": [ "native_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "name": "service_name", "in": "path", "required": true, "schema": { "$ref": "#/components/schemas/NativeServiceName" } } ], "requestBody": { "description": "new native trigger configuration", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NativeTriggerData" } } } }, "responses": { "201": { "description": "native trigger created", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateTriggerResponse" } } } } } } }, "/w/{workspace}/native_triggers/{service_name}/update/{external_id}": { "post": { "summary": "update native trigger", "description": "Updates an existing native trigger.\nRequires write access to the script or flow that the trigger is associated with.\n", "operationId": "updateNativeTrigger", "tags": [ "native_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "name": "service_name", "in": "path", "required": true, "schema": { "$ref": "#/components/schemas/NativeServiceName" } }, { "name": "external_id", "in": "path", "required": true, "description": "The external ID of the trigger from the external service", "schema": { "type": "string" } } ], "requestBody": { "description": "updated native trigger configuration", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NativeTriggerData" } } } }, "responses": { "200": { "description": "native trigger updated", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/native_triggers/{service_name}/get/{external_id}": { "get": { "summary": "get native trigger", "description": "Retrieves a native trigger by its external ID.\nRequires write access to the script or flow that the trigger is associated with.\n", "operationId": "getNativeTrigger", "tags": [ "native_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "name": "service_name", "in": "path", "required": true, "schema": { "$ref": "#/components/schemas/NativeServiceName" } }, { "name": "external_id", "in": "path", "required": true, "description": "The external ID of the trigger from the external service", "schema": { "type": "string" } } ], "responses": { "200": { "description": "native trigger with external configuration", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NativeTriggerWithExternal" } } } } } } }, "/w/{workspace}/native_triggers/{service_name}/delete/{external_id}": { "delete": { "summary": "delete native trigger", "description": "Deletes a native trigger by its external ID.\nRequires write access to the script or flow that the trigger is associated with.\n", "operationId": "deleteNativeTrigger", "tags": [ "native_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "name": "service_name", "in": "path", "required": true, "schema": { "$ref": "#/components/schemas/NativeServiceName" } }, { "name": "external_id", "in": "path", "required": true, "description": "The external ID of the trigger from the external service", "schema": { "type": "string" } } ], "responses": { "200": { "description": "native trigger deleted", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/native_triggers/{service_name}/list": { "get": { "summary": "list native triggers", "description": "Lists all native triggers for the specified service in the workspace.", "operationId": "listNativeTriggers", "tags": [ "native_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "name": "service_name", "in": "path", "required": true, "schema": { "$ref": "#/components/schemas/NativeServiceName" } }, { "$ref": "#/components/parameters/Page" }, { "$ref": "#/components/parameters/PerPage" }, { "name": "path", "description": "filter by script path", "in": "query", "schema": { "type": "string" } }, { "name": "is_flow", "description": "filter by is_flow", "in": "query", "schema": { "type": "boolean" } } ], "responses": { "200": { "description": "native triggers list", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/NativeTrigger" } } } } } } } }, "/w/{workspace}/native_triggers/{service_name}/exists/{external_id}": { "get": { "summary": "check if native trigger exists", "description": "Checks if a native trigger with the given external ID exists.", "operationId": "existsNativeTrigger", "tags": [ "native_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "name": "service_name", "in": "path", "required": true, "schema": { "$ref": "#/components/schemas/NativeServiceName" } }, { "name": "external_id", "in": "path", "required": true, "description": "The external ID of the trigger from the external service", "schema": { "type": "string" } } ], "responses": { "200": { "description": "whether the native trigger exists", "content": { "application/json": { "schema": { "type": "boolean" } } } } } } }, "/w/{workspace}/native_triggers/{service_name}/sync": { "post": { "summary": "sync native triggers with external service", "operationId": "syncNativeTriggers", "tags": [ "native_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "name": "service_name", "in": "path", "required": true, "schema": { "$ref": "#/components/schemas/NativeServiceName" } } ], "responses": { "200": { "description": "sync completed successfully" } } } }, "/w/{workspace}/native_triggers/nextcloud/events": { "get": { "summary": "list available NextCloud events", "operationId": "listNextCloudEvents", "tags": [ "native_trigger" ], "parameters": [ { "name": "workspace", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "list of available NextCloud events", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/NextCloudEventType" } } } } } } } }, "/native_triggers/{service_name}/w/{workspace_id}/webhook/{internal_id}": { "post": { "summary": "receive webhook from external native trigger service", "operationId": "nativeTriggerWebhook", "tags": [ "native_trigger" ], "parameters": [ { "name": "service_name", "in": "path", "required": true, "schema": { "$ref": "#/components/schemas/NativeServiceName" } }, { "name": "workspace_id", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "internal_id", "in": "path", "required": true, "schema": { "type": "integer", "format": "int64" }, "description": "The internal database ID of the trigger" } ], "requestBody": { "description": "webhook payload from external service", "required": false, "content": { "application/json": { "schema": { "type": "object", "additionalProperties": true } }, "text/plain": { "schema": { "type": "string" } } } }, "responses": { "200": { "description": "webhook received successfully", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/mqtt_triggers/create": { "post": { "summary": "create mqtt trigger", "operationId": "createMqttTrigger", "tags": [ "mqtt_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "new mqtt trigger", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NewMqttTrigger" } } } }, "responses": { "201": { "description": "mqtt trigger created", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/mqtt_triggers/update/{path}": { "post": { "summary": "update mqtt trigger", "operationId": "updateMqttTrigger", "tags": [ "mqtt_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" } ], "requestBody": { "description": "updated trigger", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EditMqttTrigger" } } } }, "responses": { "200": { "description": "mqtt trigger updated", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/mqtt_triggers/delete/{path}": { "delete": { "summary": "delete mqtt trigger", "operationId": "deleteMqttTrigger", "tags": [ "mqtt_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" } ], "responses": { "200": { "description": "mqtt trigger deleted", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/mqtt_triggers/get/{path}": { "get": { "summary": "get mqtt trigger", "operationId": "getMqttTrigger", "tags": [ "mqtt_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" } ], "responses": { "200": { "description": "mqtt trigger deleted", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MqttTrigger" } } } } } } }, "/w/{workspace}/mqtt_triggers/list": { "get": { "summary": "list mqtt triggers", "operationId": "listMqttTriggers", "tags": [ "mqtt_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId", "required": true }, { "$ref": "#/components/parameters/Page" }, { "$ref": "#/components/parameters/PerPage" }, { "name": "path", "description": "filter by path", "in": "query", "schema": { "type": "string" } }, { "name": "is_flow", "in": "query", "schema": { "type": "boolean" } }, { "name": "path_start", "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "description": "mqtt trigger list", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/MqttTrigger" } } } } } } } }, "/w/{workspace}/mqtt_triggers/exists/{path}": { "get": { "summary": "does mqtt trigger exists", "operationId": "existsMqttTrigger", "tags": [ "mqtt_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" } ], "responses": { "200": { "description": "mqtt trigger exists", "content": { "application/json": { "schema": { "type": "boolean" } } } } } } }, "/w/{workspace}/mqtt_triggers/setmode/{path}": { "post": { "summary": "set enabled mqtt trigger", "operationId": "setMqttTriggerMode", "tags": [ "mqtt_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" } ], "requestBody": { "description": "updated mqtt trigger enable", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "mode": { "$ref": "#/components/schemas/TriggerMode" } }, "required": [ "mode" ] } } } }, "responses": { "200": { "description": "mqtt trigger enabled set", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/mqtt_triggers/test": { "post": { "summary": "test mqtt connection", "operationId": "testMqttConnection", "tags": [ "mqtt_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "test mqtt connection", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "connection": { "type": "object" } }, "required": [ "connection" ] } } } }, "responses": { "200": { "description": "successfully connected to mqtt", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/gcp_triggers/create": { "post": { "summary": "create gcp trigger", "operationId": "createGcpTrigger", "tags": [ "gcp_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "new gcp trigger", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GcpTriggerData" } } } }, "responses": { "201": { "description": "gcp trigger created", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/gcp_triggers/update/{path}": { "post": { "summary": "update gcp trigger", "operationId": "updateGcpTrigger", "tags": [ "gcp_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" } ], "requestBody": { "description": "updated trigger", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GcpTriggerData" } } } }, "responses": { "200": { "description": "gcp trigger updated", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/gcp_triggers/delete/{path}": { "delete": { "summary": "delete gcp trigger", "operationId": "deleteGcpTrigger", "tags": [ "gcp_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" } ], "responses": { "200": { "description": "gcp trigger deleted", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/gcp_triggers/get/{path}": { "get": { "summary": "get gcp trigger", "operationId": "getGcpTrigger", "tags": [ "gcp_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" } ], "responses": { "200": { "description": "gcp trigger deleted", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GcpTrigger" } } } } } } }, "/w/{workspace}/gcp_triggers/list": { "get": { "summary": "list gcp triggers", "operationId": "listGcpTriggers", "tags": [ "gcp_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId", "required": true }, { "$ref": "#/components/parameters/Page" }, { "$ref": "#/components/parameters/PerPage" }, { "name": "path", "description": "filter by path", "in": "query", "schema": { "type": "string" } }, { "name": "is_flow", "in": "query", "schema": { "type": "boolean" } }, { "name": "path_start", "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "description": "gcp trigger list", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/GcpTrigger" } } } } } } } }, "/w/{workspace}/gcp_triggers/exists/{path}": { "get": { "summary": "does gcp trigger exists", "operationId": "existsGcpTrigger", "tags": [ "gcp_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" } ], "responses": { "200": { "description": "gcp trigger exists", "content": { "application/json": { "schema": { "type": "boolean" } } } } } } }, "/w/{workspace}/gcp_triggers/setmode/{path}": { "post": { "summary": "set enabled gcp trigger", "operationId": "setGcpTriggerMode", "tags": [ "gcp_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" } ], "requestBody": { "description": "updated gcp trigger enable", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "mode": { "$ref": "#/components/schemas/TriggerMode" } }, "required": [ "mode" ] } } } }, "responses": { "200": { "description": "gcp trigger enabled set", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/gcp_triggers/test": { "post": { "summary": "test gcp connection", "operationId": "testGcpConnection", "tags": [ "gcp_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "test gcp connection", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "connection": { "type": "object" } }, "required": [ "connection" ] } } } }, "responses": { "200": { "description": "try to connect to a gcp broker", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/gcp_triggers/subscriptions/delete/{path}": { "delete": { "summary": "delete gcp trigger", "operationId": "deleteGcpSubscription", "tags": [ "gcp_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" } ], "requestBody": { "description": "args to delete subscription from google cloud", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DeleteGcpSubscription" } } } }, "responses": { "200": { "description": "gcp trigger deleted", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/gcp_triggers/topics/list/{path}": { "get": { "summary": "list all topics of google cloud service", "operationId": "listGoogleTopics", "tags": [ "gcp_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" } ], "responses": { "200": { "description": "get all google topics", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "string" } } } } } } } }, "/w/{workspace}/gcp_triggers/subscriptions/list/{path}": { "post": { "summary": "list all subscription of a give topic from google cloud service", "operationId": "listAllTGoogleTopicSubscriptions", "tags": [ "gcp_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" } ], "requestBody": { "description": "args to get subscription's topic from google cloud", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetAllTopicSubscription" } } } }, "responses": { "200": { "description": "get all google topic subscriptions name", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "string" } } } } } } } }, "/w/{workspace}/postgres_triggers/postgres/version/{path}": { "get": { "summary": "get postgres version", "operationId": "getPostgresVersion", "tags": [ "postgres_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" } ], "responses": { "200": { "description": "postgres version", "content": { "application/json": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/postgres_triggers/is_valid_postgres_configuration/{path}": { "get": { "summary": "check if postgres configuration is set to logical", "operationId": "isValidPostgresConfiguration", "tags": [ "postgres_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" } ], "responses": { "200": { "description": "boolean that indicates if postgres is set to logical level or not", "content": { "application/json": { "schema": { "type": "boolean" } } } } } } }, "/w/{workspace}/postgres_triggers/create_template_script": { "post": { "summary": "create template script", "operationId": "createTemplateScript", "tags": [ "postgres_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "template script", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TemplateScript" } } } }, "responses": { "200": { "description": "custom id to retrieve template script", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/postgres_triggers/get_template_script/{id}": { "get": { "summary": "get template script", "operationId": "getTemplateScript", "tags": [ "postgres_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Id" } ], "responses": { "200": { "description": "template script", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/postgres_triggers/slot/list/{path}": { "get": { "summary": "list postgres replication slot", "operationId": "listPostgresReplicationSlot", "tags": [ "postgres_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" } ], "responses": { "200": { "description": "list postgres slot", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SlotList" } } } } } } } }, "/w/{workspace}/postgres_triggers/slot/create/{path}": { "post": { "summary": "create replication slot for postgres", "operationId": "createPostgresReplicationSlot", "tags": [ "postgres_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" } ], "requestBody": { "description": "new slot for postgres", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Slot" } } } }, "responses": { "201": { "description": "slot created", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/postgres_triggers/slot/delete/{path}": { "delete": { "summary": "delete postgres replication slot", "operationId": "deletePostgresReplicationSlot", "tags": [ "postgres_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" } ], "requestBody": { "description": "replication slot of postgres", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Slot" } } } }, "responses": { "200": { "description": "postgres replication slot deleted", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/postgres_triggers/publication/list/{path}": { "get": { "summary": "list postgres publication", "operationId": "listPostgresPublication", "tags": [ "postgres_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" } ], "responses": { "200": { "description": "database publication list", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "string" } } } } } } } }, "/w/{workspace}/postgres_triggers/publication/get/{publication}/{path}": { "get": { "summary": "get postgres publication", "operationId": "getPostgresPublication", "tags": [ "postgres_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" }, { "$ref": "#/components/parameters/PublicationName" } ], "responses": { "200": { "description": "postgres publication get", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PublicationData" } } } } } } }, "/w/{workspace}/postgres_triggers/publication/create/{publication}/{path}": { "post": { "summary": "create publication for postgres", "operationId": "createPostgresPublication", "tags": [ "postgres_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" }, { "$ref": "#/components/parameters/PublicationName" } ], "requestBody": { "description": "new publication for postgres", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PublicationData" } } } }, "responses": { "201": { "description": "publication created", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/postgres_triggers/publication/update/{publication}/{path}": { "post": { "summary": "update publication for postgres", "operationId": "updatePostgresPublication", "tags": [ "postgres_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" }, { "$ref": "#/components/parameters/PublicationName" } ], "requestBody": { "description": "update publication for postgres", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PublicationData" } } } }, "responses": { "201": { "description": "publication updated", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/postgres_triggers/publication/delete/{publication}/{path}": { "delete": { "summary": "delete postgres publication", "operationId": "deletePostgresPublication", "tags": [ "postgres_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" }, { "$ref": "#/components/parameters/PublicationName" } ], "responses": { "200": { "description": "postgres publication deleted", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/postgres_triggers/create": { "post": { "summary": "create postgres trigger", "operationId": "createPostgresTrigger", "tags": [ "postgres_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "new postgres trigger", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NewPostgresTrigger" } } } }, "responses": { "201": { "description": "postgres trigger created", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/postgres_triggers/update/{path}": { "post": { "summary": "update postgres trigger", "operationId": "updatePostgresTrigger", "tags": [ "postgres_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" } ], "requestBody": { "description": "updated trigger", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EditPostgresTrigger" } } } }, "responses": { "200": { "description": "postgres trigger updated", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/postgres_triggers/delete/{path}": { "delete": { "summary": "delete postgres trigger", "operationId": "deletePostgresTrigger", "tags": [ "postgres_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" } ], "responses": { "200": { "description": "postgres trigger deleted", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/postgres_triggers/get/{path}": { "get": { "summary": "get postgres trigger", "operationId": "getPostgresTrigger", "tags": [ "postgres_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" } ], "responses": { "200": { "description": "get postgres trigger", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PostgresTrigger" } } } } } } }, "/w/{workspace}/postgres_triggers/list": { "get": { "summary": "list postgres triggers", "operationId": "listPostgresTriggers", "tags": [ "postgres_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId", "required": true }, { "$ref": "#/components/parameters/Page" }, { "$ref": "#/components/parameters/PerPage" }, { "name": "path", "description": "filter by path", "in": "query", "schema": { "type": "string" } }, { "name": "is_flow", "in": "query", "schema": { "type": "boolean" } }, { "name": "path_start", "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "description": "postgres trigger list", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/PostgresTrigger" } } } } } } } }, "/w/{workspace}/postgres_triggers/exists/{path}": { "get": { "summary": "does postgres trigger exists", "operationId": "existsPostgresTrigger", "tags": [ "postgres_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" } ], "responses": { "200": { "description": "postgres trigger exists", "content": { "application/json": { "schema": { "type": "boolean" } } } } } } }, "/w/{workspace}/postgres_triggers/setmode/{path}": { "post": { "summary": "set enabled postgres trigger", "operationId": "setPostgresTriggerMode", "tags": [ "postgres_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" } ], "requestBody": { "description": "updated postgres trigger enable", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "mode": { "$ref": "#/components/schemas/TriggerMode" } }, "required": [ "mode" ] } } } }, "responses": { "200": { "description": "postgres trigger enabled set", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/postgres_triggers/test": { "post": { "summary": "test postgres connection", "operationId": "testPostgresConnection", "tags": [ "postgres_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "test postgres connection", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "database": { "type": "string" } }, "required": [ "database" ] } } } }, "responses": { "200": { "description": "successfuly connected to postgres", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/email_triggers/create": { "post": { "summary": "create email trigger", "operationId": "createEmailTrigger", "tags": [ "email_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "new email trigger", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NewEmailTrigger" } } } }, "responses": { "201": { "description": "email trigger created", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/email_triggers/update/{path}": { "post": { "summary": "update email trigger", "operationId": "updateEmailTrigger", "tags": [ "email_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" } ], "requestBody": { "description": "updated trigger", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EditEmailTrigger" } } } }, "responses": { "200": { "description": "email trigger updated", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/email_triggers/delete/{path}": { "delete": { "summary": "delete email trigger", "operationId": "deleteEmailTrigger", "tags": [ "email_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" } ], "responses": { "200": { "description": "email trigger deleted", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/email_triggers/get/{path}": { "get": { "summary": "get email trigger", "operationId": "getEmailTrigger", "tags": [ "email_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" } ], "responses": { "200": { "description": "email trigger retrieved", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EmailTrigger" } } } } } } }, "/w/{workspace}/email_triggers/list": { "get": { "summary": "list email triggers", "operationId": "listEmailTriggers", "tags": [ "email_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId", "required": true }, { "$ref": "#/components/parameters/Page" }, { "$ref": "#/components/parameters/PerPage" }, { "name": "path", "description": "filter by path", "in": "query", "schema": { "type": "string" } }, { "name": "is_flow", "in": "query", "schema": { "type": "boolean" } }, { "name": "path_start", "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "description": "email trigger list", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/EmailTrigger" } } } } } } } }, "/w/{workspace}/email_triggers/exists/{path}": { "get": { "summary": "does email trigger exists", "operationId": "existsEmailTrigger", "tags": [ "email_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" } ], "responses": { "200": { "description": "email trigger exists", "content": { "application/json": { "schema": { "type": "boolean" } } } } } } }, "/w/{workspace}/email_triggers/local_part_exists": { "post": { "summary": "does email local part exists", "operationId": "existsEmailLocalPart", "tags": [ "email_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "email local part exists request", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "local_part": { "type": "string" }, "workspaced_local_part": { "type": "boolean" }, "trigger_path": { "type": "string" } }, "required": [ "local_part" ] } } } }, "responses": { "200": { "description": "email local part exists", "content": { "application/json": { "schema": { "type": "boolean" } } } } } } }, "/w/{workspace}/email_triggers/setmode/{path}": { "post": { "summary": "enable/disable email trigger", "operationId": "setEmailTriggerMode", "tags": [ "email_trigger" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "mode": { "$ref": "#/components/schemas/TriggerMode" } }, "required": [ "mode" ] } } } }, "responses": { "200": { "description": "email trigger enable/disable", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/groups/list": { "get": { "summary": "list instance groups", "operationId": "listInstanceGroups", "tags": [ "group" ], "responses": { "200": { "description": "instance group list", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/InstanceGroup" } } } } } } } }, "/groups/list_with_workspaces": { "get": { "summary": "list instance groups with workspace information", "operationId": "listInstanceGroupsWithWorkspaces", "tags": [ "group" ], "responses": { "200": { "description": "instance group list with workspaces", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/InstanceGroupWithWorkspaces" } } } } } } } }, "/groups/get/{name}": { "get": { "summary": "get instance group", "operationId": "getInstanceGroup", "tags": [ "group" ], "parameters": [ { "$ref": "#/components/parameters/Name" } ], "responses": { "200": { "description": "instance group", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InstanceGroup" } } } } } } }, "/groups/create": { "post": { "summary": "create instance group", "operationId": "createInstanceGroup", "tags": [ "group" ], "requestBody": { "description": "create instance group", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "name": { "type": "string" }, "summary": { "type": "string" } }, "required": [ "name" ] } } } }, "responses": { "200": { "description": "instance group created", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/groups/update/{name}": { "post": { "summary": "update instance group", "operationId": "updateInstanceGroup", "tags": [ "group" ], "parameters": [ { "$ref": "#/components/parameters/Name" } ], "requestBody": { "description": "update instance group", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "new_summary": { "type": "string" } }, "required": [ "new_summary" ] } } } }, "responses": { "200": { "description": "instance group updated", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/groups/delete/{name}": { "delete": { "summary": "delete instance group", "operationId": "deleteInstanceGroup", "tags": [ "group" ], "parameters": [ { "$ref": "#/components/parameters/Name" } ], "responses": { "200": { "description": "instance group deleted", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/groups/adduser/{name}": { "post": { "summary": "add user to instance group", "operationId": "addUserToInstanceGroup", "tags": [ "group" ], "parameters": [ { "$ref": "#/components/parameters/Name" } ], "requestBody": { "description": "user to add to instance group", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "email": { "type": "string" } }, "required": [ "email" ] } } } }, "responses": { "200": { "description": "user added to instance group", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/groups/removeuser/{name}": { "post": { "summary": "remove user from instance group", "operationId": "removeUserFromInstanceGroup", "tags": [ "group" ], "parameters": [ { "$ref": "#/components/parameters/Name" } ], "requestBody": { "description": "user to remove from instance group", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "email": { "type": "string" } }, "required": [ "email" ] } } } }, "responses": { "200": { "description": "user removed from instance group", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/groups/export": { "get": { "summary": "export instance groups", "operationId": "exportInstanceGroups", "tags": [ "group" ], "responses": { "200": { "description": "exported instance groups", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ExportedInstanceGroup" } } } } } } } }, "/groups/overwrite": { "post": { "summary": "overwrite instance groups", "operationId": "overwriteInstanceGroups", "tags": [ "group" ], "requestBody": { "description": "overwrite instance groups", "required": true, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ExportedInstanceGroup" } } } } }, "responses": { "200": { "description": "success message", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/groups/list": { "get": { "summary": "list groups", "operationId": "listGroups", "tags": [ "group" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Page" }, { "$ref": "#/components/parameters/PerPage" } ], "responses": { "200": { "description": "group list", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Group" } } } } } } } }, "/w/{workspace}/groups/listnames": { "get": { "summary": "list group names", "operationId": "listGroupNames", "tags": [ "group" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "name": "only_member_of", "in": "query", "description": "only list the groups the user is member of (default false)", "schema": { "type": "boolean" } } ], "responses": { "200": { "description": "group list", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "string" } } } } } } } }, "/w/{workspace}/groups/create": { "post": { "summary": "create group", "operationId": "createGroup", "tags": [ "group" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "create group", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "name": { "type": "string" }, "summary": { "type": "string" } }, "required": [ "name" ] } } } }, "responses": { "200": { "description": "group created", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/groups/update/{name}": { "post": { "summary": "update group", "operationId": "updateGroup", "tags": [ "group" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Name" } ], "requestBody": { "description": "updated group", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "summary": { "type": "string" } } } } } }, "responses": { "200": { "description": "group updated", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/groups/delete/{name}": { "delete": { "summary": "delete group", "operationId": "deleteGroup", "tags": [ "group" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Name" } ], "responses": { "200": { "description": "group deleted", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/groups/get/{name}": { "get": { "summary": "get group", "operationId": "getGroup", "tags": [ "group" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Name" } ], "responses": { "200": { "description": "group", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Group" } } } } } } }, "/w/{workspace}/groups/adduser/{name}": { "post": { "summary": "add user to group", "operationId": "addUserToGroup", "tags": [ "group" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Name" } ], "requestBody": { "description": "added user to group", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "username": { "type": "string" } } } } } }, "responses": { "200": { "description": "user added to group", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/groups/removeuser/{name}": { "post": { "summary": "remove user to group", "operationId": "removeUserToGroup", "tags": [ "group" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Name" } ], "requestBody": { "description": "added user to group", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "username": { "type": "string" } } } } } }, "responses": { "200": { "description": "user removed from group", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/groups_history/get/{name}": { "get": { "summary": "get group permission history", "operationId": "getGroupPermissionHistory", "tags": [ "group" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Name" }, { "$ref": "#/components/parameters/Page" }, { "$ref": "#/components/parameters/PerPage" } ], "responses": { "200": { "description": "group permission history", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "integer" }, "changed_by": { "type": "string" }, "changed_at": { "type": "string", "format": "date-time" }, "change_type": { "type": "string" }, "member_affected": { "type": "string", "nullable": true } } } } } } } } } }, "/w/{workspace}/folders/list": { "get": { "summary": "list folders", "operationId": "listFolders", "tags": [ "folder" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Page" }, { "$ref": "#/components/parameters/PerPage" } ], "responses": { "200": { "description": "folder list", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Folder" } } } } } } } }, "/w/{workspace}/folders/listnames": { "get": { "summary": "list folder names", "operationId": "listFolderNames", "tags": [ "folder" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "name": "only_member_of", "in": "query", "description": "only list the folders the user is member of (default false)", "schema": { "type": "boolean" } } ], "responses": { "200": { "description": "folder list", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "string" } } } } } } } }, "/w/{workspace}/folders/create": { "post": { "summary": "create folder", "operationId": "createFolder", "tags": [ "folder" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "create folder", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "name": { "type": "string" }, "summary": { "type": "string" }, "owners": { "type": "array", "items": { "type": "string" } }, "extra_perms": { "additionalProperties": { "type": "boolean" } } }, "required": [ "name" ] } } } }, "responses": { "200": { "description": "folder created", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/folders/update/{name}": { "post": { "summary": "update folder", "operationId": "updateFolder", "tags": [ "folder" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Name" } ], "requestBody": { "description": "update folder", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "summary": { "type": "string" }, "owners": { "type": "array", "items": { "type": "string" } }, "extra_perms": { "additionalProperties": { "type": "boolean" } } } } } } }, "responses": { "200": { "description": "folder updated", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/folders/delete/{name}": { "delete": { "summary": "delete folder", "operationId": "deleteFolder", "tags": [ "folder" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Name" } ], "responses": { "200": { "description": "folder deleted", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/folders/get/{name}": { "get": { "summary": "get folder", "operationId": "getFolder", "tags": [ "folder" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Name" } ], "responses": { "200": { "description": "folder", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Folder" } } } } } } }, "/w/{workspace}/folders/exists/{name}": { "get": { "summary": "exists folder", "operationId": "existsFolder", "tags": [ "folder" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Name" } ], "responses": { "200": { "description": "folder exists", "content": { "application/json": { "schema": { "type": "boolean" } } } } } } }, "/w/{workspace}/folders/getusage/{name}": { "get": { "summary": "get folder usage", "operationId": "getFolderUsage", "tags": [ "folder" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Name" } ], "responses": { "200": { "description": "folder", "content": { "application/json": { "schema": { "type": "object", "properties": { "scripts": { "type": "number" }, "flows": { "type": "number" }, "apps": { "type": "number" }, "resources": { "type": "number" }, "variables": { "type": "number" }, "schedules": { "type": "number" } }, "required": [ "scripts", "flows", "apps", "resources", "variables", "schedules" ] } } } } } } }, "/w/{workspace}/folders/addowner/{name}": { "post": { "summary": "add owner to folder", "operationId": "addOwnerToFolder", "tags": [ "folder" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Name" } ], "requestBody": { "description": "owner user to folder", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "owner": { "type": "string" } }, "required": [ "owner" ] } } } }, "responses": { "200": { "description": "owner added to folder", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/folders/removeowner/{name}": { "post": { "summary": "remove owner to folder", "operationId": "removeOwnerToFolder", "tags": [ "folder" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Name" } ], "requestBody": { "description": "added owner to folder", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "owner": { "type": "string" }, "write": { "type": "boolean" } }, "required": [ "owner" ] } } } }, "responses": { "200": { "description": "owner removed from folder", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/folders_history/get/{name}": { "get": { "summary": "get folder permission history", "operationId": "getFolderPermissionHistory", "tags": [ "folder" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Name" }, { "$ref": "#/components/parameters/Page" }, { "$ref": "#/components/parameters/PerPage" } ], "responses": { "200": { "description": "folder permission history", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "integer" }, "changed_by": { "type": "string" }, "changed_at": { "type": "string", "format": "date-time" }, "change_type": { "type": "string" }, "affected": { "type": "string", "nullable": true } } } } } } } } } }, "/workers/list": { "get": { "summary": "list workers", "operationId": "listWorkers", "x-mcp-tool": true, "tags": [ "worker" ], "parameters": [ { "$ref": "#/components/parameters/Page" }, { "$ref": "#/components/parameters/PerPage" }, { "name": "ping_since", "in": "query", "required": false, "description": "number of seconds the worker must have had a last ping more recent of (default to 300)", "schema": { "type": "integer" } } ], "responses": { "200": { "description": "a list of workers", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/WorkerPing" } } } } } } } }, "/workers/exists_workers_with_tags": { "get": { "summary": "exists workers with tags", "operationId": "existsWorkersWithTags", "tags": [ "worker" ], "parameters": [ { "name": "tags", "in": "query", "required": true, "description": "comma separated list of tags", "schema": { "type": "string" } }, { "name": "workspace", "in": "query", "required": false, "description": "workspace to filter tags visibility (required when TAGS_ARE_SENSITIVE is enabled for non-superadmins)", "schema": { "type": "string" } } ], "responses": { "200": { "description": "map of tags to whether at least one worker with the tag exists", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": { "type": "boolean" } } } } } } } }, "/workers/queue_metrics": { "get": { "summary": "get queue metrics", "operationId": "getQueueMetrics", "tags": [ "worker" ], "responses": { "200": { "description": "metrics", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string" }, "values": { "type": "array", "items": { "type": "object", "properties": { "created_at": { "type": "string" }, "value": { "type": "number" } }, "required": [ "created_at", "value" ] } } }, "required": [ "id", "values" ] } } } } } } } }, "/workers/queue_counts": { "get": { "summary": "get counts of jobs waiting for an executor per tag", "operationId": "getCountsOfJobsWaitingPerTag", "tags": [ "worker" ], "responses": { "200": { "description": "queue counts", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": { "type": "integer" } } } } } } } }, "/workers/queue_running_counts": { "get": { "summary": "get counts of currently running jobs per tag", "operationId": "getCountsOfRunningJobsPerTag", "tags": [ "worker" ], "responses": { "200": { "description": "queue running counts", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": { "type": "integer" } } } } } } } }, "/configs/list_worker_groups": { "get": { "summary": "list worker groups", "operationId": "listWorkerGroups", "tags": [ "config" ], "responses": { "200": { "description": "a list of worker group configs", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "config": {} }, "required": [ "name", "config" ] } } } } } } } }, "/configs/get/{name}": { "get": { "summary": "get config", "operationId": "get config", "tags": [ "config" ], "parameters": [ { "$ref": "#/components/parameters/Name" } ], "responses": { "200": { "description": "a config", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Configs" } } } } } } }, "/configs/update/{name}": { "post": { "summary": "Update config", "operationId": "updateConfig", "tags": [ "config" ], "parameters": [ { "$ref": "#/components/parameters/Name" } ], "requestBody": { "description": "worker group", "required": true, "content": { "application/json": { "schema": {} } } }, "responses": { "200": { "description": "Update a worker group", "content": { "text/plain": { "schema": { "type": "string" } } } } } }, "delete": { "summary": "Delete Config", "operationId": "deleteConfig", "tags": [ "config" ], "parameters": [ { "$ref": "#/components/parameters/Name" } ], "responses": { "200": { "description": "Delete config", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/configs/list": { "get": { "summary": "list configs", "operationId": "listConfigs", "tags": [ "config" ], "responses": { "200": { "description": "list of configs", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Config" } } } } } } } }, "/configs/list_autoscaling_events/{worker_group}": { "get": { "summary": "List autoscaling events", "operationId": "listAutoscalingEvents", "tags": [ "config" ], "parameters": [ { "name": "worker_group", "in": "path", "required": true, "schema": { "type": "string" } }, { "$ref": "#/components/parameters/Page" }, { "$ref": "#/components/parameters/PerPage" } ], "responses": { "200": { "description": "List of autoscaling events", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/AutoscalingEvent" } } } } } } } }, "/configs/native_kubernetes_autoscaling_healthcheck": { "get": { "summary": "Check Kubernetes autoscaling health for a worker group", "operationId": "nativeKubernetesAutoscalingHealthcheck", "tags": [ "config" ], "responses": { "200": { "description": "Kubernetes autoscaling is healthy" }, "400": { "description": "Error", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/configs/list_available_python_versions": { "get": { "summary": "Get currently available python versions provided by UV.", "operationId": "listAvailablePythonVersions", "tags": [ "config" ], "responses": { "200": { "description": "List of python versions", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "string" } } } } } } } }, "/agent_workers/create_agent_token": { "post": { "summary": "create agent token", "operationId": "createAgentToken", "tags": [ "agent_workers" ], "requestBody": { "description": "agent token", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "worker_group": { "type": "string" }, "tags": { "type": "array", "items": { "type": "string" } }, "exp": { "type": "integer" } }, "required": [ "worker_group", "tags", "exp" ] } } } }, "responses": { "200": { "description": "agent token created", "content": { "application/json": { "schema": { "type": "string" } } } } } } }, "/agent_workers/blacklist_token": { "post": { "summary": "blacklist agent token (requires super admin)", "operationId": "blacklistAgentToken", "tags": [ "agent_workers" ], "requestBody": { "description": "token to blacklist", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "token": { "type": "string", "description": "The agent token to blacklist" }, "expires_at": { "type": "string", "format": "date-time", "description": "Optional expiration date for the blacklist entry" } }, "required": [ "token" ] } } } }, "responses": { "200": { "description": "token blacklisted successfully" } } } }, "/agent_workers/remove_blacklist_token": { "post": { "summary": "remove agent token from blacklist (requires super admin)", "operationId": "removeBlacklistAgentToken", "tags": [ "agent_workers" ], "requestBody": { "description": "token to remove from blacklist", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "token": { "type": "string", "description": "The agent token to remove from blacklist" } }, "required": [ "token" ] } } } }, "responses": { "200": { "description": "token removed from blacklist successfully" } } } }, "/agent_workers/list_blacklisted_tokens": { "get": { "summary": "list blacklisted agent tokens (requires super admin)", "operationId": "listBlacklistedAgentTokens", "tags": [ "agent_workers" ], "parameters": [ { "name": "include_expired", "in": "query", "description": "Whether to include expired blacklisted tokens", "schema": { "type": "boolean", "default": false } } ], "responses": { "200": { "description": "list of blacklisted tokens", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "token": { "type": "string", "description": "The blacklisted token (without prefix)" }, "expires_at": { "type": "string", "format": "date-time", "description": "When the blacklist entry expires" }, "blacklisted_at": { "type": "string", "format": "date-time", "description": "When the token was blacklisted" }, "blacklisted_by": { "type": "string", "description": "Email of the user who blacklisted the token" } }, "required": [ "token", "expires_at", "blacklisted_at", "blacklisted_by" ] } } } } } } } }, "/agent_workers/get_min_version": { "get": { "summary": "get minimum worker version across all workers", "operationId": "getMinVersion", "tags": [ "agent_workers" ], "responses": { "200": { "description": "minimum worker version", "content": { "application/json": { "schema": { "type": "string", "description": "Minimum semantic version across all workers (e.g. \"1.583.0\")" } } } } } } }, "/w/{workspace}/acls/get/{kind}/{path}": { "get": { "summary": "get granular acls", "operationId": "getGranularAcls", "tags": [ "granular_acl" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" }, { "name": "kind", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "script", "group_", "resource", "schedule", "variable", "flow", "folder", "app", "raw_app", "http_trigger", "websocket_trigger", "kafka_trigger", "nats_trigger", "postgres_trigger", "mqtt_trigger", "gcp_trigger", "sqs_trigger", "email_trigger" ] } } ], "responses": { "200": { "description": "acls", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": { "type": "boolean" } } } } } } } }, "/w/{workspace}/acls/add/{kind}/{path}": { "post": { "summary": "add granular acls", "operationId": "addGranularAcls", "tags": [ "granular_acl" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" }, { "name": "kind", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "script", "group_", "resource", "schedule", "variable", "flow", "folder", "app", "raw_app", "http_trigger", "websocket_trigger", "kafka_trigger", "nats_trigger", "postgres_trigger", "mqtt_trigger", "gcp_trigger", "sqs_trigger", "email_trigger" ] } } ], "requestBody": { "description": "acl to add", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "owner": { "type": "string" }, "write": { "type": "boolean" } }, "required": [ "owner" ] } } } }, "responses": { "200": { "description": "granular acl added", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/acls/remove/{kind}/{path}": { "post": { "summary": "remove granular acls", "operationId": "removeGranularAcls", "tags": [ "granular_acl" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" }, { "name": "kind", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "script", "group_", "resource", "schedule", "variable", "flow", "folder", "app", "raw_app", "http_trigger", "websocket_trigger", "kafka_trigger", "nats_trigger", "postgres_trigger", "mqtt_trigger", "gcp_trigger", "sqs_trigger", "email_trigger" ] } } ], "requestBody": { "description": "acl to add", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "owner": { "type": "string" } }, "required": [ "owner" ] } } } }, "responses": { "200": { "description": "granular acl removed", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/capture/set_config": { "post": { "summary": "set capture config", "operationId": "setCaptureConfig", "tags": [ "capture" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "capture config", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "trigger_kind": { "$ref": "#/components/schemas/CaptureTriggerKind" }, "path": { "type": "string" }, "is_flow": { "type": "boolean" }, "trigger_config": { "type": "object" } }, "required": [ "trigger_kind", "path", "is_flow" ] } } } }, "responses": { "200": { "description": "capture config set", "content": { "application/json": { "schema": { "type": "object" } } } } } } }, "/w/{workspace}/capture/ping_config/{trigger_kind}/{runnable_kind}/{path}": { "post": { "summary": "ping capture config", "operationId": "pingCaptureConfig", "tags": [ "capture" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "name": "trigger_kind", "in": "path", "required": true, "schema": { "$ref": "#/components/schemas/CaptureTriggerKind" } }, { "$ref": "#/components/parameters/RunnableKind" }, { "$ref": "#/components/parameters/Path" } ], "responses": { "200": { "description": "capture config pinged" } } } }, "/w/{workspace}/capture/get_configs/{runnable_kind}/{path}": { "get": { "summary": "get capture configs for a script or flow", "operationId": "getCaptureConfigs", "tags": [ "capture" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/RunnableKind" }, { "$ref": "#/components/parameters/Path" } ], "responses": { "200": { "description": "capture configs for a script or flow", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/CaptureConfig" } } } } } } } }, "/w/{workspace}/capture/list/{runnable_kind}/{path}": { "get": { "summary": "list captures for a script or flow", "operationId": "listCaptures", "tags": [ "capture" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/RunnableKind" }, { "$ref": "#/components/parameters/Path" }, { "name": "trigger_kind", "in": "query", "schema": { "$ref": "#/components/schemas/CaptureTriggerKind" } }, { "$ref": "#/components/parameters/Page" }, { "$ref": "#/components/parameters/PerPage" } ], "responses": { "200": { "description": "list of captures for a script or flow", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Capture" } } } } } } } }, "/w/{workspace}/capture/move/{runnable_kind}/{path}": { "post": { "summary": "move captures and configs for a script or flow", "operationId": "moveCapturesAndConfigs", "tags": [ "capture" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/RunnableKind" }, { "$ref": "#/components/parameters/Path" } ], "requestBody": { "description": "move captures and configs to a new path", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "new_path": { "type": "string" } } } } } }, "responses": { "200": { "description": "captures and configs moved", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/capture/{id}": { "get": { "summary": "get a capture", "operationId": "getCapture", "tags": [ "capture" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "name": "id", "in": "path", "required": true, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "capture", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Capture" } } } } } }, "delete": { "summary": "delete a capture", "operationId": "deleteCapture", "tags": [ "capture" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "name": "id", "in": "path", "required": true, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "capture deleted" } } } }, "/w/{workspace}/favorites/star": { "post": { "summary": "star item", "operationId": "star", "tags": [ "favorite" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "path": { "type": "string" }, "favorite_kind": { "type": "string", "enum": [ "flow", "app", "script", "raw_app", "asset" ] } } } } } }, "responses": { "200": { "description": "star item" } } } }, "/w/{workspace}/favorites/unstar": { "post": { "summary": "unstar item", "operationId": "unstar", "tags": [ "favorite" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "path": { "type": "string" }, "favorite_kind": { "type": "string", "enum": [ "flow", "app", "script", "raw_app", "asset" ] } } } } } }, "responses": { "200": { "description": "unstar item" } } } }, "/w/{workspace}/inputs/history": { "get": { "summary": "List Inputs used in previously completed jobs", "operationId": "getInputHistory", "tags": [ "input" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/RunnableId" }, { "$ref": "#/components/parameters/RunnableTypeQuery" }, { "$ref": "#/components/parameters/Page" }, { "$ref": "#/components/parameters/PerPage" }, { "$ref": "#/components/parameters/ArgsFilter" }, { "name": "include_preview", "in": "query", "schema": { "type": "boolean" } } ], "responses": { "200": { "description": "Input history for completed jobs", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Input" } } } } } } } }, "/w/{workspace}/inputs/{jobOrInputId}/args": { "get": { "summary": "Get args from history or saved input", "operationId": "getArgsFromHistoryOrSavedInput", "tags": [ "input" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "name": "jobOrInputId", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "input", "in": "query", "schema": { "type": "boolean" } }, { "name": "allow_large", "in": "query", "schema": { "type": "boolean" } } ], "responses": { "200": { "description": "args", "content": { "application/json": { "schema": {} } } } } } }, "/w/{workspace}/inputs/list": { "get": { "summary": "List saved Inputs for a Runnable", "operationId": "listInputs", "tags": [ "input" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/RunnableId" }, { "$ref": "#/components/parameters/RunnableTypeQuery" }, { "$ref": "#/components/parameters/Page" }, { "$ref": "#/components/parameters/PerPage" } ], "responses": { "200": { "description": "Saved Inputs for a Runnable", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Input" } } } } } } } }, "/w/{workspace}/inputs/create": { "post": { "summary": "Create an Input for future use in a script or flow", "operationId": "createInput", "tags": [ "input" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/RunnableId" }, { "$ref": "#/components/parameters/RunnableTypeQuery" } ], "requestBody": { "description": "Input", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateInput" } } } }, "responses": { "201": { "description": "Input created", "content": { "text/plain": { "schema": { "type": "string", "format": "uuid" } } } } } } }, "/w/{workspace}/inputs/update": { "post": { "summary": "Update an Input", "operationId": "updateInput", "tags": [ "input" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "UpdateInput", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateInput" } } } }, "responses": { "201": { "description": "Input updated", "content": { "text/plain": { "schema": { "type": "string", "format": "uuid" } } } } } } }, "/w/{workspace}/inputs/delete/{input}": { "post": { "summary": "Delete a Saved Input", "operationId": "deleteInput", "tags": [ "input" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/InputId" } ], "responses": { "200": { "description": "Input deleted", "content": { "text/plain": { "schema": { "type": "string", "format": "uuid" } } } } } } }, "/w/{workspace}/job_helpers/duckdb_connection_settings": { "post": { "summary": "Converts an S3 resource to the set of instructions necessary to connect DuckDB to an S3 bucket", "operationId": "duckdbConnectionSettings", "tags": [ "helpers" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "S3 resource to connect to", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "s3_resource": { "$ref": "#/components/schemas/S3Resource" } } } } } }, "responses": { "200": { "description": "Connection settings", "content": { "application/json": { "schema": { "type": "object", "properties": { "connection_settings_str": { "type": "string" } } } } } } } } }, "/w/{workspace}/job_helpers/v2/duckdb_connection_settings": { "post": { "summary": "Converts an S3 resource to the set of instructions necessary to connect DuckDB to an S3 bucket", "operationId": "duckdbConnectionSettingsV2", "tags": [ "helpers" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "S3 resource path to use to generate the connection settings. If empty, the S3 resource defined in the workspace settings will be used", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "s3_resource_path": { "type": "string" } } } } } }, "responses": { "200": { "description": "Connection settings", "content": { "application/json": { "schema": { "type": "object", "properties": { "connection_settings_str": { "type": "string" }, "azure_container_path": { "type": "string" } }, "required": [ "connection_settings_str" ] } } } } } } }, "/w/{workspace}/job_helpers/polars_connection_settings": { "post": { "summary": "Converts an S3 resource to the set of arguments necessary to connect Polars to an S3 bucket", "operationId": "polarsConnectionSettings", "tags": [ "helpers" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "S3 resource to connect to", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "s3_resource": { "$ref": "#/components/schemas/S3Resource" } } } } } }, "responses": { "200": { "description": "Connection settings", "content": { "application/json": { "schema": { "type": "object", "properties": { "endpoint_url": { "type": "string" }, "key": { "type": "string" }, "secret": { "type": "string" }, "use_ssl": { "type": "boolean" }, "cache_regions": { "type": "boolean" }, "client_kwargs": { "$ref": "#/components/schemas/PolarsClientKwargs" } }, "required": [ "endpoint_url", "use_ssl", "cache_regions", "client_kwargs" ] } } } } } } }, "/w/{workspace}/job_helpers/v2/polars_connection_settings": { "post": { "summary": "Converts an S3 resource to the set of arguments necessary to connect Polars to an S3 bucket", "operationId": "polarsConnectionSettingsV2", "tags": [ "helpers" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "S3 resource path to use to generate the connection settings. If empty, the S3 resource defined in the workspace settings will be used", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "s3_resource_path": { "type": "string" } } } } } }, "responses": { "200": { "description": "Connection settings", "content": { "application/json": { "schema": { "type": "object", "properties": { "s3fs_args": { "type": "object", "properties": { "endpoint_url": { "type": "string" }, "key": { "type": "string" }, "secret": { "type": "string" }, "use_ssl": { "type": "boolean" }, "cache_regions": { "type": "boolean" }, "client_kwargs": { "$ref": "#/components/schemas/PolarsClientKwargs" } }, "required": [ "endpoint_url", "use_ssl", "cache_regions", "client_kwargs" ] }, "storage_options": { "type": "object", "properties": { "aws_endpoint_url": { "type": "string" }, "aws_access_key_id": { "type": "string" }, "aws_secret_access_key": { "type": "string" }, "aws_region": { "type": "string" }, "aws_allow_http": { "type": "string" } }, "required": [ "aws_endpoint_url", "aws_region", "aws_allow_http" ] } }, "required": [ "s3fs_args", "storage_options" ] } } } } } } }, "/w/{workspace}/job_helpers/v2/s3_resource_info": { "post": { "summary": "Returns the s3 resource associated to the provided path, or the workspace default S3 resource", "operationId": "s3ResourceInfo", "tags": [ "helpers" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "S3 resource path to use. If empty, the S3 resource defined in the workspace settings will be used", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "s3_resource_path": { "type": "string" } } } } } }, "responses": { "200": { "description": "Connection settings", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/S3Resource" } } } } } } }, "/w/{workspace}/job_helpers/test_connection": { "get": { "summary": "Test connection to the workspace object storage", "operationId": "datasetStorageTestConnection", "tags": [ "helpers" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "name": "storage", "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Connection settings", "content": { "application/json": { "schema": {} } } } } } }, "/w/{workspace}/job_helpers/list_stored_files": { "get": { "summary": "List the file keys available in a workspace object storage", "operationId": "listStoredFiles", "tags": [ "helpers" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "name": "max_keys", "in": "query", "required": true, "schema": { "type": "integer" } }, { "name": "marker", "in": "query", "schema": { "type": "string" } }, { "name": "prefix", "in": "query", "schema": { "type": "string" } }, { "name": "storage", "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "description": "List of file keys", "content": { "application/json": { "schema": { "type": "object", "properties": { "next_marker": { "type": "string" }, "windmill_large_files": { "type": "array", "items": { "$ref": "#/components/schemas/WindmillLargeFile" } }, "restricted_access": { "type": "boolean" } }, "required": [ "windmill_large_files" ] } } } } } } }, "/w/{workspace}/job_helpers/load_file_metadata": { "get": { "summary": "Load metadata of the file", "operationId": "loadFileMetadata", "tags": [ "helpers" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "name": "file_key", "in": "query", "required": true, "schema": { "type": "string" } }, { "name": "storage", "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "description": "FileMetadata", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WindmillFileMetadata" } } } } } } }, "/w/{workspace}/job_helpers/load_file_preview": { "get": { "summary": "Load a preview of the file", "operationId": "loadFilePreview", "tags": [ "helpers" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "name": "file_key", "in": "query", "required": true, "schema": { "type": "string" } }, { "name": "file_size_in_bytes", "in": "query", "schema": { "type": "integer" } }, { "name": "file_mime_type", "in": "query", "schema": { "type": "string" } }, { "name": "csv_separator", "in": "query", "schema": { "type": "string" } }, { "name": "csv_has_header", "in": "query", "schema": { "type": "boolean" } }, { "name": "read_bytes_from", "in": "query", "schema": { "type": "integer" } }, { "name": "read_bytes_length", "in": "query", "schema": { "type": "integer" } }, { "name": "storage", "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "description": "FilePreview", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WindmillFilePreview" } } } } } } }, "/w/{workspace}/job_helpers/list_git_repo_files": { "get": { "summary": "List the file keys available in instance object storage with resource-based access control", "operationId": "listGitRepoFiles", "tags": [ "helpers" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "name": "max_keys", "in": "query", "required": true, "schema": { "type": "integer" } }, { "name": "marker", "in": "query", "schema": { "type": "string" } }, { "name": "prefix", "in": "query", "required": false, "schema": { "type": "string", "description": "Must follow format gitrepos/{workspace_id}/{resource_path}/..." } }, { "name": "storage", "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "description": "List of file keys", "content": { "application/json": { "schema": { "type": "object", "properties": { "next_marker": { "type": "string" }, "windmill_large_files": { "type": "array", "items": { "$ref": "#/components/schemas/WindmillLargeFile" } }, "restricted_access": { "type": "boolean" } }, "required": [ "windmill_large_files" ] } } } } } } }, "/w/{workspace}/job_helpers/load_git_repo_file_preview": { "get": { "summary": "Load a preview of a file from instance storage with resource-based access control", "operationId": "loadGitRepoFilePreview", "tags": [ "helpers" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "name": "file_key", "in": "query", "required": true, "schema": { "type": "string", "description": "Must follow format gitrepos/{workspace_id}/{resource_path}/..." } }, { "name": "file_size_in_bytes", "in": "query", "schema": { "type": "integer" } }, { "name": "file_mime_type", "in": "query", "schema": { "type": "string" } }, { "name": "csv_separator", "in": "query", "schema": { "type": "string" } }, { "name": "csv_has_header", "in": "query", "schema": { "type": "boolean" } }, { "name": "read_bytes_from", "in": "query", "schema": { "type": "integer" } }, { "name": "read_bytes_length", "in": "query", "schema": { "type": "integer" } }, { "name": "storage", "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "description": "FilePreview", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WindmillFilePreview" } } } } } } }, "/w/{workspace}/job_helpers/load_git_repo_file_metadata": { "get": { "summary": "Load file metadata from instance storage with resource-based access control", "operationId": "loadGitRepoFileMetadata", "tags": [ "helpers" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "name": "file_key", "in": "query", "required": true, "schema": { "type": "string", "description": "Must follow format gitrepos/{workspace_id}/{resource_path}/..." } }, { "name": "storage", "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "description": "FileMetadata", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WindmillFileMetadata" } } } } } } }, "/w/{workspace}/job_helpers/check_s3_folder_exists": { "get": { "summary": "Check if S3 path exists and is a folder", "operationId": "checkS3FolderExists", "tags": [ "helpers" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "name": "file_key", "description": "S3 file key to check (e.g., gitrepos/{workspace_id}/u/user/resource/{commit_hash})", "in": "query", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "S3 folder existence check result", "content": { "application/json": { "schema": { "type": "object", "properties": { "exists": { "type": "boolean", "description": "Whether the path exists" }, "is_folder": { "type": "boolean", "description": "Whether the path is a folder (true) or file (false)" } }, "required": [ "exists", "is_folder" ] } } } } } } }, "/w/{workspace}/job_helpers/load_parquet_preview/{path}": { "get": { "summary": "Load a preview of a parquet file", "operationId": "loadParquetPreview", "tags": [ "helpers" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" }, { "name": "offset", "in": "query", "schema": { "type": "number" } }, { "name": "limit", "in": "query", "schema": { "type": "number" } }, { "name": "sort_col", "in": "query", "schema": { "type": "string" } }, { "name": "sort_desc", "in": "query", "schema": { "type": "boolean" } }, { "name": "search_col", "in": "query", "schema": { "type": "string" } }, { "name": "search_term", "in": "query", "schema": { "type": "string" } }, { "name": "storage", "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Parquet Preview", "content": { "application/json": {} } } } } }, "/w/{workspace}/job_helpers/load_table_count/{path}": { "get": { "summary": "Load the table row count", "operationId": "loadTableRowCount", "tags": [ "helpers" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" }, { "name": "search_col", "in": "query", "schema": { "type": "string" } }, { "name": "search_term", "in": "query", "schema": { "type": "string" } }, { "name": "storage", "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Table count", "content": { "application/json": { "schema": { "type": "object", "properties": { "count": { "type": "number" } } } } } } } } }, "/w/{workspace}/job_helpers/load_csv_preview/{path}": { "get": { "summary": "Load a preview of a csv file", "operationId": "loadCsvPreview", "tags": [ "helpers" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/Path" }, { "name": "offset", "in": "query", "schema": { "type": "number" } }, { "name": "limit", "in": "query", "schema": { "type": "number" } }, { "name": "sort_col", "in": "query", "schema": { "type": "string" } }, { "name": "sort_desc", "in": "query", "schema": { "type": "boolean" } }, { "name": "search_col", "in": "query", "schema": { "type": "string" } }, { "name": "search_term", "in": "query", "schema": { "type": "string" } }, { "name": "storage", "in": "query", "schema": { "type": "string" } }, { "name": "csv_separator", "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Csv Preview", "content": { "application/json": {} } } } } }, "/w/{workspace}/job_helpers/delete_s3_file": { "delete": { "summary": "Permanently delete file from S3", "operationId": "deleteS3File", "tags": [ "helpers" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "name": "file_key", "in": "query", "required": true, "schema": { "type": "string" } }, { "name": "storage", "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Confirmation", "content": { "application/json": { "schema": {} } } } } } }, "/w/{workspace}/job_helpers/move_s3_file": { "get": { "summary": "Move a S3 file from one path to the other within the same bucket", "operationId": "moveS3File", "tags": [ "helpers" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "name": "src_file_key", "in": "query", "required": true, "schema": { "type": "string" } }, { "name": "dest_file_key", "in": "query", "required": true, "schema": { "type": "string" } }, { "name": "storage", "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Confirmation", "content": { "application/json": { "schema": {} } } } } } }, "/w/{workspace}/job_helpers/upload_s3_file": { "post": { "summary": "Upload file to S3 bucket", "operationId": "fileUpload", "tags": [ "helpers" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "name": "file_key", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "file_extension", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "s3_resource_path", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "resource_type", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "storage", "in": "query", "schema": { "type": "string" } }, { "name": "content_type", "in": "query", "schema": { "type": "string" } }, { "name": "content_disposition", "in": "query", "schema": { "type": "string" } } ], "requestBody": { "description": "File content", "required": true, "content": { "application/octet-stream": { "schema": { "type": "string", "format": "binary" } } } }, "responses": { "200": { "description": "File upload status", "content": { "application/json": { "schema": { "type": "object", "properties": { "file_key": { "type": "string" } }, "required": [ "file_key" ] } } } } } } }, "/w/{workspace}/job_helpers/upload_git_repo_file_to_instance_storage": { "post": { "summary": "Upload a file to the instance storage gitrepos section for viewing", "operationId": "gitRepoViewerFileUpload", "tags": [ "helpers" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "name": "file_key", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "file_extension", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "s3_resource_path", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "resource_type", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "storage", "in": "query", "schema": { "type": "string" } }, { "name": "content_type", "in": "query", "schema": { "type": "string" } }, { "name": "content_disposition", "in": "query", "schema": { "type": "string" } } ], "requestBody": { "description": "File content", "required": true, "content": { "application/octet-stream": { "schema": { "type": "string", "format": "binary" } } } }, "responses": { "200": { "description": "File upload status", "content": { "application/json": { "schema": { "type": "object", "properties": { "file_key": { "type": "string" } }, "required": [ "file_key" ] } } } } } } }, "/w/{workspace}/job_helpers/download_s3_file": { "get": { "summary": "Download file from S3 bucket", "operationId": "fileDownload", "tags": [ "helpers" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "name": "file_key", "in": "query", "required": true, "schema": { "type": "string" } }, { "name": "s3_resource_path", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "resource_type", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "storage", "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Chunk of the downloaded file", "content": { "application/octet-stream": { "schema": { "type": "string", "format": "binary" } } } } } } }, "/w/{workspace}/job_helpers/download_s3_parquet_file_as_csv": { "get": { "summary": "Download file to S3 bucket", "operationId": "fileDownloadParquetAsCsv", "tags": [ "helpers" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "name": "file_key", "in": "query", "required": true, "schema": { "type": "string" } }, { "name": "s3_resource_path", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "resource_type", "in": "query", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "The downloaded file", "content": { "text/csv": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/job_metrics/get/{id}": { "post": { "summary": "get job metrics", "operationId": "getJobMetrics", "tags": [ "metrics" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/JobId" } ], "requestBody": { "description": "parameters for statistics retrieval", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "timeseries_max_datapoints": { "type": "integer" }, "from_timestamp": { "type": "string", "format": "date-time" }, "to_timestamp": { "type": "string", "format": "date-time" } } } } } }, "responses": { "200": { "description": "job details", "content": { "application/json": { "schema": { "type": "object", "properties": { "metrics_metadata": { "type": "array", "items": { "$ref": "#/components/schemas/MetricMetadata" } }, "scalar_metrics": { "type": "array", "items": { "$ref": "#/components/schemas/ScalarMetric" } }, "timeseries_metrics": { "type": "array", "items": { "$ref": "#/components/schemas/TimeseriesMetric" } } } } } } } } } }, "/w/{workspace}/job_metrics/set_progress/{id}": { "post": { "summary": "set job metrics", "operationId": "setJobProgress", "tags": [ "metrics" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/JobId" } ], "requestBody": { "description": "parameters for statistics retrieval", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "percent": { "type": "integer" }, "flow_job_id": { "type": "string", "format": "uuid" } } } } } }, "responses": { "200": { "description": "Job progress updated", "content": { "application/json": { "schema": {} } } } } } }, "/w/{workspace}/job_metrics/get_progress/{id}": { "get": { "summary": "get job progress", "operationId": "getJobProgress", "tags": [ "metrics" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/JobId" } ], "responses": { "200": { "description": "job progress between 0 and 99", "content": { "application/json": { "schema": { "type": "integer" } } } } } } }, "/service_logs/list_files": { "get": { "summary": "list log files ordered by timestamp", "operationId": "listLogFiles", "tags": [ "service_logs" ], "parameters": [ { "$ref": "#/components/parameters/Before" }, { "$ref": "#/components/parameters/After" }, { "name": "with_error", "in": "query", "required": false, "schema": { "type": "boolean" } } ], "responses": { "200": { "description": "time", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "hostname": { "type": "string" }, "mode": { "type": "string" }, "worker_group": { "type": "string" }, "log_ts": { "type": "string", "format": "date-time" }, "file_path": { "type": "string" }, "ok_lines": { "type": "integer" }, "err_lines": { "type": "integer" }, "json_fmt": { "type": "boolean" } }, "required": [ "hostname", "mode", "log_ts", "file_path", "json_fmt" ] } } } } } } } }, "/service_logs/get_log_file/{path}": { "get": { "summary": "get log file by path", "operationId": "getLogFile", "tags": [ "service_logs" ], "parameters": [ { "$ref": "#/components/parameters/Path" } ], "responses": { "200": { "description": "log stream", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/concurrency_groups/list": { "get": { "summary": "List all concurrency groups", "operationId": "listConcurrencyGroups", "tags": [ "concurrencyGroups" ], "responses": { "200": { "description": "all concurrency groups", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ConcurrencyGroup" } } } } } } } }, "/concurrency_groups/prune/{concurrency_id}": { "delete": { "summary": "Delete concurrency group", "operationId": "deleteConcurrencyGroup", "tags": [ "concurrencyGroups" ], "parameters": [ { "$ref": "#/components/parameters/ConcurrencyId" } ], "responses": { "200": { "description": "concurrency group removed", "content": { "application/json": { "schema": { "type": "object", "properties": {} } } } } } } }, "/concurrency_groups/{id}/key": { "get": { "summary": "Get the concurrency key for a job that has concurrency limits enabled", "operationId": "getConcurrencyKey", "tags": [ "concurrencyGroups" ], "parameters": [ { "$ref": "#/components/parameters/JobId" } ], "responses": { "200": { "description": "concurrency key for given job", "content": { "application/json": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/concurrency_groups/list_jobs": { "get": { "summary": "Get intervals of job runtime concurrency", "operationId": "listExtendedJobs", "tags": [ "concurrencyGroups", "job" ], "parameters": [ { "name": "concurrency_key", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "row_limit", "in": "query", "required": false, "schema": { "type": "number" } }, { "$ref": "#/components/parameters/WorkspaceId" }, { "$ref": "#/components/parameters/CreatedBy" }, { "$ref": "#/components/parameters/Label" }, { "$ref": "#/components/parameters/ParentJob" }, { "$ref": "#/components/parameters/ScriptExactPath" }, { "$ref": "#/components/parameters/ScriptStartPath" }, { "$ref": "#/components/parameters/SchedulePath" }, { "$ref": "#/components/parameters/ScriptExactHash" }, { "$ref": "#/components/parameters/StartedBefore" }, { "$ref": "#/components/parameters/StartedAfter" }, { "$ref": "#/components/parameters/Running" }, { "$ref": "#/components/parameters/ScheduledForBeforeNow" }, { "$ref": "#/components/parameters/CompletedBefore" }, { "$ref": "#/components/parameters/CompletedAfter" }, { "$ref": "#/components/parameters/CreatedBeforeQueue" }, { "$ref": "#/components/parameters/CreatedAfterQueue" }, { "$ref": "#/components/parameters/JobKinds" }, { "$ref": "#/components/parameters/ArgsFilter" }, { "$ref": "#/components/parameters/Tag" }, { "$ref": "#/components/parameters/ResultFilter" }, { "$ref": "#/components/parameters/AllowWildcards" }, { "$ref": "#/components/parameters/Page" }, { "$ref": "#/components/parameters/PerPage" }, { "$ref": "#/components/parameters/JobTriggerKind" }, { "name": "is_skipped", "description": "is the job skipped", "in": "query", "schema": { "type": "boolean" } }, { "name": "is_flow_step", "description": "is the job a flow step", "in": "query", "schema": { "type": "boolean" } }, { "name": "has_null_parent", "description": "has null parent", "in": "query", "schema": { "type": "boolean" } }, { "name": "success", "description": "filter on successful jobs", "in": "query", "schema": { "type": "boolean" } }, { "name": "all_workspaces", "description": "get jobs from all workspaces (only valid if request come from the `admins` workspace)", "in": "query", "schema": { "type": "boolean" } }, { "name": "is_not_schedule", "description": "is not a scheduled job", "in": "query", "schema": { "type": "boolean" } } ], "responses": { "200": { "description": "time", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ExtendedJobs" } } } } } } }, "/srch/w/{workspace}/index/search/job": { "get": { "summary": "Search through jobs with a string query", "operationId": "searchJobsIndex", "tags": [ "indexSearch" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "name": "search_query", "in": "query", "required": true, "schema": { "type": "string" } }, { "name": "pagination_offset", "in": "query", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "search results", "content": { "application/json": { "schema": { "type": "object", "properties": { "query_parse_errors": { "description": "a list of the terms that couldn't be parsed (and thus ignored)", "type": "array", "items": { "type": "string" } }, "hits": { "description": "the jobs that matched the query", "type": "array", "items": { "$ref": "#/components/schemas/JobSearchHit" } }, "hit_count": { "description": "how many jobs matched in total", "type": "number" }, "index_metadata": { "description": "Metadata about the index current state", "type": "object", "properties": { "indexed_until": { "description": "Datetime of the most recently indexed job", "type": "string", "format": "date-time" }, "lost_lock_ownership": { "description": "Is the current indexer service being replaced", "type": "boolean" } } } } } } } } } } }, "/srch/index/search/service_logs": { "get": { "summary": "Search through service logs with a string query", "operationId": "searchLogsIndex", "tags": [ "indexSearch" ], "parameters": [ { "name": "search_query", "in": "query", "required": true, "schema": { "type": "string" } }, { "name": "mode", "in": "query", "required": true, "schema": { "type": "string" } }, { "name": "worker_group", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "hostname", "in": "query", "required": true, "schema": { "type": "string" } }, { "name": "min_ts", "in": "query", "required": false, "schema": { "type": "string", "format": "date-time" } }, { "name": "max_ts", "in": "query", "required": false, "schema": { "type": "string", "format": "date-time" } } ], "responses": { "200": { "description": "search results", "content": { "application/json": { "schema": { "type": "object", "properties": { "query_parse_errors": { "description": "a list of the terms that couldn't be parsed (and thus ignored)", "type": "array", "items": { "type": "string" } }, "hits": { "description": "log files that matched the query", "type": "array", "items": { "$ref": "#/components/schemas/LogSearchHit" } } } } } } } } } }, "/srch/index/search/count_service_logs": { "get": { "summary": "Search and count the log line hits on every provided host", "operationId": "countSearchLogsIndex", "tags": [ "indexSearch" ], "parameters": [ { "name": "search_query", "in": "query", "required": true, "schema": { "type": "string" } }, { "name": "min_ts", "in": "query", "required": false, "schema": { "type": "string", "format": "date-time" } }, { "name": "max_ts", "in": "query", "required": false, "schema": { "type": "string", "format": "date-time" } } ], "responses": { "200": { "description": "search results", "content": { "application/json": { "schema": { "type": "object", "properties": { "query_parse_errors": { "description": "a list of the terms that couldn't be parsed (and thus ignored)", "type": "array", "items": { "type": "string" } }, "count_per_host": { "description": "count of log lines that matched the query per hostname", "type": "object" } } } } } } } } }, "/srch/index/delete/{idx_name}": { "delete": { "summary": "Restart container and delete the index to recreate it.", "operationId": "clearIndex", "tags": [ "indexSearch" ], "parameters": [ { "name": "idx_name", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "JobIndex", "ServiceLogIndex" ] } } ], "responses": { "200": { "description": "idx to be deleted and container restarting", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/w/{workspace}/assets/list": { "get": { "summary": "List all assets in the workspace with cursor pagination", "operationId": "listAssets", "tags": [ "asset" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" }, { "name": "per_page", "in": "query", "description": "Number of items per page (max 1000, default 50)", "schema": { "type": "integer", "default": 50, "minimum": 1, "maximum": 1000 } }, { "name": "cursor_created_at", "in": "query", "description": "Cursor timestamp for pagination (created_at of last item from previous page)", "schema": { "type": "string", "format": "date-time" } }, { "name": "cursor_id", "in": "query", "description": "Cursor ID for pagination (id of last item from previous page)", "schema": { "type": "integer", "format": "int64" } }, { "name": "asset_path", "in": "query", "description": "Filter by asset path (case-insensitive partial match)", "schema": { "type": "string" } }, { "name": "usage_path", "in": "query", "description": "Filter by usage path (case-insensitive partial match)", "schema": { "type": "string" } }, { "name": "asset_kinds", "in": "query", "description": "Filter by asset kinds (multiple values allowed)", "schema": { "type": "string" } } ], "responses": { "200": { "description": "paginated assets in the workspace", "content": { "application/json": { "schema": { "type": "object", "required": [ "assets" ], "properties": { "assets": { "type": "array", "items": { "type": "object", "required": [ "path", "kind", "usages" ], "properties": { "path": { "type": "string" }, "kind": { "$ref": "#/components/schemas/AssetKind" }, "usages": { "type": "array", "items": { "type": "object", "required": [ "path", "kind" ], "properties": { "path": { "type": "string" }, "kind": { "$ref": "#/components/schemas/AssetUsageKind" }, "access_type": { "$ref": "#/components/schemas/AssetUsageAccessType" }, "columns": { "type": "object", "description": "The columns used (for tables)", "additionalProperties": { "$ref": "#/components/schemas/AssetUsageAccessType" } }, "created_at": { "type": "string", "format": "date-time", "description": "When the asset was detected" }, "metadata": { "type": "object", "properties": { "runnable_path": { "type": "string", "description": "The path of the script/flow that was run (only present when kind is 'job')" }, "job_kind": { "type": "string", "description": "The kind of job (script, flow, preview, etc.) (only present when kind is 'job')" } } } } } }, "metadata": { "type": "object", "properties": { "resource_type": { "type": "string", "description": "The type of the resource (only present when kind is 'resource')" } } } } } }, "next_cursor": { "type": "object", "description": "Cursor for the next page (null if no more pages)", "nullable": true, "properties": { "created_at": { "type": "string", "format": "date-time", "description": "Timestamp to use for next page" }, "id": { "type": "integer", "format": "int64", "description": "ID to use for next page" } } } } } } } } } } }, "/w/{workspace}/assets/list_by_usages": { "post": { "summary": "List all assets used by given usages paths", "operationId": "listAssetsByUsage", "tags": [ "asset" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "requestBody": { "description": "list assets by usages", "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "usages" ], "properties": { "usages": { "type": "array", "items": { "type": "object", "required": [ "path", "kind" ], "properties": { "path": { "type": "string" }, "kind": { "$ref": "#/components/schemas/AssetUsageKind" } } } } } } } } }, "responses": { "200": { "description": "all assets used by the given usage paths, in the same order", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "array", "items": { "type": "object", "required": [ "path", "kind" ], "properties": { "path": { "type": "string" }, "kind": { "$ref": "#/components/schemas/AssetKind" }, "access_type": { "$ref": "#/components/schemas/AssetUsageAccessType" } } } } } } } } } } }, "/w/{workspace}/assets/list_favorites": { "get": { "summary": "List all favorite assets for the authenticated user", "operationId": "listFavoriteAssets", "tags": [ "asset" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "responses": { "200": { "description": "list of favorite assets", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "required": [ "path" ], "properties": { "path": { "type": "string", "description": "The asset path" } } } } } } } } } }, "/mcp/w/{workspace}/list_tools": { "get": { "summary": "list available MCP tools", "operationId": "listMcpTools", "tags": [ "mcp" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" } ], "responses": { "200": { "description": "list of MCP tools available for the workspace", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/EndpointTool" } } } } } } } }, "/mcp/oauth/discover": { "post": { "summary": "discover MCP server OAuth metadata", "operationId": "discoverMcpOAuth", "tags": [ "mcp_oauth" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "mcp_server_url" ], "properties": { "mcp_server_url": { "type": "string", "description": "URL of the MCP server to discover OAuth metadata from" } } } } } }, "responses": { "200": { "description": "OAuth metadata from MCP server", "content": { "application/json": { "schema": { "type": "object", "properties": { "scopes_supported": { "type": "array", "items": { "type": "string" } }, "authorization_endpoint": { "type": "string" }, "token_endpoint": { "type": "string" }, "registration_endpoint": { "type": "string" }, "supports_dynamic_registration": { "type": "boolean" } } } } } } } } }, "/mcp/oauth/start": { "get": { "summary": "start MCP OAuth popup flow", "description": "Opens in a popup, discovers OAuth metadata, registers client, and redirects to OAuth provider", "operationId": "startMcpOAuthPopup", "tags": [ "mcp_oauth" ], "parameters": [ { "name": "mcp_server_url", "in": "query", "required": true, "schema": { "type": "string" }, "description": "URL of the MCP server to connect to" }, { "name": "scopes", "in": "query", "required": false, "schema": { "type": "string" }, "description": "Comma-separated list of OAuth scopes to request" } ], "responses": { "302": { "description": "Redirect to OAuth provider authorization URL" } } } }, "/mcp/oauth/callback": { "get": { "security": [], "summary": "MCP OAuth callback", "description": "Handles OAuth callback, exchanges code for tokens, returns HTML that posts message to opener", "operationId": "mcpOAuthCallback", "tags": [ "mcp_oauth" ], "parameters": [ { "name": "code", "in": "query", "required": true, "schema": { "type": "string" }, "description": "OAuth authorization code" }, { "name": "state", "in": "query", "required": true, "schema": { "type": "string" }, "description": "CSRF state token" } ], "responses": { "200": { "description": "HTML page with JavaScript that posts tokens to opener window and closes", "content": { "text/html": { "schema": { "type": "string" } } } } } } } }, "components": { "securitySchemes": { "bearerAuth": { "type": "http", "scheme": "bearer" }, "cookieAuth": { "type": "apiKey", "in": "cookie", "name": "token" } }, "parameters": { "Id": { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } }, "Key": { "name": "key", "in": "path", "required": true, "schema": { "type": "string" } }, "WorkspaceId": { "name": "workspace", "in": "path", "required": true, "schema": { "type": "string" } }, "PublicationName": { "name": "publication", "in": "path", "required": true, "description": "The name of the publication", "schema": { "type": "string" } }, "VersionId": { "name": "version", "in": "path", "required": true, "schema": { "type": "number" } }, "Token": { "name": "token", "in": "path", "required": true, "schema": { "type": "string" } }, "AccountId": { "name": "id", "in": "path", "required": true, "schema": { "type": "integer" } }, "ClientName": { "name": "client_name", "in": "path", "required": true, "schema": { "type": "string" } }, "ScriptPath": { "name": "path", "in": "path", "required": true, "schema": { "type": "string" } }, "ScriptHash": { "name": "hash", "in": "path", "required": true, "schema": { "type": "string" } }, "JobId": { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid" } }, "Path": { "name": "path", "in": "path", "required": true, "schema": { "type": "string" } }, "CustomPath": { "name": "custom_path", "in": "path", "required": true, "schema": { "type": "string" } }, "PathId": { "name": "id", "in": "path", "required": true, "schema": { "type": "integer" } }, "PathVersion": { "name": "version", "in": "path", "required": true, "schema": { "type": "integer" } }, "Name": { "name": "name", "in": "path", "required": true, "schema": { "type": "string" } }, "Page": { "name": "page", "description": "which page to return (start at 1, default 1)", "in": "query", "schema": { "type": "integer" } }, "PerPage": { "name": "per_page", "description": "number of items to return for a given page (default 30, max 100)", "in": "query", "schema": { "type": "integer" } }, "JobTriggerKind": { "name": "trigger_kind", "description": "trigger kind (schedule, http, websocket...)", "in": "query", "schema": { "$ref": "#/components/schemas/JobTriggerKind" } }, "OrderDesc": { "name": "order_desc", "description": "order by desc order (default true)", "in": "query", "schema": { "type": "boolean" } }, "CreatedBy": { "name": "created_by", "description": "mask to filter exact matching user creator", "in": "query", "schema": { "type": "string" } }, "Label": { "name": "label", "description": "mask to filter exact matching job's label (job labels are completed jobs with as a result an object containing a string in the array at key 'wm_labels')", "in": "query", "schema": { "type": "string" } }, "Worker": { "name": "worker", "description": "worker this job was ran on", "in": "query", "schema": { "type": "string" } }, "ParentJob": { "name": "parent_job", "description": "The parent job that is at the origin and responsible for the execution of this script if any", "in": "query", "schema": { "type": "string", "format": "uuid" } }, "WorkerTag": { "name": "tag", "description": "Override the tag to use", "in": "query", "schema": { "type": "string" } }, "CacheTtl": { "name": "cache_ttl", "description": "Override the cache time to live (in seconds). Can not be used to disable caching, only override with a new cache ttl", "in": "query", "schema": { "type": "string" } }, "NewJobId": { "name": "job_id", "description": "The job id to assign to the created job. if missing, job is chosen randomly using the ULID scheme. If a job id already exists in the queue or as a completed job, the request to create one will fail (Bad Request)", "in": "query", "schema": { "type": "string", "format": "uuid" } }, "IncludeHeader": { "name": "include_header", "description": "List of headers's keys (separated with ',') whove value are added to the args\nHeader's key lowercased and '-'' replaced to '_' such that 'Content-Type' becomes the 'content_type' arg key\n", "in": "query", "schema": { "type": "string" } }, "QueueLimit": { "name": "queue_limit", "description": "The maximum size of the queue for which the request would get rejected if that job would push it above that limit\n", "in": "query", "schema": { "type": "string" } }, "SkipPreprocessor": { "name": "skip_preprocessor", "description": "skip the preprocessor", "in": "query", "schema": { "type": "boolean" } }, "Payload": { "name": "payload", "description": "The base64 encoded payload that has been encoded as a JSON. e.g how to encode such payload encodeURIComponent\n`encodeURIComponent(btoa(JSON.stringify({a: 2})))`\n", "in": "query", "schema": { "type": "string" } }, "ScriptStartPath": { "name": "script_path_start", "description": "mask to filter matching starting path", "in": "query", "schema": { "type": "string" } }, "SchedulePath": { "name": "schedule_path", "description": "mask to filter by schedule path", "in": "query", "schema": { "type": "string" } }, "TriggerPath": { "name": "trigger_path", "description": "mask to filter by trigger path", "in": "query", "schema": { "type": "string" } }, "ScriptExactPath": { "name": "script_path_exact", "description": "mask to filter exact matching path", "in": "query", "schema": { "type": "string" } }, "ScriptExactHash": { "name": "script_hash", "description": "mask to filter exact matching path", "in": "query", "schema": { "type": "string" } }, "CreatedBefore": { "name": "created_before", "description": "filter on created before (inclusive) timestamp", "in": "query", "schema": { "type": "string", "format": "date-time" } }, "CreatedAfter": { "name": "created_after", "description": "filter on created after (exclusive) timestamp", "in": "query", "schema": { "type": "string", "format": "date-time" } }, "StartedBefore": { "name": "started_before", "description": "filter on started before (inclusive) timestamp", "in": "query", "schema": { "type": "string", "format": "date-time" } }, "StartedAfter": { "name": "started_after", "description": "filter on started after (exclusive) timestamp", "in": "query", "schema": { "type": "string", "format": "date-time" } }, "Before": { "name": "before", "description": "filter on started before (inclusive) timestamp", "in": "query", "schema": { "type": "string", "format": "date-time" } }, "CompletedBefore": { "name": "completed_before", "description": "filter on started before (inclusive) timestamp", "in": "query", "schema": { "type": "string", "format": "date-time" } }, "CompletedAfter": { "name": "completed_after", "description": "filter on started after (exclusive) timestamp", "in": "query", "schema": { "type": "string", "format": "date-time" } }, "CreatedAfterQueue": { "name": "created_after_queue", "description": "filter on jobs created after X for jobs in the queue only", "in": "query", "schema": { "type": "string", "format": "date-time" } }, "CreatedBeforeQueue": { "name": "created_before_queue", "description": "filter on jobs created before X for jobs in the queue only", "in": "query", "schema": { "type": "string", "format": "date-time" } }, "Success": { "name": "success", "description": "filter on successful jobs", "in": "query", "schema": { "type": "boolean" } }, "ScheduledForBeforeNow": { "name": "scheduled_for_before_now", "description": "filter on jobs scheduled_for before now (hence waitinf for a worker)", "in": "query", "schema": { "type": "boolean" } }, "Suspended": { "name": "suspended", "description": "filter on suspended jobs", "in": "query", "schema": { "type": "boolean" } }, "Running": { "name": "running", "description": "filter on running jobs", "in": "query", "schema": { "type": "boolean" } }, "AllowWildcards": { "name": "allow_wildcards", "description": "allow wildcards (*) in the filter of label, tag, worker", "in": "query", "schema": { "type": "boolean" } }, "ArgsFilter": { "name": "args", "description": "filter on jobs containing those args as a json subset (@> in postgres)", "in": "query", "schema": { "type": "string" } }, "Tag": { "name": "tag", "description": "filter on jobs with a given tag/worker group", "in": "query", "schema": { "type": "string" } }, "ResultFilter": { "name": "result", "description": "filter on jobs containing those result as a json subset (@> in postgres)", "in": "query", "schema": { "type": "string" } }, "After": { "name": "after", "description": "filter on created after (exclusive) timestamp", "in": "query", "schema": { "type": "string", "format": "date-time" } }, "Username": { "name": "username", "description": "filter on exact username of user", "in": "query", "schema": { "type": "string" } }, "Operation": { "name": "operation", "description": "filter on exact or prefix name of operation", "in": "query", "schema": { "type": "string" } }, "ResourceName": { "name": "resource", "description": "filter on exact or prefix name of resource", "in": "query", "schema": { "type": "string" } }, "ActionKind": { "name": "action_kind", "description": "filter on type of operation", "in": "query", "schema": { "type": "string", "enum": [ "Create", "Update", "Delete", "Execute" ] } }, "JobKinds": { "name": "job_kinds", "description": "filter on job kind (values 'preview', 'script', 'dependencies', 'flow') separated by,", "in": "query", "schema": { "type": "string" } }, "RunnableId": { "name": "runnable_id", "in": "query", "schema": { "type": "string" } }, "RunnableTypeQuery": { "name": "runnable_type", "in": "query", "schema": { "$ref": "#/components/schemas/RunnableType" } }, "InputId": { "name": "input", "in": "path", "required": true, "schema": { "type": "string" } }, "GetStarted": { "name": "get_started", "in": "query", "schema": { "type": "boolean" } }, "ConcurrencyId": { "name": "concurrency_id", "in": "path", "required": true, "schema": { "type": "string" } }, "RunnableKind": { "name": "runnable_kind", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "script", "flow" ] } } }, "schemas": { "OpenFlow": { "type": "object", "description": "Top-level flow definition containing metadata, configuration, and the flow structure", "properties": { "summary": { "type": "string", "description": "Short description of what this flow does" }, "description": { "type": "string", "description": "Detailed documentation for this flow" }, "value": { "$ref": "#/components/schemas/schemas-FlowValue" }, "schema": { "type": "object", "description": "JSON Schema for flow inputs. Use this to define input parameters, their types, defaults, and validation. For resource inputs, set type to 'object' and format to 'resource-' (e.g., 'resource-stripe')" }, "on_behalf_of_email": { "type": "string", "description": "The flow will be run with the permissions of the user with this email." } }, "required": [ "summary", "value" ] }, "FlowValue": { "type": "object", "description": "The flow structure containing modules and optional preprocessor/failure handlers", "properties": { "modules": { "type": "array", "description": "Array of steps that execute in sequence. Each step can be a script, subflow, loop, or branch", "items": { "$ref": "#/components/schemas/schemas-FlowModule" } }, "failure_module": { "description": "Special module that executes when the flow fails. Receives error object with message, name, stack, and step_id. Must have id 'failure'. Only supports script/rawscript types", "$ref": "#/components/schemas/schemas-FlowModule" }, "preprocessor_module": { "description": "Special module that runs before the first step on external triggers. Must have id 'preprocessor'. Only supports script/rawscript types. Cannot reference other step results", "$ref": "#/components/schemas/schemas-FlowModule" }, "same_worker": { "type": "boolean", "description": "If true, all steps run on the same worker for better performance" }, "concurrent_limit": { "type": "number", "description": "Maximum number of concurrent executions of this flow" }, "concurrency_key": { "type": "string", "description": "Expression to group concurrent executions (e.g., by user ID)" }, "concurrency_time_window_s": { "type": "number", "description": "Time window in seconds for concurrent_limit" }, "debounce_delay_s": { "type": "number", "description": "Delay in seconds to debounce flow executions" }, "debounce_key": { "type": "string", "description": "Expression to group debounced executions" }, "debounce_args_to_accumulate": { "type": "array", "description": "Arguments to accumulate across debounced executions", "items": { "type": "string" } }, "max_total_debouncing_time": { "type": "number", "description": "Maximum total time in seconds that a job can be debounced" }, "max_total_debounces_amount": { "type": "number", "description": "Maximum number of times a job can be debounced" }, "skip_expr": { "type": "string", "description": "JavaScript expression to conditionally skip the entire flow" }, "cache_ttl": { "type": "number", "description": "Cache duration in seconds for flow results" }, "cache_ignore_s3_path": { "type": "boolean" }, "flow_env": { "type": "object", "description": "Environment variables available to all steps", "additionalProperties": { "type": "string" } }, "priority": { "type": "number", "description": "Execution priority (higher numbers run first)" }, "early_return": { "type": "string", "description": "JavaScript expression to return early from the flow" }, "chat_input_enabled": { "type": "boolean", "description": "Whether this flow accepts chat-style input" }, "notes": { "type": "array", "description": "Sticky notes attached to the flow", "items": { "$ref": "#/components/schemas/schemas-FlowNote" } } }, "required": [ "modules" ] }, "Retry": { "type": "object", "description": "Retry configuration for failed module executions", "properties": { "constant": { "type": "object", "description": "Retry with constant delay between attempts", "properties": { "attempts": { "type": "integer", "description": "Number of retry attempts" }, "seconds": { "type": "integer", "description": "Seconds to wait between retries" } } }, "exponential": { "type": "object", "description": "Retry with exponential backoff (delay doubles each time)", "properties": { "attempts": { "type": "integer", "description": "Number of retry attempts" }, "multiplier": { "type": "integer", "description": "Multiplier for exponential backoff" }, "seconds": { "type": "integer", "minimum": 1, "description": "Initial delay in seconds" }, "random_factor": { "type": "integer", "minimum": 0, "maximum": 100, "description": "Random jitter percentage (0-100) to avoid thundering herd" } } }, "retry_if": { "$ref": "#/components/schemas/RetryIf" } } }, "StopAfterIf": { "type": "object", "description": "Early termination condition for a module", "properties": { "skip_if_stopped": { "type": "boolean", "description": "If true, following steps are skipped when this condition triggers" }, "expr": { "type": "string", "description": "JavaScript expression evaluated after the module runs. Can use 'result' (step's result) or 'flow_input'. Return true to stop" }, "error_message": { "type": "string", "description": "Custom error message shown when stopping" } }, "required": [ "expr" ] }, "FlowModule": { "type": "object", "description": "A single step in a flow. Can be a script, subflow, loop, or branch", "properties": { "id": { "type": "string", "description": "Unique identifier for this step. Used to reference results via 'results.step_id'. Must be a valid identifier (alphanumeric, underscore, hyphen)" }, "value": { "$ref": "#/components/schemas/schemas-FlowModuleValue" }, "stop_after_if": { "description": "Early termination condition evaluated after this step completes", "$ref": "#/components/schemas/schemas-StopAfterIf" }, "stop_after_all_iters_if": { "description": "For loops only - early termination condition evaluated after all iterations complete", "$ref": "#/components/schemas/schemas-StopAfterIf" }, "skip_if": { "type": "object", "description": "Conditionally skip this step based on previous results or flow inputs", "properties": { "expr": { "type": "string", "description": "JavaScript expression that returns true to skip. Can use 'flow_input' or 'results.'" } }, "required": [ "expr" ] }, "sleep": { "description": "Delay before executing this step (in seconds or as expression)", "$ref": "#/components/schemas/schemas-InputTransform" }, "cache_ttl": { "type": "number", "description": "Cache duration in seconds for this step's results" }, "cache_ignore_s3_path": { "type": "boolean" }, "timeout": { "description": "Maximum execution time in seconds (static value or expression)", "$ref": "#/components/schemas/schemas-InputTransform" }, "delete_after_use": { "type": "boolean", "description": "If true, this step's result is deleted after use to save memory" }, "summary": { "type": "string", "description": "Short description of what this step does" }, "mock": { "type": "object", "description": "Mock configuration for testing without executing the actual step", "properties": { "enabled": { "type": "boolean", "description": "If true, return mock value instead of executing" }, "return_value": { "description": "Value to return when mocked" } } }, "suspend": { "type": "object", "description": "Configuration for approval/resume steps that wait for user input", "properties": { "required_events": { "type": "integer", "description": "Number of approvals required before continuing" }, "timeout": { "type": "integer", "description": "Timeout in seconds before auto-continuing or canceling" }, "resume_form": { "type": "object", "description": "Form schema for collecting input when resuming", "properties": { "schema": { "type": "object", "description": "JSON Schema for the resume form" } } }, "user_auth_required": { "type": "boolean", "description": "If true, only authenticated users can approve" }, "user_groups_required": { "description": "Expression or list of groups that can approve", "$ref": "#/components/schemas/schemas-InputTransform" }, "self_approval_disabled": { "type": "boolean", "description": "If true, the user who started the flow cannot approve" }, "hide_cancel": { "type": "boolean", "description": "If true, hide the cancel button on the approval form" }, "continue_on_disapprove_timeout": { "type": "boolean", "description": "If true, continue flow on timeout instead of canceling" } } }, "priority": { "type": "number", "description": "Execution priority for this step (higher numbers run first)" }, "continue_on_error": { "type": "boolean", "description": "If true, flow continues even if this step fails" }, "retry": { "description": "Retry configuration if this step fails", "$ref": "#/components/schemas/schemas-Retry" } }, "required": [ "value", "id" ] }, "InputTransform": { "description": "Maps input parameters for a step. Can be a static value or a JavaScript expression that references previous results or flow inputs", "oneOf": [ { "$ref": "#/components/schemas/schemas-StaticTransform" }, { "$ref": "#/components/schemas/schemas-JavascriptTransform" }, { "$ref": "#/components/schemas/schemas-AiTransform" } ], "discriminator": { "propertyName": "type", "mapping": { "static": "#/components/schemas/schemas-StaticTransform", "javascript": "#/components/schemas/schemas-JavascriptTransform", "ai": "#/components/schemas/schemas-AiTransform" } } }, "StaticTransform": { "type": "object", "description": "Static value passed directly to the step. Use for hardcoded values or resource references like '$res:path/to/resource'", "properties": { "value": { "description": "The static value. For resources, use format '$res:path/to/resource'" }, "type": { "type": "string", "enum": [ "static" ] } }, "required": [ "type" ] }, "JavascriptTransform": { "type": "object", "description": "JavaScript expression evaluated at runtime. Can reference previous step results via 'results.step_id' or flow inputs via 'flow_input.property'. Inside loops, use 'flow_input.iter.value' for the current iteration value", "properties": { "expr": { "type": "string", "description": "JavaScript expression returning the value. Available variables - results (object with all previous step results), flow_input (flow inputs), flow_input.iter (in loops)" }, "type": { "type": "string", "enum": [ "javascript" ] } }, "required": [ "expr", "type" ] }, "AiTransform": { "type": "object", "description": "Value resolved by the AI runtime for this input. The AI engine decides how to satisfy the parameter.", "properties": { "type": { "type": "string", "enum": [ "ai" ] } }, "required": [ "type" ] }, "ProviderConfig": { "type": "object", "description": "Complete AI provider configuration with resource reference and model selection", "properties": { "kind": { "$ref": "#/components/schemas/AIProviderKind" }, "resource": { "type": "string", "description": "Resource reference in format '$res:{resource_path}' pointing to provider credentials" }, "model": { "type": "string", "description": "Model identifier (e.g., 'gpt-4', 'claude-3-opus-20240229', 'gemini-pro')" } }, "required": [ "kind", "resource", "model" ] }, "MemoryConfig": { "description": "Conversation memory configuration", "oneOf": [ { "$ref": "#/components/schemas/MemoryOff" }, { "$ref": "#/components/schemas/MemoryAuto" }, { "$ref": "#/components/schemas/MemoryManual" } ], "discriminator": { "propertyName": "kind", "mapping": { "off": "#/components/schemas/MemoryOff", "auto": "#/components/schemas/MemoryAuto", "manual": "#/components/schemas/MemoryManual" } } }, "FlowModuleValue": { "description": "The actual implementation of a flow step. Can be a script (inline or referenced), subflow, loop, branch, or special module type", "oneOf": [ { "$ref": "#/components/schemas/schemas-RawScript" }, { "$ref": "#/components/schemas/schemas-PathScript" }, { "$ref": "#/components/schemas/schemas-PathFlow" }, { "$ref": "#/components/schemas/schemas-ForloopFlow" }, { "$ref": "#/components/schemas/schemas-WhileloopFlow" }, { "$ref": "#/components/schemas/schemas-BranchOne" }, { "$ref": "#/components/schemas/schemas-BranchAll" }, { "$ref": "#/components/schemas/schemas-Identity" }, { "$ref": "#/components/schemas/schemas-AiAgent" } ], "discriminator": { "propertyName": "type", "mapping": { "rawscript": "#/components/schemas/schemas-RawScript", "script": "#/components/schemas/schemas-PathScript", "flow": "#/components/schemas/schemas-PathFlow", "forloopflow": "#/components/schemas/schemas-ForloopFlow", "whileloopflow": "#/components/schemas/schemas-WhileloopFlow", "branchone": "#/components/schemas/schemas-BranchOne", "branchall": "#/components/schemas/schemas-BranchAll", "identity": "#/components/schemas/schemas-Identity", "aiagent": "#/components/schemas/schemas-AiAgent" } } }, "RawScript": { "type": "object", "description": "Inline script with code defined directly in the flow. Use 'bun' as default language if unspecified. The script receives arguments from input_transforms", "properties": { "input_transforms": { "type": "object", "description": "Map of parameter names to their values (static or JavaScript expressions). These become the script's input arguments", "additionalProperties": { "$ref": "#/components/schemas/schemas-InputTransform" } }, "content": { "type": "string", "description": "The script source code. Should export a 'main' function" }, "language": { "type": "string", "description": "Programming language for this script", "enum": [ "deno", "bun", "python3", "go", "bash", "powershell", "postgresql", "mysql", "bigquery", "snowflake", "mssql", "oracledb", "graphql", "nativets", "php", "rust", "ansible", "csharp", "nu", "java", "ruby", "duckdb" ] }, "path": { "type": "string", "description": "Optional path for saving this script" }, "lock": { "type": "string", "description": "Lock file content for dependencies" }, "type": { "type": "string", "enum": [ "rawscript" ] }, "tag": { "type": "string", "description": "Worker group tag for execution routing" }, "concurrent_limit": { "type": "number", "description": "Maximum concurrent executions of this script" }, "concurrency_time_window_s": { "type": "number", "description": "Time window for concurrent_limit" }, "custom_concurrency_key": { "type": "string", "description": "Custom key for grouping concurrent executions" }, "is_trigger": { "type": "boolean", "description": "If true, this script is a trigger that can start the flow" }, "assets": { "type": "array", "description": "External resources this script accesses (S3 objects, resources, etc.)", "items": { "type": "object", "required": [ "path", "kind" ], "properties": { "path": { "type": "string", "description": "Path to the asset" }, "kind": { "type": "string", "description": "Type of asset", "enum": [ "s3object", "resource", "ducklake", "datatable" ] }, "access_type": { "type": "string", "nullable": true, "description": "Access level for this asset", "enum": [ "r", "w", "rw" ] }, "alt_access_type": { "type": "string", "nullable": true, "description": "Alternative access level", "enum": [ "r", "w", "rw" ] } } } } }, "required": [ "type", "content", "language", "input_transforms" ] }, "PathScript": { "type": "object", "description": "Reference to an existing script by path. Use this when calling a previously saved script instead of writing inline code", "properties": { "input_transforms": { "type": "object", "description": "Map of parameter names to their values (static or JavaScript expressions). These become the script's input arguments", "additionalProperties": { "$ref": "#/components/schemas/schemas-InputTransform" } }, "path": { "type": "string", "description": "Path to the script in the workspace (e.g., 'f/scripts/send_email')" }, "hash": { "type": "string", "description": "Optional specific version hash of the script to use" }, "type": { "type": "string", "enum": [ "script" ] }, "tag_override": { "type": "string", "description": "Override the script's default worker group tag" }, "is_trigger": { "type": "boolean", "description": "If true, this script is a trigger that can start the flow" } }, "required": [ "type", "path", "input_transforms" ] }, "PathFlow": { "type": "object", "description": "Reference to an existing flow by path. Use this to call another flow as a subflow", "properties": { "input_transforms": { "type": "object", "description": "Map of parameter names to their values (static or JavaScript expressions). These become the subflow's input arguments", "additionalProperties": { "$ref": "#/components/schemas/schemas-InputTransform" } }, "path": { "type": "string", "description": "Path to the flow in the workspace (e.g., 'f/flows/process_user')" }, "type": { "type": "string", "enum": [ "flow" ] } }, "required": [ "type", "path", "input_transforms" ] }, "ForloopFlow": { "type": "object", "description": "Executes nested modules in a loop over an iterator. Inside the loop, use 'flow_input.iter.value' to access the current iteration value, and 'flow_input.iter.index' for the index. Supports parallel execution for better performance on I/O-bound operations", "properties": { "modules": { "type": "array", "description": "Steps to execute for each iteration. These can reference the iteration value via 'flow_input.iter.value'", "items": { "$ref": "#/components/schemas/schemas-FlowModule" } }, "iterator": { "description": "JavaScript expression that returns an array to iterate over. Can reference 'results.step_id' or 'flow_input'", "$ref": "#/components/schemas/schemas-InputTransform" }, "skip_failures": { "type": "boolean", "description": "If true, iteration failures don't stop the loop. Failed iterations return null" }, "type": { "type": "string", "enum": [ "forloopflow" ] }, "parallel": { "type": "boolean", "description": "If true, iterations run concurrently (faster for I/O-bound operations). Use with parallelism to control concurrency" }, "parallelism": { "description": "Maximum number of concurrent iterations when parallel=true. Limits resource usage. Can be static number or expression", "$ref": "#/components/schemas/schemas-InputTransform" }, "squash": { "type": "boolean" } }, "required": [ "modules", "iterator", "skip_failures", "type" ] }, "WhileloopFlow": { "type": "object", "description": "Executes nested modules repeatedly while a condition is true. The loop checks the condition after each iteration. Use stop_after_if on modules to control loop termination", "properties": { "modules": { "type": "array", "description": "Steps to execute in each iteration. Use stop_after_if to control when the loop ends", "items": { "$ref": "#/components/schemas/schemas-FlowModule" } }, "skip_failures": { "type": "boolean", "description": "If true, iteration failures don't stop the loop. Failed iterations return null" }, "type": { "type": "string", "enum": [ "whileloopflow" ] }, "parallel": { "type": "boolean", "description": "If true, iterations run concurrently (use with caution in while loops)" }, "parallelism": { "description": "Maximum number of concurrent iterations when parallel=true", "$ref": "#/components/schemas/schemas-InputTransform" }, "squash": { "type": "boolean" } }, "required": [ "modules", "skip_failures", "type" ] }, "BranchOne": { "type": "object", "description": "Conditional branching where only the first matching branch executes. Branches are evaluated in order, and the first one with a true expression runs. If no branches match, the default branch executes", "properties": { "branches": { "type": "array", "description": "Array of branches to evaluate in order. The first branch with expr evaluating to true executes", "items": { "type": "object", "properties": { "summary": { "type": "string", "description": "Short description of this branch condition" }, "expr": { "type": "string", "description": "JavaScript expression that returns boolean. Can use 'results.step_id' or 'flow_input'. First true expr wins" }, "modules": { "type": "array", "description": "Steps to execute if this branch's expr is true", "items": { "$ref": "#/components/schemas/schemas-FlowModule" } } }, "required": [ "modules", "expr" ] } }, "default": { "type": "array", "description": "Steps to execute if no branch expressions match", "items": { "$ref": "#/components/schemas/schemas-FlowModule" } }, "type": { "type": "string", "enum": [ "branchone" ] } }, "required": [ "branches", "default", "type" ] }, "BranchAll": { "type": "object", "description": "Parallel branching where all branches execute simultaneously. Unlike BranchOne, all branches run regardless of conditions. Useful for executing independent tasks concurrently", "properties": { "branches": { "type": "array", "description": "Array of branches that all execute (either in parallel or sequentially)", "items": { "type": "object", "properties": { "summary": { "type": "string", "description": "Short description of this branch's purpose" }, "skip_failure": { "type": "boolean", "description": "If true, failure in this branch doesn't fail the entire flow" }, "modules": { "type": "array", "description": "Steps to execute in this branch", "items": { "$ref": "#/components/schemas/schemas-FlowModule" } } }, "required": [ "modules" ] } }, "type": { "type": "string", "enum": [ "branchall" ] }, "parallel": { "type": "boolean", "description": "If true, all branches execute concurrently. If false, they execute sequentially" } }, "required": [ "branches", "type" ] }, "AiAgent": { "type": "object", "description": "AI agent step that can use tools to accomplish tasks. The agent receives inputs and can call any of its configured tools to complete the task", "properties": { "input_transforms": { "type": "object", "description": "Input parameters for the AI agent mapped to their values", "properties": { "provider": { "$ref": "#/components/schemas/ProviderTransform" }, "output_type": { "allOf": [ { "$ref": "#/components/schemas/schemas-InputTransform" } ], "description": "Output format type.\nValid values: 'text' (default) - plain text response, 'image' - image generation\n" }, "user_message": { "allOf": [ { "$ref": "#/components/schemas/schemas-InputTransform" } ], "description": "The user's prompt/message to the AI agent. Supports variable interpolation with flow.input syntax." }, "system_prompt": { "allOf": [ { "$ref": "#/components/schemas/schemas-InputTransform" } ], "description": "System instructions that guide the AI's behavior, persona, and response style. Optional." }, "streaming": { "allOf": [ { "$ref": "#/components/schemas/schemas-InputTransform" } ], "description": "Boolean. If true, stream the AI response incrementally.\nStreaming events include: token_delta, tool_call, tool_call_arguments, tool_execution, tool_result\n" }, "memory": { "$ref": "#/components/schemas/MemoryTransform" }, "output_schema": { "allOf": [ { "$ref": "#/components/schemas/schemas-InputTransform" } ], "description": "JSON Schema object defining structured output format. Used when you need the AI to return data in a specific shape.\nSupports standard JSON Schema properties: type, properties, required, items, enum, pattern, minLength, maxLength, minimum, maximum, etc.\nExample: { type: 'object', properties: { name: { type: 'string' }, age: { type: 'integer' } }, required: ['name'] }\n" }, "user_images": { "allOf": [ { "$ref": "#/components/schemas/schemas-InputTransform" } ], "description": "Array of image references for vision-capable models.\nFormat: Array<{ bucket: string, key: string }> - S3 object references\nExample: [{ bucket: 'my-bucket', key: 'images/photo.jpg' }]\n" }, "max_completion_tokens": { "allOf": [ { "$ref": "#/components/schemas/schemas-InputTransform" } ], "description": "Integer. Maximum number of tokens the AI will generate in its response.\nRange: 1 to 4,294,967,295. Typical values: 256-4096 for most use cases.\n" }, "temperature": { "allOf": [ { "$ref": "#/components/schemas/schemas-InputTransform" } ], "description": "Float. Controls randomness/creativity of responses.\nRange: 0.0 to 2.0 (provider-dependent)\n- 0.0 = deterministic, focused responses\n- 0.7 = balanced (common default)\n- 1.0+ = more creative/random\n" } }, "required": [ "provider", "user_message", "output_type" ] }, "tools": { "type": "array", "description": "Array of tools the agent can use. The agent decides which tools to call based on the task", "items": { "$ref": "#/components/schemas/AgentTool" } }, "type": { "type": "string", "enum": [ "aiagent" ] }, "parallel": { "type": "boolean", "description": "If true, the agent can execute multiple tool calls in parallel" } }, "required": [ "tools", "type", "input_transforms" ] }, "Identity": { "type": "object", "description": "Pass-through module that returns its input unchanged. Useful for flow structure or as a placeholder", "properties": { "type": { "type": "string", "enum": [ "identity" ] }, "flow": { "type": "boolean", "description": "If true, marks this as a flow identity (special handling)" } }, "required": [ "type" ] }, "FlowStatus": { "type": "object", "properties": { "step": { "type": "integer" }, "modules": { "type": "array", "items": { "$ref": "#/components/schemas/schemas-FlowStatusModule" } }, "user_states": { "additionalProperties": true }, "preprocessor_module": { "allOf": [ { "$ref": "#/components/schemas/schemas-FlowStatusModule" } ] }, "failure_module": { "allOf": [ { "$ref": "#/components/schemas/schemas-FlowStatusModule" }, { "type": "object", "properties": { "parent_module": { "type": "string" } } } ] }, "retry": { "type": "object", "properties": { "fail_count": { "type": "integer" }, "failed_jobs": { "type": "array", "items": { "type": "string", "format": "uuid" } } } } }, "required": [ "step", "modules", "failure_module" ] }, "FlowStatusModule": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "WaitingForPriorSteps", "WaitingForEvents", "WaitingForExecutor", "InProgress", "Success", "Failure" ] }, "id": { "type": "string" }, "job": { "type": "string", "format": "uuid" }, "count": { "type": "integer" }, "progress": { "type": "integer" }, "iterator": { "type": "object", "properties": { "index": { "type": "integer" }, "itered": { "type": "array", "items": {} }, "itered_len": { "type": "integer" }, "args": {} } }, "flow_jobs": { "type": "array", "items": { "type": "string" } }, "flow_jobs_success": { "type": "array", "items": { "type": "boolean" } }, "flow_jobs_duration": { "type": "object", "properties": { "started_at": { "type": "array", "items": { "type": "string" } }, "duration_ms": { "type": "array", "items": { "type": "integer" } } } }, "branch_chosen": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "branch", "default" ] }, "branch": { "type": "integer" } }, "required": [ "type" ] }, "branchall": { "type": "object", "properties": { "branch": { "type": "integer" }, "len": { "type": "integer" } }, "required": [ "branch", "len" ] }, "approvers": { "type": "array", "items": { "type": "object", "properties": { "resume_id": { "type": "integer" }, "approver": { "type": "string" } }, "required": [ "resume_id", "approver" ] } }, "failed_retries": { "type": "array", "items": { "type": "string", "format": "uuid" } }, "skipped": { "type": "boolean" }, "agent_actions": { "type": "array", "items": { "type": "object", "oneOf": [ { "type": "object", "properties": { "job_id": { "type": "string", "format": "uuid" }, "function_name": { "type": "string" }, "type": { "type": "string", "enum": [ "tool_call" ] }, "module_id": { "type": "string" } }, "required": [ "job_id", "function_name", "type", "module_id" ] }, { "type": "object", "properties": { "call_id": { "type": "string", "format": "uuid" }, "function_name": { "type": "string" }, "resource_path": { "type": "string" }, "type": { "type": "string", "enum": [ "mcp_tool_call" ] }, "arguments": { "type": "object" } }, "required": [ "call_id", "function_name", "resource_path", "type" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "web_search" ] } }, "required": [ "type" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "message" ] } }, "required": [ "content", "type" ] } ] } }, "agent_actions_success": { "type": "array", "items": { "type": "boolean" } } }, "required": [ "type" ] }, "FlowNote": { "type": "object", "description": "A sticky note attached to a flow for documentation and annotation", "properties": { "id": { "type": "string", "description": "Unique identifier for the note" }, "text": { "type": "string", "description": "Content of the note" }, "position": { "type": "object", "description": "Position of the note in the flow editor", "properties": { "x": { "type": "number", "description": "X coordinate" }, "y": { "type": "number", "description": "Y coordinate" } }, "required": [ "x", "y" ] }, "size": { "type": "object", "description": "Size of the note in the flow editor", "properties": { "width": { "type": "number", "description": "Width in pixels" }, "height": { "type": "number", "description": "Height in pixels" } }, "required": [ "width", "height" ] }, "color": { "type": "string", "description": "Color of the note (e.g., \"yellow\", \"#ffff00\")" }, "type": { "type": "string", "enum": [ "free", "group" ], "description": "Type of note - 'free' for standalone notes, 'group' for notes that group other nodes" }, "locked": { "type": "boolean", "default": false, "description": "Whether the note is locked and cannot be edited or moved" }, "contained_node_ids": { "type": "array", "items": { "type": "string" }, "description": "For group notes, the IDs of nodes contained within this group" } }, "required": [ "id", "text", "color", "type" ] }, "HealthStatusResponse": { "type": "object", "description": "Health status response (cached with 5s TTL)", "required": [ "status", "checked_at", "database_healthy", "workers_alive" ], "properties": { "status": { "type": "string", "enum": [ "healthy", "degraded", "unhealthy" ], "description": "Overall health status" }, "checked_at": { "type": "string", "format": "date-time", "description": "Timestamp when the health check was actually performed (not cache return time)" }, "database_healthy": { "type": "boolean", "description": "Whether the database is reachable" }, "workers_alive": { "type": "integer", "format": "int64", "description": "Number of workers that pinged within last 5 minutes" } } }, "DetailedHealthResponse": { "type": "object", "description": "Detailed health status response (always fresh, no caching)", "required": [ "status", "checked_at", "version", "checks" ], "properties": { "status": { "type": "string", "enum": [ "healthy", "degraded", "unhealthy" ], "description": "Overall health status" }, "checked_at": { "type": "string", "format": "date-time", "description": "Timestamp when the health check was performed" }, "version": { "type": "string", "description": "Server version (e.g., \"EE 1.615.3\")" }, "checks": { "$ref": "#/components/schemas/HealthChecks" } } }, "HealthChecks": { "type": "object", "description": "Detailed health checks", "required": [ "database", "readiness" ], "properties": { "database": { "$ref": "#/components/schemas/DatabaseHealth" }, "workers": { "$ref": "#/components/schemas/WorkersHealth", "description": "Worker status (null if database is unreachable)", "nullable": true }, "queue": { "$ref": "#/components/schemas/QueueHealth", "description": "Queue status (null if database is unreachable)", "nullable": true }, "readiness": { "$ref": "#/components/schemas/ReadinessHealth" } } }, "DatabaseHealth": { "type": "object", "description": "Database health status", "required": [ "healthy", "latency_ms", "pool" ], "properties": { "healthy": { "type": "boolean", "description": "Whether the database is reachable" }, "latency_ms": { "type": "integer", "format": "int64", "description": "Database query latency in milliseconds" }, "pool": { "$ref": "#/components/schemas/PoolStats" } } }, "PoolStats": { "type": "object", "description": "Database connection pool statistics", "required": [ "size", "idle", "max_connections" ], "properties": { "size": { "type": "integer", "description": "Current number of connections in the pool" }, "idle": { "type": "integer", "description": "Number of idle connections" }, "max_connections": { "type": "integer", "description": "Maximum number of connections allowed" } } }, "WorkersHealth": { "type": "object", "description": "Workers health status", "required": [ "healthy", "active_count", "worker_groups", "min_version", "versions" ], "properties": { "healthy": { "type": "boolean", "description": "Whether any workers are active" }, "active_count": { "type": "integer", "format": "int64", "description": "Number of active workers (pinged in last 5 minutes)" }, "worker_groups": { "type": "array", "items": { "type": "string" }, "description": "List of active worker groups" }, "min_version": { "type": "string", "description": "Minimum required worker version" }, "versions": { "type": "array", "items": { "type": "string" }, "description": "List of active worker versions" } } }, "QueueHealth": { "type": "object", "description": "Job queue status", "required": [ "pending_jobs", "running_jobs" ], "properties": { "pending_jobs": { "type": "integer", "format": "int64", "description": "Number of pending jobs in the queue" }, "running_jobs": { "type": "integer", "format": "int64", "description": "Number of currently running jobs" } } }, "ReadinessHealth": { "type": "object", "description": "Server readiness status", "required": [ "healthy" ], "properties": { "healthy": { "type": "boolean", "description": "Whether the server is ready to accept requests" } } }, "AutoInviteConfig": { "type": "object", "description": "Configuration for auto-inviting users to the workspace", "properties": { "enabled": { "type": "boolean", "default": false }, "domain": { "type": "string" }, "operator": { "type": "boolean", "default": false, "description": "If true, auto-invited users are added as operators. If false, they are added as developers." }, "mode": { "type": "string", "enum": [ "invite", "add" ], "default": "invite" }, "instance_groups": { "type": "array", "items": { "type": "string" } }, "instance_groups_roles": { "type": "object", "additionalProperties": { "type": "string" } } } }, "ErrorHandlerConfig": { "type": "object", "description": "Configuration for the workspace error handler", "properties": { "path": { "type": "string", "description": "Path to the error handler script or flow" }, "extra_args": { "$ref": "#/components/schemas/ScriptArgs" }, "muted_on_cancel": { "type": "boolean", "default": false }, "muted_on_user_path": { "type": "boolean", "default": false } } }, "SuccessHandlerConfig": { "type": "object", "description": "Configuration for the workspace success handler", "properties": { "path": { "type": "string", "description": "Path to the success handler script or flow" }, "extra_args": { "$ref": "#/components/schemas/ScriptArgs" } } }, "EditErrorHandler": { "description": "Request body for editing the workspace error handler. Accepts both new grouped format and legacy flat format for backward compatibility.", "oneOf": [ { "$ref": "#/components/schemas/EditErrorHandlerNew" }, { "$ref": "#/components/schemas/EditErrorHandlerLegacy" } ] }, "EditErrorHandlerNew": { "type": "object", "description": "New grouped format for editing error handler", "properties": { "path": { "type": "string", "description": "Path to the error handler script or flow" }, "extra_args": { "$ref": "#/components/schemas/ScriptArgs" }, "muted_on_cancel": { "type": "boolean", "default": false }, "muted_on_user_path": { "type": "boolean", "default": false } } }, "EditErrorHandlerLegacy": { "type": "object", "description": "Legacy flat format for editing error handler (deprecated, use new format)", "properties": { "error_handler": { "type": "string", "description": "Path to the error handler script or flow" }, "error_handler_extra_args": { "$ref": "#/components/schemas/ScriptArgs" }, "error_handler_muted_on_cancel": { "type": "boolean", "default": false } } }, "EditSuccessHandler": { "description": "Request body for editing the workspace success handler. Accepts both new grouped format and legacy flat format for backward compatibility.", "oneOf": [ { "$ref": "#/components/schemas/EditSuccessHandlerNew" }, { "$ref": "#/components/schemas/EditSuccessHandlerLegacy" } ] }, "EditSuccessHandlerNew": { "type": "object", "description": "New grouped format for editing success handler", "properties": { "path": { "type": "string", "description": "Path to the success handler script or flow" }, "extra_args": { "$ref": "#/components/schemas/ScriptArgs" } } }, "EditSuccessHandlerLegacy": { "type": "object", "description": "Legacy flat format for editing success handler (deprecated, use new format)", "properties": { "success_handler": { "type": "string", "description": "Path to the success handler script or flow" }, "success_handler_extra_args": { "$ref": "#/components/schemas/ScriptArgs" } } }, "VaultSettings": { "type": "object", "required": [ "address", "mount_path" ], "properties": { "address": { "type": "string", "description": "HashiCorp Vault server address (e.g., https://vault.company.com:8200)" }, "mount_path": { "type": "string", "description": "KV v2 secrets engine mount path (e.g., windmill)" }, "jwt_role": { "type": "string", "description": "Vault JWT auth role name for Windmill (optional, if not provided token auth is used)" }, "namespace": { "type": "string", "description": "Vault Enterprise namespace (optional)" }, "token": { "type": "string", "description": "Static Vault token for testing/development (optional, if provided this is used instead of JWT authentication)" } } }, "SecretMigrationFailure": { "type": "object", "required": [ "workspace_id", "path", "error" ], "properties": { "workspace_id": { "type": "string", "description": "Workspace ID where the secret is located" }, "path": { "type": "string", "description": "Path of the secret that failed to migrate" }, "error": { "type": "string", "description": "Error message" } } }, "SecretMigrationReport": { "type": "object", "required": [ "total_secrets", "migrated_count", "failed_count", "failures" ], "properties": { "total_secrets": { "type": "integer", "format": "int64", "description": "Total number of secrets found" }, "migrated_count": { "type": "integer", "format": "int64", "description": "Number of secrets successfully migrated" }, "failed_count": { "type": "integer", "format": "int64", "description": "Number of secrets that failed to migrate" }, "failures": { "type": "array", "items": { "$ref": "#/components/schemas/SecretMigrationFailure" }, "description": "Details of any failures encountered during migration" } } }, "JwksResponse": { "type": "object", "required": [ "keys" ], "properties": { "keys": { "type": "array", "items": { "type": "object", "additionalProperties": true }, "description": "Array of JSON Web Keys for JWT verification" } } }, "FlowConversation": { "type": "object", "required": [ "id", "workspace_id", "flow_path", "created_at", "updated_at", "created_by" ], "properties": { "id": { "type": "string", "format": "uuid", "description": "Unique identifier for the conversation" }, "workspace_id": { "type": "string", "description": "The workspace ID where the conversation belongs" }, "flow_path": { "type": "string", "description": "Path of the flow this conversation is for" }, "title": { "type": "string", "description": "Optional title for the conversation", "nullable": true }, "created_at": { "type": "string", "format": "date-time", "description": "When the conversation was created" }, "updated_at": { "type": "string", "format": "date-time", "description": "When the conversation was last updated" }, "created_by": { "type": "string", "description": "Username who created the conversation" } } }, "FlowConversationMessage": { "type": "object", "required": [ "id", "conversation_id", "message_type", "content", "created_at" ], "properties": { "id": { "type": "string", "format": "uuid", "description": "Unique identifier for the message" }, "conversation_id": { "type": "string", "format": "uuid", "description": "The conversation this message belongs to" }, "message_type": { "type": "string", "enum": [ "user", "assistant", "system", "tool" ], "description": "Type of the message" }, "content": { "type": "string", "description": "The message content" }, "job_id": { "type": "string", "format": "uuid", "nullable": true, "description": "Associated job ID if this message came from a flow run" }, "created_at": { "type": "string", "format": "date-time", "description": "When the message was created" }, "step_name": { "type": "string", "description": "The step name that produced that message" }, "success": { "type": "boolean", "description": "Whether the message is a success" } } }, "EndpointTool": { "type": "object", "required": [ "name", "description", "instructions", "path", "method" ], "properties": { "name": { "type": "string", "description": "The tool name/operation ID" }, "description": { "type": "string", "description": "Short description of the tool" }, "instructions": { "type": "string", "description": "Detailed instructions for using the tool" }, "path": { "type": "string", "description": "API endpoint path" }, "method": { "type": "string", "description": "HTTP method (GET, POST, etc.)" }, "path_params_schema": { "type": "object", "description": "JSON schema for path parameters", "nullable": true }, "query_params_schema": { "type": "object", "description": "JSON schema for query parameters", "nullable": true }, "body_schema": { "type": "object", "description": "JSON schema for request body", "nullable": true } } }, "AIProvider": { "type": "string", "enum": [ "openai", "azure_openai", "anthropic", "mistral", "deepseek", "googleai", "groq", "openrouter", "togetherai", "aws_bedrock", "customai" ] }, "GitSyncObjectType": { "type": "string", "enum": [ "script", "flow", "app", "folder", "resource", "variable", "secret", "resourcetype", "schedule", "user", "group", "trigger", "settings", "key" ] }, "AIProviderModel": { "type": "object", "properties": { "model": { "type": "string" }, "provider": { "$ref": "#/components/schemas/AIProvider" } }, "required": [ "model", "provider" ] }, "AIProviderConfig": { "type": "object", "properties": { "resource_path": { "type": "string" }, "models": { "type": "array", "items": { "type": "string" } } }, "required": [ "resource_path", "models" ] }, "AIConfig": { "type": "object", "properties": { "providers": { "type": "object", "additionalProperties": { "$ref": "#/components/schemas/AIProviderConfig" } }, "default_model": { "$ref": "#/components/schemas/AIProviderModel" }, "code_completion_model": { "$ref": "#/components/schemas/AIProviderModel" }, "custom_prompts": { "type": "object", "additionalProperties": { "type": "string" } }, "max_tokens_per_model": { "type": "object", "additionalProperties": { "type": "integer", "minimum": 1, "maximum": 2000000 } } } }, "Alert": { "type": "object", "properties": { "name": { "type": "string" }, "tags_to_monitor": { "type": "array", "items": { "type": "string" } }, "jobs_num_threshold": { "type": "integer" }, "alert_cooldown_seconds": { "type": "integer" }, "alert_time_threshold_seconds": { "type": "integer" } }, "required": [ "name", "tags_to_monitor", "jobs_num_threshold", "alert_cooldown_seconds", "alert_time_threshold_seconds" ] }, "Configs": { "type": "object", "nullable": true, "properties": { "alerts": { "type": "array", "items": { "$ref": "#/components/schemas/Alert" } } } }, "WorkspaceDependencies": { "type": "object", "properties": { "id": { "type": "integer" }, "archived": { "type": "boolean" }, "name": { "type": "string" }, "description": { "type": "string" }, "content": { "type": "string" }, "language": { "$ref": "#/components/schemas/ScriptLang" }, "workspace_id": { "type": "string" }, "created_at": { "type": "string", "format": "date-time" } }, "required": [ "workspace_id", "language", "created_at", "content", "id", "archived" ] }, "NewWorkspaceDependencies": { "type": "object", "properties": { "workspace_id": { "type": "string" }, "language": { "$ref": "#/components/schemas/ScriptLang" }, "name": { "type": "string" }, "description": { "type": "string" }, "content": { "type": "string" } }, "required": [ "workspace_id", "language", "content" ] }, "Script": { "type": "object", "properties": { "workspace_id": { "type": "string" }, "hash": { "type": "string" }, "path": { "type": "string" }, "parent_hashes": { "type": "array", "description": "The first element is the direct parent of the script, the second is the parent of the first, etc\n", "items": { "type": "string" } }, "summary": { "type": "string" }, "description": { "type": "string" }, "content": { "type": "string" }, "created_by": { "type": "string" }, "created_at": { "type": "string", "format": "date-time" }, "archived": { "type": "boolean" }, "schema": { "type": "object" }, "deleted": { "type": "boolean" }, "is_template": { "type": "boolean" }, "extra_perms": { "type": "object", "additionalProperties": { "type": "boolean" } }, "lock": { "type": "string" }, "lock_error_logs": { "type": "string" }, "language": { "$ref": "#/components/schemas/ScriptLang" }, "kind": { "type": "string", "enum": [ "script", "failure", "trigger", "command", "approval", "preprocessor" ] }, "starred": { "type": "boolean" }, "tag": { "type": "string" }, "has_draft": { "type": "boolean" }, "draft_only": { "type": "boolean" }, "envs": { "type": "array", "items": { "type": "string" } }, "concurrent_limit": { "type": "integer" }, "concurrency_time_window_s": { "type": "integer" }, "concurrency_key": { "type": "string" }, "debounce_key": { "type": "string" }, "debounce_delay_s": { "type": "integer" }, "debounce_args_to_accumulate": { "type": "array", "items": { "type": "string" } }, "max_total_debouncing_time": { "type": "integer" }, "max_total_debounces_amount": { "type": "integer" }, "cache_ttl": { "type": "number" }, "dedicated_worker": { "type": "boolean" }, "ws_error_handler_muted": { "type": "boolean" }, "priority": { "type": "integer" }, "restart_unless_cancelled": { "type": "boolean" }, "timeout": { "type": "integer" }, "delete_after_use": { "type": "boolean" }, "visible_to_runner_only": { "type": "boolean" }, "no_main_func": { "type": "boolean" }, "codebase": { "type": "string" }, "has_preprocessor": { "type": "boolean" }, "on_behalf_of_email": { "type": "string" } }, "required": [ "hash", "path", "summary", "description", "content", "created_by", "created_at", "archived", "deleted", "is_template", "extra_perms", "language", "kind", "starred", "no_main_func", "has_preprocessor" ] }, "NewScript": { "type": "object", "properties": { "path": { "type": "string" }, "parent_hash": { "type": "string" }, "summary": { "type": "string" }, "description": { "type": "string" }, "content": { "type": "string" }, "schema": { "type": "object" }, "is_template": { "type": "boolean" }, "lock": { "type": "string" }, "language": { "$ref": "#/components/schemas/ScriptLang" }, "kind": { "type": "string", "enum": [ "script", "failure", "trigger", "command", "approval", "preprocessor" ] }, "tag": { "type": "string" }, "draft_only": { "type": "boolean" }, "envs": { "type": "array", "items": { "type": "string" } }, "concurrent_limit": { "type": "integer" }, "concurrency_time_window_s": { "type": "integer" }, "cache_ttl": { "type": "number" }, "cache_ignore_s3_path": { "type": "boolean" }, "dedicated_worker": { "type": "boolean" }, "ws_error_handler_muted": { "type": "boolean" }, "priority": { "type": "integer" }, "restart_unless_cancelled": { "type": "boolean" }, "timeout": { "type": "integer" }, "delete_after_use": { "type": "boolean" }, "deployment_message": { "type": "string" }, "concurrency_key": { "type": "string" }, "debounce_key": { "type": "string" }, "debounce_delay_s": { "type": "integer" }, "debounce_args_to_accumulate": { "type": "array", "items": { "type": "string" } }, "max_total_debouncing_time": { "type": "integer" }, "max_total_debounces_amount": { "type": "integer" }, "visible_to_runner_only": { "type": "boolean" }, "no_main_func": { "type": "boolean" }, "codebase": { "type": "string" }, "has_preprocessor": { "type": "boolean" }, "on_behalf_of_email": { "type": "string" }, "assets": { "type": "array", "items": { "type": "object", "required": [ "path", "kind" ], "properties": { "path": { "type": "string" }, "kind": { "$ref": "#/components/schemas/AssetKind" }, "access_type": { "type": "string", "enum": [ "r", "w", "rw" ] }, "alt_access_type": { "type": "string", "enum": [ "r", "w", "rw" ] } } } } }, "required": [ "path", "summary", "description", "content", "language" ] }, "NewScriptWithDraft": { "allOf": [ { "$ref": "#/components/schemas/NewScript" }, { "type": "object", "properties": { "draft": { "$ref": "#/components/schemas/NewScript" }, "hash": { "type": "string" } }, "required": [ "hash" ] } ] }, "ScriptHistory": { "type": "object", "properties": { "script_hash": { "type": "string" }, "deployment_msg": { "type": "string" } }, "required": [ "script_hash" ] }, "ScriptArgs": { "type": "object", "description": "The arguments to pass to the script or flow", "additionalProperties": true }, "Input": { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "created_by": { "type": "string" }, "created_at": { "type": "string", "format": "date-time" }, "is_public": { "type": "boolean" }, "success": { "type": "boolean" } }, "required": [ "id", "name", "args", "created_by", "created_at", "is_public" ] }, "CreateInput": { "type": "object", "properties": { "name": { "type": "string" }, "args": { "type": "object" } }, "required": [ "name", "args", "created_by" ] }, "UpdateInput": { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "is_public": { "type": "boolean" } }, "required": [ "id", "name", "is_public" ] }, "RunnableType": { "type": "string", "enum": [ "ScriptHash", "ScriptPath", "FlowPath" ] }, "QueuedJob": { "type": "object", "properties": { "workspace_id": { "type": "string" }, "id": { "type": "string", "format": "uuid" }, "parent_job": { "type": "string", "format": "uuid" }, "created_by": { "type": "string" }, "created_at": { "type": "string", "format": "date-time" }, "started_at": { "type": "string", "format": "date-time" }, "scheduled_for": { "type": "string", "format": "date-time" }, "running": { "type": "boolean" }, "script_path": { "type": "string" }, "script_hash": { "type": "string" }, "args": { "$ref": "#/components/schemas/ScriptArgs" }, "logs": { "type": "string" }, "raw_code": { "type": "string" }, "canceled": { "type": "boolean" }, "canceled_by": { "type": "string" }, "canceled_reason": { "type": "string" }, "last_ping": { "type": "string", "format": "date-time" }, "job_kind": { "type": "string", "enum": [ "script", "preview", "dependencies", "flowdependencies", "appdependencies", "flow", "flowpreview", "script_hub", "identity", "deploymentcallback", "singlestepflow", "flowscript", "flownode", "appscript", "aiagent", "unassigned_script", "unassigned_flow", "unassigned_singlestepflow" ] }, "schedule_path": { "type": "string" }, "permissioned_as": { "type": "string", "description": "The user (u/userfoo) or group (g/groupfoo) whom\nthe execution of this script will be permissioned_as and by extension its DT_TOKEN.\n" }, "flow_status": { "$ref": "#/components/schemas/FlowStatus" }, "workflow_as_code_status": { "$ref": "#/components/schemas/WorkflowStatus" }, "raw_flow": { "$ref": "#/components/schemas/FlowValue" }, "is_flow_step": { "type": "boolean" }, "language": { "$ref": "#/components/schemas/ScriptLang" }, "email": { "type": "string" }, "visible_to_owner": { "type": "boolean" }, "mem_peak": { "type": "integer" }, "tag": { "type": "string" }, "priority": { "type": "integer" }, "self_wait_time_ms": { "type": "number" }, "aggregate_wait_time_ms": { "type": "number" }, "suspend": { "type": "number" }, "preprocessed": { "type": "boolean" }, "worker": { "type": "string" } }, "required": [ "id", "running", "canceled", "job_kind", "permissioned_as", "is_flow_step", "email", "visible_to_owner", "tag" ] }, "CompletedJob": { "type": "object", "properties": { "workspace_id": { "type": "string" }, "id": { "type": "string", "format": "uuid" }, "parent_job": { "type": "string", "format": "uuid" }, "created_by": { "type": "string" }, "created_at": { "type": "string", "format": "date-time" }, "started_at": { "type": "string", "format": "date-time" }, "completed_at": { "type": "string", "format": "date-time" }, "duration_ms": { "type": "integer" }, "success": { "type": "boolean" }, "script_path": { "type": "string" }, "script_hash": { "type": "string" }, "args": { "$ref": "#/components/schemas/ScriptArgs" }, "result": {}, "logs": { "type": "string" }, "deleted": { "type": "boolean" }, "raw_code": { "type": "string" }, "canceled": { "type": "boolean" }, "canceled_by": { "type": "string" }, "canceled_reason": { "type": "string" }, "job_kind": { "type": "string", "enum": [ "script", "preview", "dependencies", "flow", "flowdependencies", "appdependencies", "flowpreview", "script_hub", "identity", "deploymentcallback", "singlestepflow", "flowscript", "flownode", "appscript", "aiagent", "unassigned_script", "unassigned_flow", "unassigned_singlestepflow" ] }, "schedule_path": { "type": "string" }, "permissioned_as": { "type": "string", "description": "The user (u/userfoo) or group (g/groupfoo) whom\nthe execution of this script will be permissioned_as and by extension its DT_TOKEN.\n" }, "flow_status": { "$ref": "#/components/schemas/FlowStatus" }, "workflow_as_code_status": { "$ref": "#/components/schemas/WorkflowStatus" }, "raw_flow": { "$ref": "#/components/schemas/FlowValue" }, "is_flow_step": { "type": "boolean" }, "language": { "$ref": "#/components/schemas/ScriptLang" }, "is_skipped": { "type": "boolean" }, "email": { "type": "string" }, "visible_to_owner": { "type": "boolean" }, "mem_peak": { "type": "integer" }, "tag": { "type": "string" }, "priority": { "type": "integer" }, "labels": { "type": "array", "items": { "type": "string" } }, "self_wait_time_ms": { "type": "number" }, "aggregate_wait_time_ms": { "type": "number" }, "preprocessed": { "type": "boolean" }, "worker": { "type": "string" } }, "required": [ "id", "created_by", "duration_ms", "created_at", "started_at", "success", "canceled", "job_kind", "permissioned_as", "is_flow_step", "is_skipped", "email", "visible_to_owner", "tag" ] }, "ExportableCompletedJob": { "type": "object", "description": "Completed job with full data for export/import operations", "properties": { "id": { "type": "string", "format": "uuid" }, "parent_job": { "type": "string", "format": "uuid" }, "created_by": { "type": "string" }, "created_at": { "type": "string", "format": "date-time" }, "started_at": { "type": "string", "format": "date-time" }, "completed_at": { "type": "string", "format": "date-time" }, "duration_ms": { "type": "integer" }, "script_path": { "type": "string" }, "script_hash": { "type": "string" }, "args": { "type": "object", "description": "Full job arguments without size restrictions" }, "result": { "type": "object", "description": "Full job result without size restrictions" }, "logs": { "type": "string", "description": "Complete job logs from v2_job table" }, "raw_code": { "type": "string" }, "raw_lock": { "type": "string" }, "canceled_by": { "type": "string" }, "canceled_reason": { "type": "string" }, "job_kind": { "type": "string", "enum": [ "script", "preview", "dependencies", "flow", "flowdependencies", "appdependencies", "flowpreview", "script_hub", "identity", "deploymentcallback", "singlestepflow", "flowscript", "flownode", "appscript", "aiagent", "unassigned_script", "unassigned_flow", "unassigned_singlestepflow" ] }, "trigger": { "type": "string", "description": "Trigger path for the job (replaces schedule_path)" }, "trigger_kind": { "type": "string", "enum": [ "webhook", "http", "websocket", "kafka", "email", "nats", "schedule", "app", "ui", "postgres", "sqs", "gcp" ] }, "permissioned_as": { "type": "string" }, "permissioned_as_email": { "type": "string" }, "flow_status": { "type": "object", "description": "Flow status from v2_job_status table" }, "workflow_as_code_status": { "type": "object" }, "raw_flow": { "type": "object" }, "is_flow_step": { "type": "boolean" }, "language": { "$ref": "#/components/schemas/ScriptLang" }, "is_skipped": { "type": "boolean" }, "email": { "type": "string" }, "visible_to_owner": { "type": "boolean" }, "mem_peak": { "type": "integer" }, "tag": { "type": "string" }, "priority": { "type": "integer" }, "labels": { "type": "array", "items": { "type": "string" } }, "same_worker": { "type": "boolean" }, "flow_step_id": { "type": "string" }, "flow_innermost_root_job": { "type": "string", "format": "uuid" }, "concurrent_limit": { "type": "integer" }, "concurrency_time_window_s": { "type": "integer" }, "timeout": { "type": "integer" }, "cache_ttl": { "type": "integer" }, "self_wait_time_ms": { "type": "integer" }, "aggregate_wait_time_ms": { "type": "integer" }, "preprocessed": { "type": "boolean" }, "worker": { "type": "string" }, "status": { "type": "string", "description": "Actual job status from database" } }, "required": [ "id", "created_by", "created_at", "job_kind", "permissioned_as", "email", "visible_to_owner" ] }, "ExportableQueuedJob": { "type": "object", "description": "Queued job with full data for export/import operations", "properties": { "id": { "type": "string", "format": "uuid" }, "parent_job": { "type": "string", "format": "uuid" }, "created_by": { "type": "string" }, "created_at": { "type": "string", "format": "date-time" }, "started_at": { "type": "string", "format": "date-time" }, "scheduled_for": { "type": "string", "format": "date-time" }, "script_path": { "type": "string" }, "script_hash": { "type": "string" }, "args": { "type": "object", "description": "Full job arguments without size restrictions" }, "logs": { "type": "string", "description": "Complete job logs from v2_job table" }, "raw_code": { "type": "string" }, "raw_lock": { "type": "string" }, "canceled_by": { "type": "string" }, "canceled_reason": { "type": "string" }, "job_kind": { "type": "string", "enum": [ "script", "preview", "dependencies", "flowdependencies", "appdependencies", "flow", "flowpreview", "script_hub", "identity", "deploymentcallback", "singlestepflow", "flowscript", "flownode", "appscript", "aiagent", "unassigned_script", "unassigned_flow", "unassigned_singlestepflow" ] }, "trigger": { "type": "string", "description": "Trigger path for the job (replaces schedule_path)" }, "trigger_kind": { "type": "string", "enum": [ "webhook", "http", "websocket", "kafka", "email", "nats", "schedule", "app", "ui", "postgres", "sqs", "gcp" ] }, "permissioned_as": { "type": "string" }, "permissioned_as_email": { "type": "string" }, "flow_status": { "type": "object", "description": "Flow status from v2_job_status table" }, "workflow_as_code_status": { "type": "object" }, "raw_flow": { "type": "object" }, "is_flow_step": { "type": "boolean" }, "language": { "$ref": "#/components/schemas/ScriptLang" }, "email": { "type": "string" }, "visible_to_owner": { "type": "boolean" }, "mem_peak": { "type": "integer" }, "tag": { "type": "string" }, "priority": { "type": "integer" }, "labels": { "type": "array", "items": { "type": "string" } }, "same_worker": { "type": "boolean" }, "flow_step_id": { "type": "string" }, "flow_innermost_root_job": { "type": "string", "format": "uuid" }, "concurrent_limit": { "type": "integer" }, "concurrency_time_window_s": { "type": "integer" }, "timeout": { "type": "integer" }, "cache_ttl": { "type": "integer" }, "self_wait_time_ms": { "type": "integer" }, "aggregate_wait_time_ms": { "type": "integer" }, "preprocessed": { "type": "boolean" }, "suspend": { "type": "integer" }, "suspend_until": { "type": "string", "format": "date-time" } }, "required": [ "id", "created_by", "created_at", "job_kind", "permissioned_as", "email", "visible_to_owner" ] }, "ObscuredJob": { "type": "object", "properties": { "typ": { "type": "string" }, "started_at": { "type": "string", "format": "date-time" }, "duration_ms": { "type": "number" } } }, "Job": { "oneOf": [ { "allOf": [ { "$ref": "#/components/schemas/CompletedJob" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "CompletedJob" ] } } } ] }, { "allOf": [ { "$ref": "#/components/schemas/QueuedJob" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "QueuedJob" ] } } } ] } ], "discriminator": { "propertyName": "type" } }, "User": { "type": "object", "properties": { "email": { "type": "string" }, "username": { "type": "string" }, "is_admin": { "type": "boolean" }, "name": { "type": "string" }, "is_super_admin": { "type": "boolean" }, "created_at": { "type": "string", "format": "date-time" }, "operator": { "type": "boolean" }, "disabled": { "type": "boolean" }, "groups": { "type": "array", "items": { "type": "string" } }, "folders": { "type": "array", "items": { "type": "string" } }, "folders_owners": { "type": "array", "items": { "type": "string" } }, "added_via": { "nullable": true, "allOf": [ { "$ref": "#/components/schemas/UserSource" } ] } }, "required": [ "email", "username", "is_admin", "is_super_admin", "created_at", "operator", "disabled", "folders", "folders_owners" ] }, "UserSource": { "type": "object", "properties": { "source": { "type": "string", "enum": [ "domain", "instance_group", "manual" ], "description": "How the user was added to the workspace" }, "domain": { "type": "string", "description": "The domain used for auto-invite (when source is 'domain')" }, "group": { "type": "string", "description": "The instance group name (when source is 'instance_group')" } }, "required": [ "source" ] }, "UserUsage": { "type": "object", "properties": { "email": { "type": "string" }, "executions": { "type": "number" } } }, "Login": { "type": "object", "properties": { "email": { "type": "string" }, "password": { "type": "string" } }, "required": [ "email", "password" ] }, "PasswordResetResponse": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] }, "EditWorkspaceUser": { "type": "object", "properties": { "is_admin": { "type": "boolean" }, "operator": { "type": "boolean" }, "disabled": { "type": "boolean" } } }, "TruncatedToken": { "type": "object", "properties": { "label": { "type": "string" }, "expiration": { "type": "string", "format": "date-time" }, "token_prefix": { "type": "string" }, "created_at": { "type": "string", "format": "date-time" }, "last_used_at": { "type": "string", "format": "date-time" }, "scopes": { "type": "array", "items": { "type": "string" } }, "email": { "type": "string" } }, "required": [ "token_prefix", "created_at", "last_used_at" ] }, "NewToken": { "type": "object", "properties": { "label": { "type": "string" }, "expiration": { "type": "string", "format": "date-time" }, "scopes": { "type": "array", "items": { "type": "string" } }, "workspace_id": { "type": "string" } } }, "NewTokenImpersonate": { "type": "object", "properties": { "label": { "type": "string" }, "expiration": { "type": "string", "format": "date-time" }, "impersonate_email": { "type": "string" }, "workspace_id": { "type": "string" } }, "required": [ "impersonate_email" ] }, "ListableVariable": { "type": "object", "properties": { "workspace_id": { "type": "string" }, "path": { "type": "string" }, "value": { "type": "string" }, "is_secret": { "type": "boolean" }, "description": { "type": "string" }, "account": { "type": "integer" }, "is_oauth": { "type": "boolean" }, "extra_perms": { "type": "object", "additionalProperties": { "type": "boolean" } }, "is_expired": { "type": "boolean" }, "refresh_error": { "type": "string" }, "is_linked": { "type": "boolean" }, "is_refreshed": { "type": "boolean" }, "expires_at": { "type": "string", "format": "date-time" } }, "required": [ "workspace_id", "path", "is_secret", "extra_perms" ] }, "ContextualVariable": { "type": "object", "properties": { "name": { "type": "string" }, "value": { "type": "string" }, "description": { "type": "string" }, "is_custom": { "type": "boolean" } }, "required": [ "name", "value", "description", "is_custom" ] }, "CreateVariable": { "type": "object", "properties": { "path": { "type": "string", "description": "The path to the variable" }, "value": { "type": "string", "description": "The value of the variable" }, "is_secret": { "type": "boolean", "description": "Whether the variable is a secret" }, "description": { "type": "string", "description": "The description of the variable" }, "account": { "type": "integer", "description": "The account identifier" }, "is_oauth": { "type": "boolean", "description": "Whether the variable is an OAuth variable" }, "expires_at": { "type": "string", "description": "The expiration date of the variable", "format": "date-time" } }, "required": [ "path", "value", "is_secret", "description" ] }, "EditVariable": { "type": "object", "properties": { "path": { "type": "string", "description": "The path to the variable" }, "value": { "type": "string", "description": "The new value of the variable" }, "is_secret": { "type": "boolean", "description": "Whether the variable is a secret" }, "description": { "type": "string", "description": "The new description of the variable" } } }, "AuditLog": { "type": "object", "properties": { "workspace_id": { "type": "string" }, "id": { "type": "integer" }, "timestamp": { "type": "string", "format": "date-time" }, "username": { "type": "string" }, "operation": { "type": "string", "enum": [ "jobs.run", "jobs.run.script", "jobs.run.preview", "jobs.run.flow", "jobs.run.flow_preview", "jobs.run.script_hub", "jobs.run.dependencies", "jobs.run.identity", "jobs.run.noop", "jobs.flow_dependencies", "jobs", "jobs.cancel", "jobs.force_cancel", "jobs.disapproval", "jobs.delete", "account.delete", "ai.request", "resources.create", "resources.update", "resources.delete", "resource_types.create", "resource_types.update", "resource_types.delete", "schedule.create", "schedule.setenabled", "schedule.edit", "schedule.delete", "scripts.create", "scripts.update", "scripts.archive", "scripts.delete", "users.create", "users.delete", "users.update", "users.login", "users.login_failure", "users.logout", "users.accept_invite", "users.decline_invite", "users.token.create", "users.token.delete", "users.add_to_workspace", "users.add_global", "users.setpassword", "users.impersonate", "users.leave_workspace", "oauth.login", "oauth.login_failure", "oauth.signup", "variables.create", "variables.delete", "variables.update", "flows.create", "flows.update", "flows.delete", "flows.archive", "apps.create", "apps.update", "apps.delete", "folder.create", "folder.update", "folder.delete", "folder.add_owner", "folder.remove_owner", "group.create", "group.delete", "group.edit", "group.adduser", "group.removeuser", "igroup.create", "igroup.delete", "igroup.adduser", "igroup.removeuser", "variables.decrypt_secret", "workspaces.edit_command_script", "workspaces.edit_deploy_to", "workspaces.edit_auto_invite_domain", "workspaces.edit_webhook", "workspaces.edit_copilot_config", "workspaces.edit_error_handler", "workspaces.create", "workspaces.update", "workspaces.archive", "workspaces.unarchive", "workspaces.delete" ] }, "action_kind": { "type": "string", "enum": [ "Created", "Updated", "Delete", "Execute" ] }, "resource": { "type": "string" }, "parameters": { "type": "object" }, "span": { "type": "string" } }, "required": [ "workspace_id", "id", "timestamp", "username", "operation", "action_kind" ] }, "MainArgSignature": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "Valid", "Invalid" ] }, "error": { "type": "string" }, "star_args": { "type": "boolean" }, "star_kwargs": { "type": "boolean" }, "args": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "typ": { "oneOf": [ { "type": "string", "enum": [ "float", "int", "bool", "email", "unknown", "bytes", "dict", "datetime", "sql" ] }, { "type": "object", "properties": { "resource": { "type": "string", "nullable": true } }, "required": [ "resource" ] }, { "type": "object", "properties": { "str": { "type": "array", "items": { "type": "string" }, "nullable": true } }, "required": [ "str" ] }, { "type": "object", "properties": { "object": { "type": "object", "properties": { "name": { "type": "string" }, "props": { "type": "array", "items": { "type": "object", "properties": { "key": { "type": "string" }, "typ": { "oneOf": [ { "type": "string", "enum": [ "float", "int", "bool", "email", "unknown", "bytes", "dict", "datetime", "sql" ] }, { "type": "object", "properties": { "str": {} }, "required": [ "str" ] } ] } }, "required": [ "key", "typ" ] } } } } }, "required": [ "object" ] }, { "type": "object", "properties": { "list": { "oneOf": [ { "type": "string", "enum": [ "float", "int", "bool", "email", "unknown", "bytes", "dict", "datetime", "sql" ] }, { "type": "object", "properties": { "str": {} }, "required": [ "str" ] } ], "nullable": true } }, "required": [ "list" ] } ] }, "has_default": { "type": "boolean" }, "default": {} }, "required": [ "name", "typ" ] } }, "no_main_func": { "type": "boolean", "nullable": true }, "has_preprocessor": { "type": "boolean", "nullable": true } }, "required": [ "star_args", "start_kwargs", "args", "type", "error", "no_main_func", "has_preprocessor" ] }, "ScriptLang": { "type": "string", "enum": [ "python3", "deno", "go", "bash", "powershell", "postgresql", "mysql", "bigquery", "snowflake", "mssql", "oracledb", "graphql", "nativets", "bun", "php", "rust", "ansible", "csharp", "nu", "java", "ruby", "duckdb", "bunnative" ] }, "Preview": { "type": "object", "properties": { "content": { "type": "string", "description": "The code to run" }, "path": { "type": "string", "description": "The path to the script" }, "script_hash": { "type": "string", "description": "The hash of the script" }, "args": { "$ref": "#/components/schemas/ScriptArgs" }, "language": { "$ref": "#/components/schemas/ScriptLang" }, "tag": { "type": "string" }, "kind": { "type": "string", "enum": [ "code", "identity", "http" ] }, "dedicated_worker": { "type": "boolean" }, "lock": { "type": "string" } }, "required": [ "args" ] }, "PreviewInline": { "type": "object", "properties": { "content": { "type": "string", "description": "The code to run" }, "args": { "$ref": "#/components/schemas/ScriptArgs" }, "language": { "$ref": "#/components/schemas/ScriptLang" } }, "required": [ "content", "args", "language" ] }, "WorkflowTask": { "type": "object", "properties": { "args": { "$ref": "#/components/schemas/ScriptArgs" } }, "required": [ "args" ] }, "WorkflowStatusRecord": { "type": "object", "additionalProperties": { "$ref": "#/components/schemas/WorkflowStatus" } }, "WorkflowStatus": { "type": "object", "properties": { "scheduled_for": { "type": "string", "format": "date-time" }, "started_at": { "type": "string", "format": "date-time" }, "duration_ms": { "type": "number" }, "name": { "type": "string" } } }, "CreateResource": { "type": "object", "properties": { "path": { "type": "string", "description": "The path to the resource" }, "value": {}, "description": { "type": "string", "description": "The description of the resource" }, "resource_type": { "type": "string", "description": "The resource_type associated with the resource" } }, "required": [ "path", "value", "resource_type" ] }, "EditResource": { "type": "object", "properties": { "path": { "type": "string", "description": "The path to the resource" }, "description": { "type": "string", "description": "The new description of the resource" }, "value": {}, "resource_type": { "type": "string", "description": "The new resource_type to be associated with the resource" } } }, "Resource": { "type": "object", "properties": { "workspace_id": { "type": "string" }, "path": { "type": "string" }, "description": { "type": "string" }, "resource_type": { "type": "string" }, "value": {}, "is_oauth": { "type": "boolean" }, "extra_perms": { "type": "object", "additionalProperties": { "type": "boolean" } }, "created_by": { "type": "string" }, "edited_at": { "type": "string", "format": "date-time" } }, "required": [ "path", "resource_type", "is_oauth" ] }, "ListableResource": { "type": "object", "properties": { "workspace_id": { "type": "string" }, "path": { "type": "string" }, "description": { "type": "string" }, "resource_type": { "type": "string" }, "value": {}, "is_oauth": { "type": "boolean" }, "extra_perms": { "type": "object", "additionalProperties": { "type": "boolean" } }, "is_expired": { "type": "boolean" }, "refresh_error": { "type": "string" }, "is_linked": { "type": "boolean" }, "is_refreshed": { "type": "boolean" }, "account": { "type": "number" }, "created_by": { "type": "string" }, "edited_at": { "type": "string", "format": "date-time" } }, "required": [ "path", "resource_type", "is_oauth", "is_linked", "is_refreshed" ] }, "ResourceType": { "type": "object", "properties": { "workspace_id": { "type": "string" }, "name": { "type": "string" }, "schema": {}, "description": { "type": "string" }, "created_by": { "type": "string" }, "edited_at": { "type": "string", "format": "date-time" }, "format_extension": { "type": "string" } }, "required": [ "name" ] }, "EditResourceType": { "type": "object", "properties": { "schema": {}, "description": { "type": "string" } } }, "Schedule": { "type": "object", "properties": { "path": { "type": "string", "description": "The unique path identifier for this schedule" }, "edited_by": { "type": "string", "description": "Username of the last person who edited this schedule" }, "edited_at": { "type": "string", "format": "date-time", "description": "Timestamp of the last edit" }, "schedule": { "type": "string", "description": "Cron expression with 6 fields (seconds, minutes, hours, day of month, month, day of week). Example '0 0 12 * * *' for daily at noon" }, "timezone": { "type": "string", "description": "IANA timezone for the schedule (e.g., 'UTC', 'Europe/Paris', 'America/New_York')" }, "enabled": { "type": "boolean", "description": "Whether the schedule is currently active and will trigger jobs" }, "script_path": { "type": "string", "description": "Path to the script or flow to execute when triggered" }, "is_flow": { "type": "boolean", "description": "True if script_path points to a flow, false if it points to a script" }, "args": { "$ref": "#/components/schemas/ScriptArgs" }, "extra_perms": { "type": "object", "additionalProperties": { "type": "boolean" }, "description": "Additional permissions for this schedule" }, "email": { "type": "string", "description": "Email of the user who owns this schedule, used for permissioned_as" }, "error": { "type": "string", "description": "Last error message if the schedule failed to trigger" }, "on_failure": { "type": "string", "description": "Path to a script or flow to run when the scheduled job fails" }, "on_failure_times": { "type": "number", "description": "Number of consecutive failures before the on_failure handler is triggered (default 1)" }, "on_failure_exact": { "type": "boolean", "description": "If true, trigger on_failure handler only on exactly N failures, not on every failure after N" }, "on_failure_extra_args": { "$ref": "#/components/schemas/ScriptArgs" }, "on_recovery": { "type": "string", "description": "Path to a script or flow to run when the schedule recovers after failures" }, "on_recovery_times": { "type": "number", "description": "Number of consecutive successes before the on_recovery handler is triggered (default 1)" }, "on_recovery_extra_args": { "$ref": "#/components/schemas/ScriptArgs" }, "on_success": { "type": "string", "description": "Path to a script or flow to run after each successful execution" }, "on_success_extra_args": { "$ref": "#/components/schemas/ScriptArgs" }, "ws_error_handler_muted": { "type": "boolean", "description": "If true, the workspace-level error handler will not be triggered for this schedule's failures" }, "retry": { "$ref": "#/components/schemas/Retry" }, "summary": { "type": "string", "description": "Short summary describing the purpose of this schedule" }, "description": { "type": "string", "description": "Detailed description of what this schedule does" }, "no_flow_overlap": { "type": "boolean", "description": "If true, skip this schedule's execution if the previous run is still in progress (prevents concurrent runs)" }, "tag": { "type": "string", "description": "Worker tag to route jobs to specific worker groups" }, "paused_until": { "type": "string", "format": "date-time", "description": "ISO 8601 datetime until which the schedule is paused. Schedule resumes automatically after this time" }, "cron_version": { "type": "string", "description": "Cron parser version. Use 'v2' for extended syntax with additional features" }, "dynamic_skip": { "type": "string", "description": "Path to a script that validates scheduled datetimes. Receives scheduled_for datetime and returns boolean to skip (true) or run (false)" } }, "required": [ "path", "edited_by", "edited_at", "schedule", "script_path", "timezone", "extra_perms", "is_flow", "enabled", "email" ] }, "ScheduleWJobs": { "allOf": [ { "$ref": "#/components/schemas/Schedule" }, { "type": "object", "properties": { "jobs": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string" }, "success": { "type": "boolean" }, "duration_ms": { "type": "number" } }, "required": [ "id", "success", "duration_ms" ] } } } } ] }, "ErrorHandler": { "type": "string", "enum": [ "custom", "slack", "teams", "email" ] }, "NewSchedule": { "type": "object", "properties": { "path": { "type": "string", "description": "The unique path identifier for this schedule" }, "schedule": { "type": "string", "description": "Cron expression with 6 fields (seconds, minutes, hours, day of month, month, day of week). Example '0 0 12 * * *' for daily at noon" }, "timezone": { "type": "string", "description": "IANA timezone for the schedule (e.g., 'UTC', 'Europe/Paris', 'America/New_York')" }, "script_path": { "type": "string", "description": "Path to the script or flow to execute when triggered" }, "is_flow": { "type": "boolean", "description": "True if script_path points to a flow, false if it points to a script" }, "args": { "$ref": "#/components/schemas/ScriptArgs" }, "enabled": { "type": "boolean", "description": "Whether the schedule is currently active and will trigger jobs" }, "on_failure": { "type": "string", "description": "Path to a script or flow to run when the scheduled job fails" }, "on_failure_times": { "type": "number", "description": "Number of consecutive failures before the on_failure handler is triggered (default 1)" }, "on_failure_exact": { "type": "boolean", "description": "If true, trigger on_failure handler only on exactly N failures, not on every failure after N" }, "on_failure_extra_args": { "$ref": "#/components/schemas/ScriptArgs" }, "on_recovery": { "type": "string", "description": "Path to a script or flow to run when the schedule recovers after failures" }, "on_recovery_times": { "type": "number", "description": "Number of consecutive successes before the on_recovery handler is triggered (default 1)" }, "on_recovery_extra_args": { "$ref": "#/components/schemas/ScriptArgs" }, "on_success": { "type": "string", "description": "Path to a script or flow to run after each successful execution" }, "on_success_extra_args": { "$ref": "#/components/schemas/ScriptArgs" }, "ws_error_handler_muted": { "type": "boolean", "description": "If true, the workspace-level error handler will not be triggered for this schedule's failures" }, "retry": { "$ref": "#/components/schemas/Retry" }, "no_flow_overlap": { "type": "boolean", "description": "If true, skip this schedule's execution if the previous run is still in progress (prevents concurrent runs)" }, "summary": { "type": "string", "description": "Short summary describing the purpose of this schedule" }, "description": { "type": "string", "description": "Detailed description of what this schedule does" }, "tag": { "type": "string", "description": "Worker tag to route jobs to specific worker groups" }, "paused_until": { "type": "string", "format": "date-time", "description": "ISO 8601 datetime until which the schedule is paused. Schedule resumes automatically after this time" }, "cron_version": { "type": "string", "description": "Cron parser version. Use 'v2' for extended syntax with additional features" }, "dynamic_skip": { "type": "string", "description": "Path to a script that validates scheduled datetimes. Receives scheduled_for datetime and returns boolean to skip (true) or run (false)" } }, "required": [ "path", "schedule", "timezone", "script_path", "is_flow", "args" ] }, "EditSchedule": { "type": "object", "properties": { "schedule": { "type": "string", "description": "Cron expression with 6 fields (seconds, minutes, hours, day of month, month, day of week). Example '0 0 12 * * *' for daily at noon" }, "timezone": { "type": "string", "description": "IANA timezone for the schedule (e.g., 'UTC', 'Europe/Paris', 'America/New_York')" }, "args": { "$ref": "#/components/schemas/ScriptArgs" }, "on_failure": { "type": "string", "description": "Path to a script or flow to run when the scheduled job fails" }, "on_failure_times": { "type": "number", "description": "Number of consecutive failures before the on_failure handler is triggered (default 1)" }, "on_failure_exact": { "type": "boolean", "description": "If true, trigger on_failure handler only on exactly N failures, not on every failure after N" }, "on_failure_extra_args": { "$ref": "#/components/schemas/ScriptArgs" }, "on_recovery": { "type": "string", "description": "Path to a script or flow to run when the schedule recovers after failures" }, "on_recovery_times": { "type": "number", "description": "Number of consecutive successes before the on_recovery handler is triggered (default 1)" }, "on_recovery_extra_args": { "$ref": "#/components/schemas/ScriptArgs" }, "on_success": { "type": "string", "description": "Path to a script or flow to run after each successful execution" }, "on_success_extra_args": { "$ref": "#/components/schemas/ScriptArgs" }, "ws_error_handler_muted": { "type": "boolean", "description": "If true, the workspace-level error handler will not be triggered for this schedule's failures" }, "retry": { "$ref": "#/components/schemas/Retry" }, "no_flow_overlap": { "type": "boolean", "description": "If true, skip this schedule's execution if the previous run is still in progress (prevents concurrent runs)" }, "summary": { "type": "string", "description": "Short summary describing the purpose of this schedule" }, "description": { "type": "string", "description": "Detailed description of what this schedule does" }, "tag": { "type": "string", "description": "Worker tag to route jobs to specific worker groups" }, "paused_until": { "type": "string", "format": "date-time", "description": "ISO 8601 datetime until which the schedule is paused. Schedule resumes automatically after this time" }, "cron_version": { "type": "string", "description": "Cron parser version. Use 'v2' for extended syntax with additional features" }, "dynamic_skip": { "type": "string", "description": "Path to a script that validates scheduled datetimes. Receives scheduled_for datetime and returns boolean to skip (true) or run (false)" } }, "required": [ "schedule", "timezone", "args" ] }, "JobTriggerKind": { "description": "job trigger kind (schedule, http, websocket...)", "type": "string", "enum": [ "webhook", "default_email", "email", "schedule", "http", "websocket", "postgres", "kafka", "nats", "mqtt", "sqs", "gcp" ] }, "TriggerMode": { "description": "job trigger mode", "type": "string", "enum": [ "enabled", "disabled", "suspended" ] }, "TriggerExtraProperty": { "type": "object", "properties": { "path": { "type": "string", "description": "The unique path identifier for this trigger" }, "script_path": { "type": "string", "description": "Path to the script or flow to execute when triggered" }, "email": { "type": "string", "description": "Email of the user who owns this trigger, used for permissioned_as" }, "extra_perms": { "type": "object", "description": "Additional permissions for this trigger", "additionalProperties": { "type": "boolean" } }, "workspace_id": { "type": "string", "description": "The workspace this trigger belongs to" }, "edited_by": { "type": "string", "description": "Username of the last person who edited this trigger" }, "edited_at": { "type": "string", "format": "date-time", "description": "Timestamp of the last edit" }, "is_flow": { "type": "boolean", "description": "True if script_path points to a flow, false if it points to a script" }, "mode": { "$ref": "#/components/schemas/TriggerMode", "description": "Trigger mode (enabled/disabled)" } }, "required": [ "path", "script_path", "email", "extra_perms", "workspace_id", "edited_by", "edited_at", "is_flow", "mode" ] }, "AuthenticationMethod": { "type": "string", "enum": [ "none", "windmill", "api_key", "basic_http", "custom_script", "signature" ] }, "RunnableKind": { "type": "string", "enum": [ "script", "flow" ] }, "OpenapiSpecFormat": { "type": "string", "enum": [ "yaml", "json" ] }, "OpenapiHttpRouteFilters": { "type": "object", "properties": { "folder_regex": { "type": "string" }, "path_regex": { "type": "string" }, "route_path_regex": { "type": "string" } }, "required": [ "folder_regex", "path_regex", "route_path_regex" ] }, "WebhookFilters": { "type": "object", "properties": { "user_or_folder_regex": { "type": "string", "enum": [ "*", "u", "f" ] }, "user_or_folder_regex_value": { "type": "string" }, "path": { "type": "string" }, "runnable_kind": { "$ref": "#/components/schemas/RunnableKind" } }, "required": [ "user_or_folder_regex", "user_or_folder_regex_value", "path", "runnable_kind" ] }, "OpenapiV3Info": { "type": "object", "properties": { "title": { "type": "string" }, "version": { "type": "string" }, "description": { "type": "string" }, "terms_of_service": { "type": "string" }, "contact": { "type": "object", "properties": { "name": { "type": "string" }, "url": { "type": "string" }, "email": { "type": "string" } } }, "license": { "type": "object", "properties": { "name": { "type": "string" }, "identifier": { "type": "string" }, "url": { "type": "string" } }, "required": [ "name" ] } }, "required": [ "title", "version" ] }, "GenerateOpenapiSpec": { "type": "object", "properties": { "info": { "$ref": "#/components/schemas/OpenapiV3Info" }, "url": { "type": "string" }, "openapi_spec_format": { "$ref": "#/components/schemas/OpenapiSpecFormat" }, "http_route_filters": { "type": "array", "items": { "$ref": "#/components/schemas/OpenapiHttpRouteFilters" } }, "webhook_filters": { "type": "array", "items": { "$ref": "#/components/schemas/WebhookFilters" } } } }, "HttpMethod": { "type": "string", "enum": [ "get", "post", "put", "delete", "patch" ] }, "HttpRequestType": { "type": "string", "enum": [ "sync", "async", "sync_sse" ] }, "HttpTrigger": { "allOf": [ { "$ref": "#/components/schemas/TriggerExtraProperty" } ], "type": "object", "properties": { "route_path": { "type": "string", "description": "The URL route path that will trigger this endpoint (e.g., 'api/myendpoint'). Must NOT start with a /." }, "static_asset_config": { "type": "object", "description": "Configuration for serving static assets (s3 bucket, storage path, filename)", "properties": { "s3": { "type": "string", "description": "S3 bucket path for static assets" }, "storage": { "type": "string", "description": "Storage path for static assets" }, "filename": { "type": "string", "description": "Filename for the static asset" } }, "required": [ "s3" ] }, "http_method": { "$ref": "#/components/schemas/HttpMethod", "description": "HTTP method (get, post, put, delete, patch) that triggers this endpoint" }, "authentication_resource_path": { "type": "string", "description": "Path to the resource containing authentication configuration (for api_key, basic_http, custom_script, signature methods)" }, "summary": { "type": "string", "description": "Short summary describing the purpose of this trigger" }, "description": { "type": "string", "description": "Detailed description of what this trigger does" }, "request_type": { "$ref": "#/components/schemas/HttpRequestType", "description": "How the request is handled - 'sync' waits for result, 'async' returns job ID immediately, 'sync_sse' streams results via Server-Sent Events" }, "authentication_method": { "$ref": "#/components/schemas/AuthenticationMethod", "description": "How requests are authenticated - 'none' (public), 'windmill' (Windmill token), 'api_key', 'basic_http', 'custom_script', 'signature'" }, "is_static_website": { "type": "boolean", "description": "If true, serves static files from S3/storage instead of running a script" }, "workspaced_route": { "type": "boolean", "description": "If true, the route includes the workspace ID in the path" }, "wrap_body": { "type": "boolean", "description": "If true, wraps the request body in a 'body' parameter" }, "raw_string": { "type": "boolean", "description": "If true, passes the request body as a raw string instead of parsing as JSON" }, "error_handler_path": { "type": "string", "description": "Path to a script or flow to run when the triggered job fails" }, "error_handler_args": { "$ref": "#/components/schemas/ScriptArgs", "description": "Arguments to pass to the error handler" }, "retry": { "$ref": "#/components/schemas/Retry", "description": "Retry configuration for failed executions" } }, "required": [ "route_path", "request_type", "authentication_method", "http_method", "is_static_website", "workspaced_route", "wrap_body", "raw_string" ] }, "NewHttpTrigger": { "type": "object", "properties": { "path": { "type": "string", "description": "The unique path identifier for this trigger" }, "script_path": { "type": "string", "description": "Path to the script or flow to execute when triggered" }, "route_path": { "type": "string", "description": "The URL route path that will trigger this endpoint (e.g., 'api/myendpoint'). Must NOT start with a /." }, "workspaced_route": { "type": "boolean", "description": "If true, the route includes the workspace ID in the path" }, "summary": { "type": "string", "description": "Short summary describing the purpose of this trigger" }, "description": { "type": "string", "description": "Detailed description of what this trigger does" }, "static_asset_config": { "type": "object", "description": "Configuration for serving static assets (s3 bucket, storage path, filename)", "properties": { "s3": { "type": "string", "description": "S3 bucket path for static assets" }, "storage": { "type": "string", "description": "Storage path for static assets" }, "filename": { "type": "string", "description": "Filename for the static asset" } }, "required": [ "s3" ] }, "is_flow": { "type": "boolean", "description": "True if script_path points to a flow, false if it points to a script" }, "http_method": { "$ref": "#/components/schemas/HttpMethod", "description": "HTTP method (get, post, put, delete, patch) that triggers this endpoint" }, "authentication_resource_path": { "type": "string", "description": "Path to the resource containing authentication configuration (for api_key, basic_http, custom_script, signature methods)" }, "is_async": { "type": "boolean", "description": "Deprecated, use request_type instead" }, "request_type": { "$ref": "#/components/schemas/HttpRequestType", "description": "How the request is handled - 'sync' waits for result, 'async' returns job ID immediately, 'sync_sse' streams results via Server-Sent Events" }, "authentication_method": { "$ref": "#/components/schemas/AuthenticationMethod", "description": "How requests are authenticated - 'none' (public), 'windmill' (Windmill token), 'api_key', 'basic_http', 'custom_script', 'signature'" }, "is_static_website": { "type": "boolean", "description": "If true, serves static files from S3/storage instead of running a script" }, "wrap_body": { "type": "boolean", "description": "If true, wraps the request body in a 'body' parameter" }, "mode": { "$ref": "#/components/schemas/TriggerMode" }, "raw_string": { "type": "boolean", "description": "If true, passes the request body as a raw string instead of parsing as JSON" }, "error_handler_path": { "type": "string", "description": "Path to a script or flow to run when the triggered job fails" }, "error_handler_args": { "$ref": "#/components/schemas/ScriptArgs", "description": "Arguments to pass to the error handler" }, "retry": { "$ref": "#/components/schemas/Retry", "description": "Retry configuration for failed executions" } }, "required": [ "path", "script_path", "route_path", "is_flow", "authentication_method", "http_method", "is_static_website" ] }, "EditHttpTrigger": { "type": "object", "properties": { "path": { "type": "string", "description": "The unique path identifier for this trigger" }, "script_path": { "type": "string", "description": "Path to the script or flow to execute when triggered" }, "route_path": { "type": "string", "description": "The URL route path that will trigger this endpoint (e.g., 'api/myendpoint'). Must NOT start with a /." }, "summary": { "type": "string", "description": "Short summary describing the purpose of this trigger" }, "description": { "type": "string", "description": "Detailed description of what this trigger does" }, "workspaced_route": { "type": "boolean", "description": "If true, the route includes the workspace ID in the path" }, "static_asset_config": { "type": "object", "description": "Configuration for serving static assets (s3 bucket, storage path, filename)", "properties": { "s3": { "type": "string", "description": "S3 bucket path for static assets" }, "storage": { "type": "string", "description": "Storage path for static assets" }, "filename": { "type": "string", "description": "Filename for the static asset" } }, "required": [ "s3" ] }, "authentication_resource_path": { "type": "string", "description": "Path to the resource containing authentication configuration (for api_key, basic_http, custom_script, signature methods)" }, "is_flow": { "type": "boolean", "description": "True if script_path points to a flow, false if it points to a script" }, "http_method": { "$ref": "#/components/schemas/HttpMethod", "description": "HTTP method (get, post, put, delete, patch) that triggers this endpoint" }, "is_async": { "type": "boolean", "description": "Deprecated, use request_type instead" }, "request_type": { "$ref": "#/components/schemas/HttpRequestType", "description": "How the request is handled - 'sync' waits for result, 'async' returns job ID immediately, 'sync_sse' streams results via Server-Sent Events" }, "authentication_method": { "$ref": "#/components/schemas/AuthenticationMethod", "description": "How requests are authenticated - 'none' (public), 'windmill' (Windmill token), 'api_key', 'basic_http', 'custom_script', 'signature'" }, "is_static_website": { "type": "boolean", "description": "If true, serves static files from S3/storage instead of running a script" }, "wrap_body": { "type": "boolean", "description": "If true, wraps the request body in a 'body' parameter" }, "raw_string": { "type": "boolean", "description": "If true, passes the request body as a raw string instead of parsing as JSON" }, "error_handler_path": { "type": "string", "description": "Path to a script or flow to run when the triggered job fails" }, "error_handler_args": { "$ref": "#/components/schemas/ScriptArgs", "description": "Arguments to pass to the error handler" }, "retry": { "$ref": "#/components/schemas/Retry", "description": "Retry configuration for failed executions" } }, "required": [ "path", "script_path", "is_flow", "kind", "authentication_method", "http_method", "is_static_website" ] }, "TriggersCount": { "type": "object", "properties": { "primary_schedule": { "type": "object", "properties": { "schedule": { "type": "string" } } }, "schedule_count": { "type": "number" }, "http_routes_count": { "type": "number" }, "webhook_count": { "type": "number" }, "email_count": { "type": "number" }, "default_email_count": { "type": "number" }, "websocket_count": { "type": "number" }, "postgres_count": { "type": "number" }, "kafka_count": { "type": "number" }, "nats_count": { "type": "number" }, "mqtt_count": { "type": "number" }, "gcp_count": { "type": "number" }, "sqs_count": { "type": "number" }, "nextcloud_count": { "type": "number" } } }, "WebsocketTrigger": { "allOf": [ { "$ref": "#/components/schemas/TriggerExtraProperty" } ], "type": "object", "properties": { "url": { "type": "string", "description": "The WebSocket URL to connect to (can be a static URL or computed by a runnable)" }, "server_id": { "type": "string", "description": "ID of the server currently handling this trigger (internal)" }, "last_server_ping": { "type": "string", "format": "date-time", "description": "Timestamp of last server heartbeat (internal)" }, "error": { "type": "string", "description": "Last error message if the trigger failed" }, "filters": { "type": "array", "description": "Array of key-value filters to match incoming messages (only matching messages trigger the script)", "items": { "type": "object", "properties": { "key": { "type": "string" }, "value": {} }, "required": [ "key", "value" ] } }, "initial_messages": { "type": "array", "description": "Messages to send immediately after connecting (can be raw strings or computed by runnables)", "items": { "$ref": "#/components/schemas/WebsocketTriggerInitialMessage" } }, "url_runnable_args": { "description": "Arguments to pass to the script/flow that computes the WebSocket URL", "$ref": "#/components/schemas/ScriptArgs" }, "can_return_message": { "type": "boolean", "description": "If true, the script can return a message to send back through the WebSocket" }, "can_return_error_result": { "type": "boolean", "description": "If true, error results are sent back through the WebSocket" }, "error_handler_path": { "type": "string", "description": "Path to a script or flow to run when the triggered job fails" }, "error_handler_args": { "description": "Arguments to pass to the error handler", "$ref": "#/components/schemas/ScriptArgs" }, "retry": { "description": "Retry configuration for failed executions", "$ref": "#/components/schemas/Retry" } }, "required": [ "url", "filters", "can_return_message", "can_return_error_result" ] }, "NewWebsocketTrigger": { "type": "object", "properties": { "path": { "type": "string", "description": "The unique path identifier for this trigger" }, "script_path": { "type": "string", "description": "Path to the script or flow to execute when a message is received" }, "is_flow": { "type": "boolean", "description": "True if script_path points to a flow, false if it points to a script" }, "url": { "type": "string", "description": "The WebSocket URL to connect to (can be a static URL or computed by a runnable)" }, "mode": { "$ref": "#/components/schemas/TriggerMode" }, "filters": { "type": "array", "description": "Array of key-value filters to match incoming messages (only matching messages trigger the script)", "items": { "type": "object", "properties": { "key": { "type": "string" }, "value": {} }, "required": [ "key", "value" ] } }, "initial_messages": { "type": "array", "description": "Messages to send immediately after connecting (can be raw strings or computed by runnables)", "items": { "$ref": "#/components/schemas/WebsocketTriggerInitialMessage" } }, "url_runnable_args": { "description": "Arguments to pass to the script/flow that computes the WebSocket URL", "$ref": "#/components/schemas/ScriptArgs" }, "can_return_message": { "type": "boolean", "description": "If true, the script can return a message to send back through the WebSocket" }, "can_return_error_result": { "type": "boolean", "description": "If true, error results are sent back through the WebSocket" }, "error_handler_path": { "type": "string", "description": "Path to a script or flow to run when the triggered job fails" }, "error_handler_args": { "description": "Arguments to pass to the error handler", "$ref": "#/components/schemas/ScriptArgs" }, "retry": { "description": "Retry configuration for failed executions", "$ref": "#/components/schemas/Retry" } }, "required": [ "path", "script_path", "url", "is_flow", "filters", "can_return_message", "can_return_error_result" ] }, "EditWebsocketTrigger": { "type": "object", "properties": { "url": { "type": "string", "description": "The WebSocket URL to connect to (can be a static URL or computed by a runnable)" }, "path": { "type": "string", "description": "The unique path identifier for this trigger" }, "script_path": { "type": "string", "description": "Path to the script or flow to execute when a message is received" }, "is_flow": { "type": "boolean", "description": "True if script_path points to a flow, false if it points to a script" }, "filters": { "type": "array", "description": "Array of key-value filters to match incoming messages (only matching messages trigger the script)", "items": { "type": "object", "properties": { "key": { "type": "string" }, "value": {} }, "required": [ "key", "value" ] } }, "initial_messages": { "type": "array", "description": "Messages to send immediately after connecting (can be raw strings or computed by runnables)", "items": { "$ref": "#/components/schemas/WebsocketTriggerInitialMessage" } }, "url_runnable_args": { "description": "Arguments to pass to the script/flow that computes the WebSocket URL", "$ref": "#/components/schemas/ScriptArgs" }, "can_return_message": { "type": "boolean", "description": "If true, the script can return a message to send back through the WebSocket" }, "can_return_error_result": { "type": "boolean", "description": "If true, error results are sent back through the WebSocket" }, "error_handler_path": { "type": "string", "description": "Path to a script or flow to run when the triggered job fails" }, "error_handler_args": { "description": "Arguments to pass to the error handler", "$ref": "#/components/schemas/ScriptArgs" }, "retry": { "description": "Retry configuration for failed executions", "$ref": "#/components/schemas/Retry" } }, "required": [ "path", "script_path", "url", "is_flow", "filters", "can_return_message", "can_return_error_result" ] }, "WebsocketTriggerInitialMessage": { "anyOf": [ { "type": "object", "properties": { "raw_message": { "type": "string" } }, "required": [ "raw_message" ] }, { "type": "object", "properties": { "runnable_result": { "type": "object", "properties": { "path": { "type": "string" }, "args": { "$ref": "#/components/schemas/ScriptArgs" }, "is_flow": { "type": "boolean" } }, "required": [ "path", "args", "is_flow" ] } }, "required": [ "runnable_result" ] } ] }, "MqttQoS": { "type": "string", "enum": [ "qos0", "qos1", "qos2" ] }, "MqttV3Config": { "type": "object", "properties": { "clean_session": { "type": "boolean" } } }, "MqttV5Config": { "type": "object", "properties": { "clean_start": { "type": "boolean" }, "topic_alias_maximum": { "type": "number" }, "session_expiry_interval": { "type": "number" } } }, "MqttSubscribeTopic": { "type": "object", "properties": { "qos": { "$ref": "#/components/schemas/MqttQoS" }, "topic": { "type": "string" } }, "required": [ "qos", "topic" ] }, "MqttClientVersion": { "type": "string", "enum": [ "v3", "v5" ] }, "MqttTrigger": { "allOf": [ { "$ref": "#/components/schemas/TriggerExtraProperty" } ], "type": "object", "properties": { "mqtt_resource_path": { "type": "string", "description": "Path to the MQTT resource containing broker connection configuration" }, "subscribe_topics": { "type": "array", "items": { "$ref": "#/components/schemas/MqttSubscribeTopic" }, "description": "Array of MQTT topics to subscribe to, each with topic name and QoS level" }, "v3_config": { "$ref": "#/components/schemas/MqttV3Config", "description": "MQTT v3 specific configuration (clean_session)" }, "v5_config": { "$ref": "#/components/schemas/MqttV5Config", "description": "MQTT v5 specific configuration (clean_start, topic_alias_maximum, session_expiry_interval)" }, "client_id": { "type": "string", "description": "MQTT client ID for this connection" }, "client_version": { "$ref": "#/components/schemas/MqttClientVersion", "description": "MQTT protocol version ('v3' or 'v5')" }, "server_id": { "type": "string", "description": "ID of the server currently handling this trigger (internal)" }, "last_server_ping": { "type": "string", "format": "date-time", "description": "Timestamp of last server heartbeat (internal)" }, "error": { "type": "string", "description": "Last error message if the trigger failed" }, "error_handler_path": { "type": "string", "description": "Path to a script or flow to run when the triggered job fails" }, "error_handler_args": { "$ref": "#/components/schemas/ScriptArgs", "description": "Arguments to pass to the error handler" }, "retry": { "$ref": "#/components/schemas/Retry", "description": "Retry configuration for failed executions" } }, "required": [ "subscribe_topics", "mqtt_resource_path" ] }, "NewMqttTrigger": { "type": "object", "properties": { "mqtt_resource_path": { "type": "string", "description": "Path to the MQTT resource containing broker connection configuration" }, "subscribe_topics": { "type": "array", "items": { "$ref": "#/components/schemas/MqttSubscribeTopic" }, "description": "Array of MQTT topics to subscribe to, each with topic name and QoS level" }, "client_id": { "type": "string", "description": "MQTT client ID for this connection" }, "v3_config": { "$ref": "#/components/schemas/MqttV3Config", "description": "MQTT v3 specific configuration (clean_session)" }, "v5_config": { "$ref": "#/components/schemas/MqttV5Config", "description": "MQTT v5 specific configuration (clean_start, topic_alias_maximum, session_expiry_interval)" }, "client_version": { "$ref": "#/components/schemas/MqttClientVersion", "description": "MQTT protocol version ('v3' or 'v5')" }, "path": { "type": "string", "description": "The unique path identifier for this trigger" }, "script_path": { "type": "string", "description": "Path to the script or flow to execute when a message is received" }, "is_flow": { "type": "boolean", "description": "True if script_path points to a flow, false if it points to a script" }, "mode": { "$ref": "#/components/schemas/TriggerMode" }, "error_handler_path": { "type": "string", "description": "Path to a script or flow to run when the triggered job fails" }, "error_handler_args": { "$ref": "#/components/schemas/ScriptArgs", "description": "Arguments to pass to the error handler" }, "retry": { "$ref": "#/components/schemas/Retry", "description": "Retry configuration for failed executions" } }, "required": [ "path", "script_path", "is_flow", "subscribe_topics", "mqtt_resource_path" ] }, "EditMqttTrigger": { "type": "object", "properties": { "mqtt_resource_path": { "type": "string", "description": "Path to the MQTT resource containing broker connection configuration" }, "subscribe_topics": { "type": "array", "items": { "$ref": "#/components/schemas/MqttSubscribeTopic" }, "description": "Array of MQTT topics to subscribe to, each with topic name and QoS level" }, "client_id": { "type": "string", "description": "MQTT client ID for this connection" }, "v3_config": { "$ref": "#/components/schemas/MqttV3Config", "description": "MQTT v3 specific configuration (clean_session)" }, "v5_config": { "$ref": "#/components/schemas/MqttV5Config", "description": "MQTT v5 specific configuration (clean_start, topic_alias_maximum, session_expiry_interval)" }, "client_version": { "$ref": "#/components/schemas/MqttClientVersion", "description": "MQTT protocol version ('v3' or 'v5')" }, "path": { "type": "string", "description": "The unique path identifier for this trigger" }, "script_path": { "type": "string", "description": "Path to the script or flow to execute when a message is received" }, "is_flow": { "type": "boolean", "description": "True if script_path points to a flow, false if it points to a script" }, "mode": { "$ref": "#/components/schemas/TriggerMode" }, "error_handler_path": { "type": "string", "description": "Path to a script or flow to run when the triggered job fails" }, "error_handler_args": { "$ref": "#/components/schemas/ScriptArgs", "description": "Arguments to pass to the error handler" }, "retry": { "$ref": "#/components/schemas/Retry", "description": "Retry configuration for failed executions" } }, "required": [ "path", "script_path", "is_flow", "enabled", "subscribe_topics", "mqtt_resource_path" ] }, "DeliveryType": { "type": "string", "enum": [ "push", "pull" ], "description": "Delivery mode for messages. 'push' for HTTP push delivery where messages are sent to a webhook endpoint, 'pull' for polling where the trigger actively fetches messages." }, "PushConfig": { "type": "object", "description": "Configuration for push delivery mode.", "properties": { "audience": { "type": "string", "description": "The audience claim for OIDC tokens used in push authentication." }, "authenticate": { "type": "boolean", "description": "If true, push messages will include OIDC authentication tokens." } }, "required": [ "authenticate", "base_endpoint" ] }, "GcpTrigger": { "allOf": [ { "$ref": "#/components/schemas/TriggerExtraProperty" } ], "type": "object", "description": "A Google Cloud Pub/Sub trigger that executes a script or flow when messages are received.", "properties": { "gcp_resource_path": { "type": "string", "description": "Path to the GCP resource containing service account credentials for authentication." }, "topic_id": { "type": "string", "description": "Google Cloud Pub/Sub topic ID to subscribe to." }, "subscription_id": { "type": "string", "description": "Google Cloud Pub/Sub subscription ID." }, "server_id": { "type": "string", "description": "ID of the server currently handling this trigger (internal use)." }, "delivery_type": { "$ref": "#/components/schemas/DeliveryType" }, "delivery_config": { "$ref": "#/components/schemas/PushConfig" }, "subscription_mode": { "$ref": "#/components/schemas/SubscriptionMode" }, "last_server_ping": { "type": "string", "format": "date-time", "description": "Timestamp of last server heartbeat (internal use)." }, "error": { "type": "string", "description": "Last error message if the trigger failed." }, "error_handler_path": { "type": "string", "description": "Path to a script or flow to run when the triggered job fails." }, "error_handler_args": { "$ref": "#/components/schemas/ScriptArgs", "description": "Arguments to pass to the error handler." }, "retry": { "$ref": "#/components/schemas/Retry", "description": "Retry configuration for failed executions." } }, "required": [ "gcp_resource_path", "topic_id", "subscription_id", "delivery_type", "subscription_mode" ] }, "SubscriptionMode": { "type": "string", "enum": [ "existing", "create_update" ], "description": "The mode of subscription. 'existing' means using an existing GCP subscription, while 'create_update' involves creating or updating a new subscription." }, "GcpTriggerData": { "type": "object", "description": "Data for creating or updating a Google Cloud Pub/Sub trigger.", "properties": { "gcp_resource_path": { "type": "string", "description": "Path to the GCP resource containing service account credentials for authentication." }, "subscription_mode": { "$ref": "#/components/schemas/SubscriptionMode" }, "topic_id": { "type": "string", "description": "Google Cloud Pub/Sub topic ID to subscribe to." }, "subscription_id": { "type": "string", "description": "Google Cloud Pub/Sub subscription ID." }, "base_endpoint": { "type": "string", "description": "Base URL for push delivery endpoint." }, "delivery_type": { "$ref": "#/components/schemas/DeliveryType" }, "delivery_config": { "$ref": "#/components/schemas/PushConfig" }, "path": { "type": "string", "description": "The unique path identifier for this trigger." }, "script_path": { "type": "string", "description": "Path to the script or flow to execute when a message is received." }, "is_flow": { "type": "boolean", "description": "True if script_path points to a flow, false if it points to a script." }, "mode": { "$ref": "#/components/schemas/TriggerMode" }, "auto_acknowledge_msg": { "type": "boolean", "description": "If true, automatically acknowledge messages after processing." }, "ack_deadline": { "type": "integer", "format": "int32", "minimum": 10, "maximum": 600, "description": "Time in seconds within which the message must be acknowledged. If not provided, defaults to the subscription's acknowledgment deadline (600 seconds)." }, "error_handler_path": { "type": "string", "description": "Path to a script or flow to run when the triggered job fails." }, "error_handler_args": { "$ref": "#/components/schemas/ScriptArgs", "description": "Arguments to pass to the error handler." }, "retry": { "$ref": "#/components/schemas/Retry", "description": "Retry configuration for failed executions." } }, "required": [ "path", "script_path", "is_flow", "gcp_resource_path", "topic_id", "subscription_mode" ] }, "GetAllTopicSubscription": { "type": "object", "properties": { "topic_id": { "type": "string" } }, "required": [ "topic_id" ] }, "DeleteGcpSubscription": { "type": "object", "properties": { "subscription_id": { "type": "string" } }, "required": [ "subscription_id" ] }, "AwsAuthResourceType": { "type": "string", "enum": [ "oidc", "credentials" ] }, "SqsTrigger": { "allOf": [ { "$ref": "#/components/schemas/TriggerExtraProperty" } ], "type": "object", "properties": { "queue_url": { "type": "string", "description": "The full URL of the AWS SQS queue to poll for messages" }, "aws_auth_resource_type": { "$ref": "#/components/schemas/AwsAuthResourceType", "description": "Authentication type - 'credentials' for access key/secret, 'oidc' for OpenID Connect" }, "aws_resource_path": { "type": "string", "description": "Path to the AWS resource containing credentials or OIDC configuration" }, "message_attributes": { "type": "array", "items": { "type": "string" }, "description": "Array of SQS message attribute names to include with each message" }, "server_id": { "type": "string", "description": "ID of the server currently handling this trigger (internal)" }, "last_server_ping": { "type": "string", "format": "date-time", "description": "Timestamp of last server heartbeat (internal)" }, "error": { "type": "string", "description": "Last error message if the trigger failed" }, "error_handler_path": { "type": "string", "description": "Path to a script or flow to run when the triggered job fails" }, "error_handler_args": { "$ref": "#/components/schemas/ScriptArgs", "description": "Arguments to pass to the error handler" }, "retry": { "$ref": "#/components/schemas/Retry", "description": "Retry configuration for failed executions" } }, "required": [ "queue_url", "aws_resource_path", "aws_auth_resource_type" ] }, "LoggedWizardStatus": { "type": "string", "enum": [ "OK", "SKIP", "FAIL" ] }, "CustomInstanceDbLogs": { "type": "object", "properties": { "super_admin": { "$ref": "#/components/schemas/LoggedWizardStatus" }, "database_credentials": { "$ref": "#/components/schemas/LoggedWizardStatus" }, "valid_dbname": { "$ref": "#/components/schemas/LoggedWizardStatus" }, "created_database": { "$ref": "#/components/schemas/LoggedWizardStatus" }, "db_connect": { "$ref": "#/components/schemas/LoggedWizardStatus" }, "grant_permissions": { "$ref": "#/components/schemas/LoggedWizardStatus" } } }, "CustomInstanceDbTag": { "type": "string", "enum": [ "ducklake", "datatable" ] }, "CustomInstanceDb": { "type": "object", "required": [ "logs", "success" ], "properties": { "logs": { "$ref": "#/components/schemas/CustomInstanceDbLogs" }, "success": { "type": "boolean", "description": "Whether the operation completed successfully", "example": true }, "error": { "type": "string", "nullable": true, "description": "Error message if the operation failed", "example": "Connection timeout" }, "tag": { "$ref": "#/components/schemas/CustomInstanceDbTag" } } }, "NewSqsTrigger": { "type": "object", "properties": { "queue_url": { "type": "string", "description": "The full URL of the AWS SQS queue to poll for messages" }, "aws_auth_resource_type": { "$ref": "#/components/schemas/AwsAuthResourceType", "description": "Authentication type - 'credentials' for access key/secret, 'oidc' for OpenID Connect" }, "aws_resource_path": { "type": "string", "description": "Path to the AWS resource containing credentials or OIDC configuration" }, "message_attributes": { "type": "array", "items": { "type": "string" }, "description": "Array of SQS message attribute names to include with each message" }, "path": { "type": "string", "description": "The unique path identifier for this trigger" }, "script_path": { "type": "string", "description": "Path to the script or flow to execute when a message is received" }, "is_flow": { "type": "boolean", "description": "True if script_path points to a flow, false if it points to a script" }, "mode": { "$ref": "#/components/schemas/TriggerMode" }, "error_handler_path": { "type": "string", "description": "Path to a script or flow to run when the triggered job fails" }, "error_handler_args": { "$ref": "#/components/schemas/ScriptArgs", "description": "Arguments to pass to the error handler" }, "retry": { "$ref": "#/components/schemas/Retry", "description": "Retry configuration for failed executions" } }, "required": [ "queue_url", "aws_resource_path", "path", "script_path", "is_flow", "aws_auth_resource_type" ] }, "EditSqsTrigger": { "type": "object", "properties": { "queue_url": { "type": "string", "description": "The full URL of the AWS SQS queue to poll for messages" }, "aws_auth_resource_type": { "$ref": "#/components/schemas/AwsAuthResourceType", "description": "Authentication type - 'credentials' for access key/secret, 'oidc' for OpenID Connect" }, "aws_resource_path": { "type": "string", "description": "Path to the AWS resource containing credentials or OIDC configuration" }, "message_attributes": { "type": "array", "items": { "type": "string" }, "description": "Array of SQS message attribute names to include with each message" }, "path": { "type": "string", "description": "The unique path identifier for this trigger" }, "script_path": { "type": "string", "description": "Path to the script or flow to execute when a message is received" }, "is_flow": { "type": "boolean", "description": "True if script_path points to a flow, false if it points to a script" }, "mode": { "$ref": "#/components/schemas/TriggerMode" }, "error_handler_path": { "type": "string", "description": "Path to a script or flow to run when the triggered job fails" }, "error_handler_args": { "$ref": "#/components/schemas/ScriptArgs", "description": "Arguments to pass to the error handler" }, "retry": { "$ref": "#/components/schemas/Retry", "description": "Retry configuration for failed executions" } }, "required": [ "queue_url", "aws_resource_path", "path", "script_path", "is_flow", "enabled", "aws_auth_resource_type" ] }, "Slot": { "type": "object", "properties": { "name": { "type": "string" } } }, "SlotList": { "type": "object", "properties": { "slot_name": { "type": "string" }, "active": { "type": "boolean" } } }, "PublicationData": { "type": "object", "properties": { "table_to_track": { "type": "array", "items": { "$ref": "#/components/schemas/Relations" } }, "transaction_to_track": { "type": "array", "items": { "type": "string" } } }, "required": [ "transaction_to_track" ] }, "TableToTrack": { "type": "array", "items": { "type": "object", "properties": { "table_name": { "type": "string" }, "columns_name": { "type": "array", "items": { "type": "string" } }, "where_clause": { "type": "string" } }, "required": [ "table_name" ] } }, "Relations": { "type": "object", "properties": { "schema_name": { "type": "string" }, "table_to_track": { "$ref": "#/components/schemas/TableToTrack" } }, "required": [ "schema_name", "table_to_track" ] }, "Language": { "type": "string", "enum": [ "Typescript" ] }, "TemplateScript": { "type": "object", "properties": { "postgres_resource_path": { "type": "string" }, "relations": { "type": "array", "items": { "$ref": "#/components/schemas/Relations" } }, "language": { "$ref": "#/components/schemas/Language" } }, "required": [ "postgres_resource_path", "relations", "language" ] }, "PostgresTrigger": { "allOf": [ { "$ref": "#/components/schemas/TriggerExtraProperty" } ], "type": "object", "properties": { "postgres_resource_path": { "type": "string", "description": "Path to the PostgreSQL resource containing connection configuration" }, "publication_name": { "type": "string", "description": "Name of the PostgreSQL publication to subscribe to for change data capture" }, "server_id": { "type": "string", "description": "ID of the server currently handling this trigger (internal)" }, "replication_slot_name": { "type": "string", "description": "Name of the PostgreSQL logical replication slot to use" }, "error": { "type": "string", "description": "Last error message if the trigger failed" }, "last_server_ping": { "type": "string", "format": "date-time", "description": "Timestamp of last server heartbeat (internal)" }, "error_handler_path": { "type": "string", "description": "Path to a script or flow to run when the triggered job fails" }, "error_handler_args": { "$ref": "#/components/schemas/ScriptArgs", "description": "Arguments to pass to the error handler" }, "retry": { "$ref": "#/components/schemas/Retry", "description": "Retry configuration for failed executions" } }, "required": [ "postgres_resource_path", "replication_slot_name", "publication_name" ] }, "NewPostgresTrigger": { "type": "object", "properties": { "replication_slot_name": { "type": "string", "description": "Name of the PostgreSQL logical replication slot to use" }, "publication_name": { "type": "string", "description": "Name of the PostgreSQL publication to subscribe to for change data capture" }, "path": { "type": "string", "description": "The unique path identifier for this trigger" }, "script_path": { "type": "string", "description": "Path to the script or flow to execute when database changes are detected" }, "is_flow": { "type": "boolean", "description": "True if script_path points to a flow, false if it points to a script" }, "mode": { "$ref": "#/components/schemas/TriggerMode" }, "postgres_resource_path": { "type": "string", "description": "Path to the PostgreSQL resource containing connection configuration" }, "publication": { "$ref": "#/components/schemas/PublicationData", "description": "Configuration for creating/managing the publication (tables, operations)" }, "error_handler_path": { "type": "string", "description": "Path to a script or flow to run when the triggered job fails" }, "error_handler_args": { "$ref": "#/components/schemas/ScriptArgs", "description": "Arguments to pass to the error handler" }, "retry": { "$ref": "#/components/schemas/Retry", "description": "Retry configuration for failed executions" } }, "required": [ "path", "script_path", "is_flow", "enabled", "postgres_resource_path" ] }, "EditPostgresTrigger": { "type": "object", "properties": { "replication_slot_name": { "type": "string", "description": "Name of the PostgreSQL logical replication slot to use" }, "publication_name": { "type": "string", "description": "Name of the PostgreSQL publication to subscribe to for change data capture" }, "path": { "type": "string", "description": "The unique path identifier for this trigger" }, "script_path": { "type": "string", "description": "Path to the script or flow to execute when database changes are detected" }, "is_flow": { "type": "boolean", "description": "True if script_path points to a flow, false if it points to a script" }, "mode": { "$ref": "#/components/schemas/TriggerMode" }, "postgres_resource_path": { "type": "string", "description": "Path to the PostgreSQL resource containing connection configuration" }, "publication": { "$ref": "#/components/schemas/PublicationData", "description": "Configuration for creating/managing the publication (tables, operations)" }, "error_handler_path": { "type": "string", "description": "Path to a script or flow to run when the triggered job fails" }, "error_handler_args": { "$ref": "#/components/schemas/ScriptArgs", "description": "Arguments to pass to the error handler" }, "retry": { "$ref": "#/components/schemas/Retry", "description": "Retry configuration for failed executions" } }, "required": [ "path", "script_path", "is_flow", "enabled", "postgres_resource_path", "publication_name", "replication_slot_name" ] }, "KafkaTrigger": { "allOf": [ { "$ref": "#/components/schemas/TriggerExtraProperty" } ], "type": "object", "properties": { "kafka_resource_path": { "type": "string", "description": "Path to the Kafka resource containing connection configuration" }, "group_id": { "type": "string", "description": "Kafka consumer group ID for this trigger" }, "topics": { "type": "array", "items": { "type": "string" }, "description": "Array of Kafka topic names to subscribe to" }, "filters": { "type": "array", "items": { "type": "object", "properties": { "key": { "type": "string" }, "value": {} }, "required": [ "key", "value" ] } }, "server_id": { "type": "string", "description": "ID of the server currently handling this trigger (internal)" }, "last_server_ping": { "type": "string", "format": "date-time", "description": "Timestamp of last server heartbeat (internal)" }, "error": { "type": "string", "description": "Last error message if the trigger failed" }, "error_handler_path": { "type": "string", "description": "Path to a script or flow to run when the triggered job fails" }, "error_handler_args": { "$ref": "#/components/schemas/ScriptArgs", "description": "Arguments to pass to the error handler" }, "retry": { "$ref": "#/components/schemas/Retry", "description": "Retry configuration for failed executions" } }, "required": [ "kafka_resource_path", "group_id", "topics", "filters" ] }, "NewKafkaTrigger": { "type": "object", "properties": { "path": { "type": "string", "description": "The unique path identifier for this trigger" }, "script_path": { "type": "string", "description": "Path to the script or flow to execute when a message is received" }, "is_flow": { "type": "boolean", "description": "True if script_path points to a flow, false if it points to a script" }, "kafka_resource_path": { "type": "string", "description": "Path to the Kafka resource containing connection configuration" }, "group_id": { "type": "string", "description": "Kafka consumer group ID for this trigger" }, "topics": { "type": "array", "items": { "type": "string" }, "description": "Array of Kafka topic names to subscribe to" }, "filters": { "type": "array", "items": { "type": "object", "properties": { "key": { "type": "string" }, "value": {} }, "required": [ "key", "value" ] } }, "mode": { "$ref": "#/components/schemas/TriggerMode" }, "error_handler_path": { "type": "string", "description": "Path to a script or flow to run when the triggered job fails" }, "error_handler_args": { "$ref": "#/components/schemas/ScriptArgs", "description": "Arguments to pass to the error handler" }, "retry": { "$ref": "#/components/schemas/Retry", "description": "Retry configuration for failed executions" } }, "required": [ "path", "script_path", "is_flow", "kafka_resource_path", "group_id", "topics", "filters" ] }, "EditKafkaTrigger": { "type": "object", "properties": { "kafka_resource_path": { "type": "string", "description": "Path to the Kafka resource containing connection configuration" }, "group_id": { "type": "string", "description": "Kafka consumer group ID for this trigger" }, "topics": { "type": "array", "items": { "type": "string" }, "description": "Array of Kafka topic names to subscribe to" }, "filters": { "type": "array", "items": { "type": "object", "properties": { "key": { "type": "string" }, "value": {} }, "required": [ "key", "value" ] } }, "path": { "type": "string", "description": "The unique path identifier for this trigger" }, "script_path": { "type": "string", "description": "Path to the script or flow to execute when a message is received" }, "is_flow": { "type": "boolean", "description": "True if script_path points to a flow, false if it points to a script" }, "error_handler_path": { "type": "string", "description": "Path to a script or flow to run when the triggered job fails" }, "error_handler_args": { "$ref": "#/components/schemas/ScriptArgs", "description": "Arguments to pass to the error handler" }, "retry": { "$ref": "#/components/schemas/Retry", "description": "Retry configuration for failed executions" } }, "required": [ "path", "script_path", "kafka_resource_path", "group_id", "topics", "filters", "is_flow" ] }, "NatsTrigger": { "allOf": [ { "$ref": "#/components/schemas/TriggerExtraProperty" } ], "type": "object", "properties": { "nats_resource_path": { "type": "string", "description": "Path to the NATS resource containing connection configuration" }, "use_jetstream": { "type": "boolean", "description": "If true, uses NATS JetStream for durable message delivery" }, "stream_name": { "type": "string", "description": "JetStream stream name (required when use_jetstream is true)" }, "consumer_name": { "type": "string", "description": "JetStream consumer name (required when use_jetstream is true)" }, "subjects": { "type": "array", "items": { "type": "string" }, "description": "Array of NATS subjects to subscribe to" }, "server_id": { "type": "string", "description": "ID of the server currently handling this trigger (internal)" }, "last_server_ping": { "type": "string", "format": "date-time", "description": "Timestamp of last server heartbeat (internal)" }, "error": { "type": "string", "description": "Last error message if the trigger failed" }, "error_handler_path": { "type": "string", "description": "Path to a script or flow to run when the triggered job fails" }, "error_handler_args": { "$ref": "#/components/schemas/ScriptArgs", "description": "Arguments to pass to the error handler" }, "retry": { "$ref": "#/components/schemas/Retry", "description": "Retry configuration for failed executions" } }, "required": [ "nats_resource_path", "use_jetstream", "subjects" ] }, "NewNatsTrigger": { "type": "object", "properties": { "path": { "type": "string", "description": "The unique path identifier for this trigger" }, "script_path": { "type": "string", "description": "Path to the script or flow to execute when a message is received" }, "is_flow": { "type": "boolean", "description": "True if script_path points to a flow, false if it points to a script" }, "nats_resource_path": { "type": "string", "description": "Path to the NATS resource containing connection configuration" }, "use_jetstream": { "type": "boolean", "description": "If true, uses NATS JetStream for durable message delivery" }, "stream_name": { "type": "string", "description": "JetStream stream name (required when use_jetstream is true)" }, "consumer_name": { "type": "string", "description": "JetStream consumer name (required when use_jetstream is true)" }, "subjects": { "type": "array", "items": { "type": "string" }, "description": "Array of NATS subjects to subscribe to" }, "mode": { "$ref": "#/components/schemas/TriggerMode" }, "error_handler_path": { "type": "string", "description": "Path to a script or flow to run when the triggered job fails" }, "error_handler_args": { "$ref": "#/components/schemas/ScriptArgs", "description": "Arguments to pass to the error handler" }, "retry": { "$ref": "#/components/schemas/Retry", "description": "Retry configuration for failed executions" } }, "required": [ "path", "script_path", "is_flow", "nats_resource_path", "use_jetstream", "subjects" ] }, "EditNatsTrigger": { "type": "object", "properties": { "nats_resource_path": { "type": "string", "description": "Path to the NATS resource containing connection configuration" }, "use_jetstream": { "type": "boolean", "description": "If true, uses NATS JetStream for durable message delivery" }, "stream_name": { "type": "string", "description": "JetStream stream name (required when use_jetstream is true)" }, "consumer_name": { "type": "string", "description": "JetStream consumer name (required when use_jetstream is true)" }, "subjects": { "type": "array", "items": { "type": "string" }, "description": "Array of NATS subjects to subscribe to" }, "path": { "type": "string", "description": "The unique path identifier for this trigger" }, "script_path": { "type": "string", "description": "Path to the script or flow to execute when a message is received" }, "is_flow": { "type": "boolean", "description": "True if script_path points to a flow, false if it points to a script" }, "error_handler_path": { "type": "string", "description": "Path to a script or flow to run when the triggered job fails" }, "error_handler_args": { "$ref": "#/components/schemas/ScriptArgs", "description": "Arguments to pass to the error handler" }, "retry": { "$ref": "#/components/schemas/Retry", "description": "Retry configuration for failed executions" } }, "required": [ "path", "script_path", "nats_resource_path", "use_jetstream", "subjects", "is_flow" ] }, "EmailTrigger": { "allOf": [ { "$ref": "#/components/schemas/TriggerExtraProperty" } ], "type": "object", "properties": { "local_part": { "type": "string" }, "workspaced_local_part": { "type": "boolean" }, "error_handler_path": { "type": "string" }, "error_handler_args": { "$ref": "#/components/schemas/ScriptArgs" }, "retry": { "$ref": "#/components/schemas/Retry" } }, "required": [ "local_part" ] }, "NewEmailTrigger": { "type": "object", "properties": { "path": { "type": "string" }, "script_path": { "type": "string" }, "local_part": { "type": "string" }, "workspaced_local_part": { "type": "boolean" }, "is_flow": { "type": "boolean" }, "error_handler_path": { "type": "string" }, "error_handler_args": { "$ref": "#/components/schemas/ScriptArgs" }, "retry": { "$ref": "#/components/schemas/Retry" }, "mode": { "$ref": "#/components/schemas/TriggerMode" } }, "required": [ "path", "script_path", "local_part", "is_flow" ] }, "EditEmailTrigger": { "type": "object", "properties": { "path": { "type": "string" }, "script_path": { "type": "string" }, "local_part": { "type": "string" }, "workspaced_local_part": { "type": "boolean" }, "is_flow": { "type": "boolean" }, "error_handler_path": { "type": "string" }, "error_handler_args": { "$ref": "#/components/schemas/ScriptArgs" }, "retry": { "$ref": "#/components/schemas/Retry" } }, "required": [ "path", "script_path", "is_flow" ] }, "Group": { "type": "object", "properties": { "name": { "type": "string" }, "summary": { "type": "string" }, "members": { "type": "array", "items": { "type": "string" } }, "extra_perms": { "type": "object", "additionalProperties": { "type": "boolean" } } }, "required": [ "name" ] }, "InstanceGroup": { "type": "object", "required": [ "name" ], "properties": { "name": { "type": "string" }, "summary": { "type": "string" }, "emails": { "type": "array", "items": { "type": "string" } } } }, "InstanceGroupWithWorkspaces": { "type": "object", "required": [ "name" ], "properties": { "name": { "type": "string" }, "summary": { "type": "string" }, "emails": { "type": "array", "items": { "type": "string" } }, "workspaces": { "type": "array", "items": { "$ref": "#/components/schemas/WorkspaceInfo" } } } }, "WorkspaceInfo": { "type": "object", "properties": { "workspace_id": { "type": "string" }, "workspace_name": { "type": "string" }, "role": { "type": "string" } }, "required": [ "name" ] }, "Folder": { "type": "object", "properties": { "name": { "type": "string" }, "owners": { "type": "array", "items": { "type": "string" } }, "extra_perms": { "type": "object", "additionalProperties": { "type": "boolean" } }, "summary": { "type": "string" }, "created_by": { "type": "string" }, "edited_at": { "type": "string", "format": "date-time" } }, "required": [ "name", "owners", "extra_perms" ] }, "WorkerPing": { "type": "object", "properties": { "worker": { "type": "string" }, "worker_instance": { "type": "string" }, "last_ping": { "type": "number" }, "started_at": { "type": "string", "format": "date-time" }, "ip": { "type": "string" }, "jobs_executed": { "type": "integer" }, "custom_tags": { "type": "array", "items": { "type": "string" } }, "worker_group": { "type": "string" }, "wm_version": { "type": "string" }, "last_job_id": { "type": "string" }, "last_job_workspace_id": { "type": "string" }, "occupancy_rate": { "type": "number" }, "occupancy_rate_15s": { "type": "number" }, "occupancy_rate_5m": { "type": "number" }, "occupancy_rate_30m": { "type": "number" }, "memory": { "type": "number" }, "vcpus": { "type": "number" }, "memory_usage": { "type": "number" }, "wm_memory_usage": { "type": "number" }, "job_isolation": { "type": "string" } }, "required": [ "worker", "worker_instance", "ping_at", "started_at", "ip", "jobs_executed", "worker_group", "wm_version" ] }, "UserWorkspaceList": { "type": "object", "properties": { "email": { "type": "string" }, "workspaces": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "username": { "type": "string" }, "color": { "type": "string" }, "operator_settings": { "$ref": "#/components/schemas/OperatorSettings" }, "parent_workspace_id": { "type": "string", "nullable": true }, "created_by": { "type": "string", "nullable": true }, "disabled": { "type": "boolean" } }, "required": [ "id", "name", "username", "color", "disabled" ] } } }, "required": [ "email", "workspaces" ] }, "CreateWorkspace": { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "username": { "type": "string" }, "color": { "type": "string" } }, "required": [ "id", "name" ] }, "CreateWorkspaceFork": { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "color": { "type": "string" } }, "required": [ "id", "name", "parent_workspace_id" ] }, "Workspace": { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "owner": { "type": "string" }, "domain": { "type": "string" }, "color": { "type": "string" }, "parent_workspace_id": { "type": "string", "nullable": true } }, "required": [ "id", "name", "owner", "created_at" ] }, "DependencyMap": { "type": "object", "properties": { "workspace_id": { "type": "string", "nullable": true }, "importer_path": { "type": "string", "nullable": true }, "importer_kind": { "type": "string", "nullable": true }, "imported_path": { "type": "string", "nullable": true }, "importer_node_id": { "type": "string", "nullable": true } } }, "DependencyDependent": { "type": "object", "properties": { "importer_path": { "type": "string" }, "importer_kind": { "type": "string", "enum": [ "script", "flow", "app" ] }, "importer_node_ids": { "type": "array", "items": { "type": "string" }, "nullable": true } }, "required": [ "importer_path", "importer_kind" ] }, "DependentsAmount": { "type": "object", "properties": { "imported_path": { "type": "string" }, "count": { "type": "integer", "format": "int64" } }, "required": [ "imported_path", "count" ] }, "WorkspaceInvite": { "type": "object", "properties": { "workspace_id": { "type": "string" }, "email": { "type": "string" }, "is_admin": { "type": "boolean" }, "operator": { "type": "boolean" }, "parent_workspace_id": { "type": "string", "nullable": true } }, "required": [ "workspace_id", "email", "is_admin", "operator" ] }, "GlobalUserInfo": { "type": "object", "properties": { "email": { "type": "string" }, "login_type": { "type": "string", "enum": [ "password", "github" ] }, "super_admin": { "type": "boolean" }, "devops": { "type": "boolean" }, "verified": { "type": "boolean" }, "name": { "type": "string" }, "company": { "type": "string" }, "username": { "type": "string" }, "operator_only": { "type": "boolean" }, "first_time_user": { "type": "boolean" } }, "required": [ "email", "login_type", "super_admin", "verified", "first_time_user" ] }, "Flow": { "allOf": [ { "$ref": "#/components/schemas/OpenFlow" }, { "$ref": "#/components/schemas/FlowMetadata" }, { "type": "object", "properties": { "lock_error_logs": { "type": "string" }, "version_id": { "type": "number" } } } ] }, "ExtraPerms": { "type": "object", "additionalProperties": { "type": "boolean" } }, "FlowMetadata": { "type": "object", "properties": { "workspace_id": { "type": "string" }, "path": { "type": "string" }, "edited_by": { "type": "string" }, "edited_at": { "type": "string", "format": "date-time" }, "archived": { "type": "boolean" }, "extra_perms": { "$ref": "#/components/schemas/ExtraPerms" }, "starred": { "type": "boolean" }, "draft_only": { "type": "boolean" }, "tag": { "type": "string" }, "ws_error_handler_muted": { "type": "boolean" }, "priority": { "type": "integer" }, "dedicated_worker": { "type": "boolean" }, "timeout": { "type": "number" }, "visible_to_runner_only": { "type": "boolean" }, "on_behalf_of_email": { "type": "string" } }, "required": [ "path", "edited_by", "edited_at", "archived", "extra_perms" ] }, "OpenFlowWPath": { "allOf": [ { "$ref": "#/components/schemas/OpenFlow" }, { "type": "object", "properties": { "path": { "type": "string" }, "tag": { "type": "string" }, "ws_error_handler_muted": { "type": "boolean" }, "priority": { "type": "integer" }, "dedicated_worker": { "type": "boolean" }, "timeout": { "type": "number" }, "visible_to_runner_only": { "type": "boolean" }, "on_behalf_of_email": { "type": "string" } }, "required": [ "path" ] } ] }, "FlowPreview": { "type": "object", "properties": { "value": { "$ref": "#/components/schemas/FlowValue" }, "path": { "type": "string" }, "args": { "$ref": "#/components/schemas/ScriptArgs" }, "tag": { "type": "string" }, "restarted_from": { "$ref": "#/components/schemas/RestartedFrom" } }, "required": [ "value", "content", "args" ] }, "RestartedFrom": { "type": "object", "properties": { "flow_job_id": { "type": "string", "format": "uuid" }, "step_id": { "type": "string" }, "branch_or_iteration_n": { "type": "integer" }, "flow_version": { "type": "integer" } } }, "Policy": { "type": "object", "properties": { "triggerables": { "type": "object", "additionalProperties": { "type": "object" } }, "triggerables_v2": { "type": "object", "additionalProperties": { "type": "object" } }, "s3_inputs": { "type": "array", "items": { "type": "object" } }, "allowed_s3_keys": { "type": "array", "items": { "type": "object", "properties": { "s3_path": { "type": "string" }, "resource": { "type": "string" } } } }, "execution_mode": { "type": "string", "enum": [ "viewer", "publisher", "anonymous" ] }, "on_behalf_of": { "type": "string" }, "on_behalf_of_email": { "type": "string" } } }, "ListableApp": { "type": "object", "properties": { "id": { "type": "integer" }, "workspace_id": { "type": "string" }, "path": { "type": "string" }, "summary": { "type": "string" }, "version": { "type": "integer" }, "extra_perms": { "type": "object", "additionalProperties": { "type": "boolean" } }, "starred": { "type": "boolean" }, "edited_at": { "type": "string", "format": "date-time" }, "execution_mode": { "type": "string", "enum": [ "viewer", "publisher", "anonymous" ] }, "raw_app": { "type": "boolean" } }, "required": [ "id", "workspace_id", "path", "summary", "version", "extra_perms", "edited_at", "execution_mode" ] }, "ScopeDefinition": { "type": "object", "properties": { "value": { "type": "string" }, "label": { "type": "string" }, "description": { "type": "string", "nullable": true }, "requires_resource_path": { "type": "boolean" } }, "required": [ "value", "label", "requires_resource_path" ] }, "ScopeDomain": { "type": "object", "properties": { "name": { "type": "string" }, "description": { "type": "string", "nullable": true }, "scopes": { "type": "array", "items": { "$ref": "#/components/schemas/ScopeDefinition" } } }, "required": [ "name", "scopes" ] }, "ListableRawApp": { "type": "object", "properties": { "workspace_id": { "type": "string" }, "path": { "type": "string" }, "summary": { "type": "string" }, "extra_perms": { "type": "object", "additionalProperties": { "type": "boolean" } }, "starred": { "type": "boolean" }, "version": { "type": "number" }, "edited_at": { "type": "string", "format": "date-time" } }, "required": [ "workspace_id", "path", "summary", "extra_perms", "version", "edited_at" ] }, "AppWithLastVersion": { "type": "object", "properties": { "id": { "type": "integer" }, "workspace_id": { "type": "string" }, "path": { "type": "string" }, "summary": { "type": "string" }, "versions": { "type": "array", "items": { "type": "integer" } }, "created_by": { "type": "string" }, "created_at": { "type": "string", "format": "date-time" }, "value": {}, "policy": { "$ref": "#/components/schemas/Policy" }, "execution_mode": { "type": "string", "enum": [ "viewer", "publisher", "anonymous" ] }, "extra_perms": { "type": "object", "additionalProperties": { "type": "boolean" } }, "custom_path": { "type": "string" }, "raw_app": { "type": "boolean" }, "bundle_secret": { "type": "string" } }, "required": [ "id", "workspace_id", "path", "summary", "versions", "created_by", "created_at", "value", "policy", "execution_mode", "extra_perms", "raw_app" ] }, "AppWithLastVersionWDraft": { "allOf": [ { "$ref": "#/components/schemas/AppWithLastVersion" }, { "type": "object", "properties": { "draft_only": { "type": "boolean" }, "draft": {} } } ] }, "AppHistory": { "type": "object", "properties": { "version": { "type": "integer" }, "deployment_msg": { "type": "string" } }, "required": [ "version" ] }, "FlowVersion": { "type": "object", "properties": { "id": { "type": "integer" }, "created_at": { "type": "string", "format": "date-time" }, "deployment_msg": { "type": "string" } }, "required": [ "id", "created_at" ] }, "SlackToken": { "type": "object", "properties": { "access_token": { "type": "string" }, "team_id": { "type": "string" }, "team_name": { "type": "string" }, "bot": { "type": "object", "properties": { "bot_access_token": { "type": "string" } } } }, "required": [ "access_token", "team_id", "team_name", "bot" ] }, "TokenResponse": { "type": "object", "properties": { "access_token": { "type": "string" }, "expires_in": { "type": "integer" }, "refresh_token": { "type": "string" }, "scope": { "type": "array", "items": { "type": "string" } }, "grant_type": { "type": "string" } }, "required": [ "access_token" ] }, "HubScriptKind": { "type": "string", "enum": [ "script", "failure", "trigger", "approval" ] }, "PolarsClientKwargs": { "type": "object", "properties": { "region_name": { "type": "string" } }, "required": [ "region_name" ] }, "LargeFileStorage": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "S3Storage", "AzureBlobStorage", "AzureWorkloadIdentity", "S3AwsOidc", "GoogleCloudStorage" ] }, "s3_resource_path": { "type": "string" }, "azure_blob_resource_path": { "type": "string" }, "gcs_resource_path": { "type": "string" }, "public_resource": { "type": "boolean" }, "advanced_permissions": { "type": "array", "items": { "$ref": "#/components/schemas/S3PermissionRule" } }, "secondary_storage": { "type": "object", "additionalProperties": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "S3Storage", "AzureBlobStorage", "AzureWorkloadIdentity", "S3AwsOidc", "GoogleCloudStorage" ] }, "s3_resource_path": { "type": "string" }, "azure_blob_resource_path": { "type": "string" }, "gcs_resource_path": { "type": "string" }, "public_resource": { "type": "boolean" } } } } } }, "DucklakeSettings": { "type": "object", "required": [ "ducklakes" ], "properties": { "ducklakes": { "type": "object", "additionalProperties": { "type": "object", "required": [ "catalog", "storage" ], "properties": { "catalog": { "type": "object", "properties": { "resource_type": { "type": "string", "enum": [ "postgresql", "mysql", "instance" ] }, "resource_path": { "type": "string" } }, "required": [ "resource_type" ] }, "storage": { "type": "object", "properties": { "storage": { "type": "string" }, "path": { "type": "string" } }, "required": [ "path" ] }, "extra_args": { "type": "string" } } } } } }, "DataTableSettings": { "type": "object", "required": [ "datatables" ], "properties": { "datatables": { "type": "object", "additionalProperties": { "type": "object", "required": [ "database" ], "properties": { "database": { "type": "object", "properties": { "resource_type": { "type": "string", "enum": [ "postgresql", "instance" ] }, "resource_path": { "type": "string" } }, "required": [ "resource_type" ] } } } } } }, "DataTableSchema": { "type": "object", "required": [ "datatable_name", "schemas" ], "properties": { "datatable_name": { "type": "string" }, "schemas": { "type": "object", "description": "Hierarchical schema: schema_name -> table_name -> column_name -> compact_type (e.g. 'int4', 'text?', 'int4?=0')", "additionalProperties": { "type": "object", "description": "Tables in this schema", "additionalProperties": { "type": "object", "description": "Columns in this table", "additionalProperties": { "type": "string", "description": "Compact type: 'type[?][=default]' where ? means nullable" } } } }, "error": { "type": "string" } } }, "DynamicInputData": { "type": "object", "properties": { "entrypoint_function": { "type": "string", "description": "Name of the function to execute for dynamic select" }, "args": { "type": "object", "description": "Arguments to pass to the function" }, "runnable_ref": { "type": "object", "oneOf": [ { "type": "object", "properties": { "source": { "type": "string", "enum": [ "deployed" ] }, "path": { "type": "string", "description": "Path to the deployed script or flow" }, "runnable_kind": { "$ref": "#/components/schemas/RunnableKind" } }, "required": [ "source", "path", "runnable_kind" ] }, { "type": "object", "properties": { "source": { "type": "string", "enum": [ "inline" ] }, "code": { "type": "string", "description": "Code content for inline execution" }, "language": { "$ref": "#/components/schemas/ScriptLang" } }, "required": [ "source", "code" ] } ] } }, "required": [ "entrypoint_function", "runnable_ref" ] }, "WindmillLargeFile": { "type": "object", "properties": { "s3": { "type": "string" } }, "required": [ "s3" ] }, "WindmillFileMetadata": { "type": "object", "properties": { "mime_type": { "type": "string" }, "size_in_bytes": { "type": "integer" }, "last_modified": { "type": "string", "format": "date-time" }, "expires": { "type": "string", "format": "date-time" }, "version_id": { "type": "string" } } }, "WindmillFilePreview": { "type": "object", "properties": { "msg": { "type": "string" }, "content": { "type": "string" }, "content_type": { "type": "string", "enum": [ "RawText", "Csv", "Parquet", "Unknown" ] } }, "required": [ "content_type" ] }, "S3Resource": { "type": "object", "properties": { "bucket": { "type": "string" }, "region": { "type": "string" }, "endPoint": { "type": "string" }, "useSSL": { "type": "boolean" }, "accessKey": { "type": "string" }, "secretKey": { "type": "string" }, "pathStyle": { "type": "boolean" } }, "required": [ "bucket", "region", "endPoint", "useSSL", "pathStyle" ] }, "WorkspaceGitSyncSettings": { "type": "object", "properties": { "repositories": { "type": "array", "items": { "$ref": "#/components/schemas/GitRepositorySettings" } } } }, "WorkspaceDeployUISettings": { "type": "object", "properties": { "include_path": { "type": "array", "items": { "type": "string" } }, "include_type": { "type": "array", "items": { "$ref": "#/components/schemas/GitSyncObjectType" } } } }, "WorkspaceDefaultScripts": { "type": "object", "properties": { "order": { "type": "array", "items": { "type": "string" } }, "hidden": { "type": "array", "items": { "type": "string" } }, "default_script_content": { "additionalProperties": { "type": "string" } } } }, "S3PermissionRule": { "type": "object", "properties": { "pattern": { "type": "string" }, "allow": { "type": "string" } }, "required": [ "pattern", "allow" ] }, "GitRepositorySettings": { "type": "object", "properties": { "script_path": { "type": "string" }, "git_repo_resource_path": { "type": "string" }, "use_individual_branch": { "type": "boolean" }, "group_by_folder": { "type": "boolean" }, "collapsed": { "type": "boolean" }, "settings": { "type": "object", "properties": { "include_path": { "type": "array", "items": { "type": "string" } }, "include_type": { "type": "array", "items": { "$ref": "#/components/schemas/GitSyncObjectType" } }, "exclude_path": { "type": "array", "items": { "type": "string" } }, "extra_include_path": { "type": "array", "items": { "type": "string" } } } }, "exclude_types_override": { "type": "array", "items": { "$ref": "#/components/schemas/GitSyncObjectType" } } }, "required": [ "script_path", "git_repo_resource_path" ] }, "MetricMetadata": { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" } }, "required": [ "id" ] }, "ScalarMetric": { "type": "object", "properties": { "metric_id": { "type": "string" }, "value": { "type": "number" } }, "required": [ "id", "value" ] }, "TimeseriesMetric": { "type": "object", "properties": { "metric_id": { "type": "string" }, "values": { "type": "array", "items": { "$ref": "#/components/schemas/MetricDataPoint" } } }, "required": [ "id", "values" ] }, "MetricDataPoint": { "type": "object", "properties": { "timestamp": { "type": "string", "format": "date-time" }, "value": { "type": "number" } }, "required": [ "timestamp", "value" ] }, "RawScriptForDependencies": { "type": "object", "properties": { "raw_code": { "type": "string" }, "path": { "type": "string" }, "language": { "$ref": "#/components/schemas/ScriptLang" } }, "required": [ "raw_code", "path", "language" ] }, "ConcurrencyGroup": { "type": "object", "properties": { "concurrency_key": { "type": "string" }, "total_running": { "type": "number" } }, "required": [ "concurrency_key", "total_running" ] }, "ExtendedJobs": { "type": "object", "properties": { "jobs": { "type": "array", "items": { "$ref": "#/components/schemas/Job" } }, "obscured_jobs": { "type": "array", "items": { "$ref": "#/components/schemas/ObscuredJob" } }, "omitted_obscured_jobs": { "description": "Obscured jobs omitted for security because of too specific filtering", "type": "boolean" } }, "required": [ "jobs", "obscured_jobs" ] }, "ExportedUser": { "type": "object", "properties": { "email": { "type": "string" }, "password_hash": { "type": "string" }, "super_admin": { "type": "boolean" }, "verified": { "type": "boolean" }, "name": { "type": "string" }, "company": { "type": "string" }, "first_time_user": { "type": "boolean" }, "username": { "type": "string" } }, "required": [ "email", "super_admin", "verified", "first_time_user" ] }, "GlobalSetting": { "type": "object", "properties": { "name": { "type": "string" }, "value": {} }, "required": [ "name", "value" ] }, "Config": { "type": "object", "properties": { "name": { "type": "string" }, "config": { "type": "object" } }, "required": [ "name" ] }, "ExportedInstanceGroup": { "type": "object", "properties": { "name": { "type": "string" }, "summary": { "type": "string" }, "emails": { "type": "array", "items": { "type": "string" } }, "id": { "type": "string" }, "scim_display_name": { "type": "string" }, "external_id": { "type": "string" } }, "required": [ "name" ] }, "JobSearchHit": { "type": "object", "properties": { "dancer": { "type": "string" } } }, "LogSearchHit": { "type": "object", "properties": { "dancer": { "type": "string" } } }, "AutoscalingEvent": { "type": "object", "properties": { "id": { "type": "integer", "format": "int64" }, "worker_group": { "type": "string" }, "event_type": { "type": "string" }, "desired_workers": { "type": "integer" }, "reason": { "type": "string" }, "applied_at": { "type": "string", "format": "date-time" } } }, "CriticalAlert": { "type": "object", "properties": { "id": { "type": "integer", "description": "Unique identifier for the alert" }, "alert_type": { "type": "string", "description": "Type of alert (e.g., critical_error)" }, "message": { "type": "string", "description": "The message content of the alert" }, "created_at": { "type": "string", "format": "date-time", "description": "Time when the alert was created" }, "acknowledged": { "type": "boolean", "nullable": true, "description": "Acknowledgment status of the alert, can be true, false, or null if not set" }, "workspace_id": { "type": "string", "nullable": true, "description": "Workspace id if the alert is in the scope of a workspace" } } }, "CaptureTriggerKind": { "type": "string", "enum": [ "webhook", "http", "websocket", "kafka", "default_email", "nats", "postgres", "sqs", "mqtt", "gcp", "email" ] }, "Capture": { "type": "object", "properties": { "trigger_kind": { "$ref": "#/components/schemas/CaptureTriggerKind" }, "main_args": {}, "preprocessor_args": {}, "id": { "type": "integer" }, "created_at": { "type": "string", "format": "date-time" } }, "required": [ "trigger_kind", "main_args", "preprocessor_args", "id", "created_at" ] }, "CaptureConfig": { "type": "object", "properties": { "trigger_config": {}, "trigger_kind": { "$ref": "#/components/schemas/CaptureTriggerKind" }, "error": { "type": "string" }, "last_server_ping": { "type": "string", "format": "date-time" } }, "required": [ "trigger_kind" ] }, "OperatorSettings": { "nullable": true, "type": "object", "required": [ "runs", "schedules", "resources", "assets", "variables", "triggers", "audit_logs", "groups", "folders", "workers" ], "properties": { "runs": { "type": "boolean", "description": "Whether operators can view runs" }, "schedules": { "type": "boolean", "description": "Whether operators can view schedules" }, "resources": { "type": "boolean", "description": "Whether operators can view resources" }, "variables": { "type": "boolean", "description": "Whether operators can view variables" }, "assets": { "type": "boolean", "description": "Whether operators can view assets" }, "audit_logs": { "type": "boolean", "description": "Whether operators can view audit logs" }, "triggers": { "type": "boolean", "description": "Whether operators can view triggers" }, "groups": { "type": "boolean", "description": "Whether operators can view groups page" }, "folders": { "type": "boolean", "description": "Whether operators can view folders page" }, "workers": { "type": "boolean", "description": "Whether operators can view workers page" } } }, "WorkspaceComparison": { "type": "object", "required": [ "all_ahead_items_visible", "all_behind_items_visible", "skipped_comparison", "diffs", "summary" ], "properties": { "all_ahead_items_visible": { "type": "boolean", "description": "All items with changes ahead are visible by the user of the request." }, "all_behind_items_visible": { "type": "boolean", "description": "All items with changes behind are visible by the user of the request." }, "skipped_comparison": { "type": "boolean", "description": "Whether the comparison was skipped. This happens with old forks that where not being kept track of" }, "diffs": { "type": "array", "description": "List of differences found between workspaces", "items": { "$ref": "#/components/schemas/WorkspaceItemDiff" } }, "summary": { "$ref": "#/components/schemas/CompareSummary", "description": "Summary statistics of the comparison" } } }, "WorkspaceItemDiff": { "type": "object", "required": [ "kind", "path", "ahead", "behind", "has_changes", "exists_in_source", "exists_in_fork" ], "properties": { "kind": { "type": "string", "enum": [ "script", "flow", "app", "resource", "variable", "resource_type" ], "description": "Type of the item" }, "path": { "type": "string", "description": "Path of the item in the workspace" }, "ahead": { "type": "integer", "description": "Number of versions source is ahead of target" }, "behind": { "type": "integer", "description": "Number of versions source is behind target" }, "has_changes": { "type": "boolean", "description": "Whether the item has any differences" }, "exists_in_source": { "type": "boolean", "description": "If the item exists in the source workspace" }, "exists_in_fork": { "type": "boolean", "description": "If the item exists in the fork workspace" } } }, "CompareSummary": { "type": "object", "required": [ "total_diffs", "total_ahead", "total_behind", "scripts_changed", "flows_changed", "apps_changed", "resources_changed", "variables_changed", "resource_types_changed", "folders_changed", "conflicts" ], "properties": { "total_diffs": { "type": "integer", "description": "Total number of items with differences" }, "total_ahead": { "type": "integer", "description": "Total number of ahead changes" }, "total_behind": { "type": "integer", "description": "Total number of behind changes" }, "scripts_changed": { "type": "integer", "description": "Number of scripts with differences" }, "flows_changed": { "type": "integer", "description": "Number of flows with differences" }, "apps_changed": { "type": "integer", "description": "Number of apps with differences" }, "resources_changed": { "type": "integer", "description": "Number of resources with differences" }, "variables_changed": { "type": "integer", "description": "Number of variables with differences" }, "resource_types_changed": { "type": "integer", "description": "Number of resource types with differences" }, "folders_changed": { "type": "integer", "description": "Number of folders with differences" }, "conflicts": { "type": "integer", "description": "Number of items that are both ahead and behind (conflicts)" } } }, "TeamInfo": { "type": "object", "required": [ "team_id", "team_name", "channels" ], "properties": { "team_id": { "type": "string", "description": "The unique identifier of the Microsoft Teams team", "example": "19:abc123def456@thread.tacv2" }, "team_name": { "type": "string", "description": "The display name of the Microsoft Teams team", "example": "Engineering Team" }, "channels": { "type": "array", "description": "List of channels within the team", "items": { "$ref": "#/components/schemas/ChannelInfo" } } } }, "ChannelInfo": { "type": "object", "required": [ "channel_id", "channel_name", "tenant_id", "service_url" ], "properties": { "channel_id": { "type": "string", "description": "The unique identifier of the channel", "example": "19:channel123@thread.tacv2" }, "channel_name": { "type": "string", "description": "The display name of the channel", "example": "General" }, "tenant_id": { "type": "string", "description": "The Microsoft Teams tenant identifier", "example": "12345678-1234-1234-1234-123456789012" }, "service_url": { "type": "string", "description": "The service URL for the channel", "example": "https://smba.trafficmanager.net/amer/12345678-1234-1234-1234-123456789012/" } } }, "GithubInstallations": { "type": "array", "items": { "type": "object", "properties": { "workspace_id": { "type": "string" }, "installation_id": { "type": "number" }, "account_id": { "type": "string" }, "repositories": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "url": { "type": "string" } }, "required": [ "name", "url" ] } }, "total_count": { "type": "number", "description": "Total number of repositories available for this installation" }, "per_page": { "type": "number", "description": "Number of repositories loaded per page" }, "error": { "type": "string", "description": "Error message if token retrieval failed" } }, "required": [ "installation_id", "account_id", "repositories", "total_count", "per_page" ] } }, "WorkspaceGithubInstallation": { "type": "object", "properties": { "account_id": { "type": "string" }, "installation_id": { "type": "number" } }, "required": [ "account_id", "installation_id" ] }, "S3Object": { "type": "object", "properties": { "s3": { "type": "string" }, "filename": { "type": "string" }, "storage": { "type": "string" }, "presigned": { "type": "string" } }, "required": [ "s3" ] }, "TeamsChannel": { "type": "object", "required": [ "team_id", "team_name", "channel_id", "channel_name" ], "properties": { "team_id": { "type": "string", "description": "Microsoft Teams team ID", "minLength": 1 }, "team_name": { "type": "string", "description": "Microsoft Teams team name", "minLength": 1 }, "channel_id": { "type": "string", "description": "Microsoft Teams channel ID", "minLength": 1 }, "channel_name": { "type": "string", "description": "Microsoft Teams channel name", "minLength": 1 } } }, "AssetUsageKind": { "type": "string", "enum": [ "script", "flow", "job" ] }, "AssetUsageAccessType": { "type": "string", "enum": [ "r", "w", "rw" ], "nullable": true }, "AssetKind": { "type": "string", "enum": [ "s3object", "resource", "ducklake", "datatable" ] }, "Asset": { "type": "object", "properties": { "path": { "type": "string" }, "kind": { "$ref": "#/components/schemas/AssetKind" } }, "required": [ "path", "kind" ] }, "ProtectionRuleset": { "type": "object", "description": "A workspace protection rule defining restrictions and bypass permissions", "required": [ "name", "rules", "bypass_groups", "bypass_users" ], "properties": { "name": { "type": "string", "description": "Unique name for the protection rule", "example": "Production Protection" }, "workspace_id": { "type": "string" }, "rules": { "$ref": "#/components/schemas/ProtectionRules" }, "bypass_groups": { "$ref": "#/components/schemas/RuleBypasserGroups" }, "bypass_users": { "$ref": "#/components/schemas/RuleBypasserUsers" } } }, "ProtectionRules": { "type": "array", "description": "Configuration of protection restrictions", "items": { "$ref": "#/components/schemas/ProtectionRuleKind" } }, "ProtectionRuleKind": { "type": "string", "enum": [ "DisableDirectDeployment", "DisableWorkspaceForking" ] }, "RuleBypasserGroups": { "type": "array", "description": "Groups that can bypass this ruleset", "items": { "type": "string" } }, "RuleBypasserUsers": { "type": "array", "description": "Users that can bypass this ruleset", "items": { "type": "string" } }, "NativeServiceName": { "type": "string", "enum": [ "nextcloud" ] }, "NativeTrigger": { "type": "object", "description": "A native trigger stored in Windmill", "properties": { "external_id": { "type": "string", "description": "The unique identifier from the external service" }, "workspace_id": { "type": "string", "description": "The workspace this trigger belongs to" }, "service_name": { "$ref": "#/components/schemas/NativeServiceName" }, "script_path": { "type": "string", "description": "The path to the script or flow that will be triggered" }, "is_flow": { "type": "boolean", "description": "Whether the trigger targets a flow (true) or a script (false)" }, "service_config": { "type": "object", "description": "Configuration for the trigger including event_type and service_config", "additionalProperties": true }, "error": { "type": "string", "nullable": true, "description": "Error message if the trigger is in an error state" } }, "required": [ "external_id", "workspace_id", "service_name", "script_path", "is_flow", "service_config" ] }, "NativeTriggerWithExternal": { "type": "object", "description": "Full trigger response containing both Windmill data and external service data", "properties": { "external_id": { "type": "string", "description": "The unique identifier from the external service" }, "workspace_id": { "type": "string", "description": "The workspace this trigger belongs to" }, "service_name": { "$ref": "#/components/schemas/NativeServiceName" }, "script_path": { "type": "string", "description": "The path to the script or flow that will be triggered" }, "is_flow": { "type": "boolean", "description": "Whether the trigger targets a flow (true) or a script (false)" }, "service_config": { "type": "object", "description": "Configuration for the trigger including event_type and service_config", "additionalProperties": true }, "error": { "type": "string", "nullable": true, "description": "Error message if the trigger is in an error state" }, "external_data": { "type": "object", "description": "Configuration data from the external service", "additionalProperties": true } }, "required": [ "external_id", "workspace_id", "service_name", "script_path", "is_flow", "service_config", "external_data" ] }, "WorkspaceIntegrations": { "type": "object", "properties": { "service_name": { "$ref": "#/components/schemas/NativeServiceName" }, "oauth_data": { "nullable": true, "$ref": "#/components/schemas/WorkspaceOAuthConfig" } }, "required": [ "service_name" ] }, "WorkspaceOAuthConfig": { "type": "object", "properties": { "client_id": { "type": "string", "description": "The OAuth client ID for the workspace" }, "client_secret": { "type": "string", "description": "The OAuth client secret for the workspace" }, "base_url": { "type": "string", "format": "uri", "description": "The base URL of the workspace" }, "redirect_uri": { "type": "string", "format": "uri", "description": "The OAuth redirect URI" } }, "required": [ "client_id", "client_secret", "base_url", "redirect_uri" ] }, "WebhookEvent": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "webhook" ] }, "request_type": { "$ref": "#/components/schemas/WebhookRequestType" } }, "required": [ "type", "request_type" ] }, "WebhookRequestType": { "type": "string", "description": "The type of webhook request (define possible values here)", "enum": [ "async", "sync" ] }, "RedirectUri": { "type": "object", "properties": { "redirect_uri": { "type": "string" } }, "required": [ "redirect_uri" ] }, "NativeTriggerData": { "type": "object", "description": "Data for creating or updating a native trigger", "properties": { "script_path": { "type": "string", "description": "The path to the script or flow that will be triggered" }, "is_flow": { "type": "boolean", "description": "Whether the trigger targets a flow (true) or a script (false)" }, "service_config": { "type": "object", "description": "Service-specific configuration (e.g., event types, filters)", "additionalProperties": true } }, "required": [ "script_path", "is_flow", "service_config" ] }, "CreateTriggerResponse": { "type": "object", "description": "Response returned when a native trigger is created", "properties": { "external_id": { "type": "string", "description": "The external ID of the created trigger from the external service" } }, "required": [ "external_id" ] }, "SyncResult": { "type": "object", "properties": { "already_in_sync": { "type": "boolean" }, "added_count": { "type": "integer" }, "added_triggers": { "type": "array", "items": { "type": "string" } }, "total_external": { "type": "integer" }, "total_windmill": { "type": "integer" } }, "required": [ "already_in_sync", "added_count", "added_triggers", "total_external", "total_windmill" ] }, "NextCloudEventType": { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "description": { "type": "string" }, "category": { "type": "string" }, "path": { "type": "string" } }, "required": [ "id", "name", "path" ] }, "schemas-StaticTransform": { "type": "object", "description": "Static value passed directly to the step. Use for hardcoded values or resource references like '$res:path/to/resource'", "properties": { "value": { "description": "The static value. For resources, use format '$res:path/to/resource'" }, "type": { "type": "string", "enum": [ "static" ] } }, "required": [ "type" ] }, "schemas-JavascriptTransform": { "type": "object", "description": "JavaScript expression evaluated at runtime. Can reference previous step results via 'results.step_id' or flow inputs via 'flow_input.property'. Inside loops, use 'flow_input.iter.value' for the current iteration value", "properties": { "expr": { "type": "string", "description": "JavaScript expression returning the value. Available variables - results (object with all previous step results), flow_input (flow inputs), flow_input.iter (in loops)" }, "type": { "type": "string", "enum": [ "javascript" ] } }, "required": [ "expr", "type" ] }, "schemas-AiTransform": { "type": "object", "description": "Value resolved by the AI runtime for this input. The AI engine decides how to satisfy the parameter.", "properties": { "type": { "type": "string", "enum": [ "ai" ] } }, "required": [ "type" ] }, "schemas-InputTransform": { "description": "Maps input parameters for a step. Can be a static value or a JavaScript expression that references previous results or flow inputs", "oneOf": [ { "$ref": "#/components/schemas/schemas-StaticTransform" }, { "$ref": "#/components/schemas/schemas-JavascriptTransform" }, { "$ref": "#/components/schemas/schemas-AiTransform" } ], "discriminator": { "propertyName": "type", "mapping": { "static": "#/components/schemas/schemas-StaticTransform", "javascript": "#/components/schemas/schemas-JavascriptTransform", "ai": "#/components/schemas/schemas-AiTransform" } } }, "schemas-RawScript": { "type": "object", "description": "Inline script with code defined directly in the flow. Use 'bun' as default language if unspecified. The script receives arguments from input_transforms", "properties": { "input_transforms": { "type": "object", "description": "Map of parameter names to their values (static or JavaScript expressions). These become the script's input arguments", "additionalProperties": { "$ref": "#/components/schemas/schemas-InputTransform" } }, "content": { "type": "string", "description": "The script source code. Should export a 'main' function" }, "language": { "type": "string", "description": "Programming language for this script", "enum": [ "deno", "bun", "python3", "go", "bash", "powershell", "postgresql", "mysql", "bigquery", "snowflake", "mssql", "oracledb", "graphql", "nativets", "php", "rust", "ansible", "csharp", "nu", "java", "ruby", "duckdb" ] }, "path": { "type": "string", "description": "Optional path for saving this script" }, "lock": { "type": "string", "description": "Lock file content for dependencies" }, "type": { "type": "string", "enum": [ "rawscript" ] }, "tag": { "type": "string", "description": "Worker group tag for execution routing" }, "concurrent_limit": { "type": "number", "description": "Maximum concurrent executions of this script" }, "concurrency_time_window_s": { "type": "number", "description": "Time window for concurrent_limit" }, "custom_concurrency_key": { "type": "string", "description": "Custom key for grouping concurrent executions" }, "is_trigger": { "type": "boolean", "description": "If true, this script is a trigger that can start the flow" }, "assets": { "type": "array", "description": "External resources this script accesses (S3 objects, resources, etc.)", "items": { "type": "object", "required": [ "path", "kind" ], "properties": { "path": { "type": "string", "description": "Path to the asset" }, "kind": { "type": "string", "description": "Type of asset", "enum": [ "s3object", "resource", "ducklake", "datatable" ] }, "access_type": { "type": "string", "nullable": true, "description": "Access level for this asset", "enum": [ "r", "w", "rw" ] }, "alt_access_type": { "type": "string", "nullable": true, "description": "Alternative access level", "enum": [ "r", "w", "rw" ] } } } } }, "required": [ "type", "content", "language", "input_transforms" ] }, "schemas-PathScript": { "type": "object", "description": "Reference to an existing script by path. Use this when calling a previously saved script instead of writing inline code", "properties": { "input_transforms": { "type": "object", "description": "Map of parameter names to their values (static or JavaScript expressions). These become the script's input arguments", "additionalProperties": { "$ref": "#/components/schemas/schemas-InputTransform" } }, "path": { "type": "string", "description": "Path to the script in the workspace (e.g., 'f/scripts/send_email')" }, "hash": { "type": "string", "description": "Optional specific version hash of the script to use" }, "type": { "type": "string", "enum": [ "script" ] }, "tag_override": { "type": "string", "description": "Override the script's default worker group tag" }, "is_trigger": { "type": "boolean", "description": "If true, this script is a trigger that can start the flow" } }, "required": [ "type", "path", "input_transforms" ] }, "schemas-PathFlow": { "type": "object", "description": "Reference to an existing flow by path. Use this to call another flow as a subflow", "properties": { "input_transforms": { "type": "object", "description": "Map of parameter names to their values (static or JavaScript expressions). These become the subflow's input arguments", "additionalProperties": { "$ref": "#/components/schemas/schemas-InputTransform" } }, "path": { "type": "string", "description": "Path to the flow in the workspace (e.g., 'f/flows/process_user')" }, "type": { "type": "string", "enum": [ "flow" ] } }, "required": [ "type", "path", "input_transforms" ] }, "schemas-FlowModule": { "type": "object", "description": "A single step in a flow. Can be a script, subflow, loop, or branch", "properties": { "id": { "type": "string", "description": "Unique identifier for this step. Used to reference results via 'results.step_id'. Must be a valid identifier (alphanumeric, underscore, hyphen)" }, "value": { "$ref": "#/components/schemas/schemas-FlowModuleValue" }, "stop_after_if": { "description": "Early termination condition evaluated after this step completes", "$ref": "#/components/schemas/schemas-StopAfterIf" }, "stop_after_all_iters_if": { "description": "For loops only - early termination condition evaluated after all iterations complete", "$ref": "#/components/schemas/schemas-StopAfterIf" }, "skip_if": { "type": "object", "description": "Conditionally skip this step based on previous results or flow inputs", "properties": { "expr": { "type": "string", "description": "JavaScript expression that returns true to skip. Can use 'flow_input' or 'results.'" } }, "required": [ "expr" ] }, "sleep": { "description": "Delay before executing this step (in seconds or as expression)", "$ref": "#/components/schemas/schemas-InputTransform" }, "cache_ttl": { "type": "number", "description": "Cache duration in seconds for this step's results" }, "cache_ignore_s3_path": { "type": "boolean" }, "timeout": { "description": "Maximum execution time in seconds (static value or expression)", "$ref": "#/components/schemas/schemas-InputTransform" }, "delete_after_use": { "type": "boolean", "description": "If true, this step's result is deleted after use to save memory" }, "summary": { "type": "string", "description": "Short description of what this step does" }, "mock": { "type": "object", "description": "Mock configuration for testing without executing the actual step", "properties": { "enabled": { "type": "boolean", "description": "If true, return mock value instead of executing" }, "return_value": { "description": "Value to return when mocked" } } }, "suspend": { "type": "object", "description": "Configuration for approval/resume steps that wait for user input", "properties": { "required_events": { "type": "integer", "description": "Number of approvals required before continuing" }, "timeout": { "type": "integer", "description": "Timeout in seconds before auto-continuing or canceling" }, "resume_form": { "type": "object", "description": "Form schema for collecting input when resuming", "properties": { "schema": { "type": "object", "description": "JSON Schema for the resume form" } } }, "user_auth_required": { "type": "boolean", "description": "If true, only authenticated users can approve" }, "user_groups_required": { "description": "Expression or list of groups that can approve", "$ref": "#/components/schemas/schemas-InputTransform" }, "self_approval_disabled": { "type": "boolean", "description": "If true, the user who started the flow cannot approve" }, "hide_cancel": { "type": "boolean", "description": "If true, hide the cancel button on the approval form" }, "continue_on_disapprove_timeout": { "type": "boolean", "description": "If true, continue flow on timeout instead of canceling" } } }, "priority": { "type": "number", "description": "Execution priority for this step (higher numbers run first)" }, "continue_on_error": { "type": "boolean", "description": "If true, flow continues even if this step fails" }, "retry": { "description": "Retry configuration if this step fails", "$ref": "#/components/schemas/schemas-Retry" } }, "required": [ "value", "id" ] }, "schemas-ForloopFlow": { "type": "object", "description": "Executes nested modules in a loop over an iterator. Inside the loop, use 'flow_input.iter.value' to access the current iteration value, and 'flow_input.iter.index' for the index. Supports parallel execution for better performance on I/O-bound operations", "properties": { "modules": { "type": "array", "description": "Steps to execute for each iteration. These can reference the iteration value via 'flow_input.iter.value'", "items": { "$ref": "#/components/schemas/schemas-FlowModule" } }, "iterator": { "description": "JavaScript expression that returns an array to iterate over. Can reference 'results.step_id' or 'flow_input'", "$ref": "#/components/schemas/schemas-InputTransform" }, "skip_failures": { "type": "boolean", "description": "If true, iteration failures don't stop the loop. Failed iterations return null" }, "type": { "type": "string", "enum": [ "forloopflow" ] }, "parallel": { "type": "boolean", "description": "If true, iterations run concurrently (faster for I/O-bound operations). Use with parallelism to control concurrency" }, "parallelism": { "description": "Maximum number of concurrent iterations when parallel=true. Limits resource usage. Can be static number or expression", "$ref": "#/components/schemas/schemas-InputTransform" }, "squash": { "type": "boolean" } }, "required": [ "modules", "iterator", "skip_failures", "type" ] }, "schemas-WhileloopFlow": { "type": "object", "description": "Executes nested modules repeatedly while a condition is true. The loop checks the condition after each iteration. Use stop_after_if on modules to control loop termination", "properties": { "modules": { "type": "array", "description": "Steps to execute in each iteration. Use stop_after_if to control when the loop ends", "items": { "$ref": "#/components/schemas/schemas-FlowModule" } }, "skip_failures": { "type": "boolean", "description": "If true, iteration failures don't stop the loop. Failed iterations return null" }, "type": { "type": "string", "enum": [ "whileloopflow" ] }, "parallel": { "type": "boolean", "description": "If true, iterations run concurrently (use with caution in while loops)" }, "parallelism": { "description": "Maximum number of concurrent iterations when parallel=true", "$ref": "#/components/schemas/schemas-InputTransform" }, "squash": { "type": "boolean" } }, "required": [ "modules", "skip_failures", "type" ] }, "schemas-BranchOne": { "type": "object", "description": "Conditional branching where only the first matching branch executes. Branches are evaluated in order, and the first one with a true expression runs. If no branches match, the default branch executes", "properties": { "branches": { "type": "array", "description": "Array of branches to evaluate in order. The first branch with expr evaluating to true executes", "items": { "type": "object", "properties": { "summary": { "type": "string", "description": "Short description of this branch condition" }, "expr": { "type": "string", "description": "JavaScript expression that returns boolean. Can use 'results.step_id' or 'flow_input'. First true expr wins" }, "modules": { "type": "array", "description": "Steps to execute if this branch's expr is true", "items": { "$ref": "#/components/schemas/schemas-FlowModule" } } }, "required": [ "modules", "expr" ] } }, "default": { "type": "array", "description": "Steps to execute if no branch expressions match", "items": { "$ref": "#/components/schemas/schemas-FlowModule" } }, "type": { "type": "string", "enum": [ "branchone" ] } }, "required": [ "branches", "default", "type" ] }, "schemas-BranchAll": { "type": "object", "description": "Parallel branching where all branches execute simultaneously. Unlike BranchOne, all branches run regardless of conditions. Useful for executing independent tasks concurrently", "properties": { "branches": { "type": "array", "description": "Array of branches that all execute (either in parallel or sequentially)", "items": { "type": "object", "properties": { "summary": { "type": "string", "description": "Short description of this branch's purpose" }, "skip_failure": { "type": "boolean", "description": "If true, failure in this branch doesn't fail the entire flow" }, "modules": { "type": "array", "description": "Steps to execute in this branch", "items": { "$ref": "#/components/schemas/schemas-FlowModule" } } }, "required": [ "modules" ] } }, "type": { "type": "string", "enum": [ "branchall" ] }, "parallel": { "type": "boolean", "description": "If true, all branches execute concurrently. If false, they execute sequentially" } }, "required": [ "branches", "type" ] }, "schemas-Identity": { "type": "object", "description": "Pass-through module that returns its input unchanged. Useful for flow structure or as a placeholder", "properties": { "type": { "type": "string", "enum": [ "identity" ] }, "flow": { "type": "boolean", "description": "If true, marks this as a flow identity (special handling)" } }, "required": [ "type" ] }, "AIProviderKind": { "type": "string", "description": "Supported AI provider types", "enum": [ "openai", "azure_openai", "anthropic", "mistral", "deepseek", "googleai", "groq", "openrouter", "togetherai", "customai", "aws_bedrock" ] }, "schemas-ProviderConfig": { "type": "object", "description": "Complete AI provider configuration with resource reference and model selection", "properties": { "kind": { "$ref": "#/components/schemas/AIProviderKind" }, "resource": { "type": "string", "description": "Resource reference in format '$res:{resource_path}' pointing to provider credentials" }, "model": { "type": "string", "description": "Model identifier (e.g., 'gpt-4', 'claude-3-opus-20240229', 'gemini-pro')" } }, "required": [ "kind", "resource", "model" ] }, "StaticProviderTransform": { "type": "object", "description": "Static provider configuration passed directly to the AI agent", "properties": { "value": { "$ref": "#/components/schemas/schemas-ProviderConfig" }, "type": { "type": "string", "enum": [ "static" ] } }, "required": [ "type", "value" ] }, "ProviderTransform": { "description": "Provider configuration - can be static (ProviderConfig), JavaScript expression, or AI-determined", "oneOf": [ { "$ref": "#/components/schemas/StaticProviderTransform" }, { "$ref": "#/components/schemas/schemas-JavascriptTransform" }, { "$ref": "#/components/schemas/schemas-AiTransform" } ], "discriminator": { "propertyName": "type", "mapping": { "static": "#/components/schemas/StaticProviderTransform", "javascript": "#/components/schemas/schemas-JavascriptTransform", "ai": "#/components/schemas/schemas-AiTransform" } } }, "MemoryOff": { "type": "object", "description": "No conversation memory/context", "properties": { "kind": { "type": "string", "enum": [ "off" ] } }, "required": [ "kind" ] }, "MemoryAuto": { "type": "object", "description": "Automatic context management", "properties": { "kind": { "type": "string", "enum": [ "auto" ] }, "context_length": { "type": "integer", "description": "Maximum number of messages to retain in context" }, "memory_id": { "type": "string", "description": "Identifier for persistent memory across agent invocations" } }, "required": [ "kind" ] }, "MemoryMessage": { "type": "object", "description": "A single message in conversation history", "properties": { "role": { "type": "string", "enum": [ "user", "assistant", "system" ] }, "content": { "type": "string" } }, "required": [ "role", "content" ] }, "MemoryManual": { "type": "object", "description": "Explicit message history", "properties": { "kind": { "type": "string", "enum": [ "manual" ] }, "messages": { "type": "array", "items": { "$ref": "#/components/schemas/MemoryMessage" } } }, "required": [ "kind", "messages" ] }, "schemas-MemoryConfig": { "description": "Conversation memory configuration", "oneOf": [ { "$ref": "#/components/schemas/MemoryOff" }, { "$ref": "#/components/schemas/MemoryAuto" }, { "$ref": "#/components/schemas/MemoryManual" } ], "discriminator": { "propertyName": "kind", "mapping": { "off": "#/components/schemas/MemoryOff", "auto": "#/components/schemas/MemoryAuto", "manual": "#/components/schemas/MemoryManual" } } }, "StaticMemoryTransform": { "type": "object", "description": "Static memory configuration passed directly to the AI agent", "properties": { "value": { "$ref": "#/components/schemas/schemas-MemoryConfig" }, "type": { "type": "string", "enum": [ "static" ] } }, "required": [ "type", "value" ] }, "MemoryTransform": { "description": "Memory configuration - can be static (MemoryConfig), JavaScript expression, or AI-determined", "oneOf": [ { "$ref": "#/components/schemas/StaticMemoryTransform" }, { "$ref": "#/components/schemas/schemas-JavascriptTransform" }, { "$ref": "#/components/schemas/schemas-AiTransform" } ], "discriminator": { "propertyName": "type", "mapping": { "static": "#/components/schemas/StaticMemoryTransform", "javascript": "#/components/schemas/schemas-JavascriptTransform", "ai": "#/components/schemas/schemas-AiTransform" } } }, "schemas-FlowModuleValue": { "description": "The actual implementation of a flow step. Can be a script (inline or referenced), subflow, loop, branch, or special module type", "oneOf": [ { "$ref": "#/components/schemas/schemas-RawScript" }, { "$ref": "#/components/schemas/schemas-PathScript" }, { "$ref": "#/components/schemas/schemas-PathFlow" }, { "$ref": "#/components/schemas/schemas-ForloopFlow" }, { "$ref": "#/components/schemas/schemas-WhileloopFlow" }, { "$ref": "#/components/schemas/schemas-BranchOne" }, { "$ref": "#/components/schemas/schemas-BranchAll" }, { "$ref": "#/components/schemas/schemas-Identity" }, { "$ref": "#/components/schemas/schemas-AiAgent" } ], "discriminator": { "propertyName": "type", "mapping": { "rawscript": "#/components/schemas/schemas-RawScript", "script": "#/components/schemas/schemas-PathScript", "flow": "#/components/schemas/schemas-PathFlow", "forloopflow": "#/components/schemas/schemas-ForloopFlow", "whileloopflow": "#/components/schemas/schemas-WhileloopFlow", "branchone": "#/components/schemas/schemas-BranchOne", "branchall": "#/components/schemas/schemas-BranchAll", "identity": "#/components/schemas/schemas-Identity", "aiagent": "#/components/schemas/schemas-AiAgent" } } }, "FlowModuleTool": { "description": "A tool implemented as a flow module (script, flow, etc.). The AI can call this like any other flow module", "allOf": [ { "type": "object", "properties": { "tool_type": { "type": "string", "enum": [ "flowmodule" ] } }, "required": [ "tool_type" ] }, { "$ref": "#/components/schemas/schemas-FlowModuleValue" } ] }, "McpToolValue": { "type": "object", "description": "Reference to an external MCP (Model Context Protocol) tool. The AI can call tools from MCP servers", "properties": { "tool_type": { "type": "string", "enum": [ "mcp" ] }, "resource_path": { "type": "string", "description": "Path to the MCP resource/server configuration" }, "include_tools": { "type": "array", "description": "Whitelist of specific tools to include from this MCP server", "items": { "type": "string" } }, "exclude_tools": { "type": "array", "description": "Blacklist of tools to exclude from this MCP server", "items": { "type": "string" } } }, "required": [ "tool_type", "resource_path" ] }, "WebsearchToolValue": { "type": "object", "description": "A tool implemented as a websearch tool. The AI can call this like any other websearch tool", "properties": { "tool_type": { "type": "string", "enum": [ "websearch" ] } }, "required": [ "tool_type" ] }, "ToolValue": { "description": "The implementation of a tool. Can be a flow module (script/flow) or an MCP tool reference", "oneOf": [ { "$ref": "#/components/schemas/FlowModuleTool" }, { "$ref": "#/components/schemas/McpToolValue" }, { "$ref": "#/components/schemas/WebsearchToolValue" } ], "discriminator": { "propertyName": "tool_type", "mapping": { "flowmodule": "#/components/schemas/FlowModuleTool", "mcp": "#/components/schemas/McpToolValue", "websearch": "#/components/schemas/WebsearchToolValue" } } }, "AgentTool": { "type": "object", "description": "A tool available to an AI agent. Can be a flow module or an external MCP (Model Context Protocol) tool", "properties": { "id": { "type": "string", "description": "Unique identifier for this tool. Cannot contain spaces - use underscores instead (e.g., 'get_user_data' not 'get user data')" }, "summary": { "type": "string", "description": "Short description of what this tool does (shown to the AI)" }, "value": { "$ref": "#/components/schemas/ToolValue" } }, "required": [ "id", "value" ] }, "schemas-AiAgent": { "type": "object", "description": "AI agent step that can use tools to accomplish tasks. The agent receives inputs and can call any of its configured tools to complete the task", "properties": { "input_transforms": { "type": "object", "description": "Input parameters for the AI agent mapped to their values", "properties": { "provider": { "$ref": "#/components/schemas/ProviderTransform" }, "output_type": { "allOf": [ { "$ref": "#/components/schemas/schemas-InputTransform" } ], "description": "Output format type.\nValid values: 'text' (default) - plain text response, 'image' - image generation\n" }, "user_message": { "allOf": [ { "$ref": "#/components/schemas/schemas-InputTransform" } ], "description": "The user's prompt/message to the AI agent. Supports variable interpolation with flow.input syntax." }, "system_prompt": { "allOf": [ { "$ref": "#/components/schemas/schemas-InputTransform" } ], "description": "System instructions that guide the AI's behavior, persona, and response style. Optional." }, "streaming": { "allOf": [ { "$ref": "#/components/schemas/schemas-InputTransform" } ], "description": "Boolean. If true, stream the AI response incrementally.\nStreaming events include: token_delta, tool_call, tool_call_arguments, tool_execution, tool_result\n" }, "memory": { "$ref": "#/components/schemas/MemoryTransform" }, "output_schema": { "allOf": [ { "$ref": "#/components/schemas/schemas-InputTransform" } ], "description": "JSON Schema object defining structured output format. Used when you need the AI to return data in a specific shape.\nSupports standard JSON Schema properties: type, properties, required, items, enum, pattern, minLength, maxLength, minimum, maximum, etc.\nExample: { type: 'object', properties: { name: { type: 'string' }, age: { type: 'integer' } }, required: ['name'] }\n" }, "user_images": { "allOf": [ { "$ref": "#/components/schemas/schemas-InputTransform" } ], "description": "Array of image references for vision-capable models.\nFormat: Array<{ bucket: string, key: string }> - S3 object references\nExample: [{ bucket: 'my-bucket', key: 'images/photo.jpg' }]\n" }, "max_completion_tokens": { "allOf": [ { "$ref": "#/components/schemas/schemas-InputTransform" } ], "description": "Integer. Maximum number of tokens the AI will generate in its response.\nRange: 1 to 4,294,967,295. Typical values: 256-4096 for most use cases.\n" }, "temperature": { "allOf": [ { "$ref": "#/components/schemas/schemas-InputTransform" } ], "description": "Float. Controls randomness/creativity of responses.\nRange: 0.0 to 2.0 (provider-dependent)\n- 0.0 = deterministic, focused responses\n- 0.7 = balanced (common default)\n- 1.0+ = more creative/random\n" } }, "required": [ "provider", "user_message", "output_type" ] }, "tools": { "type": "array", "description": "Array of tools the agent can use. The agent decides which tools to call based on the task", "items": { "$ref": "#/components/schemas/AgentTool" } }, "type": { "type": "string", "enum": [ "aiagent" ] }, "parallel": { "type": "boolean", "description": "If true, the agent can execute multiple tool calls in parallel" } }, "required": [ "tools", "type", "input_transforms" ] }, "schemas-StopAfterIf": { "type": "object", "description": "Early termination condition for a module", "properties": { "skip_if_stopped": { "type": "boolean", "description": "If true, following steps are skipped when this condition triggers" }, "expr": { "type": "string", "description": "JavaScript expression evaluated after the module runs. Can use 'result' (step's result) or 'flow_input'. Return true to stop" }, "error_message": { "type": "string", "description": "Custom error message shown when stopping" } }, "required": [ "expr" ] }, "RetryIf": { "type": "object", "description": "Conditional retry based on error or result", "properties": { "expr": { "type": "string", "description": "JavaScript expression that returns true to retry. Has access to 'result' and 'error' variables" } }, "required": [ "expr" ] }, "schemas-Retry": { "type": "object", "description": "Retry configuration for failed module executions", "properties": { "constant": { "type": "object", "description": "Retry with constant delay between attempts", "properties": { "attempts": { "type": "integer", "description": "Number of retry attempts" }, "seconds": { "type": "integer", "description": "Seconds to wait between retries" } } }, "exponential": { "type": "object", "description": "Retry with exponential backoff (delay doubles each time)", "properties": { "attempts": { "type": "integer", "description": "Number of retry attempts" }, "multiplier": { "type": "integer", "description": "Multiplier for exponential backoff" }, "seconds": { "type": "integer", "minimum": 1, "description": "Initial delay in seconds" }, "random_factor": { "type": "integer", "minimum": 0, "maximum": 100, "description": "Random jitter percentage (0-100) to avoid thundering herd" } } }, "retry_if": { "$ref": "#/components/schemas/RetryIf" } } }, "schemas-FlowNote": { "type": "object", "description": "A sticky note attached to a flow for documentation and annotation", "properties": { "id": { "type": "string", "description": "Unique identifier for the note" }, "text": { "type": "string", "description": "Content of the note" }, "position": { "type": "object", "description": "Position of the note in the flow editor", "properties": { "x": { "type": "number", "description": "X coordinate" }, "y": { "type": "number", "description": "Y coordinate" } }, "required": [ "x", "y" ] }, "size": { "type": "object", "description": "Size of the note in the flow editor", "properties": { "width": { "type": "number", "description": "Width in pixels" }, "height": { "type": "number", "description": "Height in pixels" } }, "required": [ "width", "height" ] }, "color": { "type": "string", "description": "Color of the note (e.g., \"yellow\", \"#ffff00\")" }, "type": { "type": "string", "enum": [ "free", "group" ], "description": "Type of note - 'free' for standalone notes, 'group' for notes that group other nodes" }, "locked": { "type": "boolean", "default": false, "description": "Whether the note is locked and cannot be edited or moved" }, "contained_node_ids": { "type": "array", "items": { "type": "string" }, "description": "For group notes, the IDs of nodes contained within this group" } }, "required": [ "id", "text", "color", "type" ] }, "schemas-FlowValue": { "type": "object", "description": "The flow structure containing modules and optional preprocessor/failure handlers", "properties": { "modules": { "type": "array", "description": "Array of steps that execute in sequence. Each step can be a script, subflow, loop, or branch", "items": { "$ref": "#/components/schemas/schemas-FlowModule" } }, "failure_module": { "description": "Special module that executes when the flow fails. Receives error object with message, name, stack, and step_id. Must have id 'failure'. Only supports script/rawscript types", "$ref": "#/components/schemas/schemas-FlowModule" }, "preprocessor_module": { "description": "Special module that runs before the first step on external triggers. Must have id 'preprocessor'. Only supports script/rawscript types. Cannot reference other step results", "$ref": "#/components/schemas/schemas-FlowModule" }, "same_worker": { "type": "boolean", "description": "If true, all steps run on the same worker for better performance" }, "concurrent_limit": { "type": "number", "description": "Maximum number of concurrent executions of this flow" }, "concurrency_key": { "type": "string", "description": "Expression to group concurrent executions (e.g., by user ID)" }, "concurrency_time_window_s": { "type": "number", "description": "Time window in seconds for concurrent_limit" }, "debounce_delay_s": { "type": "number", "description": "Delay in seconds to debounce flow executions" }, "debounce_key": { "type": "string", "description": "Expression to group debounced executions" }, "debounce_args_to_accumulate": { "type": "array", "description": "Arguments to accumulate across debounced executions", "items": { "type": "string" } }, "max_total_debouncing_time": { "type": "number", "description": "Maximum total time in seconds that a job can be debounced" }, "max_total_debounces_amount": { "type": "number", "description": "Maximum number of times a job can be debounced" }, "skip_expr": { "type": "string", "description": "JavaScript expression to conditionally skip the entire flow" }, "cache_ttl": { "type": "number", "description": "Cache duration in seconds for flow results" }, "cache_ignore_s3_path": { "type": "boolean" }, "flow_env": { "type": "object", "description": "Environment variables available to all steps", "additionalProperties": { "type": "string" } }, "priority": { "type": "number", "description": "Execution priority (higher numbers run first)" }, "early_return": { "type": "string", "description": "JavaScript expression to return early from the flow" }, "chat_input_enabled": { "type": "boolean", "description": "Whether this flow accepts chat-style input" }, "notes": { "type": "array", "description": "Sticky notes attached to the flow", "items": { "$ref": "#/components/schemas/schemas-FlowNote" } } }, "required": [ "modules" ] }, "schemas-FlowStatusModule": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "WaitingForPriorSteps", "WaitingForEvents", "WaitingForExecutor", "InProgress", "Success", "Failure" ] }, "id": { "type": "string" }, "job": { "type": "string", "format": "uuid" }, "count": { "type": "integer" }, "progress": { "type": "integer" }, "iterator": { "type": "object", "properties": { "index": { "type": "integer" }, "itered": { "type": "array", "items": {} }, "itered_len": { "type": "integer" }, "args": {} } }, "flow_jobs": { "type": "array", "items": { "type": "string" } }, "flow_jobs_success": { "type": "array", "items": { "type": "boolean" } }, "flow_jobs_duration": { "type": "object", "properties": { "started_at": { "type": "array", "items": { "type": "string" } }, "duration_ms": { "type": "array", "items": { "type": "integer" } } } }, "branch_chosen": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "branch", "default" ] }, "branch": { "type": "integer" } }, "required": [ "type" ] }, "branchall": { "type": "object", "properties": { "branch": { "type": "integer" }, "len": { "type": "integer" } }, "required": [ "branch", "len" ] }, "approvers": { "type": "array", "items": { "type": "object", "properties": { "resume_id": { "type": "integer" }, "approver": { "type": "string" } }, "required": [ "resume_id", "approver" ] } }, "failed_retries": { "type": "array", "items": { "type": "string", "format": "uuid" } }, "skipped": { "type": "boolean" }, "agent_actions": { "type": "array", "items": { "type": "object", "oneOf": [ { "type": "object", "properties": { "job_id": { "type": "string", "format": "uuid" }, "function_name": { "type": "string" }, "type": { "type": "string", "enum": [ "tool_call" ] }, "module_id": { "type": "string" } }, "required": [ "job_id", "function_name", "type", "module_id" ] }, { "type": "object", "properties": { "call_id": { "type": "string", "format": "uuid" }, "function_name": { "type": "string" }, "resource_path": { "type": "string" }, "type": { "type": "string", "enum": [ "mcp_tool_call" ] }, "arguments": { "type": "object" } }, "required": [ "call_id", "function_name", "resource_path", "type" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "web_search" ] } }, "required": [ "type" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "message" ] } }, "required": [ "content", "type" ] } ] } }, "agent_actions_success": { "type": "array", "items": { "type": "boolean" } } }, "required": [ "type" ] } } } }