Files
windmill/backend/windmill-api/openapi-deref.yaml
hugocasa 164e499c64 feat: add variable and resource types to flow env variables (#8214)
* feat: add variable and resource types to flow env variables

Flow env variables can now reference workspace variables ($var:path)
and resources ($res:path) that are resolved at runtime. Adds Variable
and Resource type options to the flow env editor with ItemPicker and
ResourcePicker components, and resolves references in both the flow
worker (via transform_json) and the API fallback endpoint.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix(frontend): use inline DollarSign icon for variable picker

Replace the separate "Pick" button with the standard inline DollarSign
icon overlay that appears on hover, matching the existing ArgInput
pattern. Also add the icon to the string type input for quick variable
linking from any string field.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* refactor: simplify flow env var resolution and json_path handling in API

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* fix(frontend): always show flow env variables in property picker

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* fix: update flow_env openapi type to allow any JSON value

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* refactor(frontend): remove redundant variable type from env var dropdown

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* fix(frontend): use Label component and fix alert text in flow env vars editor

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* fix(frontend): avoid redundant stringify/parse roundtrip in env type switch

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* fix: address PR review comments for flow env vars

- Deduplicate db_authed in jobs.rs $var/$res resolution
- Add warn logging on variable/resource resolution failures
- Consolidate $effect blocks and remove auto-type-correction effect
- Make linked variable text a clickable link to variable editor
- Add hash-based variable editor opening on variables page

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* perf: avoid cloning entire FlowValue to resolve flow_env references

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 14:20:50 +00:00

30818 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. Values can be strings, JSON values, or special references: '$var:path' (workspace variable) or '$res:path' (resource)."
additionalProperties: {}
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. Values can be strings, JSON values, or special references: '$var:path' (workspace variable) or '$res:path' (resource)."
additionalProperties: {}
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
x-go-name: JobTriggerKindParam
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