openapi: "3.0.3" info: version: 1.696.0 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). Cache TTL is fixed at 5 seconds. Use force=true query parameter to bypass cache. Note: This endpoint is intentionally different from Kubernetes probes to avoid confusion. For k8s liveness/readiness probes, use /version endpoint. 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. Requires authentication. Use for monitoring dashboards and debugging. This endpoint always returns fresh data (no caching). 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. 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/is_password_login_disabled: get: security: [] summary: check if password login is disabled instance-wide operationId: isPasswordLoginDisabled tags: - user responses: "200": description: returns true if password login is disabled 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 disabled: type: boolean 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/ext_jwt_tokens: get: summary: list external JWT tokens (ee only) operationId: listExtJwtTokens tags: - user parameters: - name: page in: query schema: type: integer - name: per_page in: query schema: type: integer - name: active_only in: query description: only tokens used in the last 30 days schema: type: boolean responses: "200": description: list of external JWT tokens content: application/json: schema: type: array items: $ref: "#/components/schemas/ExternalJwtToken" /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/offboard_preview/{username}: get: summary: preview offboarding for a workspace user (require admin privilege) operationId: offboardPreview tags: - user - admin parameters: - $ref: "#/components/parameters/WorkspaceId" - name: username in: path required: true schema: type: string responses: "200": description: offboard preview with object counts content: application/json: schema: $ref: "#/components/schemas/OffboardPreview" /w/{workspace}/users/offboard/{username}: post: summary: offboard a workspace user (reassign objects, optionally delete user) operationId: offboardWorkspaceUser tags: - user - admin parameters: - $ref: "#/components/parameters/WorkspaceId" - name: username in: path required: true schema: type: string requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/OffboardRequest" responses: "200": description: offboard response with conflicts or summary content: application/json: schema: $ref: "#/components/schemas/OffboardResponse" /users/offboard_preview/{email}: get: summary: preview global offboarding for a user across all workspaces (require super admin) operationId: globalOffboardPreview tags: - user parameters: - name: email in: path required: true schema: type: string responses: "200": description: per-workspace offboard previews content: application/json: schema: $ref: "#/components/schemas/GlobalOffboardPreview" /users/offboard/{email}: post: summary: offboard a user globally (reassign objects across workspaces, optionally delete) operationId: offboardGlobalUser tags: - user parameters: - name: email in: path required: true schema: type: string requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/GlobalOffboardRequest" responses: "200": description: offboard result content: application/json: schema: $ref: "#/components/schemas/OffboardResponse" /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/drop_custom_instance_pg_database/{name}: post: summary: Drops a custom instance database (superadmin only, irreversible) operationId: dropCustomInstanceDb tags: - setting parameters: - in: path name: name required: true schema: type: string description: The name of the database to drop responses: "200": description: status content: text/plain: schema: type: string /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_u/ruff_config: get: summary: get instance ruff config (unauthenticated) description: | Returns the instance-level ruff.toml content as plain text. Intentionally unauthenticated so the LSP extra container can poll it across any deployment topology. Responds with an empty body when the instance config is unset. Ruff configuration is lint/format policy, not a credential. operationId: getRuffConfig tags: - setting responses: "200": description: ruff.toml content (may be empty) 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 # pub use_ssl: Option, # #[serde(rename = "accountName")] # pub account_name: String, # #[serde(rename = "tenantId")] # pub tenant_id: Option, # #[serde(rename = "clientId")] # pub client_id: Option, # #[serde(rename = "containerName")] # pub container_name: String, # #[serde(rename = "accessKey")] # pub access_key: Option, /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/object_storage_usage: get: summary: get current or last object storage usage computation (null if never run) operationId: getObjectStorageUsage tags: - setting responses: "200": description: current or last storage-usage computation state content: application/json: schema: nullable: true type: object properties: running: type: boolean started_at: type: string format: date-time finished_at: type: string format: date-time nullable: true current_prefix: type: string nullable: true scanned_objects: type: integer format: int64 folders: type: array items: type: object properties: prefix: type: string size: type: integer format: int64 partial: type: boolean required: - prefix - size error: type: string nullable: true required: - running - started_at - scanned_objects - folders post: summary: start a background computation of object storage usage by top-level folder operationId: computeObjectStorageUsage tags: - setting responses: "202": description: computation started content: text/plain: schema: type: string /settings/run_log_cleanup: post: summary: start a manual cleanup of expired logs from object storage operationId: runLogCleanup tags: - setting responses: "202": description: cleanup started content: text/plain: schema: type: string /settings/log_cleanup_status: get: summary: get status of the manual log cleanup task operationId: getLogCleanupStatus tags: - setting responses: "200": description: current or last log cleanup status (null if never run) content: application/json: schema: nullable: true type: object properties: running: type: boolean started_at: type: string format: date-time finished_at: type: string format: date-time nullable: true phase: type: string total_service: type: integer format: int64 processed_service: type: integer format: int64 total_jobs: type: integer format: int64 processed_jobs: type: integer format: int64 s3_deleted: type: integer format: int64 orphans_scanned: type: integer format: int64 orphans_deleted: type: integer format: int64 errors: type: integer format: int64 last_error: type: string nullable: true required: - running - started_at - phase - total_service - processed_service - total_jobs - processed_jobs - s3_deleted - orphans_scanned - orphans_deleted - errors /settings/send_stats: post: summary: send stats operationId: sendStats tags: - setting responses: "200": description: status content: text/plain: schema: type: string /settings/restart_worker_group/{worker_group}: post: summary: restart worker group description: Send a restart signal to all workers in the specified worker group. Workers will gracefully shut down and are expected to be restarted by their supervisor. Requires devops role. operationId: restartWorkerGroup tags: - setting parameters: - name: worker_group in: path required: true schema: type: string description: the name of the worker group to restart responses: "200": description: restart signal sent content: text/plain: schema: type: string /settings/get_stats: get: summary: get telemetry stats with HMAC signature (EE only) operationId: getStats tags: - setting responses: "200": description: telemetry stats JSON with signature content: application/json: schema: type: object properties: signature: type: string data: 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" /settings/instance_config: get: summary: get full instance config (global settings + worker configs) operationId: getInstanceConfig tags: - setting responses: "200": description: full instance configuration content: application/json: schema: $ref: "#/components/schemas/InstanceConfig" put: summary: update instance config (bulk upsert, no deletes). Empty or missing global_settings/worker_configs are skipped. operationId: setInstanceConfig tags: - setting requestBody: description: full instance configuration to apply required: true content: application/json: schema: $ref: "#/components/schemas/InstanceConfig" responses: "200": description: instance config updated content: text/plain: schema: type: string /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" /settings/test_azure_kv_backend: post: summary: test Azure Key Vault connection operationId: testAzureKvBackend tags: - setting requestBody: description: Azure Key Vault settings to test required: true content: application/json: schema: $ref: "#/components/schemas/AzureKeyVaultSettings" responses: "200": description: connection successful content: text/plain: schema: type: string /settings/migrate_secrets_to_azure_kv: post: summary: migrate secrets from database to Azure Key Vault operationId: migrateSecretsToAzureKv tags: - setting requestBody: description: Azure Key Vault settings for migration target required: true content: application/json: schema: $ref: "#/components/schemas/AzureKeyVaultSettings" responses: "200": description: migration report content: application/json: schema: $ref: "#/components/schemas/SecretMigrationReport" /settings/migrate_secrets_from_azure_kv: post: summary: migrate secrets from Azure Key Vault to database operationId: migrateSecretsFromAzureKv tags: - setting requestBody: description: Azure Key Vault settings for migration source required: true content: application/json: schema: $ref: "#/components/schemas/AzureKeyVaultSettings" responses: "200": description: migration report content: application/json: schema: $ref: "#/components/schemas/SecretMigrationReport" /settings/test_aws_sm_backend: post: summary: test connection to AWS Secrets Manager operationId: testAwsSmBackend tags: - setting requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/AwsSecretsManagerSettings" responses: "200": description: connection test result content: text/plain: schema: type: string /settings/migrate_secrets_to_aws_sm: post: summary: migrate secrets from database to AWS Secrets Manager operationId: migrateSecretsToAwsSm tags: - setting requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/AwsSecretsManagerSettings" responses: "200": description: migration report content: application/json: schema: $ref: "#/components/schemas/SecretMigrationReport" /settings/migrate_secrets_from_aws_sm: post: summary: migrate secrets from AWS Secrets Manager to database operationId: migrateSecretsFromAwsSm tags: - setting requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/AwsSecretsManagerSettings" 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 /w/{workspace}/github_app/ghes_installation_callback: post: summary: GHES installation callback description: Register a self-managed GitHub App installation from GitHub Enterprise Server operationId: ghesInstallationCallback tags: - Git Sync parameters: - $ref: "#/components/parameters/WorkspaceId" requestBody: required: true content: application/json: schema: type: object required: - installation_id properties: installation_id: type: integer format: int64 description: The GitHub App installation ID from GHES responses: "200": description: GHES installation registered successfully /github_app/ghes_config: get: summary: Get GHES app config description: Returns the GitHub Enterprise Server app configuration (without private key) for constructing the installation URL operationId: getGhesConfig tags: - Git Sync responses: "200": description: GHES app configuration content: application/json: schema: type: object properties: base_url: type: string app_slug: type: string client_id: type: string app_owner: type: string nullable: true required: - base_url - app_slug - client_id /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/create_service_account: post: summary: create a service account operationId: createServiceAccount tags: - workspace parameters: - $ref: "#/components/parameters/WorkspaceId" requestBody: required: true content: application/json: schema: type: object properties: username: type: string required: - username responses: "201": description: service account created content: text/plain: schema: type: string /w/{workspace}/users/impersonate_service_account: post: summary: impersonate a service account operationId: impersonateServiceAccount tags: - user parameters: - $ref: "#/components/parameters/WorkspaceId" requestBody: required: true content: application/json: schema: type: object properties: username: type: string required: - username responses: "201": description: impersonation token content: text/plain: schema: type: string /w/{workspace}/users/exit_impersonation: post: summary: exit service account impersonation operationId: exitImpersonation tags: - user parameters: - $ref: "#/components/parameters/WorkspaceId" requestBody: required: true content: application/json: schema: type: object properties: token: type: string required: - token responses: "200": description: exited impersonation 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_public_settings: get: summary: get public settings description: Returns the subset of workspace settings safe to expose to any workspace member. The full settings struct is admin-only via `getSettings`. operationId: getPublicSettings 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 teams_team_id: type: string teams_team_name: type: string teams_team_guid: type: string large_file_storage: $ref: "#/components/schemas/LargeFileStorage" datatable: $ref: "#/components/schemas/DataTableSettings" deploy_ui: $ref: "#/components/schemas/WorkspaceDeployUISettings" mute_critical_alerts: type: boolean required: - workspace_id /w/{workspace}/workspaces/get_settings: get: summary: get settings (admin only) description: Returns the full workspace settings including admin-managed integration credentials. Admin-only — non-admin callers should use `getPublicSettings`. 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_imports/{importer_path}: get: summary: get script imports for an importer path operationId: getImports tags: - workspace parameters: - $ref: "#/components/parameters/WorkspaceId" - name: importer_path in: path required: true schema: type: string description: The script path to get imports for responses: "200": description: list of imported script paths content: application/json: schema: type: array items: type: string /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/connect_slack: post: summary: connect slack (non-interactive; pre-minted bot token) operationId: connectSlack tags: - workspace parameters: - $ref: "#/components/parameters/WorkspaceId" requestBody: description: connect slack with a pre-minted bot token required: true content: application/json: schema: type: object required: - bot_token - team_id - team_name properties: bot_token: type: string description: xoxb-... bot token obtained at api.slack.com/apps team_id: type: string team_name: type: string responses: "200": description: status /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: application/json: schema: type: object properties: effective_ai_config: $ref: "#/components/schemas/AIConfig" has_instance_ai_config: type: boolean uses_instance_ai_config: type: boolean instance_ai_summary: $ref: "#/components/schemas/InstanceAISummary" required: - effective_ai_config - has_instance_ai_config - uses_instance_ai_config /w/{workspace}/workspaces/get_copilot_settings_state: get: summary: get copilot settings state operationId: getCopilotSettingsState tags: - workspace parameters: - $ref: "#/components/parameters/WorkspaceId" responses: "200": description: status content: application/json: schema: type: object properties: has_instance_ai_config: type: boolean uses_instance_ai_config: type: boolean instance_ai_summary: $ref: "#/components/schemas/InstanceAISummary" required: - has_instance_ai_config - uses_instance_ai_config /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: object required: [name, resource_type, resource_path] properties: name: type: string resource_type: type: string enum: [postgres, instance] resource_path: 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/list_datatable_tables: get: summary: list tables of all connected Datatables operationId: listDataTableTables tags: - workspace parameters: - $ref: "#/components/parameters/WorkspaceId" responses: "200": description: table metadata of all datatables content: application/json: schema: type: array items: $ref: "#/components/schemas/DataTableTables" /w/{workspace}/workspaces/get_datatable_table_schema: get: summary: get one Datatable table schema operationId: getDataTableTableSchema tags: - workspace parameters: - $ref: "#/components/parameters/WorkspaceId" - name: datatable_name in: query required: true schema: type: string - name: schema_name in: query required: true schema: type: string - name: table_name in: query required: true schema: type: string responses: "200": description: schema of one datatable table content: application/json: schema: $ref: "#/components/schemas/DataTableTableSchema" /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/create_pg_database: post: summary: create a new PostgreSQL database for a datatable operationId: createPgDatabase tags: - workspace parameters: - $ref: "#/components/parameters/WorkspaceId" requestBody: description: Create pg database request required: true content: application/json: schema: type: object required: [source, target_dbname] properties: source: type: string description: "Datatable source to determine connection info: 'datatable://name' or '$res:path'" target_dbname: type: string description: "Name for the new database" responses: "200": description: status content: text/plain: schema: type: string /w/{workspace}/workspaces/drop_forked_datatable_databases: post: summary: drop forked datatable databases operationId: dropForkedDatatableDatabases tags: - workspace parameters: - $ref: "#/components/parameters/WorkspaceId" requestBody: required: true content: application/json: schema: type: object required: [datatable_names] properties: datatable_names: type: array items: type: string responses: "200": description: list of errors (empty if all succeeded) content: application/json: schema: type: array items: type: string /w/{workspace}/workspaces/import_pg_database: post: summary: import a PostgreSQL database from source to target via pg_dump operationId: importPgDatabase tags: - workspace parameters: - $ref: "#/components/parameters/WorkspaceId" requestBody: description: Import pg database request required: true content: application/json: schema: type: object required: [source, target, fork_behavior] properties: source: type: string description: "Source database: 'datatable://name' or '$res:path'" target: type: string description: "Target database: 'datatable://name' or '$res:path'" target_dbname_override: type: string description: "Override the target database name" fork_behavior: type: string enum: - schema_only - schema_and_data - keep_original responses: "200": description: status content: text/plain: schema: type: string /w/{workspace}/workspaces/export_pg_schema: post: summary: export the schema of a PostgreSQL database operationId: exportPgSchema tags: - workspace parameters: - $ref: "#/components/parameters/WorkspaceId" requestBody: description: Export pg schema request required: true content: application/json: schema: type: object required: [source] properties: source: type: string description: "Source database: 'datatable://name' or '$res:path'" responses: "200": description: schema dump content: text/plain: schema: type: string /w/{workspace}/workspaces/get_datatable_full_schema: post: summary: get the full schema of a datatable database as TableEditorValues operationId: getDatatableFullSchema tags: - workspace parameters: - $ref: "#/components/parameters/WorkspaceId" requestBody: required: true content: application/json: schema: type: object required: [source] properties: source: type: string description: "Source datatable, e.g. 'datatable://main'" responses: "200": description: "Schema as { schema_name: { table_name: TableEditorValues } }" content: application/json: schema: type: object additionalProperties: type: object additionalProperties: type: object required: [name, columns, foreign_keys] properties: name: type: string columns: type: array items: type: object required: [name, datatype] properties: name: type: string datatype: type: string primary_key: type: boolean default_value: type: string nullable: type: boolean foreign_keys: type: array items: type: object required: [columns, on_delete, on_update] properties: target_table: type: string columns: type: array items: type: object properties: source_column: type: string target_column: type: string on_delete: type: string on_update: type: string fk_constraint_name: type: string pk_constraint_name: type: string /w/{workspace}/workspaces/git_sync_enabled: get: summary: Check if git sync is available for this workspace operationId: getGitSyncEnabled tags: - workspace parameters: - $ref: "#/components/parameters/WorkspaceId" responses: "200": description: Git sync availability status content: application/json: schema: type: object properties: enabled: type: boolean reason: type: string nullable: true max_repos: type: integer nullable: true user_count: type: integer nullable: true max_users: type: integer nullable: true /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 default_app_raw: type: boolean /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 azure_used: type: boolean sqs_used: type: boolean email_used: type: boolean nextcloud_used: type: boolean google_used: type: boolean github_used: type: boolean required: - http_routes_used - websocket_used - kafka_used - nats_used - postgres_used - mqtt_used - gcp_used - azure_used - sqs_used - email_used - nextcloud_used - google_used - github_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/update_scopes/{token_prefix}: post: summary: update scopes of an existing token (owner only) operationId: updateTokenScopes tags: - user parameters: - name: token_prefix in: path required: true schema: type: string requestBody: description: new scopes (null or omitted = full access) required: true content: application/json: schema: type: object properties: scopes: type: array items: type: string nullable: true responses: "200": description: scopes updated 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 (if not secret no effect, default: true) 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) 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 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 - name: path description: exact path match filter in: query schema: type: string - name: description description: pattern match filter for description field (case-insensitive) in: query schema: type: string - name: value description: pattern match filter for non-secret variable values (case-insensitive) in: query schema: type: string - name: broad_filter description: broad search across multiple fields (case-insensitive substring match) in: query schema: type: string - $ref: "#/components/parameters/Page" - $ref: "#/components/parameters/PerPage" - name: label description: Filter by label in: query required: false schema: type: string 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}/deployment_request/eligible_deployers: get: summary: list users eligible to be deployment request assignees description: Returns admins and members of wm_deployers in the parent workspace of the fork at `{workspace}`. operationId: listDeploymentRequestEligibleDeployers tags: - workspace parameters: - $ref: "#/components/parameters/WorkspaceId" responses: "200": description: list of eligible deployers content: application/json: schema: type: array items: $ref: "#/components/schemas/DeploymentRequestEligibleDeployer" /w/{workspace}/deployment_request/open: get: summary: get the currently open deployment request for this fork operationId: getOpenDeploymentRequest tags: - workspace parameters: - $ref: "#/components/parameters/WorkspaceId" responses: "200": description: the open request or null if none exists content: application/json: schema: nullable: true allOf: - $ref: "#/components/schemas/DeploymentRequest" /w/{workspace}/deployment_request: post: summary: create a new deployment request operationId: createDeploymentRequest tags: - workspace parameters: - $ref: "#/components/parameters/WorkspaceId" requestBody: required: true content: application/json: schema: type: object required: - assignees properties: assignees: type: array items: type: string description: Usernames in the parent workspace. Must be admin or wm_deployers. responses: "200": description: request created content: application/json: schema: $ref: "#/components/schemas/DeploymentRequest" "400": description: invalid assignees "409": description: a deployment request is already open for this fork /w/{workspace}/deployment_request/{id}/cancel: post: summary: cancel an open deployment request operationId: cancelDeploymentRequest tags: - workspace parameters: - $ref: "#/components/parameters/WorkspaceId" - name: id in: path required: true schema: type: integer format: int64 responses: "200": description: cancelled content: text/plain: schema: type: string /w/{workspace}/deployment_request/{id}/close_merged: post: summary: close a deployment request after a successful merge description: Called by the UI after the deploy loop completes. Closes the request and marks every comment obsolete. Idempotent. operationId: closeDeploymentRequestMerged tags: - workspace parameters: - $ref: "#/components/parameters/WorkspaceId" - name: id in: path required: true schema: type: integer format: int64 responses: "200": description: closed content: text/plain: schema: type: string /w/{workspace}/deployment_request/{id}/comment: post: summary: append a comment to an open deployment request operationId: createDeploymentRequestComment tags: - workspace parameters: - $ref: "#/components/parameters/WorkspaceId" - name: id in: path required: true schema: type: integer format: int64 requestBody: required: true content: application/json: schema: type: object required: - body properties: body: type: string parent_id: type: integer format: int64 nullable: true anchor_kind: type: string nullable: true anchor_path: type: string nullable: true responses: "200": description: comment created content: application/json: schema: $ref: "#/components/schemas/DeploymentRequestComment" "400": description: invalid input or request closed /w/{workspace}/workspaces/log_chat: post: summary: log AI chat message operationId: logAiChat tags: - workspace parameters: - $ref: "#/components/parameters/WorkspaceId" requestBody: required: true content: application/json: schema: type: object required: - session_id - provider - model - mode properties: session_id: type: string provider: type: string model: type: string mode: type: string responses: "204": description: logged /w/{workspace}/workspaces/cloud_quotas: get: summary: get cloud quota usage and limits for workspace operationId: getCloudQuotas tags: - workspace parameters: - $ref: "#/components/parameters/WorkspaceId" responses: "200": description: cloud quota usage and limits content: application/json: schema: type: object properties: scripts: $ref: "#/components/schemas/QuotaInfo" flows: $ref: "#/components/schemas/QuotaInfo" apps: $ref: "#/components/schemas/QuotaInfo" variables: $ref: "#/components/schemas/QuotaInfo" resources: $ref: "#/components/schemas/QuotaInfo" required: - scripts - flows - apps - variables - resources /w/{workspace}/workspaces/prune_versions: post: summary: prune old versions of scripts, flows, or apps operationId: pruneVersions tags: - workspace parameters: - $ref: "#/components/parameters/WorkspaceId" requestBody: required: true content: application/json: schema: type: object properties: resource_type: type: string enum: - scripts - flows - apps required: - resource_type responses: "200": description: number of pruned versions content: application/json: schema: type: object properties: pruned: type: integer required: - pruned /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. 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_slack_instance: post: summary: connect slack instance (non-interactive; pre-minted bot token) operationId: connectSlackInstance tags: - oauth requestBody: description: connect slack at the instance level with a pre-minted bot token required: true content: application/json: schema: type: object required: - bot_token - team_id - team_name properties: bot_token: type: string description: xoxb-... bot token obtained at api.slack.com/apps team_id: type: string team_name: type: string responses: "200": description: status /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" scopes: type: array items: type: string description: "OAuth scopes to use for token refresh. Overrides instance-level scopes." 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 auto_login: type: string description: provider type to auto-redirect to on login (oauth key or "saml") 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 - name: path description: exact path match filter in: query schema: type: string - name: description description: pattern match filter for description field (case-insensitive) in: query schema: type: string - name: value description: JSONB subset match filter using base64 encoded JSON in: query schema: type: string - name: broad_filter description: broad search across multiple fields (case-insensitive substring match) in: query schema: type: string - name: label description: Filter by label in: query required: false 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 resource info content: application/json: schema: type: object additionalProperties: type: object properties: format_extension: type: string nullable: true is_fileset: type: boolean /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: "../../openflow.openapi.yaml#/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. Beware that each script stores only a limited number of parents. Hence the last parent hash for a script is not necessarily its top-most parent. To find the top-most parent you will have to jump from last to last hash until finding the parent in: query schema: type: string - name: parent_hash description: | is the hash present in the array of stored parent hashes for this script. The same warning applies than for last_parent_hash. A script only store a limited number of direct parent in: query schema: type: string - name: show_archived description: | (default false) show only the archived files. when multiple archived hash share the same path, only the ones with the latest create_at are ed. in: query schema: type: boolean - name: include_without_main description: | (default false) include scripts without an exported main function in: query schema: type: boolean - name: include_draft_only description: | (default false) include scripts that have no deployed version in: query schema: type: boolean - name: is_template description: | (default regardless) if true show only the templates if false show only the non templates if not defined, show all regardless of if the script is a template in: query schema: type: boolean - name: kinds description: | (default regardless) script kinds to filter, split by comma in: query schema: type: string - name: starred_only description: | (default false) show only the starred items in: query schema: type: boolean - name: with_deployment_msg description: | (default false) include deployment message in: query schema: type: boolean - name: languages in: query description: | Filter to only include scripts written in the given languages. Accepts multiple values as a comma-separated list. schema: type: string - name: without_description in: query description: | (default false) If true, the description field will be omitted from the response. schema: type: boolean - name: dedicated_worker in: query description: | (default regardless) If true, show only scripts with dedicated_worker enabled. If false, show only scripts with dedicated_worker disabled. schema: type: boolean - name: label in: query required: false schema: type: string description: Filter by label 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 description: | Creates a new script when the path does not already exist. Creates a new version of an existing script when called with the same path and the current `parent_hash`. 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/list_dedicated_with_deps: get: summary: list dedicated worker scripts with workspace dependency annotations operationId: listDedicatedWithDeps tags: - script parameters: - $ref: "#/components/parameters/WorkspaceId" responses: "200": description: list of dedicated scripts with their workspace dependency names content: application/json: schema: type: array items: type: object properties: path: type: string language: type: string enum: - python3 - deno - go - bash - powershell - postgresql - mysql - bigquery - snowflake - mssql - graphql - nativets - bun - bunnative - php - rust - ansible - csharp - oracledb - duckdb - java - ruby workspace_dep_names: type: array items: type: string required: - path - language - workspace_dep_names /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}/scripts/ci_test_results/{kind}/{path}: get: summary: get CI test results for a script, flow, or resource operationId: getCiTestResults tags: - script parameters: - $ref: "#/components/parameters/WorkspaceId" - name: kind in: path required: true schema: type: string enum: [script, flow, resource] - name: path in: path required: true schema: type: string responses: "200": description: CI test results content: application/json: schema: type: array items: $ref: "#/components/schemas/CiTestResult" /w/{workspace}/scripts/ci_test_results_batch: post: summary: get CI test results for multiple items operationId: getCiTestResultsBatch tags: - script parameters: - $ref: "#/components/parameters/WorkspaceId" requestBody: required: true content: application/json: schema: type: object required: - items properties: items: type: array items: type: object required: - path - kind properties: path: type: string kind: type: string enum: [script, flow, resource] responses: "200": description: CI test results by item key content: application/json: schema: type: object additionalProperties: type: array items: $ref: "#/components/schemas/CiTestResult" /w/{workspace}/scripts/raw_temp/store: post: summary: store raw script content temporarily for CLI lock generation operationId: storeRawScriptTemp tags: - script parameters: - $ref: "#/components/parameters/WorkspaceId" requestBody: description: script content to store required: true content: application/json: schema: type: string responses: "200": description: hash of stored content content: application/json: schema: type: string /w/{workspace}/scripts/raw_temp/diff: post: summary: diff local script hashes against deployed versions operationId: diffRawScriptsWithDeployed tags: - script parameters: - $ref: "#/components/parameters/WorkspaceId" requestBody: description: scripts and workspace deps to diff against deployed versions required: true content: application/json: schema: type: object required: - scripts properties: scripts: description: map of script path to SHA256 content hash type: object additionalProperties: type: string workspace_deps: description: workspace dependencies to diff type: array items: type: object required: - path - language - hash properties: path: description: CLI path (e.g. dependencies/package.json) type: string language: $ref: "#/components/schemas/ScriptLang" name: description: named workspace dependency (null for default) type: string hash: description: SHA256 content hash type: string responses: "200": description: list of paths that differ from deployed versions content: application/json: schema: type: array items: type: string /w/{workspace}/jobs/list_selected_job_groups: # We use post because sending a huge array as a query param can produce # URLs that may be too long 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) show only the archived files. when multiple archived hash share the same path, only the ones with the latest create_at are displayed. in: query schema: type: boolean - name: starred_only description: | (default false) show only the starred items in: query schema: type: boolean - name: include_draft_only description: | (default false) include items that have no deployed version in: query schema: type: boolean - name: with_deployment_msg description: | (default false) include deployment message in: query schema: type: boolean - name: without_description in: query description: | (default false) If true, the description field will be omitted from the response. schema: type: boolean - name: dedicated_worker in: query description: | (default regardless) If true, show only flows with dedicated_worker enabled. If false, show only flows with dedicated_worker disabled. schema: type: boolean - name: label in: query required: false schema: type: string description: Filter by label 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_conversations 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_conversations 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_conversations 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_seq description: Message sequence cursor to fetch only the messages after that cursor in: query required: false schema: type: integer format: int64 responses: "200": description: conversation messages content: application/json: schema: type: array items: $ref: "#/components/schemas/FlowConversationMessage" /w/{workspace}/path_autocomplete/list_paths: get: summary: list all paths in a workspace for client-side autocomplete description: | Returns the flat list of all item paths visible to the caller across scripts, flows, apps, raw apps, variables, and resources. Intended to feed an entirely client-side path autocomplete UI: the frontend fetches once (server caches per workspace for 60s) and performs all prefix/segment computation locally. Capped at 20,000 paths (5,000 per table). operationId: listPathAutocompletePaths tags: - path_autocomplete parameters: - $ref: "#/components/parameters/WorkspaceId" responses: "200": description: deduplicated path list, sorted lexicographically content: application/json: schema: type: object properties: paths: type: array items: type: string required: - paths /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) show only the starred items in: query schema: type: boolean - name: label in: query required: false schema: type: string description: Filter by label responses: "200": description: All raw apps content: application/json: schema: type: array items: $ref: "#/components/schemas/ListableRawApp" /w/{workspace}/shared_ui/get: get: summary: get the workspace shared UI folder (full content) operationId: getSharedUi tags: - workspace parameters: - $ref: "#/components/parameters/WorkspaceId" responses: "200": description: shared UI content content: application/json: schema: type: object required: - files - version - edited_at - edited_by properties: files: type: object additionalProperties: type: string version: type: integer format: int64 edited_at: type: string format: date-time edited_by: type: string /w/{workspace}/shared_ui/list: get: summary: list paths/sizes of the workspace shared UI folder operationId: listSharedUi tags: - workspace parameters: - $ref: "#/components/parameters/WorkspaceId" responses: "200": description: shared UI listing content: application/json: schema: type: object required: - paths - sizes - version - edited_at - edited_by properties: paths: type: array items: type: string sizes: type: object additionalProperties: type: integer format: int64 version: type: integer format: int64 edited_at: type: string format: date-time edited_by: type: string /w/{workspace}/shared_ui/version: get: summary: get the current version of the workspace shared UI folder operationId: getSharedUiVersion tags: - workspace parameters: - $ref: "#/components/parameters/WorkspaceId" responses: "200": description: shared UI version content: application/json: schema: type: object required: - version properties: version: type: integer format: int64 /w/{workspace}/shared_ui: put: summary: replace the workspace shared UI folder (admin only) operationId: updateSharedUi tags: - workspace parameters: - $ref: "#/components/parameters/WorkspaceId" requestBody: required: true content: application/json: schema: type: object required: - files properties: files: type: object additionalProperties: type: string responses: "200": description: updated content: text/plain: schema: type: string /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) show only the starred items in: query schema: type: boolean - name: include_draft_only description: | (default false) include items that have no deployed version in: query schema: type: boolean - name: with_deployment_msg description: | (default false) include deployment message in: query schema: type: boolean - name: label in: query required: false schema: type: string description: Filter by label 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 preserve_on_behalf_of: type: boolean description: "When true and the caller is a member of the 'wm_deployers' group, preserves the original on_behalf_of value in the policy instead of overwriting it." labels: type: array items: 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 preserve_on_behalf_of: type: boolean description: "When true and the caller is a member of the 'wm_deployers' group, preserves the original on_behalf_of value in the policy instead of overwriting it." labels: type: array items: 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 preserve_on_behalf_of: type: boolean description: "When true and the caller is a member of the 'wm_deployers' group, preserves the original on_behalf_of value in the policy instead of overwriting it." labels: type: array items: 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 preserve_on_behalf_of: type: boolean description: "When true and the caller is a member of the 'wm_deployers' group, preserves the original on_behalf_of value in the policy instead of overwriting it." labels: type: array items: 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 #script: script/ #flow: flow/ 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 tag: type: string 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 force_viewer_sensitive_inputs: type: array items: type: string force_viewer_delete_after_secs: type: integer 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: top-level step id to restart the flow from (or the outermost container when restarting at a nested step) branch_or_iteration_n: type: integer description: for branchall or loop at the top level, 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) nested_path: type: array description: path of additional steps to descend into AFTER `step_id`. Each entry represents one level of nesting inside the spawned child of the previous level's container (BranchOne / sequential ForLoop iteration / Subflow). When non-empty, the actual restart point is the LAST entry's step_id. items: type: object required: - step_id properties: step_id: type: string description: step id at this nesting level branch_or_iteration_n: type: integer description: for ForLoop containers, the iteration to restart at (0-based; iterations 0..n-1 are preserved) 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_inline/p/{path}: post: summary: run script by path without starting a new job operationId: runScriptByPathInline tags: - job parameters: - $ref: "#/components/parameters/WorkspaceId" - $ref: "#/components/parameters/ScriptPath" requestBody: description: script args required: true content: application/json: schema: $ref: "#/components/schemas/InlineScriptArgs" responses: "200": description: script result content: application/json: schema: {} /w/{workspace}/jobs/run_inline/h/{hash}: post: summary: run script by hash without starting a new job operationId: runScriptByHashInline tags: - job parameters: - $ref: "#/components/parameters/WorkspaceId" - $ref: "#/components/parameters/ScriptHash" requestBody: description: script args required: true content: application/json: schema: $ref: "#/components/schemas/InlineScriptArgs" 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/dependencies_async: post: summary: queue a one-off dependencies job and return the job uuid operationId: runRawScriptDependenciesAsync 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 created content: text/plain: schema: type: string format: uuid /w/{workspace}/jobs/run/flow_dependencies_async: post: summary: queue a one-off flow dependencies job and return the job uuid operationId: runFlowDependenciesAsync tags: - job parameters: - $ref: "#/components/parameters/WorkspaceId" requestBody: description: flow value and path required: true content: application/json: schema: type: object properties: path: type: string flow_value: $ref: "#/components/schemas/FlowValue" required: - path - flow_value responses: "201": description: flow dependencies job created content: text/plain: schema: type: string format: uuid /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 - name: all_workspaces 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 - name: broad_filter description: broad search across multiple fields (case-insensitive substring match on path, tag, schedule path, trigger kind, label) in: query schema: type: string 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 x-mcp-tool: true 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 - name: approval_token in: query description: Approval token granting read access to the job when not logged in. The token must be the one issued for this job's flow (i.e. the flow id used when generating the approval URL). schema: type: string 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: getJobLogs x-mcp-tool: true 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_flow_all_logs/{id}: get: summary: get all logs for a flow job operationId: getFlowAllLogs tags: - job parameters: - $ref: "#/components/parameters/WorkspaceId" - $ref: "#/components/parameters/JobId" responses: "200": description: concatenated logs of all flow steps 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: "../../openflow.openapi.yaml#/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 - name: fast 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 - name: resume_button_text in: query required: false schema: type: string - name: cancel_button_text 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 - name: resume_button_text in: query required: false schema: type: string - name: cancel_button_text in: query required: false schema: type: string responses: "200": description: Interactive slack approval message sent successfully /w/{workspace}/jobs_u/flow/resume_suspended/{job_id}: post: summary: resume or cancel a suspended flow/WAC job description: > Resume or cancel a suspended flow/WAC job. Uses approval rules to determine authorization. Either a valid approval_token or an authenticated session is required. operationId: resumeSuspended tags: - job parameters: - $ref: "#/components/parameters/WorkspaceId" - name: job_id in: path required: true schema: type: string format: uuid requestBody: required: true content: application/json: schema: type: object properties: payload: description: payload to send to the resumed job approval_token: type: string description: approval token for unauthenticated access approved: type: boolean description: whether to approve (true) or cancel (false) the job default: true responses: "201": description: job resumed content: text/plain: schema: type: string /w/{workspace}/jobs_u/flow/approval_info/{job_id}: get: summary: get approval info for a suspended flow/WAC job description: > Get approval info for a suspended flow/WAC job. Returns form schema, approval rules, and whether the current user can approve. Either a valid token query parameter or an authenticated session is required. operationId: getApprovalInfo tags: - job parameters: - $ref: "#/components/parameters/WorkspaceId" - name: job_id in: path required: true schema: type: string format: uuid - name: token in: query required: false schema: type: string description: approval token for unauthenticated access responses: "200": description: approval info content: application/json: schema: type: object required: - flow_id - can_approve - user_auth_required - approvers properties: flow_id: type: string format: uuid form_schema: description: form schema for the approval step description: description: description of the approval step approval_conditions: type: object properties: user_auth_required: type: boolean user_groups_required: type: array items: type: string self_approval_disabled: type: boolean required: - user_auth_required - user_groups_required - self_approval_disabled can_approve: type: boolean description: whether the current user/token holder can approve user_auth_required: type: boolean description: whether user authentication is required to approve hide_cancel: type: boolean description: whether to hide the cancel button in the UI approvers: type: array items: type: object required: - resume_id - approver properties: resume_id: type: integer approver: type: string /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. The schedule should include seconds. You should get the schema of the script or flow before creating the schedule to correctly specify the arguments needed. 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. The schedule should include seconds. You should get the schema of the script or flow before updating the schedule to correctly specify the arguments needed. 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 force: type: boolean description: > Bypass the parent-state conflict warning when enabling a schedule in a fork whose parent has the same path enabled. 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 (script 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 - name: schedule_path description: exact match on the schedule's path in: query schema: type: string - name: description description: pattern match filter for description field (case-insensitive) in: query schema: type: string - name: summary description: pattern match filter for summary field (case-insensitive) in: query schema: type: string - name: broad_filter description: broad search across multiple fields (case-insensitive substring match) in: query schema: type: string - name: label in: query required: false schema: type: string description: Filter by label 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 - name: label in: query required: false schema: type: string description: Filter by label 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" force: type: boolean description: > Bypass the parent-state conflict warning when enabling a trigger in a fork whose parent has the same path enabled. 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 - name: label in: query required: false schema: type: string description: Filter by label 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" force: type: boolean description: > Bypass the parent-state conflict warning when enabling a trigger in a fork whose parent has the same path enabled. 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 - name: label in: query required: false schema: type: string description: Filter by label 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" force: type: boolean description: > Bypass the parent-state conflict warning when enabling a trigger in a fork whose parent has the same path enabled. 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}/kafka_triggers/reset_offsets/{path}: post: summary: reset kafka trigger offsets to earliest operationId: resetKafkaOffsets tags: - kafka_trigger parameters: - $ref: "#/components/parameters/WorkspaceId" - $ref: "#/components/parameters/Path" responses: "200": description: kafka trigger offsets reset successfully /w/{workspace}/kafka_triggers/commit_offsets/{path}: post: summary: commit kafka offsets for a specific trigger operationId: commitKafkaOffsets tags: - kafka_trigger parameters: - $ref: "#/components/parameters/WorkspaceId" - $ref: "#/components/parameters/Path" requestBody: description: offsets to commit required: true content: application/json: schema: type: object properties: topic: type: string partition: type: integer format: int32 offset: type: integer format: int64 required: - topic - partition - offset responses: "200": description: kafka offsets committed successfully /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 - name: label in: query required: false schema: type: string description: Filter by label 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" force: type: boolean description: > Bypass the parent-state conflict warning when enabling a trigger in a fork whose parent has the same path enabled. 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 - name: label in: query required: false schema: type: string description: Filter by label 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" force: type: boolean description: > Bypass the parent-state conflict warning when enabling a trigger in a fork whose parent has the same path enabled. 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}/instance_sharing_available: get: summary: check if instance-level credential sharing is available for a service operationId: checkInstanceSharingAvailable tags: - workspace_integration parameters: - $ref: "#/components/parameters/WorkspaceId" - name: service_name in: path required: true schema: $ref: "#/components/schemas/NativeServiceName" responses: "200": description: whether instance sharing is available content: application/json: schema: type: boolean /w/{workspace}/native_triggers/integrations/{service_name}/generate_instance_connect_url: post: summary: generate connect url using instance-level credentials operationId: generateInstanceConnectUrl 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: authorization URL using instance credentials 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: 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" requestBody: description: OAuth callback data required: true content: application/json: schema: type: object properties: code: type: string state: type: string redirect_uri: type: string resource_path: type: string required: - code - state - redirect_uri 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. Requires write access to the script or flow that the trigger will be associated with. 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. Requires write access to the script or flow that the trigger is associated with. 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. Requires write access to the script or flow that the trigger is associated with. 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. Requires write access to the script or flow that the trigger is associated with. 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 - name: label in: query required: false schema: type: string description: Filter by label 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" /w/{workspace}/native_triggers/google/calendars: get: summary: list Google Calendars for the authenticated user operationId: listGoogleCalendars tags: - native_trigger parameters: - name: workspace in: path required: true schema: type: string responses: "200": description: list of Google Calendars content: application/json: schema: type: array items: $ref: "#/components/schemas/GoogleCalendarEntry" /w/{workspace}/native_triggers/google/drive/files: get: summary: list or search Google Drive files operationId: listGoogleDriveFiles tags: - native_trigger parameters: - name: workspace in: path required: true schema: type: string - name: q in: query description: search query to filter files by name schema: type: string - name: parent_id in: query description: folder ID to list children of schema: type: string - name: page_token in: query description: token for next page of results schema: type: string - name: shared_with_me in: query description: if true, list files shared with the user schema: type: boolean default: false responses: "200": description: list of Google Drive files content: application/json: schema: $ref: "#/components/schemas/GoogleDriveFilesResponse" /w/{workspace}/native_triggers/google/drive/shared_drives: get: summary: list shared drives accessible to the user operationId: listGoogleSharedDrives tags: - native_trigger parameters: - name: workspace in: path required: true schema: type: string responses: "200": description: list of shared drives content: application/json: schema: type: array items: $ref: "#/components/schemas/SharedDriveEntry" /w/{workspace}/native_triggers/github/repos: get: summary: list GitHub repositories accessible to the user operationId: listGithubRepos tags: - native_trigger parameters: - name: workspace in: path required: true schema: type: string responses: "200": description: list of GitHub repositories content: application/json: schema: type: array items: $ref: "#/components/schemas/GithubRepoEntry" /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 - name: label in: query required: false schema: type: string description: Filter by label 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" force: type: boolean description: > Bypass the parent-state conflict warning when enabling a trigger in a fork whose parent has the same path enabled. 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 - name: label in: query required: false schema: type: string description: Filter by label 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" force: type: boolean description: > Bypass the parent-state conflict warning when enabling a trigger in a fork whose parent has the same path enabled. 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}/azure_triggers/create: post: summary: create an Azure Event Grid trigger operationId: createAzureTrigger tags: - azure_trigger parameters: - $ref: "#/components/parameters/WorkspaceId" requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/AzureTriggerData" responses: "201": description: azure trigger created content: text/plain: schema: type: string /w/{workspace}/azure_triggers/update/{path}: post: summary: update an Azure Event Grid trigger operationId: updateAzureTrigger tags: - azure_trigger parameters: - $ref: "#/components/parameters/WorkspaceId" - $ref: "#/components/parameters/Path" requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/AzureTriggerData" responses: "200": description: azure trigger updated content: text/plain: schema: type: string /w/{workspace}/azure_triggers/delete/{path}: delete: summary: delete an Azure Event Grid trigger operationId: deleteAzureTrigger tags: - azure_trigger parameters: - $ref: "#/components/parameters/WorkspaceId" - $ref: "#/components/parameters/Path" responses: "200": description: azure trigger deleted content: text/plain: schema: type: string /w/{workspace}/azure_triggers/get/{path}: get: summary: get an Azure Event Grid trigger operationId: getAzureTrigger tags: - azure_trigger parameters: - $ref: "#/components/parameters/WorkspaceId" - $ref: "#/components/parameters/Path" responses: "200": description: azure trigger content: application/json: schema: $ref: "#/components/schemas/AzureTrigger" /w/{workspace}/azure_triggers/list: get: summary: list azure triggers operationId: listAzureTriggers tags: - azure_trigger parameters: - $ref: "#/components/parameters/WorkspaceId" - $ref: "#/components/parameters/Page" - $ref: "#/components/parameters/PerPage" - name: path description: filter by exact 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: azure trigger list content: application/json: schema: type: array items: $ref: "#/components/schemas/AzureTrigger" /w/{workspace}/azure_triggers/exists/{path}: get: summary: check whether an azure trigger exists operationId: existsAzureTrigger tags: - azure_trigger parameters: - $ref: "#/components/parameters/WorkspaceId" - $ref: "#/components/parameters/Path" responses: "200": description: true/false content: application/json: schema: type: boolean /w/{workspace}/azure_triggers/setmode/{path}: post: summary: set azure trigger mode operationId: setAzureTriggerMode tags: - azure_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" force: type: boolean description: > Bypass the parent-state conflict warning when enabling a trigger in a fork whose parent has the same path enabled. required: - mode responses: "200": description: trigger mode updated content: text/plain: schema: type: string /w/{workspace}/azure_triggers/test: post: summary: test Azure service principal connection operationId: testAzureConnection tags: - azure_trigger parameters: - $ref: "#/components/parameters/WorkspaceId" requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/TestAzureConnection" responses: "200": description: connection successful content: text/plain: schema: type: string /w/{workspace}/azure_triggers/namespaces/topics/list/{path}: post: summary: list topics under an Event Grid Namespace operationId: listAzureNamespaceTopics tags: - azure_trigger parameters: - $ref: "#/components/parameters/WorkspaceId" - $ref: "#/components/parameters/Path" requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/AzureListTopics" responses: "200": description: topic list content: application/json: schema: type: array items: type: object /w/{workspace}/azure_triggers/namespaces/subscriptions/list/{path}: post: summary: list subscriptions under a Namespace topic operationId: listAzureNamespaceSubscriptions tags: - azure_trigger parameters: - $ref: "#/components/parameters/WorkspaceId" - $ref: "#/components/parameters/Path" requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/AzureListSubscriptions" responses: "200": description: subscription list content: application/json: schema: type: array items: type: object /w/{workspace}/azure_triggers/subscriptions/delete/{path}: delete: summary: delete an Event Grid subscription on Azure operationId: deleteAzureSubscription tags: - azure_trigger parameters: - $ref: "#/components/parameters/WorkspaceId" - $ref: "#/components/parameters/Path" requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/AzureDeleteSubscription" responses: "200": description: subscription deleted content: text/plain: schema: type: string /w/{workspace}/azure_triggers/namespaces/list/{path}: post: summary: list Event Grid Namespaces the service principal can access operationId: listAzureNamespaces tags: - azure_trigger parameters: - $ref: "#/components/parameters/WorkspaceId" - $ref: "#/components/parameters/Path" responses: "200": description: namespace list content: application/json: schema: type: array items: $ref: "#/components/schemas/AzureArmResource" /w/{workspace}/azure_triggers/basic/topics/list/{path}: post: summary: list Basic Event Grid topics + system topics the service principal can access operationId: listAzureBasicTopics tags: - azure_trigger parameters: - $ref: "#/components/parameters/WorkspaceId" - $ref: "#/components/parameters/Path" responses: "200": description: topic list content: application/json: schema: type: array items: $ref: "#/components/schemas/AzureArmResource" /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 - name: label in: query required: false schema: type: string description: Filter by label 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" force: type: boolean description: > Bypass the parent-state conflict warning when enabling a trigger in a fork whose parent has the same path enabled. 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 - name: label in: query required: false schema: type: string description: Filter by label 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" force: type: boolean description: > Bypass the parent-state conflict warning when enabling a trigger in a fork whose parent has the same path enabled. 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/InstanceGroupWithWorkspaces" /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 instance_role: type: string nullable: true description: "Instance-level role for group members. 'superadmin', 'devops', 'user' or empty to clear." 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 default_permissioned_as: $ref: '#/components/schemas/FolderDefaultPermissionedAs' 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 default_permissioned_as: $ref: '#/components/schemas/FolderDefaultPermissionedAs' 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 # parameters: responses: "200": description: List of python versions content: application/json: schema: type: array items: type: string /configs/list_all_workspace_dependencies: get: summary: list all workspace dependencies operationId: listAllWorkspaceDependencies tags: - config responses: "200": description: a list of workspace dependency summaries content: application/json: schema: type: array items: type: object properties: workspace_id: type: string name: type: string language: $ref: "#/components/schemas/ScriptLang" required: - workspace_id - language /configs/list_all_dedicated_with_deps: get: summary: list all dedicated scripts with their dependencies operationId: listAllDedicatedWithDeps tags: - config responses: "200": description: a list of dedicated scripts with workspace dependencies content: application/json: schema: type: array items: type: object properties: workspace_id: type: string path: type: string language: $ref: "#/components/schemas/ScriptLang" workspace_dep_names: type: array items: type: string required: - workspace_id - path - language - workspace_dep_names /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, azure_trigger, sqs_trigger, email_trigger, volume, ] 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, azure_trigger, sqs_trigger, email_trigger, volume, ] 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, azure_trigger, sqs_trigger, email_trigger, volume, ] 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 - name: marker_file description: | If provided, the folder is only considered to exist when this exact sentinel file is present under file_key. Lets callers distinguish a fully populated folder from a partial upload. in: query required: false 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 max_index_time_window_secs: description: Maximum time window in seconds for indexing type: number /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/storage/disk: get: summary: Get index disk storage sizes from the indexer. operationId: getIndexDiskStorageSizes tags: - indexSearch responses: "200": description: disk storage sizes for each index content: application/json: schema: type: object properties: job_index_disk_size_bytes: type: integer nullable: true log_index_disk_size_bytes: type: integer nullable: true /indexer/delete/{idx_name}: delete: summary: Clear an index and restart the indexer. 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 indexer restarting content: text/plain: schema: type: string /indexer/storage: get: summary: Get index storage sizes (disk and S3). operationId: getIndexStorageSizes tags: - indexSearch responses: "200": description: storage sizes for each index content: application/json: schema: type: object properties: job_index: type: object properties: disk_size_bytes: type: integer nullable: true s3_size_bytes: type: integer nullable: true service_log_index: type: object properties: disk_size_bytes: type: integer nullable: true s3_size_bytes: type: integer nullable: true /indexer/status: get: summary: Get indexer status including liveness and storage sizes. operationId: getIndexerStatus tags: - indexSearch responses: "200": description: indexer status for each index content: application/json: schema: type: object properties: job_indexer: type: object properties: is_alive: type: boolean last_locked_at: type: string format: date-time nullable: true owner: type: string nullable: true storage: type: object properties: disk_size_bytes: type: integer nullable: true s3_size_bytes: type: integer nullable: true log_indexer: type: object properties: is_alive: type: boolean last_locked_at: type: string format: date-time nullable: true owner: type: string nullable: true storage: type: object properties: disk_size_bytes: type: integer nullable: true s3_size_bytes: type: integer nullable: true /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 - name: path in: query description: exact path match filter schema: type: string - name: columns in: query description: JSONB subset match filter for columns using base64 encoded JSON schema: type: string - name: broad_filter description: broad search across multiple fields (case-insensitive substring match) in: query 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 /w/{workspace}/volumes/list: get: summary: List all volumes in the workspace operationId: listVolumes tags: - volume parameters: - $ref: "#/components/parameters/WorkspaceId" responses: "200": description: list of volumes content: application/json: schema: type: array items: $ref: "#/components/schemas/Volume" /w/{workspace}/volumes/storage: get: summary: Get the volume storage name (secondary storage) or null for primary operationId: getVolumeStorage tags: - volume parameters: - $ref: "#/components/parameters/WorkspaceId" responses: "200": description: volume storage name or null content: application/json: schema: type: string nullable: true /w/{workspace}/volumes/create: post: summary: Create a new volume operationId: createVolume tags: - volume parameters: - $ref: "#/components/parameters/WorkspaceId" requestBody: required: true content: application/json: schema: type: object required: - name properties: name: type: string responses: "200": description: volume created content: text/plain: schema: type: string /w/{workspace}/volumes/delete/{name}: delete: summary: Delete a volume (admin only) operationId: deleteVolume tags: - volume parameters: - $ref: "#/components/parameters/WorkspaceId" - name: name in: path required: true schema: type: string responses: "200": description: volume deleted content: text/plain: schema: type: string /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: "filter by trigger kind. Supports comma-separated list (e.g. 'schedule,webhook') and negation by prefixing all values with '!' (e.g. '!schedule,!webhook')" in: query x-go-name: JobTriggerKindParam schema: type: string OrderDesc: name: order_desc description: order by desc order (default true) in: query schema: type: boolean CreatedBy: name: created_by description: "filter by exact matching user creator. Supports comma-separated list (e.g. 'alice,bob') and negation by prefixing all values with '!' (e.g. '!alice,!bob')" in: query schema: type: string Label: name: label description: "filter by exact matching job label. Supports comma-separated list (e.g. 'deploy,release') and negation by prefixing all values with '!' (e.g. '!deploy,!release')" in: query schema: type: string Worker: name: worker description: "filter by worker this job ran on. Supports comma-separated list (e.g. 'worker-1,worker-2') and negation by prefixing all values with '!' (e.g. '!worker-1,!worker-2')" 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 Header's key lowercased and '-'' replaced to '_' such that 'Content-Type' becomes the 'content_type' arg key 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 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 `encodeURIComponent(btoa(JSON.stringify({a: 2})))` in: query schema: type: string ScriptStartPath: name: script_path_start description: "filter by script path prefix. Supports comma-separated list (e.g. 'f/folder1,f/folder2') and negation by prefixing all values with '!' (e.g. '!f/folder1,!f/folder2')" 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: "filter by trigger path. Supports comma-separated list (e.g. 'f/trigger1,f/trigger2') and negation by prefixing all values with '!' (e.g. '!f/trigger1,!f/trigger2')" in: query schema: type: string ScriptExactPath: name: script_path_exact description: "filter by exact matching script path. Supports comma-separated list (e.g. 'f/script1,f/script2') and negation by prefixing all values with '!' (e.g. '!f/script1,!f/script2')" 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 by tag/worker group. Supports comma-separated list (e.g. 'gpu,highmem') and negation by prefixing all values with '!' (e.g. '!gpu,!highmem')" 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 by job kind. Supports comma-separated list of values ('preview', 'script', 'dependencies', 'flow') and negation by prefixing all values with '!' (e.g. '!preview,!dependencies')" in: query schema: type: string # correct type is below but explode not supported by our codegen # type: array # items: # type: string # enum: ["preview", "script", "dependencies"] # explode: false 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: # NOTE: Not so many generators and validators support this format: # $ref: "../../openflow.openapi.yaml#/components/schemas" # This is why it is better to inline each of schemas for better compat # Do not change next line. It is used by python-client for pre-processing # -- INLINE START -- OpenFlow: $ref: "../../openflow.openapi.yaml#/components/schemas/OpenFlow" FlowValue: $ref: "../../openflow.openapi.yaml#/components/schemas/FlowValue" Retry: $ref: "../../openflow.openapi.yaml#/components/schemas/Retry" StopAfterIf: $ref: "../../openflow.openapi.yaml#/components/schemas/StopAfterIf" FlowModule: $ref: "../../openflow.openapi.yaml#/components/schemas/FlowModule" InputTransform: $ref: "../../openflow.openapi.yaml#/components/schemas/InputTransform" StaticTransform: $ref: "../../openflow.openapi.yaml#/components/schemas/StaticTransform" JavascriptTransform: $ref: "../../openflow.openapi.yaml#/components/schemas/JavascriptTransform" AiTransform: $ref: "../../openflow.openapi.yaml#/components/schemas/AiTransform" ProviderConfig: $ref: "../../openflow.openapi.yaml#/components/schemas/ProviderConfig" MemoryConfig: $ref: "../../openflow.openapi.yaml#/components/schemas/MemoryConfig" FlowModuleValue: $ref: "../../openflow.openapi.yaml#/components/schemas/FlowModuleValue" RawScript: $ref: "../../openflow.openapi.yaml#/components/schemas/RawScript" PathScript: $ref: "../../openflow.openapi.yaml#/components/schemas/PathScript" PathFlow: $ref: "../../openflow.openapi.yaml#/components/schemas/PathFlow" ForloopFlow: $ref: "../../openflow.openapi.yaml#/components/schemas/ForloopFlow" WhileloopFlow: $ref: "../../openflow.openapi.yaml#/components/schemas/WhileloopFlow" BranchOne: $ref: "../../openflow.openapi.yaml#/components/schemas/BranchOne" BranchAll: $ref: "../../openflow.openapi.yaml#/components/schemas/BranchAll" AiAgent: $ref: "../../openflow.openapi.yaml#/components/schemas/AiAgent" Identity: $ref: "../../openflow.openapi.yaml#/components/schemas/Identity" FlowStatus: $ref: "../../openflow.openapi.yaml#/components/schemas/FlowStatus" FlowStatusModule: $ref: "../../openflow.openapi.yaml#/components/schemas/FlowStatusModule" FlowNote: $ref: "../../openflow.openapi.yaml#/components/schemas/FlowNote" # -- INLINE END -- # Do not change line above CiTestResult: type: object properties: test_script_path: type: string job_id: type: string format: uuid nullable: true status: type: string nullable: true started_at: type: string format: date-time nullable: true required: - test_script_path 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) skip_ssl_verify: type: boolean description: Skip TLS certificate verification when connecting to Vault. Only use for self-signed certificates in development environments. AzureKeyVaultSettings: type: object required: - vault_url - tenant_id - client_id properties: vault_url: type: string description: Azure Key Vault URL (e.g., https://myvault.vault.azure.net) tenant_id: type: string description: Azure AD tenant ID client_id: type: string description: Azure AD application (client) ID client_secret: type: string description: Azure AD client secret token: type: string description: Static Bearer token for testing/development (optional, if provided this is used instead of OAuth2 authentication) AwsSecretsManagerSettings: type: object required: - region properties: region: type: string description: AWS region (e.g., us-east-1) access_key_id: type: string description: AWS Access Key ID (optional, uses default credential chain if not provided) secret_access_key: type: string description: AWS Secret Access Key (optional) endpoint_url: type: string description: Custom endpoint URL for testing (e.g., LocalStack) prefix: type: string description: Prefix for secret names (e.g., windmill/) 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, created_seq] 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 created_seq: type: integer format: int64 description: Monotonic cursor assigned when the message is inserted 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 - workspacedependencies 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 InstanceAIProviderSummary: type: object properties: provider: $ref: "#/components/schemas/AIProvider" models: type: array items: type: string required: - provider - models InstanceAISummary: type: object properties: providers: type: array items: $ref: "#/components/schemas/InstanceAIProviderSummary" default_model: $ref: "#/components/schemas/AIProviderModel" code_completion_model: $ref: "#/components/schemas/AIProviderModel" required: - providers 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 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_secs: type: integer description: If set, delete the job's args, result and logs after this many seconds following job completion visible_to_runner_only: type: boolean auto_kind: type: string codebase: type: string has_preprocessor: type: boolean on_behalf_of_email: type: string modules: type: object nullable: true description: "Additional script modules keyed by relative file path" additionalProperties: $ref: "#/components/schemas/ScriptModule" labels: type: array items: type: string default: [] required: - hash - path - summary - description - content - created_by - created_at - archived - deleted - is_template - extra_perms - language - kind - starred - 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_secs: type: integer description: If set, delete the job's args, result and logs after this many seconds following job completion 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 auto_kind: type: string codebase: type: string has_preprocessor: type: boolean on_behalf_of_email: type: string preserve_on_behalf_of: type: boolean description: "When true and the caller is a member of the 'wm_deployers' group, preserves the original on_behalf_of_email value instead of overwriting it." 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] modules: type: object nullable: true description: "Additional script modules keyed by relative file path" additionalProperties: $ref: "#/components/schemas/ScriptModule" labels: type: array items: type: string required: - path - summary - 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 the execution of this script will be permissioned_as and by extension its DT_TOKEN. flow_status: $ref: "../../openflow.openapi.yaml#/components/schemas/FlowStatus" workflow_as_code_status: $ref: "#/components/schemas/WorkflowStatus" raw_flow: $ref: "../../openflow.openapi.yaml#/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 the execution of this script will be permissioned_as and by extension its DT_TOKEN. flow_status: $ref: "../../openflow.openapi.yaml#/components/schemas/FlowStatus" workflow_as_code_status: $ref: "#/components/schemas/WorkflowStatus" raw_flow: $ref: "../../openflow.openapi.yaml#/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" is_service_account: type: boolean 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 OffboardAffectedPaths: type: object properties: scripts: type: array items: type: string flows: type: array items: type: string apps: type: array items: type: string resources: type: array items: type: string variables: type: array items: type: string schedules: type: array items: type: string triggers: type: object additionalProperties: type: array items: type: string OffboardPreview: type: object properties: owned: $ref: "#/components/schemas/OffboardAffectedPaths" description: "Objects under u/{username}/ that will be reassigned" executing_on_behalf: $ref: "#/components/schemas/OffboardAffectedPaths" description: "Objects not under the user's path but that execute on behalf of this user (permissioned_as/on_behalf_of will be updated)" referencing: $ref: "#/components/schemas/OffboardAffectedPaths" description: "Scripts/flows/apps/resources whose content or value references this user's paths (may break after reassignment)" tokens: type: array items: $ref: "#/components/schemas/OffboardTokenInfo" description: "Tokens owned by this user (will be deleted)" http_triggers: type: integer description: "HTTP triggers under the user's path (webhook URLs will change)" email_triggers: type: integer description: "Email triggers under the user's path (email addresses will change)" required: - owned - executing_on_behalf - referencing - tokens - http_triggers - email_triggers OffboardTokenInfo: type: object properties: label: type: string scopes: type: array items: type: string expiration: type: string required: - label - scopes OffboardRequest: type: object properties: reassign_to: type: string description: "Target for reassignment: 'u/{username}' or 'f/{folder}'" new_on_behalf_of_user: type: string description: "Required when reassign_to is a folder. The username whose identity will be used as permissioned_as for schedules and triggers." delete_user: type: boolean default: true description: "Whether to also remove the user from the workspace" required: - reassign_to OffboardResponse: type: object properties: conflicts: type: array items: type: string description: "List of path conflicts that block the offboarding. Empty on success." summary: $ref: "#/components/schemas/OffboardSummary" OffboardSummary: type: object properties: scripts_reassigned: type: integer flows_reassigned: type: integer apps_reassigned: type: integer resources_reassigned: type: integer variables_reassigned: type: integer schedules_reassigned: type: integer triggers_reassigned: type: integer drafts_deleted: type: integer required: - scripts_reassigned - flows_reassigned - apps_reassigned - resources_reassigned - variables_reassigned - schedules_reassigned - triggers_reassigned - drafts_deleted GlobalOffboardPreview: type: object properties: workspaces: type: array items: $ref: "#/components/schemas/WorkspaceOffboardPreview" required: - workspaces WorkspaceOffboardPreview: type: object properties: workspace_id: type: string username: type: string preview: $ref: "#/components/schemas/OffboardPreview" required: - workspace_id - username - preview GlobalOffboardRequest: type: object properties: reassignments: type: object additionalProperties: $ref: "#/components/schemas/WorkspaceReassignment" description: "Map of workspace_id to reassignment config" delete_user: type: boolean default: true description: "Whether to also remove the user from the instance" WorkspaceReassignment: type: object properties: reassign_to: type: string description: "Target: 'u/{username}' or 'f/{folder}'" new_on_behalf_of_user: type: string description: "Required when reassign_to is a folder. Username to use as permissioned_as." required: - reassign_to 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 workspace_id: type: string required: - token_prefix - created_at - last_used_at ExternalJwtToken: type: object properties: jwt_hash: type: integer format: int64 email: type: string username: type: string is_admin: type: boolean is_operator: type: boolean workspace_id: type: string label: type: string scopes: type: array items: type: string last_used_at: type: string format: date-time required: - jwt_hash - email - username - is_admin - is_operator - 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 labels: type: array items: type: string 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 labels: type: array items: type: string 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 labels: type: array items: type: string 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 auto_kind: type: string nullable: true has_preprocessor: type: boolean nullable: true required: - star_args - start_kwargs - args - type - error - auto_kind - 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, rlang, duckdb, bunnative, # for related places search: ADD_NEW_LANG ] ScriptModule: type: object description: "An additional module file associated with a script" properties: content: type: string description: "The source code content of this module" language: $ref: "#/components/schemas/ScriptLang" lock: type: string nullable: true description: "Lock file content for this module's dependencies" required: - content - language 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 flow_path: type: string modules: type: object nullable: true description: "Additional script modules keyed by relative file path" additionalProperties: $ref: "#/components/schemas/ScriptModule" 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] InlineScriptArgs: type: object properties: args: $ref: "#/components/schemas/ScriptArgs" 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 labels: type: array items: type: string 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 labels: type: array items: type: string 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 labels: type: array items: type: string 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 labels: type: array items: type: string 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 is_fileset: type: boolean required: - name EditResourceType: type: object properties: schema: {} description: type: string is_fileset: type: boolean Schedule: type: object properties: path: type: string description: The unique Windmill path for this schedule. Must be of the form `u//` or `f//`. 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" nullable: true 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 permissioned_as: type: string description: The user or group this schedule runs as (e.g., 'u/admin' or 'g/mygroup') error: type: string nullable: true description: Last error message if the schedule failed to trigger on_failure: type: string nullable: true description: Path to a script or flow to run when the scheduled job fails on_failure_times: type: number nullable: true description: Number of consecutive failures before the on_failure handler is triggered (default 1) on_failure_exact: type: boolean nullable: true 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" nullable: true on_recovery: type: string nullable: true description: Path to a script or flow to run when the schedule recovers after failures on_recovery_times: type: number nullable: true description: Number of consecutive successes before the on_recovery handler is triggered (default 1) on_recovery_extra_args: $ref: "#/components/schemas/ScriptArgs" nullable: true on_success: type: string nullable: true description: Path to a script or flow to run after each successful execution on_success_extra_args: $ref: "#/components/schemas/ScriptArgs" nullable: true 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: "../../openflow.openapi.yaml#/components/schemas/Retry" nullable: true summary: type: string nullable: true description: Short summary describing the purpose of this schedule description: type: string nullable: true 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 nullable: true description: Worker tag to route jobs to specific worker groups paused_until: type: string format: date-time nullable: true description: ISO 8601 datetime until which the schedule is paused. Schedule resumes automatically after this time cron_version: type: string nullable: true description: Cron parser version. Use 'v2' for extended syntax with additional features dynamic_skip: type: string nullable: true description: Path to a script that validates scheduled datetimes. Receives scheduled_for datetime and returns boolean to skip (true) or run (false) labels: type: array items: type: string default: [] required: - path - edited_by - edited_at - schedule - script_path - timezone - extra_perms - is_flow - enabled - email - permissioned_as 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 Windmill path for this schedule. Must be of the form `u//` or `f//`. 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: nullable: true $ref: "#/components/schemas/ScriptArgs" enabled: type: boolean description: Whether the schedule is currently active and will trigger jobs on_failure: type: string nullable: true description: Path to a script or flow to run when the scheduled job fails on_failure_times: type: number nullable: true description: Number of consecutive failures before the on_failure handler is triggered (default 1) on_failure_exact: type: boolean nullable: true description: If true, trigger on_failure handler only on exactly N failures, not on every failure after N on_failure_extra_args: nullable: true $ref: "#/components/schemas/ScriptArgs" on_recovery: type: string nullable: true description: Path to a script or flow to run when the schedule recovers after failures on_recovery_times: type: number nullable: true description: Number of consecutive successes before the on_recovery handler is triggered (default 1) on_recovery_extra_args: nullable: true $ref: "#/components/schemas/ScriptArgs" on_success: type: string nullable: true description: Path to a script or flow to run after each successful execution on_success_extra_args: nullable: true $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: nullable: true $ref: "../../openflow.openapi.yaml#/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 nullable: true description: Short summary describing the purpose of this schedule description: type: string nullable: true description: Detailed description of what this schedule does tag: type: string nullable: true description: Worker tag to route jobs to specific worker groups paused_until: type: string nullable: true format: date-time description: ISO 8601 datetime until which the schedule is paused. Schedule resumes automatically after this time cron_version: type: string nullable: true description: Cron parser version. Use 'v2' for extended syntax with additional features dynamic_skip: type: string nullable: true description: Path to a script that validates scheduled datetimes. Receives scheduled_for datetime and returns boolean to skip (true) or run (false) permissioned_as: type: string description: The user or group this schedule runs as. Used during deployment to preserve the original schedule owner. preserve_permissioned_as: type: boolean description: "When true and the caller is a member of the 'wm_deployers' group, preserves the original permissioned_as value instead of overwriting it." labels: type: array items: type: string 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: nullable: true $ref: "#/components/schemas/ScriptArgs" on_failure: type: string nullable: true description: Path to a script or flow to run when the scheduled job fails on_failure_times: type: number nullable: true description: Number of consecutive failures before the on_failure handler is triggered (default 1) on_failure_exact: type: boolean nullable: true description: If true, trigger on_failure handler only on exactly N failures, not on every failure after N on_failure_extra_args: nullable: true $ref: "#/components/schemas/ScriptArgs" on_recovery: type: string nullable: true description: Path to a script or flow to run when the schedule recovers after failures on_recovery_times: type: number nullable: true description: Number of consecutive successes before the on_recovery handler is triggered (default 1) on_recovery_extra_args: nullable: true $ref: "#/components/schemas/ScriptArgs" on_success: type: string nullable: true description: Path to a script or flow to run after each successful execution on_success_extra_args: nullable: true $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: nullable: true $ref: "../../openflow.openapi.yaml#/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 nullable: true description: Short summary describing the purpose of this schedule description: type: string nullable: true description: Detailed description of what this schedule does tag: type: string nullable: true description: Worker tag to route jobs to specific worker groups paused_until: type: string nullable: true format: date-time description: ISO 8601 datetime until which the schedule is paused. Schedule resumes automatically after this time cron_version: type: string nullable: true description: Cron parser version. Use 'v2' for extended syntax with additional features dynamic_skip: type: string nullable: true description: Path to a script that validates scheduled datetimes. Receives scheduled_for datetime and returns boolean to skip (true) or run (false) permissioned_as: type: string nullable: true description: "The user or group this schedule runs as (e.g., 'u/admin' or 'g/mygroup'). Only admins and wm_deployers can set this via preserve_permissioned_as." preserve_permissioned_as: type: boolean nullable: true description: "If true and user is admin/wm_deployers, preserve the provided permissioned_as instead of using the deploying user's identity" labels: type: array items: type: string 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 - azure - google - github TriggerMode: description: job trigger mode type: string enum: - enabled - disabled - suspended TriggerExtraProperty: type: object properties: path: type: string description: The unique Windmill path for this trigger. Must be of the form `u//` or `f//`. This is the trigger object path, not the HTTP route path. script_path: type: string description: Path to the script or flow to execute when triggered permissioned_as: type: string description: The user or group this trigger runs as (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) labels: type: array items: type: string default: [] required: - path - script_path - permissioned_as - 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 nullable: true 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 nullable: true description: Path to the resource containing authentication configuration (for api_key, basic_http, custom_script, signature methods) summary: type: string nullable: true description: Short summary describing the purpose of this trigger description: type: string nullable: true 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: "../../openflow.openapi.yaml#/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 Windmill path for this trigger. Must be of the form `u//` or `f//`. This is the trigger object path, not the HTTP route path. 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 nullable: true description: Short summary describing the purpose of this trigger description: type: string nullable: true description: Detailed description of what this trigger does static_asset_config: type: object nullable: true 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 nullable: true 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: "../../openflow.openapi.yaml#/components/schemas/Retry" description: Retry configuration for failed executions permissioned_as: type: string description: The user or group this trigger runs as. Used during deployment to preserve the original trigger owner. preserve_permissioned_as: type: boolean description: "When true and the caller is a member of the 'wm_deployers' group, preserves the original permissioned_as value instead of overwriting it." labels: type: array items: type: string 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 Windmill path for this trigger. Must be of the form `u//` or `f//`. This is the trigger object path, not the HTTP route path. 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 nullable: true description: Short summary describing the purpose of this trigger description: type: string nullable: true 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 nullable: true 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 nullable: true 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: "../../openflow.openapi.yaml#/components/schemas/Retry" description: Retry configuration for failed executions permissioned_as: type: string description: The user or group this trigger runs as. Used during deployment to preserve the original trigger owner. preserve_permissioned_as: type: boolean description: "When true and the caller is a member of the 'wm_deployers' group, preserves the original permissioned_as value instead of overwriting it." labels: type: array items: type: string 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 azure_count: type: number sqs_count: type: number nextcloud_count: type: number google_count: type: number github_count: type: number WebsocketHeartbeat: type: object properties: interval_secs: type: integer minimum: 1 description: Interval in seconds between heartbeat messages message: type: string description: >- Message to send as heartbeat. Use {{state}} as a placeholder for a value extracted from incoming messages (see state_field). state_field: type: string description: >- Optional. Top-level JSON field to extract from incoming messages. The extracted value replaces {{state}} in the heartbeat message. required: - interval_secs - message 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 filter_logic: type: string enum: - and - or default: and description: "Logic to apply when evaluating filters. 'and' requires all filters to match, 'or' requires any filter to match." initial_messages: type: array nullable: true 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" nullable: true 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 heartbeat: $ref: "#/components/schemas/WebsocketHeartbeat" nullable: true description: Optional periodic heartbeat message configuration 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: "../../openflow.openapi.yaml#/components/schemas/Retry" required: - url - filters - can_return_message - can_return_error_result NewWebsocketTrigger: type: object properties: path: type: string description: The unique Windmill path for this trigger. Must be of the form `u//` or `f//`. This is the trigger object path, not the HTTP route path. 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 filter_logic: type: string enum: - and - or default: and description: "Logic to apply when evaluating filters. 'and' requires all filters to match, 'or' requires any filter to match." initial_messages: type: array nullable: true 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 nullable: true $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 heartbeat: $ref: "#/components/schemas/WebsocketHeartbeat" nullable: true description: Optional periodic heartbeat message configuration 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: "../../openflow.openapi.yaml#/components/schemas/Retry" permissioned_as: type: string description: The user or group this trigger runs as. Used during deployment to preserve the original trigger owner. preserve_permissioned_as: type: boolean description: "When true and the caller is a member of the 'wm_deployers' group, preserves the original permissioned_as value instead of overwriting it." labels: type: array items: type: string 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 Windmill path for this trigger. Must be of the form `u//` or `f//`. This is the trigger object path, not the HTTP route path. 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 filter_logic: type: string enum: - and - or default: and description: "Logic to apply when evaluating filters. 'and' requires all filters to match, 'or' requires any filter to match." initial_messages: type: array nullable: true 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 nullable: true $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 heartbeat: $ref: "#/components/schemas/WebsocketHeartbeat" nullable: true description: Optional periodic heartbeat message configuration 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: "../../openflow.openapi.yaml#/components/schemas/Retry" permissioned_as: type: string description: The user or group this trigger runs as. Used during deployment to preserve the original trigger owner. preserve_permissioned_as: type: boolean description: "When true and the caller is a member of the 'wm_deployers' group, preserves the original permissioned_as value instead of overwriting it." labels: type: array items: type: string 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" nullable: true description: MQTT v3 specific configuration (clean_session) v5_config: $ref: "#/components/schemas/MqttV5Config" nullable: true description: MQTT v5 specific configuration (clean_start, topic_alias_maximum, session_expiry_interval) client_id: type: string nullable: true description: MQTT client ID for this connection client_version: $ref: "#/components/schemas/MqttClientVersion" nullable: true 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: "../../openflow.openapi.yaml#/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 nullable: true description: MQTT client ID for this connection v3_config: nullable: true $ref: "#/components/schemas/MqttV3Config" description: MQTT v3 specific configuration (clean_session) v5_config: nullable: true $ref: "#/components/schemas/MqttV5Config" description: MQTT v5 specific configuration (clean_start, topic_alias_maximum, session_expiry_interval) client_version: nullable: true $ref: "#/components/schemas/MqttClientVersion" description: MQTT protocol version ('v3' or 'v5') path: type: string description: The unique Windmill path for this trigger. Must be of the form `u//` or `f//`. This is the trigger object path, not the HTTP route path. 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: "../../openflow.openapi.yaml#/components/schemas/Retry" description: Retry configuration for failed executions permissioned_as: type: string description: The user or group this trigger runs as. Used during deployment to preserve the original trigger owner. preserve_permissioned_as: type: boolean description: "When true and the caller is a member of the 'wm_deployers' group, preserves the original permissioned_as value instead of overwriting it." labels: type: array items: type: string 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 nullable: true description: MQTT client ID for this connection v3_config: nullable: true $ref: "#/components/schemas/MqttV3Config" description: MQTT v3 specific configuration (clean_session) v5_config: nullable: true $ref: "#/components/schemas/MqttV5Config" description: MQTT v5 specific configuration (clean_start, topic_alias_maximum, session_expiry_interval) client_version: nullable: true $ref: "#/components/schemas/MqttClientVersion" description: MQTT protocol version ('v3' or 'v5') path: type: string description: The unique Windmill path for this trigger. Must be of the form `u//` or `f//`. This is the trigger object path, not the HTTP route path. 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: "../../openflow.openapi.yaml#/components/schemas/Retry" description: Retry configuration for failed executions permissioned_as: type: string description: The user or group this trigger runs as. Used during deployment to preserve the original trigger owner. preserve_permissioned_as: type: boolean description: "When true and the caller is a member of the 'wm_deployers' group, preserves the original permissioned_as value instead of overwriting it." labels: type: array items: type: string 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" nullable: true 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: "../../openflow.openapi.yaml#/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: nullable: true $ref: "#/components/schemas/PushConfig" path: type: string description: "The unique Windmill path for this trigger. Must be of the form `u//` or `f//`. This is the trigger object path, not the HTTP route path." 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: "../../openflow.openapi.yaml#/components/schemas/Retry" description: "Retry configuration for failed executions." permissioned_as: type: string description: The user or group this trigger runs as. Used during deployment to preserve the original trigger owner. preserve_permissioned_as: type: boolean description: "When true and the caller is a member of the 'wm_deployers' group, preserves the original permissioned_as value instead of overwriting it." labels: type: array items: type: string 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 AzureMode: type: string enum: - basic_push - namespace_push - namespace_pull description: "Azure Event Grid trigger mode." AzureArmResource: type: object description: "An ARM resource the service principal can see." properties: id: type: string name: type: string location: type: string type: type: string required: - id - name - type AzureDeleteSubscription: type: object properties: azure_mode: $ref: "#/components/schemas/AzureMode" scope_resource_id: type: string topic_name: type: string nullable: true subscription_name: type: string required: - azure_mode - scope_resource_id - subscription_name AzureTrigger: allOf: - $ref: "#/components/schemas/TriggerExtraProperty" type: object description: "An Azure Event Grid trigger that executes a script or flow when events arrive." properties: azure_resource_path: type: string azure_mode: $ref: "#/components/schemas/AzureMode" scope_resource_id: type: string description: "ARM resource ID of the topic (basic) or namespace (namespace modes)." topic_name: type: string nullable: true description: "Topic name within the namespace (namespace modes only)." subscription_name: type: string event_type_filters: type: array items: type: string nullable: true server_id: type: string last_server_ping: type: string format: date-time error: type: string error_handler_path: type: string error_handler_args: $ref: "#/components/schemas/ScriptArgs" retry: $ref: "../../openflow.openapi.yaml#/components/schemas/Retry" required: - azure_resource_path - azure_mode - scope_resource_id - subscription_name AzureTriggerData: type: object description: "Data for creating or updating an Azure Event Grid trigger." properties: azure_resource_path: type: string azure_mode: $ref: "#/components/schemas/AzureMode" scope_resource_id: type: string topic_name: type: string nullable: true subscription_name: type: string base_endpoint: type: string description: "Base URL for push delivery endpoints (push modes only)." event_type_filters: type: array items: type: string path: type: string description: The unique Windmill path for this trigger. Must be of the form `u//` or `f//`. This is the trigger object path, not the HTTP route path. script_path: type: string is_flow: type: boolean mode: $ref: "#/components/schemas/TriggerMode" error_handler_path: type: string error_handler_args: $ref: "#/components/schemas/ScriptArgs" retry: $ref: "../../openflow.openapi.yaml#/components/schemas/Retry" permissioned_as: type: string preserve_permissioned_as: type: boolean labels: type: array items: type: string required: - path - script_path - is_flow - azure_resource_path - azure_mode - scope_resource_id - subscription_name TestAzureConnection: type: object properties: azure_resource_path: type: string required: - azure_resource_path AzureListTopics: type: object properties: scope_resource_id: type: string required: - scope_resource_id AzureListSubscriptions: type: object properties: scope_resource_id: type: string topic_name: type: string required: - scope_resource_id - topic_name 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 nullable: true 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: "../../openflow.openapi.yaml#/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 nullable: true items: type: string description: Array of SQS message attribute names to include with each message path: type: string description: The unique Windmill path for this trigger. Must be of the form `u//` or `f//`. This is the trigger object path, not the HTTP route path. 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: "../../openflow.openapi.yaml#/components/schemas/Retry" description: Retry configuration for failed executions permissioned_as: type: string description: The user or group this trigger runs as. Used during deployment to preserve the original trigger owner. preserve_permissioned_as: type: boolean description: "When true and the caller is a member of the 'wm_deployers' group, preserves the original permissioned_as value instead of overwriting it." labels: type: array items: type: string 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 nullable: true items: type: string description: Array of SQS message attribute names to include with each message path: type: string description: The unique Windmill path for this trigger. Must be of the form `u//` or `f//`. This is the trigger object path, not the HTTP route path. 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: "../../openflow.openapi.yaml#/components/schemas/Retry" description: Retry configuration for failed executions permissioned_as: type: string description: The user or group this trigger runs as. Used during deployment to preserve the original trigger owner. preserve_permissioned_as: type: boolean description: "When true and the caller is a member of the 'wm_deployers' group, preserves the original permissioned_as value instead of overwriting it." labels: type: array items: type: string 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: "../../openflow.openapi.yaml#/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 Windmill path for this trigger. Must be of the form `u//` or `f//`. This is the trigger object path, not the HTTP route path. 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: "../../openflow.openapi.yaml#/components/schemas/Retry" description: Retry configuration for failed executions permissioned_as: type: string description: The user or group this trigger runs as. Used during deployment to preserve the original trigger owner. preserve_permissioned_as: type: boolean description: "When true and the caller is a member of the 'wm_deployers' group, preserves the original permissioned_as value instead of overwriting it." labels: type: array items: type: string 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 Windmill path for this trigger. Must be of the form `u//` or `f//`. This is the trigger object path, not the HTTP route path. 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: "../../openflow.openapi.yaml#/components/schemas/Retry" description: Retry configuration for failed executions permissioned_as: type: string description: The user or group this trigger runs as. Used during deployment to preserve the original trigger owner. preserve_permissioned_as: type: boolean description: "When true and the caller is a member of the 'wm_deployers' group, preserves the original permissioned_as value instead of overwriting it." labels: type: array items: type: string 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 filter_logic: type: string enum: - and - or default: and description: "Logic to apply when evaluating filters. 'and' requires all filters to match, 'or' requires any filter to match." auto_offset_reset: type: string enum: - latest - earliest default: latest description: "Initial offset behavior when consumer group has no committed offset. 'latest' starts from new messages only, 'earliest' starts from the beginning." auto_commit: type: boolean default: true description: "When true (default), offsets are committed automatically after receiving each message. When false, you must manually commit offsets using the commit_offsets endpoint." 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: "../../openflow.openapi.yaml#/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 Windmill path for this trigger. Must be of the form `u//` or `f//`. This is the trigger object path, not the HTTP route path. 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 filter_logic: type: string enum: - and - or default: and description: "Logic to apply when evaluating filters. 'and' requires all filters to match, 'or' requires any filter to match." auto_offset_reset: type: string enum: - latest - earliest default: latest description: "Initial offset behavior when consumer group has no committed offset." auto_commit: type: boolean default: true description: "When true (default), offsets are committed automatically after receiving each message. When false, you must manually commit offsets using the commit_offsets endpoint." 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: "../../openflow.openapi.yaml#/components/schemas/Retry" description: Retry configuration for failed executions permissioned_as: type: string description: The user or group this trigger runs as. Used during deployment to preserve the original trigger owner. preserve_permissioned_as: type: boolean description: "When true and the caller is a member of the 'wm_deployers' group, preserves the original permissioned_as value instead of overwriting it." labels: type: array items: type: string 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 filter_logic: type: string enum: - and - or default: and description: "Logic to apply when evaluating filters. 'and' requires all filters to match, 'or' requires any filter to match." auto_offset_reset: type: string enum: - latest - earliest default: latest description: "Initial offset behavior when consumer group has no committed offset." auto_commit: type: boolean default: true description: "When true (default), offsets are committed automatically after receiving each message. When false, you must manually commit offsets using the commit_offsets endpoint." path: type: string description: The unique Windmill path for this trigger. Must be of the form `u//` or `f//`. This is the trigger object path, not the HTTP route path. 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: "../../openflow.openapi.yaml#/components/schemas/Retry" description: Retry configuration for failed executions permissioned_as: type: string description: The user or group this trigger runs as. Used during deployment to preserve the original trigger owner. preserve_permissioned_as: type: boolean description: "When true and the caller is a member of the 'wm_deployers' group, preserves the original permissioned_as value instead of overwriting it." labels: type: array items: type: string 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 nullable: true description: JetStream stream name (required when use_jetstream is true) consumer_name: type: string nullable: true 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: "../../openflow.openapi.yaml#/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 Windmill path for this trigger. Must be of the form `u//` or `f//`. This is the trigger object path, not the HTTP route path. 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 nullable: true description: JetStream stream name (required when use_jetstream is true) consumer_name: type: string nullable: true 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: "../../openflow.openapi.yaml#/components/schemas/Retry" description: Retry configuration for failed executions permissioned_as: type: string description: The user or group this trigger runs as. Used during deployment to preserve the original trigger owner. preserve_permissioned_as: type: boolean description: "When true and the caller is a member of the 'wm_deployers' group, preserves the original permissioned_as value instead of overwriting it." labels: type: array items: type: string 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 nullable: true description: JetStream stream name (required when use_jetstream is true) consumer_name: type: string nullable: true 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 Windmill path for this trigger. Must be of the form `u//` or `f//`. This is the trigger object path, not the HTTP route path. 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: "../../openflow.openapi.yaml#/components/schemas/Retry" description: Retry configuration for failed executions permissioned_as: type: string description: The user or group this trigger runs as. Used during deployment to preserve the original trigger owner. preserve_permissioned_as: type: boolean description: "When true and the caller is a member of the 'wm_deployers' group, preserves the original permissioned_as value instead of overwriting it." labels: type: array items: type: string 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: "../../openflow.openapi.yaml#/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: "../../openflow.openapi.yaml#/components/schemas/Retry" mode: $ref: "#/components/schemas/TriggerMode" permissioned_as: type: string description: The user or group this trigger runs as. Used during deployment to preserve the original trigger owner. preserve_permissioned_as: type: boolean description: "When true and the caller is a member of the 'wm_deployers' group, preserves the original permissioned_as value instead of overwriting it." labels: type: array items: type: string 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: "../../openflow.openapi.yaml#/components/schemas/Retry" permissioned_as: type: string description: The user or group this trigger runs as. Used during deployment to preserve the original trigger owner. preserve_permissioned_as: type: boolean description: "When true and the caller is a member of the 'wm_deployers' group, preserves the original permissioned_as value instead of overwriting it." labels: type: array items: type: string 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 instance_role: type: string nullable: true enum: - superadmin - devops InstanceGroupWithWorkspaces: type: object required: - name properties: name: type: string summary: type: string emails: type: array items: type: string instance_role: type: string nullable: true enum: - superadmin - devops 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 default_permissioned_as: $ref: '#/components/schemas/FolderDefaultPermissionedAs' required: - name - owners - extra_perms FolderDefaultPermissionedAs: description: > Ordered list of rules applied at create-time when admins or `wm_deployers` members deploy items in this folder. The first rule whose `path_glob` matches the item path (relative to the folder root) wins, and its `permissioned_as` is used as the default. type: array items: type: object required: - path_glob - permissioned_as properties: path_glob: type: string description: > Glob pattern evaluated against the item path *relative* to the folder root (e.g. "jobs/**" matches every item whose full path is `f//jobs/...`). Supports `*`, `**`, `?`, `[abc]`, `{a,b}`. permissioned_as: type: string description: > Target identity the matched item should be permissioned as. Must be `u/`, `g/`, or an email that exists in this workspace. 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 native_mode: type: boolean 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 forked_datatables: type: array items: type: object required: [name, new_dbname] properties: name: type: string description: "Datatable name" new_dbname: type: string description: "New database name for the fork" 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 role_source: type: string enum: ["manual", "instance_group"] disabled: type: boolean required: - email - login_type - super_admin - verified - first_time_user - role_source - disabled Flow: allOf: - $ref: "../../openflow.openapi.yaml#/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 labels: type: array items: type: string default: [] required: - path - edited_by - edited_at - archived - extra_perms OpenFlowWPath: allOf: - $ref: "../../openflow.openapi.yaml#/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 preserve_on_behalf_of: type: boolean description: "When true and the caller is a member of the 'wm_deployers' group, preserves the original on_behalf_of_email value instead of overwriting it." labels: type: array items: type: string required: - path FlowPreview: type: object properties: value: $ref: "../../openflow.openapi.yaml#/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 description: 0-based iteration index for ForLoop / branch index for BranchAll. Iterations 0..n-1 are preserved; iteration n is restarted. flow_version: type: integer branch_chosen: description: For BranchOne nested restart — the branch that was originally chosen, used to lock branch evaluation. type: object properties: type: type: string enum: [default, branch] branch: type: integer nested: $ref: "#/components/schemas/RestartedFrom" description: When set, the worker spawns the child for `step_id` as a `RestartedFlow` against `nested.flow_job_id` instead of fresh-launching it. 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 labels: type: array items: type: string default: [] 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 labels: type: array items: type: string default: [] 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 labels: type: array items: type: string default: [] 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: type: object properties: id: type: string name: type: string required: - id - name required: - access_token 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 forked_from: type: object description: Fork origin info with schema snapshot properties: schema: type: object description: Schema snapshot at fork time additionalProperties: true 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 DataTableTables: type: object required: [datatable_name, schemas] properties: datatable_name: type: string schemas: type: object description: "Hierarchical metadata: schema_name -> table_names" additionalProperties: type: array items: type: string error: type: string DataTableTableSchema: type: object required: [datatable_name, schema_name, table_name, columns] properties: datatable_name: type: string schema_name: type: string table_name: type: string columns: type: object description: "Columns in this table: column_name -> compact_type" additionalProperties: type: string description: "Compact type: 'type[?][=default]' where ? means nullable" 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 # comma separated permissions : "read,write,delete,list" 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: - 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 InstanceConfig: type: object description: Unified instance configuration combining global settings and worker group configs properties: global_settings: type: object description: > Global settings keyed by setting name. Known fields include base_url, license_key, retention_period_secs, smtp_settings, otel, etc. Unknown fields are preserved as-is. additionalProperties: true worker_configs: type: object description: > Worker group configurations keyed by group name (e.g. "default", "gpu"). Each value contains worker_tags, init_bash, autoscaling, etc. additionalProperties: type: object additionalProperties: true 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 instance_role: type: string nullable: true enum: - superadmin - devops 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, azure, 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", "raw_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 - volume Asset: type: object properties: path: type: string kind: $ref: "#/components/schemas/AssetKind" required: [path, kind] Volume: type: object required: - name - size_bytes - file_count - created_at - created_by properties: name: type: string size_bytes: type: integer format: int64 file_count: type: integer created_at: type: string format: date-time created_by: type: string updated_at: type: string format: date-time nullable: true last_used_at: type: string format: date-time nullable: true extra_perms: type: object additionalProperties: true 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 - RestrictDeployToDeployers 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 DeploymentRequestEligibleDeployer: type: object required: - username - email - is_admin properties: username: type: string email: type: string is_admin: type: boolean DeploymentRequestAssignee: type: object required: - username - email properties: username: type: string email: type: string DeploymentRequestComment: type: object required: - id - author - author_email - body - obsolete - created_at properties: id: type: integer format: int64 parent_id: type: integer format: int64 nullable: true author: type: string author_email: type: string body: type: string anchor_kind: type: string nullable: true anchor_path: type: string nullable: true obsolete: type: boolean created_at: type: string format: date-time DeploymentRequest: type: object required: - id - source_workspace_id - fork_workspace_id - requested_by - requested_by_email - requested_at - assignees - comments properties: id: type: integer format: int64 source_workspace_id: type: string fork_workspace_id: type: string requested_by: type: string requested_by_email: type: string requested_at: type: string format: date-time assignees: type: array items: $ref: "#/components/schemas/DeploymentRequestAssignee" comments: type: array items: $ref: "#/components/schemas/DeploymentRequestComment" QuotaInfo: type: object properties: used: type: integer limit: type: integer prunable: type: integer required: - used - limit - prunable NativeServiceName: type: string enum: - nextcloud - google - github 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 summary: type: string nullable: true description: Short summary to be displayed when listed 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 summary: type: string nullable: true description: Short summary to be displayed when listed 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" resource_path: type: string nullable: true description: Path to the resource storing the OAuth token 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 summary: type: string nullable: true description: Short summary to be displayed when listed 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 GoogleCalendarEntry: type: object properties: id: type: string summary: type: string primary: type: boolean default: false required: - id - summary GoogleDriveFile: type: object properties: id: type: string name: type: string mime_type: type: string is_folder: type: boolean default: false required: - id - name - mime_type GoogleDriveFilesResponse: type: object properties: files: type: array items: $ref: "#/components/schemas/GoogleDriveFile" next_page_token: type: string required: - files SharedDriveEntry: type: object properties: id: type: string name: type: string required: - id - name GithubRepoEntry: type: object properties: full_name: type: string name: type: string owner: type: string private: type: boolean required: - full_name - name - owner - private