Files
windmill/backend/windmill-api/openapi-deref.yaml
2026-02-12 17:12:44 +00:00

30819 lines
950 KiB
YAML

openapi: 3.0.3
info:
version: 1.633.1
title: Windmill API
contact:
name: Windmill Team
email: contact@windmill.dev
url: https://windmill.dev
license:
name: Apache 2.0
url: https://www.apache.org/licenses/LICENSE-2.0.html
x-logo:
url: https://windmill.dev/img/windmill.svg
externalDocs:
description: documentation portal
url: https://windmill.dev
servers:
- url: /api
security:
- bearerAuth: []
- cookieAuth: []
paths:
/version:
get:
summary: get backend version
operationId: backendVersion
tags:
- settings
responses:
'200':
description: git version of backend
content:
text/plain:
schema:
type: string
/health/status:
get:
summary: health status
description: >
Health status endpoint. Returns cached health status (database
connectivity, worker count).
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:
type: object
description: Health status response (cached with 5s TTL)
required: &ref_0
- status
- checked_at
- database_healthy
- workers_alive
properties: &ref_1
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
'503':
description: server is unhealthy (database unreachable)
content:
application/json:
schema:
type: object
description: Health status response (cached with 5s TTL)
required: *ref_0
properties: *ref_1
/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:
type: object
description: Detailed health status response (always fresh, no caching)
required: &ref_2
- status
- checked_at
- version
- checks
properties: &ref_3
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:
type: object
description: Detailed health checks
required: &ref_308
- database
- readiness
properties: &ref_309
database:
type: object
description: Database health status
required: &ref_310
- healthy
- latency_ms
- pool
properties: &ref_311
healthy:
type: boolean
description: Whether the database is reachable
latency_ms:
type: integer
format: int64
description: Database query latency in milliseconds
pool:
type: object
description: Database connection pool statistics
required: &ref_312
- size
- idle
- max_connections
properties: &ref_313
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
workers:
description: Workers health status
nullable: true
type: object
required: &ref_314
- healthy
- active_count
- worker_groups
- min_version
- versions
properties: &ref_315
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
queue:
description: Job queue status
nullable: true
type: object
required: &ref_316
- pending_jobs
- running_jobs
properties: &ref_317
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
readiness:
type: object
description: Server readiness status
required: &ref_318
- healthy
properties: &ref_319
healthy:
type: boolean
description: Whether the server is ready to accept requests
'503':
description: server is unhealthy (database unreachable)
content:
application/json:
schema:
type: object
description: Detailed health status response (always fresh, no caching)
required: *ref_2
properties: *ref_3
/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:
- name: workspace
in: path
required: true
schema: &ref_4
type: string
- name: id
in: path
required: true
schema: &ref_61
type: integer
responses:
'200':
description: an audit log
content:
application/json:
schema:
type: object
properties: &ref_5
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: &ref_6
- workspace_id
- id
- timestamp
- username
- operation
- action_kind
/w/{workspace}/audit/list:
get:
summary: list audit logs (requires admin privilege)
operationId: listAuditLogs
tags:
- audit
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- name: page
description: which page to return (start at 1, default 1)
in: query
schema: &ref_13
type: integer
- name: per_page
description: number of items to return for a given page (default 30, max 100)
in: query
schema: &ref_14
type: integer
- name: before
description: filter on started before (inclusive) timestamp
in: query
schema: &ref_260
type: string
format: date-time
- name: after
description: filter on created after (exclusive) timestamp
in: query
schema: &ref_261
type: string
format: date-time
- name: username
description: filter on exact username of user
in: query
schema: &ref_269
type: string
- name: operation
description: filter on exact or prefix name of operation
in: query
schema: &ref_270
type: string
- 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
- name: resource
description: filter on exact or prefix name of resource
in: query
schema: &ref_271
type: string
- name: action_kind
description: filter on type of operation
in: query
schema: &ref_272
type: string
enum:
- Create
- Update
- Delete
- Execute
- 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:
type: object
properties: *ref_5
required: *ref_6
/auth/login:
post:
security: []
summary: login with password
operationId: login
tags:
- user
requestBody:
description: credentials
required: true
content:
application/json:
schema:
type: object
properties: &ref_357
email:
type: string
password:
type: string
required: &ref_358
- email
- password
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:
type: object
properties: &ref_7
message:
type: string
required: &ref_8
- message
'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:
type: object
properties: *ref_7
required: *ref_8
'400':
description: invalid or expired token
/w/{workspace}/users/get/{username}:
get:
summary: get user (require admin privilege)
operationId: getUser
tags:
- user
- admin
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- name: username
in: path
required: true
schema:
type: string
responses:
'200':
description: user created
content:
application/json:
schema:
type: object
properties: &ref_26
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:
- type: object
properties: &ref_354
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: &ref_355
- source
required: &ref_27
- email
- username
- is_admin
- is_super_admin
- created_at
- operator
- disabled
- folders
- folders_owners
/w/{workspace}/users/update/{username}:
post:
summary: update user (require admin privilege)
operationId: updateUser
tags:
- user
- admin
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- name: username
in: path
required: true
schema:
type: string
requestBody:
description: new user
required: true
content:
application/json:
schema:
type: object
properties: &ref_359
is_admin:
type: boolean
operator:
type: boolean
disabled:
type: boolean
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: &ref_48
type: string
responses:
'200':
description: is owner
content:
application/json:
schema:
type: boolean
/users/setpassword:
post:
summary: set password
operationId: setPassword
tags:
- user
requestBody:
description: set password
required: true
content:
application/json:
schema:
type: object
properties:
password:
type: string
required:
- password
responses:
'200':
description: password set
content:
text/plain:
schema:
type: string
/users/set_password_of/{user}:
post:
summary: set password for a specific user (require super admin)
operationId: setPasswordForUser
tags:
- user
parameters:
- name: user
in: path
required: true
schema:
type: string
requestBody:
description: set password
required: true
content:
application/json:
schema:
type: object
properties:
password:
type: string
required:
- password
responses:
'200':
description: password set
content:
text/plain:
schema:
type: string
/users/set_login_type/{user}:
post:
summary: set login type for a specific user (require super admin)
operationId: setLoginTypeForUser
tags:
- user
parameters:
- name: user
in: path
required: true
schema:
type: string
requestBody:
description: set login type
required: true
content:
application/json:
schema:
type: object
properties:
login_type:
type: string
required:
- login_type
responses:
'200':
description: login type set
content:
text/plain:
schema:
type: string
/users/create:
post:
summary: create user
operationId: createUserGlobally
tags:
- user
requestBody:
description: user info
required: true
content:
application/json:
schema:
type: object
properties:
email:
type: string
password:
type: string
super_admin:
type: boolean
name:
type: string
company:
type: string
skip_email:
type: boolean
description: Skip sending email notifications to the user
required:
- email
- password
- super_admin
responses:
'201':
description: user created
content:
text/plain:
schema:
type: string
/users/update/{email}:
post:
summary: global update user (require super admin)
operationId: globalUserUpdate
tags:
- user
parameters:
- name: email
in: path
required: true
schema:
type: string
requestBody:
description: new user info
required: true
content:
application/json:
schema:
type: object
properties:
is_super_admin:
type: boolean
is_devops:
type: boolean
name:
type: string
responses:
'200':
description: user updated
content:
text/plain:
schema:
type: string
/users/username_info/{email}:
get:
summary: global username info (require super admin)
operationId: globalUsernameInfo
tags:
- user
parameters:
- name: email
in: path
required: true
schema:
type: string
responses:
'200':
description: user renamed
content:
application/json:
schema:
type: object
properties:
username:
type: string
workspace_usernames:
type: array
items:
type: object
properties:
workspace_id:
type: string
username:
type: string
required:
- workspace_id
- username
required:
- username
- workspace_usernames
/users/rename/{email}:
post:
summary: global rename user (require super admin)
operationId: globalUserRename
tags:
- user
parameters:
- name: email
in: path
required: true
schema:
type: string
requestBody:
description: new username
required: true
content:
application/json:
schema:
type: object
properties:
new_username:
type: string
required:
- new_username
responses:
'200':
description: user renamed
content:
text/plain:
schema:
type: string
/users/delete/{email}:
delete:
summary: global delete user (require super admin)
operationId: globalUserDelete
tags:
- user
parameters:
- name: email
in: path
required: true
schema:
type: string
responses:
'200':
description: user deleted
content:
text/plain:
schema:
type: string
/users/overwrite:
post:
summary: global overwrite users (require super admin and EE)
operationId: globalUsersOverwrite
tags:
- user
requestBody:
description: List of users
required: true
content:
application/json:
schema:
type: array
items:
type: object
properties: &ref_9
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: &ref_10
- email
- super_admin
- verified
- first_time_user
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:
type: object
properties: *ref_9
required: *ref_10
/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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: username
in: path
required: true
schema:
type: string
responses:
'200':
description: delete user
content:
text/plain:
schema:
type: string
/w/{workspace}/users/convert_to_group/{username}:
post:
summary: convert manual user to group user (require admin privilege)
operationId: convertUserToGroup
tags:
- user
- admin
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- 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:
type: array
items: &ref_498
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
/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:
type: object
properties: &ref_11
id:
type: string
name:
type: string
owner:
type: string
domain:
type: string
color:
type: string
parent_workspace_id:
type: string
nullable: true
required: &ref_12
- id
- name
- owner
- created_at
/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:
type: object
properties: &ref_439
email:
type: string
workspaces:
type: array
items:
type: object
properties:
id:
type: string
name:
type: string
username:
type: string
color:
type: string
operator_settings:
nullable: true
type: object
required: &ref_28
- runs
- schedules
- resources
- assets
- variables
- triggers
- audit_logs
- groups
- folders
- workers
properties: &ref_29
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
parent_workspace_id:
type: string
nullable: true
created_by:
type: string
nullable: true
disabled:
type: boolean
required:
- id
- name
- username
- color
- disabled
required: &ref_440
- email
- workspaces
/w/{workspace}/workspaces/get_as_superadmin:
get:
summary: get workspace as super admin (require to be super admin)
operationId: getWorkspaceAsSuperAdmin
tags:
- workspace
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
responses:
'200':
description: workspace
content:
application/json:
schema:
type: object
properties: *ref_11
required: *ref_12
/workspaces/list_as_superadmin:
get:
summary: list all workspaces as super admin (require to be super admin)
operationId: listWorkspacesAsSuperAdmin
tags:
- workspace
parameters:
- name: page
description: which page to return (start at 1, default 1)
in: query
schema: *ref_13
- name: per_page
description: number of items to return for a given page (default 30, max 100)
in: query
schema: *ref_14
responses:
'200':
description: workspaces
content:
application/json:
schema:
type: array
items:
type: object
properties: *ref_11
required: *ref_12
/workspaces/create:
post:
summary: create workspace
operationId: createWorkspace
tags:
- workspace
requestBody:
description: new token
required: true
content:
application/json:
schema:
type: object
properties: &ref_441
id:
type: string
name:
type: string
username:
type: string
color:
type: string
required: &ref_442
- id
- name
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:
- name: workspace
in: path
required: true
schema: *ref_4
requestBody:
description: new forked workspace
required: true
content:
application/json:
schema:
type: object
properties: &ref_15
id:
type: string
name:
type: string
color:
type: string
required: &ref_16
- id
- name
- parent_workspace_id
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:
- name: workspace
in: path
required: true
schema: *ref_4
requestBody:
description: new forked workspace
required: true
content:
application/json:
schema:
type: object
properties: *ref_15
required: *ref_16
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:
type: object
required: &ref_19
- logs
- success
properties: &ref_20
logs:
type: object
properties: &ref_407
super_admin:
type: string
enum: &ref_17
- OK
- SKIP
- FAIL
database_credentials:
type: string
enum: *ref_17
valid_dbname:
type: string
enum: *ref_17
created_database:
type: string
enum: *ref_17
db_connect:
type: string
enum: *ref_17
grant_permissions:
type: string
enum: *ref_17
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:
type: string
enum: &ref_18
- ducklake
- datatable
/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:
type: string
enum: *ref_18
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:
type: object
required: *ref_19
properties: *ref_20
/settings/global/{key}:
get:
summary: get global settings
operationId: getGlobal
tags:
- setting
parameters:
- name: key
in: path
required: true
schema: &ref_21
type: string
responses:
'200':
description: status
content:
application/json:
schema: {}
post:
summary: post global settings
operationId: setGlobal
tags:
- setting
parameters:
- name: key
in: path
required: true
schema: *ref_21
requestBody:
description: value set
required: true
content:
application/json:
schema:
type: object
properties:
value: {}
responses:
'200':
description: status
content:
text/plain:
schema:
type: string
/settings/local:
get:
summary: get local settings
operationId: getLocal
tags:
- setting
responses:
'200':
description: status
content:
application/json:
schema: {}
/settings/test_smtp:
post:
summary: test smtp
operationId: testSmtp
tags:
- setting
requestBody:
description: test smtp payload
required: true
content:
application/json:
schema:
type: object
properties:
to:
type: string
smtp:
type: object
properties:
host:
type: string
username:
type: string
password:
type: string
port:
type: integer
from:
type: string
tls_implicit:
type: boolean
disable_tls:
type: boolean
required:
- host
- username
- password
- port
- from
- tls_implicit
- disable_tls
required:
- to
- smtp
responses:
'200':
description: status
content:
text/plain:
schema:
type: string
/settings/test_critical_channels:
post:
summary: test critical channels
operationId: testCriticalChannels
tags:
- setting
requestBody:
description: test critical channel payload
required: true
content:
application/json:
schema:
type: array
items:
type: object
properties:
email:
type: string
slack_channel:
type: string
responses:
'200':
description: status
content:
text/plain:
schema:
type: string
/settings/critical_alerts:
get:
summary: Get all critical alerts
operationId: getCriticalAlerts
tags:
- setting
parameters:
- in: query
name: page
schema:
type: integer
default: 1
description: The page number to retrieve (minimum value is 1)
- in: query
name: page_size
schema:
type: integer
default: 10
maximum: 100
description: Number of alerts per page (maximum is 100)
- in: query
name: acknowledged
schema:
type: boolean
nullable: true
description: >-
Filter by acknowledgment status; true for acknowledged, false for
unacknowledged, and omit for all alerts
responses:
'200':
description: Successfully retrieved all critical alerts
content:
application/json:
schema:
type: object
properties:
alerts:
type: array
items:
type: object
properties: &ref_51
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
total_rows:
type: integer
description: Total number of rows matching the query.
example: 100
total_pages:
type: integer
description: Total number of pages based on the page size.
example: 10
/settings/critical_alerts/{id}/acknowledge:
post:
summary: Acknowledge a critical alert
operationId: acknowledgeCriticalAlert
tags:
- setting
parameters:
- in: path
name: id
required: true
schema:
type: integer
description: The ID of the critical alert to acknowledge
responses:
'200':
description: Successfully acknowledged the critical alert
content:
application/json:
schema:
type: string
example: Critical alert acknowledged
/settings/critical_alerts/acknowledge_all:
post:
summary: Acknowledge all unacknowledged critical alerts
operationId: acknowledgeAllCriticalAlerts
tags:
- setting
responses:
'200':
description: Successfully acknowledged all unacknowledged critical alerts.
content:
application/json:
schema:
type: string
example: All unacknowledged critical alerts acknowledged
/settings/test_license_key:
post:
summary: test license key
operationId: testLicenseKey
tags:
- setting
requestBody:
description: test license key
required: true
content:
application/json:
schema:
type: object
properties:
license_key:
type: string
required:
- license_key
responses:
'200':
description: status
content:
text/plain:
schema:
type: string
/settings/test_object_storage_config:
post:
summary: test object storage config
operationId: testObjectStorageConfig
tags:
- setting
requestBody:
description: test object storage config
required: true
content:
application/json:
schema:
type: object
additionalProperties: true
responses:
'200':
description: status
content:
text/plain:
schema:
type: string
/settings/send_stats:
post:
summary: send stats
operationId: sendStats
tags:
- setting
responses:
'200':
description: status
content:
text/plain:
schema:
type: string
/settings/get_stats:
get:
summary: get encrypted telemetry stats (EE only)
operationId: getStats
tags:
- setting
responses:
'200':
description: base64-encoded encrypted telemetry blob
content:
text/plain:
schema:
type: string
/settings/latest_key_renewal_attempt:
get:
summary: get latest key renewal attempt
operationId: getLatestKeyRenewalAttempt
tags:
- setting
responses:
'200':
description: status
content:
application/json:
schema:
type: object
properties:
result:
type: string
attempted_at:
type: string
format: date-time
required:
- result
- attempted_at
nullable: true
/settings/renew_license_key:
post:
summary: renew license key
operationId: renewLicenseKey
tags:
- setting
parameters:
- name: license_key
in: query
required: false
schema:
type: string
responses:
'200':
description: status
content:
text/plain:
schema:
type: string
/settings/customer_portal:
post:
summary: create customer portal session
operationId: createCustomerPortalSession
tags:
- setting
parameters:
- name: license_key
in: query
required: false
schema:
type: string
responses:
'200':
description: url to portal
content:
text/plain:
schema:
type: string
/saml/test_metadata:
post:
summary: test metadata
operationId: testMetadata
tags:
- setting
requestBody:
description: test metadata
required: true
content:
application/json:
schema:
type: string
responses:
'200':
description: status
content:
text/plain:
schema:
type: string
/settings/list_global:
get:
summary: list global settings
operationId: listGlobalSettings
tags:
- setting
responses:
'200':
description: list of settings
content:
application/json:
schema:
type: array
items:
type: object
properties: &ref_481
name:
type: string
value: {}
required: &ref_482
- name
- value
/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:
type: object
required: &ref_331
- keys
properties: &ref_332
keys:
type: array
items:
type: object
additionalProperties: true
description: Array of JSON Web Keys for JWT verification
/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:
type: object
required: &ref_22
- address
- mount_path
properties: &ref_23
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)
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:
type: object
required: *ref_22
properties: *ref_23
responses:
'200':
description: migration report
content:
application/json:
schema:
type: object
required: &ref_24
- total_secrets
- migrated_count
- failed_count
- failures
properties: &ref_25
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:
type: object
required: &ref_329
- workspace_id
- path
- error
properties: &ref_330
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
description: Details of any failures encountered during migration
/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:
type: object
required: *ref_22
properties: *ref_23
responses:
'200':
description: migration report
content:
application/json:
schema:
type: object
required: *ref_24
properties: *ref_25
/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:
type: object
properties: &ref_30
email:
type: string
login_type:
type: string
enum:
- password
- github
super_admin:
type: boolean
devops:
type: boolean
verified:
type: boolean
name:
type: string
company:
type: string
username:
type: string
operator_only:
type: boolean
first_time_user:
type: boolean
required: &ref_31
- email
- login_type
- super_admin
- verified
- first_time_user
/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:
type: object
properties: &ref_32
workspace_id:
type: string
email:
type: string
is_admin:
type: boolean
operator:
type: boolean
parent_workspace_id:
type: string
nullable: true
required: &ref_33
- workspace_id
- email
- is_admin
- operator
/w/{workspace}/users/whoami:
get:
summary: whoami
operationId: whoami
tags:
- user
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
responses:
'200':
description: user
content:
application/json:
schema:
type: object
properties: *ref_26
required: *ref_27
/w/{workspace}/github_app/token:
post:
summary: get github app token
operationId: getGithubAppToken
tags:
- workspace
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
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:
- name: workspace
in: path
required: true
schema: *ref_4
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: installation_id
in: path
required: true
schema:
type: integer
format: int64
description: The ID of the GitHub installation to delete
responses:
'200':
description: Installation successfully deleted
/w/{workspace}/github_app/export/{installationId}:
get:
summary: Export GitHub installation JWT token
description: >-
Exports the JWT token for a specific GitHub installation in the
workspace
operationId: exportInstallation
tags:
- Git Sync
parameters:
- name: workspace
in: path
required: true
schema:
type: string
- name: installationId
in: path
required: true
schema:
type: integer
responses:
'200':
description: Successfully exported the JWT token
content:
application/json:
schema:
type: object
properties:
jwt_token:
type: string
/w/{workspace}/github_app/import:
post:
summary: Import GitHub installation from JWT token
description: >-
Imports a GitHub installation from a JWT token exported from another
instance
operationId: importInstallation
tags:
- Git Sync
parameters:
- name: workspace
in: path
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- jwt_token
properties:
jwt_token:
type: string
responses:
'200':
description: Successfully imported the installation
/users/accept_invite:
post:
summary: accept invite to workspace
operationId: acceptInvite
tags:
- user
requestBody:
description: accept invite
required: true
content:
application/json:
schema:
type: object
properties:
workspace_id:
type: string
username:
type: string
required:
- workspace_id
responses:
'200':
description: status
content:
text/plain:
schema:
type: string
/users/decline_invite:
post:
summary: decline invite to workspace
operationId: declineInvite
tags:
- user
requestBody:
description: decline invite
required: true
content:
application/json:
schema:
type: object
properties:
workspace_id:
type: string
required:
- workspace_id
responses:
'200':
description: status
content:
text/plain:
schema:
type: string
/w/{workspace}/workspaces/invite_user:
post:
summary: invite user to workspace
operationId: inviteUser
tags:
- workspace
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
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:
- name: workspace
in: path
required: true
schema: *ref_4
requestBody:
description: WorkspaceInvite
required: true
content:
application/json:
schema:
type: object
properties:
email:
type: string
is_admin:
type: boolean
username:
type: string
operator:
type: boolean
required:
- email
- is_admin
- operator
responses:
'200':
description: status
content:
text/plain:
schema:
type: string
/w/{workspace}/workspaces/delete_invite:
post:
summary: delete user invite
operationId: delete invite
tags:
- workspace
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
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:
- name: workspace
in: path
required: true
schema: *ref_4
responses:
'200':
description: status
content:
text/plain:
schema:
type: string
/workspaces/unarchive/{workspace}:
post:
summary: unarchive workspace
operationId: unarchiveWorkspace
tags:
- workspace
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
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:
- name: workspace
in: path
required: true
schema: *ref_4
- 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:
- name: workspace
in: path
required: true
schema: *ref_4
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:
- name: workspace
in: path
required: true
schema: *ref_4
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:
- name: workspace
in: path
required: true
schema: *ref_4
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:
- name: workspace
in: path
required: true
schema: *ref_4
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:
- name: workspace
in: path
required: true
schema: *ref_4
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: username
in: path
required: true
schema:
type: string
responses:
'200':
description: user
content:
application/json:
schema:
type: object
properties: *ref_26
required: *ref_27
/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:
- name: workspace
in: path
required: true
schema: *ref_4
requestBody:
required: true
content:
application/json:
schema:
nullable: true
type: object
required: *ref_28
properties: *ref_29
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:
- name: workspace
in: path
required: true
schema: *ref_4
- 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:
type: object
required: &ref_490
- all_ahead_items_visible
- all_behind_items_visible
- skipped_comparison
- diffs
- summary
properties: &ref_491
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:
type: object
required: &ref_492
- kind
- path
- ahead
- behind
- has_changes
- exists_in_source
- exists_in_fork
properties: &ref_493
kind:
type: string
enum:
- script
- flow
- app
- resource
- variable
- resource_type
description: Type of the item
path:
type: string
description: Path of the item in the workspace
ahead:
type: integer
description: Number of versions source is ahead of target
behind:
type: integer
description: Number of versions source is behind target
has_changes:
type: boolean
description: Whether the item has any differences
exists_in_source:
type: boolean
description: If the item exists in the source workspace
exists_in_fork:
type: boolean
description: If the item exists in the fork workspace
summary:
description: Summary statistics of the comparison
type: object
required: &ref_494
- total_diffs
- total_ahead
- total_behind
- scripts_changed
- flows_changed
- apps_changed
- resources_changed
- variables_changed
- resource_types_changed
- folders_changed
- conflicts
properties: &ref_495
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)
/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:
- name: workspace
in: path
required: true
schema: *ref_4
- 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:
- name: page
description: which page to return (start at 1, default 1)
in: query
schema: *ref_13
- name: per_page
description: number of items to return for a given page (default 30, max 100)
in: query
schema: *ref_14
- name: active_only
in: query
description: filter only active users
schema:
type: boolean
responses:
'200':
description: user
content:
application/json:
schema:
type: array
items:
type: object
properties: *ref_30
required: *ref_31
/w/{workspace}/workspaces/list_pending_invites:
get:
summary: list pending invites for a workspace
operationId: listPendingInvites
tags:
- workspace
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
responses:
'200':
description: user
content:
application/json:
schema:
type: array
items:
type: object
properties: *ref_32
required: *ref_33
/w/{workspace}/workspaces/get_settings:
get:
summary: get settings
operationId: getSettings
tags:
- workspace
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
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:
type: object
description: Configuration for auto-inviting users to the workspace
properties: &ref_320
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
plan:
type: string
customer_id:
type: string
webhook:
type: string
deploy_to:
type: string
ai_config:
type: object
properties: &ref_37
providers:
type: object
additionalProperties:
type: object
properties: &ref_340
resource_path:
type: string
models:
type: array
items:
type: string
required: &ref_341
- resource_path
- models
default_model:
type: object
properties: &ref_34
model:
type: string
provider:
type: string
enum: &ref_339
- openai
- azure_openai
- anthropic
- mistral
- deepseek
- googleai
- groq
- openrouter
- togetherai
- aws_bedrock
- customai
required: &ref_35
- model
- provider
code_completion_model:
type: object
properties: *ref_34
required: *ref_35
custom_prompts:
type: object
additionalProperties:
type: string
max_tokens_per_model:
type: object
additionalProperties:
type: integer
minimum: 1
maximum: 2000000
error_handler:
type: object
description: Configuration for the workspace error handler
properties: &ref_321
path:
type: string
description: Path to the error handler script or flow
extra_args:
type: object
description: The arguments to pass to the script or flow
additionalProperties: true
muted_on_cancel:
type: boolean
default: false
muted_on_user_path:
type: boolean
default: false
success_handler:
type: object
description: Configuration for the workspace success handler
properties: &ref_322
path:
type: string
description: Path to the success handler script or flow
extra_args:
type: object
description: The arguments to pass to the script or flow
additionalProperties: true
large_file_storage:
type: object
properties: &ref_38
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:
type: object
properties: &ref_465
pattern:
type: string
allow:
type: string
required: &ref_466
- pattern
- allow
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
ducklake:
type: object
required: &ref_39
- ducklakes
properties: &ref_40
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
datatable:
type: object
required: &ref_41
- datatables
properties: &ref_42
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
git_sync:
type: object
properties: &ref_43
repositories:
type: array
items:
type: object
properties: &ref_44
script_path:
type: string
git_repo_resource_path:
type: string
use_individual_branch:
type: boolean
group_by_folder:
type: boolean
collapsed:
type: boolean
settings:
type: object
properties:
include_path:
type: array
items:
type: string
include_type:
type: array
items:
type: string
enum: &ref_36
- script
- flow
- app
- folder
- resource
- variable
- secret
- resourcetype
- schedule
- user
- group
- trigger
- settings
- key
exclude_path:
type: array
items:
type: string
extra_include_path:
type: array
items:
type: string
exclude_types_override:
type: array
items:
type: string
enum: *ref_36
required: &ref_45
- script_path
- git_repo_resource_path
deploy_ui:
type: object
properties: &ref_46
include_path:
type: array
items:
type: string
include_type:
type: array
items:
type: string
enum: *ref_36
default_app:
type: string
default_scripts:
type: object
properties: &ref_47
order:
type: array
items:
type: string
hidden:
type: array
items:
type: string
default_script_content:
additionalProperties:
type: string
mute_critical_alerts:
type: boolean
color:
type: string
operator_settings:
nullable: true
type: object
required: *ref_28
properties: *ref_29
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:
- name: workspace
in: path
required: true
schema: *ref_4
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:
- name: workspace
in: path
required: true
schema: *ref_4
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:
- name: workspace
in: path
required: true
schema: *ref_4
- 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:
- name: workspace
in: path
required: true
schema: *ref_4
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:
- name: workspace
in: path
required: true
schema: *ref_4
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:
- name: workspace
in: path
required: true
schema: *ref_4
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:
- name: workspace
in: path
required: true
schema: *ref_4
- 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:
type: object
properties: &ref_444
importer_path:
type: string
importer_kind:
type: string
enum:
- script
- flow
- app
importer_node_ids:
type: array
items:
type: string
nullable: true
required: &ref_445
- importer_path
- importer_kind
/w/{workspace}/workspaces/get_dependents_amounts:
post:
summary: get dependents amounts for multiple imported paths
operationId: getDependentsAmounts
tags:
- workspace
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
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:
type: object
properties: &ref_446
imported_path:
type: string
count:
type: integer
format: int64
required: &ref_447
- imported_path
- count
/w/{workspace}/workspaces/get_dependency_map:
get:
summary: get dependency map
operationId: getDependencyMap
tags:
- workspace
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
responses:
'200':
description: dmap
content:
application/json:
schema:
type: array
items:
type: object
properties: &ref_443
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
/w/{workspace}/workspaces/edit_slack_command:
post:
summary: edit slack command
operationId: editSlackCommand
tags:
- workspace
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
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:
- name: workspace
in: path
required: true
schema: *ref_4
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:
- name: workspace
in: path
required: true
schema: *ref_4
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:
- name: workspace
in: path
required: true
schema: *ref_4
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:
- name: workspace
in: path
required: true
schema: *ref_4
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:
- name: workspace
in: path
required: true
schema: *ref_4
- 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:
- name: workspace
in: path
required: true
schema: *ref_4
- 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:
- name: workspace
in: path
required: true
schema: *ref_4
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:
- name: workspace
in: path
required: true
schema: *ref_4
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:
- name: workspace
in: path
required: true
schema: *ref_4
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:
- name: workspace
in: path
required: true
schema: *ref_4
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:
- name: workspace
in: path
required: true
schema: *ref_4
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:
- name: workspace
in: path
required: true
schema: *ref_4
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:
- name: workspace
in: path
required: true
schema: *ref_4
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:
- name: workspace
in: path
required: true
schema: *ref_4
requestBody:
description: WorkspaceCopilotConfig
required: true
content:
application/json:
schema:
type: object
properties: *ref_37
responses:
'200':
description: status
content:
text/plain:
schema:
type: string
/w/{workspace}/workspaces/get_copilot_info:
get:
summary: get copilot info
operationId: getCopilotInfo
tags:
- workspace
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
responses:
'200':
description: status
content:
application/json:
schema:
type: object
properties: *ref_37
/w/{workspace}/workspaces/edit_error_handler:
post:
summary: edit error handler
operationId: editErrorHandler
tags:
- workspace
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
requestBody:
description: WorkspaceErrorHandler
required: true
content:
application/json:
schema:
description: >-
Request body for editing the workspace error handler. Accepts
both new grouped format and legacy flat format for backward
compatibility.
oneOf: &ref_323
- type: object
description: New grouped format for editing error handler
properties: &ref_324
path:
type: string
description: Path to the error handler script or flow
extra_args:
type: object
description: The arguments to pass to the script or flow
additionalProperties: true
muted_on_cancel:
type: boolean
default: false
muted_on_user_path:
type: boolean
default: false
- type: object
description: >-
Legacy flat format for editing error handler (deprecated,
use new format)
properties: &ref_325
error_handler:
type: string
description: Path to the error handler script or flow
error_handler_extra_args:
type: object
description: The arguments to pass to the script or flow
additionalProperties: true
error_handler_muted_on_cancel:
type: boolean
default: false
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:
- name: workspace
in: path
required: true
schema: *ref_4
requestBody:
description: WorkspaceSuccessHandler
required: true
content:
application/json:
schema:
description: >-
Request body for editing the workspace success handler. Accepts
both new grouped format and legacy flat format for backward
compatibility.
oneOf: &ref_326
- type: object
description: New grouped format for editing success handler
properties: &ref_327
path:
type: string
description: Path to the success handler script or flow
extra_args:
type: object
description: The arguments to pass to the script or flow
additionalProperties: true
- type: object
description: >-
Legacy flat format for editing success handler (deprecated,
use new format)
properties: &ref_328
success_handler:
type: string
description: Path to the success handler script or flow
success_handler_extra_args:
type: object
description: The arguments to pass to the script or flow
additionalProperties: true
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:
- name: workspace
in: path
required: true
schema: *ref_4
requestBody:
description: LargeFileStorage info
required: true
content:
application/json:
schema:
type: object
properties:
large_file_storage:
type: object
properties: *ref_38
responses:
'200':
description: status
content:
application/json:
schema: {}
/w/{workspace}/workspaces/list_ducklakes:
get:
summary: list ducklakes
operationId: listDucklakes
tags:
- workspace
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
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:
- name: workspace
in: path
required: true
schema: *ref_4
responses:
'200':
description: status
content:
application/json:
schema:
type: array
items:
type: string
/w/{workspace}/workspaces/list_datatable_schemas:
get:
summary: list schemas of all connected Datatables
operationId: listDataTableSchemas
tags:
- workspace
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
responses:
'200':
description: schemas of all datatables
content:
application/json:
schema:
type: array
items:
type: object
required: &ref_461
- datatable_name
- schemas
properties: &ref_462
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
/w/{workspace}/workspaces/edit_ducklake_config:
post:
summary: edit ducklake settings
operationId: editDucklakeConfig
tags:
- workspace
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
requestBody:
description: Ducklake settings
required: true
content:
application/json:
schema:
type: object
required:
- settings
properties:
settings:
type: object
required: *ref_39
properties: *ref_40
responses:
'200':
description: status
content:
application/json:
schema: {}
/w/{workspace}/workspaces/edit_datatable_config:
post:
summary: edit datatable settings
operationId: editDataTableConfig
tags:
- workspace
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
requestBody:
description: DataTable settings
required: true
content:
application/json:
schema:
type: object
required:
- settings
properties:
settings:
type: object
required: *ref_41
properties: *ref_42
responses:
'200':
description: status
content:
application/json:
schema: {}
/w/{workspace}/workspaces/edit_git_sync_config:
post:
summary: edit workspace git sync settings
operationId: editWorkspaceGitSyncConfig
tags:
- workspace
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
requestBody:
description: Workspace Git sync settings
required: true
content:
application/json:
schema:
type: object
properties:
git_sync_settings:
type: object
properties: *ref_43
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:
- name: workspace
in: path
required: true
schema: *ref_4
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:
type: object
properties: *ref_44
required: *ref_45
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:
- name: workspace
in: path
required: true
schema: *ref_4
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:
- name: workspace
in: path
required: true
schema: *ref_4
requestBody:
description: Workspace deploy UI settings
required: true
content:
application/json:
schema:
type: object
properties:
deploy_ui_settings:
type: object
properties: *ref_46
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:
- name: workspace
in: path
required: true
schema: *ref_4
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:
- name: workspace
in: path
required: true
schema: *ref_4
requestBody:
description: Workspace default app
content:
application/json:
schema:
type: object
properties: *ref_47
responses:
'200':
description: status
content:
text/plain:
schema:
type: string
get:
summary: get default scripts for workspace
operationId: get default scripts
tags:
- workspace
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
responses:
'200':
description: status
content:
application/json:
schema:
type: object
properties: *ref_47
/w/{workspace}/workspaces/set_environment_variable:
post:
summary: set environment variable
operationId: setEnvironmentVariable
tags:
- workspace
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
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:
- name: workspace
in: path
required: true
schema: *ref_4
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:
- name: workspace
in: path
required: true
schema: *ref_4
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:
- name: workspace
in: path
required: true
schema: *ref_4
responses:
'200':
description: status
content:
application/json:
schema:
type: object
properties:
default_app_path:
type: string
/w/{workspace}/workspaces/usage:
get:
summary: get usage
operationId: getWorkspaceUsage
tags:
- workspace
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
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:
- name: workspace
in: path
required: true
schema: *ref_4
responses:
'200':
description: status
content:
application/json:
schema:
type: object
properties:
http_routes_used:
type: boolean
websocket_used:
type: boolean
kafka_used:
type: boolean
nats_used:
type: boolean
postgres_used:
type: boolean
mqtt_used:
type: boolean
gcp_used:
type: boolean
sqs_used:
type: boolean
email_used:
type: boolean
nextcloud_used:
type: boolean
required:
- http_routes_used
- websocket_used
- kafka_used
- nats_used
- postgres_used
- mqtt_used
- gcp_used
- sqs_used
- email_used
- nextcloud_used
/w/{workspace}/users/list:
get:
summary: list users
operationId: listUsers
tags:
- user
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
responses:
'200':
description: user
content:
application/json:
schema:
type: array
items:
type: object
properties: *ref_26
required: *ref_27
/w/{workspace}/users/list_usage:
get:
summary: list users usage
operationId: listUsersUsage
tags:
- user
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
responses:
'200':
description: user
content:
application/json:
schema:
type: array
items:
type: object
properties: &ref_356
email:
type: string
executions:
type: number
/w/{workspace}/users/list_usernames:
get:
summary: list usernames
operationId: listUsernames
tags:
- user
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
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:
- name: workspace
in: path
required: true
schema: *ref_4
- 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:
type: object
properties: &ref_456
name:
type: string
description:
type: string
nullable: true
scopes:
type: array
items:
type: object
properties: &ref_454
value:
type: string
label:
type: string
description:
type: string
nullable: true
requires_resource_path:
type: boolean
required: &ref_455
- value
- label
- requires_resource_path
required: &ref_457
- name
- scopes
/users/tokens/create:
post:
summary: create token
operationId: createToken
tags:
- user
requestBody:
description: new token
required: true
content:
application/json:
schema:
type: object
properties: &ref_360
label:
type: string
expiration:
type: string
format: date-time
scopes:
type: array
items:
type: string
workspace_id:
type: string
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:
type: object
properties: &ref_361
label:
type: string
expiration:
type: string
format: date-time
impersonate_email:
type: string
workspace_id:
type: string
required: &ref_362
- impersonate_email
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
- name: page
description: which page to return (start at 1, default 1)
in: query
schema: *ref_13
- name: per_page
description: number of items to return for a given page (default 30, max 100)
in: query
schema: *ref_14
responses:
'200':
description: truncated token
content:
application/json:
schema:
type: array
items:
type: object
properties: &ref_82
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: &ref_83
- token_prefix
- created_at
- last_used_at
/w/{workspace}/oidc/token/{audience}:
post:
summary: get OIDC token (ee only)
operationId: getOidcToken
tags:
- oidc
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- 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:
- name: workspace
in: path
required: true
schema: *ref_4
- 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:
type: object
properties: &ref_365
path:
type: string
description: The path to the variable
value:
type: string
description: The value of the variable
is_secret:
type: boolean
description: Whether the variable is a secret
description:
type: string
description: The description of the variable
account:
type: integer
description: The account identifier
is_oauth:
type: boolean
description: Whether the variable is an OAuth variable
expires_at:
type: string
description: The expiration date of the variable
format: date-time
required: &ref_366
- path
- value
- is_secret
- description
responses:
'201':
description: variable created
content:
text/plain:
schema:
type: string
/w/{workspace}/variables/encrypt:
post:
summary: encrypt value
operationId: encryptValue
tags:
- variable
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
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:
- name: workspace
in: path
required: true
schema: *ref_4
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
- 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:
type: object
properties: &ref_367
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
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
- 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:
type: object
properties: &ref_49
workspace_id:
type: string
path:
type: string
value:
type: string
is_secret:
type: boolean
description:
type: string
account:
type: integer
is_oauth:
type: boolean
extra_perms:
type: object
additionalProperties:
type: boolean
is_expired:
type: boolean
refresh_error:
type: string
is_linked:
type: boolean
is_refreshed:
type: boolean
expires_at:
type: string
format: date-time
required: &ref_50
- workspace_id
- path
- is_secret
- extra_perms
/w/{workspace}/variables/get_value/{path}:
get:
summary: get variable value
operationId: getVariableValue
tags:
- variable
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
- 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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path_start
description: filter variables by path prefix
in: query
schema:
type: string
- name: page
description: which page to return (start at 1, default 1)
in: query
schema: *ref_13
- name: per_page
description: number of items to return for a given page (default 30, max 100)
in: query
schema: *ref_14
responses:
'200':
description: variable list
content:
application/json:
schema:
type: array
items:
type: object
properties: *ref_49
required: *ref_50
/w/{workspace}/variables/list_contextual:
get:
summary: list contextual variables
operationId: listContextualVariables
tags:
- variable
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
responses:
'200':
description: contextual variable list
content:
application/json:
schema:
type: array
items:
type: object
properties: &ref_363
name:
type: string
value:
type: string
description:
type: string
is_custom:
type: boolean
required: &ref_364
- name
- value
- description
- is_custom
/w/{workspace}/workspaces/get_secondary_storage_names:
get:
summary: get secondary storage names
operationId: getSecondaryStorageNames
tags:
- setting
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- 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:
- name: workspace
in: path
required: true
schema: *ref_4
- 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:
type: object
properties: *ref_51
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:
- name: workspace
in: path
required: true
schema: *ref_4
- 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:
- name: workspace
in: path
required: true
schema: *ref_4
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:
- name: workspace
in: path
required: true
schema: *ref_4
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:
- name: workspace
in: path
required: true
schema: *ref_4
responses:
'200':
description: list of protection rules
content:
application/json:
schema:
type: array
items:
type: object
description: >-
A workspace protection rule defining restrictions and bypass
permissions
required: &ref_499
- name
- rules
- bypass_groups
- bypass_users
properties: &ref_500
name:
type: string
description: Unique name for the protection rule
example: Production Protection
workspace_id:
type: string
rules:
type: array
description: Configuration of protection restrictions
items: &ref_52
type: string
enum: &ref_501
- DisableDirectDeployment
- DisableWorkspaceForking
bypass_groups:
type: array
description: Groups that can bypass this ruleset
items: &ref_53
type: string
bypass_users:
type: array
description: Users that can bypass this ruleset
items: &ref_54
type: string
post:
summary: create a new protection rule
operationId: createProtectionRule
tags:
- workspace
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
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:
type: array
description: Configuration of protection restrictions
items: *ref_52
bypass_groups:
type: array
description: Groups that can bypass this ruleset
items: *ref_53
bypass_users:
type: array
description: Users that can bypass this ruleset
items: *ref_54
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:
- name: workspace
in: path
required: true
schema: *ref_4
- 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:
type: array
description: Configuration of protection restrictions
items: *ref_52
bypass_groups:
type: array
description: Groups that can bypass this ruleset
items: *ref_53
bypass_users:
type: array
description: Users that can bypass this ruleset
items: *ref_54
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: rule_name
in: path
required: true
schema:
type: string
description: Name of the protection rule to delete
responses:
'200':
description: protection rule deleted successfully
content:
text/plain:
schema:
type: string
'404':
description: protection rule not found
/w/{workspace}/workspaces/public_app_rate_limit:
post:
summary: Set public app rate limit for this workspace
operationId: setPublicAppRateLimit
tags:
- setting
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
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:
- name: client_name
in: path
required: true
schema: &ref_55
type: string
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:
- name: workspace
in: path
required: true
schema: *ref_4
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:
- name: client_name
in: path
required: true
schema: *ref_55
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:
type: object
properties: &ref_56
access_token:
type: string
expires_in:
type: integer
refresh_token:
type: string
scope:
type: array
items:
type: string
grant_type:
type: string
required: &ref_57
- access_token
/w/{workspace}/oauth/create_account:
post:
summary: create OAuth account
operationId: createAccount
tags:
- oauth
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
requestBody:
description: code endpoint
required: true
content:
application/json:
schema:
type: object
properties:
refresh_token:
type: string
description: >-
OAuth refresh token. For authorization_code flow, this
contains the actual refresh token. For client_credentials
flow, this must be set to an empty string.
expires_in:
type: integer
client:
type: string
grant_type:
type: string
default: authorization_code
cc_client_id:
type: string
description: >-
OAuth client ID for resource-level credentials
(client_credentials flow only)
cc_client_secret:
type: string
description: >-
OAuth client secret for resource-level credentials
(client_credentials flow only)
cc_token_url:
type: string
description: >-
OAuth token URL override for resource-level authentication
(client_credentials flow only)
mcp_server_url:
type: string
description: MCP server URL for MCP OAuth token refresh
required:
- refresh_token
- expires_in
- client
responses:
'200':
description: account set
content:
text/plain:
schema:
type: string
/oauth/connect_client_credentials/{client}:
post:
summary: connect OAuth using client credentials
operationId: connectClientCredentials
tags:
- oauth
parameters:
- name: client
in: path
description: OAuth client name
required: true
schema:
type: string
requestBody:
description: client credentials flow parameters
required: true
content:
application/json:
schema:
type: object
properties:
scopes:
type: array
items:
type: string
cc_client_id:
type: string
description: OAuth client ID for resource-level authentication
cc_client_secret:
type: string
description: OAuth client secret for resource-level authentication
cc_token_url:
type: string
description: OAuth token URL override for resource-level authentication
required:
- cc_client_id
- cc_client_secret
responses:
'200':
description: OAuth token response
content:
application/json:
schema:
type: object
properties: *ref_56
required: *ref_57
/w/{workspace}/oauth/refresh_token/{id}:
post:
summary: refresh token
operationId: refreshToken
tags:
- oauth
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- name: id
in: path
required: true
schema: &ref_58
type: integer
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: id
in: path
required: true
schema: *ref_58
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:
- name: workspace
in: path
required: true
schema: *ref_4
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:
- name: workspace
in: path
required: true
schema: *ref_4
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:
- name: workspace
in: path
required: true
schema: *ref_4
- 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:
type: object
properties: &ref_372
path:
type: string
description: The path to the resource
value: {}
description:
type: string
description: The description of the resource
resource_type:
type: string
description: The resource_type associated with the resource
required: &ref_373
- path
- value
- resource_type
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
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:
- name: workspace
in: path
required: true
schema: *ref_4
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
requestBody:
description: updated resource
required: true
content:
application/json:
schema:
type: object
properties: &ref_374
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
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
responses:
'200':
description: resource
content:
application/json:
schema:
type: object
properties: &ref_375
workspace_id:
type: string
path:
type: string
description:
type: string
resource_type:
type: string
value: {}
is_oauth:
type: boolean
extra_perms:
type: object
additionalProperties:
type: boolean
created_by:
type: string
edited_at:
type: string
format: date-time
required: &ref_376
- path
- resource_type
- is_oauth
/w/{workspace}/resources/get_value_interpolated/{path}:
get:
summary: get resource interpolated (variables and resources are fully unrolled)
operationId: getResourceValueInterpolated
tags:
- resource
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
- 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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
- 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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: page
description: which page to return (start at 1, default 1)
in: query
schema: *ref_13
- name: per_page
description: number of items to return for a given page (default 30, max 100)
in: query
schema: *ref_14
- name: resource_type
description: resource_types to list from, separated by ',',
in: query
schema:
type: string
- name: resource_type_exclude
description: resource_types to not list from, separated by ',',
in: query
schema:
type: string
- name: path_start
description: filter resources by path prefix
in: query
schema:
type: string
responses:
'200':
description: resource list
content:
application/json:
schema:
type: array
items:
type: object
properties: &ref_377
workspace_id:
type: string
path:
type: string
description:
type: string
resource_type:
type: string
value: {}
is_oauth:
type: boolean
extra_perms:
type: object
additionalProperties:
type: boolean
is_expired:
type: boolean
refresh_error:
type: string
is_linked:
type: boolean
is_refreshed:
type: boolean
account:
type: number
created_by:
type: string
edited_at:
type: string
format: date-time
required: &ref_378
- path
- resource_type
- is_oauth
- is_linked
- is_refreshed
/w/{workspace}/resources/list_search:
get:
summary: list resources for search
operationId: listSearchResource
tags:
- resource
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: name
in: path
required: true
schema: &ref_235
type: string
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:
- name: workspace
in: path
required: true
schema: *ref_4
requestBody:
description: new resource_type
required: true
content:
application/json:
schema:
type: object
properties: &ref_59
workspace_id:
type: string
name:
type: string
schema: {}
description:
type: string
created_by:
type: string
edited_at:
type: string
format: date-time
format_extension:
type: string
required: &ref_60
- name
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:
- name: workspace
in: path
required: true
schema: *ref_4
responses:
'200':
description: map from resource type to file ext
content:
application/json:
schema: {}
/w/{workspace}/resources/type/delete/{path}:
delete:
summary: delete resource_type
operationId: deleteResourceType
tags:
- resource
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
requestBody:
description: updated resource_type
required: true
content:
application/json:
schema:
type: object
properties: &ref_379
schema: {}
description:
type: string
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
responses:
'200':
description: resource_type deleted
content:
application/json:
schema:
type: object
properties: *ref_59
required: *ref_60
/w/{workspace}/resources/type/exists/{path}:
get:
summary: does resource_type exists
operationId: existsResourceType
tags:
- resource
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
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:
- name: workspace
in: path
required: true
schema: *ref_4
responses:
'200':
description: resource_type list
content:
application/json:
schema:
type: array
items:
type: object
properties: *ref_59
required: *ref_60
/w/{workspace}/resources/type/listnames:
get:
summary: list resource_types names
operationId: listResourceTypeNames
tags:
- resource
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
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:
- name: workspace
in: path
required: true
schema: *ref_4
- 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:
- name: workspace
in: path
required: true
schema: *ref_4
- 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:
- name: workspace
in: path
required: true
schema: *ref_4
- 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:
- name: workspace
in: path
required: true
schema: *ref_4
- 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:
- name: workspace
in: path
required: true
schema: *ref_4
- 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:
- name: id
in: path
required: true
schema: *ref_61
responses:
'200':
description: flow
content:
application/json:
schema:
type: object
properties:
flow:
type: object
description: >-
Top-level flow definition containing metadata,
configuration, and the flow structure
properties: &ref_98
summary:
type: string
description: Short description of what this flow does
description:
type: string
description: Detailed documentation for this flow
value:
type: object
description: >-
The flow structure containing modules and optional
preprocessor/failure handlers
properties: &ref_530
modules:
type: array
description: >-
Array of steps that execute in sequence. Each step
can be a script, subflow, loop, or branch
items:
type: object
description: >-
A single step in a flow. Can be a script,
subflow, loop, or branch
properties: &ref_64
id:
type: string
description: >-
Unique identifier for this step. Used to
reference results via 'results.step_id'.
Must be a valid identifier (alphanumeric,
underscore, hyphen)
value:
description: >-
The actual implementation of a flow step.
Can be a script (inline or referenced),
subflow, loop, branch, or special module
type
oneOf: &ref_70
- type: object
description: >-
Inline script with code defined directly
in the flow. Use 'bun' as default
language if unspecified. The script
receives arguments from input_transforms
properties: &ref_284
input_transforms:
type: object
description: >-
Map of parameter names to their values
(static or JavaScript expressions).
These become the script's input
arguments
additionalProperties:
description: >-
Maps input parameters for a step. Can be
a static value or a JavaScript
expression that references previous
results or flow inputs
oneOf: &ref_62
- type: object
description: >-
Static value passed directly to the
step. Use for hardcoded values or
resource references like
'$res:path/to/resource'
properties: &ref_114
value:
description: >-
The static value. For resources, use
format '$res:path/to/resource'
type:
type: string
enum:
- static
required: &ref_115
- type
- type: object
description: >-
JavaScript expression evaluated at
runtime. Can reference previous step
results via 'results.step_id' or flow
inputs via 'flow_input.property'. Inside
loops, use 'flow_input.iter.value' for
the current iteration value
properties: &ref_66
expr:
type: string
description: >-
JavaScript expression returning the
value. Available variables - results
(object with all previous step results),
flow_input (flow inputs),
flow_input.iter (in loops)
type:
type: string
enum:
- javascript
required: &ref_67
- expr
- type
- type: object
description: >-
Value resolved by the AI runtime for
this input. The AI engine decides how to
satisfy the parameter.
properties: &ref_68
type:
type: string
enum:
- ai
required: &ref_69
- type
discriminator: &ref_63
propertyName: type
mapping:
static: >-
#/components/schemas/schemas-StaticTransform
javascript: >-
#/components/schemas/schemas-JavascriptTransform
ai: '#/components/schemas/schemas-AiTransform'
content:
type: string
description: >-
The script source code. Should export a
'main' function
language:
type: string
description: Programming language for this script
enum:
- deno
- bun
- python3
- go
- bash
- powershell
- postgresql
- mysql
- bigquery
- snowflake
- mssql
- oracledb
- graphql
- nativets
- php
- rust
- ansible
- csharp
- nu
- java
- ruby
- duckdb
path:
type: string
description: Optional path for saving this script
lock:
type: string
description: Lock file content for dependencies
type:
type: string
enum:
- rawscript
tag:
type: string
description: Worker group tag for execution routing
concurrent_limit:
type: number
description: >-
Maximum concurrent executions of this
script
concurrency_time_window_s:
type: number
description: Time window for concurrent_limit
custom_concurrency_key:
type: string
description: >-
Custom key for grouping concurrent
executions
is_trigger:
type: boolean
description: >-
If true, this script is a trigger that
can start the flow
assets:
type: array
description: >-
External resources this script accesses
(S3 objects, resources, etc.)
items:
type: object
required:
- path
- kind
properties:
path:
type: string
description: Path to the asset
kind:
type: string
description: Type of asset
enum:
- s3object
- resource
- ducklake
- datatable
access_type:
type: string
nullable: true
description: Access level for this asset
enum:
- r
- w
- rw
alt_access_type:
type: string
nullable: true
description: Alternative access level
enum:
- r
- w
- rw
required: &ref_285
- type
- content
- language
- input_transforms
- type: object
description: >-
Reference to an existing script by path.
Use this when calling a previously saved
script instead of writing inline code
properties: &ref_286
input_transforms:
type: object
description: >-
Map of parameter names to their values
(static or JavaScript expressions).
These become the script's input
arguments
additionalProperties:
description: >-
Maps input parameters for a step. Can be
a static value or a JavaScript
expression that references previous
results or flow inputs
oneOf: *ref_62
discriminator: *ref_63
path:
type: string
description: >-
Path to the script in the workspace
(e.g., 'f/scripts/send_email')
hash:
type: string
description: >-
Optional specific version hash of the
script to use
type:
type: string
enum:
- script
tag_override:
type: string
description: >-
Override the script's default worker
group tag
is_trigger:
type: boolean
description: >-
If true, this script is a trigger that
can start the flow
required: &ref_287
- type
- path
- input_transforms
- type: object
description: >-
Reference to an existing flow by path.
Use this to call another flow as a
subflow
properties: &ref_288
input_transforms:
type: object
description: >-
Map of parameter names to their values
(static or JavaScript expressions).
These become the subflow's input
arguments
additionalProperties:
description: >-
Maps input parameters for a step. Can be
a static value or a JavaScript
expression that references previous
results or flow inputs
oneOf: *ref_62
discriminator: *ref_63
path:
type: string
description: >-
Path to the flow in the workspace (e.g.,
'f/flows/process_user')
type:
type: string
enum:
- flow
required: &ref_289
- type
- path
- input_transforms
- type: object
description: >-
Executes nested modules in a loop over
an iterator. Inside the loop, use
'flow_input.iter.value' to access the
current iteration value, and
'flow_input.iter.index' for the index.
Supports parallel execution for better
performance on I/O-bound operations
properties: &ref_290
modules:
type: array
description: >-
Steps to execute for each iteration.
These can reference the iteration value
via 'flow_input.iter.value'
items:
type: object
description: >-
A single step in a flow. Can be a
script, subflow, loop, or branch
properties: *ref_64
required: &ref_65
- value
- id
iterator:
description: >-
Maps input parameters for a step. Can be
a static value or a JavaScript
expression that references previous
results or flow inputs
oneOf: *ref_62
discriminator: *ref_63
skip_failures:
type: boolean
description: >-
If true, iteration failures don't stop
the loop. Failed iterations return null
type:
type: string
enum:
- forloopflow
parallel:
type: boolean
description: >-
If true, iterations run concurrently
(faster for I/O-bound operations). Use
with parallelism to control concurrency
parallelism:
description: >-
Maps input parameters for a step. Can be
a static value or a JavaScript
expression that references previous
results or flow inputs
oneOf: *ref_62
discriminator: *ref_63
squash:
type: boolean
required: &ref_291
- modules
- iterator
- skip_failures
- type
- type: object
description: >-
Executes nested modules repeatedly while
a condition is true. The loop checks the
condition after each iteration. Use
stop_after_if on modules to control loop
termination
properties: &ref_292
modules:
type: array
description: >-
Steps to execute in each iteration. Use
stop_after_if to control when the loop
ends
items:
type: object
description: >-
A single step in a flow. Can be a
script, subflow, loop, or branch
properties: *ref_64
required: *ref_65
skip_failures:
type: boolean
description: >-
If true, iteration failures don't stop
the loop. Failed iterations return null
type:
type: string
enum:
- whileloopflow
parallel:
type: boolean
description: >-
If true, iterations run concurrently
(use with caution in while loops)
parallelism:
description: >-
Maps input parameters for a step. Can be
a static value or a JavaScript
expression that references previous
results or flow inputs
oneOf: *ref_62
discriminator: *ref_63
squash:
type: boolean
required: &ref_293
- modules
- skip_failures
- type
- type: object
description: >-
Conditional branching where only the
first matching branch executes. Branches
are evaluated in order, and the first
one with a true expression runs. If no
branches match, the default branch
executes
properties: &ref_294
branches:
type: array
description: >-
Array of branches to evaluate in order.
The first branch with expr evaluating to
true executes
items:
type: object
properties:
summary:
type: string
description: >-
Short description of this branch
condition
expr:
type: string
description: >-
JavaScript expression that returns
boolean. Can use 'results.step_id' or
'flow_input'. First true expr wins
modules:
type: array
description: >-
Steps to execute if this branch's expr
is true
items:
type: object
description: >-
A single step in a flow. Can be a
script, subflow, loop, or branch
properties: *ref_64
required: *ref_65
required:
- modules
- expr
default:
type: array
description: >-
Steps to execute if no branch
expressions match
items:
type: object
description: >-
A single step in a flow. Can be a
script, subflow, loop, or branch
properties: *ref_64
required: *ref_65
type:
type: string
enum:
- branchone
required: &ref_295
- branches
- default
- type
- type: object
description: >-
Parallel branching where all branches
execute simultaneously. Unlike
BranchOne, all branches run regardless
of conditions. Useful for executing
independent tasks concurrently
properties: &ref_296
branches:
type: array
description: >-
Array of branches that all execute
(either in parallel or sequentially)
items:
type: object
properties:
summary:
type: string
description: >-
Short description of this branch's
purpose
skip_failure:
type: boolean
description: >-
If true, failure in this branch doesn't
fail the entire flow
modules:
type: array
description: Steps to execute in this branch
items:
type: object
description: >-
A single step in a flow. Can be a
script, subflow, loop, or branch
properties: *ref_64
required: *ref_65
required:
- modules
type:
type: string
enum:
- branchall
parallel:
type: boolean
description: >-
If true, all branches execute
concurrently. If false, they execute
sequentially
required: &ref_297
- branches
- type
- type: object
description: >-
Pass-through module that returns its
input unchanged. Useful for flow
structure or as a placeholder
properties: &ref_298
type:
type: string
enum:
- identity
flow:
type: boolean
description: >-
If true, marks this as a flow identity
(special handling)
required: &ref_299
- type
- type: object
description: >-
AI agent step that can use tools to
accomplish tasks. The agent receives
inputs and can call any of its
configured tools to complete the task
properties: &ref_300
input_transforms:
type: object
description: >-
Input parameters for the AI agent mapped
to their values
properties:
provider:
description: >-
Provider configuration - can be static
(ProviderConfig), JavaScript expression,
or AI-determined
oneOf: &ref_302
- type: object
description: >-
Static provider configuration passed
directly to the AI agent
properties: &ref_515
value:
type: object
description: >-
Complete AI provider configuration with
resource reference and model selection
properties: &ref_513
kind:
type: string
description: Supported AI provider types
enum: &ref_277
- openai
- azure_openai
- anthropic
- mistral
- deepseek
- googleai
- groq
- openrouter
- togetherai
- customai
- aws_bedrock
resource:
type: string
description: >-
Resource reference in format
'$res:{resource_path}' pointing to
provider credentials
model:
type: string
description: >-
Model identifier (e.g., 'gpt-4',
'claude-3-opus-20240229', 'gemini-pro')
required: &ref_514
- kind
- resource
- model
type:
type: string
enum:
- static
required: &ref_516
- type
- value
- type: object
description: >-
JavaScript expression evaluated at
runtime. Can reference previous step
results via 'results.step_id' or flow
inputs via 'flow_input.property'. Inside
loops, use 'flow_input.iter.value' for
the current iteration value
properties: *ref_66
required: *ref_67
- type: object
description: >-
Value resolved by the AI runtime for
this input. The AI engine decides how to
satisfy the parameter.
properties: *ref_68
required: *ref_69
discriminator: &ref_303
propertyName: type
mapping:
static: >-
#/components/schemas/StaticProviderTransform
javascript: >-
#/components/schemas/schemas-JavascriptTransform
ai: '#/components/schemas/schemas-AiTransform'
output_type:
allOf:
- description: >-
Maps input parameters for a step. Can be
a static value or a JavaScript
expression that references previous
results or flow inputs
oneOf: *ref_62
discriminator: *ref_63
description: >
Output format type.
Valid values: 'text' (default) - plain
text response, 'image' - image
generation
user_message:
allOf:
- description: >-
Maps input parameters for a step. Can be
a static value or a JavaScript
expression that references previous
results or flow inputs
oneOf: *ref_62
discriminator: *ref_63
description: >-
The user's prompt/message to the AI
agent. Supports variable interpolation
with flow.input syntax.
system_prompt:
allOf:
- description: >-
Maps input parameters for a step. Can be
a static value or a JavaScript
expression that references previous
results or flow inputs
oneOf: *ref_62
discriminator: *ref_63
description: >-
System instructions that guide the AI's
behavior, persona, and response style.
Optional.
streaming:
allOf:
- description: >-
Maps input parameters for a step. Can be
a static value or a JavaScript
expression that references previous
results or flow inputs
oneOf: *ref_62
discriminator: *ref_63
description: >
Boolean. If true, stream the AI response
incrementally.
Streaming events include: token_delta,
tool_call, tool_call_arguments,
tool_execution, tool_result
memory:
description: >-
Memory configuration - can be static
(MemoryConfig), JavaScript expression,
or AI-determined
oneOf: &ref_304
- type: object
description: >-
Static memory configuration passed
directly to the AI agent
properties: &ref_521
value:
description: Conversation memory configuration
oneOf: &ref_519
- type: object
description: No conversation memory/context
properties: &ref_278
kind:
type: string
enum:
- 'off'
required: &ref_279
- kind
- type: object
description: Automatic context management
properties: &ref_280
kind:
type: string
enum:
- auto
context_length:
type: integer
description: >-
Maximum number of messages to retain in
context
memory_id:
type: string
description: >-
Identifier for persistent memory across
agent invocations
required: &ref_281
- kind
- type: object
description: Explicit message history
properties: &ref_282
kind:
type: string
enum:
- manual
messages:
type: array
items:
type: object
description: A single message in conversation history
properties: &ref_517
role:
type: string
enum:
- user
- assistant
- system
content:
type: string
required: &ref_518
- role
- content
required: &ref_283
- kind
- messages
discriminator: &ref_520
propertyName: kind
mapping:
'off': '#/components/schemas/MemoryOff'
auto: '#/components/schemas/MemoryAuto'
manual: '#/components/schemas/MemoryManual'
type:
type: string
enum:
- static
required: &ref_522
- type
- value
- type: object
description: >-
JavaScript expression evaluated at
runtime. Can reference previous step
results via 'results.step_id' or flow
inputs via 'flow_input.property'. Inside
loops, use 'flow_input.iter.value' for
the current iteration value
properties: *ref_66
required: *ref_67
- type: object
description: >-
Value resolved by the AI runtime for
this input. The AI engine decides how to
satisfy the parameter.
properties: *ref_68
required: *ref_69
discriminator: &ref_305
propertyName: type
mapping:
static: >-
#/components/schemas/StaticMemoryTransform
javascript: >-
#/components/schemas/schemas-JavascriptTransform
ai: '#/components/schemas/schemas-AiTransform'
output_schema:
allOf:
- description: >-
Maps input parameters for a step. Can be
a static value or a JavaScript
expression that references previous
results or flow inputs
oneOf: *ref_62
discriminator: *ref_63
description: >
JSON Schema object defining structured
output format. Used when you need the AI
to return data in a specific shape.
Supports standard JSON Schema
properties: type, properties, required,
items, enum, pattern, minLength,
maxLength, minimum, maximum, etc.
Example: { type: 'object', properties: {
name: { type: 'string' }, age: { type:
'integer' } }, required: ['name'] }
user_images:
allOf:
- description: >-
Maps input parameters for a step. Can be
a static value or a JavaScript
expression that references previous
results or flow inputs
oneOf: *ref_62
discriminator: *ref_63
description: >
Array of image references for
vision-capable models.
Format: Array<{ bucket: string, key:
string }> - S3 object references
Example: [{ bucket: 'my-bucket', key:
'images/photo.jpg' }]
max_completion_tokens:
allOf:
- description: >-
Maps input parameters for a step. Can be
a static value or a JavaScript
expression that references previous
results or flow inputs
oneOf: *ref_62
discriminator: *ref_63
description: >
Integer. Maximum number of tokens the AI
will generate in its response.
Range: 1 to 4,294,967,295. Typical
values: 256-4096 for most use cases.
temperature:
allOf:
- description: >-
Maps input parameters for a step. Can be
a static value or a JavaScript
expression that references previous
results or flow inputs
oneOf: *ref_62
discriminator: *ref_63
description: >
Float. Controls randomness/creativity of
responses.
Range: 0.0 to 2.0 (provider-dependent)
- 0.0 = deterministic, focused responses
- 0.7 = balanced (common default)
- 1.0+ = more creative/random
required:
- provider
- user_message
- output_type
tools:
type: array
description: >-
Array of tools the agent can use. The
agent decides which tools to call based
on the task
items:
type: object
description: >-
A tool available to an AI agent. Can be
a flow module or an external MCP (Model
Context Protocol) tool
properties: &ref_306
id:
type: string
description: >-
Unique identifier for this tool. Cannot
contain spaces - use underscores instead
(e.g., 'get_user_data' not 'get user
data')
summary:
type: string
description: >-
Short description of what this tool does
(shown to the AI)
value:
description: >-
The implementation of a tool. Can be a
flow module (script/flow) or an MCP tool
reference
oneOf: &ref_528
- description: >-
A tool implemented as a flow module
(script, flow, etc.). The AI can call
this like any other flow module
allOf: &ref_523
- type: object
properties:
tool_type:
type: string
enum:
- flowmodule
required:
- tool_type
- description: >-
The actual implementation of a flow
step. Can be a script (inline or
referenced), subflow, loop, branch, or
special module type
oneOf: *ref_70
discriminator: &ref_71
propertyName: type
mapping:
rawscript: '#/components/schemas/schemas-RawScript'
script: '#/components/schemas/schemas-PathScript'
flow: '#/components/schemas/schemas-PathFlow'
forloopflow: '#/components/schemas/schemas-ForloopFlow'
whileloopflow: >-
#/components/schemas/schemas-WhileloopFlow
branchone: '#/components/schemas/schemas-BranchOne'
branchall: '#/components/schemas/schemas-BranchAll'
identity: '#/components/schemas/schemas-Identity'
aiagent: '#/components/schemas/schemas-AiAgent'
- type: object
description: >-
Reference to an external MCP (Model
Context Protocol) tool. The AI can call
tools from MCP servers
properties: &ref_524
tool_type:
type: string
enum:
- mcp
resource_path:
type: string
description: >-
Path to the MCP resource/server
configuration
include_tools:
type: array
description: >-
Whitelist of specific tools to include
from this MCP server
items:
type: string
exclude_tools:
type: array
description: >-
Blacklist of tools to exclude from this
MCP server
items:
type: string
required: &ref_525
- tool_type
- resource_path
- type: object
description: >-
A tool implemented as a websearch tool.
The AI can call this like any other
websearch tool
properties: &ref_526
tool_type:
type: string
enum:
- websearch
required: &ref_527
- tool_type
discriminator: &ref_529
propertyName: tool_type
mapping:
flowmodule: '#/components/schemas/FlowModuleTool'
mcp: '#/components/schemas/McpToolValue'
websearch: '#/components/schemas/WebsearchToolValue'
required: &ref_307
- id
- value
type:
type: string
enum:
- aiagent
parallel:
type: boolean
description: >-
If true, the agent can execute multiple
tool calls in parallel
required: &ref_301
- tools
- type
- input_transforms
discriminator: *ref_71
stop_after_if:
description: Early termination condition for a module
type: object
properties: &ref_72
skip_if_stopped:
type: boolean
description: >-
If true, following steps are skipped
when this condition triggers
expr:
type: string
description: >-
JavaScript expression evaluated after
the module runs. Can use 'result'
(step's result) or 'flow_input'. Return
true to stop
error_message:
type: string
description: Custom error message shown when stopping
required: &ref_73
- expr
stop_after_all_iters_if:
description: Early termination condition for a module
type: object
properties: *ref_72
required: *ref_73
skip_if:
type: object
description: >-
Conditionally skip this step based on
previous results or flow inputs
properties:
expr:
type: string
description: >-
JavaScript expression that returns true
to skip. Can use 'flow_input' or
'results.<step_id>'
required:
- expr
sleep:
description: >-
Maps input parameters for a step. Can be a
static value or a JavaScript expression that
references previous results or flow inputs
oneOf: *ref_62
discriminator: *ref_63
cache_ttl:
type: number
description: >-
Cache duration in seconds for this step's
results
cache_ignore_s3_path:
type: boolean
timeout:
description: >-
Maps input parameters for a step. Can be a
static value or a JavaScript expression that
references previous results or flow inputs
oneOf: *ref_62
discriminator: *ref_63
delete_after_use:
type: boolean
description: >-
If true, this step's result is deleted after
use to save memory
summary:
type: string
description: Short description of what this step does
mock:
type: object
description: >-
Mock configuration for testing without
executing the actual step
properties:
enabled:
type: boolean
description: >-
If true, return mock value instead of
executing
return_value:
description: Value to return when mocked
suspend:
type: object
description: >-
Configuration for approval/resume steps that
wait for user input
properties:
required_events:
type: integer
description: >-
Number of approvals required before
continuing
timeout:
type: integer
description: >-
Timeout in seconds before
auto-continuing or canceling
resume_form:
type: object
description: >-
Form schema for collecting input when
resuming
properties:
schema:
type: object
description: JSON Schema for the resume form
user_auth_required:
type: boolean
description: >-
If true, only authenticated users can
approve
user_groups_required:
description: >-
Maps input parameters for a step. Can be
a static value or a JavaScript
expression that references previous
results or flow inputs
oneOf: *ref_62
discriminator: *ref_63
self_approval_disabled:
type: boolean
description: >-
If true, the user who started the flow
cannot approve
hide_cancel:
type: boolean
description: >-
If true, hide the cancel button on the
approval form
continue_on_disapprove_timeout:
type: boolean
description: >-
If true, continue flow on timeout
instead of canceling
priority:
type: number
description: >-
Execution priority for this step (higher
numbers run first)
continue_on_error:
type: boolean
description: >-
If true, flow continues even if this step
fails
retry:
description: >-
Retry configuration for failed module
executions
type: object
properties: &ref_276
constant:
type: object
description: >-
Retry with constant delay between
attempts
properties:
attempts:
type: integer
description: Number of retry attempts
seconds:
type: integer
description: Seconds to wait between retries
exponential:
type: object
description: >-
Retry with exponential backoff (delay
doubles each time)
properties:
attempts:
type: integer
description: Number of retry attempts
multiplier:
type: integer
description: Multiplier for exponential backoff
seconds:
type: integer
minimum: 1
description: Initial delay in seconds
random_factor:
type: integer
minimum: 0
maximum: 100
description: >-
Random jitter percentage (0-100) to
avoid thundering herd
retry_if:
type: object
description: >-
Conditional retry based on error or
result
properties: &ref_167
expr:
type: string
description: >-
JavaScript expression that returns true
to retry. Has access to 'result' and
'error' variables
required: &ref_168
- expr
required: *ref_65
failure_module:
description: >-
A single step in a flow. Can be a script, subflow,
loop, or branch
type: object
properties: *ref_64
required: *ref_65
preprocessor_module:
description: >-
A single step in a flow. Can be a script, subflow,
loop, or branch
type: object
properties: *ref_64
required: *ref_65
same_worker:
type: boolean
description: >-
If true, all steps run on the same worker for
better performance
concurrent_limit:
type: number
description: >-
Maximum number of concurrent executions of this
flow
concurrency_key:
type: string
description: >-
Expression to group concurrent executions (e.g.,
by user ID)
concurrency_time_window_s:
type: number
description: Time window in seconds for concurrent_limit
debounce_delay_s:
type: number
description: Delay in seconds to debounce flow executions
debounce_key:
type: string
description: Expression to group debounced executions
debounce_args_to_accumulate:
type: array
description: >-
Arguments to accumulate across debounced
executions
items:
type: string
max_total_debouncing_time:
type: number
description: >-
Maximum total time in seconds that a job can be
debounced
max_total_debounces_amount:
type: number
description: Maximum number of times a job can be debounced
skip_expr:
type: string
description: >-
JavaScript expression to conditionally skip the
entire flow
cache_ttl:
type: number
description: Cache duration in seconds for flow results
cache_ignore_s3_path:
type: boolean
flow_env:
type: object
description: Environment variables available to all steps
additionalProperties:
type: string
priority:
type: number
description: Execution priority (higher numbers run first)
early_return:
type: string
description: >-
JavaScript expression to return early from the
flow
chat_input_enabled:
type: boolean
description: Whether this flow accepts chat-style input
notes:
type: array
description: Sticky notes attached to the flow
items:
type: object
description: >-
A sticky note attached to a flow for
documentation and annotation
properties: &ref_120
id:
type: string
description: Unique identifier for the note
text:
type: string
description: Content of the note
position:
type: object
description: Position of the note in the flow editor
properties:
x:
type: number
description: X coordinate
'y':
type: number
description: Y coordinate
required:
- x
- 'y'
size:
type: object
description: Size of the note in the flow editor
properties:
width:
type: number
description: Width in pixels
height:
type: number
description: Height in pixels
required:
- width
- height
color:
type: string
description: >-
Color of the note (e.g., "yellow",
"#ffff00")
type:
type: string
enum:
- free
- group
description: >-
Type of note - 'free' for standalone notes,
'group' for notes that group other nodes
locked:
type: boolean
default: false
description: >-
Whether the note is locked and cannot be
edited or moved
contained_node_ids:
type: array
items:
type: string
description: >-
For group notes, the IDs of nodes contained
within this group
required: &ref_121
- id
- text
- color
- type
required: &ref_531
- modules
schema:
type: object
description: >-
JSON Schema for flow inputs. Use this to define input
parameters, their types, defaults, and validation. For
resource inputs, set type to 'object' and format to
'resource-<type>' (e.g., 'resource-stripe')
on_behalf_of_email:
type: string
description: >-
The flow will be run with the permissions of the user
with this email.
required: &ref_99
- summary
- value
/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:
- name: id
in: path
required: true
schema: *ref_61
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:
- name: id
in: path
required: true
schema: *ref_61
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:
- name: custom_path
in: path
required: true
schema: &ref_111
type: string
responses:
'200':
description: app details
content:
application/json:
schema:
allOf:
- type: object
properties: &ref_106
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:
type: object
properties: &ref_105
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
execution_mode:
type: string
enum:
- viewer
- publisher
- anonymous
extra_perms:
type: object
additionalProperties:
type: boolean
custom_path:
type: string
raw_app:
type: boolean
bundle_secret:
type: string
required: &ref_107
- id
- workspace_id
- path
- summary
- versions
- created_by
- created_at
- value
- policy
- execution_mode
- extra_perms
- raw_app
- type: object
properties:
workspace_id:
type: string
/scripts/hub/get/{path}:
get:
summary: get hub script content by path
operationId: getHubScriptContentByPath
tags:
- script
parameters:
- name: path
in: path
required: true
schema: &ref_74
type: string
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:
- name: path
in: path
required: true
schema: *ref_74
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:
- name: path
in: path
required: true
schema: *ref_74
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:
type: string
enum: &ref_75
- script
- failure
- trigger
- approval
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:
type: string
enum: *ref_75
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:
- name: workspace
in: path
required: true
schema: *ref_4
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: page
description: which page to return (start at 1, default 1)
in: query
schema: *ref_13
- name: per_page
description: number of items to return for a given page (default 30, max 100)
in: query
schema: *ref_14
- name: order_desc
description: order by desc order (default true)
in: query
schema: &ref_96
type: boolean
- name: created_by
description: mask to filter exact matching user creator
in: query
schema: &ref_97
type: string
- 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
responses:
'200':
description: All scripts
content:
application/json:
schema:
type: array
items:
type: object
properties: &ref_79
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:
type: string
enum: &ref_76
- python3
- deno
- go
- bash
- powershell
- postgresql
- mysql
- bigquery
- snowflake
- mssql
- oracledb
- graphql
- nativets
- bun
- php
- rust
- ansible
- csharp
- nu
- java
- ruby
- duckdb
- bunnative
kind:
type: string
enum:
- script
- failure
- trigger
- command
- approval
- preprocessor
starred:
type: boolean
tag:
type: string
has_draft:
type: boolean
draft_only:
type: boolean
envs:
type: array
items:
type: string
concurrent_limit:
type: integer
concurrency_time_window_s:
type: integer
concurrency_key:
type: string
debounce_key:
type: string
debounce_delay_s:
type: integer
debounce_args_to_accumulate:
type: array
items:
type: string
max_total_debouncing_time:
type: integer
max_total_debounces_amount:
type: integer
cache_ttl:
type: number
dedicated_worker:
type: boolean
ws_error_handler_muted:
type: boolean
priority:
type: integer
restart_unless_cancelled:
type: boolean
timeout:
type: integer
delete_after_use:
type: boolean
visible_to_runner_only:
type: boolean
no_main_func:
type: boolean
codebase:
type: string
has_preprocessor:
type: boolean
on_behalf_of_email:
type: string
required: &ref_80
- hash
- path
- summary
- description
- content
- created_by
- created_at
- archived
- deleted
- is_template
- extra_perms
- language
- kind
- starred
- no_main_func
- has_preprocessor
/w/{workspace}/scripts/list_paths:
get:
summary: list all scripts paths
operationId: listScriptPaths
tags:
- script
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
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:
- name: workspace
in: path
required: true
schema: *ref_4
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: kind
in: path
required: true
schema:
type: string
enum:
- script
- flow
- app
- name: path
in: path
required: true
schema: *ref_74
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:
- name: workspace
in: path
required: true
schema: *ref_4
requestBody:
description: Partially filled script
required: true
content:
application/json:
schema:
type: object
properties: &ref_84
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:
type: string
enum: *ref_76
kind:
type: string
enum:
- script
- failure
- trigger
- command
- approval
- preprocessor
tag:
type: string
draft_only:
type: boolean
envs:
type: array
items:
type: string
concurrent_limit:
type: integer
concurrency_time_window_s:
type: integer
cache_ttl:
type: number
cache_ignore_s3_path:
type: boolean
dedicated_worker:
type: boolean
ws_error_handler_muted:
type: boolean
priority:
type: integer
restart_unless_cancelled:
type: boolean
timeout:
type: integer
delete_after_use:
type: boolean
deployment_message:
type: string
concurrency_key:
type: string
debounce_key:
type: string
debounce_delay_s:
type: integer
debounce_args_to_accumulate:
type: array
items:
type: string
max_total_debouncing_time:
type: integer
max_total_debounces_amount:
type: integer
visible_to_runner_only:
type: boolean
no_main_func:
type: boolean
codebase:
type: string
has_preprocessor:
type: boolean
on_behalf_of_email:
type: string
assets:
type: array
items:
type: object
required:
- path
- kind
properties:
path:
type: string
kind:
type: string
enum: &ref_262
- s3object
- resource
- ducklake
- datatable
access_type:
type: string
enum:
- r
- w
- rw
alt_access_type:
type: string
enum:
- r
- w
- rw
required: &ref_85
- path
- summary
- description
- content
- language
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_74
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:
- name: workspace
in: path
required: true
schema: *ref_4
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:
- name: workspace
in: path
required: true
schema: *ref_4
requestBody:
description: New workspace dependencies
required: true
content:
application/json:
schema:
type: object
properties: &ref_345
workspace_id:
type: string
language:
type: string
enum: *ref_76
name:
type: string
description:
type: string
content:
type: string
required: &ref_346
- workspace_id
- language
- content
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: language
in: path
required: true
schema:
type: string
enum: *ref_76
- 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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: language
in: path
required: true
schema:
type: string
enum: *ref_76
- 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:
- name: workspace
in: path
required: true
schema: *ref_4
responses:
'200':
description: All workspace dependencies
content:
application/json:
schema:
type: array
items:
type: object
properties: &ref_77
id:
type: integer
archived:
type: boolean
name:
type: string
description:
type: string
content:
type: string
language:
type: string
enum: *ref_76
workspace_id:
type: string
created_at:
type: string
format: date-time
required: &ref_78
- workspace_id
- language
- created_at
- content
- id
- archived
/w/{workspace}/workspace_dependencies/get_latest/{language}:
get:
summary: get latest workspace dependencies by language and name
operationId: getLatestWorkspaceDependencies
tags:
- workspace_dependencies
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- name: language
in: path
required: true
schema:
type: string
enum: *ref_76
- name: name
in: query
required: false
schema:
type: string
responses:
'200':
description: Latest workspace dependencies
content:
application/json:
schema:
type: object
properties: *ref_77
required: *ref_78
/w/{workspace}/scripts/archive/p/{path}:
post:
summary: archive script by path
operationId: archiveScriptByPath
tags:
- script
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_74
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: hash
in: path
required: true
schema: &ref_81
type: string
responses:
'200':
description: script details
content:
application/json:
schema:
type: object
properties: *ref_79
required: *ref_80
/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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: hash
in: path
required: true
schema: *ref_81
responses:
'200':
description: script details
content:
application/json:
schema:
type: object
properties: *ref_79
required: *ref_80
/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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_74
- 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:
- name: workspace
in: path
required: true
schema: *ref_4
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_74
- name: with_starred_info
in: query
schema:
type: boolean
responses:
'200':
description: script details
content:
application/json:
schema:
type: object
properties: *ref_79
required: *ref_80
/w/{workspace}/scripts/get_triggers_count/{path}:
get:
summary: get triggers count of script
operationId: getTriggersCountOfScript
tags:
- script
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_74
responses:
'200':
description: triggers count
content:
application/json:
schema:
type: object
properties: &ref_103
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
/w/{workspace}/scripts/list_tokens/{path}:
get:
summary: get tokens with script scope
operationId: listTokensOfScript
tags:
- script
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_74
responses:
'200':
description: tokens list
content:
application/json:
schema:
type: array
items:
type: object
properties: *ref_82
required: *ref_83
/w/{workspace}/scripts/get/draft/{path}:
get:
summary: get script by path with draft
operationId: getScriptByPathWithDraft
tags:
- script
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_74
responses:
'200':
description: script details
content:
application/json:
schema:
allOf: &ref_347
- type: object
properties: *ref_84
required: *ref_85
- type: object
properties:
draft:
type: object
properties: *ref_84
required: *ref_85
hash:
type: string
required:
- hash
/w/{workspace}/scripts/history/p/{path}:
get:
summary: get history of a script by path
operationId: getScriptHistoryByPath
tags:
- script
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_74
responses:
'200':
description: script history
content:
application/json:
schema:
type: array
items:
type: object
properties: &ref_86
script_hash:
type: string
deployment_msg:
type: string
required: &ref_87
- script_hash
/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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_74
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_74
tags:
- script
responses:
'200':
description: Script version/hash
content:
application/json:
schema:
type: object
properties: *ref_86
required: *ref_87
/w/{workspace}/scripts/history_update/h/{hash}/p/{path}:
post:
summary: update history of a script
operationId: updateScriptHistory
tags:
- script
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- name: hash
in: path
required: true
schema: *ref_81
- name: path
in: path
required: true
schema: *ref_74
requestBody:
description: Script deployment message
required: true
content:
application/json:
schema:
type: object
properties:
deployment_msg:
type: string
responses:
'200':
description: success
content:
text/plain:
schema:
type: string
/w/{workspace}/scripts/raw/p/{path}:
get:
summary: raw script by path
operationId: rawScriptByPath
tags:
- script
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_74
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: token
in: path
required: true
schema: &ref_266
type: string
- name: path
in: path
required: true
schema: *ref_74
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_74
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: hash
in: path
required: true
schema: *ref_81
- 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:
type: object
properties: *ref_79
required: *ref_80
/w/{workspace}/scripts/raw/h/{path}:
get:
summary: raw script by hash
operationId: rawScriptByHash
tags:
- script
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_74
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: hash
in: path
required: true
schema: *ref_81
responses:
'200':
description: script details
content:
application/json:
schema:
type: object
properties:
lock:
type: string
lock_error_logs:
type: string
job_id:
type: string
format: uuid
/w/{workspace}/jobs/list_selected_job_groups:
post:
summary: list selected jobs script/flow schemas grouped by (kind, path)
operationId: listSelectedJobGroups
tags:
- job
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_74
- 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
- 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: &ref_88
type: string
format: uuid
- name: tag
description: Override the tag to use
in: query
schema: &ref_89
type: string
- 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: &ref_90
type: string
- 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: &ref_91
type: string
format: uuid
- 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:
type: object
description: The arguments to pass to the script or flow
additionalProperties: true
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_74
- 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: *ref_88
- name: tag
description: Override the tag to use
in: query
schema: *ref_89
- 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: *ref_90
- 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: *ref_91
- 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: &ref_92
type: string
- 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: &ref_93
type: string
- name: skip_preprocessor
description: skip the preprocessor
in: query
schema: &ref_94
type: boolean
requestBody:
description: script args
required: true
content:
application/json:
schema:
type: object
description: The arguments to pass to the script or flow
additionalProperties: true
responses:
'200':
description: job result
content:
application/json:
schema: {}
get:
summary: run script by path with get
operationId: runWaitResultScriptByPathGet
tags:
- job
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_74
- 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: *ref_88
- name: tag
description: Override the tag to use
in: query
schema: *ref_89
- 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: *ref_90
- 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: *ref_91
- 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: *ref_92
- 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: *ref_93
- 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: &ref_95
type: string
- name: skip_preprocessor
description: skip the preprocessor
in: query
schema: *ref_94
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_74
- 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: *ref_92
- 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: *ref_93
- 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: *ref_91
- name: skip_preprocessor
description: skip the preprocessor
in: query
schema: *ref_94
- 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:
type: object
description: The arguments to pass to the script or flow
additionalProperties: true
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: version
description: flow version ID
in: path
required: true
schema:
type: integer
format: int64
- 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: *ref_92
- 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: *ref_93
- 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: *ref_91
- name: skip_preprocessor
description: skip the preprocessor
in: query
schema: *ref_94
- 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:
type: object
description: The arguments to pass to the script or flow
additionalProperties: true
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: version
description: flow version ID
in: path
required: true
schema:
type: integer
format: int64
- 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: *ref_92
- 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: *ref_93
- 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: *ref_95
- 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: *ref_91
- name: skip_preprocessor
description: skip the preprocessor
in: query
schema: *ref_94
- 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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_74
- 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: *ref_92
- 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: *ref_93
- 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: *ref_91
- name: skip_preprocessor
description: skip the preprocessor
in: query
schema: *ref_94
- 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:
type: object
description: The arguments to pass to the script or flow
additionalProperties: true
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_74
- 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: *ref_92
- 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: *ref_93
- 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: *ref_95
- 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: *ref_91
- name: skip_preprocessor
description: skip the preprocessor
in: query
schema: *ref_94
- 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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: version
description: flow version ID
in: path
required: true
schema:
type: integer
format: int64
- 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: *ref_92
- 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: *ref_93
- 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: *ref_91
- name: skip_preprocessor
description: skip the preprocessor
in: query
schema: *ref_94
- 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:
type: object
description: The arguments to pass to the script or flow
additionalProperties: true
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: version
description: flow version ID
in: path
required: true
schema:
type: integer
format: int64
- 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: *ref_92
- 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: *ref_93
- 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: *ref_95
- 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: *ref_91
- name: skip_preprocessor
description: skip the preprocessor
in: query
schema: *ref_94
- 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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_74
- 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: *ref_88
- name: tag
description: Override the tag to use
in: query
schema: *ref_89
- 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: *ref_90
- 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: *ref_91
- 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: *ref_92
- 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: *ref_93
- name: skip_preprocessor
description: skip the preprocessor
in: query
schema: *ref_94
- 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:
type: object
description: The arguments to pass to the script or flow
additionalProperties: true
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_74
- 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: *ref_88
- name: tag
description: Override the tag to use
in: query
schema: *ref_89
- 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: *ref_90
- 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: *ref_91
- 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: *ref_92
- 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: *ref_93
- 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: *ref_95
- name: skip_preprocessor
description: skip the preprocessor
in: query
schema: *ref_94
- 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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: hash
in: path
required: true
schema:
type: string
- 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: *ref_88
- name: tag
description: Override the tag to use
in: query
schema: *ref_89
- 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: *ref_90
- 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: *ref_91
- 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: *ref_92
- 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: *ref_93
- name: skip_preprocessor
description: skip the preprocessor
in: query
schema: *ref_94
- 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:
type: object
description: The arguments to pass to the script or flow
additionalProperties: true
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: hash
in: path
required: true
schema:
type: string
- 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: *ref_88
- name: tag
description: Override the tag to use
in: query
schema: *ref_89
- 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: *ref_90
- 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: *ref_91
- 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: *ref_92
- 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: *ref_93
- 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: *ref_95
- name: skip_preprocessor
description: skip the preprocessor
in: query
schema: *ref_94
- 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:
- name: workspace
in: path
required: true
schema: *ref_4
- 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:
- name: workspace
in: path
required: true
schema: *ref_4
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:
- name: workspace
in: path
required: true
schema: *ref_4
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: page
description: which page to return (start at 1, default 1)
in: query
schema: *ref_13
- name: per_page
description: number of items to return for a given page (default 30, max 100)
in: query
schema: *ref_14
- name: order_desc
description: order by desc order (default true)
in: query
schema: *ref_96
- name: created_by
description: mask to filter exact matching user creator
in: query
schema: *ref_97
- 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
responses:
'200':
description: All flow
content:
application/json:
schema:
type: array
items:
allOf:
- allOf: &ref_102
- type: object
description: >-
Top-level flow definition containing metadata,
configuration, and the flow structure
properties: *ref_98
required: *ref_99
- type: object
properties: &ref_449
workspace_id:
type: string
path:
type: string
edited_by:
type: string
edited_at:
type: string
format: date-time
archived:
type: boolean
extra_perms:
type: object
additionalProperties: &ref_448
type: boolean
starred:
type: boolean
draft_only:
type: boolean
tag:
type: string
ws_error_handler_muted:
type: boolean
priority:
type: integer
dedicated_worker:
type: boolean
timeout:
type: number
visible_to_runner_only:
type: boolean
on_behalf_of_email:
type: string
required: &ref_450
- path
- edited_by
- edited_at
- archived
- extra_perms
- type: object
properties:
lock_error_logs:
type: string
version_id:
type: number
- 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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_74
tags:
- flow
responses:
'200':
description: Flow history
content:
application/json:
schema:
type: array
items:
type: object
properties: &ref_100
id:
type: integer
created_at:
type: string
format: date-time
deployment_msg:
type: string
required: &ref_101
- id
- created_at
/w/{workspace}/flows/get_latest_version/{path}:
get:
summary: get flow's latest version
operationId: getFlowLatestVersion
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_74
tags:
- flow
responses:
'200':
description: Flow version
content:
application/json:
schema:
type: object
properties: *ref_100
required: *ref_101
/w/{workspace}/flows/list_paths_from_workspace_runnable/{runnable_kind}/{path}:
get:
summary: list flow paths from workspace runnable
operationId: listFlowPathsFromWorkspaceRunnable
tags:
- flow
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- name: runnable_kind
in: path
required: true
schema: &ref_110
type: string
enum:
- script
- flow
- name: path
in: path
required: true
schema: *ref_74
- 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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: version
in: path
required: true
schema:
type: number
tags:
- flow
responses:
'200':
description: flow details
content:
application/json:
schema:
allOf: *ref_102
/w/{workspace}/flows/history_update/v/{version}:
post:
summary: update flow history
operationId: updateFlowHistory
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- 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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_74
- name: with_starred_info
in: query
schema:
type: boolean
responses:
'200':
description: flow details
content:
application/json:
schema:
allOf: *ref_102
/w/{workspace}/flows/deployment_status/p/{path}:
get:
summary: get flow deployment status
operationId: getFlowDeploymentStatus
tags:
- flow
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_74
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_74
responses:
'200':
description: triggers count
content:
application/json:
schema:
type: object
properties: *ref_103
/w/{workspace}/flows/list_tokens/{path}:
get:
summary: get tokens with flow scope
operationId: listTokensOfFlow
tags:
- flow
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_74
responses:
'200':
description: tokens list
content:
application/json:
schema:
type: array
items:
type: object
properties: *ref_82
required: *ref_83
/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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_74
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_74
responses:
'200':
description: flow details with draft
content:
application/json:
schema:
allOf:
- allOf: *ref_102
- type: object
properties:
draft:
allOf: *ref_102
/w/{workspace}/flows/exists/{path}:
get:
summary: exists flow by path
operationId: existsFlowByPath
tags:
- flow
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_74
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:
- name: workspace
in: path
required: true
schema: *ref_4
requestBody:
description: Partially filled flow
required: true
content:
application/json:
schema:
allOf:
- allOf: &ref_104
- type: object
description: >-
Top-level flow definition containing metadata,
configuration, and the flow structure
properties: *ref_98
required: *ref_99
- type: object
properties:
path:
type: string
tag:
type: string
ws_error_handler_muted:
type: boolean
priority:
type: integer
dedicated_worker:
type: boolean
timeout:
type: number
visible_to_runner_only:
type: boolean
on_behalf_of_email:
type: string
required:
- path
- 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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_74
requestBody:
description: Partially filled flow
required: true
content:
application/json:
schema:
allOf:
- allOf: *ref_104
- 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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_74
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_74
- 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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: page
description: which page to return (start at 1, default 1)
in: query
schema: *ref_13
- name: per_page
description: number of items to return for a given page (default 30, max 100)
in: query
schema: *ref_14
- 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:
type: object
required: &ref_333
- id
- workspace_id
- flow_path
- created_at
- updated_at
- created_by
properties: &ref_334
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
/w/{workspace}/flow_conversations/delete/{conversation_id}:
delete:
summary: delete flow conversation
operationId: deleteFlowConversation
tags:
- flow_conversation
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- 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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: page
description: which page to return (start at 1, default 1)
in: query
schema: *ref_13
- name: per_page
description: number of items to return for a given page (default 30, max 100)
in: query
schema: *ref_14
- 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:
type: object
required: &ref_335
- id
- conversation_id
- message_type
- content
- created_at
properties: &ref_336
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
/w/{workspace}/raw_apps/list:
get:
summary: list all raw apps
operationId: listRawApps
tags:
- raw_app
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- name: page
description: which page to return (start at 1, default 1)
in: query
schema: *ref_13
- name: per_page
description: number of items to return for a given page (default 30, max 100)
in: query
schema: *ref_14
- name: order_desc
description: order by desc order (default true)
in: query
schema: *ref_96
- name: created_by
description: mask to filter exact matching user creator
in: query
schema: *ref_97
- 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
responses:
'200':
description: All raw apps
content:
application/json:
schema:
type: array
items:
type: object
properties: &ref_458
workspace_id:
type: string
path:
type: string
summary:
type: string
extra_perms:
type: object
additionalProperties:
type: boolean
starred:
type: boolean
version:
type: number
edited_at:
type: string
format: date-time
required: &ref_459
- workspace_id
- path
- summary
- extra_perms
- version
- edited_at
/w/{workspace}/apps/get_data/v/{secretWithExtension}:
get:
summary: get raw app data by
operationId: getRawAppData
tags:
- app
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- 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:
- name: workspace
in: path
required: true
schema: *ref_4
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: page
description: which page to return (start at 1, default 1)
in: query
schema: *ref_13
- name: per_page
description: number of items to return for a given page (default 30, max 100)
in: query
schema: *ref_14
- name: order_desc
description: order by desc order (default true)
in: query
schema: *ref_96
- name: created_by
description: mask to filter exact matching user creator
in: query
schema: *ref_97
- 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
responses:
'200':
description: All apps
content:
application/json:
schema:
type: array
items:
type: object
properties: &ref_452
id:
type: integer
workspace_id:
type: string
path:
type: string
summary:
type: string
version:
type: integer
extra_perms:
type: object
additionalProperties:
type: boolean
starred:
type: boolean
edited_at:
type: string
format: date-time
execution_mode:
type: string
enum:
- viewer
- publisher
- anonymous
raw_app:
type: boolean
required: &ref_453
- id
- workspace_id
- path
- summary
- version
- extra_perms
- edited_at
- execution_mode
/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:
- name: workspace
in: path
required: true
schema: *ref_4
requestBody:
description: new app
required: true
content:
application/json:
schema:
type: object
properties:
path:
type: string
value: {}
summary:
type: string
policy:
type: object
properties: *ref_105
draft_only:
type: boolean
deployment_message:
type: string
custom_path:
type: string
required:
- path
- value
- summary
- policy
responses:
'201':
description: app created
content:
text/plain:
schema:
type: string
/w/{workspace}/apps/create_raw:
post:
summary: create app raw
operationId: createAppRaw
tags:
- app
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
requestBody:
description: new app
required: true
content:
multipart/form-data:
schema:
type: object
properties:
app:
type: object
properties:
path:
type: string
value: {}
summary:
type: string
policy:
type: object
properties: *ref_105
draft_only:
type: boolean
deployment_message:
type: string
custom_path:
type: string
required:
- path
- value
- summary
- policy
js:
type: string
css:
type: string
responses:
'201':
description: app created
content:
text/plain:
schema:
type: string
/w/{workspace}/apps/exists/{path}:
get:
summary: does an app exisst at path
operationId: existsApp
tags:
- app
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_74
- name: with_starred_info
in: query
schema:
type: boolean
responses:
'200':
description: app details
content:
application/json:
schema:
type: object
properties: *ref_106
required: *ref_107
/w/{workspace}/apps/get/lite/{path}:
get:
summary: get app lite by path
operationId: getAppLiteByPath
tags:
- app
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_74
responses:
'200':
description: app lite details
content:
application/json:
schema:
type: object
properties: *ref_106
required: *ref_107
/w/{workspace}/apps/get/draft/{path}:
get:
summary: get app by path with draft
operationId: getAppByPathWithDraft
tags:
- app
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_74
responses:
'200':
description: app details with draft
content:
application/json:
schema:
allOf: &ref_460
- type: object
properties: *ref_106
required: *ref_107
- type: object
properties:
draft_only:
type: boolean
draft: {}
/w/{workspace}/apps/history/p/{path}:
get:
summary: get app history by path
operationId: getAppHistoryByPath
tags:
- app
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_74
responses:
'200':
description: app history
content:
application/json:
schema:
type: array
items:
type: object
properties: &ref_108
version:
type: integer
deployment_msg:
type: string
required: &ref_109
- version
/w/{workspace}/apps/get_latest_version/{path}:
get:
summary: get apps's latest version
operationId: getAppLatestVersion
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_74
tags:
- app
responses:
'200':
description: App version
content:
application/json:
schema:
type: object
properties: *ref_108
required: *ref_109
/w/{workspace}/apps/list_paths_from_workspace_runnable/{runnable_kind}/{path}:
get:
summary: list app paths from workspace runnable
operationId: listAppPathsFromWorkspaceRunnable
tags:
- app
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- name: runnable_kind
in: path
required: true
schema: *ref_110
- name: path
in: path
required: true
schema: *ref_74
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: id
in: path
required: true
schema: *ref_61
- name: version
in: path
required: true
schema: &ref_267
type: integer
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
responses:
'200':
description: app details
content:
application/json:
schema:
type: object
properties: *ref_106
required: *ref_107
/w/{workspace}/apps_u/public_resource/{path}:
get:
summary: get public resource
operationId: get public resource
tags:
- app
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: id
in: path
required: true
schema: *ref_61
responses:
'200':
description: app details
content:
application/json:
schema:
type: object
properties: *ref_106
required: *ref_107
/w/{workspace}/apps/delete/{path}:
delete:
summary: delete app
operationId: deleteApp
tags:
- app
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_74
requestBody:
description: update app
required: true
content:
application/json:
schema:
type: object
properties:
path:
type: string
summary:
type: string
value: {}
policy:
type: object
properties: *ref_105
deployment_message:
type: string
custom_path:
type: string
responses:
'200':
description: app updated
content:
text/plain:
schema:
type: string
/w/{workspace}/apps/update_raw/{path}:
post:
summary: update app
operationId: updateAppRaw
tags:
- app
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_74
requestBody:
description: update app
required: true
content:
multipart/form-data:
schema:
type: object
properties:
app:
type: object
properties:
path:
type: string
summary:
type: string
value: {}
policy:
type: object
properties: *ref_105
deployment_message:
type: string
custom_path:
type: string
js:
type: string
css:
type: string
responses:
'200':
description: app updated
content:
text/plain:
schema:
type: string
/w/{workspace}/apps/custom_path_exists/{custom_path}:
get:
summary: check if custom path exists
operationId: customPathExists
tags:
- app
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- name: custom_path
in: path
required: true
schema: *ref_111
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:
- name: workspace
in: path
required: true
schema: *ref_4
requestBody:
description: s3 objects to sign
required: true
content:
application/json:
schema:
type: object
properties:
s3_objects:
type: array
items:
type: object
properties: &ref_112
s3:
type: string
filename:
type: string
storage:
type: string
presigned:
type: string
required: &ref_113
- s3
required:
- s3_objects
responses:
'200':
description: signed s3 objects
content:
application/json:
schema:
type: array
items:
type: object
properties: *ref_112
required: *ref_113
/w/{workspace}/apps_u/execute_component/{path}:
post:
summary: executeComponent
operationId: executeComponent
tags:
- app
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_74
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
- 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:
- name: workspace
in: path
required: true
schema: *ref_4
- 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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_74
- 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: *ref_94
- 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: *ref_88
- name: tag
description: Override the tag to use
in: query
schema: *ref_89
- 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: *ref_91
- 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: *ref_92
- 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:
type: object
description: The arguments to pass to the script or flow
additionalProperties: true
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:
- name: workspace
in: path
required: true
schema: *ref_4
- 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
- name: skip_preprocessor
description: skip the preprocessor
in: query
schema: *ref_94
- 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: *ref_88
- name: tag
description: Override the tag to use
in: query
schema: *ref_89
- 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: *ref_91
- 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: *ref_92
- 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:
type: object
description: The arguments to pass to the script or flow
additionalProperties: true
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:
- name: workspace
in: path
required: true
schema: *ref_4
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:
description: >-
Maps input parameters for a step. Can be a static
value or a JavaScript expression that references
previous results or flow inputs
oneOf: &ref_116
- type: object
description: >-
Static value passed directly to the step. Use
for hardcoded values or resource references like
'$res:path/to/resource'
properties: *ref_114
required: *ref_115
- type: object
description: >-
JavaScript expression evaluated at runtime. Can
reference previous step results via
'results.step_id' or flow inputs via
'flow_input.property'. Inside loops, use
'flow_input.iter.value' for the current
iteration value
properties: *ref_66
required: *ref_67
- type: object
description: >-
Value resolved by the AI runtime for this input.
The AI engine decides how to satisfy the
parameter.
properties: *ref_68
required: *ref_69
discriminator: &ref_117
propertyName: type
mapping:
static: '#/components/schemas/schemas-StaticTransform'
javascript: '#/components/schemas/schemas-JavascriptTransform'
ai: '#/components/schemas/schemas-AiTransform'
use_latest_version:
type: boolean
flow_options_by_path:
type: object
additionalProperties:
type: object
properties:
input_transforms:
type: object
additionalProperties:
description: >-
Maps input parameters for a step. Can be a static
value or a JavaScript expression that references
previous results or flow inputs
oneOf: *ref_116
discriminator: *ref_117
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: id
in: path
required: true
schema: &ref_144
type: string
format: uuid
- 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: parent_job
description: >-
The parent job that is at the origin and responsible for the
execution of this script if any
in: query
schema: *ref_88
- name: tag
description: Override the tag to use
in: query
schema: *ref_89
- 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: *ref_91
- 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: *ref_92
- 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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: hash
in: path
required: true
schema: *ref_81
- 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: *ref_94
- 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: *ref_88
- name: tag
description: Override the tag to use
in: query
schema: *ref_89
- 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: *ref_90
- 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: *ref_91
- 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: *ref_92
- 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:
- name: workspace
in: path
required: true
schema: *ref_4
- 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: *ref_92
- name: invisible_to_owner
description: make the run invisible to the the script owner (default false)
in: query
schema:
type: boolean
- 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: *ref_91
requestBody:
description: preview
required: true
content:
application/json:
schema:
type: object
properties: &ref_118
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:
type: object
description: The arguments to pass to the script or flow
additionalProperties: true
language:
type: string
enum: *ref_76
tag:
type: string
kind:
type: string
enum:
- code
- identity
- http
dedicated_worker:
type: boolean
lock:
type: string
required: &ref_119
- args
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:
- name: workspace
in: path
required: true
schema: *ref_4
requestBody:
description: preview
required: true
content:
application/json:
schema:
type: object
properties: &ref_368
content:
type: string
description: The code to run
args:
type: object
description: The arguments to pass to the script or flow
additionalProperties: true
language:
type: string
enum: *ref_76
required: &ref_369
- content
- args
- language
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:
- name: workspace
in: path
required: true
schema: *ref_4
requestBody:
description: preview
required: true
content:
application/json:
schema:
type: object
properties: *ref_118
required: *ref_119
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:
- name: workspace
in: path
required: true
schema: *ref_4
- 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:
type: object
properties: &ref_370
args:
type: object
description: The arguments to pass to the script or flow
additionalProperties: true
required: &ref_371
- args
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:
- name: workspace
in: path
required: true
schema: *ref_4
requestBody:
description: raw script content
required: true
content:
application/json:
schema:
type: object
properties:
raw_scripts:
type: array
items:
type: object
properties: &ref_475
raw_code:
type: string
path:
type: string
language:
type: string
enum: *ref_76
required: &ref_476
- raw_code
- path
- language
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:
- name: workspace
in: path
required: true
schema: *ref_4
- 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: *ref_92
- name: invisible_to_owner
description: make the run invisible to the the script owner (default false)
in: query
schema:
type: boolean
- 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: *ref_91
- 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:
type: object
properties: &ref_122
value:
type: object
description: >-
The flow structure containing modules and optional
preprocessor/failure handlers
properties: &ref_126
modules:
type: array
description: >-
Array of steps that execute in sequence. Each step can
be a script, subflow, loop, or branch
items:
type: object
description: >-
A single step in a flow. Can be a script, subflow,
loop, or branch
properties: *ref_64
required: *ref_65
failure_module:
description: >-
A single step in a flow. Can be a script, subflow, loop,
or branch
type: object
properties: *ref_64
required: *ref_65
preprocessor_module:
description: >-
A single step in a flow. Can be a script, subflow, loop,
or branch
type: object
properties: *ref_64
required: *ref_65
same_worker:
type: boolean
description: >-
If true, all steps run on the same worker for better
performance
concurrent_limit:
type: number
description: Maximum number of concurrent executions of this flow
concurrency_key:
type: string
description: >-
Expression to group concurrent executions (e.g., by user
ID)
concurrency_time_window_s:
type: number
description: Time window in seconds for concurrent_limit
debounce_delay_s:
type: number
description: Delay in seconds to debounce flow executions
debounce_key:
type: string
description: Expression to group debounced executions
debounce_args_to_accumulate:
type: array
description: Arguments to accumulate across debounced executions
items:
type: string
max_total_debouncing_time:
type: number
description: >-
Maximum total time in seconds that a job can be
debounced
max_total_debounces_amount:
type: number
description: Maximum number of times a job can be debounced
skip_expr:
type: string
description: >-
JavaScript expression to conditionally skip the entire
flow
cache_ttl:
type: number
description: Cache duration in seconds for flow results
cache_ignore_s3_path:
type: boolean
flow_env:
type: object
description: Environment variables available to all steps
additionalProperties:
type: string
priority:
type: number
description: Execution priority (higher numbers run first)
early_return:
type: string
description: JavaScript expression to return early from the flow
chat_input_enabled:
type: boolean
description: Whether this flow accepts chat-style input
notes:
type: array
description: Sticky notes attached to the flow
items:
type: object
description: >-
A sticky note attached to a flow for documentation and
annotation
properties: *ref_120
required: *ref_121
required: &ref_127
- modules
path:
type: string
args:
type: object
description: The arguments to pass to the script or flow
additionalProperties: true
tag:
type: string
restarted_from:
type: object
properties: &ref_451
flow_job_id:
type: string
format: uuid
step_id:
type: string
branch_or_iteration_n:
type: integer
flow_version:
type: integer
required: &ref_123
- value
- content
- args
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:
- name: workspace
in: path
required: true
schema: *ref_4
- 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:
type: object
properties: *ref_122
required: *ref_123
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:
- name: workspace
in: path
required: true
schema: *ref_4
requestBody:
description: dynamic select request
required: true
content:
application/json:
schema:
type: object
properties: &ref_463
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:
type: string
enum: &ref_172
- script
- flow
required:
- source
- path
- runnable_kind
- type: object
properties:
source:
type: string
enum:
- inline
code:
type: string
description: Code content for inline execution
language:
type: string
enum: *ref_76
required:
- source
- code
required: &ref_464
- entrypoint_function
- runnable_ref
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: order_desc
description: order by desc order (default true)
in: query
schema: *ref_96
- name: created_by
description: mask to filter exact matching user creator
in: query
schema: *ref_97
- 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: *ref_88
- name: worker
description: worker this job was ran on
in: query
schema: &ref_128
type: string
- name: script_path_exact
description: mask to filter exact matching path
in: query
schema: &ref_129
type: string
- name: script_path_start
description: mask to filter matching starting path
in: query
schema: &ref_130
type: string
- name: schedule_path
description: mask to filter by schedule path
in: query
schema: &ref_131
type: string
- name: trigger_path
description: mask to filter by trigger path
in: query
schema: &ref_268
type: string
- name: trigger_kind
description: trigger kind (schedule, http, websocket...)
in: query
schema: &ref_160
description: job trigger kind (schedule, http, websocket...)
type: string
enum: &ref_145
- webhook
- default_email
- email
- schedule
- http
- websocket
- postgres
- kafka
- nats
- mqtt
- sqs
- gcp
- name: script_hash
description: mask to filter exact matching path
in: query
schema: &ref_132
type: string
- name: started_before
description: filter on started before (inclusive) timestamp
in: query
schema: &ref_133
type: string
format: date-time
- name: started_after
description: filter on started after (exclusive) timestamp
in: query
schema: &ref_134
type: string
format: date-time
- name: success
description: filter on successful jobs
in: query
schema: &ref_142
type: boolean
- name: scheduled_for_before_now
description: filter on jobs scheduled_for before now (hence waitinf for a worker)
in: query
schema: &ref_136
type: boolean
- name: job_kinds
description: >-
filter on job kind (values 'preview', 'script', 'dependencies',
'flow') separated by,
in: query
schema: &ref_137
type: string
- name: suspended
description: filter on suspended jobs
in: query
schema: &ref_138
type: boolean
- name: running
description: filter on running jobs
in: query
schema: &ref_135
type: boolean
- name: args
description: >-
filter on jobs containing those args as a json subset (@> in
postgres)
in: query
schema: &ref_139
type: string
- name: result
description: >-
filter on jobs containing those result as a json subset (@> in
postgres)
in: query
schema: &ref_141
type: string
- name: allow_wildcards
description: allow wildcards (*) in the filter of label, tag, worker
in: query
schema: &ref_143
type: boolean
- name: tag
description: filter on jobs with a given tag/worker group
in: query
schema: &ref_140
type: string
- name: page
description: which page to return (start at 1, default 1)
in: query
schema: *ref_13
- name: per_page
description: number of items to return for a given page (default 30, max 100)
in: query
schema: *ref_14
- 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:
type: object
properties: &ref_163
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:
type: object
description: The arguments to pass to the script or flow
additionalProperties: true
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:
type: object
properties: &ref_147
step:
type: integer
modules:
type: array
items:
type: object
properties: &ref_124
type:
type: string
enum:
- WaitingForPriorSteps
- WaitingForEvents
- WaitingForExecutor
- InProgress
- Success
- Failure
id:
type: string
job:
type: string
format: uuid
count:
type: integer
progress:
type: integer
iterator:
type: object
properties:
index:
type: integer
itered:
type: array
items: {}
itered_len:
type: integer
args: {}
flow_jobs:
type: array
items:
type: string
flow_jobs_success:
type: array
items:
type: boolean
flow_jobs_duration:
type: object
properties:
started_at:
type: array
items:
type: string
duration_ms:
type: array
items:
type: integer
branch_chosen:
type: object
properties:
type:
type: string
enum:
- branch
- default
branch:
type: integer
required:
- type
branchall:
type: object
properties:
branch:
type: integer
len:
type: integer
required:
- branch
- len
approvers:
type: array
items:
type: object
properties:
resume_id:
type: integer
approver:
type: string
required:
- resume_id
- approver
failed_retries:
type: array
items:
type: string
format: uuid
skipped:
type: boolean
agent_actions:
type: array
items:
type: object
oneOf:
- type: object
properties:
job_id:
type: string
format: uuid
function_name:
type: string
type:
type: string
enum:
- tool_call
module_id:
type: string
required:
- job_id
- function_name
- type
- module_id
- type: object
properties:
call_id:
type: string
format: uuid
function_name:
type: string
resource_path:
type: string
type:
type: string
enum:
- mcp_tool_call
arguments:
type: object
required:
- call_id
- function_name
- resource_path
- type
- type: object
properties:
type:
type: string
enum:
- web_search
required:
- type
- type: object
properties:
type:
type: string
enum:
- message
required:
- content
- type
agent_actions_success:
type: array
items:
type: boolean
required: &ref_125
- type
user_states:
additionalProperties: true
preprocessor_module:
allOf:
- type: object
properties: *ref_124
required: *ref_125
failure_module:
allOf:
- type: object
properties: *ref_124
required: *ref_125
- type: object
properties:
parent_module:
type: string
retry:
type: object
properties:
fail_count:
type: integer
failed_jobs:
type: array
items:
type: string
format: uuid
required: &ref_148
- step
- modules
- failure_module
workflow_as_code_status:
type: object
properties: &ref_149
scheduled_for:
type: string
format: date-time
started_at:
type: string
format: date-time
duration_ms:
type: number
name:
type: string
raw_flow:
type: object
description: >-
The flow structure containing modules and optional
preprocessor/failure handlers
properties: *ref_126
required: *ref_127
is_flow_step:
type: boolean
language:
type: string
enum: *ref_76
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: &ref_164
- id
- running
- canceled
- job_kind
- permissioned_as
- is_flow_step
- email
- visible_to_owner
- tag
/w/{workspace}/jobs/queue/count:
get:
summary: get queue count
operationId: getQueueCount
tags:
- job
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- 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:
- name: workspace
in: path
required: true
schema: *ref_4
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:
- name: workspace
in: path
required: true
schema: *ref_4
- 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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: created_by
description: mask to filter exact matching user creator
in: query
schema: *ref_97
- name: label
description: >-
mask to filter exact matching job's label (job labels are completed
jobs with as a result an object containing a string in the array at
key 'wm_labels')
in: query
schema: &ref_146
type: string
- name: worker
description: worker this job was ran on
in: query
schema: *ref_128
- 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: *ref_88
- name: script_path_exact
description: mask to filter exact matching path
in: query
schema: *ref_129
- name: script_path_start
description: mask to filter matching starting path
in: query
schema: *ref_130
- name: schedule_path
description: mask to filter by schedule path
in: query
schema: *ref_131
- name: script_hash
description: mask to filter exact matching path
in: query
schema: *ref_132
- name: started_before
description: filter on started before (inclusive) timestamp
in: query
schema: *ref_133
- name: started_after
description: filter on started after (exclusive) timestamp
in: query
schema: *ref_134
- name: created_before
description: filter on created before (inclusive) timestamp
in: query
schema: &ref_154
type: string
format: date-time
- name: created_after
description: filter on created after (exclusive) timestamp
in: query
schema: &ref_155
type: string
format: date-time
- name: completed_before
description: filter on started before (inclusive) timestamp
in: query
schema: &ref_156
type: string
format: date-time
- name: completed_after
description: filter on started after (exclusive) timestamp
in: query
schema: &ref_157
type: string
format: date-time
- name: created_before_queue
description: filter on jobs created before X for jobs in the queue only
in: query
schema: &ref_158
type: string
format: date-time
- name: created_after_queue
description: filter on jobs created after X for jobs in the queue only
in: query
schema: &ref_159
type: string
format: date-time
- name: running
description: filter on running jobs
in: query
schema: *ref_135
- name: scheduled_for_before_now
description: filter on jobs scheduled_for before now (hence waitinf for a worker)
in: query
schema: *ref_136
- name: job_kinds
description: >-
filter on job kind (values 'preview', 'script', 'dependencies',
'flow') separated by,
in: query
schema: *ref_137
- name: suspended
description: filter on suspended jobs
in: query
schema: *ref_138
- name: args
description: >-
filter on jobs containing those args as a json subset (@> in
postgres)
in: query
schema: *ref_139
- name: tag
description: filter on jobs with a given tag/worker group
in: query
schema: *ref_140
- name: result
description: >-
filter on jobs containing those result as a json subset (@> in
postgres)
in: query
schema: *ref_141
- name: page
description: which page to return (start at 1, default 1)
in: query
schema: *ref_13
- name: per_page
description: number of items to return for a given page (default 30, max 100)
in: query
schema: *ref_14
- 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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: order_desc
description: order by desc order (default true)
in: query
schema: *ref_96
- name: created_by
description: mask to filter exact matching user creator
in: query
schema: *ref_97
- 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: *ref_88
- name: script_path_exact
description: mask to filter exact matching path
in: query
schema: *ref_129
- name: script_path_start
description: mask to filter matching starting path
in: query
schema: *ref_130
- name: schedule_path
description: mask to filter by schedule path
in: query
schema: *ref_131
- name: script_hash
description: mask to filter exact matching path
in: query
schema: *ref_132
- name: started_before
description: filter on started before (inclusive) timestamp
in: query
schema: *ref_133
- name: started_after
description: filter on started after (exclusive) timestamp
in: query
schema: *ref_134
- name: success
description: filter on successful jobs
in: query
schema: *ref_142
- name: scheduled_for_before_now
description: filter on jobs scheduled_for before now (hence waitinf for a worker)
in: query
schema: *ref_136
- name: job_kinds
description: >-
filter on job kind (values 'preview', 'script', 'dependencies',
'flow') separated by,
in: query
schema: *ref_137
- name: suspended
description: filter on suspended jobs
in: query
schema: *ref_138
- name: running
description: filter on running jobs
in: query
schema: *ref_135
- name: args
description: >-
filter on jobs containing those args as a json subset (@> in
postgres)
in: query
schema: *ref_139
- name: result
description: >-
filter on jobs containing those result as a json subset (@> in
postgres)
in: query
schema: *ref_141
- name: allow_wildcards
description: allow wildcards (*) in the filter of label, tag, worker
in: query
schema: *ref_143
- name: tag
description: filter on jobs with a given tag/worker group
in: query
schema: *ref_140
- name: page
description: which page to return (start at 1, default 1)
in: query
schema: *ref_13
- name: per_page
description: number of items to return for a given page (default 30, max 100)
in: query
schema: *ref_14
- 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:
- name: workspace
in: path
required: true
schema: *ref_4
- 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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: id
in: path
required: true
schema: *ref_144
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: trigger_kind
description: The kind of trigger
in: path
required: true
schema:
description: job trigger kind (schedule, http, websocket...)
type: string
enum: *ref_145
- 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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: trigger_kind
description: The kind of trigger
in: path
required: true
schema:
description: job trigger kind (schedule, http, websocket...)
type: string
enum: *ref_145
- 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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: order_desc
description: order by desc order (default true)
in: query
schema: *ref_96
- name: created_by
description: mask to filter exact matching user creator
in: query
schema: *ref_97
- name: label
description: >-
mask to filter exact matching job's label (job labels are completed
jobs with as a result an object containing a string in the array at
key 'wm_labels')
in: query
schema: *ref_146
- name: worker
description: worker this job was ran on
in: query
schema: *ref_128
- 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: *ref_88
- name: script_path_exact
description: mask to filter exact matching path
in: query
schema: *ref_129
- name: script_path_start
description: mask to filter matching starting path
in: query
schema: *ref_130
- name: schedule_path
description: mask to filter by schedule path
in: query
schema: *ref_131
- name: script_hash
description: mask to filter exact matching path
in: query
schema: *ref_132
- name: started_before
description: filter on started before (inclusive) timestamp
in: query
schema: *ref_133
- name: started_after
description: filter on started after (exclusive) timestamp
in: query
schema: *ref_134
- name: success
description: filter on successful jobs
in: query
schema: *ref_142
- name: job_kinds
description: >-
filter on job kind (values 'preview', 'script', 'dependencies',
'flow') separated by,
in: query
schema: *ref_137
- name: args
description: >-
filter on jobs containing those args as a json subset (@> in
postgres)
in: query
schema: *ref_139
- name: result
description: >-
filter on jobs containing those result as a json subset (@> in
postgres)
in: query
schema: *ref_141
- name: allow_wildcards
description: allow wildcards (*) in the filter of label, tag, worker
in: query
schema: *ref_143
- name: tag
description: filter on jobs with a given tag/worker group
in: query
schema: *ref_140
- name: page
description: which page to return (start at 1, default 1)
in: query
schema: *ref_13
- name: per_page
description: number of items to return for a given page (default 30, max 100)
in: query
schema: *ref_14
- 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:
type: object
properties: &ref_161
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:
type: object
description: The arguments to pass to the script or flow
additionalProperties: true
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:
type: object
properties: *ref_147
required: *ref_148
workflow_as_code_status:
type: object
properties: *ref_149
raw_flow:
type: object
description: >-
The flow structure containing modules and optional
preprocessor/failure handlers
properties: *ref_126
required: *ref_127
is_flow_step:
type: boolean
language:
type: string
enum: *ref_76
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: &ref_162
- 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
/w/{workspace}/jobs/completed/export:
get:
summary: export all completed jobs for backup/migration
operationId: exportCompletedJobs
tags:
- job
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- name: page
description: which page to return (start at 1, default 1)
in: query
schema: *ref_13
- name: per_page
description: number of items to return for a given page (default 30, max 100)
in: query
schema: *ref_14
responses:
'200':
description: All completed jobs exported
content:
application/json:
schema:
type: array
items:
type: object
description: Completed job with full data for export/import operations
properties: &ref_150
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:
type: string
enum: *ref_76
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: &ref_151
- id
- created_by
- created_at
- job_kind
- permissioned_as
- email
- visible_to_owner
/w/{workspace}/jobs/completed/import:
post:
summary: import completed jobs from backup/migration
operationId: importCompletedJobs
tags:
- job
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
type: object
description: Completed job with full data for export/import operations
properties: *ref_150
required: *ref_151
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: page
description: which page to return (start at 1, default 1)
in: query
schema: *ref_13
- name: per_page
description: number of items to return for a given page (default 30, max 100)
in: query
schema: *ref_14
responses:
'200':
description: All queued jobs exported
content:
application/json:
schema:
type: array
items:
type: object
description: Queued job with full data for export/import operations
properties: &ref_152
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:
type: string
enum: *ref_76
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: &ref_153
- id
- created_by
- created_at
- job_kind
- permissioned_as
- email
- visible_to_owner
/w/{workspace}/jobs/queue/import:
post:
summary: import queued jobs from backup/migration
operationId: importQueuedJobs
tags:
- job
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
type: object
description: Queued job with full data for export/import operations
properties: *ref_152
required: *ref_153
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:
- name: workspace
in: path
required: true
schema: *ref_4
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: created_by
description: mask to filter exact matching user creator
in: query
schema: *ref_97
- name: label
description: >-
mask to filter exact matching job's label (job labels are completed
jobs with as a result an object containing a string in the array at
key 'wm_labels')
in: query
schema: *ref_146
- name: worker
description: worker this job was ran on
in: query
schema: *ref_128
- 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: *ref_88
- name: script_path_exact
description: mask to filter exact matching path
in: query
schema: *ref_129
- name: script_path_start
description: mask to filter matching starting path
in: query
schema: *ref_130
- name: schedule_path
description: mask to filter by schedule path
in: query
schema: *ref_131
- name: script_hash
description: mask to filter exact matching path
in: query
schema: *ref_132
- name: started_before
description: filter on started before (inclusive) timestamp
in: query
schema: *ref_133
- name: started_after
description: filter on started after (exclusive) timestamp
in: query
schema: *ref_134
- name: created_before
description: filter on created before (inclusive) timestamp
in: query
schema: *ref_154
- name: created_after
description: filter on created after (exclusive) timestamp
in: query
schema: *ref_155
- name: completed_before
description: filter on started before (inclusive) timestamp
in: query
schema: *ref_156
- name: completed_after
description: filter on started after (exclusive) timestamp
in: query
schema: *ref_157
- name: created_before_queue
description: filter on jobs created before X for jobs in the queue only
in: query
schema: *ref_158
- name: created_after_queue
description: filter on jobs created after X for jobs in the queue only
in: query
schema: *ref_159
- name: running
description: filter on running jobs
in: query
schema: *ref_135
- name: scheduled_for_before_now
description: filter on jobs scheduled_for before now (hence waitinf for a worker)
in: query
schema: *ref_136
- name: job_kinds
description: >-
filter on job kind (values 'preview', 'script', 'dependencies',
'flow') separated by,
in: query
schema: *ref_137
- name: suspended
description: filter on suspended jobs
in: query
schema: *ref_138
- name: args
description: >-
filter on jobs containing those args as a json subset (@> in
postgres)
in: query
schema: *ref_139
- name: tag
description: filter on jobs with a given tag/worker group
in: query
schema: *ref_140
- name: result
description: >-
filter on jobs containing those result as a json subset (@> in
postgres)
in: query
schema: *ref_141
- name: allow_wildcards
description: allow wildcards (*) in the filter of label, tag, worker
in: query
schema: *ref_143
- name: per_page
description: number of items to return for a given page (default 30, max 100)
in: query
schema: *ref_14
- name: trigger_kind
description: trigger kind (schedule, http, websocket...)
in: query
schema: *ref_160
- name: is_skipped
description: is the job skipped
in: query
schema:
type: boolean
- name: is_flow_step
description: is the job a flow step
in: query
schema:
type: boolean
- name: has_null_parent
description: has null parent
in: query
schema:
type: boolean
- name: success
description: filter on successful jobs
in: query
schema:
type: boolean
- name: all_workspaces
description: >-
get jobs from all workspaces (only valid if request come from the
`admins` workspace)
in: query
schema:
type: boolean
- name: is_not_schedule
description: is not a scheduled job
in: query
schema:
type: boolean
responses:
'200':
description: All jobs
content:
application/json:
schema:
type: array
items:
oneOf: &ref_165
- allOf:
- type: object
properties: *ref_161
required: *ref_162
- type: object
properties:
type:
type: string
enum:
- CompletedJob
- allOf:
- type: object
properties: *ref_163
required: *ref_164
- type: object
properties:
type:
type: string
enum:
- QueuedJob
discriminator: &ref_166
propertyName: type
/jobs/db_clock:
get:
summary: get db clock
operationId: getDbClock
tags:
- job
responses:
'200':
description: the timestamp of the db that can be used to compute the drift
content:
application/json:
schema:
type: integer
/jobs/completed/count_by_tag:
get:
summary: Count jobs by tag
operationId: countJobsByTag
tags:
- job
parameters:
- name: horizon_secs
in: query
description: >-
Past Time horizon in seconds (when to start the count = now -
horizon) (default is 3600)
required: false
schema:
type: integer
- name: workspace_id
in: query
description: Specific workspace ID to filter results (optional)
required: false
schema:
type: string
responses:
'200':
description: Job counts by tag
content:
application/json:
schema:
type: array
items:
type: object
properties:
tag:
type: string
count:
type: integer
required:
- tag
- count
/w/{workspace}/jobs_u/get/{id}:
get:
summary: get job
operationId: getJob
tags:
- job
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- name: id
in: path
required: true
schema: *ref_144
- 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:
oneOf: *ref_165
discriminator: *ref_166
/w/{workspace}/jobs_u/get_root_job_id/{id}:
get:
summary: get root job id
operationId: getRootJobId
tags:
- job
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- name: id
in: path
required: true
schema: *ref_144
responses:
'200':
description: get root job id
content:
application/json:
schema:
type: string
/w/{workspace}/jobs_u/get_logs/{id}:
get:
summary: get job logs
operationId: getJob logs
tags:
- job
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- name: id
in: path
required: true
schema: *ref_144
- name: remove_ansi_warnings
in: query
schema:
type: boolean
responses:
'200':
description: job details
content:
text/plain:
schema:
type: string
/w/{workspace}/jobs_u/get_completed_logs_tail/{id}:
get:
summary: get completed job logs tail
operationId: getCompletedJobLogsTail
tags:
- job
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- name: id
in: path
required: true
schema: *ref_144
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: id
in: path
required: true
schema: *ref_144
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:
- name: workspace
in: path
required: true
schema: *ref_4
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: id
in: path
required: true
schema: *ref_144
- 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:
type: object
properties: *ref_147
required: *ref_148
workflow_as_code_status:
type: object
properties: *ref_149
/w/{workspace}/jobs_u/getupdate_sse/{id}:
get:
summary: get job updates via server-sent events
operationId: getJobUpdatesSSE
tags:
- job
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- name: id
in: path
required: true
schema: *ref_144
- name: running
in: query
schema:
type: boolean
- name: log_offset
in: query
schema:
type: integer
- name: stream_offset
in: query
schema:
type: integer
- name: get_progress
in: query
schema:
type: boolean
- name: only_result
in: query
schema:
type: boolean
- name: no_logs
in: query
schema:
type: boolean
responses:
'200':
description: server-sent events stream of job updates
content:
text/event-stream:
schema:
type: string
/w/{workspace}/jobs_u/get_log_file/{path}:
get:
summary: get log file from object store
operationId: getLogFileFromStore
tags:
- job
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- 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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: id
in: path
required: true
schema: *ref_144
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: id
in: path
required: true
schema: *ref_144
responses:
'200':
description: job details
content:
application/json:
schema:
type: object
properties: *ref_161
required: *ref_162
/w/{workspace}/jobs_u/completed/get_result/{id}:
get:
summary: get completed job result
operationId: getCompletedJobResult
tags:
- job
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- name: id
in: path
required: true
schema: *ref_144
- 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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: id
in: path
required: true
schema: *ref_144
- name: get_started
in: query
schema: &ref_274
type: boolean
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: id
in: path
required: true
schema: *ref_144
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: id
in: path
required: true
schema: *ref_144
responses:
'200':
description: job details
content:
application/json:
schema:
type: object
properties: *ref_161
required: *ref_162
/w/{workspace}/jobs_u/queue/cancel/{id}:
post:
summary: cancel queued or running job
operationId: cancelQueuedJob
tags:
- job
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- name: id
in: path
required: true
schema: *ref_144
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: id
in: path
required: true
schema: *ref_144
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:
- name: workspace
in: path
required: true
schema: *ref_4
- 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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: id
in: path
required: true
schema: *ref_144
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: id
in: path
required: true
schema: *ref_144
- 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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: id
in: path
required: true
schema: *ref_144
- 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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: id
in: path
required: true
schema: *ref_144
- name: approver
in: query
schema:
type: string
- name: message
in: query
schema:
type: string
- name: slack_resource_path
in: query
required: true
schema:
type: string
- name: channel_id
in: query
required: true
schema:
type: string
- name: flow_step_id
in: query
required: true
schema:
type: string
- name: default_args_json
in: query
required: false
schema:
type: string
- name: dynamic_enums_json
in: query
required: false
schema:
type: string
responses:
'200':
description: Interactive slack approval message sent successfully
/w/{workspace}/jobs/teams_approval/{id}:
get:
summary: generate interactive teams approval for suspended job
operationId: getTeamsApprovalPayload
tags:
- job
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- name: id
in: path
required: true
schema: *ref_144
- name: approver
in: query
schema:
type: string
- name: message
in: query
schema:
type: string
- name: team_name
in: query
required: true
schema:
type: string
- name: channel_name
in: query
required: true
schema:
type: string
- name: flow_step_id
in: query
required: true
schema:
type: string
- name: default_args_json
in: query
required: false
schema:
type: string
- name: dynamic_enums_json
in: query
required: false
schema:
type: string
responses:
'200':
description: Interactive slack approval message sent successfully
/w/{workspace}/jobs_u/resume/{id}/{resume_id}/{signature}:
get:
summary: resume a job for a suspended flow
operationId: resumeSuspendedJobGet
tags:
- job
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- name: id
in: path
required: true
schema: *ref_144
- 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: *ref_95
- 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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: id
in: path
required: true
schema: *ref_144
- 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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: id
in: path
required: true
schema: *ref_144
- 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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: id
in: path
required: true
schema: *ref_144
- 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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: id
in: path
required: true
schema: *ref_144
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: id
in: path
required: true
schema: *ref_144
- 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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: id
in: path
required: true
schema: *ref_144
- 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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: id
in: path
required: true
schema: *ref_144
- 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:
oneOf: *ref_165
discriminator: *ref_166
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:
- name: workspace
in: path
required: true
schema: *ref_4
requestBody:
description: new schedule
required: true
content:
application/json:
schema:
type: object
properties: &ref_381
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:
type: object
description: The arguments to pass to the script or flow
additionalProperties: true
enabled:
type: boolean
description: >-
Whether the schedule is currently active and will trigger
jobs
on_failure:
type: string
description: Path to a script or flow to run when the scheduled job fails
on_failure_times:
type: number
description: >-
Number of consecutive failures before the on_failure handler
is triggered (default 1)
on_failure_exact:
type: boolean
description: >-
If true, trigger on_failure handler only on exactly N
failures, not on every failure after N
on_failure_extra_args:
type: object
description: The arguments to pass to the script or flow
additionalProperties: true
on_recovery:
type: string
description: >-
Path to a script or flow to run when the schedule recovers
after failures
on_recovery_times:
type: number
description: >-
Number of consecutive successes before the on_recovery
handler is triggered (default 1)
on_recovery_extra_args:
type: object
description: The arguments to pass to the script or flow
additionalProperties: true
on_success:
type: string
description: >-
Path to a script or flow to run after each successful
execution
on_success_extra_args:
type: object
description: The arguments to pass to the script or flow
additionalProperties: 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:
type: object
description: Retry configuration for failed module executions
properties: &ref_169
constant:
type: object
description: Retry with constant delay between attempts
properties:
attempts:
type: integer
description: Number of retry attempts
seconds:
type: integer
description: Seconds to wait between retries
exponential:
type: object
description: Retry with exponential backoff (delay doubles each time)
properties:
attempts:
type: integer
description: Number of retry attempts
multiplier:
type: integer
description: Multiplier for exponential backoff
seconds:
type: integer
minimum: 1
description: Initial delay in seconds
random_factor:
type: integer
minimum: 0
maximum: 100
description: >-
Random jitter percentage (0-100) to avoid thundering
herd
retry_if:
type: object
description: Conditional retry based on error or result
properties: *ref_167
required: *ref_168
no_flow_overlap:
type: boolean
description: >-
If true, skip this schedule's execution if the previous run
is still in progress (prevents concurrent runs)
summary:
type: string
description: Short summary describing the purpose of this schedule
description:
type: string
description: Detailed description of what this schedule does
tag:
type: string
description: Worker tag to route jobs to specific worker groups
paused_until:
type: string
format: date-time
description: >-
ISO 8601 datetime until which the schedule is paused.
Schedule resumes automatically after this time
cron_version:
type: string
description: >-
Cron parser version. Use 'v2' for extended syntax with
additional features
dynamic_skip:
type: string
description: >-
Path to a script that validates scheduled datetimes.
Receives scheduled_for datetime and returns boolean to skip
(true) or run (false)
required: &ref_382
- path
- schedule
- timezone
- script_path
- is_flow
- args
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
requestBody:
description: updated schedule
required: true
content:
application/json:
schema:
type: object
properties: &ref_383
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:
type: object
description: The arguments to pass to the script or flow
additionalProperties: true
on_failure:
type: string
description: Path to a script or flow to run when the scheduled job fails
on_failure_times:
type: number
description: >-
Number of consecutive failures before the on_failure handler
is triggered (default 1)
on_failure_exact:
type: boolean
description: >-
If true, trigger on_failure handler only on exactly N
failures, not on every failure after N
on_failure_extra_args:
type: object
description: The arguments to pass to the script or flow
additionalProperties: true
on_recovery:
type: string
description: >-
Path to a script or flow to run when the schedule recovers
after failures
on_recovery_times:
type: number
description: >-
Number of consecutive successes before the on_recovery
handler is triggered (default 1)
on_recovery_extra_args:
type: object
description: The arguments to pass to the script or flow
additionalProperties: true
on_success:
type: string
description: >-
Path to a script or flow to run after each successful
execution
on_success_extra_args:
type: object
description: The arguments to pass to the script or flow
additionalProperties: 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:
type: object
description: Retry configuration for failed module executions
properties: *ref_169
no_flow_overlap:
type: boolean
description: >-
If true, skip this schedule's execution if the previous run
is still in progress (prevents concurrent runs)
summary:
type: string
description: Short summary describing the purpose of this schedule
description:
type: string
description: Detailed description of what this schedule does
tag:
type: string
description: Worker tag to route jobs to specific worker groups
paused_until:
type: string
format: date-time
description: >-
ISO 8601 datetime until which the schedule is paused.
Schedule resumes automatically after this time
cron_version:
type: string
description: >-
Cron parser version. Use 'v2' for extended syntax with
additional features
dynamic_skip:
type: string
description: >-
Path to a script that validates scheduled datetimes.
Receives scheduled_for datetime and returns boolean to skip
(true) or run (false)
required: &ref_384
- schedule
- timezone
- args
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
responses:
'200':
description: schedule deleted
content:
application/json:
schema:
type: object
properties: &ref_170
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:
type: object
description: The arguments to pass to the script or flow
additionalProperties: 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
error:
type: string
description: Last error message if the schedule failed to trigger
on_failure:
type: string
description: >-
Path to a script or flow to run when the scheduled job
fails
on_failure_times:
type: number
description: >-
Number of consecutive failures before the on_failure
handler is triggered (default 1)
on_failure_exact:
type: boolean
description: >-
If true, trigger on_failure handler only on exactly N
failures, not on every failure after N
on_failure_extra_args:
type: object
description: The arguments to pass to the script or flow
additionalProperties: true
on_recovery:
type: string
description: >-
Path to a script or flow to run when the schedule recovers
after failures
on_recovery_times:
type: number
description: >-
Number of consecutive successes before the on_recovery
handler is triggered (default 1)
on_recovery_extra_args:
type: object
description: The arguments to pass to the script or flow
additionalProperties: true
on_success:
type: string
description: >-
Path to a script or flow to run after each successful
execution
on_success_extra_args:
type: object
description: The arguments to pass to the script or flow
additionalProperties: 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:
type: object
description: Retry configuration for failed module executions
properties: *ref_169
summary:
type: string
description: Short summary describing the purpose of this schedule
description:
type: string
description: Detailed description of what this schedule does
no_flow_overlap:
type: boolean
description: >-
If true, skip this schedule's execution if the previous
run is still in progress (prevents concurrent runs)
tag:
type: string
description: Worker tag to route jobs to specific worker groups
paused_until:
type: string
format: date-time
description: >-
ISO 8601 datetime until which the schedule is paused.
Schedule resumes automatically after this time
cron_version:
type: string
description: >-
Cron parser version. Use 'v2' for extended syntax with
additional features
dynamic_skip:
type: string
description: >-
Path to a script that validates scheduled datetimes.
Receives scheduled_for datetime and returns boolean to
skip (true) or run (false)
required: &ref_171
- path
- edited_by
- edited_at
- schedule
- script_path
- timezone
- extra_perms
- is_flow
- enabled
- email
/w/{workspace}/schedules/exists/{path}:
get:
summary: does schedule exists
operationId: existsSchedule
tags:
- schedule
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: page
description: which page to return (start at 1, default 1)
in: query
schema: *ref_13
- name: per_page
description: number of items to return for a given page (default 30, max 100)
in: query
schema: *ref_14
- name: args
description: >-
filter on jobs containing those args as a json subset (@> in
postgres)
in: query
schema: *ref_139
- name: path
description: filter by path
in: query
schema:
type: string
- name: is_flow
description: filter schedules by whether they target a flow
in: query
schema:
type: boolean
- name: path_start
description: filter schedules by path prefix
in: query
schema:
type: string
responses:
'200':
description: schedule list
content:
application/json:
schema:
type: array
items:
type: object
properties: *ref_170
required: *ref_171
/w/{workspace}/schedules/list_with_jobs:
get:
summary: list schedules with last 20 jobs
operationId: listSchedulesWithJobs
tags:
- schedule
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- name: page
description: which page to return (start at 1, default 1)
in: query
schema: *ref_13
- name: per_page
description: number of items to return for a given page (default 30, max 100)
in: query
schema: *ref_14
responses:
'200':
description: schedule list
content:
application/json:
schema:
type: array
items:
allOf: &ref_380
- type: object
properties: *ref_170
required: *ref_171
- 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
/w/{workspace}/schedules/setdefaulthandler:
post:
summary: Set default error or recoevery handler
operationId: setDefaultErrorOrRecoveryHandler
tags:
- schedule
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
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:
- name: workspace
in: path
required: true
schema: *ref_4
requestBody:
description: openapi spec info and url
content:
application/json:
schema:
type: object
properties: &ref_173
info:
type: object
properties: &ref_390
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: &ref_391
- title
- version
url:
type: string
openapi_spec_format:
type: string
enum: &ref_385
- yaml
- json
http_route_filters:
type: array
items:
type: object
properties: &ref_386
folder_regex:
type: string
path_regex:
type: string
route_path_regex:
type: string
required: &ref_387
- folder_regex
- path_regex
- route_path_regex
webhook_filters:
type: array
items:
type: object
properties: &ref_388
user_or_folder_regex:
type: string
enum:
- '*'
- u
- f
user_or_folder_regex_value:
type: string
path:
type: string
runnable_kind:
type: string
enum: *ref_172
required: &ref_389
- user_or_folder_regex
- user_or_folder_regex_value
- path
- runnable_kind
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:
- name: workspace
in: path
required: true
schema: *ref_4
requestBody:
description: openapi spec info and url
content:
application/json:
schema:
type: object
properties: *ref_173
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:
- name: workspace
in: path
required: true
schema: *ref_4
requestBody:
description: new http trigger
required: true
content:
application/json:
schema:
type: array
items:
type: object
properties: &ref_174
path:
type: string
description: The unique path identifier for this trigger
script_path:
type: string
description: Path to the script or flow to execute when triggered
route_path:
type: string
description: >-
The URL route path that will trigger this endpoint (e.g.,
'api/myendpoint'). Must NOT start with a /.
workspaced_route:
type: boolean
description: If true, the route includes the workspace ID in the path
summary:
type: string
description: Short summary describing the purpose of this trigger
description:
type: string
description: Detailed description of what this trigger does
static_asset_config:
type: object
description: >-
Configuration for serving static assets (s3 bucket,
storage path, filename)
properties:
s3:
type: string
description: S3 bucket path for static assets
storage:
type: string
description: Storage path for static assets
filename:
type: string
description: Filename for the static asset
required:
- s3
is_flow:
type: boolean
description: >-
True if script_path points to a flow, false if it points
to a script
http_method:
description: >-
HTTP method (get, post, put, delete, patch) that triggers
this endpoint
type: string
enum: &ref_176
- get
- post
- put
- delete
- patch
authentication_resource_path:
type: string
description: >-
Path to the resource containing authentication
configuration (for api_key, basic_http, custom_script,
signature methods)
is_async:
type: boolean
description: Deprecated, use request_type instead
request_type:
description: >-
How the request is handled - 'sync' waits for result,
'async' returns job ID immediately, 'sync_sse' streams
results via Server-Sent Events
type: string
enum: &ref_177
- sync
- async
- sync_sse
authentication_method:
description: >-
How requests are authenticated - 'none' (public),
'windmill' (Windmill token), 'api_key', 'basic_http',
'custom_script', 'signature'
type: string
enum: &ref_178
- none
- windmill
- 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:
description: job trigger mode
type: string
enum: &ref_179
- enabled
- disabled
- suspended
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:
description: The arguments to pass to the script or flow
type: object
additionalProperties: true
retry:
description: Retry configuration for failed module executions
type: object
properties: *ref_169
required: &ref_175
- path
- script_path
- route_path
- is_flow
- authentication_method
- http_method
- is_static_website
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:
- name: workspace
in: path
required: true
schema: *ref_4
requestBody:
description: new http trigger
required: true
content:
application/json:
schema:
type: object
properties: *ref_174
required: *ref_175
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
requestBody:
description: updated trigger
required: true
content:
application/json:
schema:
type: object
properties: &ref_392
path:
type: string
description: The unique path identifier for this trigger
script_path:
type: string
description: Path to the script or flow to execute when triggered
route_path:
type: string
description: >-
The URL route path that will trigger this endpoint (e.g.,
'api/myendpoint'). Must NOT start with a /.
summary:
type: string
description: Short summary describing the purpose of this trigger
description:
type: string
description: Detailed description of what this trigger does
workspaced_route:
type: boolean
description: If true, the route includes the workspace ID in the path
static_asset_config:
type: object
description: >-
Configuration for serving static assets (s3 bucket, storage
path, filename)
properties:
s3:
type: string
description: S3 bucket path for static assets
storage:
type: string
description: Storage path for static assets
filename:
type: string
description: Filename for the static asset
required:
- s3
authentication_resource_path:
type: string
description: >-
Path to the resource containing authentication configuration
(for api_key, basic_http, custom_script, signature methods)
is_flow:
type: boolean
description: >-
True if script_path points to a flow, false if it points to
a script
http_method:
description: >-
HTTP method (get, post, put, delete, patch) that triggers
this endpoint
type: string
enum: *ref_176
is_async:
type: boolean
description: Deprecated, use request_type instead
request_type:
description: >-
How the request is handled - 'sync' waits for result,
'async' returns job ID immediately, 'sync_sse' streams
results via Server-Sent Events
type: string
enum: *ref_177
authentication_method:
description: >-
How requests are authenticated - 'none' (public), 'windmill'
(Windmill token), 'api_key', 'basic_http', 'custom_script',
'signature'
type: string
enum: *ref_178
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:
description: The arguments to pass to the script or flow
type: object
additionalProperties: true
retry:
description: Retry configuration for failed module executions
type: object
properties: *ref_169
required: &ref_393
- path
- script_path
- is_flow
- kind
- authentication_method
- http_method
- is_static_website
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
responses:
'200':
description: http trigger deleted
content:
application/json:
schema:
allOf: &ref_180
- type: object
properties: &ref_184
path:
type: string
description: The unique path identifier for this trigger
script_path:
type: string
description: Path to the script or flow to execute when triggered
email:
type: string
description: >-
Email of the user who owns this trigger, used for
permissioned_as
extra_perms:
type: object
description: Additional permissions for this trigger
additionalProperties:
type: boolean
workspace_id:
type: string
description: The workspace this trigger belongs to
edited_by:
type: string
description: Username of the last person who edited this trigger
edited_at:
type: string
format: date-time
description: Timestamp of the last edit
is_flow:
type: boolean
description: >-
True if script_path points to a flow, false if it
points to a script
mode:
description: job trigger mode
type: string
enum: *ref_179
required: &ref_185
- path
- script_path
- email
- extra_perms
- workspace_id
- edited_by
- edited_at
- is_flow
- mode
type: object
properties: &ref_181
route_path:
type: string
description: >-
The URL route path that will trigger this endpoint (e.g.,
'api/myendpoint'). Must NOT start with a /.
static_asset_config:
type: object
description: >-
Configuration for serving static assets (s3 bucket,
storage path, filename)
properties:
s3:
type: string
description: S3 bucket path for static assets
storage:
type: string
description: Storage path for static assets
filename:
type: string
description: Filename for the static asset
required:
- s3
http_method:
description: >-
HTTP method (get, post, put, delete, patch) that triggers
this endpoint
type: string
enum: *ref_176
authentication_resource_path:
type: string
description: >-
Path to the resource containing authentication
configuration (for api_key, basic_http, custom_script,
signature methods)
summary:
type: string
description: Short summary describing the purpose of this trigger
description:
type: string
description: Detailed description of what this trigger does
request_type:
description: >-
How the request is handled - 'sync' waits for result,
'async' returns job ID immediately, 'sync_sse' streams
results via Server-Sent Events
type: string
enum: *ref_177
authentication_method:
description: >-
How requests are authenticated - 'none' (public),
'windmill' (Windmill token), 'api_key', 'basic_http',
'custom_script', 'signature'
type: string
enum: *ref_178
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:
description: The arguments to pass to the script or flow
type: object
additionalProperties: true
retry:
description: Retry configuration for failed module executions
type: object
properties: *ref_169
required: &ref_182
- route_path
- request_type
- authentication_method
- http_method
- is_static_website
- workspaced_route
- wrap_body
- raw_string
/w/{workspace}/http_triggers/list:
get:
summary: list http triggers
operationId: listHttpTriggers
tags:
- http_trigger
parameters:
- required: true
name: workspace
in: path
schema: *ref_4
- name: page
description: which page to return (start at 1, default 1)
in: query
schema: *ref_13
- name: per_page
description: number of items to return for a given page (default 30, max 100)
in: query
schema: *ref_14
- name: path
description: filter by path
in: query
schema:
type: string
- name: is_flow
in: query
schema:
type: boolean
- name: path_start
in: query
schema:
type: string
responses:
'200':
description: http trigger list
content:
application/json:
schema:
type: array
items:
allOf: *ref_180
type: object
properties: *ref_181
required: *ref_182
/w/{workspace}/http_triggers/exists/{path}:
get:
summary: does http trigger exists
operationId: existsHttpTrigger
tags:
- http_trigger
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
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:
- name: workspace
in: path
required: true
schema: *ref_4
requestBody:
description: route exists request
required: true
content:
application/json:
schema:
type: object
properties:
route_path:
type: string
http_method:
type: string
enum: *ref_176
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
mode:
description: job trigger mode
type: string
enum: *ref_179
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:
- name: workspace
in: path
required: true
schema: *ref_4
requestBody:
description: new websocket trigger
required: true
content:
application/json:
schema:
type: object
properties: &ref_394
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:
description: job trigger mode
type: string
enum: *ref_179
filters:
type: array
description: >-
Array of key-value filters to match incoming messages (only
matching messages trigger the script)
items:
type: object
properties:
key:
type: string
value: {}
required:
- key
- value
initial_messages:
type: array
description: >-
Messages to send immediately after connecting (can be raw
strings or computed by runnables)
items:
anyOf: &ref_183
- type: object
properties:
raw_message:
type: string
required:
- raw_message
- type: object
properties:
runnable_result:
type: object
properties:
path:
type: string
args:
type: object
description: The arguments to pass to the script or flow
additionalProperties: true
is_flow:
type: boolean
required:
- path
- args
- is_flow
required:
- runnable_result
url_runnable_args:
description: The arguments to pass to the script or flow
type: object
additionalProperties: 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
error_handler_path:
type: string
description: Path to a script or flow to run when the triggered job fails
error_handler_args:
description: The arguments to pass to the script or flow
type: object
additionalProperties: true
retry:
description: Retry configuration for failed module executions
type: object
properties: *ref_169
required: &ref_395
- path
- script_path
- url
- is_flow
- filters
- can_return_message
- can_return_error_result
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
requestBody:
description: updated trigger
required: true
content:
application/json:
schema:
type: object
properties: &ref_396
url:
type: string
description: >-
The WebSocket URL to connect to (can be a static URL or
computed by a runnable)
path:
type: string
description: The unique path identifier for this trigger
script_path:
type: string
description: >-
Path to the script or flow to execute when a message is
received
is_flow:
type: boolean
description: >-
True if script_path points to a flow, false if it points to
a script
filters:
type: array
description: >-
Array of key-value filters to match incoming messages (only
matching messages trigger the script)
items:
type: object
properties:
key:
type: string
value: {}
required:
- key
- value
initial_messages:
type: array
description: >-
Messages to send immediately after connecting (can be raw
strings or computed by runnables)
items:
anyOf: *ref_183
url_runnable_args:
description: The arguments to pass to the script or flow
type: object
additionalProperties: 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
error_handler_path:
type: string
description: Path to a script or flow to run when the triggered job fails
error_handler_args:
description: The arguments to pass to the script or flow
type: object
additionalProperties: true
retry:
description: Retry configuration for failed module executions
type: object
properties: *ref_169
required: &ref_397
- path
- script_path
- url
- is_flow
- filters
- can_return_message
- can_return_error_result
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
responses:
'200':
description: websocket trigger deleted
content:
application/json:
schema:
allOf: &ref_186
- type: object
properties: *ref_184
required: *ref_185
type: object
properties: &ref_187
url:
type: string
description: >-
The WebSocket URL to connect to (can be a static URL or
computed by a runnable)
server_id:
type: string
description: >-
ID of the server currently handling this trigger
(internal)
last_server_ping:
type: string
format: date-time
description: Timestamp of last server heartbeat (internal)
error:
type: string
description: Last error message if the trigger failed
filters:
type: array
description: >-
Array of key-value filters to match incoming messages
(only matching messages trigger the script)
items:
type: object
properties:
key:
type: string
value: {}
required:
- key
- value
initial_messages:
type: array
description: >-
Messages to send immediately after connecting (can be raw
strings or computed by runnables)
items:
anyOf: *ref_183
url_runnable_args:
description: The arguments to pass to the script or flow
type: object
additionalProperties: 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
error_handler_path:
type: string
description: >-
Path to a script or flow to run when the triggered job
fails
error_handler_args:
description: The arguments to pass to the script or flow
type: object
additionalProperties: true
retry:
description: Retry configuration for failed module executions
type: object
properties: *ref_169
required: &ref_188
- url
- filters
- can_return_message
- can_return_error_result
/w/{workspace}/websocket_triggers/list:
get:
summary: list websocket triggers
operationId: listWebsocketTriggers
tags:
- websocket_trigger
parameters:
- required: true
name: workspace
in: path
schema: *ref_4
- name: page
description: which page to return (start at 1, default 1)
in: query
schema: *ref_13
- name: per_page
description: number of items to return for a given page (default 30, max 100)
in: query
schema: *ref_14
- name: path
description: filter by path
in: query
schema:
type: string
- name: is_flow
in: query
schema:
type: boolean
- name: path_start
in: query
schema:
type: string
responses:
'200':
description: websocket trigger list
content:
application/json:
schema:
type: array
items:
allOf: *ref_186
type: object
properties: *ref_187
required: *ref_188
/w/{workspace}/websocket_triggers/exists/{path}:
get:
summary: does websocket trigger exists
operationId: existsWebsocketTrigger
tags:
- websocket_trigger
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
requestBody:
description: updated websocket trigger enable
required: true
content:
application/json:
schema:
type: object
properties:
mode:
description: job trigger mode
type: string
enum: *ref_179
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:
- name: workspace
in: path
required: true
schema: *ref_4
requestBody:
description: test websocket connection
required: true
content:
application/json:
schema:
type: object
properties:
url:
type: string
url_runnable_args:
type: object
description: The arguments to pass to the script or flow
additionalProperties: true
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:
- name: workspace
in: path
required: true
schema: *ref_4
requestBody:
description: new kafka trigger
required: true
content:
application/json:
schema:
type: object
properties: &ref_421
path:
type: string
description: The unique path identifier for this trigger
script_path:
type: string
description: >-
Path to the script or flow to execute when a message is
received
is_flow:
type: boolean
description: >-
True if script_path points to a flow, false if it points to
a script
kafka_resource_path:
type: string
description: >-
Path to the Kafka resource containing connection
configuration
group_id:
type: string
description: Kafka consumer group ID for this trigger
topics:
type: array
items:
type: string
description: Array of Kafka topic names to subscribe to
filters:
type: array
items:
type: object
properties:
key:
type: string
value: {}
required:
- key
- value
mode:
description: job trigger mode
type: string
enum: *ref_179
error_handler_path:
type: string
description: Path to a script or flow to run when the triggered job fails
error_handler_args:
description: The arguments to pass to the script or flow
type: object
additionalProperties: true
retry:
description: Retry configuration for failed module executions
type: object
properties: *ref_169
required: &ref_422
- path
- script_path
- is_flow
- kafka_resource_path
- group_id
- topics
- filters
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
requestBody:
description: updated trigger
required: true
content:
application/json:
schema:
type: object
properties: &ref_423
kafka_resource_path:
type: string
description: >-
Path to the Kafka resource containing connection
configuration
group_id:
type: string
description: Kafka consumer group ID for this trigger
topics:
type: array
items:
type: string
description: Array of Kafka topic names to subscribe to
filters:
type: array
items:
type: object
properties:
key:
type: string
value: {}
required:
- key
- value
path:
type: string
description: The unique path identifier for this trigger
script_path:
type: string
description: >-
Path to the script or flow to execute when a message is
received
is_flow:
type: boolean
description: >-
True if script_path points to a flow, false if it points to
a script
error_handler_path:
type: string
description: Path to a script or flow to run when the triggered job fails
error_handler_args:
description: The arguments to pass to the script or flow
type: object
additionalProperties: true
retry:
description: Retry configuration for failed module executions
type: object
properties: *ref_169
required: &ref_424
- path
- script_path
- kafka_resource_path
- group_id
- topics
- filters
- is_flow
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
responses:
'200':
description: kafka trigger deleted
content:
application/json:
schema:
allOf: &ref_189
- type: object
properties: *ref_184
required: *ref_185
type: object
properties: &ref_190
kafka_resource_path:
type: string
description: >-
Path to the Kafka resource containing connection
configuration
group_id:
type: string
description: Kafka consumer group ID for this trigger
topics:
type: array
items:
type: string
description: Array of Kafka topic names to subscribe to
filters:
type: array
items:
type: object
properties:
key:
type: string
value: {}
required:
- key
- value
server_id:
type: string
description: >-
ID of the server currently handling this trigger
(internal)
last_server_ping:
type: string
format: date-time
description: Timestamp of last server heartbeat (internal)
error:
type: string
description: Last error message if the trigger failed
error_handler_path:
type: string
description: >-
Path to a script or flow to run when the triggered job
fails
error_handler_args:
description: The arguments to pass to the script or flow
type: object
additionalProperties: true
retry:
description: Retry configuration for failed module executions
type: object
properties: *ref_169
required: &ref_191
- kafka_resource_path
- group_id
- topics
- filters
/w/{workspace}/kafka_triggers/list:
get:
summary: list kafka triggers
operationId: listKafkaTriggers
tags:
- kafka_trigger
parameters:
- required: true
name: workspace
in: path
schema: *ref_4
- name: page
description: which page to return (start at 1, default 1)
in: query
schema: *ref_13
- name: per_page
description: number of items to return for a given page (default 30, max 100)
in: query
schema: *ref_14
- name: path
description: filter by path
in: query
schema:
type: string
- name: is_flow
in: query
schema:
type: boolean
- name: path_start
in: query
schema:
type: string
responses:
'200':
description: kafka trigger list
content:
application/json:
schema:
type: array
items:
allOf: *ref_189
type: object
properties: *ref_190
required: *ref_191
/w/{workspace}/kafka_triggers/exists/{path}:
get:
summary: does kafka trigger exists
operationId: existsKafkaTrigger
tags:
- kafka_trigger
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
requestBody:
description: updated kafka trigger enable
required: true
content:
application/json:
schema:
type: object
properties:
mode:
description: job trigger mode
type: string
enum: *ref_179
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:
- name: workspace
in: path
required: true
schema: *ref_4
requestBody:
description: test kafka connection
required: true
content:
application/json:
schema:
type: object
properties:
connection:
type: object
required:
- connection
responses:
'200':
description: successfuly connected to kafka brokers
content:
text/plain:
schema:
type: string
/w/{workspace}/nats_triggers/create:
post:
summary: create nats trigger
operationId: createNatsTrigger
tags:
- nats_trigger
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
requestBody:
description: new nats trigger
required: true
content:
application/json:
schema:
type: object
properties: &ref_425
path:
type: string
description: The unique path identifier for this trigger
script_path:
type: string
description: >-
Path to the script or flow to execute when a message is
received
is_flow:
type: boolean
description: >-
True if script_path points to a flow, false if it points to
a script
nats_resource_path:
type: string
description: >-
Path to the NATS resource containing connection
configuration
use_jetstream:
type: boolean
description: If true, uses NATS JetStream for durable message delivery
stream_name:
type: string
description: JetStream stream name (required when use_jetstream is true)
consumer_name:
type: string
description: >-
JetStream consumer name (required when use_jetstream is
true)
subjects:
type: array
items:
type: string
description: Array of NATS subjects to subscribe to
mode:
description: job trigger mode
type: string
enum: *ref_179
error_handler_path:
type: string
description: Path to a script or flow to run when the triggered job fails
error_handler_args:
description: The arguments to pass to the script or flow
type: object
additionalProperties: true
retry:
description: Retry configuration for failed module executions
type: object
properties: *ref_169
required: &ref_426
- path
- script_path
- is_flow
- nats_resource_path
- use_jetstream
- subjects
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
requestBody:
description: updated trigger
required: true
content:
application/json:
schema:
type: object
properties: &ref_427
nats_resource_path:
type: string
description: >-
Path to the NATS resource containing connection
configuration
use_jetstream:
type: boolean
description: If true, uses NATS JetStream for durable message delivery
stream_name:
type: string
description: JetStream stream name (required when use_jetstream is true)
consumer_name:
type: string
description: >-
JetStream consumer name (required when use_jetstream is
true)
subjects:
type: array
items:
type: string
description: Array of NATS subjects to subscribe to
path:
type: string
description: The unique path identifier for this trigger
script_path:
type: string
description: >-
Path to the script or flow to execute when a message is
received
is_flow:
type: boolean
description: >-
True if script_path points to a flow, false if it points to
a script
error_handler_path:
type: string
description: Path to a script or flow to run when the triggered job fails
error_handler_args:
description: The arguments to pass to the script or flow
type: object
additionalProperties: true
retry:
description: Retry configuration for failed module executions
type: object
properties: *ref_169
required: &ref_428
- path
- script_path
- nats_resource_path
- use_jetstream
- subjects
- is_flow
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
responses:
'200':
description: nats trigger deleted
content:
application/json:
schema:
allOf: &ref_192
- type: object
properties: *ref_184
required: *ref_185
type: object
properties: &ref_193
nats_resource_path:
type: string
description: >-
Path to the NATS resource containing connection
configuration
use_jetstream:
type: boolean
description: If true, uses NATS JetStream for durable message delivery
stream_name:
type: string
description: >-
JetStream stream name (required when use_jetstream is
true)
consumer_name:
type: string
description: >-
JetStream consumer name (required when use_jetstream is
true)
subjects:
type: array
items:
type: string
description: Array of NATS subjects to subscribe to
server_id:
type: string
description: >-
ID of the server currently handling this trigger
(internal)
last_server_ping:
type: string
format: date-time
description: Timestamp of last server heartbeat (internal)
error:
type: string
description: Last error message if the trigger failed
error_handler_path:
type: string
description: >-
Path to a script or flow to run when the triggered job
fails
error_handler_args:
description: The arguments to pass to the script or flow
type: object
additionalProperties: true
retry:
description: Retry configuration for failed module executions
type: object
properties: *ref_169
required: &ref_194
- nats_resource_path
- use_jetstream
- subjects
/w/{workspace}/nats_triggers/list:
get:
summary: list nats triggers
operationId: listNatsTriggers
tags:
- nats_trigger
parameters:
- required: true
name: workspace
in: path
schema: *ref_4
- name: page
description: which page to return (start at 1, default 1)
in: query
schema: *ref_13
- name: per_page
description: number of items to return for a given page (default 30, max 100)
in: query
schema: *ref_14
- name: path
description: filter by path
in: query
schema:
type: string
- name: is_flow
in: query
schema:
type: boolean
- name: path_start
in: query
schema:
type: string
responses:
'200':
description: nats trigger list
content:
application/json:
schema:
type: array
items:
allOf: *ref_192
type: object
properties: *ref_193
required: *ref_194
/w/{workspace}/nats_triggers/exists/{path}:
get:
summary: does nats trigger exists
operationId: existsNatsTrigger
tags:
- nats_trigger
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
requestBody:
description: updated nats trigger enable
required: true
content:
application/json:
schema:
type: object
properties:
mode:
description: job trigger mode
type: string
enum: *ref_179
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:
- name: workspace
in: path
required: true
schema: *ref_4
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:
- name: workspace
in: path
required: true
schema: *ref_4
requestBody:
description: new sqs trigger
required: true
content:
application/json:
schema:
type: object
properties: &ref_408
queue_url:
type: string
description: The full URL of the AWS SQS queue to poll for messages
aws_auth_resource_type:
description: >-
Authentication type - 'credentials' for access key/secret,
'oidc' for OpenID Connect
type: string
enum: &ref_195
- oidc
- credentials
aws_resource_path:
type: string
description: >-
Path to the AWS resource containing credentials or OIDC
configuration
message_attributes:
type: array
items:
type: string
description: >-
Array of SQS message attribute names to include with each
message
path:
type: string
description: The unique path identifier for this trigger
script_path:
type: string
description: >-
Path to the script or flow to execute when a message is
received
is_flow:
type: boolean
description: >-
True if script_path points to a flow, false if it points to
a script
mode:
description: job trigger mode
type: string
enum: *ref_179
error_handler_path:
type: string
description: Path to a script or flow to run when the triggered job fails
error_handler_args:
description: The arguments to pass to the script or flow
type: object
additionalProperties: true
retry:
description: Retry configuration for failed module executions
type: object
properties: *ref_169
required: &ref_409
- queue_url
- aws_resource_path
- path
- script_path
- is_flow
- aws_auth_resource_type
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
requestBody:
description: updated trigger
required: true
content:
application/json:
schema:
type: object
properties: &ref_410
queue_url:
type: string
description: The full URL of the AWS SQS queue to poll for messages
aws_auth_resource_type:
description: >-
Authentication type - 'credentials' for access key/secret,
'oidc' for OpenID Connect
type: string
enum: *ref_195
aws_resource_path:
type: string
description: >-
Path to the AWS resource containing credentials or OIDC
configuration
message_attributes:
type: array
items:
type: string
description: >-
Array of SQS message attribute names to include with each
message
path:
type: string
description: The unique path identifier for this trigger
script_path:
type: string
description: >-
Path to the script or flow to execute when a message is
received
is_flow:
type: boolean
description: >-
True if script_path points to a flow, false if it points to
a script
mode:
description: job trigger mode
type: string
enum: *ref_179
error_handler_path:
type: string
description: Path to a script or flow to run when the triggered job fails
error_handler_args:
description: The arguments to pass to the script or flow
type: object
additionalProperties: true
retry:
description: Retry configuration for failed module executions
type: object
properties: *ref_169
required: &ref_411
- queue_url
- aws_resource_path
- path
- script_path
- is_flow
- enabled
- aws_auth_resource_type
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
responses:
'200':
description: sqs trigger deleted
content:
application/json:
schema:
allOf: &ref_196
- type: object
properties: *ref_184
required: *ref_185
type: object
properties: &ref_197
queue_url:
type: string
description: The full URL of the AWS SQS queue to poll for messages
aws_auth_resource_type:
description: >-
Authentication type - 'credentials' for access key/secret,
'oidc' for OpenID Connect
type: string
enum: *ref_195
aws_resource_path:
type: string
description: >-
Path to the AWS resource containing credentials or OIDC
configuration
message_attributes:
type: array
items:
type: string
description: >-
Array of SQS message attribute names to include with each
message
server_id:
type: string
description: >-
ID of the server currently handling this trigger
(internal)
last_server_ping:
type: string
format: date-time
description: Timestamp of last server heartbeat (internal)
error:
type: string
description: Last error message if the trigger failed
error_handler_path:
type: string
description: >-
Path to a script or flow to run when the triggered job
fails
error_handler_args:
description: The arguments to pass to the script or flow
type: object
additionalProperties: true
retry:
description: Retry configuration for failed module executions
type: object
properties: *ref_169
required: &ref_198
- queue_url
- aws_resource_path
- aws_auth_resource_type
/w/{workspace}/sqs_triggers/list:
get:
summary: list sqs triggers
operationId: listSqsTriggers
tags:
- sqs_trigger
parameters:
- required: true
name: workspace
in: path
schema: *ref_4
- name: page
description: which page to return (start at 1, default 1)
in: query
schema: *ref_13
- name: per_page
description: number of items to return for a given page (default 30, max 100)
in: query
schema: *ref_14
- name: path
description: filter by path
in: query
schema:
type: string
- name: is_flow
in: query
schema:
type: boolean
- name: path_start
in: query
schema:
type: string
responses:
'200':
description: sqs trigger list
content:
application/json:
schema:
type: array
items:
allOf: *ref_196
type: object
properties: *ref_197
required: *ref_198
/w/{workspace}/sqs_triggers/exists/{path}:
get:
summary: does sqs trigger exists
operationId: existsSqsTrigger
tags:
- sqs_trigger
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
requestBody:
description: updated sqs trigger enable
required: true
content:
application/json:
schema:
type: object
properties:
mode:
description: job trigger mode
type: string
enum: *ref_179
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:
- name: workspace
in: path
required: true
schema: *ref_4
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:
- name: workspace
in: path
required: true
schema: *ref_4
responses:
'200':
description: native trigger services list
content:
application/json:
schema:
type: array
items:
type: object
properties: &ref_506
service_name:
type: string
enum: &ref_199
- nextcloud
oauth_data:
nullable: true
type: object
properties: &ref_200
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: &ref_201
- client_id
- client_secret
- base_url
- redirect_uri
required: &ref_507
- service_name
/w/{workspace}/native_triggers/integrations/{service_name}/exists:
get:
summary: check if integrations for a particular service exists
operationId: checkIfNativeTriggersServiceExists
tags:
- workspace_integration
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- name: service_name
in: path
required: true
schema:
type: string
enum: *ref_199
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: service_name
in: path
required: true
schema:
type: string
enum: *ref_199
requestBody:
description: new native trigger service
required: true
content:
application/json:
schema:
type: object
properties: *ref_200
required: *ref_201
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: service_name
in: path
required: true
schema:
type: string
enum: *ref_199
requestBody:
description: redirect_uri
required: true
content:
application/json:
schema:
type: object
properties: &ref_202
redirect_uri:
type: string
required: &ref_203
- redirect_uri
responses:
'200':
description: native trigger service connect url
content:
application/json:
schema:
type: string
/w/{workspace}/native_triggers/integrations/{service_name}/delete:
delete:
summary: delete native trigger service
operationId: deleteNativeTriggerService
tags:
- workspace_integration
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- name: service_name
in: path
required: true
schema:
type: string
enum: *ref_199
responses:
'200':
description: native trigger service deleted
content:
text/plain:
schema:
type: string
/w/{workspace}/native_triggers/integrations/{service_name}/callback/{code}/{state}:
post:
summary: native trigger service oauth callback
operationId: nativeTriggerServiceCallback
tags:
- workspace_integration
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- name: service_name
in: path
required: true
schema:
type: string
enum: *ref_199
- name: code
in: path
required: true
schema:
type: string
- name: state
in: path
required: true
schema:
type: string
requestBody:
description: redirect_uri
required: true
content:
application/json:
schema:
type: object
properties: *ref_202
required: *ref_203
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: service_name
in: path
required: true
schema:
type: string
enum: *ref_199
requestBody:
description: new native trigger configuration
required: true
content:
application/json:
schema:
type: object
description: Data for creating or updating a native trigger
properties: &ref_204
script_path:
type: string
description: The path to the script or flow that will be triggered
is_flow:
type: boolean
description: >-
Whether the trigger targets a flow (true) or a script
(false)
service_config:
type: object
description: Service-specific configuration (e.g., event types, filters)
additionalProperties: true
required: &ref_205
- script_path
- is_flow
- service_config
responses:
'201':
description: native trigger created
content:
application/json:
schema:
type: object
description: Response returned when a native trigger is created
properties: &ref_509
external_id:
type: string
description: >-
The external ID of the created trigger from the external
service
required: &ref_510
- external_id
/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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: service_name
in: path
required: true
schema:
type: string
enum: *ref_199
- 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:
type: object
description: Data for creating or updating a native trigger
properties: *ref_204
required: *ref_205
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: service_name
in: path
required: true
schema:
type: string
enum: *ref_199
- 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:
type: object
description: >-
Full trigger response containing both Windmill data and
external service data
properties: &ref_504
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:
type: string
enum: *ref_199
script_path:
type: string
description: The path to the script or flow that will be triggered
is_flow:
type: boolean
description: >-
Whether the trigger targets a flow (true) or a script
(false)
service_config:
type: object
description: >-
Configuration for the trigger including event_type and
service_config
additionalProperties: true
error:
type: string
nullable: true
description: Error message if the trigger is in an error state
external_data:
type: object
description: Configuration data from the external service
additionalProperties: true
required: &ref_505
- external_id
- workspace_id
- service_name
- script_path
- is_flow
- service_config
- external_data
/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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: service_name
in: path
required: true
schema:
type: string
enum: *ref_199
- 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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: service_name
in: path
required: true
schema:
type: string
enum: *ref_199
- name: page
description: which page to return (start at 1, default 1)
in: query
schema: *ref_13
- name: per_page
description: number of items to return for a given page (default 30, max 100)
in: query
schema: *ref_14
- name: path
description: filter by script path
in: query
schema:
type: string
- name: is_flow
description: filter by is_flow
in: query
schema:
type: boolean
responses:
'200':
description: native triggers list
content:
application/json:
schema:
type: array
items:
type: object
description: A native trigger stored in Windmill
properties: &ref_502
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:
type: string
enum: *ref_199
script_path:
type: string
description: The path to the script or flow that will be triggered
is_flow:
type: boolean
description: >-
Whether the trigger targets a flow (true) or a script
(false)
service_config:
type: object
description: >-
Configuration for the trigger including event_type and
service_config
additionalProperties: true
error:
type: string
nullable: true
description: Error message if the trigger is in an error state
required: &ref_503
- external_id
- workspace_id
- service_name
- script_path
- is_flow
- service_config
/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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: service_name
in: path
required: true
schema:
type: string
enum: *ref_199
- 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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: service_name
in: path
required: true
schema:
type: string
enum: *ref_199
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:
type: object
properties: &ref_511
id:
type: string
name:
type: string
description:
type: string
category:
type: string
path:
type: string
required: &ref_512
- id
- name
- path
/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:
type: string
enum: *ref_199
- 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:
- name: workspace
in: path
required: true
schema: *ref_4
requestBody:
description: new mqtt trigger
required: true
content:
application/json:
schema:
type: object
properties: &ref_399
mqtt_resource_path:
type: string
description: >-
Path to the MQTT resource containing broker connection
configuration
subscribe_topics:
type: array
items:
type: object
properties: &ref_206
qos:
type: string
enum: &ref_398
- qos0
- qos1
- qos2
topic:
type: string
required: &ref_207
- qos
- topic
description: >-
Array of MQTT topics to subscribe to, each with topic name
and QoS level
client_id:
type: string
description: MQTT client ID for this connection
v3_config:
description: MQTT v3 specific configuration (clean_session)
type: object
properties: &ref_208
clean_session:
type: boolean
v5_config:
description: >-
MQTT v5 specific configuration (clean_start,
topic_alias_maximum, session_expiry_interval)
type: object
properties: &ref_209
clean_start:
type: boolean
topic_alias_maximum:
type: number
session_expiry_interval:
type: number
client_version:
description: MQTT protocol version ('v3' or 'v5')
type: string
enum: &ref_210
- v3
- 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:
description: job trigger mode
type: string
enum: *ref_179
error_handler_path:
type: string
description: Path to a script or flow to run when the triggered job fails
error_handler_args:
description: The arguments to pass to the script or flow
type: object
additionalProperties: true
retry:
description: Retry configuration for failed module executions
type: object
properties: *ref_169
required: &ref_400
- path
- script_path
- is_flow
- subscribe_topics
- mqtt_resource_path
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
requestBody:
description: updated trigger
required: true
content:
application/json:
schema:
type: object
properties: &ref_401
mqtt_resource_path:
type: string
description: >-
Path to the MQTT resource containing broker connection
configuration
subscribe_topics:
type: array
items:
type: object
properties: *ref_206
required: *ref_207
description: >-
Array of MQTT topics to subscribe to, each with topic name
and QoS level
client_id:
type: string
description: MQTT client ID for this connection
v3_config:
description: MQTT v3 specific configuration (clean_session)
type: object
properties: *ref_208
v5_config:
description: >-
MQTT v5 specific configuration (clean_start,
topic_alias_maximum, session_expiry_interval)
type: object
properties: *ref_209
client_version:
description: MQTT protocol version ('v3' or 'v5')
type: string
enum: *ref_210
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:
description: job trigger mode
type: string
enum: *ref_179
error_handler_path:
type: string
description: Path to a script or flow to run when the triggered job fails
error_handler_args:
description: The arguments to pass to the script or flow
type: object
additionalProperties: true
retry:
description: Retry configuration for failed module executions
type: object
properties: *ref_169
required: &ref_402
- path
- script_path
- is_flow
- enabled
- subscribe_topics
- mqtt_resource_path
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
responses:
'200':
description: mqtt trigger deleted
content:
application/json:
schema:
allOf: &ref_211
- type: object
properties: *ref_184
required: *ref_185
type: object
properties: &ref_212
mqtt_resource_path:
type: string
description: >-
Path to the MQTT resource containing broker connection
configuration
subscribe_topics:
type: array
items:
type: object
properties: *ref_206
required: *ref_207
description: >-
Array of MQTT topics to subscribe to, each with topic name
and QoS level
v3_config:
description: MQTT v3 specific configuration (clean_session)
type: object
properties: *ref_208
v5_config:
description: >-
MQTT v5 specific configuration (clean_start,
topic_alias_maximum, session_expiry_interval)
type: object
properties: *ref_209
client_id:
type: string
description: MQTT client ID for this connection
client_version:
description: MQTT protocol version ('v3' or 'v5')
type: string
enum: *ref_210
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:
description: The arguments to pass to the script or flow
type: object
additionalProperties: true
retry:
description: Retry configuration for failed module executions
type: object
properties: *ref_169
required: &ref_213
- subscribe_topics
- mqtt_resource_path
/w/{workspace}/mqtt_triggers/list:
get:
summary: list mqtt triggers
operationId: listMqttTriggers
tags:
- mqtt_trigger
parameters:
- required: true
name: workspace
in: path
schema: *ref_4
- name: page
description: which page to return (start at 1, default 1)
in: query
schema: *ref_13
- name: per_page
description: number of items to return for a given page (default 30, max 100)
in: query
schema: *ref_14
- name: path
description: filter by path
in: query
schema:
type: string
- name: is_flow
in: query
schema:
type: boolean
- name: path_start
in: query
schema:
type: string
responses:
'200':
description: mqtt trigger list
content:
application/json:
schema:
type: array
items:
allOf: *ref_211
type: object
properties: *ref_212
required: *ref_213
/w/{workspace}/mqtt_triggers/exists/{path}:
get:
summary: does mqtt trigger exists
operationId: existsMqttTrigger
tags:
- mqtt_trigger
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
requestBody:
description: updated mqtt trigger enable
required: true
content:
application/json:
schema:
type: object
properties:
mode:
description: job trigger mode
type: string
enum: *ref_179
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:
- name: workspace
in: path
required: true
schema: *ref_4
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:
- name: workspace
in: path
required: true
schema: *ref_4
requestBody:
description: new gcp trigger
required: true
content:
application/json:
schema:
type: object
description: Data for creating or updating a Google Cloud Pub/Sub trigger.
properties: &ref_214
gcp_resource_path:
type: string
description: >-
Path to the GCP resource containing service account
credentials for authentication.
subscription_mode:
type: string
enum: &ref_219
- 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.
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:
type: string
enum: &ref_216
- 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.
delivery_config:
type: object
description: Configuration for push delivery mode.
properties: &ref_217
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: &ref_218
- authenticate
- base_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.
mode:
description: job trigger mode
type: string
enum: *ref_179
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:
description: The arguments to pass to the script or flow
type: object
additionalProperties: true
retry:
description: Retry configuration for failed module executions
type: object
properties: *ref_169
required: &ref_215
- path
- script_path
- is_flow
- gcp_resource_path
- topic_id
- subscription_mode
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
requestBody:
description: updated trigger
required: true
content:
application/json:
schema:
type: object
description: Data for creating or updating a Google Cloud Pub/Sub trigger.
properties: *ref_214
required: *ref_215
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
responses:
'200':
description: gcp trigger deleted
content:
application/json:
schema:
allOf: &ref_220
- type: object
properties: *ref_184
required: *ref_185
type: object
description: >-
A Google Cloud Pub/Sub trigger that executes a script or flow
when messages are received.
properties: &ref_221
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:
type: string
enum: *ref_216
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.
delivery_config:
type: object
description: Configuration for push delivery mode.
properties: *ref_217
required: *ref_218
subscription_mode:
type: string
enum: *ref_219
description: >-
The mode of subscription. 'existing' means using an
existing GCP subscription, while 'create_update' involves
creating or updating a new subscription.
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:
description: The arguments to pass to the script or flow
type: object
additionalProperties: true
retry:
description: Retry configuration for failed module executions
type: object
properties: *ref_169
required: &ref_222
- gcp_resource_path
- topic_id
- subscription_id
- delivery_type
- subscription_mode
/w/{workspace}/gcp_triggers/list:
get:
summary: list gcp triggers
operationId: listGcpTriggers
tags:
- gcp_trigger
parameters:
- required: true
name: workspace
in: path
schema: *ref_4
- name: page
description: which page to return (start at 1, default 1)
in: query
schema: *ref_13
- name: per_page
description: number of items to return for a given page (default 30, max 100)
in: query
schema: *ref_14
- name: path
description: filter by path
in: query
schema:
type: string
- name: is_flow
in: query
schema:
type: boolean
- name: path_start
in: query
schema:
type: string
responses:
'200':
description: gcp trigger list
content:
application/json:
schema:
type: array
items:
allOf: *ref_220
type: object
description: >-
A Google Cloud Pub/Sub trigger that executes a script or
flow when messages are received.
properties: *ref_221
required: *ref_222
/w/{workspace}/gcp_triggers/exists/{path}:
get:
summary: does gcp trigger exists
operationId: existsGcpTrigger
tags:
- gcp_trigger
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
requestBody:
description: updated gcp trigger enable
required: true
content:
application/json:
schema:
type: object
properties:
mode:
description: job trigger mode
type: string
enum: *ref_179
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:
- name: workspace
in: path
required: true
schema: *ref_4
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
requestBody:
description: args to delete subscription from google cloud
required: true
content:
application/json:
schema:
type: object
properties: &ref_405
subscription_id:
type: string
required: &ref_406
- subscription_id
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
requestBody:
description: args to get subscription's topic from google cloud
required: true
content:
application/json:
schema:
type: object
properties: &ref_403
topic_id:
type: string
required: &ref_404
- topic_id
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
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:
- name: workspace
in: path
required: true
schema: *ref_4
requestBody:
description: template script
required: true
content:
application/json:
schema:
type: object
properties: &ref_415
postgres_resource_path:
type: string
relations:
type: array
items:
type: object
properties: &ref_224
schema_name:
type: string
table_to_track:
type: array
items: &ref_413
type: object
properties:
table_name:
type: string
columns_name:
type: array
items:
type: string
where_clause:
type: string
required:
- table_name
required: &ref_225
- schema_name
- table_to_track
language:
type: string
enum: &ref_414
- Typescript
required: &ref_416
- postgres_resource_path
- relations
- language
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: id
in: path
required: true
schema: &ref_265
type: string
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
responses:
'200':
description: list postgres slot
content:
application/json:
schema:
type: array
items:
type: object
properties: &ref_412
slot_name:
type: string
active:
type: boolean
/w/{workspace}/postgres_triggers/slot/create/{path}:
post:
summary: create replication slot for postgres
operationId: createPostgresReplicationSlot
tags:
- postgres_trigger
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
requestBody:
description: new slot for postgres
required: true
content:
application/json:
schema:
type: object
properties: &ref_223
name:
type: string
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
requestBody:
description: replication slot of postgres
required: true
content:
application/json:
schema:
type: object
properties: *ref_223
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
- name: publication
in: path
required: true
description: The name of the publication
schema: &ref_226
type: string
responses:
'200':
description: postgres publication get
content:
application/json:
schema:
type: object
properties: &ref_227
table_to_track:
type: array
items:
type: object
properties: *ref_224
required: *ref_225
transaction_to_track:
type: array
items:
type: string
required: &ref_228
- transaction_to_track
/w/{workspace}/postgres_triggers/publication/create/{publication}/{path}:
post:
summary: create publication for postgres
operationId: createPostgresPublication
tags:
- postgres_trigger
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
- name: publication
in: path
required: true
description: The name of the publication
schema: *ref_226
requestBody:
description: new publication for postgres
required: true
content:
application/json:
schema:
type: object
properties: *ref_227
required: *ref_228
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
- name: publication
in: path
required: true
description: The name of the publication
schema: *ref_226
requestBody:
description: update publication for postgres
required: true
content:
application/json:
schema:
type: object
properties: *ref_227
required: *ref_228
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
- name: publication
in: path
required: true
description: The name of the publication
schema: *ref_226
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:
- name: workspace
in: path
required: true
schema: *ref_4
requestBody:
description: new postgres trigger
required: true
content:
application/json:
schema:
type: object
properties: &ref_417
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:
description: job trigger mode
type: string
enum: *ref_179
postgres_resource_path:
type: string
description: >-
Path to the PostgreSQL resource containing connection
configuration
publication:
description: >-
Configuration for creating/managing the publication (tables,
operations)
type: object
properties: *ref_227
required: *ref_228
error_handler_path:
type: string
description: Path to a script or flow to run when the triggered job fails
error_handler_args:
description: The arguments to pass to the script or flow
type: object
additionalProperties: true
retry:
description: Retry configuration for failed module executions
type: object
properties: *ref_169
required: &ref_418
- path
- script_path
- is_flow
- enabled
- postgres_resource_path
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
requestBody:
description: updated trigger
required: true
content:
application/json:
schema:
type: object
properties: &ref_419
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:
description: job trigger mode
type: string
enum: *ref_179
postgres_resource_path:
type: string
description: >-
Path to the PostgreSQL resource containing connection
configuration
publication:
description: >-
Configuration for creating/managing the publication (tables,
operations)
type: object
properties: *ref_227
required: *ref_228
error_handler_path:
type: string
description: Path to a script or flow to run when the triggered job fails
error_handler_args:
description: The arguments to pass to the script or flow
type: object
additionalProperties: true
retry:
description: Retry configuration for failed module executions
type: object
properties: *ref_169
required: &ref_420
- path
- script_path
- is_flow
- enabled
- postgres_resource_path
- publication_name
- replication_slot_name
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
responses:
'200':
description: get postgres trigger
content:
application/json:
schema:
allOf: &ref_229
- type: object
properties: *ref_184
required: *ref_185
type: object
properties: &ref_230
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:
description: The arguments to pass to the script or flow
type: object
additionalProperties: true
retry:
description: Retry configuration for failed module executions
type: object
properties: *ref_169
required: &ref_231
- postgres_resource_path
- replication_slot_name
- publication_name
/w/{workspace}/postgres_triggers/list:
get:
summary: list postgres triggers
operationId: listPostgresTriggers
tags:
- postgres_trigger
parameters:
- required: true
name: workspace
in: path
schema: *ref_4
- name: page
description: which page to return (start at 1, default 1)
in: query
schema: *ref_13
- name: per_page
description: number of items to return for a given page (default 30, max 100)
in: query
schema: *ref_14
- name: path
description: filter by path
in: query
schema:
type: string
- name: is_flow
in: query
schema:
type: boolean
- name: path_start
in: query
schema:
type: string
responses:
'200':
description: postgres trigger list
content:
application/json:
schema:
type: array
items:
allOf: *ref_229
type: object
properties: *ref_230
required: *ref_231
/w/{workspace}/postgres_triggers/exists/{path}:
get:
summary: does postgres trigger exists
operationId: existsPostgresTrigger
tags:
- postgres_trigger
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
requestBody:
description: updated postgres trigger enable
required: true
content:
application/json:
schema:
type: object
properties:
mode:
description: job trigger mode
type: string
enum: *ref_179
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:
- name: workspace
in: path
required: true
schema: *ref_4
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:
- name: workspace
in: path
required: true
schema: *ref_4
requestBody:
description: new email trigger
required: true
content:
application/json:
schema:
type: object
properties: &ref_429
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:
type: object
description: The arguments to pass to the script or flow
additionalProperties: true
retry:
type: object
description: Retry configuration for failed module executions
properties: *ref_169
mode:
description: job trigger mode
type: string
enum: *ref_179
required: &ref_430
- path
- script_path
- local_part
- is_flow
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
requestBody:
description: updated trigger
required: true
content:
application/json:
schema:
type: object
properties: &ref_431
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:
type: object
description: The arguments to pass to the script or flow
additionalProperties: true
retry:
type: object
description: Retry configuration for failed module executions
properties: *ref_169
required: &ref_432
- path
- script_path
- is_flow
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
responses:
'200':
description: email trigger retrieved
content:
application/json:
schema:
allOf: &ref_232
- type: object
properties: *ref_184
required: *ref_185
type: object
properties: &ref_233
local_part:
type: string
workspaced_local_part:
type: boolean
error_handler_path:
type: string
error_handler_args:
type: object
description: The arguments to pass to the script or flow
additionalProperties: true
retry:
type: object
description: Retry configuration for failed module executions
properties: *ref_169
required: &ref_234
- local_part
/w/{workspace}/email_triggers/list:
get:
summary: list email triggers
operationId: listEmailTriggers
tags:
- email_trigger
parameters:
- required: true
name: workspace
in: path
schema: *ref_4
- name: page
description: which page to return (start at 1, default 1)
in: query
schema: *ref_13
- name: per_page
description: number of items to return for a given page (default 30, max 100)
in: query
schema: *ref_14
- name: path
description: filter by path
in: query
schema:
type: string
- name: is_flow
in: query
schema:
type: boolean
- name: path_start
in: query
schema:
type: string
responses:
'200':
description: email trigger list
content:
application/json:
schema:
type: array
items:
allOf: *ref_232
type: object
properties: *ref_233
required: *ref_234
/w/{workspace}/email_triggers/exists/{path}:
get:
summary: does email trigger exists
operationId: existsEmailTrigger
tags:
- email_trigger
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
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:
- name: workspace
in: path
required: true
schema: *ref_4
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
mode:
description: job trigger mode
type: string
enum: *ref_179
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:
type: object
required: &ref_236
- name
properties: &ref_237
name:
type: string
summary:
type: string
emails:
type: array
items:
type: string
/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:
type: object
required: &ref_433
- name
properties: &ref_434
name:
type: string
summary:
type: string
emails:
type: array
items:
type: string
workspaces:
type: array
items:
type: object
properties: &ref_435
workspace_id:
type: string
workspace_name:
type: string
role:
type: string
required: &ref_436
- name
/groups/get/{name}:
get:
summary: get instance group
operationId: getInstanceGroup
tags:
- group
parameters:
- name: name
in: path
required: true
schema: *ref_235
responses:
'200':
description: instance group
content:
application/json:
schema:
type: object
required: *ref_236
properties: *ref_237
/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:
- name: name
in: path
required: true
schema: *ref_235
requestBody:
description: update instance group
required: true
content:
application/json:
schema:
type: object
properties:
new_summary:
type: string
required:
- new_summary
responses:
'200':
description: instance group updated
content:
text/plain:
schema:
type: string
/groups/delete/{name}:
delete:
summary: delete instance group
operationId: deleteInstanceGroup
tags:
- group
parameters:
- name: name
in: path
required: true
schema: *ref_235
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:
- name: name
in: path
required: true
schema: *ref_235
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:
- name: name
in: path
required: true
schema: *ref_235
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:
type: object
properties: &ref_238
name:
type: string
summary:
type: string
emails:
type: array
items:
type: string
id:
type: string
scim_display_name:
type: string
external_id:
type: string
required: &ref_239
- name
/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:
type: object
properties: *ref_238
required: *ref_239
responses:
'200':
description: success message
content:
text/plain:
schema:
type: string
/w/{workspace}/groups/list:
get:
summary: list groups
operationId: listGroups
tags:
- group
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- name: page
description: which page to return (start at 1, default 1)
in: query
schema: *ref_13
- name: per_page
description: number of items to return for a given page (default 30, max 100)
in: query
schema: *ref_14
responses:
'200':
description: group list
content:
application/json:
schema:
type: array
items:
type: object
properties: &ref_240
name:
type: string
summary:
type: string
members:
type: array
items:
type: string
extra_perms:
type: object
additionalProperties:
type: boolean
required: &ref_241
- name
/w/{workspace}/groups/listnames:
get:
summary: list group names
operationId: listGroupNames
tags:
- group
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- 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:
- name: workspace
in: path
required: true
schema: *ref_4
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: name
in: path
required: true
schema: *ref_235
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: name
in: path
required: true
schema: *ref_235
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: name
in: path
required: true
schema: *ref_235
responses:
'200':
description: group
content:
application/json:
schema:
type: object
properties: *ref_240
required: *ref_241
/w/{workspace}/groups/adduser/{name}:
post:
summary: add user to group
operationId: addUserToGroup
tags:
- group
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- name: name
in: path
required: true
schema: *ref_235
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: name
in: path
required: true
schema: *ref_235
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: name
in: path
required: true
schema: *ref_235
- name: page
description: which page to return (start at 1, default 1)
in: query
schema: *ref_13
- name: per_page
description: number of items to return for a given page (default 30, max 100)
in: query
schema: *ref_14
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: page
description: which page to return (start at 1, default 1)
in: query
schema: *ref_13
- name: per_page
description: number of items to return for a given page (default 30, max 100)
in: query
schema: *ref_14
responses:
'200':
description: folder list
content:
application/json:
schema:
type: array
items:
type: object
properties: &ref_242
name:
type: string
owners:
type: array
items:
type: string
extra_perms:
type: object
additionalProperties:
type: boolean
summary:
type: string
created_by:
type: string
edited_at:
type: string
format: date-time
required: &ref_243
- name
- owners
- extra_perms
/w/{workspace}/folders/listnames:
get:
summary: list folder names
operationId: listFolderNames
tags:
- folder
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- 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:
- name: workspace
in: path
required: true
schema: *ref_4
requestBody:
description: create folder
required: true
content:
application/json:
schema:
type: object
properties:
name:
type: string
summary:
type: string
owners:
type: array
items:
type: string
extra_perms:
additionalProperties:
type: boolean
required:
- name
responses:
'200':
description: folder created
content:
text/plain:
schema:
type: string
/w/{workspace}/folders/update/{name}:
post:
summary: update folder
operationId: updateFolder
tags:
- folder
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- name: name
in: path
required: true
schema: *ref_235
requestBody:
description: update folder
required: true
content:
application/json:
schema:
type: object
properties:
summary:
type: string
owners:
type: array
items:
type: string
extra_perms:
additionalProperties:
type: boolean
responses:
'200':
description: folder updated
content:
text/plain:
schema:
type: string
/w/{workspace}/folders/delete/{name}:
delete:
summary: delete folder
operationId: deleteFolder
tags:
- folder
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- name: name
in: path
required: true
schema: *ref_235
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: name
in: path
required: true
schema: *ref_235
responses:
'200':
description: folder
content:
application/json:
schema:
type: object
properties: *ref_242
required: *ref_243
/w/{workspace}/folders/exists/{name}:
get:
summary: exists folder
operationId: existsFolder
tags:
- folder
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- name: name
in: path
required: true
schema: *ref_235
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: name
in: path
required: true
schema: *ref_235
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: name
in: path
required: true
schema: *ref_235
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: name
in: path
required: true
schema: *ref_235
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: name
in: path
required: true
schema: *ref_235
- name: page
description: which page to return (start at 1, default 1)
in: query
schema: *ref_13
- name: per_page
description: number of items to return for a given page (default 30, max 100)
in: query
schema: *ref_14
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:
- name: page
description: which page to return (start at 1, default 1)
in: query
schema: *ref_13
- name: per_page
description: number of items to return for a given page (default 30, max 100)
in: query
schema: *ref_14
- 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:
type: object
properties: &ref_437
worker:
type: string
worker_instance:
type: string
last_ping:
type: number
started_at:
type: string
format: date-time
ip:
type: string
jobs_executed:
type: integer
custom_tags:
type: array
items:
type: string
worker_group:
type: string
wm_version:
type: string
last_job_id:
type: string
last_job_workspace_id:
type: string
occupancy_rate:
type: number
occupancy_rate_15s:
type: number
occupancy_rate_5m:
type: number
occupancy_rate_30m:
type: number
memory:
type: number
vcpus:
type: number
memory_usage:
type: number
wm_memory_usage:
type: number
job_isolation:
type: string
required: &ref_438
- worker
- worker_instance
- ping_at
- started_at
- ip
- jobs_executed
- worker_group
- wm_version
/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:
- name: name
in: path
required: true
schema: *ref_235
responses:
'200':
description: a config
content:
application/json:
schema:
type: object
nullable: true
properties: &ref_344
alerts:
type: array
items:
type: object
properties: &ref_342
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: &ref_343
- name
- tags_to_monitor
- jobs_num_threshold
- alert_cooldown_seconds
- alert_time_threshold_seconds
/configs/update/{name}:
post:
summary: Update config
operationId: updateConfig
tags:
- config
parameters:
- name: name
in: path
required: true
schema: *ref_235
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:
- name: name
in: path
required: true
schema: *ref_235
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:
type: object
properties: &ref_483
name:
type: string
config:
type: object
required: &ref_484
- name
/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
- name: page
description: which page to return (start at 1, default 1)
in: query
schema: *ref_13
- name: per_page
description: number of items to return for a given page (default 30, max 100)
in: query
schema: *ref_14
responses:
'200':
description: List of autoscaling events
content:
application/json:
schema:
type: array
items:
type: object
properties: &ref_487
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
/configs/native_kubernetes_autoscaling_healthcheck:
get:
summary: Check Kubernetes autoscaling health for a worker group
operationId: nativeKubernetesAutoscalingHealthcheck
tags:
- config
responses:
'200':
description: Kubernetes autoscaling is healthy
'400':
description: Error
content:
text/plain:
schema:
type: string
/configs/list_available_python_versions:
get:
summary: Get currently available python versions provided by UV.
operationId: listAvailablePythonVersions
tags:
- config
responses:
'200':
description: List of python versions
content:
application/json:
schema:
type: array
items:
type: string
/agent_workers/create_agent_token:
post:
summary: create agent token
operationId: createAgentToken
tags:
- agent_workers
requestBody:
description: agent token
required: true
content:
application/json:
schema:
type: object
properties:
worker_group:
type: string
tags:
type: array
items:
type: string
exp:
type: integer
required:
- worker_group
- tags
- exp
responses:
'200':
description: agent token created
content:
application/json:
schema:
type: string
/agent_workers/blacklist_token:
post:
summary: blacklist agent token (requires super admin)
operationId: blacklistAgentToken
tags:
- agent_workers
requestBody:
description: token to blacklist
required: true
content:
application/json:
schema:
type: object
properties:
token:
type: string
description: The agent token to blacklist
expires_at:
type: string
format: date-time
description: Optional expiration date for the blacklist entry
required:
- token
responses:
'200':
description: token blacklisted successfully
/agent_workers/remove_blacklist_token:
post:
summary: remove agent token from blacklist (requires super admin)
operationId: removeBlacklistAgentToken
tags:
- agent_workers
requestBody:
description: token to remove from blacklist
required: true
content:
application/json:
schema:
type: object
properties:
token:
type: string
description: The agent token to remove from blacklist
required:
- token
responses:
'200':
description: token removed from blacklist successfully
/agent_workers/list_blacklisted_tokens:
get:
summary: list blacklisted agent tokens (requires super admin)
operationId: listBlacklistedAgentTokens
tags:
- agent_workers
parameters:
- name: include_expired
in: query
description: Whether to include expired blacklisted tokens
schema:
type: boolean
default: false
responses:
'200':
description: list of blacklisted tokens
content:
application/json:
schema:
type: array
items:
type: object
properties:
token:
type: string
description: The blacklisted token (without prefix)
expires_at:
type: string
format: date-time
description: When the blacklist entry expires
blacklisted_at:
type: string
format: date-time
description: When the token was blacklisted
blacklisted_by:
type: string
description: Email of the user who blacklisted the token
required:
- token
- expires_at
- blacklisted_at
- blacklisted_by
/agent_workers/get_min_version:
get:
summary: get minimum worker version across all workers
operationId: getMinVersion
tags:
- agent_workers
responses:
'200':
description: minimum worker version
content:
application/json:
schema:
type: string
description: Minimum semantic version across all workers (e.g. "1.583.0")
/w/{workspace}/acls/get/{kind}/{path}:
get:
summary: get granular acls
operationId: getGranularAcls
tags:
- granular_acl
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
- name: kind
in: path
required: true
schema:
type: string
enum:
- script
- group_
- resource
- schedule
- variable
- flow
- folder
- app
- raw_app
- http_trigger
- websocket_trigger
- kafka_trigger
- nats_trigger
- postgres_trigger
- mqtt_trigger
- gcp_trigger
- sqs_trigger
- email_trigger
responses:
'200':
description: acls
content:
application/json:
schema:
type: object
additionalProperties:
type: boolean
/w/{workspace}/acls/add/{kind}/{path}:
post:
summary: add granular acls
operationId: addGranularAcls
tags:
- granular_acl
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
- name: kind
in: path
required: true
schema:
type: string
enum:
- script
- group_
- resource
- schedule
- variable
- flow
- folder
- app
- raw_app
- http_trigger
- websocket_trigger
- kafka_trigger
- nats_trigger
- postgres_trigger
- mqtt_trigger
- gcp_trigger
- sqs_trigger
- email_trigger
requestBody:
description: acl to add
required: true
content:
application/json:
schema:
type: object
properties:
owner:
type: string
write:
type: boolean
required:
- owner
responses:
'200':
description: granular acl added
content:
text/plain:
schema:
type: string
/w/{workspace}/acls/remove/{kind}/{path}:
post:
summary: remove granular acls
operationId: removeGranularAcls
tags:
- granular_acl
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
- name: kind
in: path
required: true
schema:
type: string
enum:
- script
- group_
- resource
- schedule
- variable
- flow
- folder
- app
- raw_app
- http_trigger
- websocket_trigger
- kafka_trigger
- nats_trigger
- postgres_trigger
- mqtt_trigger
- gcp_trigger
- sqs_trigger
- email_trigger
requestBody:
description: acl to add
required: true
content:
application/json:
schema:
type: object
properties:
owner:
type: string
required:
- owner
responses:
'200':
description: granular acl removed
content:
text/plain:
schema:
type: string
/w/{workspace}/capture/set_config:
post:
summary: set capture config
operationId: setCaptureConfig
tags:
- capture
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
requestBody:
description: capture config
required: true
content:
application/json:
schema:
type: object
properties:
trigger_kind:
type: string
enum: &ref_244
- webhook
- http
- websocket
- kafka
- default_email
- nats
- postgres
- sqs
- mqtt
- gcp
- email
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: trigger_kind
in: path
required: true
schema:
type: string
enum: *ref_244
- name: runnable_kind
in: path
required: true
schema: *ref_110
- name: path
in: path
required: true
schema: *ref_48
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: runnable_kind
in: path
required: true
schema: *ref_110
- name: path
in: path
required: true
schema: *ref_48
responses:
'200':
description: capture configs for a script or flow
content:
application/json:
schema:
type: array
items:
type: object
properties: &ref_488
trigger_config: {}
trigger_kind:
type: string
enum: *ref_244
error:
type: string
last_server_ping:
type: string
format: date-time
required: &ref_489
- trigger_kind
/w/{workspace}/capture/list/{runnable_kind}/{path}:
get:
summary: list captures for a script or flow
operationId: listCaptures
tags:
- capture
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- name: runnable_kind
in: path
required: true
schema: *ref_110
- name: path
in: path
required: true
schema: *ref_48
- name: trigger_kind
in: query
schema:
type: string
enum: *ref_244
- name: page
description: which page to return (start at 1, default 1)
in: query
schema: *ref_13
- name: per_page
description: number of items to return for a given page (default 30, max 100)
in: query
schema: *ref_14
responses:
'200':
description: list of captures for a script or flow
content:
application/json:
schema:
type: array
items:
type: object
properties: &ref_245
trigger_kind:
type: string
enum: *ref_244
main_args: {}
preprocessor_args: {}
id:
type: integer
created_at:
type: string
format: date-time
required: &ref_246
- trigger_kind
- main_args
- preprocessor_args
- id
- created_at
/w/{workspace}/capture/move/{runnable_kind}/{path}:
post:
summary: move captures and configs for a script or flow
operationId: moveCapturesAndConfigs
tags:
- capture
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- name: runnable_kind
in: path
required: true
schema: *ref_110
- name: path
in: path
required: true
schema: *ref_48
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: id
in: path
required: true
schema:
type: integer
responses:
'200':
description: capture
content:
application/json:
schema:
type: object
properties: *ref_245
required: *ref_246
delete:
summary: delete a capture
operationId: deleteCapture
tags:
- capture
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- 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:
- name: workspace
in: path
required: true
schema: *ref_4
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:
- name: workspace
in: path
required: true
schema: *ref_4
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: runnable_id
in: query
schema: &ref_247
type: string
- name: runnable_type
in: query
schema: &ref_248
type: string
enum: &ref_352
- ScriptHash
- ScriptPath
- FlowPath
- name: page
description: which page to return (start at 1, default 1)
in: query
schema: *ref_13
- name: per_page
description: number of items to return for a given page (default 30, max 100)
in: query
schema: *ref_14
- name: args
description: >-
filter on jobs containing those args as a json subset (@> in
postgres)
in: query
schema: *ref_139
- name: include_preview
in: query
schema:
type: boolean
responses:
'200':
description: Input history for completed jobs
content:
application/json:
schema:
type: array
items:
type: object
properties: &ref_249
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: &ref_250
- id
- name
- args
- created_by
- created_at
- is_public
/w/{workspace}/inputs/{jobOrInputId}/args:
get:
summary: Get args from history or saved input
operationId: getArgsFromHistoryOrSavedInput
tags:
- input
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- 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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: runnable_id
in: query
schema: *ref_247
- name: runnable_type
in: query
schema: *ref_248
- name: page
description: which page to return (start at 1, default 1)
in: query
schema: *ref_13
- name: per_page
description: number of items to return for a given page (default 30, max 100)
in: query
schema: *ref_14
responses:
'200':
description: Saved Inputs for a Runnable
content:
application/json:
schema:
type: array
items:
type: object
properties: *ref_249
required: *ref_250
/w/{workspace}/inputs/create:
post:
summary: Create an Input for future use in a script or flow
operationId: createInput
tags:
- input
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- name: runnable_id
in: query
schema: *ref_247
- name: runnable_type
in: query
schema: *ref_248
requestBody:
description: Input
required: true
content:
application/json:
schema:
type: object
properties: &ref_348
name:
type: string
args:
type: object
required: &ref_349
- name
- args
- created_by
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:
- name: workspace
in: path
required: true
schema: *ref_4
requestBody:
description: UpdateInput
required: true
content:
application/json:
schema:
type: object
properties: &ref_350
id:
type: string
name:
type: string
is_public:
type: boolean
required: &ref_351
- id
- name
- is_public
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: input
in: path
required: true
schema: &ref_273
type: string
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:
- name: workspace
in: path
required: true
schema: *ref_4
requestBody:
description: S3 resource to connect to
required: true
content:
application/json:
schema:
type: object
properties:
s3_resource:
type: object
properties: &ref_251
bucket:
type: string
region:
type: string
endPoint:
type: string
useSSL:
type: boolean
accessKey:
type: string
secretKey:
type: string
pathStyle:
type: boolean
required: &ref_252
- bucket
- region
- endPoint
- useSSL
- pathStyle
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:
- name: workspace
in: path
required: true
schema: *ref_4
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:
- name: workspace
in: path
required: true
schema: *ref_4
requestBody:
description: S3 resource to connect to
required: true
content:
application/json:
schema:
type: object
properties:
s3_resource:
type: object
properties: *ref_251
required: *ref_252
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:
type: object
properties: &ref_253
region_name:
type: string
required: &ref_254
- region_name
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:
- name: workspace
in: path
required: true
schema: *ref_4
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:
type: object
properties: *ref_253
required: *ref_254
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:
- name: workspace
in: path
required: true
schema: *ref_4
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:
type: object
properties: *ref_251
required: *ref_252
/w/{workspace}/job_helpers/test_connection:
get:
summary: Test connection to the workspace object storage
operationId: datasetStorageTestConnection
tags:
- helpers
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- 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:
- name: workspace
in: path
required: true
schema: *ref_4
- 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:
type: object
properties: &ref_255
s3:
type: string
required: &ref_256
- s3
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:
- name: workspace
in: path
required: true
schema: *ref_4
- 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:
type: object
properties: &ref_259
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
/w/{workspace}/job_helpers/load_file_preview:
get:
summary: Load a preview of the file
operationId: loadFilePreview
tags:
- helpers
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- 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:
type: object
properties: &ref_257
msg:
type: string
content:
type: string
content_type:
type: string
enum:
- RawText
- Csv
- Parquet
- Unknown
required: &ref_258
- content_type
/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:
- name: workspace
in: path
required: true
schema: *ref_4
- 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:
type: object
properties: *ref_255
required: *ref_256
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:
- name: workspace
in: path
required: true
schema: *ref_4
- 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:
type: object
properties: *ref_257
required: *ref_258
/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:
- name: workspace
in: path
required: true
schema: *ref_4
- 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:
type: object
properties: *ref_259
/w/{workspace}/job_helpers/check_s3_folder_exists:
get:
summary: Check if S3 path exists and is a folder
operationId: checkS3FolderExists
tags:
- helpers
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- 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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
- 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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
- 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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: path
in: path
required: true
schema: *ref_48
- 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:
- name: workspace
in: path
required: true
schema: *ref_4
- 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:
- name: workspace
in: path
required: true
schema: *ref_4
- 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:
- name: workspace
in: path
required: true
schema: *ref_4
- 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:
- name: workspace
in: path
required: true
schema: *ref_4
- 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:
- name: workspace
in: path
required: true
schema: *ref_4
- 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:
- name: workspace
in: path
required: true
schema: *ref_4
- 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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: id
in: path
required: true
schema: *ref_144
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:
type: object
properties: &ref_467
id:
type: string
name:
type: string
required: &ref_468
- id
scalar_metrics:
type: array
items:
type: object
properties: &ref_469
metric_id:
type: string
value:
type: number
required: &ref_470
- id
- value
timeseries_metrics:
type: array
items:
type: object
properties: &ref_471
metric_id:
type: string
values:
type: array
items:
type: object
properties: &ref_473
timestamp:
type: string
format: date-time
value:
type: number
required: &ref_474
- timestamp
- value
required: &ref_472
- id
- values
/w/{workspace}/job_metrics/set_progress/{id}:
post:
summary: set job metrics
operationId: setJobProgress
tags:
- metrics
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- name: id
in: path
required: true
schema: *ref_144
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:
- name: workspace
in: path
required: true
schema: *ref_4
- name: id
in: path
required: true
schema: *ref_144
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:
- name: before
description: filter on started before (inclusive) timestamp
in: query
schema: *ref_260
- name: after
description: filter on created after (exclusive) timestamp
in: query
schema: *ref_261
- 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:
- name: path
in: path
required: true
schema: *ref_48
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:
type: object
properties: &ref_477
concurrency_key:
type: string
total_running:
type: number
required: &ref_478
- concurrency_key
- total_running
/concurrency_groups/prune/{concurrency_id}:
delete:
summary: Delete concurrency group
operationId: deleteConcurrencyGroup
tags:
- concurrencyGroups
parameters:
- name: concurrency_id
in: path
required: true
schema: &ref_275
type: string
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:
- name: id
in: path
required: true
schema: *ref_144
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
- name: workspace
in: path
required: true
schema: *ref_4
- name: created_by
description: mask to filter exact matching user creator
in: query
schema: *ref_97
- name: label
description: >-
mask to filter exact matching job's label (job labels are completed
jobs with as a result an object containing a string in the array at
key 'wm_labels')
in: query
schema: *ref_146
- 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: *ref_88
- name: script_path_exact
description: mask to filter exact matching path
in: query
schema: *ref_129
- name: script_path_start
description: mask to filter matching starting path
in: query
schema: *ref_130
- name: schedule_path
description: mask to filter by schedule path
in: query
schema: *ref_131
- name: script_hash
description: mask to filter exact matching path
in: query
schema: *ref_132
- name: started_before
description: filter on started before (inclusive) timestamp
in: query
schema: *ref_133
- name: started_after
description: filter on started after (exclusive) timestamp
in: query
schema: *ref_134
- name: running
description: filter on running jobs
in: query
schema: *ref_135
- name: scheduled_for_before_now
description: filter on jobs scheduled_for before now (hence waitinf for a worker)
in: query
schema: *ref_136
- name: completed_before
description: filter on started before (inclusive) timestamp
in: query
schema: *ref_156
- name: completed_after
description: filter on started after (exclusive) timestamp
in: query
schema: *ref_157
- name: created_before_queue
description: filter on jobs created before X for jobs in the queue only
in: query
schema: *ref_158
- name: created_after_queue
description: filter on jobs created after X for jobs in the queue only
in: query
schema: *ref_159
- name: job_kinds
description: >-
filter on job kind (values 'preview', 'script', 'dependencies',
'flow') separated by,
in: query
schema: *ref_137
- name: args
description: >-
filter on jobs containing those args as a json subset (@> in
postgres)
in: query
schema: *ref_139
- name: tag
description: filter on jobs with a given tag/worker group
in: query
schema: *ref_140
- name: result
description: >-
filter on jobs containing those result as a json subset (@> in
postgres)
in: query
schema: *ref_141
- name: allow_wildcards
description: allow wildcards (*) in the filter of label, tag, worker
in: query
schema: *ref_143
- name: page
description: which page to return (start at 1, default 1)
in: query
schema: *ref_13
- name: per_page
description: number of items to return for a given page (default 30, max 100)
in: query
schema: *ref_14
- name: trigger_kind
description: trigger kind (schedule, http, websocket...)
in: query
schema: *ref_160
- 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:
type: object
properties: &ref_479
jobs:
type: array
items:
oneOf: *ref_165
discriminator: *ref_166
obscured_jobs:
type: array
items:
type: object
properties: &ref_353
typ:
type: string
started_at:
type: string
format: date-time
duration_ms:
type: number
omitted_obscured_jobs:
description: >-
Obscured jobs omitted for security because of too specific
filtering
type: boolean
required: &ref_480
- jobs
- obscured_jobs
/srch/w/{workspace}/index/search/job:
get:
summary: Search through jobs with a string query
operationId: searchJobsIndex
tags:
- indexSearch
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- 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:
type: object
properties: &ref_485
dancer:
type: string
hit_count:
description: how many jobs matched in total
type: number
index_metadata:
description: Metadata about the index current state
type: object
properties:
indexed_until:
description: Datetime of the most recently indexed job
type: string
format: date-time
lost_lock_ownership:
description: Is the current indexer service being replaced
type: boolean
/srch/index/search/service_logs:
get:
summary: Search through service logs with a string query
operationId: searchLogsIndex
tags:
- indexSearch
parameters:
- name: search_query
in: query
required: true
schema:
type: string
- name: mode
in: query
required: true
schema:
type: string
- name: worker_group
in: query
required: false
schema:
type: string
- name: hostname
in: query
required: true
schema:
type: string
- name: min_ts
in: query
required: false
schema:
type: string
format: date-time
- name: max_ts
in: query
required: false
schema:
type: string
format: date-time
responses:
'200':
description: search results
content:
application/json:
schema:
type: object
properties:
query_parse_errors:
description: >-
a list of the terms that couldn't be parsed (and thus
ignored)
type: array
items:
type: string
hits:
description: log files that matched the query
type: array
items:
type: object
properties: &ref_486
dancer:
type: string
/srch/index/search/count_service_logs:
get:
summary: Search and count the log line hits on every provided host
operationId: countSearchLogsIndex
tags:
- indexSearch
parameters:
- name: search_query
in: query
required: true
schema:
type: string
- name: min_ts
in: query
required: false
schema:
type: string
format: date-time
- name: max_ts
in: query
required: false
schema:
type: string
format: date-time
responses:
'200':
description: search results
content:
application/json:
schema:
type: object
properties:
query_parse_errors:
description: >-
a list of the terms that couldn't be parsed (and thus
ignored)
type: array
items:
type: string
count_per_host:
description: count of log lines that matched the query per hostname
type: object
/srch/index/delete/{idx_name}:
delete:
summary: Restart container and delete the index to recreate it.
operationId: clearIndex
tags:
- indexSearch
parameters:
- name: idx_name
in: path
required: true
schema:
type: string
enum:
- JobIndex
- ServiceLogIndex
responses:
'200':
description: idx to be deleted and container restarting
content:
text/plain:
schema:
type: string
/w/{workspace}/assets/list:
get:
summary: List all assets in the workspace with cursor pagination
operationId: listAssets
tags:
- asset
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
- name: per_page
in: query
description: Number of items per page (max 1000, default 50)
schema:
type: integer
default: 50
minimum: 1
maximum: 1000
- name: cursor_created_at
in: query
description: >-
Cursor timestamp for pagination (created_at of last item from
previous page)
schema:
type: string
format: date-time
- name: cursor_id
in: query
description: Cursor ID for pagination (id of last item from previous page)
schema:
type: integer
format: int64
- name: asset_path
in: query
description: Filter by asset path (case-insensitive partial match)
schema:
type: string
- name: usage_path
in: query
description: Filter by usage path (case-insensitive partial match)
schema:
type: string
- name: asset_kinds
in: query
description: Filter by asset kinds (multiple values allowed)
schema:
type: string
responses:
'200':
description: paginated assets in the workspace
content:
application/json:
schema:
type: object
required:
- assets
properties:
assets:
type: array
items:
type: object
required:
- path
- kind
- usages
properties:
path:
type: string
kind:
type: string
enum: *ref_262
usages:
type: array
items:
type: object
required:
- path
- kind
properties:
path:
type: string
kind:
type: string
enum: &ref_264
- script
- flow
- job
access_type:
type: string
enum: &ref_263
- r
- w
- rw
nullable: true
columns:
type: object
description: The columns used (for tables)
additionalProperties:
type: string
enum: *ref_263
nullable: true
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:
- name: workspace
in: path
required: true
schema: *ref_4
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:
type: string
enum: *ref_264
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:
type: string
enum: *ref_262
access_type:
type: string
enum: *ref_263
nullable: true
/w/{workspace}/assets/list_favorites:
get:
summary: List all favorite assets for the authenticated user
operationId: listFavoriteAssets
tags:
- asset
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
responses:
'200':
description: list of favorite assets
content:
application/json:
schema:
type: array
items:
type: object
required:
- path
properties:
path:
type: string
description: The asset path
/mcp/w/{workspace}/list_tools:
get:
summary: list available MCP tools
operationId: listMcpTools
tags:
- mcp
parameters:
- name: workspace
in: path
required: true
schema: *ref_4
responses:
'200':
description: list of MCP tools available for the workspace
content:
application/json:
schema:
type: array
items:
type: object
required: &ref_337
- name
- description
- instructions
- path
- method
properties: &ref_338
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
/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: *ref_265
Key:
name: key
in: path
required: true
schema: *ref_21
WorkspaceId:
name: workspace
in: path
required: true
schema: *ref_4
PublicationName:
name: publication
in: path
required: true
description: The name of the publication
schema: *ref_226
VersionId:
name: version
in: path
required: true
schema:
type: number
Token:
name: token
in: path
required: true
schema: *ref_266
AccountId:
name: id
in: path
required: true
schema: *ref_58
ClientName:
name: client_name
in: path
required: true
schema: *ref_55
ScriptPath:
name: path
in: path
required: true
schema: *ref_74
ScriptHash:
name: hash
in: path
required: true
schema: *ref_81
JobId:
name: id
in: path
required: true
schema: *ref_144
Path:
name: path
in: path
required: true
schema: *ref_48
CustomPath:
name: custom_path
in: path
required: true
schema: *ref_111
PathId:
name: id
in: path
required: true
schema: *ref_61
PathVersion:
name: version
in: path
required: true
schema: *ref_267
Name:
name: name
in: path
required: true
schema: *ref_235
Page:
name: page
description: which page to return (start at 1, default 1)
in: query
schema: *ref_13
PerPage:
name: per_page
description: number of items to return for a given page (default 30, max 100)
in: query
schema: *ref_14
JobTriggerKind:
name: trigger_kind
description: trigger kind (schedule, http, websocket...)
in: query
schema: *ref_160
OrderDesc:
name: order_desc
description: order by desc order (default true)
in: query
schema: *ref_96
CreatedBy:
name: created_by
description: mask to filter exact matching user creator
in: query
schema: *ref_97
Label:
name: label
description: >-
mask to filter exact matching job's label (job labels are completed jobs
with as a result an object containing a string in the array at key
'wm_labels')
in: query
schema: *ref_146
Worker:
name: worker
description: worker this job was ran on
in: query
schema: *ref_128
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: *ref_88
WorkerTag:
name: tag
description: Override the tag to use
in: query
schema: *ref_89
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: *ref_90
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: *ref_91
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: *ref_92
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: *ref_93
SkipPreprocessor:
name: skip_preprocessor
description: skip the preprocessor
in: query
schema: *ref_94
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: *ref_95
ScriptStartPath:
name: script_path_start
description: mask to filter matching starting path
in: query
schema: *ref_130
SchedulePath:
name: schedule_path
description: mask to filter by schedule path
in: query
schema: *ref_131
TriggerPath:
name: trigger_path
description: mask to filter by trigger path
in: query
schema: *ref_268
ScriptExactPath:
name: script_path_exact
description: mask to filter exact matching path
in: query
schema: *ref_129
ScriptExactHash:
name: script_hash
description: mask to filter exact matching path
in: query
schema: *ref_132
CreatedBefore:
name: created_before
description: filter on created before (inclusive) timestamp
in: query
schema: *ref_154
CreatedAfter:
name: created_after
description: filter on created after (exclusive) timestamp
in: query
schema: *ref_155
StartedBefore:
name: started_before
description: filter on started before (inclusive) timestamp
in: query
schema: *ref_133
StartedAfter:
name: started_after
description: filter on started after (exclusive) timestamp
in: query
schema: *ref_134
Before:
name: before
description: filter on started before (inclusive) timestamp
in: query
schema: *ref_260
CompletedBefore:
name: completed_before
description: filter on started before (inclusive) timestamp
in: query
schema: *ref_156
CompletedAfter:
name: completed_after
description: filter on started after (exclusive) timestamp
in: query
schema: *ref_157
CreatedAfterQueue:
name: created_after_queue
description: filter on jobs created after X for jobs in the queue only
in: query
schema: *ref_159
CreatedBeforeQueue:
name: created_before_queue
description: filter on jobs created before X for jobs in the queue only
in: query
schema: *ref_158
Success:
name: success
description: filter on successful jobs
in: query
schema: *ref_142
ScheduledForBeforeNow:
name: scheduled_for_before_now
description: filter on jobs scheduled_for before now (hence waitinf for a worker)
in: query
schema: *ref_136
Suspended:
name: suspended
description: filter on suspended jobs
in: query
schema: *ref_138
Running:
name: running
description: filter on running jobs
in: query
schema: *ref_135
AllowWildcards:
name: allow_wildcards
description: allow wildcards (*) in the filter of label, tag, worker
in: query
schema: *ref_143
ArgsFilter:
name: args
description: filter on jobs containing those args as a json subset (@> in postgres)
in: query
schema: *ref_139
Tag:
name: tag
description: filter on jobs with a given tag/worker group
in: query
schema: *ref_140
ResultFilter:
name: result
description: filter on jobs containing those result as a json subset (@> in postgres)
in: query
schema: *ref_141
After:
name: after
description: filter on created after (exclusive) timestamp
in: query
schema: *ref_261
Username:
name: username
description: filter on exact username of user
in: query
schema: *ref_269
Operation:
name: operation
description: filter on exact or prefix name of operation
in: query
schema: *ref_270
ResourceName:
name: resource
description: filter on exact or prefix name of resource
in: query
schema: *ref_271
ActionKind:
name: action_kind
description: filter on type of operation
in: query
schema: *ref_272
JobKinds:
name: job_kinds
description: >-
filter on job kind (values 'preview', 'script', 'dependencies', 'flow')
separated by,
in: query
schema: *ref_137
RunnableId:
name: runnable_id
in: query
schema: *ref_247
RunnableTypeQuery:
name: runnable_type
in: query
schema: *ref_248
InputId:
name: input
in: path
required: true
schema: *ref_273
GetStarted:
name: get_started
in: query
schema: *ref_274
ConcurrencyId:
name: concurrency_id
in: path
required: true
schema: *ref_275
RunnableKind:
name: runnable_kind
in: path
required: true
schema: *ref_110
schemas:
OpenFlow:
type: object
description: >-
Top-level flow definition containing metadata, configuration, and the
flow structure
properties: *ref_98
required: *ref_99
FlowValue:
type: object
description: >-
The flow structure containing modules and optional preprocessor/failure
handlers
properties: *ref_126
required: *ref_127
Retry:
type: object
description: Retry configuration for failed module executions
properties: *ref_169
StopAfterIf:
type: object
description: Early termination condition for a module
properties:
skip_if_stopped:
type: boolean
description: If true, following steps are skipped when this condition triggers
expr:
type: string
description: >-
JavaScript expression evaluated after the module runs. Can use
'result' (step's result) or 'flow_input'. Return true to stop
error_message:
type: string
description: Custom error message shown when stopping
required:
- expr
FlowModule:
type: object
description: A single step in a flow. Can be a script, subflow, loop, or branch
properties:
id:
type: string
description: >-
Unique identifier for this step. Used to reference results via
'results.step_id'. Must be a valid identifier (alphanumeric,
underscore, hyphen)
value:
description: >-
The actual implementation of a flow step. Can be a script (inline or
referenced), subflow, loop, branch, or special module type
oneOf: *ref_70
discriminator: *ref_71
stop_after_if:
description: Early termination condition for a module
type: object
properties: *ref_72
required: *ref_73
stop_after_all_iters_if:
description: Early termination condition for a module
type: object
properties: *ref_72
required: *ref_73
skip_if:
type: object
description: >-
Conditionally skip this step based on previous results or flow
inputs
properties:
expr:
type: string
description: >-
JavaScript expression that returns true to skip. Can use
'flow_input' or 'results.<step_id>'
required:
- expr
sleep:
description: >-
Maps input parameters for a step. Can be a static value or a
JavaScript expression that references previous results or flow
inputs
oneOf: *ref_62
discriminator: *ref_63
cache_ttl:
type: number
description: Cache duration in seconds for this step's results
cache_ignore_s3_path:
type: boolean
timeout:
description: >-
Maps input parameters for a step. Can be a static value or a
JavaScript expression that references previous results or flow
inputs
oneOf: *ref_62
discriminator: *ref_63
delete_after_use:
type: boolean
description: If true, this step's result is deleted after use to save memory
summary:
type: string
description: Short description of what this step does
mock:
type: object
description: Mock configuration for testing without executing the actual step
properties:
enabled:
type: boolean
description: If true, return mock value instead of executing
return_value:
description: Value to return when mocked
suspend:
type: object
description: Configuration for approval/resume steps that wait for user input
properties:
required_events:
type: integer
description: Number of approvals required before continuing
timeout:
type: integer
description: Timeout in seconds before auto-continuing or canceling
resume_form:
type: object
description: Form schema for collecting input when resuming
properties:
schema:
type: object
description: JSON Schema for the resume form
user_auth_required:
type: boolean
description: If true, only authenticated users can approve
user_groups_required:
description: >-
Maps input parameters for a step. Can be a static value or a
JavaScript expression that references previous results or flow
inputs
oneOf: *ref_62
discriminator: *ref_63
self_approval_disabled:
type: boolean
description: If true, the user who started the flow cannot approve
hide_cancel:
type: boolean
description: If true, hide the cancel button on the approval form
continue_on_disapprove_timeout:
type: boolean
description: If true, continue flow on timeout instead of canceling
priority:
type: number
description: Execution priority for this step (higher numbers run first)
continue_on_error:
type: boolean
description: If true, flow continues even if this step fails
retry:
description: Retry configuration for failed module executions
type: object
properties: *ref_276
required:
- value
- id
InputTransform:
description: >-
Maps input parameters for a step. Can be a static value or a JavaScript
expression that references previous results or flow inputs
oneOf: *ref_116
discriminator: *ref_117
StaticTransform:
type: object
description: >-
Static value passed directly to the step. Use for hardcoded values or
resource references like '$res:path/to/resource'
properties:
value:
description: The static value. For resources, use format '$res:path/to/resource'
type:
type: string
enum:
- static
required:
- type
JavascriptTransform:
type: object
description: >-
JavaScript expression evaluated at runtime. Can reference previous step
results via 'results.step_id' or flow inputs via 'flow_input.property'.
Inside loops, use 'flow_input.iter.value' for the current iteration
value
properties:
expr:
type: string
description: >-
JavaScript expression returning the value. Available variables -
results (object with all previous step results), flow_input (flow
inputs), flow_input.iter (in loops)
type:
type: string
enum:
- javascript
required:
- expr
- type
AiTransform:
type: object
description: >-
Value resolved by the AI runtime for this input. The AI engine decides
how to satisfy the parameter.
properties:
type:
type: string
enum:
- ai
required:
- type
ProviderConfig:
type: object
description: >-
Complete AI provider configuration with resource reference and model
selection
properties:
kind:
type: string
description: Supported AI provider types
enum: *ref_277
resource:
type: string
description: >-
Resource reference in format '$res:{resource_path}' pointing to
provider credentials
model:
type: string
description: >-
Model identifier (e.g., 'gpt-4', 'claude-3-opus-20240229',
'gemini-pro')
required:
- kind
- resource
- model
MemoryConfig:
description: Conversation memory configuration
oneOf:
- type: object
description: No conversation memory/context
properties: *ref_278
required: *ref_279
- type: object
description: Automatic context management
properties: *ref_280
required: *ref_281
- type: object
description: Explicit message history
properties: *ref_282
required: *ref_283
discriminator:
propertyName: kind
mapping:
'off': '#/components/schemas/MemoryOff'
auto: '#/components/schemas/MemoryAuto'
manual: '#/components/schemas/MemoryManual'
FlowModuleValue:
description: >-
The actual implementation of a flow step. Can be a script (inline or
referenced), subflow, loop, branch, or special module type
oneOf:
- type: object
description: >-
Inline script with code defined directly in the flow. Use 'bun' as
default language if unspecified. The script receives arguments from
input_transforms
properties: *ref_284
required: *ref_285
- type: object
description: >-
Reference to an existing script by path. Use this when calling a
previously saved script instead of writing inline code
properties: *ref_286
required: *ref_287
- type: object
description: >-
Reference to an existing flow by path. Use this to call another flow
as a subflow
properties: *ref_288
required: *ref_289
- type: object
description: >-
Executes nested modules in a loop over an iterator. Inside the loop,
use 'flow_input.iter.value' to access the current iteration value,
and 'flow_input.iter.index' for the index. Supports parallel
execution for better performance on I/O-bound operations
properties: *ref_290
required: *ref_291
- type: object
description: >-
Executes nested modules repeatedly while a condition is true. The
loop checks the condition after each iteration. Use stop_after_if on
modules to control loop termination
properties: *ref_292
required: *ref_293
- type: object
description: >-
Conditional branching where only the first matching branch executes.
Branches are evaluated in order, and the first one with a true
expression runs. If no branches match, the default branch executes
properties: *ref_294
required: *ref_295
- type: object
description: >-
Parallel branching where all branches execute simultaneously. Unlike
BranchOne, all branches run regardless of conditions. Useful for
executing independent tasks concurrently
properties: *ref_296
required: *ref_297
- type: object
description: >-
Pass-through module that returns its input unchanged. Useful for
flow structure or as a placeholder
properties: *ref_298
required: *ref_299
- type: object
description: >-
AI agent step that can use tools to accomplish tasks. The agent
receives inputs and can call any of its configured tools to complete
the task
properties: *ref_300
required: *ref_301
discriminator:
propertyName: type
mapping:
rawscript: '#/components/schemas/schemas-RawScript'
script: '#/components/schemas/schemas-PathScript'
flow: '#/components/schemas/schemas-PathFlow'
forloopflow: '#/components/schemas/schemas-ForloopFlow'
whileloopflow: '#/components/schemas/schemas-WhileloopFlow'
branchone: '#/components/schemas/schemas-BranchOne'
branchall: '#/components/schemas/schemas-BranchAll'
identity: '#/components/schemas/schemas-Identity'
aiagent: '#/components/schemas/schemas-AiAgent'
RawScript:
type: object
description: >-
Inline script with code defined directly in the flow. Use 'bun' as
default language if unspecified. The script receives arguments from
input_transforms
properties:
input_transforms:
type: object
description: >-
Map of parameter names to their values (static or JavaScript
expressions). These become the script's input arguments
additionalProperties:
description: >-
Maps input parameters for a step. Can be a static value or a
JavaScript expression that references previous results or flow
inputs
oneOf: *ref_62
discriminator: *ref_63
content:
type: string
description: The script source code. Should export a 'main' function
language:
type: string
description: Programming language for this script
enum:
- deno
- bun
- python3
- go
- bash
- powershell
- postgresql
- mysql
- bigquery
- snowflake
- mssql
- oracledb
- graphql
- nativets
- php
- rust
- ansible
- csharp
- nu
- java
- ruby
- duckdb
path:
type: string
description: Optional path for saving this script
lock:
type: string
description: Lock file content for dependencies
type:
type: string
enum:
- rawscript
tag:
type: string
description: Worker group tag for execution routing
concurrent_limit:
type: number
description: Maximum concurrent executions of this script
concurrency_time_window_s:
type: number
description: Time window for concurrent_limit
custom_concurrency_key:
type: string
description: Custom key for grouping concurrent executions
is_trigger:
type: boolean
description: If true, this script is a trigger that can start the flow
assets:
type: array
description: >-
External resources this script accesses (S3 objects, resources,
etc.)
items:
type: object
required:
- path
- kind
properties:
path:
type: string
description: Path to the asset
kind:
type: string
description: Type of asset
enum:
- s3object
- resource
- ducklake
- datatable
access_type:
type: string
nullable: true
description: Access level for this asset
enum:
- r
- w
- rw
alt_access_type:
type: string
nullable: true
description: Alternative access level
enum:
- r
- w
- rw
required:
- type
- content
- language
- input_transforms
PathScript:
type: object
description: >-
Reference to an existing script by path. Use this when calling a
previously saved script instead of writing inline code
properties:
input_transforms:
type: object
description: >-
Map of parameter names to their values (static or JavaScript
expressions). These become the script's input arguments
additionalProperties:
description: >-
Maps input parameters for a step. Can be a static value or a
JavaScript expression that references previous results or flow
inputs
oneOf: *ref_62
discriminator: *ref_63
path:
type: string
description: Path to the script in the workspace (e.g., 'f/scripts/send_email')
hash:
type: string
description: Optional specific version hash of the script to use
type:
type: string
enum:
- script
tag_override:
type: string
description: Override the script's default worker group tag
is_trigger:
type: boolean
description: If true, this script is a trigger that can start the flow
required:
- type
- path
- input_transforms
PathFlow:
type: object
description: >-
Reference to an existing flow by path. Use this to call another flow as
a subflow
properties:
input_transforms:
type: object
description: >-
Map of parameter names to their values (static or JavaScript
expressions). These become the subflow's input arguments
additionalProperties:
description: >-
Maps input parameters for a step. Can be a static value or a
JavaScript expression that references previous results or flow
inputs
oneOf: *ref_62
discriminator: *ref_63
path:
type: string
description: Path to the flow in the workspace (e.g., 'f/flows/process_user')
type:
type: string
enum:
- flow
required:
- type
- path
- input_transforms
ForloopFlow:
type: object
description: >-
Executes nested modules in a loop over an iterator. Inside the loop, use
'flow_input.iter.value' to access the current iteration value, and
'flow_input.iter.index' for the index. Supports parallel execution for
better performance on I/O-bound operations
properties:
modules:
type: array
description: >-
Steps to execute for each iteration. These can reference the
iteration value via 'flow_input.iter.value'
items:
type: object
description: A single step in a flow. Can be a script, subflow, loop, or branch
properties: *ref_64
required: *ref_65
iterator:
description: >-
Maps input parameters for a step. Can be a static value or a
JavaScript expression that references previous results or flow
inputs
oneOf: *ref_62
discriminator: *ref_63
skip_failures:
type: boolean
description: >-
If true, iteration failures don't stop the loop. Failed iterations
return null
type:
type: string
enum:
- forloopflow
parallel:
type: boolean
description: >-
If true, iterations run concurrently (faster for I/O-bound
operations). Use with parallelism to control concurrency
parallelism:
description: >-
Maps input parameters for a step. Can be a static value or a
JavaScript expression that references previous results or flow
inputs
oneOf: *ref_62
discriminator: *ref_63
squash:
type: boolean
required:
- modules
- iterator
- skip_failures
- type
WhileloopFlow:
type: object
description: >-
Executes nested modules repeatedly while a condition is true. The loop
checks the condition after each iteration. Use stop_after_if on modules
to control loop termination
properties:
modules:
type: array
description: >-
Steps to execute in each iteration. Use stop_after_if to control
when the loop ends
items:
type: object
description: A single step in a flow. Can be a script, subflow, loop, or branch
properties: *ref_64
required: *ref_65
skip_failures:
type: boolean
description: >-
If true, iteration failures don't stop the loop. Failed iterations
return null
type:
type: string
enum:
- whileloopflow
parallel:
type: boolean
description: >-
If true, iterations run concurrently (use with caution in while
loops)
parallelism:
description: >-
Maps input parameters for a step. Can be a static value or a
JavaScript expression that references previous results or flow
inputs
oneOf: *ref_62
discriminator: *ref_63
squash:
type: boolean
required:
- modules
- skip_failures
- type
BranchOne:
type: object
description: >-
Conditional branching where only the first matching branch executes.
Branches are evaluated in order, and the first one with a true
expression runs. If no branches match, the default branch executes
properties:
branches:
type: array
description: >-
Array of branches to evaluate in order. The first branch with expr
evaluating to true executes
items:
type: object
properties:
summary:
type: string
description: Short description of this branch condition
expr:
type: string
description: >-
JavaScript expression that returns boolean. Can use
'results.step_id' or 'flow_input'. First true expr wins
modules:
type: array
description: Steps to execute if this branch's expr is true
items:
type: object
description: >-
A single step in a flow. Can be a script, subflow, loop, or
branch
properties: *ref_64
required: *ref_65
required:
- modules
- expr
default:
type: array
description: Steps to execute if no branch expressions match
items:
type: object
description: A single step in a flow. Can be a script, subflow, loop, or branch
properties: *ref_64
required: *ref_65
type:
type: string
enum:
- branchone
required:
- branches
- default
- type
BranchAll:
type: object
description: >-
Parallel branching where all branches execute simultaneously. Unlike
BranchOne, all branches run regardless of conditions. Useful for
executing independent tasks concurrently
properties:
branches:
type: array
description: >-
Array of branches that all execute (either in parallel or
sequentially)
items:
type: object
properties:
summary:
type: string
description: Short description of this branch's purpose
skip_failure:
type: boolean
description: If true, failure in this branch doesn't fail the entire flow
modules:
type: array
description: Steps to execute in this branch
items:
type: object
description: >-
A single step in a flow. Can be a script, subflow, loop, or
branch
properties: *ref_64
required: *ref_65
required:
- modules
type:
type: string
enum:
- branchall
parallel:
type: boolean
description: >-
If true, all branches execute concurrently. If false, they execute
sequentially
required:
- branches
- type
AiAgent:
type: object
description: >-
AI agent step that can use tools to accomplish tasks. The agent receives
inputs and can call any of its configured tools to complete the task
properties:
input_transforms:
type: object
description: Input parameters for the AI agent mapped to their values
properties:
provider:
description: >-
Provider configuration - can be static (ProviderConfig),
JavaScript expression, or AI-determined
oneOf: *ref_302
discriminator: *ref_303
output_type:
allOf:
- description: >-
Maps input parameters for a step. Can be a static value or a
JavaScript expression that references previous results or
flow inputs
oneOf: *ref_62
discriminator: *ref_63
description: >
Output format type.
Valid values: 'text' (default) - plain text response, 'image' -
image generation
user_message:
allOf:
- description: >-
Maps input parameters for a step. Can be a static value or a
JavaScript expression that references previous results or
flow inputs
oneOf: *ref_62
discriminator: *ref_63
description: >-
The user's prompt/message to the AI agent. Supports variable
interpolation with flow.input syntax.
system_prompt:
allOf:
- description: >-
Maps input parameters for a step. Can be a static value or a
JavaScript expression that references previous results or
flow inputs
oneOf: *ref_62
discriminator: *ref_63
description: >-
System instructions that guide the AI's behavior, persona, and
response style. Optional.
streaming:
allOf:
- description: >-
Maps input parameters for a step. Can be a static value or a
JavaScript expression that references previous results or
flow inputs
oneOf: *ref_62
discriminator: *ref_63
description: >
Boolean. If true, stream the AI response incrementally.
Streaming events include: token_delta, tool_call,
tool_call_arguments, tool_execution, tool_result
memory:
description: >-
Memory configuration - can be static (MemoryConfig), JavaScript
expression, or AI-determined
oneOf: *ref_304
discriminator: *ref_305
output_schema:
allOf:
- description: >-
Maps input parameters for a step. Can be a static value or a
JavaScript expression that references previous results or
flow inputs
oneOf: *ref_62
discriminator: *ref_63
description: >
JSON Schema object defining structured output format. Used when
you need the AI to return data in a specific shape.
Supports standard JSON Schema properties: type, properties,
required, items, enum, pattern, minLength, maxLength, minimum,
maximum, etc.
Example: { type: 'object', properties: { name: { type: 'string'
}, age: { type: 'integer' } }, required: ['name'] }
user_images:
allOf:
- description: >-
Maps input parameters for a step. Can be a static value or a
JavaScript expression that references previous results or
flow inputs
oneOf: *ref_62
discriminator: *ref_63
description: >
Array of image references for vision-capable models.
Format: Array<{ bucket: string, key: string }> - S3 object
references
Example: [{ bucket: 'my-bucket', key: 'images/photo.jpg' }]
max_completion_tokens:
allOf:
- description: >-
Maps input parameters for a step. Can be a static value or a
JavaScript expression that references previous results or
flow inputs
oneOf: *ref_62
discriminator: *ref_63
description: >
Integer. Maximum number of tokens the AI will generate in its
response.
Range: 1 to 4,294,967,295. Typical values: 256-4096 for most use
cases.
temperature:
allOf:
- description: >-
Maps input parameters for a step. Can be a static value or a
JavaScript expression that references previous results or
flow inputs
oneOf: *ref_62
discriminator: *ref_63
description: |
Float. Controls randomness/creativity of responses.
Range: 0.0 to 2.0 (provider-dependent)
- 0.0 = deterministic, focused responses
- 0.7 = balanced (common default)
- 1.0+ = more creative/random
required:
- provider
- user_message
- output_type
tools:
type: array
description: >-
Array of tools the agent can use. The agent decides which tools to
call based on the task
items:
type: object
description: >-
A tool available to an AI agent. Can be a flow module or an
external MCP (Model Context Protocol) tool
properties: *ref_306
required: *ref_307
type:
type: string
enum:
- aiagent
parallel:
type: boolean
description: If true, the agent can execute multiple tool calls in parallel
required:
- tools
- type
- input_transforms
Identity:
type: object
description: >-
Pass-through module that returns its input unchanged. Useful for flow
structure or as a placeholder
properties:
type:
type: string
enum:
- identity
flow:
type: boolean
description: If true, marks this as a flow identity (special handling)
required:
- type
FlowStatus:
type: object
properties: *ref_147
required: *ref_148
FlowStatusModule:
type: object
properties:
type:
type: string
enum:
- WaitingForPriorSteps
- WaitingForEvents
- WaitingForExecutor
- InProgress
- Success
- Failure
id:
type: string
job:
type: string
format: uuid
count:
type: integer
progress:
type: integer
iterator:
type: object
properties:
index:
type: integer
itered:
type: array
items: {}
itered_len:
type: integer
args: {}
flow_jobs:
type: array
items:
type: string
flow_jobs_success:
type: array
items:
type: boolean
flow_jobs_duration:
type: object
properties:
started_at:
type: array
items:
type: string
duration_ms:
type: array
items:
type: integer
branch_chosen:
type: object
properties:
type:
type: string
enum:
- branch
- default
branch:
type: integer
required:
- type
branchall:
type: object
properties:
branch:
type: integer
len:
type: integer
required:
- branch
- len
approvers:
type: array
items:
type: object
properties:
resume_id:
type: integer
approver:
type: string
required:
- resume_id
- approver
failed_retries:
type: array
items:
type: string
format: uuid
skipped:
type: boolean
agent_actions:
type: array
items:
type: object
oneOf:
- type: object
properties:
job_id:
type: string
format: uuid
function_name:
type: string
type:
type: string
enum:
- tool_call
module_id:
type: string
required:
- job_id
- function_name
- type
- module_id
- type: object
properties:
call_id:
type: string
format: uuid
function_name:
type: string
resource_path:
type: string
type:
type: string
enum:
- mcp_tool_call
arguments:
type: object
required:
- call_id
- function_name
- resource_path
- type
- type: object
properties:
type:
type: string
enum:
- web_search
required:
- type
- type: object
properties:
type:
type: string
enum:
- message
required:
- content
- type
agent_actions_success:
type: array
items:
type: boolean
required:
- type
FlowNote:
type: object
description: A sticky note attached to a flow for documentation and annotation
properties:
id:
type: string
description: Unique identifier for the note
text:
type: string
description: Content of the note
position:
type: object
description: Position of the note in the flow editor
properties:
x:
type: number
description: X coordinate
'y':
type: number
description: Y coordinate
required:
- x
- 'y'
size:
type: object
description: Size of the note in the flow editor
properties:
width:
type: number
description: Width in pixels
height:
type: number
description: Height in pixels
required:
- width
- height
color:
type: string
description: Color of the note (e.g., "yellow", "#ffff00")
type:
type: string
enum:
- free
- group
description: >-
Type of note - 'free' for standalone notes, 'group' for notes that
group other nodes
locked:
type: boolean
default: false
description: Whether the note is locked and cannot be edited or moved
contained_node_ids:
type: array
items:
type: string
description: For group notes, the IDs of nodes contained within this group
required:
- id
- text
- color
- type
HealthStatusResponse:
type: object
description: Health status response (cached with 5s TTL)
required: *ref_0
properties: *ref_1
DetailedHealthResponse:
type: object
description: Detailed health status response (always fresh, no caching)
required: *ref_2
properties: *ref_3
HealthChecks:
type: object
description: Detailed health checks
required: *ref_308
properties: *ref_309
DatabaseHealth:
type: object
description: Database health status
required: *ref_310
properties: *ref_311
PoolStats:
type: object
description: Database connection pool statistics
required: *ref_312
properties: *ref_313
WorkersHealth:
type: object
description: Workers health status
required: *ref_314
properties: *ref_315
QueueHealth:
type: object
description: Job queue status
required: *ref_316
properties: *ref_317
ReadinessHealth:
type: object
description: Server readiness status
required: *ref_318
properties: *ref_319
AutoInviteConfig:
type: object
description: Configuration for auto-inviting users to the workspace
properties: *ref_320
ErrorHandlerConfig:
type: object
description: Configuration for the workspace error handler
properties: *ref_321
SuccessHandlerConfig:
type: object
description: Configuration for the workspace success handler
properties: *ref_322
EditErrorHandler:
description: >-
Request body for editing the workspace error handler. Accepts both new
grouped format and legacy flat format for backward compatibility.
oneOf: *ref_323
EditErrorHandlerNew:
type: object
description: New grouped format for editing error handler
properties: *ref_324
EditErrorHandlerLegacy:
type: object
description: >-
Legacy flat format for editing error handler (deprecated, use new
format)
properties: *ref_325
EditSuccessHandler:
description: >-
Request body for editing the workspace success handler. Accepts both new
grouped format and legacy flat format for backward compatibility.
oneOf: *ref_326
EditSuccessHandlerNew:
type: object
description: New grouped format for editing success handler
properties: *ref_327
EditSuccessHandlerLegacy:
type: object
description: >-
Legacy flat format for editing success handler (deprecated, use new
format)
properties: *ref_328
VaultSettings:
type: object
required: *ref_22
properties: *ref_23
SecretMigrationFailure:
type: object
required: *ref_329
properties: *ref_330
SecretMigrationReport:
type: object
required: *ref_24
properties: *ref_25
JwksResponse:
type: object
required: *ref_331
properties: *ref_332
FlowConversation:
type: object
required: *ref_333
properties: *ref_334
FlowConversationMessage:
type: object
required: *ref_335
properties: *ref_336
EndpointTool:
type: object
required: *ref_337
properties: *ref_338
AIProvider:
type: string
enum: *ref_339
GitSyncObjectType:
type: string
enum: *ref_36
AIProviderModel:
type: object
properties: *ref_34
required: *ref_35
AIProviderConfig:
type: object
properties: *ref_340
required: *ref_341
AIConfig:
type: object
properties: *ref_37
Alert:
type: object
properties: *ref_342
required: *ref_343
Configs:
type: object
nullable: true
properties: *ref_344
WorkspaceDependencies:
type: object
properties: *ref_77
required: *ref_78
NewWorkspaceDependencies:
type: object
properties: *ref_345
required: *ref_346
Script:
type: object
properties: *ref_79
required: *ref_80
NewScript:
type: object
properties: *ref_84
required: *ref_85
NewScriptWithDraft:
allOf: *ref_347
ScriptHistory:
type: object
properties: *ref_86
required: *ref_87
ScriptArgs:
type: object
description: The arguments to pass to the script or flow
additionalProperties: true
Input:
type: object
properties: *ref_249
required: *ref_250
CreateInput:
type: object
properties: *ref_348
required: *ref_349
UpdateInput:
type: object
properties: *ref_350
required: *ref_351
RunnableType:
type: string
enum: *ref_352
QueuedJob:
type: object
properties: *ref_163
required: *ref_164
CompletedJob:
type: object
properties: *ref_161
required: *ref_162
ExportableCompletedJob:
type: object
description: Completed job with full data for export/import operations
properties: *ref_150
required: *ref_151
ExportableQueuedJob:
type: object
description: Queued job with full data for export/import operations
properties: *ref_152
required: *ref_153
ObscuredJob:
type: object
properties: *ref_353
Job:
oneOf: *ref_165
discriminator: *ref_166
User:
type: object
properties: *ref_26
required: *ref_27
UserSource:
type: object
properties: *ref_354
required: *ref_355
UserUsage:
type: object
properties: *ref_356
Login:
type: object
properties: *ref_357
required: *ref_358
PasswordResetResponse:
type: object
properties: *ref_7
required: *ref_8
EditWorkspaceUser:
type: object
properties: *ref_359
TruncatedToken:
type: object
properties: *ref_82
required: *ref_83
NewToken:
type: object
properties: *ref_360
NewTokenImpersonate:
type: object
properties: *ref_361
required: *ref_362
ListableVariable:
type: object
properties: *ref_49
required: *ref_50
ContextualVariable:
type: object
properties: *ref_363
required: *ref_364
CreateVariable:
type: object
properties: *ref_365
required: *ref_366
EditVariable:
type: object
properties: *ref_367
AuditLog:
type: object
properties: *ref_5
required: *ref_6
MainArgSignature:
type: object
properties:
type:
type: string
enum:
- Valid
- Invalid
error:
type: string
star_args:
type: boolean
star_kwargs:
type: boolean
args:
type: array
items:
type: object
properties:
name:
type: string
typ:
oneOf:
- type: string
enum:
- float
- int
- bool
- email
- unknown
- bytes
- dict
- datetime
- sql
- type: object
properties:
resource:
type: string
nullable: true
required:
- resource
- type: object
properties:
str:
type: array
items:
type: string
nullable: true
required:
- str
- type: object
properties:
object:
type: object
properties:
name:
type: string
props:
type: array
items:
type: object
properties:
key:
type: string
typ:
oneOf:
- type: string
enum:
- float
- int
- bool
- email
- unknown
- bytes
- dict
- datetime
- sql
- type: object
properties:
str: {}
required:
- str
required:
- key
- typ
required:
- object
- type: object
properties:
list:
oneOf:
- type: string
enum:
- float
- int
- bool
- email
- unknown
- bytes
- dict
- datetime
- sql
- type: object
properties:
str: {}
required:
- str
nullable: true
required:
- list
has_default:
type: boolean
default: {}
required:
- name
- typ
no_main_func:
type: boolean
nullable: true
has_preprocessor:
type: boolean
nullable: true
required:
- star_args
- start_kwargs
- args
- type
- error
- no_main_func
- has_preprocessor
ScriptLang:
type: string
enum: *ref_76
Preview:
type: object
properties: *ref_118
required: *ref_119
PreviewInline:
type: object
properties: *ref_368
required: *ref_369
WorkflowTask:
type: object
properties: *ref_370
required: *ref_371
WorkflowStatusRecord:
type: object
additionalProperties:
type: object
properties: *ref_149
WorkflowStatus:
type: object
properties: *ref_149
CreateResource:
type: object
properties: *ref_372
required: *ref_373
EditResource:
type: object
properties: *ref_374
Resource:
type: object
properties: *ref_375
required: *ref_376
ListableResource:
type: object
properties: *ref_377
required: *ref_378
ResourceType:
type: object
properties: *ref_59
required: *ref_60
EditResourceType:
type: object
properties: *ref_379
Schedule:
type: object
properties: *ref_170
required: *ref_171
ScheduleWJobs:
allOf: *ref_380
ErrorHandler:
type: string
enum:
- custom
- slack
- teams
- email
NewSchedule:
type: object
properties: *ref_381
required: *ref_382
EditSchedule:
type: object
properties: *ref_383
required: *ref_384
JobTriggerKind:
description: job trigger kind (schedule, http, websocket...)
type: string
enum: *ref_145
TriggerMode:
description: job trigger mode
type: string
enum: *ref_179
TriggerExtraProperty:
type: object
properties: *ref_184
required: *ref_185
AuthenticationMethod:
type: string
enum: *ref_178
RunnableKind:
type: string
enum: *ref_172
OpenapiSpecFormat:
type: string
enum: *ref_385
OpenapiHttpRouteFilters:
type: object
properties: *ref_386
required: *ref_387
WebhookFilters:
type: object
properties: *ref_388
required: *ref_389
OpenapiV3Info:
type: object
properties: *ref_390
required: *ref_391
GenerateOpenapiSpec:
type: object
properties: *ref_173
HttpMethod:
type: string
enum: *ref_176
HttpRequestType:
type: string
enum: *ref_177
HttpTrigger:
allOf: *ref_180
type: object
properties: *ref_181
required: *ref_182
NewHttpTrigger:
type: object
properties: *ref_174
required: *ref_175
EditHttpTrigger:
type: object
properties: *ref_392
required: *ref_393
TriggersCount:
type: object
properties: *ref_103
WebsocketTrigger:
allOf: *ref_186
type: object
properties: *ref_187
required: *ref_188
NewWebsocketTrigger:
type: object
properties: *ref_394
required: *ref_395
EditWebsocketTrigger:
type: object
properties: *ref_396
required: *ref_397
WebsocketTriggerInitialMessage:
anyOf: *ref_183
MqttQoS:
type: string
enum: *ref_398
MqttV3Config:
type: object
properties: *ref_208
MqttV5Config:
type: object
properties: *ref_209
MqttSubscribeTopic:
type: object
properties: *ref_206
required: *ref_207
MqttClientVersion:
type: string
enum: *ref_210
MqttTrigger:
allOf: *ref_211
type: object
properties: *ref_212
required: *ref_213
NewMqttTrigger:
type: object
properties: *ref_399
required: *ref_400
EditMqttTrigger:
type: object
properties: *ref_401
required: *ref_402
DeliveryType:
type: string
enum: *ref_216
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: *ref_217
required: *ref_218
GcpTrigger:
allOf: *ref_220
type: object
description: >-
A Google Cloud Pub/Sub trigger that executes a script or flow when
messages are received.
properties: *ref_221
required: *ref_222
SubscriptionMode:
type: string
enum: *ref_219
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: *ref_214
required: *ref_215
GetAllTopicSubscription:
type: object
properties: *ref_403
required: *ref_404
DeleteGcpSubscription:
type: object
properties: *ref_405
required: *ref_406
AwsAuthResourceType:
type: string
enum: *ref_195
SqsTrigger:
allOf: *ref_196
type: object
properties: *ref_197
required: *ref_198
LoggedWizardStatus:
type: string
enum: *ref_17
CustomInstanceDbLogs:
type: object
properties: *ref_407
CustomInstanceDbTag:
type: string
enum: *ref_18
CustomInstanceDb:
type: object
required: *ref_19
properties: *ref_20
NewSqsTrigger:
type: object
properties: *ref_408
required: *ref_409
EditSqsTrigger:
type: object
properties: *ref_410
required: *ref_411
Slot:
type: object
properties: *ref_223
SlotList:
type: object
properties: *ref_412
PublicationData:
type: object
properties: *ref_227
required: *ref_228
TableToTrack:
type: array
items: *ref_413
Relations:
type: object
properties: *ref_224
required: *ref_225
Language:
type: string
enum: *ref_414
TemplateScript:
type: object
properties: *ref_415
required: *ref_416
PostgresTrigger:
allOf: *ref_229
type: object
properties: *ref_230
required: *ref_231
NewPostgresTrigger:
type: object
properties: *ref_417
required: *ref_418
EditPostgresTrigger:
type: object
properties: *ref_419
required: *ref_420
KafkaTrigger:
allOf: *ref_189
type: object
properties: *ref_190
required: *ref_191
NewKafkaTrigger:
type: object
properties: *ref_421
required: *ref_422
EditKafkaTrigger:
type: object
properties: *ref_423
required: *ref_424
NatsTrigger:
allOf: *ref_192
type: object
properties: *ref_193
required: *ref_194
NewNatsTrigger:
type: object
properties: *ref_425
required: *ref_426
EditNatsTrigger:
type: object
properties: *ref_427
required: *ref_428
EmailTrigger:
allOf: *ref_232
type: object
properties: *ref_233
required: *ref_234
NewEmailTrigger:
type: object
properties: *ref_429
required: *ref_430
EditEmailTrigger:
type: object
properties: *ref_431
required: *ref_432
Group:
type: object
properties: *ref_240
required: *ref_241
InstanceGroup:
type: object
required: *ref_236
properties: *ref_237
InstanceGroupWithWorkspaces:
type: object
required: *ref_433
properties: *ref_434
WorkspaceInfo:
type: object
properties: *ref_435
required: *ref_436
Folder:
type: object
properties: *ref_242
required: *ref_243
WorkerPing:
type: object
properties: *ref_437
required: *ref_438
UserWorkspaceList:
type: object
properties: *ref_439
required: *ref_440
CreateWorkspace:
type: object
properties: *ref_441
required: *ref_442
CreateWorkspaceFork:
type: object
properties: *ref_15
required: *ref_16
Workspace:
type: object
properties: *ref_11
required: *ref_12
DependencyMap:
type: object
properties: *ref_443
DependencyDependent:
type: object
properties: *ref_444
required: *ref_445
DependentsAmount:
type: object
properties: *ref_446
required: *ref_447
WorkspaceInvite:
type: object
properties: *ref_32
required: *ref_33
GlobalUserInfo:
type: object
properties: *ref_30
required: *ref_31
Flow:
allOf: *ref_102
ExtraPerms:
type: object
additionalProperties: *ref_448
FlowMetadata:
type: object
properties: *ref_449
required: *ref_450
OpenFlowWPath:
allOf: *ref_104
FlowPreview:
type: object
properties: *ref_122
required: *ref_123
RestartedFrom:
type: object
properties: *ref_451
Policy:
type: object
properties: *ref_105
ListableApp:
type: object
properties: *ref_452
required: *ref_453
ScopeDefinition:
type: object
properties: *ref_454
required: *ref_455
ScopeDomain:
type: object
properties: *ref_456
required: *ref_457
ListableRawApp:
type: object
properties: *ref_458
required: *ref_459
AppWithLastVersion:
type: object
properties: *ref_106
required: *ref_107
AppWithLastVersionWDraft:
allOf: *ref_460
AppHistory:
type: object
properties: *ref_108
required: *ref_109
FlowVersion:
type: object
properties: *ref_100
required: *ref_101
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: *ref_56
required: *ref_57
HubScriptKind:
type: string
enum: *ref_75
PolarsClientKwargs:
type: object
properties: *ref_253
required: *ref_254
LargeFileStorage:
type: object
properties: *ref_38
DucklakeSettings:
type: object
required: *ref_39
properties: *ref_40
DataTableSettings:
type: object
required: *ref_41
properties: *ref_42
DataTableSchema:
type: object
required: *ref_461
properties: *ref_462
DynamicInputData:
type: object
properties: *ref_463
required: *ref_464
WindmillLargeFile:
type: object
properties: *ref_255
required: *ref_256
WindmillFileMetadata:
type: object
properties: *ref_259
WindmillFilePreview:
type: object
properties: *ref_257
required: *ref_258
S3Resource:
type: object
properties: *ref_251
required: *ref_252
WorkspaceGitSyncSettings:
type: object
properties: *ref_43
WorkspaceDeployUISettings:
type: object
properties: *ref_46
WorkspaceDefaultScripts:
type: object
properties: *ref_47
S3PermissionRule:
type: object
properties: *ref_465
required: *ref_466
GitRepositorySettings:
type: object
properties: *ref_44
required: *ref_45
MetricMetadata:
type: object
properties: *ref_467
required: *ref_468
ScalarMetric:
type: object
properties: *ref_469
required: *ref_470
TimeseriesMetric:
type: object
properties: *ref_471
required: *ref_472
MetricDataPoint:
type: object
properties: *ref_473
required: *ref_474
RawScriptForDependencies:
type: object
properties: *ref_475
required: *ref_476
ConcurrencyGroup:
type: object
properties: *ref_477
required: *ref_478
ExtendedJobs:
type: object
properties: *ref_479
required: *ref_480
ExportedUser:
type: object
properties: *ref_9
required: *ref_10
GlobalSetting:
type: object
properties: *ref_481
required: *ref_482
Config:
type: object
properties: *ref_483
required: *ref_484
ExportedInstanceGroup:
type: object
properties: *ref_238
required: *ref_239
JobSearchHit:
type: object
properties: *ref_485
LogSearchHit:
type: object
properties: *ref_486
AutoscalingEvent:
type: object
properties: *ref_487
CriticalAlert:
type: object
properties: *ref_51
CaptureTriggerKind:
type: string
enum: *ref_244
Capture:
type: object
properties: *ref_245
required: *ref_246
CaptureConfig:
type: object
properties: *ref_488
required: *ref_489
OperatorSettings:
nullable: true
type: object
required: *ref_28
properties: *ref_29
WorkspaceComparison:
type: object
required: *ref_490
properties: *ref_491
WorkspaceItemDiff:
type: object
required: *ref_492
properties: *ref_493
CompareSummary:
type: object
required: *ref_494
properties: *ref_495
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:
type: object
required: &ref_496
- channel_id
- channel_name
- tenant_id
- service_url
properties: &ref_497
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/
ChannelInfo:
type: object
required: *ref_496
properties: *ref_497
GithubInstallations:
type: array
items: *ref_498
WorkspaceGithubInstallation:
type: object
properties:
account_id:
type: string
installation_id:
type: number
required:
- account_id
- installation_id
S3Object:
type: object
properties: *ref_112
required: *ref_113
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: *ref_264
AssetUsageAccessType:
type: string
enum: *ref_263
nullable: true
AssetKind:
type: string
enum: *ref_262
Asset:
type: object
properties:
path:
type: string
kind:
type: string
enum: *ref_262
required:
- path
- kind
ProtectionRuleset:
type: object
description: A workspace protection rule defining restrictions and bypass permissions
required: *ref_499
properties: *ref_500
ProtectionRules:
type: array
description: Configuration of protection restrictions
items: *ref_52
ProtectionRuleKind:
type: string
enum: *ref_501
RuleBypasserGroups:
type: array
description: Groups that can bypass this ruleset
items: *ref_53
RuleBypasserUsers:
type: array
description: Users that can bypass this ruleset
items: *ref_54
NativeServiceName:
type: string
enum: *ref_199
NativeTrigger:
type: object
description: A native trigger stored in Windmill
properties: *ref_502
required: *ref_503
NativeTriggerWithExternal:
type: object
description: >-
Full trigger response containing both Windmill data and external service
data
properties: *ref_504
required: *ref_505
WorkspaceIntegrations:
type: object
properties: *ref_506
required: *ref_507
WorkspaceOAuthConfig:
type: object
properties: *ref_200
required: *ref_201
WebhookEvent:
type: object
properties:
type:
type: string
enum:
- webhook
request_type:
type: string
description: The type of webhook request (define possible values here)
enum: &ref_508
- async
- sync
required:
- type
- request_type
WebhookRequestType:
type: string
description: The type of webhook request (define possible values here)
enum: *ref_508
RedirectUri:
type: object
properties: *ref_202
required: *ref_203
NativeTriggerData:
type: object
description: Data for creating or updating a native trigger
properties: *ref_204
required: *ref_205
CreateTriggerResponse:
type: object
description: Response returned when a native trigger is created
properties: *ref_509
required: *ref_510
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: *ref_511
required: *ref_512
schemas-StaticTransform:
type: object
description: >-
Static value passed directly to the step. Use for hardcoded values or
resource references like '$res:path/to/resource'
properties: *ref_114
required: *ref_115
schemas-JavascriptTransform:
type: object
description: >-
JavaScript expression evaluated at runtime. Can reference previous step
results via 'results.step_id' or flow inputs via 'flow_input.property'.
Inside loops, use 'flow_input.iter.value' for the current iteration
value
properties: *ref_66
required: *ref_67
schemas-AiTransform:
type: object
description: >-
Value resolved by the AI runtime for this input. The AI engine decides
how to satisfy the parameter.
properties: *ref_68
required: *ref_69
schemas-InputTransform:
description: >-
Maps input parameters for a step. Can be a static value or a JavaScript
expression that references previous results or flow inputs
oneOf: *ref_62
discriminator: *ref_63
schemas-RawScript:
type: object
description: >-
Inline script with code defined directly in the flow. Use 'bun' as
default language if unspecified. The script receives arguments from
input_transforms
properties: *ref_284
required: *ref_285
schemas-PathScript:
type: object
description: >-
Reference to an existing script by path. Use this when calling a
previously saved script instead of writing inline code
properties: *ref_286
required: *ref_287
schemas-PathFlow:
type: object
description: >-
Reference to an existing flow by path. Use this to call another flow as
a subflow
properties: *ref_288
required: *ref_289
schemas-FlowModule:
type: object
description: A single step in a flow. Can be a script, subflow, loop, or branch
properties: *ref_64
required: *ref_65
schemas-ForloopFlow:
type: object
description: >-
Executes nested modules in a loop over an iterator. Inside the loop, use
'flow_input.iter.value' to access the current iteration value, and
'flow_input.iter.index' for the index. Supports parallel execution for
better performance on I/O-bound operations
properties: *ref_290
required: *ref_291
schemas-WhileloopFlow:
type: object
description: >-
Executes nested modules repeatedly while a condition is true. The loop
checks the condition after each iteration. Use stop_after_if on modules
to control loop termination
properties: *ref_292
required: *ref_293
schemas-BranchOne:
type: object
description: >-
Conditional branching where only the first matching branch executes.
Branches are evaluated in order, and the first one with a true
expression runs. If no branches match, the default branch executes
properties: *ref_294
required: *ref_295
schemas-BranchAll:
type: object
description: >-
Parallel branching where all branches execute simultaneously. Unlike
BranchOne, all branches run regardless of conditions. Useful for
executing independent tasks concurrently
properties: *ref_296
required: *ref_297
schemas-Identity:
type: object
description: >-
Pass-through module that returns its input unchanged. Useful for flow
structure or as a placeholder
properties: *ref_298
required: *ref_299
AIProviderKind:
type: string
description: Supported AI provider types
enum: *ref_277
schemas-ProviderConfig:
type: object
description: >-
Complete AI provider configuration with resource reference and model
selection
properties: *ref_513
required: *ref_514
StaticProviderTransform:
type: object
description: Static provider configuration passed directly to the AI agent
properties: *ref_515
required: *ref_516
ProviderTransform:
description: >-
Provider configuration - can be static (ProviderConfig), JavaScript
expression, or AI-determined
oneOf: *ref_302
discriminator: *ref_303
MemoryOff:
type: object
description: No conversation memory/context
properties: *ref_278
required: *ref_279
MemoryAuto:
type: object
description: Automatic context management
properties: *ref_280
required: *ref_281
MemoryMessage:
type: object
description: A single message in conversation history
properties: *ref_517
required: *ref_518
MemoryManual:
type: object
description: Explicit message history
properties: *ref_282
required: *ref_283
schemas-MemoryConfig:
description: Conversation memory configuration
oneOf: *ref_519
discriminator: *ref_520
StaticMemoryTransform:
type: object
description: Static memory configuration passed directly to the AI agent
properties: *ref_521
required: *ref_522
MemoryTransform:
description: >-
Memory configuration - can be static (MemoryConfig), JavaScript
expression, or AI-determined
oneOf: *ref_304
discriminator: *ref_305
schemas-FlowModuleValue:
description: >-
The actual implementation of a flow step. Can be a script (inline or
referenced), subflow, loop, branch, or special module type
oneOf: *ref_70
discriminator: *ref_71
FlowModuleTool:
description: >-
A tool implemented as a flow module (script, flow, etc.). The AI can
call this like any other flow module
allOf: *ref_523
McpToolValue:
type: object
description: >-
Reference to an external MCP (Model Context Protocol) tool. The AI can
call tools from MCP servers
properties: *ref_524
required: *ref_525
WebsearchToolValue:
type: object
description: >-
A tool implemented as a websearch tool. The AI can call this like any
other websearch tool
properties: *ref_526
required: *ref_527
ToolValue:
description: >-
The implementation of a tool. Can be a flow module (script/flow) or an
MCP tool reference
oneOf: *ref_528
discriminator: *ref_529
AgentTool:
type: object
description: >-
A tool available to an AI agent. Can be a flow module or an external MCP
(Model Context Protocol) tool
properties: *ref_306
required: *ref_307
schemas-AiAgent:
type: object
description: >-
AI agent step that can use tools to accomplish tasks. The agent receives
inputs and can call any of its configured tools to complete the task
properties: *ref_300
required: *ref_301
schemas-StopAfterIf:
type: object
description: Early termination condition for a module
properties: *ref_72
required: *ref_73
RetryIf:
type: object
description: Conditional retry based on error or result
properties: *ref_167
required: *ref_168
schemas-Retry:
type: object
description: Retry configuration for failed module executions
properties: *ref_276
schemas-FlowNote:
type: object
description: A sticky note attached to a flow for documentation and annotation
properties: *ref_120
required: *ref_121
schemas-FlowValue:
type: object
description: >-
The flow structure containing modules and optional preprocessor/failure
handlers
properties: *ref_530
required: *ref_531
schemas-FlowStatusModule:
type: object
properties: *ref_124
required: *ref_125