openapi: 3.0.3
info:
version: 1.683.2
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/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
/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
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_settings:
get:
summary: get settings
operationId: getSettings
tags:
- workspace
parameters:
- $ref: '#/components/parameters/WorkspaceId'
responses:
'200':
description: status
content:
application/json:
schema:
type: object
properties:
workspace_id:
type: string
slack_name:
type: string
slack_team_id:
type: string
slack_command_script:
type: string
slack_oauth_client_id:
type: string
slack_oauth_client_secret:
type: string
teams_team_id:
type: string
teams_command_script:
type: string
teams_team_name:
type: string
teams_team_guid:
type: string
auto_invite:
$ref: '#/components/schemas/AutoInviteConfig'
plan:
type: string
customer_id:
type: string
webhook:
type: string
deploy_to:
type: string
ai_config:
$ref: '#/components/schemas/AIConfig'
error_handler:
$ref: '#/components/schemas/ErrorHandlerConfig'
success_handler:
$ref: '#/components/schemas/SuccessHandlerConfig'
large_file_storage:
$ref: '#/components/schemas/LargeFileStorage'
ducklake:
$ref: '#/components/schemas/DucklakeSettings'
datatable:
$ref: '#/components/schemas/DataTableSettings'
git_sync:
$ref: '#/components/schemas/WorkspaceGitSyncSettings'
deploy_ui:
$ref: '#/components/schemas/WorkspaceDeployUISettings'
default_app:
type: string
default_scripts:
$ref: '#/components/schemas/WorkspaceDefaultScripts'
mute_critical_alerts:
type: boolean
color:
type: string
operator_settings:
$ref: '#/components/schemas/OperatorSettings'
public_app_execution_limit_per_minute:
type: integer
description: Rate limit for public app executions per minute per server. NULL or 0 means disabled.
/w/{workspace}/workspaces/get_deploy_to:
get:
summary: get deploy to
operationId: getDeployTo
tags:
- workspace
parameters:
- $ref: '#/components/parameters/WorkspaceId'
responses:
'200':
description: status
content:
application/json:
schema:
type: object
properties:
deploy_to:
type: string
/w/{workspace}/workspaces/is_premium:
get:
summary: get if workspace is premium
operationId: getIsPremium
tags:
- workspace
parameters:
- $ref: '#/components/parameters/WorkspaceId'
responses:
'200':
description: status
content:
application/json:
schema:
type: boolean
/w/{workspace}/workspaces/premium_info:
get:
summary: get premium info
operationId: getPremiumInfo
tags:
- workspace
parameters:
- $ref: '#/components/parameters/WorkspaceId'
- name: skip_subscription_fetch
in: query
description: skip fetching subscription status from stripe
schema:
type: boolean
responses:
'200':
description: status
content:
application/json:
schema:
type: object
properties:
premium:
type: boolean
usage:
type: number
owner:
type: string
status:
type: string
is_past_due:
type: boolean
max_tolerated_executions:
type: number
required:
- premium
- owner
- is_past_due
/w/{workspace}/workspaces/threshold_alert:
get:
summary: get threshold alert info
operationId: getThresholdAlert
tags:
- workspace
parameters:
- $ref: '#/components/parameters/WorkspaceId'
responses:
'200':
description: status
content:
application/json:
schema:
type: object
properties:
threshold_alert_amount:
type: number
last_alert_sent:
type: string
format: date-time
post:
summary: set threshold alert info
operationId: setThresholdAlert
tags:
- workspace
parameters:
- $ref: '#/components/parameters/WorkspaceId'
requestBody:
description: threshold alert info
required: true
content:
application/json:
schema:
type: object
properties:
threshold_alert_amount:
type: number
responses:
'200':
description: status
content:
text/plain:
schema:
type: string
/w/{workspace}/workspaces/rebuild_dependency_map:
post:
summary: rebuild dependency map
operationId: rebuildDependencyMap
tags:
- workspace
parameters:
- $ref: '#/components/parameters/WorkspaceId'
responses:
'200':
description: status
content:
text/plain:
schema:
type: string
/w/{workspace}/workspaces/get_dependents/{imported_path}:
get:
summary: get dependents of an imported path
operationId: getDependents
tags:
- workspace
parameters:
- $ref: '#/components/parameters/WorkspaceId'
- name: imported_path
in: path
required: true
schema:
type: string
description: The imported path to get dependents for
responses:
'200':
description: list of dependents
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/DependencyDependent'
/w/{workspace}/workspaces/get_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/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/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
sqs_used:
type: boolean
email_used:
type: boolean
nextcloud_used:
type: boolean
google_used:
type: boolean
required:
- http_routes_used
- websocket_used
- kafka_used
- nats_used
- postgres_used
- mqtt_used
- gcp_used
- sqs_used
- email_used
- nextcloud_used
- google_used
/w/{workspace}/users/list:
get:
summary: list users
operationId: listUsers
tags:
- user
parameters:
- $ref: '#/components/parameters/WorkspaceId'
responses:
'200':
description: user
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/User'
/w/{workspace}/users/list_usage:
get:
summary: list users usage
operationId: listUsersUsage
tags:
- user
parameters:
- $ref: '#/components/parameters/WorkspaceId'
responses:
'200':
description: user
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/UserUsage'
/w/{workspace}/users/list_usernames:
get:
summary: list usernames
operationId: listUsernames
tags:
- user
parameters:
- $ref: '#/components/parameters/WorkspaceId'
responses:
'200':
description: user
content:
application/json:
schema:
type: array
items:
type: string
/w/{workspace}/users/username_to_email/{username}:
get:
summary: get email from username
operationId: usernameToEmail
tags:
- user
parameters:
- $ref: '#/components/parameters/WorkspaceId'
- name: username
in: path
required: true
schema:
type: string
responses:
'200':
description: email
content:
text/plain:
schema:
type: string
/tokens/list/scopes:
get:
summary: list of available scopes
operationId: ListAvailableScopes
tags:
- token
responses:
'200':
description: list of available scopes
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/ScopeDomain'
/users/tokens/create:
post:
summary: create token
operationId: createToken
tags:
- user
requestBody:
description: new token
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/NewToken'
responses:
'201':
description: token created
content:
text/plain:
schema:
type: string
/users/tokens/impersonate:
post:
summary: create token to impersonate a user (require superadmin)
operationId: createTokenImpersonate
tags:
- user
requestBody:
description: new token
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/NewTokenImpersonate'
responses:
'201':
description: token created
content:
text/plain:
schema:
type: string
/users/tokens/delete/{token_prefix}:
delete:
summary: delete token
operationId: deleteToken
tags:
- user
parameters:
- name: token_prefix
in: path
required: true
schema:
type: string
responses:
'200':
description: delete token
content:
text/plain:
schema:
type: string
/users/tokens/list:
get:
summary: list token
operationId: listTokens
tags:
- user
parameters:
- name: exclude_ephemeral
in: query
schema:
type: boolean
- $ref: '#/components/parameters/Page'
- $ref: '#/components/parameters/PerPage'
responses:
'200':
description: truncated token
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/TruncatedToken'
/w/{workspace}/oidc/token/{audience}:
post:
summary: get OIDC token (ee only)
operationId: getOidcToken
tags:
- oidc
parameters:
- $ref: '#/components/parameters/WorkspaceId'
- name: audience
in: path
required: true
schema:
type: string
- name: expires_in
in: query
schema:
type: number
responses:
'200':
description: new oidc token
content:
text/plain:
schema:
type: string
/w/{workspace}/variables/create:
post:
summary: create variable
operationId: createVariable
x-mcp-tool: true
tags:
- variable
parameters:
- $ref: '#/components/parameters/WorkspaceId'
- name: already_encrypted
description: whether the variable is already encrypted (default false)
in: query
schema:
type: boolean
requestBody:
description: new variable
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateVariable'
responses:
'201':
description: variable created
content:
text/plain:
schema:
type: string
/w/{workspace}/variables/encrypt:
post:
summary: encrypt value
operationId: encryptValue
tags:
- variable
parameters:
- $ref: '#/components/parameters/WorkspaceId'
requestBody:
description: new variable
required: true
content:
application/json:
schema:
type: string
responses:
'200':
description: encrypted value
content:
text/plain:
schema:
type: string
/w/{workspace}/variables/delete/{path}:
delete:
summary: delete variable
operationId: deleteVariable
x-mcp-tool: true
tags:
- variable
parameters:
- $ref: '#/components/parameters/WorkspaceId'
- $ref: '#/components/parameters/Path'
responses:
'200':
description: variable deleted
content:
text/plain:
schema:
type: string
/w/{workspace}/variables/delete_bulk:
delete:
summary: delete variables in bulk
operationId: deleteVariablesBulk
tags:
- variable
parameters:
- $ref: '#/components/parameters/WorkspaceId'
requestBody:
description: paths to delete
required: true
content:
application/json:
schema:
type: object
properties:
paths:
type: array
items:
type: string
required:
- paths
responses:
'200':
description: deleted paths
content:
application/json:
schema:
type: array
items:
type: string
/w/{workspace}/variables/update/{path}:
post:
summary: update variable
operationId: updateVariable
x-mcp-tool: true
tags:
- variable
parameters:
- $ref: '#/components/parameters/WorkspaceId'
- $ref: '#/components/parameters/Path'
- name: already_encrypted
description: whether the variable is already encrypted (default false)
in: query
schema:
type: boolean
requestBody:
description: updated variable
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/EditVariable'
responses:
'200':
description: variable updated
content:
text/plain:
schema:
type: string
/w/{workspace}/variables/get/{path}:
get:
summary: get variable
operationId: getVariable
x-mcp-tool: true
tags:
- variable
parameters:
- $ref: '#/components/parameters/WorkspaceId'
- $ref: '#/components/parameters/Path'
- name: decrypt_secret
description: |
ask to decrypt secret if this variable is secret
(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_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
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
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:
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_conversation
parameters:
- $ref: '#/components/parameters/WorkspaceId'
- $ref: '#/components/parameters/Page'
- $ref: '#/components/parameters/PerPage'
- name: flow_path
description: filter conversations by flow path
in: query
schema:
type: string
responses:
'200':
description: flow conversations list
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/FlowConversation'
/w/{workspace}/flow_conversations/delete/{conversation_id}:
delete:
summary: delete flow conversation
operationId: deleteFlowConversation
tags:
- flow_conversation
parameters:
- $ref: '#/components/parameters/WorkspaceId'
- name: conversation_id
description: conversation id
in: path
required: true
schema:
type: string
format: uuid
responses:
'200':
description: flow conversation deleted
content:
text/plain:
schema:
type: string
/w/{workspace}/flow_conversations/{conversation_id}/messages:
get:
summary: list conversation messages
operationId: listConversationMessages
tags:
- flow_conversation
parameters:
- $ref: '#/components/parameters/WorkspaceId'
- $ref: '#/components/parameters/Page'
- $ref: '#/components/parameters/PerPage'
- name: conversation_id
description: conversation id
in: path
required: true
schema:
type: string
format: uuid
- name: after_id
description: id to fetch only the messages after that id
in: query
required: false
schema:
type: string
format: uuid
responses:
'200':
description: conversation messages
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/FlowConversationMessage'
/w/{workspace}/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}/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/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/custom_path_exists/{custom_path}:
get:
summary: check if custom path exists
operationId: customPathExists
tags:
- app
parameters:
- $ref: '#/components/parameters/WorkspaceId'
- $ref: '#/components/parameters/CustomPath'
responses:
'200':
description: custom path exists
content:
application/json:
schema:
type: boolean
/w/{workspace}/apps/sign_s3_objects:
post:
summary: sign s3 objects, to be used by anonymous users in public apps
operationId: signS3Objects
tags:
- app
parameters:
- $ref: '#/components/parameters/WorkspaceId'
requestBody:
description: s3 objects to sign
required: true
content:
application/json:
schema:
type: object
properties:
s3_objects:
type: array
items:
$ref: '#/components/schemas/S3Object'
required:
- s3_objects
responses:
'200':
description: signed s3 objects
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/S3Object'
/w/{workspace}/apps_u/execute_component/{path}:
post:
summary: executeComponent
operationId: executeComponent
tags:
- app
parameters:
- $ref: '#/components/parameters/WorkspaceId'
- $ref: '#/components/parameters/ScriptPath'
requestBody:
description: update app
required: true
content:
application/json:
schema:
type: object
properties:
component:
type: string
path:
type: string
version:
type: integer
args: {}
raw_code:
type: object
properties:
content:
type: string
language:
type: string
path:
type: string
lock:
type: string
cache_ttl:
type: integer
required:
- content
- language
id:
type: integer
force_viewer_static_fields:
type: object
force_viewer_one_of_fields:
type: object
force_viewer_allow_user_resources:
type: array
items:
type: string
run_query_params:
type: object
description: Runnable query parameters
required:
- args
- component
responses:
'200':
description: job uuid
content:
text/plain:
schema:
type: string
/w/{workspace}/apps_u/upload_s3_file/{path}:
post:
summary: upload s3 file from app
operationId: uploadS3FileFromApp
tags:
- app
parameters:
- $ref: '#/components/parameters/WorkspaceId'
- $ref: '#/components/parameters/Path'
- name: file_key
in: query
required: false
schema:
type: string
- name: file_extension
in: query
required: false
schema:
type: string
- name: s3_resource_path
in: query
required: false
schema:
type: string
- name: resource_type
in: query
required: false
schema:
type: string
- name: storage
in: query
schema:
type: string
- name: content_type
in: query
schema:
type: string
- name: content_disposition
in: query
schema:
type: string
requestBody:
description: File content
required: true
content:
application/octet-stream:
schema:
type: string
format: binary
responses:
'200':
description: file uploaded
content:
application/json:
schema:
type: object
properties:
file_key:
type: string
delete_token:
type: string
required:
- file_key
- delete_token
/w/{workspace}/apps_u/delete_s3_file:
delete:
summary: delete s3 file from app
operationId: deleteS3FileFromApp
tags:
- app
parameters:
- $ref: '#/components/parameters/WorkspaceId'
- name: delete_token
in: query
required: true
schema:
type: string
responses:
'200':
description: file deleted
content:
text/plain:
schema:
type: string
/w/{workspace}/jobs/run/f/{path}:
post:
summary: run flow by path
operationId: runFlowByPath
x-mcp-tool: true
x-mcp-instructions: You should first use getFlowByPath to retrieve the flow's schema and understand what arguments are expected.
x-mcp-tool-include-query-params: []
tags:
- job
parameters:
- $ref: '#/components/parameters/WorkspaceId'
- $ref: '#/components/parameters/ScriptPath'
- name: scheduled_for
description: when to schedule this job (leave empty for immediate run)
in: query
schema:
type: string
format: date-time
- name: scheduled_in_secs
description: schedule the script to execute in the number of seconds starting now
in: query
schema:
type: integer
- $ref: '#/components/parameters/SkipPreprocessor'
- $ref: '#/components/parameters/ParentJob'
- $ref: '#/components/parameters/WorkerTag'
- $ref: '#/components/parameters/NewJobId'
- $ref: '#/components/parameters/IncludeHeader'
- name: invisible_to_owner
description: make the run invisible to the the flow owner (default false)
in: query
schema:
type: boolean
- name: memory_id
description: memory ID for chat-enabled flows
in: query
schema:
type: string
format: uuid
requestBody:
description: flow args
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ScriptArgs'
responses:
'201':
description: job created
content:
text/plain:
schema:
type: string
format: uuid
/w/{workspace}/jobs/run/fv/{version}:
post:
summary: run flow by version
operationId: runFlowByVersion
tags:
- job
parameters:
- $ref: '#/components/parameters/WorkspaceId'
- name: version
description: flow version ID
in: path
required: true
schema:
type: integer
format: int64
- name: scheduled_for
description: when to schedule this job (leave empty for immediate run)
in: query
schema:
type: string
format: date-time
- name: scheduled_in_secs
description: schedule the script to execute in the number of seconds starting now
in: query
schema:
type: integer
- $ref: '#/components/parameters/SkipPreprocessor'
- $ref: '#/components/parameters/ParentJob'
- $ref: '#/components/parameters/WorkerTag'
- $ref: '#/components/parameters/NewJobId'
- $ref: '#/components/parameters/IncludeHeader'
- name: invisible_to_owner
description: make the run invisible to the the flow owner (default false)
in: query
schema:
type: boolean
- name: memory_id
description: memory ID for chat-enabled flows
in: query
schema:
type: string
format: uuid
requestBody:
description: flow args
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ScriptArgs'
responses:
'201':
description: job created
content:
text/plain:
schema:
type: string
format: uuid
/w/{workspace}/jobs/run/batch_rerun_jobs:
post:
summary: re-run multiple jobs
operationId: batchReRunJobs
tags:
- job
parameters:
- $ref: '#/components/parameters/WorkspaceId'
requestBody:
description: list of job ids to re run and arg tranforms
required: true
content:
application/json:
schema:
type: object
required:
- job_ids
- script_options_by_path
- flow_options_by_path
properties:
job_ids:
type: array
items:
type: string
script_options_by_path:
type: object
additionalProperties:
type: object
properties:
input_transforms:
type: object
additionalProperties:
$ref: '#/components/schemas/InputTransform'
use_latest_version:
type: boolean
flow_options_by_path:
type: object
additionalProperties:
type: object
properties:
input_transforms:
type: object
additionalProperties:
$ref: '#/components/schemas/InputTransform'
use_latest_version:
type: boolean
responses:
'201':
description: stream of created job uuids separated by \n. Lines may start with 'Error:'
content:
text/event-stream:
schema:
type: string
/w/{workspace}/jobs/restart/f/{id}:
post:
summary: restart a completed flow at a given step
operationId: restartFlowAtStep
tags:
- job
parameters:
- $ref: '#/components/parameters/WorkspaceId'
- $ref: '#/components/parameters/JobId'
- name: scheduled_for
description: when to schedule this job (leave empty for immediate run)
in: query
schema:
type: string
format: date-time
- name: scheduled_in_secs
description: schedule the script to execute in the number of seconds starting now
in: query
schema:
type: integer
- $ref: '#/components/parameters/ParentJob'
- $ref: '#/components/parameters/WorkerTag'
- $ref: '#/components/parameters/NewJobId'
- $ref: '#/components/parameters/IncludeHeader'
- name: invisible_to_owner
description: make the run invisible to the the flow owner (default false)
in: query
schema:
type: boolean
requestBody:
description: restart flow parameters
required: true
content:
application/json:
schema:
type: object
required:
- step_id
properties:
step_id:
type: string
description: step id to restart the flow from
branch_or_iteration_n:
type: integer
description: for branchall or loop, the iteration at which the flow should restart (optional)
flow_version:
type: integer
description: specific flow version to use for restart (optional, uses current version if not specified)
responses:
'201':
description: job created
content:
text/plain:
schema:
type: string
format: uuid
/w/{workspace}/jobs/run/h/{hash}:
post:
summary: run script by hash
operationId: runScriptByHash
tags:
- job
parameters:
- $ref: '#/components/parameters/WorkspaceId'
- $ref: '#/components/parameters/ScriptHash'
- name: scheduled_for
description: when to schedule this job (leave empty for immediate run)
in: query
schema:
type: string
format: date-time
- name: scheduled_in_secs
description: schedule the script to execute in the number of seconds starting now
in: query
schema:
type: integer
- $ref: '#/components/parameters/SkipPreprocessor'
- $ref: '#/components/parameters/ParentJob'
- $ref: '#/components/parameters/WorkerTag'
- $ref: '#/components/parameters/CacheTtl'
- $ref: '#/components/parameters/NewJobId'
- $ref: '#/components/parameters/IncludeHeader'
- name: invisible_to_owner
description: make the run invisible to the the script owner (default false)
in: query
schema:
type: boolean
requestBody:
description: Partially filled args
required: true
content:
application/json:
schema:
type: object
responses:
'201':
description: job created
content:
text/plain:
schema:
type: string
format: uuid
/w/{workspace}/jobs/run/preview:
post:
summary: run script preview
operationId: runScriptPreview
tags:
- job
parameters:
- $ref: '#/components/parameters/WorkspaceId'
- $ref: '#/components/parameters/IncludeHeader'
- name: invisible_to_owner
description: make the run invisible to the the script owner (default false)
in: query
schema:
type: boolean
- $ref: '#/components/parameters/NewJobId'
requestBody:
description: preview
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Preview'
responses:
'201':
description: job created
content:
text/plain:
schema:
type: string
format: uuid
/w/{workspace}/jobs/run_inline/preview:
post:
summary: run script preview without starting a new job
operationId: runScriptPreviewInline
tags:
- job
parameters:
- $ref: '#/components/parameters/WorkspaceId'
requestBody:
description: preview
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PreviewInline'
responses:
'200':
description: script result
content:
application/json:
schema: {}
/w/{workspace}/jobs/run_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/preview_flow:
post:
summary: run flow preview
operationId: runFlowPreview
tags:
- job
parameters:
- $ref: '#/components/parameters/WorkspaceId'
- $ref: '#/components/parameters/IncludeHeader'
- name: invisible_to_owner
description: make the run invisible to the the script owner (default false)
in: query
schema:
type: boolean
- $ref: '#/components/parameters/NewJobId'
- name: memory_id
description: memory ID for chat-enabled flows
in: query
schema:
type: string
format: uuid
requestBody:
description: preview
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/FlowPreview'
responses:
'201':
description: job created
content:
text/plain:
schema:
type: string
format: uuid
/w/{workspace}/jobs/run_wait_result/preview_flow:
post:
summary: run flow preview and wait for result
operationId: runFlowPreviewAndWaitResult
tags:
- job
parameters:
- $ref: '#/components/parameters/WorkspaceId'
- name: memory_id
description: memory ID for chat-enabled flows
in: query
schema:
type: string
format: uuid
requestBody:
description: preview
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/FlowPreview'
responses:
'200':
description: job result
content:
application/json:
schema: {}
/w/{workspace}/jobs/run/dynamic_select:
post:
summary: run dynamic select helper function
operationId: runDynamicSelect
tags:
- job
parameters:
- $ref: '#/components/parameters/WorkspaceId'
requestBody:
description: dynamic select request
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/DynamicInputData'
responses:
'201':
description: dynamic select job created
content:
text/plain:
schema:
type: string
format: uuid
/w/{workspace}/jobs/queue/list:
get:
summary: list all queued jobs
operationId: listQueue
x-mcp-tool: true
tags:
- job
parameters:
- $ref: '#/components/parameters/WorkspaceId'
- $ref: '#/components/parameters/OrderDesc'
- $ref: '#/components/parameters/CreatedBy'
- $ref: '#/components/parameters/ParentJob'
- $ref: '#/components/parameters/Worker'
- $ref: '#/components/parameters/ScriptExactPath'
- $ref: '#/components/parameters/ScriptStartPath'
- $ref: '#/components/parameters/SchedulePath'
- $ref: '#/components/parameters/TriggerPath'
- $ref: '#/components/parameters/JobTriggerKind'
- $ref: '#/components/parameters/ScriptExactHash'
- $ref: '#/components/parameters/StartedBefore'
- $ref: '#/components/parameters/StartedAfter'
- $ref: '#/components/parameters/Success'
- $ref: '#/components/parameters/ScheduledForBeforeNow'
- $ref: '#/components/parameters/JobKinds'
- $ref: '#/components/parameters/Suspended'
- $ref: '#/components/parameters/Running'
- $ref: '#/components/parameters/ArgsFilter'
- $ref: '#/components/parameters/ResultFilter'
- $ref: '#/components/parameters/AllowWildcards'
- $ref: '#/components/parameters/Tag'
- $ref: '#/components/parameters/Page'
- $ref: '#/components/parameters/PerPage'
- name: all_workspaces
description: get jobs from all workspaces (only valid if request come from the `admins` workspace)
in: query
schema:
type: boolean
- name: is_not_schedule
description: is not a scheduled job
in: query
schema:
type: boolean
responses:
'200':
description: All queued jobs
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/QueuedJob'
/w/{workspace}/jobs/queue/count:
get:
summary: get queue count
operationId: getQueueCount
tags:
- job
parameters:
- $ref: '#/components/parameters/WorkspaceId'
- name: all_workspaces
description: get jobs from all workspaces (only valid if request come from the `admins` workspace)
in: query
schema:
type: boolean
responses:
'200':
description: queue count
content:
application/json:
schema:
type: object
properties:
database_length:
type: integer
suspended:
type: integer
required:
- database_length
/w/{workspace}/jobs/completed/count:
get:
summary: get completed count
operationId: getCompletedCount
tags:
- job
parameters:
- $ref: '#/components/parameters/WorkspaceId'
responses:
'200':
description: completed count
content:
application/json:
schema:
type: object
properties:
database_length:
type: integer
required:
- database_length
/w/{workspace}/jobs/completed/count_jobs:
get:
summary: count number of completed jobs with filter
operationId: countCompletedJobs
tags:
- job
parameters:
- $ref: '#/components/parameters/WorkspaceId'
- name: completed_after_s_ago
in: query
schema:
type: integer
- name: success
in: query
schema:
type: boolean
- name: tags
in: query
schema:
type: string
- name: all_workspaces
in: query
schema:
type: boolean
responses:
'200':
description: Count of completed jobs
content:
application/json:
schema:
type: integer
/w/{workspace}/jobs/list_filtered_uuids:
get:
summary: get the ids of all jobs matching the given filters
operationId: listFilteredJobsUuids
tags:
- job
parameters:
- $ref: '#/components/parameters/WorkspaceId'
- $ref: '#/components/parameters/CreatedBy'
- $ref: '#/components/parameters/Label'
- $ref: '#/components/parameters/Worker'
- $ref: '#/components/parameters/ParentJob'
- $ref: '#/components/parameters/ScriptExactPath'
- $ref: '#/components/parameters/ScriptStartPath'
- $ref: '#/components/parameters/SchedulePath'
- $ref: '#/components/parameters/ScriptExactHash'
- $ref: '#/components/parameters/StartedBefore'
- $ref: '#/components/parameters/StartedAfter'
- $ref: '#/components/parameters/CreatedBefore'
- $ref: '#/components/parameters/CreatedAfter'
- $ref: '#/components/parameters/CompletedBefore'
- $ref: '#/components/parameters/CompletedAfter'
- $ref: '#/components/parameters/CreatedBeforeQueue'
- $ref: '#/components/parameters/CreatedAfterQueue'
- $ref: '#/components/parameters/Running'
- $ref: '#/components/parameters/ScheduledForBeforeNow'
- $ref: '#/components/parameters/JobKinds'
- $ref: '#/components/parameters/Suspended'
- $ref: '#/components/parameters/ArgsFilter'
- $ref: '#/components/parameters/Tag'
- $ref: '#/components/parameters/ResultFilter'
- $ref: '#/components/parameters/Page'
- $ref: '#/components/parameters/PerPage'
- name: is_skipped
description: is the job skipped
in: query
schema:
type: boolean
- name: is_flow_step
description: is the job a flow step
in: query
schema:
type: boolean
- name: has_null_parent
description: has null parent
in: query
schema:
type: boolean
- name: success
description: filter on successful jobs
in: query
schema:
type: boolean
- name: all_workspaces
description: get jobs from all workspaces (only valid if request come from the `admins` workspace)
in: query
schema:
type: boolean
- name: is_not_schedule
description: is not a scheduled job
in: query
schema:
type: boolean
responses:
'200':
description: uuids of jobs
content:
application/json:
schema:
type: array
items:
type: string
/w/{workspace}/jobs/queue/list_filtered_uuids:
get:
summary: get the ids of all queued jobs matching the given filters
operationId: listFilteredQueueUuids
tags:
- job
parameters:
- $ref: '#/components/parameters/WorkspaceId'
- $ref: '#/components/parameters/OrderDesc'
- $ref: '#/components/parameters/CreatedBy'
- $ref: '#/components/parameters/ParentJob'
- $ref: '#/components/parameters/ScriptExactPath'
- $ref: '#/components/parameters/ScriptStartPath'
- $ref: '#/components/parameters/SchedulePath'
- $ref: '#/components/parameters/ScriptExactHash'
- $ref: '#/components/parameters/StartedBefore'
- $ref: '#/components/parameters/StartedAfter'
- $ref: '#/components/parameters/Success'
- $ref: '#/components/parameters/ScheduledForBeforeNow'
- $ref: '#/components/parameters/JobKinds'
- $ref: '#/components/parameters/Suspended'
- $ref: '#/components/parameters/Running'
- $ref: '#/components/parameters/ArgsFilter'
- $ref: '#/components/parameters/ResultFilter'
- $ref: '#/components/parameters/AllowWildcards'
- $ref: '#/components/parameters/Tag'
- $ref: '#/components/parameters/Page'
- $ref: '#/components/parameters/PerPage'
- name: concurrency_key
in: query
required: false
schema:
type: string
- name: all_workspaces
description: get jobs from all workspaces (only valid if request come from the `admins` workspace)
in: query
schema:
type: boolean
- name: is_not_schedule
description: is not a scheduled job
in: query
schema:
type: boolean
responses:
'200':
description: uuids of jobs
content:
application/json:
schema:
type: array
items:
type: string
/w/{workspace}/jobs/queue/cancel_selection:
post:
summary: cancel jobs based on the given uuids
operationId: cancelSelection
tags:
- job
parameters:
- $ref: '#/components/parameters/WorkspaceId'
- name: force_cancel
in: query
schema:
type: boolean
requestBody:
description: uuids of the jobs to cancel
required: true
content:
application/json:
schema:
type: array
items:
type: string
responses:
'200':
description: uuids of canceled jobs
content:
application/json:
schema:
type: array
items:
type: string
/w/{workspace}/jobs/get_otel_traces/{id}:
get:
summary: get OpenTelemetry traces for a job
operationId: getJobOtelTraces
tags:
- job
parameters:
- $ref: '#/components/parameters/WorkspaceId'
- $ref: '#/components/parameters/JobId'
responses:
'200':
description: list of OTEL Span objects (compatible with OpenTelemetry Span proto)
content:
application/json:
schema:
type: array
items:
type: object
/w/{workspace}/trigger/{trigger_kind}/resume_suspended_trigger_jobs/{trigger_path}:
post:
summary: resume all suspended jobs for a specific trigger
operationId: resumeSuspendedTriggerJobs
tags:
- trigger
parameters:
- $ref: '#/components/parameters/WorkspaceId'
- name: trigger_kind
description: The kind of trigger
in: path
required: true
schema:
$ref: '#/components/schemas/JobTriggerKind'
- name: trigger_path
description: The path of the trigger (can contain forward slashes)
in: path
required: true
schema:
type: string
style: simple
explode: false
requestBody:
description: Optional list of job IDs to reassign
required: false
content:
application/json:
schema:
type: object
properties:
job_ids:
type: array
items:
type: string
format: uuid
description: Optional list of specific job UUIDs to reassign. If not provided, all suspended jobs for the trigger will be reassigned.
responses:
'200':
description: confirmation message
content:
application/json:
schema:
type: string
/w/{workspace}/trigger/{trigger_kind}/cancel_suspended_trigger_jobs/{trigger_path}:
post:
summary: cancel all suspended jobs for a specific trigger
operationId: cancelSuspendedTriggerJobs
tags:
- trigger
parameters:
- $ref: '#/components/parameters/WorkspaceId'
- name: trigger_kind
description: The kind of trigger
in: path
required: true
schema:
$ref: '#/components/schemas/JobTriggerKind'
- name: trigger_path
description: The path of the trigger (can contain forward slashes)
in: path
required: true
schema:
type: string
style: simple
explode: false
requestBody:
description: Optional list of job IDs to cancel
required: false
content:
application/json:
schema:
type: object
properties:
job_ids:
type: array
items:
type: string
format: uuid
description: Optional list of specific job UUIDs to cancel. If not provided, all suspended jobs for the trigger will be canceled.
responses:
'200':
description: confirmation message
content:
application/json:
schema:
type: string
/w/{workspace}/jobs/completed/list:
get:
summary: list all completed jobs
operationId: listCompletedJobs
tags:
- job
parameters:
- $ref: '#/components/parameters/WorkspaceId'
- $ref: '#/components/parameters/OrderDesc'
- $ref: '#/components/parameters/CreatedBy'
- $ref: '#/components/parameters/Label'
- $ref: '#/components/parameters/Worker'
- $ref: '#/components/parameters/ParentJob'
- $ref: '#/components/parameters/ScriptExactPath'
- $ref: '#/components/parameters/ScriptStartPath'
- $ref: '#/components/parameters/SchedulePath'
- $ref: '#/components/parameters/ScriptExactHash'
- $ref: '#/components/parameters/StartedBefore'
- $ref: '#/components/parameters/StartedAfter'
- $ref: '#/components/parameters/Success'
- $ref: '#/components/parameters/JobKinds'
- $ref: '#/components/parameters/ArgsFilter'
- $ref: '#/components/parameters/ResultFilter'
- $ref: '#/components/parameters/AllowWildcards'
- $ref: '#/components/parameters/Tag'
- $ref: '#/components/parameters/Page'
- $ref: '#/components/parameters/PerPage'
- name: is_skipped
description: is the job skipped
in: query
schema:
type: boolean
- name: is_flow_step
description: is the job a flow step
in: query
schema:
type: boolean
- name: has_null_parent
description: has null parent
in: query
schema:
type: boolean
- name: is_not_schedule
description: is not a scheduled job
in: query
schema:
type: boolean
responses:
'200':
description: All completed jobs
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/CompletedJob'
/w/{workspace}/jobs/completed/export:
get:
summary: export all completed jobs for backup/migration
operationId: exportCompletedJobs
tags:
- job
parameters:
- $ref: '#/components/parameters/WorkspaceId'
- $ref: '#/components/parameters/Page'
- $ref: '#/components/parameters/PerPage'
responses:
'200':
description: All completed jobs exported
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/ExportableCompletedJob'
/w/{workspace}/jobs/completed/import:
post:
summary: import completed jobs from backup/migration
operationId: importCompletedJobs
tags:
- job
parameters:
- $ref: '#/components/parameters/WorkspaceId'
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/ExportableCompletedJob'
responses:
'200':
description: Successfully imported completed jobs
content:
text/plain:
schema:
type: string
/w/{workspace}/jobs/queue/export:
get:
summary: export all queued jobs for backup/migration
operationId: exportQueuedJobs
tags:
- job
parameters:
- $ref: '#/components/parameters/WorkspaceId'
- $ref: '#/components/parameters/Page'
- $ref: '#/components/parameters/PerPage'
responses:
'200':
description: All queued jobs exported
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/ExportableQueuedJob'
/w/{workspace}/jobs/queue/import:
post:
summary: import queued jobs from backup/migration
operationId: importQueuedJobs
tags:
- job
parameters:
- $ref: '#/components/parameters/WorkspaceId'
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/ExportableQueuedJob'
responses:
'200':
description: Successfully imported queued jobs
content:
text/plain:
schema:
type: string
/w/{workspace}/jobs/delete:
post:
summary: delete jobs by IDs from all related tables
operationId: deleteJobs
tags:
- job
parameters:
- $ref: '#/components/parameters/WorkspaceId'
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
type: string
format: uuid
description: Array of job IDs to delete
responses:
'200':
description: Successfully deleted jobs
content:
text/plain:
schema:
type: string
description: Summary of deleted jobs and rows
/w/{workspace}/jobs/list:
get:
summary: list all jobs
operationId: listJobs
x-mcp-tool: true
tags:
- job
parameters:
- $ref: '#/components/parameters/WorkspaceId'
- $ref: '#/components/parameters/CreatedBy'
- $ref: '#/components/parameters/Label'
- $ref: '#/components/parameters/Worker'
- $ref: '#/components/parameters/ParentJob'
- $ref: '#/components/parameters/ScriptExactPath'
- $ref: '#/components/parameters/ScriptStartPath'
- $ref: '#/components/parameters/SchedulePath'
- $ref: '#/components/parameters/ScriptExactHash'
- $ref: '#/components/parameters/StartedBefore'
- $ref: '#/components/parameters/StartedAfter'
- $ref: '#/components/parameters/CreatedBefore'
- $ref: '#/components/parameters/CreatedAfter'
- $ref: '#/components/parameters/CompletedBefore'
- $ref: '#/components/parameters/CompletedAfter'
- $ref: '#/components/parameters/CreatedBeforeQueue'
- $ref: '#/components/parameters/CreatedAfterQueue'
- $ref: '#/components/parameters/Running'
- $ref: '#/components/parameters/ScheduledForBeforeNow'
- $ref: '#/components/parameters/JobKinds'
- $ref: '#/components/parameters/Suspended'
- $ref: '#/components/parameters/ArgsFilter'
- $ref: '#/components/parameters/Tag'
- $ref: '#/components/parameters/ResultFilter'
- $ref: '#/components/parameters/AllowWildcards'
- $ref: '#/components/parameters/PerPage'
- $ref: '#/components/parameters/JobTriggerKind'
- name: is_skipped
description: is the job skipped
in: query
schema:
type: boolean
- name: is_flow_step
description: is the job a flow step
in: query
schema:
type: boolean
- name: has_null_parent
description: has null parent
in: query
schema:
type: boolean
- name: success
description: filter on successful jobs
in: query
schema:
type: boolean
- name: all_workspaces
description: get jobs from all workspaces (only valid if request come from the `admins` workspace)
in: query
schema:
type: boolean
- name: is_not_schedule
description: is not a scheduled job
in: query
schema:
type: boolean
- 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
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
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'
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'
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'
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'
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'
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'
/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'
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'
required:
- mode
responses:
'200':
description: gcp trigger enabled set
content:
text/plain:
schema:
type: string
/w/{workspace}/gcp_triggers/test:
post:
summary: test gcp connection
operationId: testGcpConnection
tags:
- gcp_trigger
parameters:
- $ref: '#/components/parameters/WorkspaceId'
requestBody:
description: test gcp connection
required: true
content:
application/json:
schema:
type: object
properties:
connection:
type: object
required:
- connection
responses:
'200':
description: try to connect to a gcp broker
content:
text/plain:
schema:
type: string
/w/{workspace}/gcp_triggers/subscriptions/delete/{path}:
delete:
summary: delete gcp trigger
operationId: deleteGcpSubscription
tags:
- gcp_trigger
parameters:
- $ref: '#/components/parameters/WorkspaceId'
- $ref: '#/components/parameters/Path'
requestBody:
description: args to delete subscription from google cloud
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/DeleteGcpSubscription'
responses:
'200':
description: gcp trigger deleted
content:
text/plain:
schema:
type: string
/w/{workspace}/gcp_triggers/topics/list/{path}:
get:
summary: list all topics of google cloud service
operationId: listGoogleTopics
tags:
- gcp_trigger
parameters:
- $ref: '#/components/parameters/WorkspaceId'
- $ref: '#/components/parameters/Path'
responses:
'200':
description: get all google topics
content:
application/json:
schema:
type: array
items:
type: string
/w/{workspace}/gcp_triggers/subscriptions/list/{path}:
post:
summary: list all subscription of a give topic from google cloud service
operationId: listAllTGoogleTopicSubscriptions
tags:
- gcp_trigger
parameters:
- $ref: '#/components/parameters/WorkspaceId'
- $ref: '#/components/parameters/Path'
requestBody:
description: args to get subscription's topic from google cloud
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/GetAllTopicSubscription'
responses:
'200':
description: get all google topic subscriptions name
content:
application/json:
schema:
type: array
items:
type: string
/w/{workspace}/postgres_triggers/postgres/version/{path}:
get:
summary: get postgres version
operationId: getPostgresVersion
tags:
- postgres_trigger
parameters:
- $ref: '#/components/parameters/WorkspaceId'
- $ref: '#/components/parameters/Path'
responses:
'200':
description: postgres version
content:
application/json:
schema:
type: string
/w/{workspace}/postgres_triggers/is_valid_postgres_configuration/{path}:
get:
summary: check if postgres configuration is set to logical
operationId: isValidPostgresConfiguration
tags:
- postgres_trigger
parameters:
- $ref: '#/components/parameters/WorkspaceId'
- $ref: '#/components/parameters/Path'
responses:
'200':
description: boolean that indicates if postgres is set to logical level or not
content:
application/json:
schema:
type: boolean
/w/{workspace}/postgres_triggers/create_template_script:
post:
summary: create template script
operationId: createTemplateScript
tags:
- postgres_trigger
parameters:
- $ref: '#/components/parameters/WorkspaceId'
requestBody:
description: template script
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/TemplateScript'
responses:
'200':
description: custom id to retrieve template script
content:
text/plain:
schema:
type: string
/w/{workspace}/postgres_triggers/get_template_script/{id}:
get:
summary: get template script
operationId: getTemplateScript
tags:
- postgres_trigger
parameters:
- $ref: '#/components/parameters/WorkspaceId'
- $ref: '#/components/parameters/Id'
responses:
'200':
description: template script
content:
text/plain:
schema:
type: string
/w/{workspace}/postgres_triggers/slot/list/{path}:
get:
summary: list postgres replication slot
operationId: listPostgresReplicationSlot
tags:
- postgres_trigger
parameters:
- $ref: '#/components/parameters/WorkspaceId'
- $ref: '#/components/parameters/Path'
responses:
'200':
description: list postgres slot
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/SlotList'
/w/{workspace}/postgres_triggers/slot/create/{path}:
post:
summary: create replication slot for postgres
operationId: createPostgresReplicationSlot
tags:
- postgres_trigger
parameters:
- $ref: '#/components/parameters/WorkspaceId'
- $ref: '#/components/parameters/Path'
requestBody:
description: new slot for postgres
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Slot'
responses:
'201':
description: slot created
content:
text/plain:
schema:
type: string
/w/{workspace}/postgres_triggers/slot/delete/{path}:
delete:
summary: delete postgres replication slot
operationId: deletePostgresReplicationSlot
tags:
- postgres_trigger
parameters:
- $ref: '#/components/parameters/WorkspaceId'
- $ref: '#/components/parameters/Path'
requestBody:
description: replication slot of postgres
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Slot'
responses:
'200':
description: postgres replication slot deleted
content:
text/plain:
schema:
type: string
/w/{workspace}/postgres_triggers/publication/list/{path}:
get:
summary: list postgres publication
operationId: listPostgresPublication
tags:
- postgres_trigger
parameters:
- $ref: '#/components/parameters/WorkspaceId'
- $ref: '#/components/parameters/Path'
responses:
'200':
description: database publication list
content:
application/json:
schema:
type: array
items:
type: string
/w/{workspace}/postgres_triggers/publication/get/{publication}/{path}:
get:
summary: get postgres publication
operationId: getPostgresPublication
tags:
- postgres_trigger
parameters:
- $ref: '#/components/parameters/WorkspaceId'
- $ref: '#/components/parameters/Path'
- $ref: '#/components/parameters/PublicationName'
responses:
'200':
description: postgres publication get
content:
application/json:
schema:
$ref: '#/components/schemas/PublicationData'
/w/{workspace}/postgres_triggers/publication/create/{publication}/{path}:
post:
summary: create publication for postgres
operationId: createPostgresPublication
tags:
- postgres_trigger
parameters:
- $ref: '#/components/parameters/WorkspaceId'
- $ref: '#/components/parameters/Path'
- $ref: '#/components/parameters/PublicationName'
requestBody:
description: new publication for postgres
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PublicationData'
responses:
'201':
description: publication created
content:
text/plain:
schema:
type: string
/w/{workspace}/postgres_triggers/publication/update/{publication}/{path}:
post:
summary: update publication for postgres
operationId: updatePostgresPublication
tags:
- postgres_trigger
parameters:
- $ref: '#/components/parameters/WorkspaceId'
- $ref: '#/components/parameters/Path'
- $ref: '#/components/parameters/PublicationName'
requestBody:
description: update publication for postgres
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PublicationData'
responses:
'201':
description: publication updated
content:
text/plain:
schema:
type: string
/w/{workspace}/postgres_triggers/publication/delete/{publication}/{path}:
delete:
summary: delete postgres publication
operationId: deletePostgresPublication
tags:
- postgres_trigger
parameters:
- $ref: '#/components/parameters/WorkspaceId'
- $ref: '#/components/parameters/Path'
- $ref: '#/components/parameters/PublicationName'
responses:
'200':
description: postgres publication deleted
content:
text/plain:
schema:
type: string
/w/{workspace}/postgres_triggers/create:
post:
summary: create postgres trigger
operationId: createPostgresTrigger
tags:
- postgres_trigger
parameters:
- $ref: '#/components/parameters/WorkspaceId'
requestBody:
description: new postgres trigger
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/NewPostgresTrigger'
responses:
'201':
description: postgres trigger created
content:
text/plain:
schema:
type: string
/w/{workspace}/postgres_triggers/update/{path}:
post:
summary: update postgres trigger
operationId: updatePostgresTrigger
tags:
- postgres_trigger
parameters:
- $ref: '#/components/parameters/WorkspaceId'
- $ref: '#/components/parameters/Path'
requestBody:
description: updated trigger
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/EditPostgresTrigger'
responses:
'200':
description: postgres trigger updated
content:
text/plain:
schema:
type: string
/w/{workspace}/postgres_triggers/delete/{path}:
delete:
summary: delete postgres trigger
operationId: deletePostgresTrigger
tags:
- postgres_trigger
parameters:
- $ref: '#/components/parameters/WorkspaceId'
- $ref: '#/components/parameters/Path'
responses:
'200':
description: postgres trigger deleted
content:
text/plain:
schema:
type: string
/w/{workspace}/postgres_triggers/get/{path}:
get:
summary: get postgres trigger
operationId: getPostgresTrigger
tags:
- postgres_trigger
parameters:
- $ref: '#/components/parameters/WorkspaceId'
- $ref: '#/components/parameters/Path'
responses:
'200':
description: get postgres trigger
content:
application/json:
schema:
$ref: '#/components/schemas/PostgresTrigger'
/w/{workspace}/postgres_triggers/list:
get:
summary: list postgres triggers
operationId: listPostgresTriggers
tags:
- postgres_trigger
parameters:
- $ref: '#/components/parameters/WorkspaceId'
required: true
- $ref: '#/components/parameters/Page'
- $ref: '#/components/parameters/PerPage'
- name: path
description: filter by path
in: query
schema:
type: string
- name: is_flow
in: query
schema:
type: boolean
- name: path_start
in: query
schema:
type: string
- 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'
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'
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
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
- 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
- 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
- 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
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
RunnableId:
name: runnable_id
in: query
schema:
type: string
RunnableTypeQuery:
name: runnable_type
in: query
schema:
$ref: '#/components/schemas/RunnableType'
InputId:
name: input
in: path
required: true
schema:
type: string
GetStarted:
name: get_started
in: query
schema:
type: boolean
ConcurrencyId:
name: concurrency_id
in: path
required: true
schema:
type: string
RunnableKind:
name: runnable_kind
in: path
required: true
schema:
type: string
enum:
- script
- flow
schemas:
OpenFlow:
$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
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
properties:
id:
type: string
format: uuid
description: Unique identifier for the message
conversation_id:
type: string
format: uuid
description: The conversation this message belongs to
message_type:
type: string
enum:
- user
- assistant
- system
- tool
description: Type of the message
content:
type: string
description: The message content
job_id:
type: string
format: uuid
nullable: true
description: Associated job ID if this message came from a flow run
created_at:
type: string
format: date-time
description: When the message was created
step_name:
type: string
description: The step name that produced that message
success:
type: boolean
description: Whether the message is a success
EndpointTool:
type: object
required:
- name
- description
- instructions
- path
- method
properties:
name:
type: string
description: The tool name/operation ID
description:
type: string
description: Short description of the tool
instructions:
type: string
description: Detailed instructions for using the tool
path:
type: string
description: API endpoint path
method:
type: string
description: HTTP method (GET, POST, etc.)
path_params_schema:
type: object
description: JSON schema for path parameters
nullable: true
query_params_schema:
type: object
description: JSON schema for query parameters
nullable: true
body_schema:
type: object
description: JSON schema for request body
nullable: true
AIProvider:
type: string
enum:
- openai
- azure_openai
- anthropic
- mistral
- deepseek
- googleai
- groq
- openrouter
- togetherai
- aws_bedrock
- customai
GitSyncObjectType:
type: string
enum:
- script
- flow
- app
- folder
- resource
- variable
- secret
- resourcetype
- schedule
- user
- group
- trigger
- settings
- key
- 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
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
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 path identifier for this schedule
edited_by:
type: string
description: Username of the last person who edited this schedule
edited_at:
type: string
format: date-time
description: Timestamp of the last edit
schedule:
type: string
description: Cron expression with 6 fields (seconds, minutes, hours, day of month, month, day of week). Example '0 0 12 * * *' for daily at noon
timezone:
type: string
description: IANA timezone for the schedule (e.g., 'UTC', 'Europe/Paris', 'America/New_York')
enabled:
type: boolean
description: Whether the schedule is currently active and will trigger jobs
script_path:
type: string
description: Path to the script or flow to execute when triggered
is_flow:
type: boolean
description: True if script_path points to a flow, false if it points to a script
args:
$ref: '#/components/schemas/ScriptArgs'
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 path identifier for this schedule
schedule:
type: string
description: Cron expression with 6 fields (seconds, minutes, hours, day of month, month, day of week). Example '0 0 12 * * *' for daily at noon
timezone:
type: string
description: IANA timezone for the schedule (e.g., 'UTC', 'Europe/Paris', 'America/New_York')
script_path:
type: string
description: Path to the script or flow to execute when triggered
is_flow:
type: boolean
description: True if script_path points to a flow, false if it points to a script
args:
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
- google
TriggerMode:
description: job trigger mode
type: string
enum:
- enabled
- disabled
- suspended
TriggerExtraProperty:
type: object
properties:
path:
type: string
description: The unique path identifier for this trigger
script_path:
type: string
description: Path to the script or flow to execute when triggered
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 path identifier for this trigger
script_path:
type: string
description: Path to the script or flow to execute when triggered
route_path:
type: string
description: The URL route path that will trigger this endpoint (e.g., 'api/myendpoint'). Must NOT start with a /.
workspaced_route:
type: boolean
description: If true, the route includes the workspace ID in the path
summary:
type: string
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 path identifier for this trigger
script_path:
type: string
description: Path to the script or flow to execute when triggered
route_path:
type: string
description: The URL route path that will trigger this endpoint (e.g., 'api/myendpoint'). Must NOT start with a /.
summary:
type: string
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
sqs_count:
type: number
nextcloud_count:
type: number
google_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 path identifier for this trigger
script_path:
type: string
description: Path to the script or flow to execute when a message is received
is_flow:
type: boolean
description: True if script_path points to a flow, false if it points to a script
url:
type: string
description: The WebSocket URL to connect to (can be a static URL or computed by a runnable)
mode:
$ref: '#/components/schemas/TriggerMode'
filters:
type: array
description: Array of key-value filters to match incoming messages (only matching messages trigger the script)
items:
type: object
properties:
key:
type: string
value: {}
required:
- key
- value
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 path identifier for this trigger
script_path:
type: string
description: Path to the script or flow to execute when a message is received
is_flow:
type: boolean
description: True if script_path points to a flow, false if it points to a script
filters:
type: array
description: Array of key-value filters to match incoming messages (only matching messages trigger the script)
items:
type: object
properties:
key:
type: string
value: {}
required:
- key
- value
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 path identifier for this trigger
script_path:
type: string
description: Path to the script or flow to execute when a message is received
is_flow:
type: boolean
description: True if script_path points to a flow, false if it points to a script
mode:
$ref: '#/components/schemas/TriggerMode'
error_handler_path:
type: string
description: Path to a script or flow to run when the triggered job fails
error_handler_args:
$ref: '#/components/schemas/ScriptArgs'
description: Arguments to pass to the error handler
retry:
$ref: ../../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 path identifier for this trigger
script_path:
type: string
description: Path to the script or flow to execute when a message is received
is_flow:
type: boolean
description: True if script_path points to a flow, false if it points to a script
mode:
$ref: '#/components/schemas/TriggerMode'
error_handler_path:
type: string
description: Path to a script or flow to run when the triggered job fails
error_handler_args:
$ref: '#/components/schemas/ScriptArgs'
description: Arguments to pass to the error handler
retry:
$ref: ../../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 path identifier for this trigger.
script_path:
type: string
description: Path to the script or flow to execute when a message is received.
is_flow:
type: boolean
description: True if script_path points to a flow, false if it points to a script.
mode:
$ref: '#/components/schemas/TriggerMode'
auto_acknowledge_msg:
type: boolean
description: If true, automatically acknowledge messages after processing.
ack_deadline:
type: integer
format: int32
minimum: 10
maximum: 600
description: Time in seconds within which the message must be acknowledged. If not provided, defaults to the subscription's acknowledgment deadline (600 seconds).
error_handler_path:
type: string
description: Path to a script or flow to run when the triggered job fails.
error_handler_args:
$ref: '#/components/schemas/ScriptArgs'
description: Arguments to pass to the error handler.
retry:
$ref: ../../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
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 path identifier for this trigger
script_path:
type: string
description: Path to the script or flow to execute when a message is received
is_flow:
type: boolean
description: True if script_path points to a flow, false if it points to a script
mode:
$ref: '#/components/schemas/TriggerMode'
error_handler_path:
type: string
description: Path to a script or flow to run when the triggered job fails
error_handler_args:
$ref: '#/components/schemas/ScriptArgs'
description: Arguments to pass to the error handler
retry:
$ref: ../../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 path identifier for this trigger
script_path:
type: string
description: Path to the script or flow to execute when a message is received
is_flow:
type: boolean
description: True if script_path points to a flow, false if it points to a script
mode:
$ref: '#/components/schemas/TriggerMode'
error_handler_path:
type: string
description: Path to a script or flow to run when the triggered job fails
error_handler_args:
$ref: '#/components/schemas/ScriptArgs'
description: Arguments to pass to the error handler
retry:
$ref: ../../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 path identifier for this trigger
script_path:
type: string
description: Path to the script or flow to execute when database changes are detected
is_flow:
type: boolean
description: True if script_path points to a flow, false if it points to a script
mode:
$ref: '#/components/schemas/TriggerMode'
postgres_resource_path:
type: string
description: Path to the PostgreSQL resource containing connection configuration
publication:
$ref: '#/components/schemas/PublicationData'
description: Configuration for creating/managing the publication (tables, operations)
error_handler_path:
type: string
description: Path to a script or flow to run when the triggered job fails
error_handler_args:
$ref: '#/components/schemas/ScriptArgs'
description: Arguments to pass to the error handler
retry:
$ref: ../../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 path identifier for this trigger
script_path:
type: string
description: Path to the script or flow to execute when database changes are detected
is_flow:
type: boolean
description: True if script_path points to a flow, false if it points to a script
mode:
$ref: '#/components/schemas/TriggerMode'
postgres_resource_path:
type: string
description: Path to the PostgreSQL resource containing connection configuration
publication:
$ref: '#/components/schemas/PublicationData'
description: Configuration for creating/managing the publication (tables, operations)
error_handler_path:
type: string
description: Path to a script or flow to run when the triggered job fails
error_handler_args:
$ref: '#/components/schemas/ScriptArgs'
description: Arguments to pass to the error handler
retry:
$ref: ../../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 path identifier for this trigger
script_path:
type: string
description: Path to the script or flow to execute when a message is received
is_flow:
type: boolean
description: True if script_path points to a flow, false if it points to a script
kafka_resource_path:
type: string
description: Path to the Kafka resource containing connection configuration
group_id:
type: string
description: Kafka consumer group ID for this trigger
topics:
type: array
items:
type: string
description: Array of Kafka topic names to subscribe to
filters:
type: array
items:
type: object
properties:
key:
type: string
value: {}
required:
- key
- value
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 path identifier for this trigger
script_path:
type: string
description: Path to the script or flow to execute when a message is received
is_flow:
type: boolean
description: True if script_path points to a flow, false if it points to a script
error_handler_path:
type: string
description: Path to a script or flow to run when the triggered job fails
error_handler_args:
$ref: '#/components/schemas/ScriptArgs'
description: Arguments to pass to the error handler
retry:
$ref: ../../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 path identifier for this trigger
script_path:
type: string
description: Path to the script or flow to execute when a message is received
is_flow:
type: boolean
description: True if script_path points to a flow, false if it points to a script
nats_resource_path:
type: string
description: Path to the NATS resource containing connection configuration
use_jetstream:
type: boolean
description: If true, uses NATS JetStream for durable message delivery
stream_name:
type: string
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 path identifier for this trigger
script_path:
type: string
description: Path to the script or flow to execute when a message is received
is_flow:
type: boolean
description: True if script_path points to a flow, false if it points to a script
error_handler_path:
type: string
description: Path to a script or flow to run when the triggered job fails
error_handler_args:
$ref: '#/components/schemas/ScriptArgs'
description: Arguments to pass to the error handler
retry:
$ref: ../../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/<folder>/jobs/...`). Supports `*`, `**`, `?`, `[abc]`, `{a,b}`.
permissioned_as:
type: string
description: |
Target identity the matched item should be permissioned as. Must be `u/<username>`, `g/<groupname>`, 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
flow_version:
type: integer
Policy:
type: object
properties:
triggerables:
type: object
additionalProperties:
type: object
triggerables_v2:
type: object
additionalProperties:
type: object
s3_inputs:
type: array
items:
type: object
allowed_s3_keys:
type: array
items:
type: object
properties:
s3_path:
type: string
resource:
type: string
execution_mode:
type: string
enum:
- viewer
- publisher
- anonymous
on_behalf_of:
type: string
on_behalf_of_email:
type: string
ListableApp:
type: object
properties:
id:
type: integer
workspace_id:
type: string
path:
type: string
summary:
type: string
version:
type: integer
extra_perms:
type: object
additionalProperties:
type: boolean
starred:
type: boolean
edited_at:
type: string
format: date-time
execution_mode:
type: string
enum:
- viewer
- publisher
- anonymous
raw_app:
type: boolean
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_id:
type: string
team_name:
type: string
bot:
type: object
properties:
bot_access_token:
type: string
required:
- access_token
- team_id
- team_name
- bot
TokenResponse:
type: object
properties:
access_token:
type: string
expires_in:
type: integer
refresh_token:
type: string
scope:
type: array
items:
type: string
grant_type:
type: string
required:
- access_token
HubScriptKind:
type: string
enum:
- script
- failure
- trigger
- approval
PolarsClientKwargs:
type: object
properties:
region_name:
type: string
required:
- region_name
LargeFileStorage:
type: object
properties:
type:
type: string
enum:
- S3Storage
- AzureBlobStorage
- AzureWorkloadIdentity
- S3AwsOidc
- GoogleCloudStorage
s3_resource_path:
type: string
azure_blob_resource_path:
type: string
gcs_resource_path:
type: string
public_resource:
type: boolean
advanced_permissions:
type: array
items:
$ref: '#/components/schemas/S3PermissionRule'
secondary_storage:
type: object
additionalProperties:
type: object
properties:
type:
type: string
enum:
- S3Storage
- AzureBlobStorage
- AzureWorkloadIdentity
- S3AwsOidc
- GoogleCloudStorage
s3_resource_path:
type: string
azure_blob_resource_path:
type: string
gcs_resource_path:
type: string
public_resource:
type: boolean
DucklakeSettings:
type: object
required:
- ducklakes
properties:
ducklakes:
type: object
additionalProperties:
type: object
required:
- catalog
- storage
properties:
catalog:
type: object
properties:
resource_type:
type: string
enum:
- postgresql
- mysql
- instance
resource_path:
type: string
required:
- resource_type
storage:
type: object
properties:
storage:
type: string
path:
type: string
required:
- path
extra_args:
type: string
DataTableSettings:
type: object
required:
- datatables
properties:
datatables:
type: object
additionalProperties:
type: object
required:
- database
properties:
database:
type: object
properties:
resource_type:
type: string
enum:
- postgresql
- instance
resource_path:
type: string
required:
- resource_type
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
DynamicInputData:
type: object
properties:
entrypoint_function:
type: string
description: Name of the function to execute for dynamic select
args:
type: object
description: Arguments to pass to the function
runnable_ref:
type: object
oneOf:
- type: object
properties:
source:
type: string
enum:
- deployed
path:
type: string
description: Path to the deployed script or flow
runnable_kind:
$ref: '#/components/schemas/RunnableKind'
required:
- source
- path
- runnable_kind
- type: object
properties:
source:
type: string
enum:
- inline
code:
type: string
description: Code content for inline execution
language:
$ref: '#/components/schemas/ScriptLang'
required:
- source
- code
required:
- entrypoint_function
- runnable_ref
WindmillLargeFile:
type: object
properties:
s3:
type: string
required:
- s3
WindmillFileMetadata:
type: object
properties:
mime_type:
type: string
size_in_bytes:
type: integer
last_modified:
type: string
format: date-time
expires:
type: string
format: date-time
version_id:
type: string
WindmillFilePreview:
type: object
properties:
msg:
type: string
content:
type: string
content_type:
type: string
enum:
- RawText
- Csv
- Parquet
- Unknown
required:
- content_type
S3Resource:
type: object
properties:
bucket:
type: string
region:
type: string
endPoint:
type: string
useSSL:
type: boolean
accessKey:
type: string
secretKey:
type: string
pathStyle:
type: boolean
required:
- bucket
- region
- endPoint
- useSSL
- pathStyle
WorkspaceGitSyncSettings:
type: object
properties:
repositories:
type: array
items:
$ref: '#/components/schemas/GitRepositorySettings'
WorkspaceDeployUISettings:
type: object
properties:
include_path:
type: array
items:
type: string
include_type:
type: array
items:
$ref: '#/components/schemas/GitSyncObjectType'
WorkspaceDefaultScripts:
type: object
properties:
order:
type: array
items:
type: string
hidden:
type: array
items:
type: string
default_script_content:
additionalProperties:
type: string
S3PermissionRule:
type: object
properties:
pattern:
type: string
allow:
type: string
required:
- pattern
- allow
GitRepositorySettings:
type: object
properties:
script_path:
type: string
git_repo_resource_path:
type: string
use_individual_branch:
type: boolean
group_by_folder:
type: boolean
force_branch:
type: string
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
- 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
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