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.' 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-' (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 auto_kind: type: string 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 - 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 auto_kind: type: string 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.' 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 auto_kind: type: string nullable: true has_preprocessor: type: boolean nullable: true required: - star_args - start_kwargs - args - type - error - auto_kind - has_preprocessor ScriptLang: type: string enum: *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