mirror of
https://github.com/windmill-labs/windmill.git
synced 2026-08-19 00:02:03 +00:00
b1a4c780dc
* feat: [ee] migrate slack OAuth to v2 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * fix: regenerate openapi-deref and make SlackToken.team optional Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * chore: update ee-repo-ref to a28f3509d0aa7c0e17fa6dcb1d03d935a7a2a11c This commit updates the EE repository reference after PR #540 was merged in windmill-ee-private. Previous ee-repo-ref: d149fa6fcb90c4833bbdbd876c0466b5a6196c1c New ee-repo-ref: a28f3509d0aa7c0e17fa6dcb1d03d935a7a2a11c Automated by sync-ee-ref workflow. --------- Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Co-authored-by: windmill-internal-app[bot] <windmill-internal-app[bot]@users.noreply.github.com>
44369 lines
1.2 MiB
Plaintext
44369 lines
1.2 MiB
Plaintext
{
|
|
"openapi": "3.0.3",
|
|
"info": {
|
|
"version": "1.685.0",
|
|
"title": "Windmill API",
|
|
"contact": {
|
|
"name": "Windmill Team",
|
|
"email": "contact@windmill.dev",
|
|
"url": "https://windmill.dev"
|
|
},
|
|
"license": {
|
|
"name": "Apache 2.0",
|
|
"url": "https://www.apache.org/licenses/LICENSE-2.0.html"
|
|
},
|
|
"x-logo": {
|
|
"url": "https://windmill.dev/img/windmill.svg"
|
|
}
|
|
},
|
|
"externalDocs": {
|
|
"description": "documentation portal",
|
|
"url": "https://windmill.dev"
|
|
},
|
|
"servers": [
|
|
{
|
|
"url": "/api"
|
|
}
|
|
],
|
|
"security": [
|
|
{
|
|
"bearerAuth": []
|
|
},
|
|
{
|
|
"cookieAuth": []
|
|
}
|
|
],
|
|
"paths": {
|
|
"/version": {
|
|
"get": {
|
|
"summary": "get backend version",
|
|
"operationId": "backendVersion",
|
|
"tags": [
|
|
"settings"
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "git version of backend",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/health/status": {
|
|
"get": {
|
|
"summary": "health status",
|
|
"description": "Health status endpoint. Returns cached health status (database connectivity, worker count).\nCache TTL is fixed at 5 seconds. Use force=true query parameter to bypass cache.\nNote: This endpoint is intentionally different from Kubernetes probes to avoid confusion.\nFor k8s liveness/readiness probes, use /version endpoint.\n",
|
|
"operationId": "getHealthStatus",
|
|
"tags": [
|
|
"health"
|
|
],
|
|
"security": [],
|
|
"parameters": [
|
|
{
|
|
"name": "force",
|
|
"in": "query",
|
|
"description": "Force a fresh check, bypassing the cache",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "boolean",
|
|
"default": false
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "server is healthy or degraded",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/HealthStatusResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"503": {
|
|
"description": "server is unhealthy (database unreachable)",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/HealthStatusResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/health/detailed": {
|
|
"get": {
|
|
"summary": "detailed health status",
|
|
"description": "Returns detailed health information including database pool stats, worker details, and queue status.\nRequires authentication. Use for monitoring dashboards and debugging.\nThis endpoint always returns fresh data (no caching).\n",
|
|
"operationId": "getHealthDetailed",
|
|
"tags": [
|
|
"health"
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "server is healthy or degraded",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/DetailedHealthResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"503": {
|
|
"description": "server is unhealthy (database unreachable)",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/DetailedHealthResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/uptodate": {
|
|
"get": {
|
|
"summary": "is backend up to date",
|
|
"operationId": "backendUptodate",
|
|
"tags": [
|
|
"settings"
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "is backend up to date",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/ee_license": {
|
|
"get": {
|
|
"summary": "get license id",
|
|
"operationId": "getLicenseId",
|
|
"tags": [
|
|
"settings"
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "get license id (empty if not ee)",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/inkeep": {
|
|
"post": {
|
|
"summary": "query Windmill AI documentation assistant (EE only)",
|
|
"operationId": "queryDocumentation",
|
|
"x-mcp-tool": true,
|
|
"tags": [
|
|
"documentation"
|
|
],
|
|
"requestBody": {
|
|
"description": "query to send to the AI documentation assistant",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"query": {
|
|
"type": "string",
|
|
"description": "The documentation query to send to the AI assistant"
|
|
}
|
|
},
|
|
"required": [
|
|
"query"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "AI documentation assistant response",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"description": "Response from Inkeep service"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"403": {
|
|
"description": "Enterprise Edition required",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/openapi.yaml": {
|
|
"get": {
|
|
"summary": "get openapi yaml spec",
|
|
"operationId": "getOpenApiYaml",
|
|
"tags": [
|
|
"settings"
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "openapi yaml file content",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/audit/get/{id}": {
|
|
"get": {
|
|
"summary": "get audit log (requires admin privilege)",
|
|
"operationId": "getAuditLog",
|
|
"tags": [
|
|
"audit"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/PathId"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "an audit log",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/AuditLog"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/audit/list": {
|
|
"get": {
|
|
"summary": "list audit logs (requires admin privilege)",
|
|
"operationId": "listAuditLogs",
|
|
"tags": [
|
|
"audit"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Page"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/PerPage"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Before"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/After"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Username"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Operation"
|
|
},
|
|
{
|
|
"name": "operations",
|
|
"in": "query",
|
|
"description": "comma separated list of exact operations to include",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "exclude_operations",
|
|
"in": "query",
|
|
"description": "comma separated list of operations to exclude",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ResourceName"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ActionKind"
|
|
},
|
|
{
|
|
"name": "all_workspaces",
|
|
"in": "query",
|
|
"description": "get audit logs for all workspaces",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "a list of audit logs",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/AuditLog"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/auth/login": {
|
|
"post": {
|
|
"security": [],
|
|
"summary": "login with password",
|
|
"operationId": "login",
|
|
"tags": [
|
|
"user"
|
|
],
|
|
"requestBody": {
|
|
"description": "credentials",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Login"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successfully authenticated. The session ID is returned in a cookie named `token` and as plaintext response. Preferred method of authorization is through the bearer token. The cookie is only for browser convenience.\n",
|
|
"headers": {
|
|
"Set-Cookie": {
|
|
"schema": {
|
|
"type": "string",
|
|
"example": "token=abcde12345; Path=/; HttpOnly"
|
|
}
|
|
}
|
|
},
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/auth/logout": {
|
|
"post": {
|
|
"security": [],
|
|
"summary": "logout",
|
|
"operationId": "logout",
|
|
"tags": [
|
|
"user"
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "clear cookies and clear token (if applicable)",
|
|
"headers": {
|
|
"Set-Cookie": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/auth/is_smtp_configured": {
|
|
"get": {
|
|
"security": [],
|
|
"summary": "check if SMTP is configured for password reset",
|
|
"operationId": "isSmtpConfigured",
|
|
"tags": [
|
|
"user"
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "returns true if SMTP is configured",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/auth/request_password_reset": {
|
|
"post": {
|
|
"security": [],
|
|
"summary": "request password reset email",
|
|
"operationId": "requestPasswordReset",
|
|
"tags": [
|
|
"user"
|
|
],
|
|
"requestBody": {
|
|
"description": "email to send password reset link to",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"required": [
|
|
"email"
|
|
],
|
|
"properties": {
|
|
"email": {
|
|
"type": "string",
|
|
"format": "email"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "password reset email sent (if user exists)",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PasswordResetResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "SMTP not configured"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/auth/reset_password": {
|
|
"post": {
|
|
"security": [],
|
|
"summary": "reset password using token",
|
|
"operationId": "resetPassword",
|
|
"tags": [
|
|
"user"
|
|
],
|
|
"requestBody": {
|
|
"description": "token and new password",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"required": [
|
|
"token",
|
|
"new_password"
|
|
],
|
|
"properties": {
|
|
"token": {
|
|
"type": "string"
|
|
},
|
|
"new_password": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "password reset successfully",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PasswordResetResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "invalid or expired token"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/users/get/{username}": {
|
|
"get": {
|
|
"summary": "get user (require admin privilege)",
|
|
"operationId": "getUser",
|
|
"tags": [
|
|
"user",
|
|
"admin"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "username",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "user created",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/User"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/users/update/{username}": {
|
|
"post": {
|
|
"summary": "update user (require admin privilege)",
|
|
"operationId": "updateUser",
|
|
"tags": [
|
|
"user",
|
|
"admin"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "username",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "new user",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/EditWorkspaceUser"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "edited user",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/users/is_owner/{path}": {
|
|
"get": {
|
|
"summary": "is owner of path",
|
|
"operationId": "isOwnerOfPath",
|
|
"tags": [
|
|
"user"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "is owner",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/users/setpassword": {
|
|
"post": {
|
|
"summary": "set password",
|
|
"operationId": "setPassword",
|
|
"tags": [
|
|
"user"
|
|
],
|
|
"requestBody": {
|
|
"description": "set password",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"password": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"password"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "password set",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/users/set_password_of/{user}": {
|
|
"post": {
|
|
"summary": "set password for a specific user (require super admin)",
|
|
"operationId": "setPasswordForUser",
|
|
"tags": [
|
|
"user"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "user",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "set password",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"password": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"password"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "password set",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/users/set_login_type/{user}": {
|
|
"post": {
|
|
"summary": "set login type for a specific user (require super admin)",
|
|
"operationId": "setLoginTypeForUser",
|
|
"tags": [
|
|
"user"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "user",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "set login type",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"login_type": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"login_type"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "login type set",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/users/create": {
|
|
"post": {
|
|
"summary": "create user",
|
|
"operationId": "createUserGlobally",
|
|
"tags": [
|
|
"user"
|
|
],
|
|
"requestBody": {
|
|
"description": "user info",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"email": {
|
|
"type": "string"
|
|
},
|
|
"password": {
|
|
"type": "string"
|
|
},
|
|
"super_admin": {
|
|
"type": "boolean"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"company": {
|
|
"type": "string"
|
|
},
|
|
"skip_email": {
|
|
"type": "boolean",
|
|
"description": "Skip sending email notifications to the user"
|
|
}
|
|
},
|
|
"required": [
|
|
"email",
|
|
"password",
|
|
"super_admin"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "user created",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/users/update/{email}": {
|
|
"post": {
|
|
"summary": "global update user (require super admin)",
|
|
"operationId": "globalUserUpdate",
|
|
"tags": [
|
|
"user"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "email",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "new user info",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"is_super_admin": {
|
|
"type": "boolean"
|
|
},
|
|
"is_devops": {
|
|
"type": "boolean"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"disabled": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "user updated",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/users/username_info/{email}": {
|
|
"get": {
|
|
"summary": "global username info (require super admin)",
|
|
"operationId": "globalUsernameInfo",
|
|
"tags": [
|
|
"user"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "email",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "user renamed",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"username": {
|
|
"type": "string"
|
|
},
|
|
"workspace_usernames": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"workspace_id": {
|
|
"type": "string"
|
|
},
|
|
"username": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"workspace_id",
|
|
"username"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"username",
|
|
"workspace_usernames"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/users/rename/{email}": {
|
|
"post": {
|
|
"summary": "global rename user (require super admin)",
|
|
"operationId": "globalUserRename",
|
|
"tags": [
|
|
"user"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "email",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "new username",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"new_username": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"new_username"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "user renamed",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/users/delete/{email}": {
|
|
"delete": {
|
|
"summary": "global delete user (require super admin)",
|
|
"operationId": "globalUserDelete",
|
|
"tags": [
|
|
"user"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "email",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "user deleted",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/users/overwrite": {
|
|
"post": {
|
|
"summary": "global overwrite users (require super admin and EE)",
|
|
"operationId": "globalUsersOverwrite",
|
|
"tags": [
|
|
"user"
|
|
],
|
|
"requestBody": {
|
|
"description": "List of users",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ExportedUser"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success message",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/users/export": {
|
|
"get": {
|
|
"summary": "global export users (require super admin and EE)",
|
|
"operationId": "globalUsersExport",
|
|
"tags": [
|
|
"user"
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "exported users",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ExportedUser"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/users/ext_jwt_tokens": {
|
|
"get": {
|
|
"summary": "list external JWT tokens (ee only)",
|
|
"operationId": "listExtJwtTokens",
|
|
"tags": [
|
|
"user"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "page",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "integer"
|
|
}
|
|
},
|
|
{
|
|
"name": "per_page",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "integer"
|
|
}
|
|
},
|
|
{
|
|
"name": "active_only",
|
|
"in": "query",
|
|
"description": "only tokens used in the last 30 days",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "list of external JWT tokens",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ExternalJwtToken"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/users/onboarding": {
|
|
"post": {
|
|
"summary": "Submit user onboarding data",
|
|
"operationId": "submitOnboardingData",
|
|
"tags": [
|
|
"user"
|
|
],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"touch_point": {
|
|
"type": "string"
|
|
},
|
|
"use_case": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Onboarding data submitted successfully",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/users/delete/{username}": {
|
|
"delete": {
|
|
"summary": "delete user (require admin privilege)",
|
|
"operationId": "deleteUser",
|
|
"tags": [
|
|
"user",
|
|
"admin"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "username",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "delete user",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/users/offboard_preview/{username}": {
|
|
"get": {
|
|
"summary": "preview offboarding for a workspace user (require admin privilege)",
|
|
"operationId": "offboardPreview",
|
|
"tags": [
|
|
"user",
|
|
"admin"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "username",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "offboard preview with object counts",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/OffboardPreview"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/users/offboard/{username}": {
|
|
"post": {
|
|
"summary": "offboard a workspace user (reassign objects, optionally delete user)",
|
|
"operationId": "offboardWorkspaceUser",
|
|
"tags": [
|
|
"user",
|
|
"admin"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "username",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/OffboardRequest"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "offboard response with conflicts or summary",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/OffboardResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/users/offboard_preview/{email}": {
|
|
"get": {
|
|
"summary": "preview global offboarding for a user across all workspaces (require super admin)",
|
|
"operationId": "globalOffboardPreview",
|
|
"tags": [
|
|
"user"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "email",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "per-workspace offboard previews",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/GlobalOffboardPreview"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/users/offboard/{email}": {
|
|
"post": {
|
|
"summary": "offboard a user globally (reassign objects across workspaces, optionally delete)",
|
|
"operationId": "offboardGlobalUser",
|
|
"tags": [
|
|
"user"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "email",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/GlobalOffboardRequest"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "offboard result",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/OffboardResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/users/convert_to_group/{username}": {
|
|
"post": {
|
|
"summary": "convert manual user to group user (require admin privilege)",
|
|
"operationId": "convertUserToGroup",
|
|
"tags": [
|
|
"user",
|
|
"admin"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "username",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "convert user to group user",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/github_app/connected_repositories": {
|
|
"get": {
|
|
"summary": "get connected repositories",
|
|
"operationId": "getGlobalConnectedRepositories",
|
|
"tags": [
|
|
"Git Sync"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "page",
|
|
"in": "query",
|
|
"description": "Page number for pagination (default 1)",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "integer",
|
|
"default": 1
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "connected repositories",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/GithubInstallations"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/workspaces/list": {
|
|
"get": {
|
|
"summary": "list all workspaces visible to me",
|
|
"operationId": "listWorkspaces",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "all workspaces",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/Workspace"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/workspaces/allowed_domain_auto_invite": {
|
|
"get": {
|
|
"summary": "is domain allowed for auto invi",
|
|
"operationId": "isDomainAllowed",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "domain allowed or not",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/workspaces/users": {
|
|
"get": {
|
|
"summary": "list all workspaces visible to me with user info",
|
|
"operationId": "listUserWorkspaces",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "workspace with associated username",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UserWorkspaceList"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/workspaces/get_as_superadmin": {
|
|
"get": {
|
|
"summary": "get workspace as super admin (require to be super admin)",
|
|
"operationId": "getWorkspaceAsSuperAdmin",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "workspace",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Workspace"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/workspaces/list_as_superadmin": {
|
|
"get": {
|
|
"summary": "list all workspaces as super admin (require to be super admin)",
|
|
"operationId": "listWorkspacesAsSuperAdmin",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/Page"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/PerPage"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "workspaces",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/Workspace"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/workspaces/create": {
|
|
"post": {
|
|
"summary": "create workspace",
|
|
"operationId": "createWorkspace",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"requestBody": {
|
|
"description": "new token",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateWorkspace"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "token created",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/workspaces/create_workspace_fork_branch": {
|
|
"post": {
|
|
"summary": "create forked workspace branch with git sync",
|
|
"operationId": "createWorkspaceForkGitBranch",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "new forked workspace",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateWorkspaceFork"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "forked workspace branch created",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/workspaces/create_fork": {
|
|
"post": {
|
|
"summary": "create forked workspace",
|
|
"operationId": "createWorkspaceFork",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "new forked workspace",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateWorkspaceFork"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "forked workspace created",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/workspaces/exists": {
|
|
"post": {
|
|
"summary": "exists workspace",
|
|
"operationId": "existsWorkspace",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"requestBody": {
|
|
"description": "id of workspace",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"id"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "status",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/workspaces/exists_username": {
|
|
"post": {
|
|
"summary": "exists username",
|
|
"operationId": "existsUsername",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"username": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"id",
|
|
"username"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "status",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/settings/refresh_custom_instance_user_pwd": {
|
|
"post": {
|
|
"summary": "Refreshes the password for the custom_instance_user",
|
|
"operationId": "refreshCustomInstanceUserPwd",
|
|
"tags": [
|
|
"setting"
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/settings/list_custom_instance_pg_databases": {
|
|
"post": {
|
|
"summary": "Returns the set-up statuses of custom instance pg databases",
|
|
"operationId": "listCustomInstanceDbs",
|
|
"tags": [
|
|
"setting"
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Statuses of all custom instance dbs",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"$ref": "#/components/schemas/CustomInstanceDb"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/settings/setup_custom_instance_pg_database/{name}": {
|
|
"post": {
|
|
"summary": "Runs CREATE DATABASE on the Windmill Postgres and grants access to the custom_instance_user",
|
|
"operationId": "setupCustomInstanceDb",
|
|
"tags": [
|
|
"setting"
|
|
],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"tag": {
|
|
"$ref": "#/components/schemas/CustomInstanceDbTag"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"parameters": [
|
|
{
|
|
"in": "path",
|
|
"name": "name",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
},
|
|
"description": "The name of the database to create"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "status",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CustomInstanceDb"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/settings/drop_custom_instance_pg_database/{name}": {
|
|
"post": {
|
|
"summary": "Drops a custom instance database (superadmin only, irreversible)",
|
|
"operationId": "dropCustomInstanceDb",
|
|
"tags": [
|
|
"setting"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"in": "path",
|
|
"name": "name",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
},
|
|
"description": "The name of the database to drop"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "status",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/settings/global/{key}": {
|
|
"get": {
|
|
"summary": "get global settings",
|
|
"operationId": "getGlobal",
|
|
"tags": [
|
|
"setting"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/Key"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "status",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"post": {
|
|
"summary": "post global settings",
|
|
"operationId": "setGlobal",
|
|
"tags": [
|
|
"setting"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/Key"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "value set",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"value": {}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "status",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/settings_u/ruff_config": {
|
|
"get": {
|
|
"summary": "get instance ruff config (unauthenticated)",
|
|
"description": "Returns the instance-level ruff.toml content as plain text.\nIntentionally unauthenticated so the LSP extra container can poll it\nacross any deployment topology. Responds with an empty body when the\ninstance config is unset. Ruff configuration is lint/format policy,\nnot a credential.\n",
|
|
"operationId": "getRuffConfig",
|
|
"tags": [
|
|
"setting"
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "ruff.toml content (may be empty)",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/settings/local": {
|
|
"get": {
|
|
"summary": "get local settings",
|
|
"operationId": "getLocal",
|
|
"tags": [
|
|
"setting"
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "status",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/settings/test_smtp": {
|
|
"post": {
|
|
"summary": "test smtp",
|
|
"operationId": "testSmtp",
|
|
"tags": [
|
|
"setting"
|
|
],
|
|
"requestBody": {
|
|
"description": "test smtp payload",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"to": {
|
|
"type": "string"
|
|
},
|
|
"smtp": {
|
|
"type": "object",
|
|
"properties": {
|
|
"host": {
|
|
"type": "string"
|
|
},
|
|
"username": {
|
|
"type": "string"
|
|
},
|
|
"password": {
|
|
"type": "string"
|
|
},
|
|
"port": {
|
|
"type": "integer"
|
|
},
|
|
"from": {
|
|
"type": "string"
|
|
},
|
|
"tls_implicit": {
|
|
"type": "boolean"
|
|
},
|
|
"disable_tls": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"required": [
|
|
"host",
|
|
"username",
|
|
"password",
|
|
"port",
|
|
"from",
|
|
"tls_implicit",
|
|
"disable_tls"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"to",
|
|
"smtp"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "status",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/settings/test_critical_channels": {
|
|
"post": {
|
|
"summary": "test critical channels",
|
|
"operationId": "testCriticalChannels",
|
|
"tags": [
|
|
"setting"
|
|
],
|
|
"requestBody": {
|
|
"description": "test critical channel payload",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"email": {
|
|
"type": "string"
|
|
},
|
|
"slack_channel": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "status",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/settings/critical_alerts": {
|
|
"get": {
|
|
"summary": "Get all critical alerts",
|
|
"operationId": "getCriticalAlerts",
|
|
"tags": [
|
|
"setting"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"in": "query",
|
|
"name": "page",
|
|
"schema": {
|
|
"type": "integer",
|
|
"default": 1,
|
|
"description": "The page number to retrieve (minimum value is 1)"
|
|
}
|
|
},
|
|
{
|
|
"in": "query",
|
|
"name": "page_size",
|
|
"schema": {
|
|
"type": "integer",
|
|
"default": 10,
|
|
"maximum": 100,
|
|
"description": "Number of alerts per page (maximum is 100)"
|
|
}
|
|
},
|
|
{
|
|
"in": "query",
|
|
"name": "acknowledged",
|
|
"schema": {
|
|
"type": "boolean",
|
|
"nullable": true,
|
|
"description": "Filter by acknowledgment status; true for acknowledged, false for unacknowledged, and omit for all alerts"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successfully retrieved all critical alerts",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"alerts": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/CriticalAlert"
|
|
}
|
|
},
|
|
"total_rows": {
|
|
"type": "integer",
|
|
"description": "Total number of rows matching the query.",
|
|
"example": 100
|
|
},
|
|
"total_pages": {
|
|
"type": "integer",
|
|
"description": "Total number of pages based on the page size.",
|
|
"example": 10
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/settings/critical_alerts/{id}/acknowledge": {
|
|
"post": {
|
|
"summary": "Acknowledge a critical alert",
|
|
"operationId": "acknowledgeCriticalAlert",
|
|
"tags": [
|
|
"setting"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"in": "path",
|
|
"name": "id",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer"
|
|
},
|
|
"description": "The ID of the critical alert to acknowledge"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successfully acknowledged the critical alert",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "string",
|
|
"example": "Critical alert acknowledged"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/settings/critical_alerts/acknowledge_all": {
|
|
"post": {
|
|
"summary": "Acknowledge all unacknowledged critical alerts",
|
|
"operationId": "acknowledgeAllCriticalAlerts",
|
|
"tags": [
|
|
"setting"
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successfully acknowledged all unacknowledged critical alerts.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "string",
|
|
"example": "All unacknowledged critical alerts acknowledged"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/settings/test_license_key": {
|
|
"post": {
|
|
"summary": "test license key",
|
|
"operationId": "testLicenseKey",
|
|
"tags": [
|
|
"setting"
|
|
],
|
|
"requestBody": {
|
|
"description": "test license key",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"license_key": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"license_key"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "status",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/settings/test_object_storage_config": {
|
|
"post": {
|
|
"summary": "test object storage config",
|
|
"operationId": "testObjectStorageConfig",
|
|
"tags": [
|
|
"setting"
|
|
],
|
|
"requestBody": {
|
|
"description": "test object storage config",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"additionalProperties": true
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "status",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/settings/object_storage_usage": {
|
|
"get": {
|
|
"summary": "get current or last object storage usage computation (null if never run)",
|
|
"operationId": "getObjectStorageUsage",
|
|
"tags": [
|
|
"setting"
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "current or last storage-usage computation state",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"nullable": true,
|
|
"type": "object",
|
|
"properties": {
|
|
"running": {
|
|
"type": "boolean"
|
|
},
|
|
"started_at": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"finished_at": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"nullable": true
|
|
},
|
|
"current_prefix": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"scanned_objects": {
|
|
"type": "integer",
|
|
"format": "int64"
|
|
},
|
|
"folders": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"prefix": {
|
|
"type": "string"
|
|
},
|
|
"size": {
|
|
"type": "integer",
|
|
"format": "int64"
|
|
},
|
|
"partial": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"required": [
|
|
"prefix",
|
|
"size"
|
|
]
|
|
}
|
|
},
|
|
"error": {
|
|
"type": "string",
|
|
"nullable": true
|
|
}
|
|
},
|
|
"required": [
|
|
"running",
|
|
"started_at",
|
|
"scanned_objects",
|
|
"folders"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"post": {
|
|
"summary": "start a background computation of object storage usage by top-level folder",
|
|
"operationId": "computeObjectStorageUsage",
|
|
"tags": [
|
|
"setting"
|
|
],
|
|
"responses": {
|
|
"202": {
|
|
"description": "computation started",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/settings/run_log_cleanup": {
|
|
"post": {
|
|
"summary": "start a manual cleanup of expired logs from object storage",
|
|
"operationId": "runLogCleanup",
|
|
"tags": [
|
|
"setting"
|
|
],
|
|
"responses": {
|
|
"202": {
|
|
"description": "cleanup started",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/settings/log_cleanup_status": {
|
|
"get": {
|
|
"summary": "get status of the manual log cleanup task",
|
|
"operationId": "getLogCleanupStatus",
|
|
"tags": [
|
|
"setting"
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "current or last log cleanup status (null if never run)",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"nullable": true,
|
|
"type": "object",
|
|
"properties": {
|
|
"running": {
|
|
"type": "boolean"
|
|
},
|
|
"started_at": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"finished_at": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"nullable": true
|
|
},
|
|
"phase": {
|
|
"type": "string"
|
|
},
|
|
"total_service": {
|
|
"type": "integer",
|
|
"format": "int64"
|
|
},
|
|
"processed_service": {
|
|
"type": "integer",
|
|
"format": "int64"
|
|
},
|
|
"total_jobs": {
|
|
"type": "integer",
|
|
"format": "int64"
|
|
},
|
|
"processed_jobs": {
|
|
"type": "integer",
|
|
"format": "int64"
|
|
},
|
|
"s3_deleted": {
|
|
"type": "integer",
|
|
"format": "int64"
|
|
},
|
|
"orphans_scanned": {
|
|
"type": "integer",
|
|
"format": "int64"
|
|
},
|
|
"orphans_deleted": {
|
|
"type": "integer",
|
|
"format": "int64"
|
|
},
|
|
"errors": {
|
|
"type": "integer",
|
|
"format": "int64"
|
|
},
|
|
"last_error": {
|
|
"type": "string",
|
|
"nullable": true
|
|
}
|
|
},
|
|
"required": [
|
|
"running",
|
|
"started_at",
|
|
"phase",
|
|
"total_service",
|
|
"processed_service",
|
|
"total_jobs",
|
|
"processed_jobs",
|
|
"s3_deleted",
|
|
"orphans_scanned",
|
|
"orphans_deleted",
|
|
"errors"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/settings/send_stats": {
|
|
"post": {
|
|
"summary": "send stats",
|
|
"operationId": "sendStats",
|
|
"tags": [
|
|
"setting"
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "status",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/settings/restart_worker_group/{worker_group}": {
|
|
"post": {
|
|
"summary": "restart worker group",
|
|
"description": "Send a restart signal to all workers in the specified worker group. Workers will gracefully shut down and are expected to be restarted by their supervisor. Requires devops role.",
|
|
"operationId": "restartWorkerGroup",
|
|
"tags": [
|
|
"setting"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "worker_group",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
},
|
|
"description": "the name of the worker group to restart"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "restart signal sent",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/settings/get_stats": {
|
|
"get": {
|
|
"summary": "get telemetry stats with HMAC signature (EE only)",
|
|
"operationId": "getStats",
|
|
"tags": [
|
|
"setting"
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "telemetry stats JSON with signature",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"signature": {
|
|
"type": "string"
|
|
},
|
|
"data": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/settings/latest_key_renewal_attempt": {
|
|
"get": {
|
|
"summary": "get latest key renewal attempt",
|
|
"operationId": "getLatestKeyRenewalAttempt",
|
|
"tags": [
|
|
"setting"
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "status",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"result": {
|
|
"type": "string"
|
|
},
|
|
"attempted_at": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
}
|
|
},
|
|
"required": [
|
|
"result",
|
|
"attempted_at"
|
|
],
|
|
"nullable": true
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/settings/renew_license_key": {
|
|
"post": {
|
|
"summary": "renew license key",
|
|
"operationId": "renewLicenseKey",
|
|
"tags": [
|
|
"setting"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "license_key",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "status",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/settings/customer_portal": {
|
|
"post": {
|
|
"summary": "create customer portal session",
|
|
"operationId": "createCustomerPortalSession",
|
|
"tags": [
|
|
"setting"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "license_key",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "url to portal",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/saml/test_metadata": {
|
|
"post": {
|
|
"summary": "test metadata",
|
|
"operationId": "testMetadata",
|
|
"tags": [
|
|
"setting"
|
|
],
|
|
"requestBody": {
|
|
"description": "test metadata",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "status",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/settings/list_global": {
|
|
"get": {
|
|
"summary": "list global settings",
|
|
"operationId": "listGlobalSettings",
|
|
"tags": [
|
|
"setting"
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "list of settings",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/GlobalSetting"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/settings/instance_config": {
|
|
"get": {
|
|
"summary": "get full instance config (global settings + worker configs)",
|
|
"operationId": "getInstanceConfig",
|
|
"tags": [
|
|
"setting"
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "full instance configuration",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/InstanceConfig"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"put": {
|
|
"summary": "update instance config (bulk upsert, no deletes). Empty or missing global_settings/worker_configs are skipped.",
|
|
"operationId": "setInstanceConfig",
|
|
"tags": [
|
|
"setting"
|
|
],
|
|
"requestBody": {
|
|
"description": "full instance configuration to apply",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/InstanceConfig"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "instance config updated",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/min_keep_alive_version": {
|
|
"get": {
|
|
"summary": "get minimum worker versions required to stay alive",
|
|
"operationId": "getMinKeepAliveVersion",
|
|
"tags": [
|
|
"setting"
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "minimum keep-alive versions for workers and agents",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"required": [
|
|
"worker",
|
|
"agent"
|
|
],
|
|
"properties": {
|
|
"worker": {
|
|
"type": "string",
|
|
"description": "minimum version for normal workers"
|
|
},
|
|
"agent": {
|
|
"type": "string",
|
|
"description": "minimum version for agent workers"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/.well-known/jwks.json": {
|
|
"get": {
|
|
"summary": "get JWKS for Vault JWT authentication",
|
|
"operationId": "getJwks",
|
|
"tags": [
|
|
"setting"
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "JSON Web Key Set",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/JwksResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/settings/test_secret_backend": {
|
|
"post": {
|
|
"summary": "test secret backend connection (HashiCorp Vault)",
|
|
"operationId": "testSecretBackend",
|
|
"tags": [
|
|
"setting"
|
|
],
|
|
"requestBody": {
|
|
"description": "Vault settings to test",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/VaultSettings"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "connection successful",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/settings/migrate_secrets_to_vault": {
|
|
"post": {
|
|
"summary": "migrate secrets from database to HashiCorp Vault",
|
|
"operationId": "migrateSecretsToVault",
|
|
"tags": [
|
|
"setting"
|
|
],
|
|
"requestBody": {
|
|
"description": "Vault settings for migration target",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/VaultSettings"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "migration report",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SecretMigrationReport"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/settings/migrate_secrets_to_database": {
|
|
"post": {
|
|
"summary": "migrate secrets from HashiCorp Vault to database",
|
|
"operationId": "migrateSecretsToDatabase",
|
|
"tags": [
|
|
"setting"
|
|
],
|
|
"requestBody": {
|
|
"description": "Vault settings for migration source",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/VaultSettings"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "migration report",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SecretMigrationReport"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/settings/test_azure_kv_backend": {
|
|
"post": {
|
|
"summary": "test Azure Key Vault connection",
|
|
"operationId": "testAzureKvBackend",
|
|
"tags": [
|
|
"setting"
|
|
],
|
|
"requestBody": {
|
|
"description": "Azure Key Vault settings to test",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/AzureKeyVaultSettings"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "connection successful",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/settings/migrate_secrets_to_azure_kv": {
|
|
"post": {
|
|
"summary": "migrate secrets from database to Azure Key Vault",
|
|
"operationId": "migrateSecretsToAzureKv",
|
|
"tags": [
|
|
"setting"
|
|
],
|
|
"requestBody": {
|
|
"description": "Azure Key Vault settings for migration target",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/AzureKeyVaultSettings"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "migration report",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SecretMigrationReport"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/settings/migrate_secrets_from_azure_kv": {
|
|
"post": {
|
|
"summary": "migrate secrets from Azure Key Vault to database",
|
|
"operationId": "migrateSecretsFromAzureKv",
|
|
"tags": [
|
|
"setting"
|
|
],
|
|
"requestBody": {
|
|
"description": "Azure Key Vault settings for migration source",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/AzureKeyVaultSettings"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "migration report",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SecretMigrationReport"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/settings/test_aws_sm_backend": {
|
|
"post": {
|
|
"summary": "test connection to AWS Secrets Manager",
|
|
"operationId": "testAwsSmBackend",
|
|
"tags": [
|
|
"setting"
|
|
],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/AwsSecretsManagerSettings"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "connection test result",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/settings/migrate_secrets_to_aws_sm": {
|
|
"post": {
|
|
"summary": "migrate secrets from database to AWS Secrets Manager",
|
|
"operationId": "migrateSecretsToAwsSm",
|
|
"tags": [
|
|
"setting"
|
|
],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/AwsSecretsManagerSettings"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "migration report",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SecretMigrationReport"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/settings/migrate_secrets_from_aws_sm": {
|
|
"post": {
|
|
"summary": "migrate secrets from AWS Secrets Manager to database",
|
|
"operationId": "migrateSecretsFromAwsSm",
|
|
"tags": [
|
|
"setting"
|
|
],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/AwsSecretsManagerSettings"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "migration report",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SecretMigrationReport"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/users/email": {
|
|
"get": {
|
|
"summary": "get current user email (if logged in)",
|
|
"operationId": "getCurrentEmail",
|
|
"tags": [
|
|
"user"
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "user email",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/users/refresh_token": {
|
|
"get": {
|
|
"summary": "refresh the current token",
|
|
"operationId": "refreshUserToken",
|
|
"tags": [
|
|
"user"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "if_expiring_in_less_than_s",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "integer"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "new token",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/users/tutorial_progress": {
|
|
"get": {
|
|
"summary": "get tutorial progress",
|
|
"operationId": "getTutorialProgress",
|
|
"tags": [
|
|
"user"
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "tutorial progress",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"progress": {
|
|
"type": "integer"
|
|
},
|
|
"skipped_all": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"post": {
|
|
"summary": "update tutorial progress",
|
|
"operationId": "updateTutorialProgress",
|
|
"tags": [
|
|
"user"
|
|
],
|
|
"requestBody": {
|
|
"description": "progress update",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"progress": {
|
|
"type": "integer"
|
|
},
|
|
"skipped_all": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "tutorial progress",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/users/leave_instance": {
|
|
"post": {
|
|
"summary": "leave instance",
|
|
"operationId": "leaveInstance",
|
|
"tags": [
|
|
"user"
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "status",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/users/usage": {
|
|
"get": {
|
|
"summary": "get current usage outside of premium workspaces",
|
|
"operationId": "getUsage",
|
|
"tags": [
|
|
"user"
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "free usage",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/users/all_runnables": {
|
|
"get": {
|
|
"summary": "get all runnables in every workspace",
|
|
"operationId": "getRunnable",
|
|
"tags": [
|
|
"user"
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "free all runnables",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"workspace": {
|
|
"type": "string"
|
|
},
|
|
"endpoint_async": {
|
|
"type": "string"
|
|
},
|
|
"endpoint_sync": {
|
|
"type": "string"
|
|
},
|
|
"summary": {
|
|
"type": "string"
|
|
},
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"kind": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"workspace",
|
|
"endpoint_async",
|
|
"endpoint_sync",
|
|
"summary",
|
|
"kind"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/users/whoami": {
|
|
"get": {
|
|
"summary": "get current global whoami (if logged in)",
|
|
"operationId": "globalWhoami",
|
|
"tags": [
|
|
"user"
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "user email",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/GlobalUserInfo"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/users/list_invites": {
|
|
"get": {
|
|
"summary": "list all workspace invites",
|
|
"operationId": "listWorkspaceInvites",
|
|
"tags": [
|
|
"user"
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "list all workspace invites",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/WorkspaceInvite"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/users/whoami": {
|
|
"get": {
|
|
"summary": "whoami",
|
|
"operationId": "whoami",
|
|
"tags": [
|
|
"user"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "user",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/User"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/github_app/token": {
|
|
"post": {
|
|
"summary": "get github app token",
|
|
"operationId": "getGithubAppToken",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "jwt job token",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"job_token": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"job_token"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "github app token",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"token": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"token"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/github_app/install_from_workspace": {
|
|
"post": {
|
|
"tags": [
|
|
"Git Sync"
|
|
],
|
|
"summary": "Install a GitHub installation from another workspace",
|
|
"operationId": "installFromWorkspace",
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"source_workspace_id": {
|
|
"type": "string",
|
|
"description": "The ID of the workspace containing the installation to copy"
|
|
},
|
|
"installation_id": {
|
|
"type": "number",
|
|
"description": "The ID of the GitHub installation to copy"
|
|
}
|
|
},
|
|
"required": [
|
|
"source_workspace_id",
|
|
"installation_id"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Installation successfully copied"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/github_app/installation/{installation_id}": {
|
|
"delete": {
|
|
"summary": "Delete a GitHub installation from a workspace",
|
|
"operationId": "deleteFromWorkspace",
|
|
"description": "Removes a GitHub installation from the specified workspace. Requires admin privileges.",
|
|
"tags": [
|
|
"Git Sync"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "installation_id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int64"
|
|
},
|
|
"description": "The ID of the GitHub installation to delete"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Installation successfully deleted"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/github_app/export/{installationId}": {
|
|
"get": {
|
|
"summary": "Export GitHub installation JWT token",
|
|
"description": "Exports the JWT token for a specific GitHub installation in the workspace",
|
|
"operationId": "exportInstallation",
|
|
"tags": [
|
|
"Git Sync"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "workspace",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "installationId",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successfully exported the JWT token",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"jwt_token": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/github_app/import": {
|
|
"post": {
|
|
"summary": "Import GitHub installation from JWT token",
|
|
"description": "Imports a GitHub installation from a JWT token exported from another instance",
|
|
"operationId": "importInstallation",
|
|
"tags": [
|
|
"Git Sync"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "workspace",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"required": [
|
|
"jwt_token"
|
|
],
|
|
"properties": {
|
|
"jwt_token": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successfully imported the installation"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/github_app/ghes_installation_callback": {
|
|
"post": {
|
|
"summary": "GHES installation callback",
|
|
"description": "Register a self-managed GitHub App installation from GitHub Enterprise Server",
|
|
"operationId": "ghesInstallationCallback",
|
|
"tags": [
|
|
"Git Sync"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"required": [
|
|
"installation_id"
|
|
],
|
|
"properties": {
|
|
"installation_id": {
|
|
"type": "integer",
|
|
"format": "int64",
|
|
"description": "The GitHub App installation ID from GHES"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "GHES installation registered successfully"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/github_app/ghes_config": {
|
|
"get": {
|
|
"summary": "Get GHES app config",
|
|
"description": "Returns the GitHub Enterprise Server app configuration (without private key) for constructing the installation URL",
|
|
"operationId": "getGhesConfig",
|
|
"tags": [
|
|
"Git Sync"
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "GHES app configuration",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"base_url": {
|
|
"type": "string"
|
|
},
|
|
"app_slug": {
|
|
"type": "string"
|
|
},
|
|
"client_id": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"base_url",
|
|
"app_slug",
|
|
"client_id"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/users/accept_invite": {
|
|
"post": {
|
|
"summary": "accept invite to workspace",
|
|
"operationId": "acceptInvite",
|
|
"tags": [
|
|
"user"
|
|
],
|
|
"requestBody": {
|
|
"description": "accept invite",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"workspace_id": {
|
|
"type": "string"
|
|
},
|
|
"username": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"workspace_id"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "status",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/users/decline_invite": {
|
|
"post": {
|
|
"summary": "decline invite to workspace",
|
|
"operationId": "declineInvite",
|
|
"tags": [
|
|
"user"
|
|
],
|
|
"requestBody": {
|
|
"description": "decline invite",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"workspace_id": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"workspace_id"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "status",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/workspaces/invite_user": {
|
|
"post": {
|
|
"summary": "invite user to workspace",
|
|
"operationId": "inviteUser",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "WorkspaceInvite",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"email": {
|
|
"type": "string"
|
|
},
|
|
"is_admin": {
|
|
"type": "boolean"
|
|
},
|
|
"operator": {
|
|
"type": "boolean"
|
|
},
|
|
"parent_workspace_id": {
|
|
"type": "string",
|
|
"nullable": true
|
|
}
|
|
},
|
|
"required": [
|
|
"email",
|
|
"is_admin",
|
|
"operator"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "status",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/workspaces/add_user": {
|
|
"post": {
|
|
"summary": "add user to workspace",
|
|
"operationId": "addUser",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "WorkspaceInvite",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"email": {
|
|
"type": "string"
|
|
},
|
|
"is_admin": {
|
|
"type": "boolean"
|
|
},
|
|
"username": {
|
|
"type": "string"
|
|
},
|
|
"operator": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"required": [
|
|
"email",
|
|
"is_admin",
|
|
"operator"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "status",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/workspaces/create_service_account": {
|
|
"post": {
|
|
"summary": "create a service account",
|
|
"operationId": "createServiceAccount",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"username": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"username"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "service account created",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/users/impersonate_service_account": {
|
|
"post": {
|
|
"summary": "impersonate a service account",
|
|
"operationId": "impersonateServiceAccount",
|
|
"tags": [
|
|
"user"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"username": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"username"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "impersonation token",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/users/exit_impersonation": {
|
|
"post": {
|
|
"summary": "exit service account impersonation",
|
|
"operationId": "exitImpersonation",
|
|
"tags": [
|
|
"user"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"token": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"token"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "exited impersonation",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/workspaces/delete_invite": {
|
|
"post": {
|
|
"summary": "delete user invite",
|
|
"operationId": "delete invite",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "WorkspaceInvite",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"email": {
|
|
"type": "string"
|
|
},
|
|
"is_admin": {
|
|
"type": "boolean"
|
|
},
|
|
"operator": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"required": [
|
|
"email",
|
|
"is_admin",
|
|
"operator"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "status",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/workspaces/archive": {
|
|
"post": {
|
|
"summary": "archive workspace",
|
|
"operationId": "archiveWorkspace",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "status",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/workspaces/unarchive/{workspace}": {
|
|
"post": {
|
|
"summary": "unarchive workspace",
|
|
"operationId": "unarchiveWorkspace",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "status",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/workspaces/delete/{workspace}": {
|
|
"delete": {
|
|
"summary": "delete workspace (require super admin)",
|
|
"operationId": "deleteWorkspace",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "only_delete_forks",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "status",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/workspaces/leave": {
|
|
"post": {
|
|
"summary": "leave workspace",
|
|
"operationId": "leaveWorkspace",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "status",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/workspaces/get_workspace_name": {
|
|
"get": {
|
|
"summary": "get workspace name",
|
|
"operationId": "getWorkspaceName",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "status",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/workspaces/change_workspace_name": {
|
|
"post": {
|
|
"summary": "change workspace name",
|
|
"operationId": "changeWorkspaceName",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"new_name": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"username"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "status",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/workspaces/change_workspace_id": {
|
|
"post": {
|
|
"summary": "change workspace id",
|
|
"operationId": "changeWorkspaceId",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"new_id": {
|
|
"type": "string"
|
|
},
|
|
"new_name": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"username"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "status",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/workspaces/change_workspace_color": {
|
|
"post": {
|
|
"summary": "change workspace id",
|
|
"operationId": "changeWorkspaceColor",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"color": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "status",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/users/whois/{username}": {
|
|
"get": {
|
|
"summary": "whois",
|
|
"operationId": "whois",
|
|
"tags": [
|
|
"user"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "username",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "user",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/User"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/workspaces/operator_settings": {
|
|
"post": {
|
|
"operationId": "updateOperatorSettings",
|
|
"summary": "Update operator settings for a workspace",
|
|
"description": "Updates the operator settings for a specific workspace. Requires workspace admin privileges.",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/OperatorSettings"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Operator settings updated successfully",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/workspaces/compare/{target_workspace_id}": {
|
|
"get": {
|
|
"operationId": "compareWorkspaces",
|
|
"summary": "Compare two workspaces",
|
|
"description": "Compares the current workspace with a target workspace to find differences in scripts, flows, apps, resources, and variables. Returns information about items that are ahead, behind, or in conflict.",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "target_workspace_id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
},
|
|
"description": "The ID of the workspace to compare with"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Workspace comparison results",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/WorkspaceComparison"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/workspaces/reset_diff_tally/{fork_workspace_id}": {
|
|
"post": {
|
|
"operationId": "resetDiffTally",
|
|
"summary": "Resets the ahead and behind deployement counter after a deployement",
|
|
"description": "This endpoint should be called after a fork deployement",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "fork_workspace_id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
},
|
|
"description": "The ID of the workspace to compare with"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "status",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/users/exists/{email}": {
|
|
"get": {
|
|
"summary": "exists email",
|
|
"operationId": "existsEmail",
|
|
"tags": [
|
|
"user"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "email",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "user",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/users/list_as_super_admin": {
|
|
"get": {
|
|
"summary": "list all users as super admin (require to be super amdin)",
|
|
"operationId": "listUsersAsSuperAdmin",
|
|
"tags": [
|
|
"user"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/Page"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/PerPage"
|
|
},
|
|
{
|
|
"name": "active_only",
|
|
"in": "query",
|
|
"description": "filter only active users",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "user",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/GlobalUserInfo"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/workspaces/list_pending_invites": {
|
|
"get": {
|
|
"summary": "list pending invites for a workspace",
|
|
"operationId": "listPendingInvites",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "user",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/WorkspaceInvite"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/workspaces/get_settings": {
|
|
"get": {
|
|
"summary": "get settings",
|
|
"operationId": "getSettings",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "status",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"workspace_id": {
|
|
"type": "string"
|
|
},
|
|
"slack_name": {
|
|
"type": "string"
|
|
},
|
|
"slack_team_id": {
|
|
"type": "string"
|
|
},
|
|
"slack_command_script": {
|
|
"type": "string"
|
|
},
|
|
"slack_oauth_client_id": {
|
|
"type": "string"
|
|
},
|
|
"slack_oauth_client_secret": {
|
|
"type": "string"
|
|
},
|
|
"teams_team_id": {
|
|
"type": "string"
|
|
},
|
|
"teams_command_script": {
|
|
"type": "string"
|
|
},
|
|
"teams_team_name": {
|
|
"type": "string"
|
|
},
|
|
"teams_team_guid": {
|
|
"type": "string"
|
|
},
|
|
"auto_invite": {
|
|
"$ref": "#/components/schemas/AutoInviteConfig"
|
|
},
|
|
"plan": {
|
|
"type": "string"
|
|
},
|
|
"customer_id": {
|
|
"type": "string"
|
|
},
|
|
"webhook": {
|
|
"type": "string"
|
|
},
|
|
"deploy_to": {
|
|
"type": "string"
|
|
},
|
|
"ai_config": {
|
|
"$ref": "#/components/schemas/AIConfig"
|
|
},
|
|
"error_handler": {
|
|
"$ref": "#/components/schemas/ErrorHandlerConfig"
|
|
},
|
|
"success_handler": {
|
|
"$ref": "#/components/schemas/SuccessHandlerConfig"
|
|
},
|
|
"large_file_storage": {
|
|
"$ref": "#/components/schemas/LargeFileStorage"
|
|
},
|
|
"ducklake": {
|
|
"$ref": "#/components/schemas/DucklakeSettings"
|
|
},
|
|
"datatable": {
|
|
"$ref": "#/components/schemas/DataTableSettings"
|
|
},
|
|
"git_sync": {
|
|
"$ref": "#/components/schemas/WorkspaceGitSyncSettings"
|
|
},
|
|
"deploy_ui": {
|
|
"$ref": "#/components/schemas/WorkspaceDeployUISettings"
|
|
},
|
|
"default_app": {
|
|
"type": "string"
|
|
},
|
|
"default_scripts": {
|
|
"$ref": "#/components/schemas/WorkspaceDefaultScripts"
|
|
},
|
|
"mute_critical_alerts": {
|
|
"type": "boolean"
|
|
},
|
|
"color": {
|
|
"type": "string"
|
|
},
|
|
"operator_settings": {
|
|
"$ref": "#/components/schemas/OperatorSettings"
|
|
},
|
|
"public_app_execution_limit_per_minute": {
|
|
"type": "integer",
|
|
"description": "Rate limit for public app executions per minute per server. NULL or 0 means disabled."
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/workspaces/get_deploy_to": {
|
|
"get": {
|
|
"summary": "get deploy to",
|
|
"operationId": "getDeployTo",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "status",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"deploy_to": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/workspaces/is_premium": {
|
|
"get": {
|
|
"summary": "get if workspace is premium",
|
|
"operationId": "getIsPremium",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "status",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/workspaces/premium_info": {
|
|
"get": {
|
|
"summary": "get premium info",
|
|
"operationId": "getPremiumInfo",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "skip_subscription_fetch",
|
|
"in": "query",
|
|
"description": "skip fetching subscription status from stripe",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "status",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"premium": {
|
|
"type": "boolean"
|
|
},
|
|
"usage": {
|
|
"type": "number"
|
|
},
|
|
"owner": {
|
|
"type": "string"
|
|
},
|
|
"status": {
|
|
"type": "string"
|
|
},
|
|
"is_past_due": {
|
|
"type": "boolean"
|
|
},
|
|
"max_tolerated_executions": {
|
|
"type": "number"
|
|
}
|
|
},
|
|
"required": [
|
|
"premium",
|
|
"owner",
|
|
"is_past_due"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/workspaces/threshold_alert": {
|
|
"get": {
|
|
"summary": "get threshold alert info",
|
|
"operationId": "getThresholdAlert",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "status",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"threshold_alert_amount": {
|
|
"type": "number"
|
|
},
|
|
"last_alert_sent": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"post": {
|
|
"summary": "set threshold alert info",
|
|
"operationId": "setThresholdAlert",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "threshold alert info",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"threshold_alert_amount": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "status",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/workspaces/rebuild_dependency_map": {
|
|
"post": {
|
|
"summary": "rebuild dependency map",
|
|
"operationId": "rebuildDependencyMap",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "status",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/workspaces/get_dependents/{imported_path}": {
|
|
"get": {
|
|
"summary": "get dependents of an imported path",
|
|
"operationId": "getDependents",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "imported_path",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
},
|
|
"description": "The imported path to get dependents for"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "list of dependents",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/DependencyDependent"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/workspaces/get_imports/{importer_path}": {
|
|
"get": {
|
|
"summary": "get script imports for an importer path",
|
|
"operationId": "getImports",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "importer_path",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
},
|
|
"description": "The script path to get imports for"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "list of imported script paths",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/workspaces/get_dependents_amounts": {
|
|
"post": {
|
|
"summary": "get dependents amounts for multiple imported paths",
|
|
"operationId": "getDependentsAmounts",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "List of imported paths to get dependents counts for",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "list of dependents amounts",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/DependentsAmount"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/workspaces/get_dependency_map": {
|
|
"get": {
|
|
"summary": "get dependency map",
|
|
"operationId": "getDependencyMap",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "dmap",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/DependencyMap"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/workspaces/edit_slack_command": {
|
|
"post": {
|
|
"summary": "edit slack command",
|
|
"operationId": "editSlackCommand",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "WorkspaceInvite",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"slack_command_script": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "status",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/workspaces/slack_oauth_config": {
|
|
"get": {
|
|
"summary": "get workspace slack oauth config",
|
|
"operationId": "getWorkspaceSlackOauthConfig",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "slack oauth config",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"slack_oauth_client_id": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"slack_oauth_client_secret": {
|
|
"type": "string",
|
|
"nullable": true,
|
|
"description": "Masked with *** if set"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"post": {
|
|
"summary": "set workspace slack oauth config",
|
|
"operationId": "setWorkspaceSlackOauthConfig",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "Slack OAuth Configuration",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"required": [
|
|
"slack_oauth_client_id",
|
|
"slack_oauth_client_secret"
|
|
],
|
|
"properties": {
|
|
"slack_oauth_client_id": {
|
|
"type": "string"
|
|
},
|
|
"slack_oauth_client_secret": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "status",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"delete": {
|
|
"summary": "delete workspace slack oauth config",
|
|
"operationId": "deleteWorkspaceSlackOauthConfig",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "status",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/workspaces/edit_teams_command": {
|
|
"post": {
|
|
"summary": "edit teams command",
|
|
"operationId": "editTeamsCommand",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "WorkspaceInvite",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"slack_command_script": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "status",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/workspaces/available_teams_ids": {
|
|
"get": {
|
|
"summary": "list available teams ids",
|
|
"operationId": "listAvailableTeamsIds",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "search",
|
|
"in": "query",
|
|
"description": "Search teams by name. If omitted, returns first page of all teams.",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "next_link",
|
|
"in": "query",
|
|
"description": "Pagination cursor URL from previous response. Pass this to fetch the next page of results.",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "status",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"teams": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"team_name": {
|
|
"type": "string"
|
|
},
|
|
"team_id": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"total_count": {
|
|
"type": "integer",
|
|
"description": "Total number of teams across all pages"
|
|
},
|
|
"per_page": {
|
|
"type": "integer",
|
|
"description": "Number of teams per page (configurable via TEAMS_PER_PAGE env var)"
|
|
},
|
|
"next_link": {
|
|
"type": "string",
|
|
"nullable": true,
|
|
"description": "URL to fetch next page of results. Null if no more pages."
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/workspaces/available_teams_channels": {
|
|
"get": {
|
|
"summary": "list available channels for a specific team",
|
|
"operationId": "listAvailableTeamsChannels",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "team_id",
|
|
"in": "query",
|
|
"description": "Microsoft Teams team ID",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "List of channels for the specified team",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"channels": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"channel_name": {
|
|
"type": "string"
|
|
},
|
|
"channel_id": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"total_count": {
|
|
"type": "integer"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/workspaces/connect_teams": {
|
|
"post": {
|
|
"summary": "connect teams",
|
|
"operationId": "connectTeams",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "connect teams",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"team_id": {
|
|
"type": "string"
|
|
},
|
|
"team_name": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "status",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/workspaces/run_slack_message_test_job": {
|
|
"post": {
|
|
"summary": "run a job that sends a message to Slack",
|
|
"operationId": "runSlackMessageTestJob",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "path to hub script to run and its corresponding args",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"hub_script_path": {
|
|
"type": "string"
|
|
},
|
|
"channel": {
|
|
"type": "string"
|
|
},
|
|
"test_msg": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "status",
|
|
"content": {
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"job_uuid": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/workspaces/run_teams_message_test_job": {
|
|
"post": {
|
|
"summary": "run a job that sends a message to Teams",
|
|
"operationId": "runTeamsMessageTestJob",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "path to hub script to run and its corresponding args",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"hub_script_path": {
|
|
"type": "string"
|
|
},
|
|
"channel": {
|
|
"type": "string"
|
|
},
|
|
"test_msg": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "status",
|
|
"content": {
|
|
"text/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"job_uuid": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/workspaces/edit_deploy_to": {
|
|
"post": {
|
|
"summary": "edit deploy to",
|
|
"operationId": "editDeployTo",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"deploy_to": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "status",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/workspaces/edit_auto_invite": {
|
|
"post": {
|
|
"summary": "edit auto invite",
|
|
"operationId": "editAutoInvite",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "WorkspaceInvite",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"operator": {
|
|
"type": "boolean"
|
|
},
|
|
"invite_all": {
|
|
"type": "boolean"
|
|
},
|
|
"auto_add": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "status",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/workspaces/edit_instance_groups": {
|
|
"post": {
|
|
"summary": "edit instance groups",
|
|
"operationId": "editInstanceGroups",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "Instance Groups Configuration",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"groups": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"roles": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "status",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/workspaces/edit_webhook": {
|
|
"post": {
|
|
"summary": "edit webhook",
|
|
"operationId": "editWebhook",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "WorkspaceWebhook",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"webhook": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "status",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/workspaces/edit_copilot_config": {
|
|
"post": {
|
|
"summary": "edit copilot config",
|
|
"operationId": "editCopilotConfig",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "WorkspaceCopilotConfig",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/AIConfig"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "status",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"effective_ai_config": {
|
|
"$ref": "#/components/schemas/AIConfig"
|
|
},
|
|
"has_instance_ai_config": {
|
|
"type": "boolean"
|
|
},
|
|
"uses_instance_ai_config": {
|
|
"type": "boolean"
|
|
},
|
|
"instance_ai_summary": {
|
|
"$ref": "#/components/schemas/InstanceAISummary"
|
|
}
|
|
},
|
|
"required": [
|
|
"effective_ai_config",
|
|
"has_instance_ai_config",
|
|
"uses_instance_ai_config"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/workspaces/get_copilot_settings_state": {
|
|
"get": {
|
|
"summary": "get copilot settings state",
|
|
"operationId": "getCopilotSettingsState",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "status",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"has_instance_ai_config": {
|
|
"type": "boolean"
|
|
},
|
|
"uses_instance_ai_config": {
|
|
"type": "boolean"
|
|
},
|
|
"instance_ai_summary": {
|
|
"$ref": "#/components/schemas/InstanceAISummary"
|
|
}
|
|
},
|
|
"required": [
|
|
"has_instance_ai_config",
|
|
"uses_instance_ai_config"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/workspaces/get_copilot_info": {
|
|
"get": {
|
|
"summary": "get copilot info",
|
|
"operationId": "getCopilotInfo",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "status",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/AIConfig"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/workspaces/edit_error_handler": {
|
|
"post": {
|
|
"summary": "edit error handler",
|
|
"operationId": "editErrorHandler",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "WorkspaceErrorHandler",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/EditErrorHandler"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "status",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/workspaces/edit_success_handler": {
|
|
"post": {
|
|
"summary": "edit success handler",
|
|
"operationId": "editSuccessHandler",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "WorkspaceSuccessHandler",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/EditSuccessHandler"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "status",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/workspaces/edit_large_file_storage_config": {
|
|
"post": {
|
|
"summary": "edit large file storage settings",
|
|
"operationId": "editLargeFileStorageConfig",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "LargeFileStorage info",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"large_file_storage": {
|
|
"$ref": "#/components/schemas/LargeFileStorage"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "status",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/workspaces/list_ducklakes": {
|
|
"get": {
|
|
"summary": "list ducklakes",
|
|
"operationId": "listDucklakes",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "status",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/workspaces/list_datatables": {
|
|
"get": {
|
|
"summary": "list Datatables",
|
|
"operationId": "listDataTables",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "status",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"required": [
|
|
"name",
|
|
"resource_type",
|
|
"resource_path"
|
|
],
|
|
"properties": {
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"resource_type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"postgres",
|
|
"instance"
|
|
]
|
|
},
|
|
"resource_path": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/workspaces/list_datatable_schemas": {
|
|
"get": {
|
|
"summary": "list schemas of all connected Datatables",
|
|
"operationId": "listDataTableSchemas",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "schemas of all datatables",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/DataTableSchema"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/workspaces/edit_ducklake_config": {
|
|
"post": {
|
|
"summary": "edit ducklake settings",
|
|
"operationId": "editDucklakeConfig",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "Ducklake settings",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"required": [
|
|
"settings"
|
|
],
|
|
"properties": {
|
|
"settings": {
|
|
"$ref": "#/components/schemas/DucklakeSettings"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "status",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/workspaces/edit_datatable_config": {
|
|
"post": {
|
|
"summary": "edit datatable settings",
|
|
"operationId": "editDataTableConfig",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "DataTable settings",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"required": [
|
|
"settings"
|
|
],
|
|
"properties": {
|
|
"settings": {
|
|
"$ref": "#/components/schemas/DataTableSettings"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "status",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/workspaces/create_pg_database": {
|
|
"post": {
|
|
"summary": "create a new PostgreSQL database for a datatable",
|
|
"operationId": "createPgDatabase",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "Create pg database request",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"required": [
|
|
"source",
|
|
"target_dbname"
|
|
],
|
|
"properties": {
|
|
"source": {
|
|
"type": "string",
|
|
"description": "Datatable source to determine connection info: 'datatable://name' or '$res:path'"
|
|
},
|
|
"target_dbname": {
|
|
"type": "string",
|
|
"description": "Name for the new database"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "status",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/workspaces/drop_forked_datatable_databases": {
|
|
"post": {
|
|
"summary": "drop forked datatable databases",
|
|
"operationId": "dropForkedDatatableDatabases",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"required": [
|
|
"datatable_names"
|
|
],
|
|
"properties": {
|
|
"datatable_names": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "list of errors (empty if all succeeded)",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/workspaces/import_pg_database": {
|
|
"post": {
|
|
"summary": "import a PostgreSQL database from source to target via pg_dump",
|
|
"operationId": "importPgDatabase",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "Import pg database request",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"required": [
|
|
"source",
|
|
"target",
|
|
"fork_behavior"
|
|
],
|
|
"properties": {
|
|
"source": {
|
|
"type": "string",
|
|
"description": "Source database: 'datatable://name' or '$res:path'"
|
|
},
|
|
"target": {
|
|
"type": "string",
|
|
"description": "Target database: 'datatable://name' or '$res:path'"
|
|
},
|
|
"target_dbname_override": {
|
|
"type": "string",
|
|
"description": "Override the target database name"
|
|
},
|
|
"fork_behavior": {
|
|
"type": "string",
|
|
"enum": [
|
|
"schema_only",
|
|
"schema_and_data",
|
|
"keep_original"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "status",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/workspaces/export_pg_schema": {
|
|
"post": {
|
|
"summary": "export the schema of a PostgreSQL database",
|
|
"operationId": "exportPgSchema",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "Export pg schema request",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"required": [
|
|
"source"
|
|
],
|
|
"properties": {
|
|
"source": {
|
|
"type": "string",
|
|
"description": "Source database: 'datatable://name' or '$res:path'"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "schema dump",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/workspaces/get_datatable_full_schema": {
|
|
"post": {
|
|
"summary": "get the full schema of a datatable database as TableEditorValues",
|
|
"operationId": "getDatatableFullSchema",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"required": [
|
|
"source"
|
|
],
|
|
"properties": {
|
|
"source": {
|
|
"type": "string",
|
|
"description": "Source datatable, e.g. 'datatable://main'"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Schema as { schema_name: { table_name: TableEditorValues } }",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "object",
|
|
"required": [
|
|
"name",
|
|
"columns",
|
|
"foreign_keys"
|
|
],
|
|
"properties": {
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"columns": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"required": [
|
|
"name",
|
|
"datatype"
|
|
],
|
|
"properties": {
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"datatype": {
|
|
"type": "string"
|
|
},
|
|
"primary_key": {
|
|
"type": "boolean"
|
|
},
|
|
"default_value": {
|
|
"type": "string"
|
|
},
|
|
"nullable": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"foreign_keys": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"required": [
|
|
"columns",
|
|
"on_delete",
|
|
"on_update"
|
|
],
|
|
"properties": {
|
|
"target_table": {
|
|
"type": "string"
|
|
},
|
|
"columns": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"source_column": {
|
|
"type": "string"
|
|
},
|
|
"target_column": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"on_delete": {
|
|
"type": "string"
|
|
},
|
|
"on_update": {
|
|
"type": "string"
|
|
},
|
|
"fk_constraint_name": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"pk_constraint_name": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/workspaces/git_sync_enabled": {
|
|
"get": {
|
|
"summary": "Check if git sync is available for this workspace",
|
|
"operationId": "getGitSyncEnabled",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Git sync availability status",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"reason": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"max_repos": {
|
|
"type": "integer",
|
|
"nullable": true
|
|
},
|
|
"user_count": {
|
|
"type": "integer",
|
|
"nullable": true
|
|
},
|
|
"max_users": {
|
|
"type": "integer",
|
|
"nullable": true
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/workspaces/edit_git_sync_config": {
|
|
"post": {
|
|
"summary": "edit workspace git sync settings",
|
|
"operationId": "editWorkspaceGitSyncConfig",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "Workspace Git sync settings",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"git_sync_settings": {
|
|
"$ref": "#/components/schemas/WorkspaceGitSyncSettings"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "status",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/workspaces/edit_git_sync_repository": {
|
|
"post": {
|
|
"summary": "add or update individual git sync repository",
|
|
"operationId": "editGitSyncRepository",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "Git sync repository settings to add or update",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"git_repo_resource_path": {
|
|
"type": "string",
|
|
"description": "The resource path of the git repository to update"
|
|
},
|
|
"repository": {
|
|
"$ref": "#/components/schemas/GitRepositorySettings"
|
|
}
|
|
},
|
|
"required": [
|
|
"git_repo_resource_path",
|
|
"repository"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "status",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/workspaces/delete_git_sync_repository": {
|
|
"delete": {
|
|
"summary": "delete individual git sync repository",
|
|
"operationId": "deleteGitSyncRepository",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "Git sync repository to delete",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"git_repo_resource_path": {
|
|
"type": "string",
|
|
"description": "The resource path of the git repository to delete"
|
|
}
|
|
},
|
|
"required": [
|
|
"git_repo_resource_path"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "status",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/workspaces/edit_deploy_ui_config": {
|
|
"post": {
|
|
"summary": "edit workspace deploy ui settings",
|
|
"operationId": "editWorkspaceDeployUISettings",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "Workspace deploy UI settings",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"deploy_ui_settings": {
|
|
"$ref": "#/components/schemas/WorkspaceDeployUISettings"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "status",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/workspaces/edit_default_app": {
|
|
"post": {
|
|
"summary": "edit default app for workspace",
|
|
"operationId": "editWorkspaceDefaultApp",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "Workspace default app",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"default_app_path": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "status",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/workspaces/default_scripts": {
|
|
"post": {
|
|
"summary": "edit default scripts for workspace",
|
|
"operationId": "editDefaultScripts",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "Workspace default app",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/WorkspaceDefaultScripts"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "status",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"get": {
|
|
"summary": "get default scripts for workspace",
|
|
"operationId": "get default scripts",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "status",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/WorkspaceDefaultScripts"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/workspaces/set_environment_variable": {
|
|
"post": {
|
|
"summary": "set environment variable",
|
|
"operationId": "setEnvironmentVariable",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "Workspace default app",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"value": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"name"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "status",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/workspaces/encryption_key": {
|
|
"get": {
|
|
"summary": "retrieves the encryption key for this workspace",
|
|
"operationId": "getWorkspaceEncryptionKey",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "status",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"key": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"key"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"post": {
|
|
"summary": "update the encryption key for this workspace",
|
|
"operationId": "setWorkspaceEncryptionKey",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "New encryption key",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"new_key": {
|
|
"type": "string"
|
|
},
|
|
"skip_reencrypt": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"required": [
|
|
"new_key"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "status",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/workspaces/default_app": {
|
|
"get": {
|
|
"summary": "get default app for workspace",
|
|
"operationId": "getWorkspaceDefaultApp",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "status",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"default_app_path": {
|
|
"type": "string"
|
|
},
|
|
"default_app_raw": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/workspaces/usage": {
|
|
"get": {
|
|
"summary": "get usage",
|
|
"operationId": "getWorkspaceUsage",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "usage",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/workspaces/used_triggers": {
|
|
"get": {
|
|
"summary": "get used triggers",
|
|
"operationId": "getUsedTriggers",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "status",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"http_routes_used": {
|
|
"type": "boolean"
|
|
},
|
|
"websocket_used": {
|
|
"type": "boolean"
|
|
},
|
|
"kafka_used": {
|
|
"type": "boolean"
|
|
},
|
|
"nats_used": {
|
|
"type": "boolean"
|
|
},
|
|
"postgres_used": {
|
|
"type": "boolean"
|
|
},
|
|
"mqtt_used": {
|
|
"type": "boolean"
|
|
},
|
|
"gcp_used": {
|
|
"type": "boolean"
|
|
},
|
|
"sqs_used": {
|
|
"type": "boolean"
|
|
},
|
|
"email_used": {
|
|
"type": "boolean"
|
|
},
|
|
"nextcloud_used": {
|
|
"type": "boolean"
|
|
},
|
|
"google_used": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"required": [
|
|
"http_routes_used",
|
|
"websocket_used",
|
|
"kafka_used",
|
|
"nats_used",
|
|
"postgres_used",
|
|
"mqtt_used",
|
|
"gcp_used",
|
|
"sqs_used",
|
|
"email_used",
|
|
"nextcloud_used",
|
|
"google_used"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/users/list": {
|
|
"get": {
|
|
"summary": "list users",
|
|
"operationId": "listUsers",
|
|
"tags": [
|
|
"user"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "user",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/User"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/users/list_usage": {
|
|
"get": {
|
|
"summary": "list users usage",
|
|
"operationId": "listUsersUsage",
|
|
"tags": [
|
|
"user"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "user",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/UserUsage"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/users/list_usernames": {
|
|
"get": {
|
|
"summary": "list usernames",
|
|
"operationId": "listUsernames",
|
|
"tags": [
|
|
"user"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "user",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/users/username_to_email/{username}": {
|
|
"get": {
|
|
"summary": "get email from username",
|
|
"operationId": "usernameToEmail",
|
|
"tags": [
|
|
"user"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "username",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "email",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/tokens/list/scopes": {
|
|
"get": {
|
|
"summary": "list of available scopes",
|
|
"operationId": "ListAvailableScopes",
|
|
"tags": [
|
|
"token"
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "list of available scopes",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ScopeDomain"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/users/tokens/create": {
|
|
"post": {
|
|
"summary": "create token",
|
|
"operationId": "createToken",
|
|
"tags": [
|
|
"user"
|
|
],
|
|
"requestBody": {
|
|
"description": "new token",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/NewToken"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "token created",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/users/tokens/impersonate": {
|
|
"post": {
|
|
"summary": "create token to impersonate a user (require superadmin)",
|
|
"operationId": "createTokenImpersonate",
|
|
"tags": [
|
|
"user"
|
|
],
|
|
"requestBody": {
|
|
"description": "new token",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/NewTokenImpersonate"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "token created",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/users/tokens/delete/{token_prefix}": {
|
|
"delete": {
|
|
"summary": "delete token",
|
|
"operationId": "deleteToken",
|
|
"tags": [
|
|
"user"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "token_prefix",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "delete token",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/users/tokens/list": {
|
|
"get": {
|
|
"summary": "list token",
|
|
"operationId": "listTokens",
|
|
"tags": [
|
|
"user"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "exclude_ephemeral",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Page"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/PerPage"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "truncated token",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/TruncatedToken"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/oidc/token/{audience}": {
|
|
"post": {
|
|
"summary": "get OIDC token (ee only)",
|
|
"operationId": "getOidcToken",
|
|
"tags": [
|
|
"oidc"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "audience",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "expires_in",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "new oidc token",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/variables/create": {
|
|
"post": {
|
|
"summary": "create variable",
|
|
"operationId": "createVariable",
|
|
"x-mcp-tool": true,
|
|
"tags": [
|
|
"variable"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "already_encrypted",
|
|
"description": "whether the variable is already encrypted (default false)",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "new variable",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateVariable"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "variable created",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/variables/encrypt": {
|
|
"post": {
|
|
"summary": "encrypt value",
|
|
"operationId": "encryptValue",
|
|
"tags": [
|
|
"variable"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "new variable",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "encrypted value",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/variables/delete/{path}": {
|
|
"delete": {
|
|
"summary": "delete variable",
|
|
"operationId": "deleteVariable",
|
|
"x-mcp-tool": true,
|
|
"tags": [
|
|
"variable"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "variable deleted",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/variables/delete_bulk": {
|
|
"delete": {
|
|
"summary": "delete variables in bulk",
|
|
"operationId": "deleteVariablesBulk",
|
|
"tags": [
|
|
"variable"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "paths to delete",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"paths": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"paths"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "deleted paths",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/variables/update/{path}": {
|
|
"post": {
|
|
"summary": "update variable",
|
|
"operationId": "updateVariable",
|
|
"x-mcp-tool": true,
|
|
"tags": [
|
|
"variable"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
},
|
|
{
|
|
"name": "already_encrypted",
|
|
"description": "whether the variable is already encrypted (default false)",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "updated variable",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/EditVariable"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "variable updated",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/variables/get/{path}": {
|
|
"get": {
|
|
"summary": "get variable",
|
|
"operationId": "getVariable",
|
|
"x-mcp-tool": true,
|
|
"tags": [
|
|
"variable"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
},
|
|
{
|
|
"name": "decrypt_secret",
|
|
"description": "ask to decrypt secret if this variable is secret\n(if not secret no effect, default: true)\n",
|
|
"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)\n",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "variable",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ListableVariable"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/variables/get_value/{path}": {
|
|
"get": {
|
|
"summary": "get variable value",
|
|
"operationId": "getVariableValue",
|
|
"tags": [
|
|
"variable"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
},
|
|
{
|
|
"name": "allow_cache",
|
|
"description": "allow getting a cached value for improved performance\n",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "variable",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/variables/exists/{path}": {
|
|
"get": {
|
|
"summary": "does variable exists at path",
|
|
"operationId": "existsVariable",
|
|
"tags": [
|
|
"variable"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "variable",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/variables/list": {
|
|
"get": {
|
|
"summary": "list variables",
|
|
"operationId": "listVariable",
|
|
"x-mcp-tool": true,
|
|
"tags": [
|
|
"variable"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "path_start",
|
|
"description": "filter variables by path prefix",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "path",
|
|
"description": "exact path match filter",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "description",
|
|
"description": "pattern match filter for description field (case-insensitive)",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "value",
|
|
"description": "pattern match filter for non-secret variable values (case-insensitive)",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "broad_filter",
|
|
"description": "broad search across multiple fields (case-insensitive substring match)",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Page"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/PerPage"
|
|
},
|
|
{
|
|
"name": "label",
|
|
"description": "Filter by label",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "variable list",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ListableVariable"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/variables/list_contextual": {
|
|
"get": {
|
|
"summary": "list contextual variables",
|
|
"operationId": "listContextualVariables",
|
|
"tags": [
|
|
"variable"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "contextual variable list",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ContextualVariable"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/workspaces/get_secondary_storage_names": {
|
|
"get": {
|
|
"summary": "get secondary storage names",
|
|
"operationId": "getSecondaryStorageNames",
|
|
"tags": [
|
|
"setting"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "include_default",
|
|
"in": "query",
|
|
"description": "If true, include \"_default_\" in the list if primary workspace storage is set",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "boolean",
|
|
"default": false
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "status",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/workspaces/critical_alerts": {
|
|
"get": {
|
|
"summary": "Get all critical alerts for this workspace",
|
|
"operationId": "workspaceGetCriticalAlerts",
|
|
"tags": [
|
|
"setting"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"in": "query",
|
|
"name": "page",
|
|
"schema": {
|
|
"type": "integer",
|
|
"default": 1,
|
|
"description": "The page number to retrieve (minimum value is 1)"
|
|
}
|
|
},
|
|
{
|
|
"in": "query",
|
|
"name": "page_size",
|
|
"schema": {
|
|
"type": "integer",
|
|
"default": 10,
|
|
"maximum": 100,
|
|
"description": "Number of alerts per page (maximum is 100)"
|
|
}
|
|
},
|
|
{
|
|
"in": "query",
|
|
"name": "acknowledged",
|
|
"schema": {
|
|
"type": "boolean",
|
|
"nullable": true,
|
|
"description": "Filter by acknowledgment status; true for acknowledged, false for unacknowledged, and omit for all alerts"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successfully retrieved all critical alerts",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"alerts": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/CriticalAlert"
|
|
}
|
|
},
|
|
"total_rows": {
|
|
"type": "integer",
|
|
"description": "Total number of rows matching the query.",
|
|
"example": 100
|
|
},
|
|
"total_pages": {
|
|
"type": "integer",
|
|
"description": "Total number of pages based on the page size.",
|
|
"example": 10
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/workspaces/critical_alerts/{id}/acknowledge": {
|
|
"post": {
|
|
"summary": "Acknowledge a critical alert for this workspace",
|
|
"operationId": "workspaceAcknowledgeCriticalAlert",
|
|
"tags": [
|
|
"setting"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"in": "path",
|
|
"name": "id",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer"
|
|
},
|
|
"description": "The ID of the critical alert to acknowledge"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successfully acknowledged the critical alert",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "string",
|
|
"example": "Critical alert acknowledged"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/workspaces/critical_alerts/acknowledge_all": {
|
|
"post": {
|
|
"summary": "Acknowledge all unacknowledged critical alerts for this workspace",
|
|
"operationId": "workspaceAcknowledgeAllCriticalAlerts",
|
|
"tags": [
|
|
"setting"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successfully acknowledged all unacknowledged critical alerts.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "string",
|
|
"example": "All unacknowledged critical alerts acknowledged"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/workspaces/critical_alerts/mute": {
|
|
"post": {
|
|
"summary": "Mute critical alert UI for this workspace",
|
|
"operationId": "workspaceMuteCriticalAlertsUI",
|
|
"tags": [
|
|
"setting"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "Boolean flag to mute critical alerts.",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"mute_critical_alerts": {
|
|
"type": "boolean",
|
|
"description": "Whether critical alerts should be muted.",
|
|
"example": true
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successfully updated mute critical alert settings.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "string",
|
|
"example": "Updated mute critical alert UI settings for workspace: workspace_id"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/workspaces/protection_rules": {
|
|
"get": {
|
|
"summary": "list all protection rules for a workspace",
|
|
"operationId": "listProtectionRules",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "list of protection rules",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ProtectionRuleset"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"post": {
|
|
"summary": "create a new protection rule",
|
|
"operationId": "createProtectionRule",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "New protection rule configuration",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"required": [
|
|
"name",
|
|
"rules",
|
|
"bypass_groups",
|
|
"bypass_users"
|
|
],
|
|
"properties": {
|
|
"name": {
|
|
"type": "string",
|
|
"description": "Unique name for the protection rule",
|
|
"example": "Production Protection"
|
|
},
|
|
"rules": {
|
|
"$ref": "#/components/schemas/ProtectionRules"
|
|
},
|
|
"bypass_groups": {
|
|
"$ref": "#/components/schemas/RuleBypasserGroups"
|
|
},
|
|
"bypass_users": {
|
|
"$ref": "#/components/schemas/RuleBypasserUsers"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "protection rule created successfully",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "rule with this name already exists"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/workspaces/protection_rules/{rule_name}": {
|
|
"post": {
|
|
"summary": "update an existing protection rule",
|
|
"operationId": "updateProtectionRule",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "rule_name",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
},
|
|
"description": "Name of the protection rule to update"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "Updated protection rule configuration",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"required": [
|
|
"rules",
|
|
"bypass_groups",
|
|
"bypass_users"
|
|
],
|
|
"properties": {
|
|
"rules": {
|
|
"$ref": "#/components/schemas/ProtectionRules"
|
|
},
|
|
"bypass_groups": {
|
|
"$ref": "#/components/schemas/RuleBypasserGroups"
|
|
},
|
|
"bypass_users": {
|
|
"$ref": "#/components/schemas/RuleBypasserUsers"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "protection rule updated successfully",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "protection rule not found"
|
|
}
|
|
}
|
|
},
|
|
"delete": {
|
|
"summary": "delete a protection rule",
|
|
"operationId": "deleteProtectionRule",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "rule_name",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
},
|
|
"description": "Name of the protection rule to delete"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "protection rule deleted successfully",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "protection rule not found"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/deployment_request/eligible_deployers": {
|
|
"get": {
|
|
"summary": "list users eligible to be deployment request assignees",
|
|
"description": "Returns admins and members of wm_deployers in the parent workspace of the fork at `{workspace}`.",
|
|
"operationId": "listDeploymentRequestEligibleDeployers",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "list of eligible deployers",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/DeploymentRequestEligibleDeployer"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/deployment_request/open": {
|
|
"get": {
|
|
"summary": "get the currently open deployment request for this fork",
|
|
"operationId": "getOpenDeploymentRequest",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "the open request or null if none exists",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"nullable": true,
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/DeploymentRequest"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/deployment_request": {
|
|
"post": {
|
|
"summary": "create a new deployment request",
|
|
"operationId": "createDeploymentRequest",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"required": [
|
|
"assignees"
|
|
],
|
|
"properties": {
|
|
"assignees": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"description": "Usernames in the parent workspace. Must be admin or wm_deployers."
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "request created",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/DeploymentRequest"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "invalid assignees"
|
|
},
|
|
"409": {
|
|
"description": "a deployment request is already open for this fork"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/deployment_request/{id}/cancel": {
|
|
"post": {
|
|
"summary": "cancel an open deployment request",
|
|
"operationId": "cancelDeploymentRequest",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int64"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "cancelled",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/deployment_request/{id}/close_merged": {
|
|
"post": {
|
|
"summary": "close a deployment request after a successful merge",
|
|
"description": "Called by the UI after the deploy loop completes. Closes the request and marks every comment obsolete. Idempotent.",
|
|
"operationId": "closeDeploymentRequestMerged",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int64"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "closed",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/deployment_request/{id}/comment": {
|
|
"post": {
|
|
"summary": "append a comment to an open deployment request",
|
|
"operationId": "createDeploymentRequestComment",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int64"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"required": [
|
|
"body"
|
|
],
|
|
"properties": {
|
|
"body": {
|
|
"type": "string"
|
|
},
|
|
"parent_id": {
|
|
"type": "integer",
|
|
"format": "int64",
|
|
"nullable": true
|
|
},
|
|
"anchor_kind": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"anchor_path": {
|
|
"type": "string",
|
|
"nullable": true
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "comment created",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/DeploymentRequestComment"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "invalid input or request closed"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/workspaces/log_chat": {
|
|
"post": {
|
|
"summary": "log AI chat message",
|
|
"operationId": "logAiChat",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"required": [
|
|
"session_id",
|
|
"provider",
|
|
"model",
|
|
"mode"
|
|
],
|
|
"properties": {
|
|
"session_id": {
|
|
"type": "string"
|
|
},
|
|
"provider": {
|
|
"type": "string"
|
|
},
|
|
"model": {
|
|
"type": "string"
|
|
},
|
|
"mode": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"204": {
|
|
"description": "logged"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/workspaces/cloud_quotas": {
|
|
"get": {
|
|
"summary": "get cloud quota usage and limits for workspace",
|
|
"operationId": "getCloudQuotas",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "cloud quota usage and limits",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"scripts": {
|
|
"$ref": "#/components/schemas/QuotaInfo"
|
|
},
|
|
"flows": {
|
|
"$ref": "#/components/schemas/QuotaInfo"
|
|
},
|
|
"apps": {
|
|
"$ref": "#/components/schemas/QuotaInfo"
|
|
},
|
|
"variables": {
|
|
"$ref": "#/components/schemas/QuotaInfo"
|
|
},
|
|
"resources": {
|
|
"$ref": "#/components/schemas/QuotaInfo"
|
|
}
|
|
},
|
|
"required": [
|
|
"scripts",
|
|
"flows",
|
|
"apps",
|
|
"variables",
|
|
"resources"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/workspaces/prune_versions": {
|
|
"post": {
|
|
"summary": "prune old versions of scripts, flows, or apps",
|
|
"operationId": "pruneVersions",
|
|
"tags": [
|
|
"workspace"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"resource_type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"scripts",
|
|
"flows",
|
|
"apps"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"resource_type"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "number of pruned versions",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"pruned": {
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"required": [
|
|
"pruned"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/workspaces/public_app_rate_limit": {
|
|
"post": {
|
|
"summary": "Set public app rate limit for this workspace",
|
|
"operationId": "setPublicAppRateLimit",
|
|
"tags": [
|
|
"setting"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "Public app rate limit configuration",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"public_app_execution_limit_per_minute": {
|
|
"type": "integer",
|
|
"description": "Rate limit for public app executions per minute per server. NULL or 0 to disable.",
|
|
"example": 100
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successfully updated public app rate limit settings.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "string",
|
|
"example": "Updated public app rate limit for workspace: workspace_id"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/oauth/login_callback/{client_name}": {
|
|
"post": {
|
|
"security": [],
|
|
"summary": "login with oauth authorization flow",
|
|
"operationId": "loginWithOauth",
|
|
"tags": [
|
|
"user"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/ClientName"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "Partially filled script",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"code": {
|
|
"type": "string"
|
|
},
|
|
"state": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successfully authenticated. The session ID is returned in a cookie named `token` and as plaintext response. Preferred method of authorization is through the bearer token. The cookie is only for browser convenience.\n",
|
|
"headers": {
|
|
"Set-Cookie": {
|
|
"schema": {
|
|
"type": "string",
|
|
"example": "token=abcde12345; Path=/; HttpOnly"
|
|
}
|
|
}
|
|
},
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/oauth/connect_slack_callback": {
|
|
"post": {
|
|
"summary": "connect slack callback",
|
|
"operationId": "connectSlackCallback",
|
|
"tags": [
|
|
"oauth"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "code endpoint",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"code": {
|
|
"type": "string"
|
|
},
|
|
"state": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"code",
|
|
"state"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "slack token",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/oauth/connect_slack_callback": {
|
|
"post": {
|
|
"summary": "connect slack callback instance",
|
|
"operationId": "connectSlackCallbackInstance",
|
|
"tags": [
|
|
"oauth"
|
|
],
|
|
"requestBody": {
|
|
"description": "code endpoint",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"code": {
|
|
"type": "string"
|
|
},
|
|
"state": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"code",
|
|
"state"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "success message",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/oauth/connect_callback/{client_name}": {
|
|
"post": {
|
|
"summary": "connect callback",
|
|
"operationId": "connectCallback",
|
|
"tags": [
|
|
"oauth"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/ClientName"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "code endpoint",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"code": {
|
|
"type": "string"
|
|
},
|
|
"state": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"code",
|
|
"state"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "oauth token",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/TokenResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/oauth/create_account": {
|
|
"post": {
|
|
"summary": "create OAuth account",
|
|
"operationId": "createAccount",
|
|
"tags": [
|
|
"oauth"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "code endpoint",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"refresh_token": {
|
|
"type": "string",
|
|
"description": "OAuth refresh token. For authorization_code flow, this contains the actual refresh token. For client_credentials flow, this must be set to an empty string."
|
|
},
|
|
"expires_in": {
|
|
"type": "integer"
|
|
},
|
|
"client": {
|
|
"type": "string"
|
|
},
|
|
"grant_type": {
|
|
"type": "string",
|
|
"default": "authorization_code"
|
|
},
|
|
"cc_client_id": {
|
|
"type": "string",
|
|
"description": "OAuth client ID for resource-level credentials (client_credentials flow only)"
|
|
},
|
|
"cc_client_secret": {
|
|
"type": "string",
|
|
"description": "OAuth client secret for resource-level credentials (client_credentials flow only)"
|
|
},
|
|
"cc_token_url": {
|
|
"type": "string",
|
|
"description": "OAuth token URL override for resource-level authentication (client_credentials flow only)"
|
|
},
|
|
"mcp_server_url": {
|
|
"type": "string",
|
|
"description": "MCP server URL for MCP OAuth token refresh"
|
|
},
|
|
"scopes": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"description": "OAuth scopes to use for token refresh. Overrides instance-level scopes."
|
|
}
|
|
},
|
|
"required": [
|
|
"refresh_token",
|
|
"expires_in",
|
|
"client"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "account set",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/oauth/connect_client_credentials/{client}": {
|
|
"post": {
|
|
"summary": "connect OAuth using client credentials",
|
|
"operationId": "connectClientCredentials",
|
|
"tags": [
|
|
"oauth"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "client",
|
|
"in": "path",
|
|
"description": "OAuth client name",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "client credentials flow parameters",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"scopes": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"cc_client_id": {
|
|
"type": "string",
|
|
"description": "OAuth client ID for resource-level authentication"
|
|
},
|
|
"cc_client_secret": {
|
|
"type": "string",
|
|
"description": "OAuth client secret for resource-level authentication"
|
|
},
|
|
"cc_token_url": {
|
|
"type": "string",
|
|
"description": "OAuth token URL override for resource-level authentication"
|
|
}
|
|
},
|
|
"required": [
|
|
"cc_client_id",
|
|
"cc_client_secret"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OAuth token response",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/TokenResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/oauth/refresh_token/{id}": {
|
|
"post": {
|
|
"summary": "refresh token",
|
|
"operationId": "refreshToken",
|
|
"tags": [
|
|
"oauth"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/AccountId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "variable path",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"path": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"path"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "token refreshed",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/oauth/disconnect/{id}": {
|
|
"post": {
|
|
"summary": "disconnect account",
|
|
"operationId": "disconnectAccount",
|
|
"tags": [
|
|
"oauth"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/AccountId"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "disconnected client",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/oauth/disconnect_slack": {
|
|
"post": {
|
|
"summary": "disconnect slack",
|
|
"operationId": "disconnectSlack",
|
|
"tags": [
|
|
"oauth"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "disconnected slack",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/oauth/disconnect_teams": {
|
|
"post": {
|
|
"summary": "disconnect teams",
|
|
"operationId": "disconnectTeams",
|
|
"tags": [
|
|
"oauth"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "disconnected teams",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/oauth/list_logins": {
|
|
"get": {
|
|
"summary": "list oauth logins",
|
|
"operationId": "listOAuthLogins",
|
|
"tags": [
|
|
"oauth"
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "list of oauth and saml login clients",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"oauth": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string"
|
|
},
|
|
"display_name": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"type"
|
|
]
|
|
}
|
|
},
|
|
"saml": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"oauth"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/oauth/list_connects": {
|
|
"get": {
|
|
"summary": "list oauth connects",
|
|
"operationId": "listOAuthConnects",
|
|
"tags": [
|
|
"oauth"
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "list of oauth connects clients",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/oauth/get_connect/{client}": {
|
|
"get": {
|
|
"summary": "get oauth connect",
|
|
"operationId": "getOAuthConnect",
|
|
"tags": [
|
|
"oauth"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "client",
|
|
"description": "client name",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "get",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"extra_params": {
|
|
"type": "object"
|
|
},
|
|
"scopes": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"grant_types": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/teams/activities": {
|
|
"post": {
|
|
"summary": "send update to Microsoft Teams activity",
|
|
"description": "Respond to a Microsoft Teams activity after a workspace command is run",
|
|
"operationId": "sendMessageToConversation",
|
|
"tags": [
|
|
"teams"
|
|
],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"required": [
|
|
"conversation_id",
|
|
"text"
|
|
],
|
|
"properties": {
|
|
"conversation_id": {
|
|
"type": "string",
|
|
"description": "The ID of the Teams conversation/activity"
|
|
},
|
|
"success": {
|
|
"type": "boolean",
|
|
"description": "Used for styling the card conditionally",
|
|
"default": true
|
|
},
|
|
"text": {
|
|
"type": "string",
|
|
"description": "The message text to be sent in the Teams card"
|
|
},
|
|
"card_block": {
|
|
"type": "object",
|
|
"description": "The card block to be sent in the Teams card"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Activity processed successfully"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/resources/create": {
|
|
"post": {
|
|
"summary": "create resource",
|
|
"operationId": "createResource",
|
|
"x-mcp-tool": true,
|
|
"tags": [
|
|
"resource"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "update_if_exists",
|
|
"description": "update the resource if it already exists (default false)",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "new resource",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateResource"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "resource created",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/resources/delete/{path}": {
|
|
"delete": {
|
|
"summary": "delete resource",
|
|
"operationId": "deleteResource",
|
|
"x-mcp-tool": true,
|
|
"tags": [
|
|
"resource"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "resource deleted",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/resources/delete_bulk": {
|
|
"delete": {
|
|
"summary": "delete resources in bulk",
|
|
"operationId": "deleteResourcesBulk",
|
|
"tags": [
|
|
"resource"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "paths to delete",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"paths": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"paths"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "deleted paths",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/resources/update/{path}": {
|
|
"post": {
|
|
"summary": "update resource",
|
|
"operationId": "updateResource",
|
|
"x-mcp-tool": true,
|
|
"tags": [
|
|
"resource"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "updated resource",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/EditResource"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "resource updated",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/resources/update_value/{path}": {
|
|
"post": {
|
|
"summary": "update resource value",
|
|
"operationId": "updateResourceValue",
|
|
"tags": [
|
|
"resource"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "updated resource",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"value": {}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "resource value updated",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/resources/get/{path}": {
|
|
"get": {
|
|
"summary": "get resource",
|
|
"operationId": "getResource",
|
|
"x-mcp-tool": true,
|
|
"tags": [
|
|
"resource"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "resource",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Resource"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/resources/get_value_interpolated/{path}": {
|
|
"get": {
|
|
"summary": "get resource interpolated (variables and resources are fully unrolled)",
|
|
"operationId": "getResourceValueInterpolated",
|
|
"tags": [
|
|
"resource"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
},
|
|
{
|
|
"name": "job_id",
|
|
"description": "job id",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
}
|
|
},
|
|
{
|
|
"name": "allow_cache",
|
|
"description": "allow getting a cached value for improved performance",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "resource value",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/resources/get_value/{path}": {
|
|
"get": {
|
|
"summary": "get resource value",
|
|
"operationId": "getResourceValue",
|
|
"tags": [
|
|
"resource"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "resource value",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/resources/git_commit_hash/{path}": {
|
|
"get": {
|
|
"summary": "get git repository latest commit hash",
|
|
"operationId": "getGitCommitHash",
|
|
"tags": [
|
|
"resource"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
},
|
|
{
|
|
"name": "git_ssh_identity",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "git commit hash",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"commit_hash": {
|
|
"type": "string",
|
|
"description": "Latest commit hash from git ls-remote"
|
|
}
|
|
},
|
|
"required": [
|
|
"commit_hash"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/resources/exists/{path}": {
|
|
"get": {
|
|
"summary": "does resource exists",
|
|
"operationId": "existsResource",
|
|
"tags": [
|
|
"resource"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "does resource exists",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/resources/list": {
|
|
"get": {
|
|
"summary": "list resources",
|
|
"operationId": "listResource",
|
|
"x-mcp-tool": true,
|
|
"tags": [
|
|
"resource"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Page"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/PerPage"
|
|
},
|
|
{
|
|
"name": "resource_type",
|
|
"description": "resource_types to list from, separated by ',',",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "resource_type_exclude",
|
|
"description": "resource_types to not list from, separated by ',',",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "path_start",
|
|
"description": "filter resources by path prefix",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "path",
|
|
"description": "exact path match filter",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "description",
|
|
"description": "pattern match filter for description field (case-insensitive)",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "value",
|
|
"description": "JSONB subset match filter using base64 encoded JSON",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "broad_filter",
|
|
"description": "broad search across multiple fields (case-insensitive substring match)",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "label",
|
|
"description": "Filter by label",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "resource list",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ListableResource"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/resources/list_search": {
|
|
"get": {
|
|
"summary": "list resources for search",
|
|
"operationId": "listSearchResource",
|
|
"tags": [
|
|
"resource"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "resource list",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"path": {
|
|
"type": "string"
|
|
},
|
|
"value": {}
|
|
},
|
|
"required": [
|
|
"path",
|
|
"value"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/resources/mcp_tools/{path}": {
|
|
"get": {
|
|
"summary": "get MCP tools from resource",
|
|
"operationId": "getMcpTools",
|
|
"tags": [
|
|
"resource"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "list of MCP tools",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"parameters": {
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"name",
|
|
"parameters"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/resources/list_names/{name}": {
|
|
"get": {
|
|
"summary": "list resource names",
|
|
"operationId": "listResourceNames",
|
|
"tags": [
|
|
"resource"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Name"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "resource list names",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"path": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"name",
|
|
"path"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/resources/type/create": {
|
|
"post": {
|
|
"summary": "create resource_type",
|
|
"operationId": "createResourceType",
|
|
"tags": [
|
|
"resource"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "new resource_type",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ResourceType"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "resource_type created",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/resources/file_resource_type_to_file_ext_map": {
|
|
"get": {
|
|
"summary": "get map from resource type to format extension",
|
|
"operationId": "fileResourceTypeToFileExtMap",
|
|
"tags": [
|
|
"resource"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "map from resource type to file resource info",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "object",
|
|
"properties": {
|
|
"format_extension": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"is_fileset": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/resources/type/delete/{path}": {
|
|
"delete": {
|
|
"summary": "delete resource_type",
|
|
"operationId": "deleteResourceType",
|
|
"tags": [
|
|
"resource"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "resource_type deleted",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/resources/type/update/{path}": {
|
|
"post": {
|
|
"summary": "update resource_type",
|
|
"operationId": "updateResourceType",
|
|
"tags": [
|
|
"resource"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "updated resource_type",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/EditResourceType"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "resource_type updated",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/resources/type/get/{path}": {
|
|
"get": {
|
|
"summary": "get resource_type",
|
|
"operationId": "getResourceType",
|
|
"tags": [
|
|
"resource"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "resource_type deleted",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ResourceType"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/resources/type/exists/{path}": {
|
|
"get": {
|
|
"summary": "does resource_type exists",
|
|
"operationId": "existsResourceType",
|
|
"tags": [
|
|
"resource"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "does resource_type exist",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/resources/type/list": {
|
|
"get": {
|
|
"summary": "list resource_types",
|
|
"operationId": "listResourceType",
|
|
"x-mcp-tool": true,
|
|
"tags": [
|
|
"resource"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "resource_type list",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ResourceType"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/resources/type/listnames": {
|
|
"get": {
|
|
"summary": "list resource_types names",
|
|
"operationId": "listResourceTypeNames",
|
|
"tags": [
|
|
"resource"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "resource_type list",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/npm_proxy/metadata/{package}": {
|
|
"get": {
|
|
"summary": "get npm package metadata from private registry",
|
|
"operationId": "getNpmPackageMetadata",
|
|
"tags": [
|
|
"npm_proxy"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "package",
|
|
"description": "npm package name",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "package metadata",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"tags": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"versions": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/npm_proxy/resolve/{package}": {
|
|
"get": {
|
|
"summary": "resolve npm package version from private registry",
|
|
"operationId": "resolveNpmPackageVersion",
|
|
"tags": [
|
|
"npm_proxy"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "package",
|
|
"description": "npm package name",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "tag",
|
|
"description": "version tag or reference",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "resolved version",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"version": {
|
|
"type": "string",
|
|
"nullable": true
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/npm_proxy/filetree/{package}/{version}": {
|
|
"get": {
|
|
"summary": "get npm package file tree from private registry",
|
|
"operationId": "getNpmPackageFiletree",
|
|
"tags": [
|
|
"npm_proxy"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "package",
|
|
"description": "npm package name",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "version",
|
|
"description": "package version",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "package file tree",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"default": {
|
|
"type": "string"
|
|
},
|
|
"files": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/npm_proxy/file/{package}/{version}/{filepath}": {
|
|
"get": {
|
|
"summary": "get specific file from npm package in private registry",
|
|
"operationId": "getNpmPackageFile",
|
|
"tags": [
|
|
"npm_proxy"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "package",
|
|
"description": "npm package name",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "version",
|
|
"description": "package version",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "filepath",
|
|
"description": "file path within package",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "file content",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/embeddings/query_resource_types": {
|
|
"get": {
|
|
"summary": "query resource types by similarity",
|
|
"operationId": "queryResourceTypes",
|
|
"tags": [
|
|
"resource"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "text",
|
|
"description": "query text",
|
|
"in": "query",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "limit",
|
|
"description": "query limit",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "resource type details",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"score": {
|
|
"type": "number"
|
|
},
|
|
"schema": {}
|
|
},
|
|
"required": [
|
|
"name",
|
|
"score"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/integrations/hub/list": {
|
|
"get": {
|
|
"summary": "list hub integrations",
|
|
"operationId": "listHubIntegrations",
|
|
"tags": [
|
|
"integration"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "kind",
|
|
"description": "query integrations kind",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "integrations details",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"name"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/flows/hub/list": {
|
|
"get": {
|
|
"summary": "list all hub flows",
|
|
"operationId": "listHubFlows",
|
|
"tags": [
|
|
"flow"
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "hub flows list",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"flows": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "number"
|
|
},
|
|
"flow_id": {
|
|
"type": "number"
|
|
},
|
|
"summary": {
|
|
"type": "string"
|
|
},
|
|
"apps": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"approved": {
|
|
"type": "boolean"
|
|
},
|
|
"votes": {
|
|
"type": "number"
|
|
}
|
|
},
|
|
"required": [
|
|
"id",
|
|
"flow_id",
|
|
"summary",
|
|
"apps",
|
|
"approved",
|
|
"votes"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/flows/hub/get/{id}": {
|
|
"get": {
|
|
"summary": "get hub flow by id",
|
|
"operationId": "getHubFlowById",
|
|
"tags": [
|
|
"flow"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/PathId"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "flow",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"flow": {
|
|
"$ref": "#/components/schemas/OpenFlow"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/apps/hub/list": {
|
|
"get": {
|
|
"summary": "list all hub apps",
|
|
"operationId": "listHubApps",
|
|
"tags": [
|
|
"app"
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "hub apps list",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"apps": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "number"
|
|
},
|
|
"app_id": {
|
|
"type": "number"
|
|
},
|
|
"summary": {
|
|
"type": "string"
|
|
},
|
|
"apps": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"approved": {
|
|
"type": "boolean"
|
|
},
|
|
"votes": {
|
|
"type": "number"
|
|
}
|
|
},
|
|
"required": [
|
|
"id",
|
|
"app_id",
|
|
"summary",
|
|
"apps",
|
|
"approved",
|
|
"votes"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/apps/hub/get/{id}": {
|
|
"get": {
|
|
"summary": "get hub app by id",
|
|
"operationId": "getHubAppById",
|
|
"tags": [
|
|
"app"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/PathId"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "app",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"app": {
|
|
"type": "object",
|
|
"properties": {
|
|
"summary": {
|
|
"type": "string"
|
|
},
|
|
"value": {}
|
|
},
|
|
"required": [
|
|
"summary",
|
|
"value"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"app"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/apps/hub/get_raw/{id}": {
|
|
"get": {
|
|
"summary": "get hub raw app by id",
|
|
"operationId": "getHubRawAppById",
|
|
"tags": [
|
|
"app"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/PathId"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "raw app",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"app": {
|
|
"type": "object",
|
|
"properties": {
|
|
"summary": {
|
|
"type": "string"
|
|
},
|
|
"value": {}
|
|
},
|
|
"required": [
|
|
"summary",
|
|
"value"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"app"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/apps_u/public_app_by_custom_path/{custom_path}": {
|
|
"get": {
|
|
"summary": "get public app by custom path",
|
|
"operationId": "getPublicAppByCustomPath",
|
|
"tags": [
|
|
"app"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/CustomPath"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "app details",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/AppWithLastVersion"
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"workspace_id": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/scripts/hub/get/{path}": {
|
|
"get": {
|
|
"summary": "get hub script content by path",
|
|
"operationId": "getHubScriptContentByPath",
|
|
"tags": [
|
|
"script"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/ScriptPath"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "script details",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/scripts/hub/get_full/{path}": {
|
|
"get": {
|
|
"summary": "get full hub script by path",
|
|
"operationId": "getHubScriptByPath",
|
|
"tags": [
|
|
"script"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/ScriptPath"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "script details",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"content": {
|
|
"type": "string"
|
|
},
|
|
"lockfile": {
|
|
"type": "string"
|
|
},
|
|
"schema": {},
|
|
"language": {
|
|
"type": "string"
|
|
},
|
|
"summary": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"content",
|
|
"language"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/scripts/hub/pick/{path}": {
|
|
"get": {
|
|
"summary": "record hub script pick",
|
|
"operationId": "pickHubScriptByPath",
|
|
"tags": [
|
|
"script"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/ScriptPath"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "script pick recorded",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"success": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"required": [
|
|
"success"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/scripts/hub/top": {
|
|
"get": {
|
|
"summary": "get top hub scripts",
|
|
"operationId": "getTopHubScripts",
|
|
"tags": [
|
|
"script"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "limit",
|
|
"description": "query limit",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "number"
|
|
}
|
|
},
|
|
{
|
|
"name": "app",
|
|
"description": "query scripts app",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "kind",
|
|
"description": "query scripts kind",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "hub scripts list",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"asks": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "number"
|
|
},
|
|
"ask_id": {
|
|
"type": "number"
|
|
},
|
|
"summary": {
|
|
"type": "string"
|
|
},
|
|
"app": {
|
|
"type": "string"
|
|
},
|
|
"version_id": {
|
|
"type": "number"
|
|
},
|
|
"kind": {
|
|
"$ref": "#/components/schemas/HubScriptKind"
|
|
},
|
|
"votes": {
|
|
"type": "number"
|
|
},
|
|
"views": {
|
|
"type": "number"
|
|
}
|
|
},
|
|
"required": [
|
|
"id",
|
|
"ask_id",
|
|
"summary",
|
|
"app",
|
|
"version_id",
|
|
"kind",
|
|
"views",
|
|
"votes"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/embeddings/query_hub_scripts": {
|
|
"get": {
|
|
"summary": "query hub scripts by similarity",
|
|
"operationId": "queryHubScripts",
|
|
"tags": [
|
|
"script"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "text",
|
|
"description": "query text",
|
|
"in": "query",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "kind",
|
|
"description": "query scripts kind",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "limit",
|
|
"description": "query limit",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "number"
|
|
}
|
|
},
|
|
{
|
|
"name": "app",
|
|
"description": "query scripts app",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "script details",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"ask_id": {
|
|
"type": "number"
|
|
},
|
|
"id": {
|
|
"type": "number"
|
|
},
|
|
"version_id": {
|
|
"type": "number"
|
|
},
|
|
"summary": {
|
|
"type": "string"
|
|
},
|
|
"app": {
|
|
"type": "string"
|
|
},
|
|
"kind": {
|
|
"$ref": "#/components/schemas/HubScriptKind"
|
|
},
|
|
"score": {
|
|
"type": "number"
|
|
}
|
|
},
|
|
"required": [
|
|
"ask_id",
|
|
"id",
|
|
"version_id",
|
|
"summary",
|
|
"app",
|
|
"kind",
|
|
"score"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/scripts/list_search": {
|
|
"get": {
|
|
"summary": "list scripts for search",
|
|
"operationId": "listSearchScript",
|
|
"tags": [
|
|
"script"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "script list",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"path": {
|
|
"type": "string"
|
|
},
|
|
"content": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"path",
|
|
"content"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/scripts/list": {
|
|
"get": {
|
|
"summary": "list all scripts",
|
|
"operationId": "listScripts",
|
|
"x-mcp-tool": true,
|
|
"tags": [
|
|
"script"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Page"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/PerPage"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/OrderDesc"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/CreatedBy"
|
|
},
|
|
{
|
|
"name": "path_start",
|
|
"description": "mask to filter matching starting path",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "path_exact",
|
|
"description": "mask to filter exact matching path",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "first_parent_hash",
|
|
"description": "mask to filter scripts whom first direct parent has exact hash",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "last_parent_hash",
|
|
"description": "mask to filter scripts whom last parent in the chain has exact hash.\nBeware that each script stores only a limited number of parents. Hence\nthe last parent hash for a script is not necessarily its top-most parent.\nTo find the top-most parent you will have to jump from last to last hash\n until finding the parent\n",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "parent_hash",
|
|
"description": "is the hash present in the array of stored parent hashes for this script.\nThe same warning applies than for last_parent_hash. A script only store a\nlimited number of direct parent\n",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "show_archived",
|
|
"description": "(default false)\nshow only the archived files.\nwhen multiple archived hash share the same path, only the ones with the latest create_at\nare\ned.\n",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
{
|
|
"name": "include_without_main",
|
|
"description": "(default false)\ninclude scripts without an exported main function\n",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
{
|
|
"name": "include_draft_only",
|
|
"description": "(default false)\ninclude scripts that have no deployed version\n",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
{
|
|
"name": "is_template",
|
|
"description": "(default regardless)\nif true show only the templates\nif false show only the non templates\nif not defined, show all regardless of if the script is a template\n",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
{
|
|
"name": "kinds",
|
|
"description": "(default regardless)\nscript kinds to filter, split by comma\n",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "starred_only",
|
|
"description": "(default false)\nshow only the starred items\n",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
{
|
|
"name": "with_deployment_msg",
|
|
"description": "(default false)\ninclude deployment message\n",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
{
|
|
"name": "languages",
|
|
"in": "query",
|
|
"description": "Filter to only include scripts written in the given languages.\nAccepts multiple values as a comma-separated list.\n",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "without_description",
|
|
"in": "query",
|
|
"description": "(default false)\nIf true, the description field will be omitted from the response.\n",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
{
|
|
"name": "dedicated_worker",
|
|
"in": "query",
|
|
"description": "(default regardless)\nIf true, show only scripts with dedicated_worker enabled.\nIf false, show only scripts with dedicated_worker disabled.\n",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
{
|
|
"name": "label",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "string"
|
|
},
|
|
"description": "Filter by label"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "All scripts",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/Script"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/scripts/list_paths": {
|
|
"get": {
|
|
"summary": "list all scripts paths",
|
|
"operationId": "listScriptPaths",
|
|
"tags": [
|
|
"script"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "list of script paths",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/drafts/create": {
|
|
"post": {
|
|
"summary": "create draft",
|
|
"operationId": "createDraft",
|
|
"tags": [
|
|
"draft"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"path": {
|
|
"type": "string"
|
|
},
|
|
"typ": {
|
|
"type": "string",
|
|
"enum": [
|
|
"flow",
|
|
"script",
|
|
"app"
|
|
]
|
|
},
|
|
"value": {}
|
|
},
|
|
"required": [
|
|
"path",
|
|
"typ",
|
|
"enum"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "draft created",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/drafts/delete/{kind}/{path}": {
|
|
"delete": {
|
|
"summary": "delete draft",
|
|
"operationId": "deleteDraft",
|
|
"tags": [
|
|
"draft"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "kind",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"enum": [
|
|
"script",
|
|
"flow",
|
|
"app"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ScriptPath"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "draft deleted",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/scripts/create": {
|
|
"post": {
|
|
"summary": "create script",
|
|
"operationId": "createScript",
|
|
"x-mcp-tool": true,
|
|
"x-mcp-instructions": "To create a script, specify the path (e.g., 'f/my_folder/my_script'), the content (source code), and the language. For TypeScript, use 'bun' unless deno-specific APIs are needed.",
|
|
"x-mcp-tool-include-fields": [
|
|
"path",
|
|
"content",
|
|
"language",
|
|
"summary",
|
|
"description",
|
|
"kind",
|
|
"tag",
|
|
"deployment_message"
|
|
],
|
|
"tags": [
|
|
"script"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "Partially filled script",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/NewScript"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "script created",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/scripts/toggle_workspace_error_handler/p/{path}": {
|
|
"post": {
|
|
"summary": "Toggle ON and OFF the workspace error handler for a given script",
|
|
"operationId": "toggleWorkspaceErrorHandlerForScript",
|
|
"tags": [
|
|
"script"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ScriptPath"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "Workspace error handler enabled",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"muted": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "error handler toggled",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/workers/custom_tags": {
|
|
"get": {
|
|
"summary": "get all instance custom tags (tags are used to dispatch jobs to different worker groups)",
|
|
"operationId": "getCustomTags",
|
|
"tags": [
|
|
"worker"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "show_workspace_restriction",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
},
|
|
"required": false
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "list of custom tags",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/workers/custom_tags": {
|
|
"get": {
|
|
"summary": "get custom tags available for this workspace",
|
|
"operationId": "getCustomTagsForWorkspace",
|
|
"tags": [
|
|
"worker"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "list of custom tags for workspace",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/workers/get_default_tags": {
|
|
"get": {
|
|
"summary": "get all instance default tags",
|
|
"operationId": "geDefaultTags",
|
|
"tags": [
|
|
"worker"
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "list of default tags",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/workers/is_default_tags_per_workspace": {
|
|
"get": {
|
|
"summary": "is default tags per workspace",
|
|
"operationId": "isDefaultTagsPerWorkspace",
|
|
"tags": [
|
|
"worker"
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "is the default tags per workspace",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/workspace_dependencies/create": {
|
|
"post": {
|
|
"summary": "create workspace dependencies",
|
|
"operationId": "createWorkspaceDependencies",
|
|
"tags": [
|
|
"workspace_dependencies"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "New workspace dependencies",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/NewWorkspaceDependencies"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "workspace dependencies created",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/workspace_dependencies/archive/{language}": {
|
|
"post": {
|
|
"summary": "archive workspace dependencies (require admin)",
|
|
"operationId": "archiveWorkspaceDependencies",
|
|
"tags": [
|
|
"workspace_dependencies"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "language",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ScriptLang"
|
|
}
|
|
},
|
|
{
|
|
"name": "name",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "result",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/workspace_dependencies/delete/{language}": {
|
|
"post": {
|
|
"summary": "delete workspace dependencies (require admin)",
|
|
"operationId": "deleteWorkspaceDependencies",
|
|
"tags": [
|
|
"workspace_dependencies"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "language",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ScriptLang"
|
|
}
|
|
},
|
|
{
|
|
"name": "name",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "result",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/workspace_dependencies/list": {
|
|
"get": {
|
|
"summary": "list all workspace dependencies",
|
|
"operationId": "listWorkspaceDependencies",
|
|
"tags": [
|
|
"workspace_dependencies"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "All workspace dependencies",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/WorkspaceDependencies"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/workspace_dependencies/get_latest/{language}": {
|
|
"get": {
|
|
"summary": "get latest workspace dependencies by language and name",
|
|
"operationId": "getLatestWorkspaceDependencies",
|
|
"tags": [
|
|
"workspace_dependencies"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "language",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ScriptLang"
|
|
}
|
|
},
|
|
{
|
|
"name": "name",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Latest workspace dependencies",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/WorkspaceDependencies"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/scripts/archive/p/{path}": {
|
|
"post": {
|
|
"summary": "archive script by path",
|
|
"operationId": "archiveScriptByPath",
|
|
"tags": [
|
|
"script"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ScriptPath"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "script archived",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/scripts/archive/h/{hash}": {
|
|
"post": {
|
|
"summary": "archive script by hash",
|
|
"operationId": "archiveScriptByHash",
|
|
"tags": [
|
|
"script"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ScriptHash"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "script details",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Script"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/scripts/delete/h/{hash}": {
|
|
"post": {
|
|
"summary": "delete script by hash (erase content but keep hash, require admin)",
|
|
"operationId": "deleteScriptByHash",
|
|
"x-mcp-tool": true,
|
|
"tags": [
|
|
"script"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ScriptHash"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "script details",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Script"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/scripts/delete/p/{path}": {
|
|
"post": {
|
|
"summary": "delete script at a given path (require admin)",
|
|
"operationId": "deleteScriptByPath",
|
|
"x-mcp-tool": true,
|
|
"tags": [
|
|
"script"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ScriptPath"
|
|
},
|
|
{
|
|
"name": "keep_captures",
|
|
"description": "keep captures",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "script path",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/scripts/delete_bulk": {
|
|
"delete": {
|
|
"summary": "delete scripts in bulk",
|
|
"operationId": "deleteScriptsBulk",
|
|
"tags": [
|
|
"script"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "paths to delete",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"paths": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"paths"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "deleted paths",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/scripts/get/p/{path}": {
|
|
"get": {
|
|
"summary": "get script by path",
|
|
"operationId": "getScriptByPath",
|
|
"x-mcp-tool": true,
|
|
"tags": [
|
|
"script"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ScriptPath"
|
|
},
|
|
{
|
|
"name": "with_starred_info",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "script details",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Script"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/scripts/get_triggers_count/{path}": {
|
|
"get": {
|
|
"summary": "get triggers count of script",
|
|
"operationId": "getTriggersCountOfScript",
|
|
"tags": [
|
|
"script"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ScriptPath"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "triggers count",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/TriggersCount"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/scripts/list_tokens/{path}": {
|
|
"get": {
|
|
"summary": "get tokens with script scope",
|
|
"operationId": "listTokensOfScript",
|
|
"tags": [
|
|
"script"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ScriptPath"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "tokens list",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/TruncatedToken"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/scripts/get/draft/{path}": {
|
|
"get": {
|
|
"summary": "get script by path with draft",
|
|
"operationId": "getScriptByPathWithDraft",
|
|
"tags": [
|
|
"script"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ScriptPath"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "script details",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/NewScriptWithDraft"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/scripts/history/p/{path}": {
|
|
"get": {
|
|
"summary": "get history of a script by path",
|
|
"operationId": "getScriptHistoryByPath",
|
|
"tags": [
|
|
"script"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ScriptPath"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "script history",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ScriptHistory"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/scripts/list_paths_from_workspace_runnable/{path}": {
|
|
"get": {
|
|
"summary": "list script paths using provided script as a relative import",
|
|
"operationId": "listScriptPathsFromWorkspaceRunnable",
|
|
"tags": [
|
|
"script"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ScriptPath"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "list of script paths",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/scripts/get_latest_version/{path}": {
|
|
"get": {
|
|
"summary": "get scripts's latest version (hash)",
|
|
"operationId": "getScriptLatestVersion",
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ScriptPath"
|
|
}
|
|
],
|
|
"tags": [
|
|
"script"
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Script version/hash",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ScriptHistory"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/scripts/history_update/h/{hash}/p/{path}": {
|
|
"post": {
|
|
"summary": "update history of a script",
|
|
"operationId": "updateScriptHistory",
|
|
"tags": [
|
|
"script"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ScriptHash"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ScriptPath"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "Script deployment message",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"deployment_msg": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "success",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/scripts/list_dedicated_with_deps": {
|
|
"get": {
|
|
"summary": "list dedicated worker scripts with workspace dependency annotations",
|
|
"operationId": "listDedicatedWithDeps",
|
|
"tags": [
|
|
"script"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "list of dedicated scripts with their workspace dependency names",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"path": {
|
|
"type": "string"
|
|
},
|
|
"language": {
|
|
"type": "string",
|
|
"enum": [
|
|
"python3",
|
|
"deno",
|
|
"go",
|
|
"bash",
|
|
"powershell",
|
|
"postgresql",
|
|
"mysql",
|
|
"bigquery",
|
|
"snowflake",
|
|
"mssql",
|
|
"graphql",
|
|
"nativets",
|
|
"bun",
|
|
"bunnative",
|
|
"php",
|
|
"rust",
|
|
"ansible",
|
|
"csharp",
|
|
"oracledb",
|
|
"duckdb",
|
|
"java",
|
|
"ruby"
|
|
]
|
|
},
|
|
"workspace_dep_names": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"path",
|
|
"language",
|
|
"workspace_dep_names"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/scripts/raw/p/{path}": {
|
|
"get": {
|
|
"summary": "raw script by path",
|
|
"operationId": "rawScriptByPath",
|
|
"tags": [
|
|
"script"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ScriptPath"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "script content",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/scripts_u/tokened_raw/{workspace}/{token}/{path}": {
|
|
"get": {
|
|
"summary": "raw script by path with a token (mostly used by lsp to be used with import maps to resolve scripts)",
|
|
"operationId": "rawScriptByPathTokened",
|
|
"tags": [
|
|
"script"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Token"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ScriptPath"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "script content",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/scripts/exists/p/{path}": {
|
|
"get": {
|
|
"summary": "exists script by path",
|
|
"operationId": "existsScriptByPath",
|
|
"tags": [
|
|
"script"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ScriptPath"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "does it exists",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/scripts/get/h/{hash}": {
|
|
"get": {
|
|
"summary": "get script by hash",
|
|
"operationId": "getScriptByHash",
|
|
"tags": [
|
|
"script"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ScriptHash"
|
|
},
|
|
{
|
|
"name": "with_starred_info",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
{
|
|
"name": "authed",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "script details",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Script"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/scripts/raw/h/{path}": {
|
|
"get": {
|
|
"summary": "raw script by hash",
|
|
"operationId": "rawScriptByHash",
|
|
"tags": [
|
|
"script"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ScriptPath"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "script content",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/scripts/deployment_status/h/{hash}": {
|
|
"get": {
|
|
"summary": "get script deployment status",
|
|
"operationId": "getScriptDeploymentStatus",
|
|
"tags": [
|
|
"script"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ScriptHash"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "script details",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"lock": {
|
|
"type": "string"
|
|
},
|
|
"lock_error_logs": {
|
|
"type": "string"
|
|
},
|
|
"job_id": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/scripts/ci_test_results/{kind}/{path}": {
|
|
"get": {
|
|
"summary": "get CI test results for a script, flow, or resource",
|
|
"operationId": "getCiTestResults",
|
|
"tags": [
|
|
"script"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "kind",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"enum": [
|
|
"script",
|
|
"flow",
|
|
"resource"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "path",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "CI test results",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/CiTestResult"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/scripts/ci_test_results_batch": {
|
|
"post": {
|
|
"summary": "get CI test results for multiple items",
|
|
"operationId": "getCiTestResultsBatch",
|
|
"tags": [
|
|
"script"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"required": [
|
|
"items"
|
|
],
|
|
"properties": {
|
|
"items": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"required": [
|
|
"path",
|
|
"kind"
|
|
],
|
|
"properties": {
|
|
"path": {
|
|
"type": "string"
|
|
},
|
|
"kind": {
|
|
"type": "string",
|
|
"enum": [
|
|
"script",
|
|
"flow",
|
|
"resource"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "CI test results by item key",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/CiTestResult"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/scripts/raw_temp/store": {
|
|
"post": {
|
|
"summary": "store raw script content temporarily for CLI lock generation",
|
|
"operationId": "storeRawScriptTemp",
|
|
"tags": [
|
|
"script"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "script content to store",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "hash of stored content",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/scripts/raw_temp/diff": {
|
|
"post": {
|
|
"summary": "diff local script hashes against deployed versions",
|
|
"operationId": "diffRawScriptsWithDeployed",
|
|
"tags": [
|
|
"script"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "scripts and workspace deps to diff against deployed versions",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"required": [
|
|
"scripts"
|
|
],
|
|
"properties": {
|
|
"scripts": {
|
|
"description": "map of script path to SHA256 content hash",
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"workspace_deps": {
|
|
"description": "workspace dependencies to diff",
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"required": [
|
|
"path",
|
|
"language",
|
|
"hash"
|
|
],
|
|
"properties": {
|
|
"path": {
|
|
"description": "CLI path (e.g. dependencies/package.json)",
|
|
"type": "string"
|
|
},
|
|
"language": {
|
|
"$ref": "#/components/schemas/ScriptLang"
|
|
},
|
|
"name": {
|
|
"description": "named workspace dependency (null for default)",
|
|
"type": "string"
|
|
},
|
|
"hash": {
|
|
"description": "SHA256 content hash",
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "list of paths that differ from deployed versions",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/jobs/list_selected_job_groups": {
|
|
"post": {
|
|
"summary": "list selected jobs script/flow schemas grouped by (kind, path)",
|
|
"operationId": "listSelectedJobGroups",
|
|
"tags": [
|
|
"job"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "script args",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "result",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"kind": {
|
|
"type": "string",
|
|
"enum": [
|
|
"script",
|
|
"flow"
|
|
]
|
|
},
|
|
"script_path": {
|
|
"type": "string"
|
|
},
|
|
"latest_schema": {
|
|
"type": "object"
|
|
},
|
|
"schemas": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"schema": {
|
|
"type": "object"
|
|
},
|
|
"script_hash": {
|
|
"type": "string"
|
|
},
|
|
"job_ids": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"schema",
|
|
"script_hash",
|
|
"job_ids"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"kind",
|
|
"script_path",
|
|
"latest_schema",
|
|
"schemas"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/jobs/run/p/{path}": {
|
|
"post": {
|
|
"summary": "run script by path",
|
|
"operationId": "runScriptByPath",
|
|
"x-mcp-tool": true,
|
|
"x-mcp-instructions": "You should first use getScriptByPath to retrieve the script's schema and understand what arguments are expected.",
|
|
"x-mcp-tool-include-query-params": [],
|
|
"tags": [
|
|
"job"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ScriptPath"
|
|
},
|
|
{
|
|
"name": "scheduled_for",
|
|
"description": "when to schedule this job (leave empty for immediate run)",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
}
|
|
},
|
|
{
|
|
"name": "scheduled_in_secs",
|
|
"description": "schedule the script to execute in the number of seconds starting now",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "integer"
|
|
}
|
|
},
|
|
{
|
|
"name": "skip_preprocessor",
|
|
"description": "skip the preprocessor",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ParentJob"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/WorkerTag"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/CacheTtl"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/NewJobId"
|
|
},
|
|
{
|
|
"name": "invisible_to_owner",
|
|
"description": "make the run invisible to the the script owner (default false)",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "script args",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ScriptArgs"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "job created",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/jobs/run_wait_result/p/{path}": {
|
|
"post": {
|
|
"summary": "run script by path",
|
|
"operationId": "runWaitResultScriptByPath",
|
|
"tags": [
|
|
"job"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ScriptPath"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ParentJob"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/WorkerTag"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/CacheTtl"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/NewJobId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/IncludeHeader"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/QueueLimit"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/SkipPreprocessor"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "script args",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ScriptArgs"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "job result",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"get": {
|
|
"summary": "run script by path with get",
|
|
"operationId": "runWaitResultScriptByPathGet",
|
|
"tags": [
|
|
"job"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ScriptPath"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ParentJob"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/WorkerTag"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/CacheTtl"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/NewJobId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/IncludeHeader"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/QueueLimit"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Payload"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/SkipPreprocessor"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "job result",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/jobs/run_wait_result/f/{path}": {
|
|
"post": {
|
|
"summary": "run flow by path and wait until completion",
|
|
"operationId": "runWaitResultFlowByPath",
|
|
"tags": [
|
|
"job"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ScriptPath"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/IncludeHeader"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/QueueLimit"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/NewJobId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/SkipPreprocessor"
|
|
},
|
|
{
|
|
"name": "memory_id",
|
|
"description": "memory ID for chat-enabled flows",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "script args",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ScriptArgs"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "job result",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/jobs/run_wait_result/fv/{version}": {
|
|
"post": {
|
|
"summary": "run flow by version and wait until completion",
|
|
"operationId": "runWaitResultFlowByVersion",
|
|
"tags": [
|
|
"job"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "version",
|
|
"description": "flow version ID",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int64"
|
|
}
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/IncludeHeader"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/QueueLimit"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/NewJobId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/SkipPreprocessor"
|
|
},
|
|
{
|
|
"name": "memory_id",
|
|
"description": "memory ID for chat-enabled flows",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "script args",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ScriptArgs"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "job result",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"get": {
|
|
"summary": "run flow by version with GET and wait until completion",
|
|
"operationId": "runWaitResultFlowByVersionGet",
|
|
"tags": [
|
|
"job"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "version",
|
|
"description": "flow version ID",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int64"
|
|
}
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/IncludeHeader"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/QueueLimit"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Payload"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/NewJobId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/SkipPreprocessor"
|
|
},
|
|
{
|
|
"name": "memory_id",
|
|
"description": "memory ID for chat-enabled flows",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "job result",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/jobs/run_and_stream/f/{path}": {
|
|
"post": {
|
|
"summary": "run flow by path and stream updates via SSE",
|
|
"operationId": "runAndStreamFlowByPath",
|
|
"tags": [
|
|
"job"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ScriptPath"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/IncludeHeader"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/QueueLimit"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/NewJobId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/SkipPreprocessor"
|
|
},
|
|
{
|
|
"name": "memory_id",
|
|
"description": "memory ID for chat-enabled flows",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
}
|
|
},
|
|
{
|
|
"name": "poll_delay_ms",
|
|
"description": "delay between polling for job updates in milliseconds",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int64"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "flow args",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ScriptArgs"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "server-sent events stream of job updates",
|
|
"content": {
|
|
"text/event-stream": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"get": {
|
|
"summary": "run flow by path with GET and stream updates via SSE",
|
|
"operationId": "runAndStreamFlowByPathGet",
|
|
"tags": [
|
|
"job"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ScriptPath"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/IncludeHeader"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/QueueLimit"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Payload"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/NewJobId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/SkipPreprocessor"
|
|
},
|
|
{
|
|
"name": "memory_id",
|
|
"description": "memory ID for chat-enabled flows",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
}
|
|
},
|
|
{
|
|
"name": "poll_delay_ms",
|
|
"description": "delay between polling for job updates in milliseconds",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int64"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "server-sent events stream of job updates",
|
|
"content": {
|
|
"text/event-stream": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/jobs/run_and_stream/fv/{version}": {
|
|
"post": {
|
|
"summary": "run flow by version and stream updates via SSE",
|
|
"operationId": "runAndStreamFlowByVersion",
|
|
"tags": [
|
|
"job"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "version",
|
|
"description": "flow version ID",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int64"
|
|
}
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/IncludeHeader"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/QueueLimit"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/NewJobId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/SkipPreprocessor"
|
|
},
|
|
{
|
|
"name": "memory_id",
|
|
"description": "memory ID for chat-enabled flows",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
}
|
|
},
|
|
{
|
|
"name": "poll_delay_ms",
|
|
"description": "delay between polling for job updates in milliseconds",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int64"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "flow args",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ScriptArgs"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "server-sent events stream of job updates",
|
|
"content": {
|
|
"text/event-stream": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"get": {
|
|
"summary": "run flow by version with GET and stream updates via SSE",
|
|
"operationId": "runAndStreamFlowByVersionGet",
|
|
"tags": [
|
|
"job"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "version",
|
|
"description": "flow version ID",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int64"
|
|
}
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/IncludeHeader"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/QueueLimit"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Payload"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/NewJobId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/SkipPreprocessor"
|
|
},
|
|
{
|
|
"name": "memory_id",
|
|
"description": "memory ID for chat-enabled flows",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
}
|
|
},
|
|
{
|
|
"name": "poll_delay_ms",
|
|
"description": "delay between polling for job updates in milliseconds",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int64"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "server-sent events stream of job updates",
|
|
"content": {
|
|
"text/event-stream": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/jobs/run_and_stream/p/{path}": {
|
|
"post": {
|
|
"summary": "run script by path and stream updates via SSE",
|
|
"operationId": "runAndStreamScriptByPath",
|
|
"tags": [
|
|
"job"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ScriptPath"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ParentJob"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/WorkerTag"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/CacheTtl"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/NewJobId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/IncludeHeader"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/QueueLimit"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/SkipPreprocessor"
|
|
},
|
|
{
|
|
"name": "poll_delay_ms",
|
|
"description": "delay between polling for job updates in milliseconds",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int64"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "script args",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ScriptArgs"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "server-sent events stream of job updates",
|
|
"content": {
|
|
"text/event-stream": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"get": {
|
|
"summary": "run script by path with GET and stream updates via SSE",
|
|
"operationId": "runAndStreamScriptByPathGet",
|
|
"tags": [
|
|
"job"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ScriptPath"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ParentJob"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/WorkerTag"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/CacheTtl"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/NewJobId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/IncludeHeader"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/QueueLimit"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Payload"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/SkipPreprocessor"
|
|
},
|
|
{
|
|
"name": "poll_delay_ms",
|
|
"description": "delay between polling for job updates in milliseconds",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int64"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "server-sent events stream of job updates",
|
|
"content": {
|
|
"text/event-stream": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/jobs/run_and_stream/h/{hash}": {
|
|
"post": {
|
|
"summary": "run script by hash and stream updates via SSE",
|
|
"operationId": "runAndStreamScriptByHash",
|
|
"tags": [
|
|
"job"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "hash",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ParentJob"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/WorkerTag"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/CacheTtl"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/NewJobId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/IncludeHeader"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/QueueLimit"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/SkipPreprocessor"
|
|
},
|
|
{
|
|
"name": "poll_delay_ms",
|
|
"description": "delay between polling for job updates in milliseconds",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int64"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "script args",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ScriptArgs"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "server-sent events stream of job updates",
|
|
"content": {
|
|
"text/event-stream": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"get": {
|
|
"summary": "run script by hash with GET and stream updates via SSE",
|
|
"operationId": "runAndStreamScriptByHashGet",
|
|
"tags": [
|
|
"job"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "hash",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ParentJob"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/WorkerTag"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/CacheTtl"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/NewJobId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/IncludeHeader"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/QueueLimit"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Payload"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/SkipPreprocessor"
|
|
},
|
|
{
|
|
"name": "poll_delay_ms",
|
|
"description": "delay between polling for job updates in milliseconds",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int64"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "server-sent events stream of job updates",
|
|
"content": {
|
|
"text/event-stream": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/jobs/result_by_id/{flow_job_id}/{node_id}": {
|
|
"get": {
|
|
"summary": "get job result by id",
|
|
"operationId": "resultById",
|
|
"tags": [
|
|
"job"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "flow_job_id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "node_id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "job result",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/flows/list_paths": {
|
|
"get": {
|
|
"summary": "list all flow paths",
|
|
"operationId": "listFlowPaths",
|
|
"tags": [
|
|
"flow"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "list of flow paths",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/flows/list_search": {
|
|
"get": {
|
|
"summary": "list flows for search",
|
|
"operationId": "listSearchFlow",
|
|
"tags": [
|
|
"flow"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "flow list",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"path": {
|
|
"type": "string"
|
|
},
|
|
"value": {}
|
|
},
|
|
"required": [
|
|
"path",
|
|
"value"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/flows/list": {
|
|
"get": {
|
|
"summary": "list all flows",
|
|
"operationId": "listFlows",
|
|
"x-mcp-tool": true,
|
|
"tags": [
|
|
"flow"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Page"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/PerPage"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/OrderDesc"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/CreatedBy"
|
|
},
|
|
{
|
|
"name": "path_start",
|
|
"description": "mask to filter matching starting path",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "path_exact",
|
|
"description": "mask to filter exact matching path",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "show_archived",
|
|
"description": "(default false)\nshow only the archived files.\nwhen multiple archived hash share the same path, only the ones with the latest create_at\nare displayed.\n",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
{
|
|
"name": "starred_only",
|
|
"description": "(default false)\nshow only the starred items\n",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
{
|
|
"name": "include_draft_only",
|
|
"description": "(default false)\ninclude items that have no deployed version\n",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
{
|
|
"name": "with_deployment_msg",
|
|
"description": "(default false)\ninclude deployment message\n",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
{
|
|
"name": "without_description",
|
|
"in": "query",
|
|
"description": "(default false)\nIf true, the description field will be omitted from the response.\n",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
{
|
|
"name": "dedicated_worker",
|
|
"in": "query",
|
|
"description": "(default regardless)\nIf true, show only flows with dedicated_worker enabled.\nIf false, show only flows with dedicated_worker disabled.\n",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
{
|
|
"name": "label",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "string"
|
|
},
|
|
"description": "Filter by label"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "All flow",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/Flow"
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"has_draft": {
|
|
"type": "boolean"
|
|
},
|
|
"draft_only": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/flows/history/p/{path}": {
|
|
"get": {
|
|
"summary": "get flow history by path",
|
|
"operationId": "getFlowHistory",
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ScriptPath"
|
|
}
|
|
],
|
|
"tags": [
|
|
"flow"
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Flow history",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/FlowVersion"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/flows/get_latest_version/{path}": {
|
|
"get": {
|
|
"summary": "get flow's latest version",
|
|
"operationId": "getFlowLatestVersion",
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ScriptPath"
|
|
}
|
|
],
|
|
"tags": [
|
|
"flow"
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Flow version",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/FlowVersion"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/flows/list_paths_from_workspace_runnable/{runnable_kind}/{path}": {
|
|
"get": {
|
|
"summary": "list flow paths from workspace runnable",
|
|
"operationId": "listFlowPathsFromWorkspaceRunnable",
|
|
"tags": [
|
|
"flow"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/RunnableKind"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ScriptPath"
|
|
},
|
|
{
|
|
"name": "match_path_start",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "list of flow paths",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/flows/get/v/{version}": {
|
|
"get": {
|
|
"summary": "get flow version",
|
|
"operationId": "getFlowVersion",
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "version",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
],
|
|
"tags": [
|
|
"flow"
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "flow details",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Flow"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/flows/history_update/v/{version}": {
|
|
"post": {
|
|
"summary": "update flow history",
|
|
"operationId": "updateFlowHistory",
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "version",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "Flow deployment message",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"deployment_msg": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"deployment_msg"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"tags": [
|
|
"flow"
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "success",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/flows/get/{path}": {
|
|
"get": {
|
|
"summary": "get flow by path",
|
|
"operationId": "getFlowByPath",
|
|
"x-mcp-tool": true,
|
|
"tags": [
|
|
"flow"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ScriptPath"
|
|
},
|
|
{
|
|
"name": "with_starred_info",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "flow details",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Flow"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/flows/deployment_status/p/{path}": {
|
|
"get": {
|
|
"summary": "get flow deployment status",
|
|
"operationId": "getFlowDeploymentStatus",
|
|
"tags": [
|
|
"flow"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ScriptPath"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "flow status",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"lock_error_logs": {
|
|
"type": "string"
|
|
},
|
|
"job_id": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/flows/get_triggers_count/{path}": {
|
|
"get": {
|
|
"summary": "get triggers count of flow",
|
|
"operationId": "getTriggersCountOfFlow",
|
|
"tags": [
|
|
"flow"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ScriptPath"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "triggers count",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/TriggersCount"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/flows/list_tokens/{path}": {
|
|
"get": {
|
|
"summary": "get tokens with flow scope",
|
|
"operationId": "listTokensOfFlow",
|
|
"tags": [
|
|
"flow"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ScriptPath"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "tokens list",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/TruncatedToken"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/flows/toggle_workspace_error_handler/{path}": {
|
|
"post": {
|
|
"summary": "Toggle ON and OFF the workspace error handler for a given flow",
|
|
"operationId": "toggleWorkspaceErrorHandlerForFlow",
|
|
"tags": [
|
|
"flow"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ScriptPath"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "Workspace error handler enabled",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"muted": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "error handler toggled",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/flows/get/draft/{path}": {
|
|
"get": {
|
|
"summary": "get flow by path with draft",
|
|
"operationId": "getFlowByPathWithDraft",
|
|
"tags": [
|
|
"flow"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ScriptPath"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "flow details with draft",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/Flow"
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"draft": {
|
|
"$ref": "#/components/schemas/Flow"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/flows/exists/{path}": {
|
|
"get": {
|
|
"summary": "exists flow by path",
|
|
"operationId": "existsFlowByPath",
|
|
"tags": [
|
|
"flow"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ScriptPath"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "flow details",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/flows/create": {
|
|
"post": {
|
|
"summary": "create flow",
|
|
"operationId": "createFlow",
|
|
"x-mcp-tool": true,
|
|
"x-mcp-tool-include-fields": [
|
|
"path",
|
|
"summary",
|
|
"description",
|
|
"value",
|
|
"schema",
|
|
"tag",
|
|
"deployment_message"
|
|
],
|
|
"x-mcp-tool-opaque-fields": [
|
|
"value",
|
|
"schema"
|
|
],
|
|
"tags": [
|
|
"flow"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "Partially filled flow",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/OpenFlowWPath"
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"draft_only": {
|
|
"type": "boolean"
|
|
},
|
|
"deployment_message": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "flow created",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/flows/update/{path}": {
|
|
"post": {
|
|
"summary": "update flow",
|
|
"operationId": "updateFlow",
|
|
"x-mcp-tool": true,
|
|
"x-mcp-tool-include-fields": [
|
|
"path",
|
|
"summary",
|
|
"description",
|
|
"value",
|
|
"schema",
|
|
"tag",
|
|
"deployment_message"
|
|
],
|
|
"x-mcp-tool-opaque-fields": [
|
|
"value",
|
|
"schema"
|
|
],
|
|
"tags": [
|
|
"flow"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ScriptPath"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "Partially filled flow",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/OpenFlowWPath"
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"deployment_message": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "flow updated",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/flows/archive/{path}": {
|
|
"post": {
|
|
"summary": "archive flow by path",
|
|
"operationId": "archiveFlowByPath",
|
|
"tags": [
|
|
"flow"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ScriptPath"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "archiveFlow",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"archived": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "flow archived",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/flows/delete/{path}": {
|
|
"delete": {
|
|
"summary": "delete flow by path",
|
|
"operationId": "deleteFlowByPath",
|
|
"x-mcp-tool": true,
|
|
"tags": [
|
|
"flow"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ScriptPath"
|
|
},
|
|
{
|
|
"name": "keep_captures",
|
|
"description": "keep captures",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "flow delete",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/flow_conversations/list": {
|
|
"get": {
|
|
"summary": "list flow conversations",
|
|
"operationId": "listFlowConversations",
|
|
"tags": [
|
|
"flow_conversation"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Page"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/PerPage"
|
|
},
|
|
{
|
|
"name": "flow_path",
|
|
"description": "filter conversations by flow path",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "flow conversations list",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/FlowConversation"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/flow_conversations/delete/{conversation_id}": {
|
|
"delete": {
|
|
"summary": "delete flow conversation",
|
|
"operationId": "deleteFlowConversation",
|
|
"tags": [
|
|
"flow_conversation"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "conversation_id",
|
|
"description": "conversation id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "flow conversation deleted",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/flow_conversations/{conversation_id}/messages": {
|
|
"get": {
|
|
"summary": "list conversation messages",
|
|
"operationId": "listConversationMessages",
|
|
"tags": [
|
|
"flow_conversation"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Page"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/PerPage"
|
|
},
|
|
{
|
|
"name": "conversation_id",
|
|
"description": "conversation id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
}
|
|
},
|
|
{
|
|
"name": "after_id",
|
|
"description": "id to fetch only the messages after that id",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "conversation messages",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/FlowConversationMessage"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/path_autocomplete/list_paths": {
|
|
"get": {
|
|
"summary": "list all paths in a workspace for client-side autocomplete",
|
|
"description": "Returns the flat list of all item paths visible to the caller across\nscripts, flows, apps, raw apps, variables, and resources. Intended to\nfeed an entirely client-side path autocomplete UI: the frontend fetches\nonce (server caches per workspace for 60s) and performs all prefix/segment\ncomputation locally. Capped at 20,000 paths (5,000 per table).\n",
|
|
"operationId": "listPathAutocompletePaths",
|
|
"tags": [
|
|
"path_autocomplete"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "deduplicated path list, sorted lexicographically",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"paths": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"paths"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/raw_apps/list": {
|
|
"get": {
|
|
"summary": "list all raw apps",
|
|
"operationId": "listRawApps",
|
|
"tags": [
|
|
"raw_app"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Page"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/PerPage"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/OrderDesc"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/CreatedBy"
|
|
},
|
|
{
|
|
"name": "path_start",
|
|
"description": "mask to filter matching starting path",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "path_exact",
|
|
"description": "mask to filter exact matching path",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "starred_only",
|
|
"description": "(default false)\nshow only the starred items\n",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
{
|
|
"name": "label",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "string"
|
|
},
|
|
"description": "Filter by label"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "All raw apps",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ListableRawApp"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/apps/get_data/v/{secretWithExtension}": {
|
|
"get": {
|
|
"summary": "get raw app data by",
|
|
"operationId": "getRawAppData",
|
|
"tags": [
|
|
"app"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "secretWithExtension",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "app details",
|
|
"content": {
|
|
"text/javascript": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/apps/list_search": {
|
|
"get": {
|
|
"summary": "list apps for search",
|
|
"operationId": "listSearchApp",
|
|
"tags": [
|
|
"app"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "app list",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"path": {
|
|
"type": "string"
|
|
},
|
|
"value": {}
|
|
},
|
|
"required": [
|
|
"path",
|
|
"value"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/apps/list": {
|
|
"get": {
|
|
"summary": "list all apps",
|
|
"operationId": "listApps",
|
|
"tags": [
|
|
"app"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Page"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/PerPage"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/OrderDesc"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/CreatedBy"
|
|
},
|
|
{
|
|
"name": "path_start",
|
|
"description": "mask to filter matching starting path",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "path_exact",
|
|
"description": "mask to filter exact matching path",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "starred_only",
|
|
"description": "(default false)\nshow only the starred items\n",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
{
|
|
"name": "include_draft_only",
|
|
"description": "(default false)\ninclude items that have no deployed version\n",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
{
|
|
"name": "with_deployment_msg",
|
|
"description": "(default false)\ninclude deployment message\n",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
{
|
|
"name": "label",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "string"
|
|
},
|
|
"description": "Filter by label"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "All apps",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ListableApp"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/apps/create": {
|
|
"post": {
|
|
"summary": "create app",
|
|
"operationId": "createApp",
|
|
"x-mcp-tool": true,
|
|
"x-mcp-tool-include-fields": [
|
|
"path",
|
|
"value",
|
|
"summary",
|
|
"policy",
|
|
"deployment_message"
|
|
],
|
|
"x-mcp-tool-opaque-fields": [
|
|
"value",
|
|
"policy"
|
|
],
|
|
"tags": [
|
|
"app"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "new app",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"path": {
|
|
"type": "string"
|
|
},
|
|
"value": {},
|
|
"summary": {
|
|
"type": "string"
|
|
},
|
|
"policy": {
|
|
"$ref": "#/components/schemas/Policy"
|
|
},
|
|
"draft_only": {
|
|
"type": "boolean"
|
|
},
|
|
"deployment_message": {
|
|
"type": "string"
|
|
},
|
|
"custom_path": {
|
|
"type": "string"
|
|
},
|
|
"preserve_on_behalf_of": {
|
|
"type": "boolean",
|
|
"description": "When true and the caller is a member of the 'wm_deployers' group, preserves the original on_behalf_of value in the policy instead of overwriting it."
|
|
},
|
|
"labels": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"path",
|
|
"value",
|
|
"summary",
|
|
"policy"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "app created",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/apps/create_raw": {
|
|
"post": {
|
|
"summary": "create app raw",
|
|
"operationId": "createAppRaw",
|
|
"tags": [
|
|
"app"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "new app",
|
|
"required": true,
|
|
"content": {
|
|
"multipart/form-data": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"app": {
|
|
"type": "object",
|
|
"properties": {
|
|
"path": {
|
|
"type": "string"
|
|
},
|
|
"value": {},
|
|
"summary": {
|
|
"type": "string"
|
|
},
|
|
"policy": {
|
|
"$ref": "#/components/schemas/Policy"
|
|
},
|
|
"draft_only": {
|
|
"type": "boolean"
|
|
},
|
|
"deployment_message": {
|
|
"type": "string"
|
|
},
|
|
"custom_path": {
|
|
"type": "string"
|
|
},
|
|
"preserve_on_behalf_of": {
|
|
"type": "boolean",
|
|
"description": "When true and the caller is a member of the 'wm_deployers' group, preserves the original on_behalf_of value in the policy instead of overwriting it."
|
|
},
|
|
"labels": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"path",
|
|
"value",
|
|
"summary",
|
|
"policy"
|
|
]
|
|
},
|
|
"js": {
|
|
"type": "string"
|
|
},
|
|
"css": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "app created",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/apps/exists/{path}": {
|
|
"get": {
|
|
"summary": "does an app exisst at path",
|
|
"operationId": "existsApp",
|
|
"tags": [
|
|
"app"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "app exists",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/apps/get/p/{path}": {
|
|
"get": {
|
|
"summary": "get app by path",
|
|
"operationId": "getAppByPath",
|
|
"tags": [
|
|
"app"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ScriptPath"
|
|
},
|
|
{
|
|
"name": "with_starred_info",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "app details",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/AppWithLastVersion"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/apps/get/lite/{path}": {
|
|
"get": {
|
|
"summary": "get app lite by path",
|
|
"operationId": "getAppLiteByPath",
|
|
"tags": [
|
|
"app"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ScriptPath"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "app lite details",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/AppWithLastVersion"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/apps/get/draft/{path}": {
|
|
"get": {
|
|
"summary": "get app by path with draft",
|
|
"operationId": "getAppByPathWithDraft",
|
|
"tags": [
|
|
"app"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ScriptPath"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "app details with draft",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/AppWithLastVersionWDraft"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/apps/history/p/{path}": {
|
|
"get": {
|
|
"summary": "get app history by path",
|
|
"operationId": "getAppHistoryByPath",
|
|
"tags": [
|
|
"app"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ScriptPath"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "app history",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/AppHistory"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/apps/get_latest_version/{path}": {
|
|
"get": {
|
|
"summary": "get apps's latest version",
|
|
"operationId": "getAppLatestVersion",
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ScriptPath"
|
|
}
|
|
],
|
|
"tags": [
|
|
"app"
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "App version",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/AppHistory"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/apps/list_paths_from_workspace_runnable/{runnable_kind}/{path}": {
|
|
"get": {
|
|
"summary": "list app paths from workspace runnable",
|
|
"operationId": "listAppPathsFromWorkspaceRunnable",
|
|
"tags": [
|
|
"app"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/RunnableKind"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ScriptPath"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "list of app paths",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/apps/history_update/a/{id}/v/{version}": {
|
|
"post": {
|
|
"summary": "update app history",
|
|
"operationId": "updateAppHistory",
|
|
"tags": [
|
|
"app"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/PathId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/PathVersion"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "App deployment message",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"deployment_msg": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "success",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/apps_u/public_app/{path}": {
|
|
"get": {
|
|
"summary": "get public app by secret",
|
|
"operationId": "getPublicAppBySecret",
|
|
"tags": [
|
|
"app"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "app details",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/AppWithLastVersion"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/apps_u/public_resource/{path}": {
|
|
"get": {
|
|
"summary": "get public resource",
|
|
"operationId": "get public resource",
|
|
"tags": [
|
|
"app"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "resource value",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/apps/secret_of/{path}": {
|
|
"get": {
|
|
"summary": "get public secret of app",
|
|
"operationId": "getPublicSecretOfApp",
|
|
"tags": [
|
|
"app"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "app secret",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/apps/secret_of_latest_version/{path}": {
|
|
"get": {
|
|
"summary": "get public secret of latest version of an app bundle",
|
|
"operationId": "getPublicSecretOfLatestVersionOfApp",
|
|
"tags": [
|
|
"app"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "app secret",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/apps/get/v/{id}": {
|
|
"get": {
|
|
"summary": "get app by version",
|
|
"operationId": "getAppByVersion",
|
|
"tags": [
|
|
"app"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/PathId"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "app details",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/AppWithLastVersion"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/apps/delete/{path}": {
|
|
"delete": {
|
|
"summary": "delete app",
|
|
"operationId": "deleteApp",
|
|
"tags": [
|
|
"app"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "app deleted",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/apps/update/{path}": {
|
|
"post": {
|
|
"summary": "update app",
|
|
"operationId": "updateApp",
|
|
"x-mcp-tool": true,
|
|
"x-mcp-tool-include-fields": [
|
|
"path",
|
|
"value",
|
|
"summary",
|
|
"policy",
|
|
"deployment_message"
|
|
],
|
|
"x-mcp-tool-opaque-fields": [
|
|
"value",
|
|
"policy"
|
|
],
|
|
"tags": [
|
|
"app"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ScriptPath"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "update app",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"path": {
|
|
"type": "string"
|
|
},
|
|
"summary": {
|
|
"type": "string"
|
|
},
|
|
"value": {},
|
|
"policy": {
|
|
"$ref": "#/components/schemas/Policy"
|
|
},
|
|
"deployment_message": {
|
|
"type": "string"
|
|
},
|
|
"custom_path": {
|
|
"type": "string"
|
|
},
|
|
"preserve_on_behalf_of": {
|
|
"type": "boolean",
|
|
"description": "When true and the caller is a member of the 'wm_deployers' group, preserves the original on_behalf_of value in the policy instead of overwriting it."
|
|
},
|
|
"labels": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "app updated",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/apps/update_raw/{path}": {
|
|
"post": {
|
|
"summary": "update app",
|
|
"operationId": "updateAppRaw",
|
|
"tags": [
|
|
"app"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ScriptPath"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "update app",
|
|
"required": true,
|
|
"content": {
|
|
"multipart/form-data": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"app": {
|
|
"type": "object",
|
|
"properties": {
|
|
"path": {
|
|
"type": "string"
|
|
},
|
|
"summary": {
|
|
"type": "string"
|
|
},
|
|
"value": {},
|
|
"policy": {
|
|
"$ref": "#/components/schemas/Policy"
|
|
},
|
|
"deployment_message": {
|
|
"type": "string"
|
|
},
|
|
"custom_path": {
|
|
"type": "string"
|
|
},
|
|
"preserve_on_behalf_of": {
|
|
"type": "boolean",
|
|
"description": "When true and the caller is a member of the 'wm_deployers' group, preserves the original on_behalf_of value in the policy instead of overwriting it."
|
|
},
|
|
"labels": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"js": {
|
|
"type": "string"
|
|
},
|
|
"css": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "app updated",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/apps/custom_path_exists/{custom_path}": {
|
|
"get": {
|
|
"summary": "check if custom path exists",
|
|
"operationId": "customPathExists",
|
|
"tags": [
|
|
"app"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/CustomPath"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "custom path exists",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/apps/sign_s3_objects": {
|
|
"post": {
|
|
"summary": "sign s3 objects, to be used by anonymous users in public apps",
|
|
"operationId": "signS3Objects",
|
|
"tags": [
|
|
"app"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "s3 objects to sign",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"s3_objects": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/S3Object"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"s3_objects"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "signed s3 objects",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/S3Object"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/apps_u/execute_component/{path}": {
|
|
"post": {
|
|
"summary": "executeComponent",
|
|
"operationId": "executeComponent",
|
|
"tags": [
|
|
"app"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ScriptPath"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "update app",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"component": {
|
|
"type": "string"
|
|
},
|
|
"path": {
|
|
"type": "string"
|
|
},
|
|
"version": {
|
|
"type": "integer"
|
|
},
|
|
"args": {},
|
|
"raw_code": {
|
|
"type": "object",
|
|
"properties": {
|
|
"content": {
|
|
"type": "string"
|
|
},
|
|
"language": {
|
|
"type": "string"
|
|
},
|
|
"path": {
|
|
"type": "string"
|
|
},
|
|
"lock": {
|
|
"type": "string"
|
|
},
|
|
"cache_ttl": {
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"required": [
|
|
"content",
|
|
"language"
|
|
]
|
|
},
|
|
"id": {
|
|
"type": "integer"
|
|
},
|
|
"force_viewer_static_fields": {
|
|
"type": "object"
|
|
},
|
|
"force_viewer_one_of_fields": {
|
|
"type": "object"
|
|
},
|
|
"force_viewer_allow_user_resources": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"run_query_params": {
|
|
"type": "object",
|
|
"description": "Runnable query parameters"
|
|
}
|
|
},
|
|
"required": [
|
|
"args",
|
|
"component"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "job uuid",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/apps_u/upload_s3_file/{path}": {
|
|
"post": {
|
|
"summary": "upload s3 file from app",
|
|
"operationId": "uploadS3FileFromApp",
|
|
"tags": [
|
|
"app"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
},
|
|
{
|
|
"name": "file_key",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "file_extension",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "s3_resource_path",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "resource_type",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "storage",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "content_type",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "content_disposition",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "File content",
|
|
"required": true,
|
|
"content": {
|
|
"application/octet-stream": {
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "binary"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "file uploaded",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"file_key": {
|
|
"type": "string"
|
|
},
|
|
"delete_token": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"file_key",
|
|
"delete_token"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/apps_u/delete_s3_file": {
|
|
"delete": {
|
|
"summary": "delete s3 file from app",
|
|
"operationId": "deleteS3FileFromApp",
|
|
"tags": [
|
|
"app"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "delete_token",
|
|
"in": "query",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "file deleted",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/jobs/run/f/{path}": {
|
|
"post": {
|
|
"summary": "run flow by path",
|
|
"operationId": "runFlowByPath",
|
|
"x-mcp-tool": true,
|
|
"x-mcp-instructions": "You should first use getFlowByPath to retrieve the flow's schema and understand what arguments are expected.",
|
|
"x-mcp-tool-include-query-params": [],
|
|
"tags": [
|
|
"job"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ScriptPath"
|
|
},
|
|
{
|
|
"name": "scheduled_for",
|
|
"description": "when to schedule this job (leave empty for immediate run)",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
}
|
|
},
|
|
{
|
|
"name": "scheduled_in_secs",
|
|
"description": "schedule the script to execute in the number of seconds starting now",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "integer"
|
|
}
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/SkipPreprocessor"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ParentJob"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/WorkerTag"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/NewJobId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/IncludeHeader"
|
|
},
|
|
{
|
|
"name": "invisible_to_owner",
|
|
"description": "make the run invisible to the the flow owner (default false)",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
{
|
|
"name": "memory_id",
|
|
"description": "memory ID for chat-enabled flows",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "flow args",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ScriptArgs"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "job created",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/jobs/run/fv/{version}": {
|
|
"post": {
|
|
"summary": "run flow by version",
|
|
"operationId": "runFlowByVersion",
|
|
"tags": [
|
|
"job"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "version",
|
|
"description": "flow version ID",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int64"
|
|
}
|
|
},
|
|
{
|
|
"name": "scheduled_for",
|
|
"description": "when to schedule this job (leave empty for immediate run)",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
}
|
|
},
|
|
{
|
|
"name": "scheduled_in_secs",
|
|
"description": "schedule the script to execute in the number of seconds starting now",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "integer"
|
|
}
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/SkipPreprocessor"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ParentJob"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/WorkerTag"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/NewJobId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/IncludeHeader"
|
|
},
|
|
{
|
|
"name": "invisible_to_owner",
|
|
"description": "make the run invisible to the the flow owner (default false)",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
{
|
|
"name": "memory_id",
|
|
"description": "memory ID for chat-enabled flows",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "flow args",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ScriptArgs"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "job created",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/jobs/run/batch_rerun_jobs": {
|
|
"post": {
|
|
"summary": "re-run multiple jobs",
|
|
"operationId": "batchReRunJobs",
|
|
"tags": [
|
|
"job"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "list of job ids to re run and arg tranforms",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"required": [
|
|
"job_ids",
|
|
"script_options_by_path",
|
|
"flow_options_by_path"
|
|
],
|
|
"properties": {
|
|
"job_ids": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"script_options_by_path": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "object",
|
|
"properties": {
|
|
"input_transforms": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"$ref": "#/components/schemas/InputTransform"
|
|
}
|
|
},
|
|
"use_latest_version": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"flow_options_by_path": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "object",
|
|
"properties": {
|
|
"input_transforms": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"$ref": "#/components/schemas/InputTransform"
|
|
}
|
|
},
|
|
"use_latest_version": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "stream of created job uuids separated by \\n. Lines may start with 'Error:'",
|
|
"content": {
|
|
"text/event-stream": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/jobs/restart/f/{id}": {
|
|
"post": {
|
|
"summary": "restart a completed flow at a given step",
|
|
"operationId": "restartFlowAtStep",
|
|
"tags": [
|
|
"job"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/JobId"
|
|
},
|
|
{
|
|
"name": "scheduled_for",
|
|
"description": "when to schedule this job (leave empty for immediate run)",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
}
|
|
},
|
|
{
|
|
"name": "scheduled_in_secs",
|
|
"description": "schedule the script to execute in the number of seconds starting now",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "integer"
|
|
}
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ParentJob"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/WorkerTag"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/NewJobId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/IncludeHeader"
|
|
},
|
|
{
|
|
"name": "invisible_to_owner",
|
|
"description": "make the run invisible to the the flow owner (default false)",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "restart flow parameters",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"required": [
|
|
"step_id"
|
|
],
|
|
"properties": {
|
|
"step_id": {
|
|
"type": "string",
|
|
"description": "step id to restart the flow from"
|
|
},
|
|
"branch_or_iteration_n": {
|
|
"type": "integer",
|
|
"description": "for branchall or loop, the iteration at which the flow should restart (optional)"
|
|
},
|
|
"flow_version": {
|
|
"type": "integer",
|
|
"description": "specific flow version to use for restart (optional, uses current version if not specified)"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "job created",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/jobs/run/h/{hash}": {
|
|
"post": {
|
|
"summary": "run script by hash",
|
|
"operationId": "runScriptByHash",
|
|
"tags": [
|
|
"job"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ScriptHash"
|
|
},
|
|
{
|
|
"name": "scheduled_for",
|
|
"description": "when to schedule this job (leave empty for immediate run)",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
}
|
|
},
|
|
{
|
|
"name": "scheduled_in_secs",
|
|
"description": "schedule the script to execute in the number of seconds starting now",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "integer"
|
|
}
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/SkipPreprocessor"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ParentJob"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/WorkerTag"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/CacheTtl"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/NewJobId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/IncludeHeader"
|
|
},
|
|
{
|
|
"name": "invisible_to_owner",
|
|
"description": "make the run invisible to the the script owner (default false)",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "Partially filled args",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "job created",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/jobs/run/preview": {
|
|
"post": {
|
|
"summary": "run script preview",
|
|
"operationId": "runScriptPreview",
|
|
"tags": [
|
|
"job"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/IncludeHeader"
|
|
},
|
|
{
|
|
"name": "invisible_to_owner",
|
|
"description": "make the run invisible to the the script owner (default false)",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/NewJobId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "preview",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Preview"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "job created",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/jobs/run_inline/preview": {
|
|
"post": {
|
|
"summary": "run script preview without starting a new job",
|
|
"operationId": "runScriptPreviewInline",
|
|
"tags": [
|
|
"job"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "preview",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PreviewInline"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "script result",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/jobs/run_inline/p/{path}": {
|
|
"post": {
|
|
"summary": "run script by path without starting a new job",
|
|
"operationId": "runScriptByPathInline",
|
|
"tags": [
|
|
"job"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ScriptPath"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "script args",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/InlineScriptArgs"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "script result",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/jobs/run_inline/h/{hash}": {
|
|
"post": {
|
|
"summary": "run script by hash without starting a new job",
|
|
"operationId": "runScriptByHashInline",
|
|
"tags": [
|
|
"job"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ScriptHash"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "script args",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/InlineScriptArgs"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "script result",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/jobs/run_wait_result/preview": {
|
|
"post": {
|
|
"summary": "run script preview and wait for result",
|
|
"operationId": "runScriptPreviewAndWaitResult",
|
|
"x-mcp-tool": true,
|
|
"x-mcp-instructions": "Allows testing a script before deploying it. For typescript code, the language to send is either bun or deno. By default, send bun if no deno specific code is detected.",
|
|
"x-mcp-required-fields": [
|
|
"content",
|
|
"language",
|
|
"args"
|
|
],
|
|
"tags": [
|
|
"job"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "preview",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Preview"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "job result",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/jobs/workflow_as_code/{job_id}/{entrypoint}": {
|
|
"post": {
|
|
"summary": "run code-workflow task",
|
|
"operationId": "runCodeWorkflowTask",
|
|
"tags": [
|
|
"job"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "job_id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "entrypoint",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "preview",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/WorkflowTask"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "job created",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/jobs/run/dependencies": {
|
|
"post": {
|
|
"summary": "run a one-off dependencies job",
|
|
"operationId": "runRawScriptDependencies",
|
|
"tags": [
|
|
"job"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "raw script content",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"raw_scripts": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/RawScriptForDependencies"
|
|
}
|
|
},
|
|
"entrypoint": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"entrypoint",
|
|
"raw_scripts"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "dependency job result",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"lock": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"lock"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/jobs/run/preview_flow": {
|
|
"post": {
|
|
"summary": "run flow preview",
|
|
"operationId": "runFlowPreview",
|
|
"tags": [
|
|
"job"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/IncludeHeader"
|
|
},
|
|
{
|
|
"name": "invisible_to_owner",
|
|
"description": "make the run invisible to the the script owner (default false)",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/NewJobId"
|
|
},
|
|
{
|
|
"name": "memory_id",
|
|
"description": "memory ID for chat-enabled flows",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "preview",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/FlowPreview"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "job created",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/jobs/run_wait_result/preview_flow": {
|
|
"post": {
|
|
"summary": "run flow preview and wait for result",
|
|
"operationId": "runFlowPreviewAndWaitResult",
|
|
"tags": [
|
|
"job"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "memory_id",
|
|
"description": "memory ID for chat-enabled flows",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "preview",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/FlowPreview"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "job result",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/jobs/run/dynamic_select": {
|
|
"post": {
|
|
"summary": "run dynamic select helper function",
|
|
"operationId": "runDynamicSelect",
|
|
"tags": [
|
|
"job"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "dynamic select request",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/DynamicInputData"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "dynamic select job created",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/jobs/queue/list": {
|
|
"get": {
|
|
"summary": "list all queued jobs",
|
|
"operationId": "listQueue",
|
|
"x-mcp-tool": true,
|
|
"tags": [
|
|
"job"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/OrderDesc"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/CreatedBy"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ParentJob"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Worker"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ScriptExactPath"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ScriptStartPath"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/SchedulePath"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/TriggerPath"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/JobTriggerKind"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ScriptExactHash"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/StartedBefore"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/StartedAfter"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Success"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ScheduledForBeforeNow"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/JobKinds"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Suspended"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Running"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ArgsFilter"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ResultFilter"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/AllowWildcards"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Tag"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Page"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/PerPage"
|
|
},
|
|
{
|
|
"name": "all_workspaces",
|
|
"description": "get jobs from all workspaces (only valid if request come from the `admins` workspace)",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
{
|
|
"name": "is_not_schedule",
|
|
"description": "is not a scheduled job",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "All queued jobs",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/QueuedJob"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/jobs/queue/count": {
|
|
"get": {
|
|
"summary": "get queue count",
|
|
"operationId": "getQueueCount",
|
|
"tags": [
|
|
"job"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "all_workspaces",
|
|
"description": "get jobs from all workspaces (only valid if request come from the `admins` workspace)",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "queue count",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"database_length": {
|
|
"type": "integer"
|
|
},
|
|
"suspended": {
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"required": [
|
|
"database_length"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/jobs/completed/count": {
|
|
"get": {
|
|
"summary": "get completed count",
|
|
"operationId": "getCompletedCount",
|
|
"tags": [
|
|
"job"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "completed count",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"database_length": {
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"required": [
|
|
"database_length"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/jobs/completed/count_jobs": {
|
|
"get": {
|
|
"summary": "count number of completed jobs with filter",
|
|
"operationId": "countCompletedJobs",
|
|
"tags": [
|
|
"job"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "completed_after_s_ago",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "integer"
|
|
}
|
|
},
|
|
{
|
|
"name": "success",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
{
|
|
"name": "tags",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "all_workspaces",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Count of completed jobs",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "integer"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/jobs/list_filtered_uuids": {
|
|
"get": {
|
|
"summary": "get the ids of all jobs matching the given filters",
|
|
"operationId": "listFilteredJobsUuids",
|
|
"tags": [
|
|
"job"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/CreatedBy"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Label"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Worker"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ParentJob"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ScriptExactPath"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ScriptStartPath"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/SchedulePath"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ScriptExactHash"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/StartedBefore"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/StartedAfter"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/CreatedBefore"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/CreatedAfter"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/CompletedBefore"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/CompletedAfter"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/CreatedBeforeQueue"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/CreatedAfterQueue"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Running"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ScheduledForBeforeNow"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/JobKinds"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Suspended"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ArgsFilter"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Tag"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ResultFilter"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Page"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/PerPage"
|
|
},
|
|
{
|
|
"name": "is_skipped",
|
|
"description": "is the job skipped",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
{
|
|
"name": "is_flow_step",
|
|
"description": "is the job a flow step",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
{
|
|
"name": "has_null_parent",
|
|
"description": "has null parent",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
{
|
|
"name": "success",
|
|
"description": "filter on successful jobs",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
{
|
|
"name": "all_workspaces",
|
|
"description": "get jobs from all workspaces (only valid if request come from the `admins` workspace)",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
{
|
|
"name": "is_not_schedule",
|
|
"description": "is not a scheduled job",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "uuids of jobs",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/jobs/queue/list_filtered_uuids": {
|
|
"get": {
|
|
"summary": "get the ids of all queued jobs matching the given filters",
|
|
"operationId": "listFilteredQueueUuids",
|
|
"tags": [
|
|
"job"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/OrderDesc"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/CreatedBy"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ParentJob"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ScriptExactPath"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ScriptStartPath"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/SchedulePath"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ScriptExactHash"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/StartedBefore"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/StartedAfter"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Success"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ScheduledForBeforeNow"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/JobKinds"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Suspended"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Running"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ArgsFilter"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ResultFilter"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/AllowWildcards"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Tag"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Page"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/PerPage"
|
|
},
|
|
{
|
|
"name": "concurrency_key",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "all_workspaces",
|
|
"description": "get jobs from all workspaces (only valid if request come from the `admins` workspace)",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
{
|
|
"name": "is_not_schedule",
|
|
"description": "is not a scheduled job",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "uuids of jobs",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/jobs/queue/cancel_selection": {
|
|
"post": {
|
|
"summary": "cancel jobs based on the given uuids",
|
|
"operationId": "cancelSelection",
|
|
"tags": [
|
|
"job"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "force_cancel",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "uuids of the jobs to cancel",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "uuids of canceled jobs",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/jobs/get_otel_traces/{id}": {
|
|
"get": {
|
|
"summary": "get OpenTelemetry traces for a job",
|
|
"operationId": "getJobOtelTraces",
|
|
"tags": [
|
|
"job"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/JobId"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "list of OTEL Span objects (compatible with OpenTelemetry Span proto)",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/trigger/{trigger_kind}/resume_suspended_trigger_jobs/{trigger_path}": {
|
|
"post": {
|
|
"summary": "resume all suspended jobs for a specific trigger",
|
|
"operationId": "resumeSuspendedTriggerJobs",
|
|
"tags": [
|
|
"trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "trigger_kind",
|
|
"description": "The kind of trigger",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/JobTriggerKind"
|
|
}
|
|
},
|
|
{
|
|
"name": "trigger_path",
|
|
"description": "The path of the trigger (can contain forward slashes)",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
},
|
|
"style": "simple",
|
|
"explode": false
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "Optional list of job IDs to reassign",
|
|
"required": false,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"job_ids": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
},
|
|
"description": "Optional list of specific job UUIDs to reassign. If not provided, all suspended jobs for the trigger will be reassigned."
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "confirmation message",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/trigger/{trigger_kind}/cancel_suspended_trigger_jobs/{trigger_path}": {
|
|
"post": {
|
|
"summary": "cancel all suspended jobs for a specific trigger",
|
|
"operationId": "cancelSuspendedTriggerJobs",
|
|
"tags": [
|
|
"trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "trigger_kind",
|
|
"description": "The kind of trigger",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/JobTriggerKind"
|
|
}
|
|
},
|
|
{
|
|
"name": "trigger_path",
|
|
"description": "The path of the trigger (can contain forward slashes)",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
},
|
|
"style": "simple",
|
|
"explode": false
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "Optional list of job IDs to cancel",
|
|
"required": false,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"job_ids": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
},
|
|
"description": "Optional list of specific job UUIDs to cancel. If not provided, all suspended jobs for the trigger will be canceled."
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "confirmation message",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/jobs/completed/list": {
|
|
"get": {
|
|
"summary": "list all completed jobs",
|
|
"operationId": "listCompletedJobs",
|
|
"tags": [
|
|
"job"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/OrderDesc"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/CreatedBy"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Label"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Worker"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ParentJob"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ScriptExactPath"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ScriptStartPath"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/SchedulePath"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ScriptExactHash"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/StartedBefore"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/StartedAfter"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Success"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/JobKinds"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ArgsFilter"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ResultFilter"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/AllowWildcards"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Tag"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Page"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/PerPage"
|
|
},
|
|
{
|
|
"name": "is_skipped",
|
|
"description": "is the job skipped",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
{
|
|
"name": "is_flow_step",
|
|
"description": "is the job a flow step",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
{
|
|
"name": "has_null_parent",
|
|
"description": "has null parent",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
{
|
|
"name": "is_not_schedule",
|
|
"description": "is not a scheduled job",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "All completed jobs",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/CompletedJob"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/jobs/completed/export": {
|
|
"get": {
|
|
"summary": "export all completed jobs for backup/migration",
|
|
"operationId": "exportCompletedJobs",
|
|
"tags": [
|
|
"job"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Page"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/PerPage"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "All completed jobs exported",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ExportableCompletedJob"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/jobs/completed/import": {
|
|
"post": {
|
|
"summary": "import completed jobs from backup/migration",
|
|
"operationId": "importCompletedJobs",
|
|
"tags": [
|
|
"job"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ExportableCompletedJob"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successfully imported completed jobs",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/jobs/queue/export": {
|
|
"get": {
|
|
"summary": "export all queued jobs for backup/migration",
|
|
"operationId": "exportQueuedJobs",
|
|
"tags": [
|
|
"job"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Page"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/PerPage"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "All queued jobs exported",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ExportableQueuedJob"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/jobs/queue/import": {
|
|
"post": {
|
|
"summary": "import queued jobs from backup/migration",
|
|
"operationId": "importQueuedJobs",
|
|
"tags": [
|
|
"job"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ExportableQueuedJob"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successfully imported queued jobs",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/jobs/delete": {
|
|
"post": {
|
|
"summary": "delete jobs by IDs from all related tables",
|
|
"operationId": "deleteJobs",
|
|
"tags": [
|
|
"job"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
},
|
|
"description": "Array of job IDs to delete"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successfully deleted jobs",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string",
|
|
"description": "Summary of deleted jobs and rows"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/jobs/list": {
|
|
"get": {
|
|
"summary": "list all jobs",
|
|
"operationId": "listJobs",
|
|
"x-mcp-tool": true,
|
|
"tags": [
|
|
"job"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/CreatedBy"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Label"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Worker"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ParentJob"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ScriptExactPath"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ScriptStartPath"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/SchedulePath"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ScriptExactHash"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/StartedBefore"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/StartedAfter"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/CreatedBefore"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/CreatedAfter"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/CompletedBefore"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/CompletedAfter"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/CreatedBeforeQueue"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/CreatedAfterQueue"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Running"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ScheduledForBeforeNow"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/JobKinds"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Suspended"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ArgsFilter"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Tag"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ResultFilter"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/AllowWildcards"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/PerPage"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/JobTriggerKind"
|
|
},
|
|
{
|
|
"name": "is_skipped",
|
|
"description": "is the job skipped",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
{
|
|
"name": "is_flow_step",
|
|
"description": "is the job a flow step",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
{
|
|
"name": "has_null_parent",
|
|
"description": "has null parent",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
{
|
|
"name": "success",
|
|
"description": "filter on successful jobs",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
{
|
|
"name": "all_workspaces",
|
|
"description": "get jobs from all workspaces (only valid if request come from the `admins` workspace)",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
{
|
|
"name": "is_not_schedule",
|
|
"description": "is not a scheduled job",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
{
|
|
"name": "broad_filter",
|
|
"description": "broad search across multiple fields (case-insensitive substring match on path, tag, schedule path, trigger kind, label)",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "All jobs",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/Job"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/jobs/db_clock": {
|
|
"get": {
|
|
"summary": "get db clock",
|
|
"operationId": "getDbClock",
|
|
"tags": [
|
|
"job"
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "the timestamp of the db that can be used to compute the drift",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "integer"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/jobs/completed/count_by_tag": {
|
|
"get": {
|
|
"summary": "Count jobs by tag",
|
|
"operationId": "countJobsByTag",
|
|
"tags": [
|
|
"job"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "horizon_secs",
|
|
"in": "query",
|
|
"description": "Past Time horizon in seconds (when to start the count = now - horizon) (default is 3600)",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "integer"
|
|
}
|
|
},
|
|
{
|
|
"name": "workspace_id",
|
|
"in": "query",
|
|
"description": "Specific workspace ID to filter results (optional)",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Job counts by tag",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"tag": {
|
|
"type": "string"
|
|
},
|
|
"count": {
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"required": [
|
|
"tag",
|
|
"count"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/jobs_u/get/{id}": {
|
|
"get": {
|
|
"summary": "get job",
|
|
"operationId": "getJob",
|
|
"x-mcp-tool": true,
|
|
"tags": [
|
|
"job"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/JobId"
|
|
},
|
|
{
|
|
"name": "no_logs",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
{
|
|
"name": "no_code",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "job details",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Job"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/jobs_u/get_root_job_id/{id}": {
|
|
"get": {
|
|
"summary": "get root job id",
|
|
"operationId": "getRootJobId",
|
|
"tags": [
|
|
"job"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/JobId"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "get root job id",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/jobs_u/get_logs/{id}": {
|
|
"get": {
|
|
"summary": "get job logs",
|
|
"operationId": "getJobLogs",
|
|
"x-mcp-tool": true,
|
|
"tags": [
|
|
"job"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/JobId"
|
|
},
|
|
{
|
|
"name": "remove_ansi_warnings",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "job details",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/jobs_u/get_flow_all_logs/{id}": {
|
|
"get": {
|
|
"summary": "get all logs for a flow job",
|
|
"operationId": "getFlowAllLogs",
|
|
"tags": [
|
|
"job"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/JobId"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "concatenated logs of all flow steps",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/jobs_u/get_completed_logs_tail/{id}": {
|
|
"get": {
|
|
"summary": "get completed job logs tail",
|
|
"operationId": "getCompletedJobLogsTail",
|
|
"tags": [
|
|
"job"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/JobId"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "completed job logs tail",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/jobs_u/get_args/{id}": {
|
|
"get": {
|
|
"summary": "get job args",
|
|
"operationId": "getJobArgs",
|
|
"tags": [
|
|
"job"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/JobId"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "job args",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/jobs_u/queue/get_started_at_by_ids": {
|
|
"post": {
|
|
"summary": "get started at by ids",
|
|
"operationId": "getStartedAtByIds",
|
|
"tags": [
|
|
"job"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "ids",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "started at by ids",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/jobs_u/getupdate/{id}": {
|
|
"get": {
|
|
"summary": "get job updates",
|
|
"operationId": "getJobUpdates",
|
|
"tags": [
|
|
"job"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/JobId"
|
|
},
|
|
{
|
|
"name": "running",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
{
|
|
"name": "log_offset",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "integer"
|
|
}
|
|
},
|
|
{
|
|
"name": "stream_offset",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "integer"
|
|
}
|
|
},
|
|
{
|
|
"name": "get_progress",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
{
|
|
"name": "no_logs",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "job details",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"running": {
|
|
"type": "boolean"
|
|
},
|
|
"completed": {
|
|
"type": "boolean"
|
|
},
|
|
"new_logs": {
|
|
"type": "string"
|
|
},
|
|
"log_offset": {
|
|
"type": "integer"
|
|
},
|
|
"mem_peak": {
|
|
"type": "integer"
|
|
},
|
|
"progress": {
|
|
"type": "integer"
|
|
},
|
|
"stream_offset": {
|
|
"type": "integer"
|
|
},
|
|
"new_result_stream": {
|
|
"type": "string"
|
|
},
|
|
"flow_status": {
|
|
"$ref": "#/components/schemas/FlowStatus"
|
|
},
|
|
"workflow_as_code_status": {
|
|
"$ref": "#/components/schemas/WorkflowStatus"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/jobs_u/getupdate_sse/{id}": {
|
|
"get": {
|
|
"summary": "get job updates via server-sent events",
|
|
"operationId": "getJobUpdatesSSE",
|
|
"tags": [
|
|
"job"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/JobId"
|
|
},
|
|
{
|
|
"name": "running",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
{
|
|
"name": "log_offset",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "integer"
|
|
}
|
|
},
|
|
{
|
|
"name": "stream_offset",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "integer"
|
|
}
|
|
},
|
|
{
|
|
"name": "get_progress",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
{
|
|
"name": "only_result",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
{
|
|
"name": "no_logs",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
{
|
|
"name": "fast",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "server-sent events stream of job updates",
|
|
"content": {
|
|
"text/event-stream": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/jobs_u/get_log_file/{path}": {
|
|
"get": {
|
|
"summary": "get log file from object store",
|
|
"operationId": "getLogFileFromStore",
|
|
"tags": [
|
|
"job"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "path",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "job log",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/jobs_u/get_flow_debug_info/{id}": {
|
|
"get": {
|
|
"summary": "get flow debug info",
|
|
"operationId": "getFlowDebugInfo",
|
|
"tags": [
|
|
"job"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/JobId"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "flow debug info details",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/jobs_u/completed/get/{id}": {
|
|
"get": {
|
|
"summary": "get completed job",
|
|
"operationId": "getCompletedJob",
|
|
"tags": [
|
|
"job"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/JobId"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "job details",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CompletedJob"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/jobs_u/completed/get_result/{id}": {
|
|
"get": {
|
|
"summary": "get completed job result",
|
|
"operationId": "getCompletedJobResult",
|
|
"tags": [
|
|
"job"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/JobId"
|
|
},
|
|
{
|
|
"name": "suspended_job",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "resume_id",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "integer"
|
|
}
|
|
},
|
|
{
|
|
"name": "secret",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "approver",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "result",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/jobs_u/completed/get_result_maybe/{id}": {
|
|
"get": {
|
|
"summary": "get completed job result if job is completed",
|
|
"operationId": "getCompletedJobResultMaybe",
|
|
"tags": [
|
|
"job"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/JobId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/GetStarted"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "result",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"completed": {
|
|
"type": "boolean"
|
|
},
|
|
"result": {},
|
|
"success": {
|
|
"type": "boolean"
|
|
},
|
|
"started": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"required": [
|
|
"completed",
|
|
"result"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/jobs_u/completed/get_timing/{id}": {
|
|
"get": {
|
|
"summary": "get completed job timing",
|
|
"operationId": "getCompletedJobTiming",
|
|
"tags": [
|
|
"job"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/JobId"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "job timing details",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"created_at": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"started_at": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"duration_ms": {
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"required": [
|
|
"created_at"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/jobs/completed/delete/{id}": {
|
|
"post": {
|
|
"summary": "delete completed job (erase content but keep run id)",
|
|
"operationId": "deleteCompletedJob",
|
|
"tags": [
|
|
"job"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/JobId"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "job details",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CompletedJob"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/jobs_u/queue/cancel/{id}": {
|
|
"post": {
|
|
"summary": "cancel queued or running job",
|
|
"operationId": "cancelQueuedJob",
|
|
"tags": [
|
|
"job"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/JobId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "reason",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"reason": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "job canceled",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/jobs_u/queue/cancel_persistent/{path}": {
|
|
"post": {
|
|
"summary": "cancel all queued jobs for persistent script",
|
|
"operationId": "cancelPersistentQueuedJobs",
|
|
"tags": [
|
|
"job"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "reason",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"reason": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "persistent job scaled down to zero",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/jobs_u/queue/force_cancel/{id}": {
|
|
"post": {
|
|
"summary": "force cancel queued job",
|
|
"operationId": "forceCancelQueuedJob",
|
|
"tags": [
|
|
"job"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/JobId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "reason",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"reason": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "job canceled",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/jobs/queue/position/{scheduled_for}": {
|
|
"get": {
|
|
"summary": "get queue position for a job",
|
|
"operationId": "getQueuePosition",
|
|
"tags": [
|
|
"job"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "scheduled_for",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"description": "The scheduled for timestamp in milliseconds"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "queue position information",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"position": {
|
|
"type": "integer",
|
|
"description": "The position in queue (1-based), null if not in queue or already running"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/jobs/queue/scheduled_for/{id}": {
|
|
"get": {
|
|
"summary": "get scheduled for timestamp for a job",
|
|
"operationId": "getScheduledFor",
|
|
"tags": [
|
|
"job"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/JobId"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "scheduled for timestamp",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "integer"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/jobs/job_signature/{id}/{resume_id}": {
|
|
"get": {
|
|
"summary": "create an HMac signature given a job id and a resume id",
|
|
"operationId": "createJobSignature",
|
|
"tags": [
|
|
"job"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/JobId"
|
|
},
|
|
{
|
|
"name": "resume_id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer"
|
|
}
|
|
},
|
|
{
|
|
"name": "approver",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "job signature",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/jobs/resume_urls/{id}/{resume_id}": {
|
|
"get": {
|
|
"summary": "get resume urls given a job_id, resume_id and a nonce to resume a flow",
|
|
"operationId": "getResumeUrls",
|
|
"tags": [
|
|
"job"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/JobId"
|
|
},
|
|
{
|
|
"name": "resume_id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer"
|
|
}
|
|
},
|
|
{
|
|
"name": "approver",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "flow_level",
|
|
"in": "query",
|
|
"description": "If true, generate resume URLs for the parent flow instead of the specific step. This allows pre-approvals that can be consumed by any later suspend step in the same flow.",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "url endpoints",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"approvalPage": {
|
|
"type": "string"
|
|
},
|
|
"resume": {
|
|
"type": "string"
|
|
},
|
|
"cancel": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"approvalPage",
|
|
"resume",
|
|
"cancel"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/jobs/slack_approval/{id}": {
|
|
"get": {
|
|
"summary": "generate interactive slack approval for suspended job",
|
|
"operationId": "getSlackApprovalPayload",
|
|
"tags": [
|
|
"job"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/JobId"
|
|
},
|
|
{
|
|
"name": "approver",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "message",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "slack_resource_path",
|
|
"in": "query",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "channel_id",
|
|
"in": "query",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "flow_step_id",
|
|
"in": "query",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "default_args_json",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "dynamic_enums_json",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "resume_button_text",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "cancel_button_text",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Interactive slack approval message sent successfully"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/jobs/teams_approval/{id}": {
|
|
"get": {
|
|
"summary": "generate interactive teams approval for suspended job",
|
|
"operationId": "getTeamsApprovalPayload",
|
|
"tags": [
|
|
"job"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/JobId"
|
|
},
|
|
{
|
|
"name": "approver",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "message",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "team_name",
|
|
"in": "query",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "channel_name",
|
|
"in": "query",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "flow_step_id",
|
|
"in": "query",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "default_args_json",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "dynamic_enums_json",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "resume_button_text",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "cancel_button_text",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Interactive slack approval message sent successfully"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/jobs_u/flow/resume_suspended/{job_id}": {
|
|
"post": {
|
|
"summary": "resume or cancel a suspended flow/WAC job",
|
|
"description": "Resume or cancel a suspended flow/WAC job. Uses approval rules to determine authorization. Either a valid approval_token or an authenticated session is required.\n",
|
|
"operationId": "resumeSuspended",
|
|
"tags": [
|
|
"job"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "job_id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"payload": {
|
|
"description": "payload to send to the resumed job"
|
|
},
|
|
"approval_token": {
|
|
"type": "string",
|
|
"description": "approval token for unauthenticated access"
|
|
},
|
|
"approved": {
|
|
"type": "boolean",
|
|
"description": "whether to approve (true) or cancel (false) the job",
|
|
"default": true
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "job resumed",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/jobs_u/flow/approval_info/{job_id}": {
|
|
"get": {
|
|
"summary": "get approval info for a suspended flow/WAC job",
|
|
"description": "Get approval info for a suspended flow/WAC job. Returns form schema, approval rules, and whether the current user can approve. Either a valid token query parameter or an authenticated session is required.\n",
|
|
"operationId": "getApprovalInfo",
|
|
"tags": [
|
|
"job"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "job_id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
}
|
|
},
|
|
{
|
|
"name": "token",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "string"
|
|
},
|
|
"description": "approval token for unauthenticated access"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "approval info",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"required": [
|
|
"flow_id",
|
|
"can_approve",
|
|
"user_auth_required",
|
|
"approvers"
|
|
],
|
|
"properties": {
|
|
"flow_id": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
},
|
|
"form_schema": {
|
|
"description": "form schema for the approval step"
|
|
},
|
|
"description": {
|
|
"description": "description of the approval step"
|
|
},
|
|
"approval_conditions": {
|
|
"type": "object",
|
|
"properties": {
|
|
"user_auth_required": {
|
|
"type": "boolean"
|
|
},
|
|
"user_groups_required": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"self_approval_disabled": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"required": [
|
|
"user_auth_required",
|
|
"user_groups_required",
|
|
"self_approval_disabled"
|
|
]
|
|
},
|
|
"can_approve": {
|
|
"type": "boolean",
|
|
"description": "whether the current user/token holder can approve"
|
|
},
|
|
"user_auth_required": {
|
|
"type": "boolean",
|
|
"description": "whether user authentication is required to approve"
|
|
},
|
|
"hide_cancel": {
|
|
"type": "boolean",
|
|
"description": "whether to hide the cancel button in the UI"
|
|
},
|
|
"approvers": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"required": [
|
|
"resume_id",
|
|
"approver"
|
|
],
|
|
"properties": {
|
|
"resume_id": {
|
|
"type": "integer"
|
|
},
|
|
"approver": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/jobs_u/resume/{id}/{resume_id}/{signature}": {
|
|
"get": {
|
|
"summary": "resume a job for a suspended flow",
|
|
"operationId": "resumeSuspendedJobGet",
|
|
"tags": [
|
|
"job"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/JobId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Payload"
|
|
},
|
|
{
|
|
"name": "resume_id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer"
|
|
}
|
|
},
|
|
{
|
|
"name": "signature",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "approver",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"201": {
|
|
"description": "job resumed",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"post": {
|
|
"summary": "resume a job for a suspended flow",
|
|
"operationId": "resumeSuspendedJobPost",
|
|
"tags": [
|
|
"job"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/JobId"
|
|
},
|
|
{
|
|
"name": "resume_id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer"
|
|
}
|
|
},
|
|
{
|
|
"name": "signature",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "approver",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "job resumed",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/jobs/flow/user_states/{id}/{key}": {
|
|
"post": {
|
|
"summary": "set flow user state at a given key",
|
|
"operationId": "setFlowUserState",
|
|
"tags": [
|
|
"job"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/JobId"
|
|
},
|
|
{
|
|
"name": "key",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "new value",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "flow user state updated",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"get": {
|
|
"summary": "get flow user state at a given key",
|
|
"operationId": "getFlowUserState",
|
|
"tags": [
|
|
"job"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/JobId"
|
|
},
|
|
{
|
|
"name": "key",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "flow user state updated",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/jobs/flow/resume/{id}": {
|
|
"post": {
|
|
"summary": "resume a job for a suspended flow as an owner",
|
|
"operationId": "resumeSuspendedFlowAsOwner",
|
|
"tags": [
|
|
"job"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/JobId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "job resumed",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/jobs_u/cancel/{id}/{resume_id}/{signature}": {
|
|
"get": {
|
|
"summary": "cancel a job for a suspended flow",
|
|
"operationId": "cancelSuspendedJobGet",
|
|
"tags": [
|
|
"job"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/JobId"
|
|
},
|
|
{
|
|
"name": "resume_id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer"
|
|
}
|
|
},
|
|
{
|
|
"name": "signature",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "approver",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"201": {
|
|
"description": "job canceled",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"post": {
|
|
"summary": "cancel a job for a suspended flow",
|
|
"operationId": "cancelSuspendedJobPost",
|
|
"tags": [
|
|
"job"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/JobId"
|
|
},
|
|
{
|
|
"name": "resume_id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer"
|
|
}
|
|
},
|
|
{
|
|
"name": "signature",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "approver",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "job canceled",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/jobs_u/get_flow/{id}/{resume_id}/{signature}": {
|
|
"get": {
|
|
"summary": "get parent flow job of suspended job",
|
|
"operationId": "getSuspendedJobFlow",
|
|
"tags": [
|
|
"job"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/JobId"
|
|
},
|
|
{
|
|
"name": "resume_id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer"
|
|
}
|
|
},
|
|
{
|
|
"name": "signature",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "approver",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "parent flow details",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"job": {
|
|
"$ref": "#/components/schemas/Job"
|
|
},
|
|
"approvers": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"resume_id": {
|
|
"type": "integer"
|
|
},
|
|
"approver": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"resume_id",
|
|
"approver"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"job",
|
|
"approvers"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/schedules/preview": {
|
|
"post": {
|
|
"summary": "preview schedule",
|
|
"operationId": "previewSchedule",
|
|
"tags": [
|
|
"schedule"
|
|
],
|
|
"requestBody": {
|
|
"description": "schedule",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"schedule": {
|
|
"type": "string"
|
|
},
|
|
"timezone": {
|
|
"type": "string"
|
|
},
|
|
"cron_version": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"schedule",
|
|
"timezone"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "List of 5 estimated upcoming execution events (in UTC)",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/schedules/create": {
|
|
"post": {
|
|
"summary": "create schedule",
|
|
"operationId": "createSchedule",
|
|
"x-mcp-tool": true,
|
|
"x-mcp-instructions": "Creates a new schedule.\nThe schedule should include seconds.\nYou should get the schema of the script or flow before creating the schedule to correctly specify the arguments needed.\n",
|
|
"tags": [
|
|
"schedule"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "new schedule",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/NewSchedule"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "schedule created",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/schedules/update/{path}": {
|
|
"post": {
|
|
"summary": "update schedule",
|
|
"operationId": "updateSchedule",
|
|
"x-mcp-tool": true,
|
|
"x-mcp-instructions": "Updates a schedule.\nThe schedule should include seconds.\nYou should get the schema of the script or flow before updating the schedule to correctly specify the arguments needed.\n",
|
|
"tags": [
|
|
"schedule"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "updated schedule",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/EditSchedule"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "schedule updated",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/schedules/setenabled/{path}": {
|
|
"post": {
|
|
"summary": "set enabled schedule",
|
|
"operationId": "setScheduleEnabled",
|
|
"tags": [
|
|
"schedule"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "updated schedule enable",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"required": [
|
|
"enabled"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "schedule enabled set",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/schedules/delete/{path}": {
|
|
"delete": {
|
|
"summary": "delete schedule",
|
|
"operationId": "deleteSchedule",
|
|
"x-mcp-tool": true,
|
|
"tags": [
|
|
"schedule"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "schedule deleted",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/schedules/get/{path}": {
|
|
"get": {
|
|
"summary": "get schedule",
|
|
"operationId": "getSchedule",
|
|
"x-mcp-tool": true,
|
|
"tags": [
|
|
"schedule"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "schedule deleted",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Schedule"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/schedules/exists/{path}": {
|
|
"get": {
|
|
"summary": "does schedule exists",
|
|
"operationId": "existsSchedule",
|
|
"tags": [
|
|
"schedule"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "schedule exists",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/schedules/list": {
|
|
"get": {
|
|
"summary": "list schedules",
|
|
"operationId": "listSchedules",
|
|
"x-mcp-tool": true,
|
|
"tags": [
|
|
"schedule"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Page"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/PerPage"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ArgsFilter"
|
|
},
|
|
{
|
|
"name": "path",
|
|
"description": "filter by path (script path)",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "is_flow",
|
|
"description": "filter schedules by whether they target a flow",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
{
|
|
"name": "path_start",
|
|
"description": "filter schedules by path prefix",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "schedule_path",
|
|
"description": "exact match on the schedule's path",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "description",
|
|
"description": "pattern match filter for description field (case-insensitive)",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "summary",
|
|
"description": "pattern match filter for summary field (case-insensitive)",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "broad_filter",
|
|
"description": "broad search across multiple fields (case-insensitive substring match)",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "label",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "string"
|
|
},
|
|
"description": "Filter by label"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "schedule list",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/Schedule"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/schedules/list_with_jobs": {
|
|
"get": {
|
|
"summary": "list schedules with last 20 jobs",
|
|
"operationId": "listSchedulesWithJobs",
|
|
"tags": [
|
|
"schedule"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Page"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/PerPage"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "schedule list",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ScheduleWJobs"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/schedules/setdefaulthandler": {
|
|
"post": {
|
|
"summary": "Set default error or recoevery handler",
|
|
"operationId": "setDefaultErrorOrRecoveryHandler",
|
|
"tags": [
|
|
"schedule"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "Handler description",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"handler_type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"error",
|
|
"recovery",
|
|
"success"
|
|
]
|
|
},
|
|
"override_existing": {
|
|
"type": "boolean"
|
|
},
|
|
"path": {
|
|
"type": "string"
|
|
},
|
|
"extra_args": {
|
|
"type": "object"
|
|
},
|
|
"number_of_occurence": {
|
|
"type": "integer"
|
|
},
|
|
"number_of_occurence_exact": {
|
|
"type": "boolean"
|
|
},
|
|
"workspace_handler_muted": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"required": [
|
|
"handler_type",
|
|
"override_existing"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "default error handler set"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/openapi/generate": {
|
|
"post": {
|
|
"summary": "generate openapi spec from http routes/webhook",
|
|
"operationId": "generateOpenapiSpec",
|
|
"tags": [
|
|
"openapi"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "openapi spec info and url",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/GenerateOpenapiSpec"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "openapi spec",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/openapi/download": {
|
|
"post": {
|
|
"summary": "Download the OpenAPI v3.1 spec as a file",
|
|
"operationId": "DownloadOpenapiSpec",
|
|
"tags": [
|
|
"openapi"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "openapi spec info and url",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/GenerateOpenapiSpec"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Downloaded OpenAPI spec",
|
|
"content": {
|
|
"application/octet-stream": {
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "binary"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/http_triggers/create_many": {
|
|
"post": {
|
|
"summary": "create many HTTP triggers",
|
|
"operationId": "createHttpTriggers",
|
|
"tags": [
|
|
"http_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "new http trigger",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/NewHttpTrigger"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "http trigger created",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/http_triggers/create": {
|
|
"post": {
|
|
"summary": "create http trigger",
|
|
"operationId": "createHttpTrigger",
|
|
"tags": [
|
|
"http_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "new http trigger",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/NewHttpTrigger"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "http trigger created",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/http_triggers/update/{path}": {
|
|
"post": {
|
|
"summary": "update http trigger",
|
|
"operationId": "updateHttpTrigger",
|
|
"tags": [
|
|
"http_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "updated trigger",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/EditHttpTrigger"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "http trigger updated",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/http_triggers/delete/{path}": {
|
|
"delete": {
|
|
"summary": "delete http trigger",
|
|
"operationId": "deleteHttpTrigger",
|
|
"tags": [
|
|
"http_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "http trigger deleted",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/http_triggers/get/{path}": {
|
|
"get": {
|
|
"summary": "get http trigger",
|
|
"operationId": "getHttpTrigger",
|
|
"tags": [
|
|
"http_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "http trigger deleted",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/HttpTrigger"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/http_triggers/list": {
|
|
"get": {
|
|
"summary": "list http triggers",
|
|
"operationId": "listHttpTriggers",
|
|
"tags": [
|
|
"http_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId",
|
|
"required": true
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Page"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/PerPage"
|
|
},
|
|
{
|
|
"name": "path",
|
|
"description": "filter by path",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "is_flow",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
{
|
|
"name": "path_start",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "label",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "string"
|
|
},
|
|
"description": "Filter by label"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "http trigger list",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/HttpTrigger"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/http_triggers/exists/{path}": {
|
|
"get": {
|
|
"summary": "does http trigger exists",
|
|
"operationId": "existsHttpTrigger",
|
|
"tags": [
|
|
"http_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "http trigger exists",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/http_triggers/route_exists": {
|
|
"post": {
|
|
"summary": "does route exists",
|
|
"operationId": "existsRoute",
|
|
"tags": [
|
|
"http_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "route exists request",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"route_path": {
|
|
"type": "string"
|
|
},
|
|
"http_method": {
|
|
"$ref": "#/components/schemas/HttpMethod"
|
|
},
|
|
"trigger_path": {
|
|
"type": "string"
|
|
},
|
|
"workspaced_route": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"required": [
|
|
"route_path",
|
|
"http_method"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "route exists",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/http_triggers/setmode/{path}": {
|
|
"post": {
|
|
"summary": "enable/disable http trigger",
|
|
"operationId": "setHttpTriggerMode",
|
|
"tags": [
|
|
"http_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"mode": {
|
|
"$ref": "#/components/schemas/TriggerMode"
|
|
}
|
|
},
|
|
"required": [
|
|
"mode"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "http trigger enable/disable",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/websocket_triggers/create": {
|
|
"post": {
|
|
"summary": "create websocket trigger",
|
|
"operationId": "createWebsocketTrigger",
|
|
"tags": [
|
|
"websocket_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "new websocket trigger",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/NewWebsocketTrigger"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "websocket trigger created",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/websocket_triggers/update/{path}": {
|
|
"post": {
|
|
"summary": "update websocket trigger",
|
|
"operationId": "updateWebsocketTrigger",
|
|
"tags": [
|
|
"websocket_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "updated trigger",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/EditWebsocketTrigger"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "websocket trigger updated",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/websocket_triggers/delete/{path}": {
|
|
"delete": {
|
|
"summary": "delete websocket trigger",
|
|
"operationId": "deleteWebsocketTrigger",
|
|
"tags": [
|
|
"websocket_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "websocket trigger deleted",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/websocket_triggers/get/{path}": {
|
|
"get": {
|
|
"summary": "get websocket trigger",
|
|
"operationId": "getWebsocketTrigger",
|
|
"tags": [
|
|
"websocket_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "websocket trigger deleted",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/WebsocketTrigger"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/websocket_triggers/list": {
|
|
"get": {
|
|
"summary": "list websocket triggers",
|
|
"operationId": "listWebsocketTriggers",
|
|
"tags": [
|
|
"websocket_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId",
|
|
"required": true
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Page"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/PerPage"
|
|
},
|
|
{
|
|
"name": "path",
|
|
"description": "filter by path",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "is_flow",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
{
|
|
"name": "path_start",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "label",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "string"
|
|
},
|
|
"description": "Filter by label"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "websocket trigger list",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/WebsocketTrigger"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/websocket_triggers/exists/{path}": {
|
|
"get": {
|
|
"summary": "does websocket trigger exists",
|
|
"operationId": "existsWebsocketTrigger",
|
|
"tags": [
|
|
"websocket_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "websocket trigger exists",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/websocket_triggers/setmode/{path}": {
|
|
"post": {
|
|
"summary": "set enabled websocket trigger",
|
|
"operationId": "setWebsocketTriggerMode",
|
|
"tags": [
|
|
"websocket_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "updated websocket trigger enable",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"mode": {
|
|
"$ref": "#/components/schemas/TriggerMode"
|
|
}
|
|
},
|
|
"required": [
|
|
"mode"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "websocket trigger enabled set",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/websocket_triggers/test": {
|
|
"post": {
|
|
"summary": "test websocket connection",
|
|
"operationId": "testWebsocketConnection",
|
|
"tags": [
|
|
"websocket_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "test websocket connection",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"url": {
|
|
"type": "string"
|
|
},
|
|
"url_runnable_args": {
|
|
"$ref": "#/components/schemas/ScriptArgs"
|
|
},
|
|
"can_return_message": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"required": [
|
|
"url",
|
|
"can_return_message"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "successfuly connected to websocket",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/kafka_triggers/create": {
|
|
"post": {
|
|
"summary": "create kafka trigger",
|
|
"operationId": "createKafkaTrigger",
|
|
"tags": [
|
|
"kafka_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "new kafka trigger",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/NewKafkaTrigger"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "kafka trigger created",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/kafka_triggers/update/{path}": {
|
|
"post": {
|
|
"summary": "update kafka trigger",
|
|
"operationId": "updateKafkaTrigger",
|
|
"tags": [
|
|
"kafka_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "updated trigger",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/EditKafkaTrigger"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "kafka trigger updated",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/kafka_triggers/delete/{path}": {
|
|
"delete": {
|
|
"summary": "delete kafka trigger",
|
|
"operationId": "deleteKafkaTrigger",
|
|
"tags": [
|
|
"kafka_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "kafka trigger deleted",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/kafka_triggers/get/{path}": {
|
|
"get": {
|
|
"summary": "get kafka trigger",
|
|
"operationId": "getKafkaTrigger",
|
|
"tags": [
|
|
"kafka_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "kafka trigger deleted",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/KafkaTrigger"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/kafka_triggers/list": {
|
|
"get": {
|
|
"summary": "list kafka triggers",
|
|
"operationId": "listKafkaTriggers",
|
|
"tags": [
|
|
"kafka_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId",
|
|
"required": true
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Page"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/PerPage"
|
|
},
|
|
{
|
|
"name": "path",
|
|
"description": "filter by path",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "is_flow",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
{
|
|
"name": "path_start",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "label",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "string"
|
|
},
|
|
"description": "Filter by label"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "kafka trigger list",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/KafkaTrigger"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/kafka_triggers/exists/{path}": {
|
|
"get": {
|
|
"summary": "does kafka trigger exists",
|
|
"operationId": "existsKafkaTrigger",
|
|
"tags": [
|
|
"kafka_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "kafka trigger exists",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/kafka_triggers/setmode/{path}": {
|
|
"post": {
|
|
"summary": "set enabled kafka trigger",
|
|
"operationId": "setKafkaTriggerMode",
|
|
"tags": [
|
|
"kafka_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "updated kafka trigger enable",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"mode": {
|
|
"$ref": "#/components/schemas/TriggerMode"
|
|
}
|
|
},
|
|
"required": [
|
|
"mode"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "kafka trigger enabled set",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/kafka_triggers/test": {
|
|
"post": {
|
|
"summary": "test kafka connection",
|
|
"operationId": "testKafkaConnection",
|
|
"tags": [
|
|
"kafka_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "test kafka connection",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"connection": {
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"connection"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "successfuly connected to kafka brokers",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/kafka_triggers/reset_offsets/{path}": {
|
|
"post": {
|
|
"summary": "reset kafka trigger offsets to earliest",
|
|
"operationId": "resetKafkaOffsets",
|
|
"tags": [
|
|
"kafka_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "kafka trigger offsets reset successfully"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/kafka_triggers/commit_offsets/{path}": {
|
|
"post": {
|
|
"summary": "commit kafka offsets for a specific trigger",
|
|
"operationId": "commitKafkaOffsets",
|
|
"tags": [
|
|
"kafka_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "offsets to commit",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"topic": {
|
|
"type": "string"
|
|
},
|
|
"partition": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"offset": {
|
|
"type": "integer",
|
|
"format": "int64"
|
|
}
|
|
},
|
|
"required": [
|
|
"topic",
|
|
"partition",
|
|
"offset"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "kafka offsets committed successfully"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/nats_triggers/create": {
|
|
"post": {
|
|
"summary": "create nats trigger",
|
|
"operationId": "createNatsTrigger",
|
|
"tags": [
|
|
"nats_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "new nats trigger",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/NewNatsTrigger"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "nats trigger created",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/nats_triggers/update/{path}": {
|
|
"post": {
|
|
"summary": "update nats trigger",
|
|
"operationId": "updateNatsTrigger",
|
|
"tags": [
|
|
"nats_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "updated trigger",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/EditNatsTrigger"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "nats trigger updated",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/nats_triggers/delete/{path}": {
|
|
"delete": {
|
|
"summary": "delete nats trigger",
|
|
"operationId": "deleteNatsTrigger",
|
|
"tags": [
|
|
"nats_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "nats trigger deleted",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/nats_triggers/get/{path}": {
|
|
"get": {
|
|
"summary": "get nats trigger",
|
|
"operationId": "getNatsTrigger",
|
|
"tags": [
|
|
"nats_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "nats trigger deleted",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/NatsTrigger"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/nats_triggers/list": {
|
|
"get": {
|
|
"summary": "list nats triggers",
|
|
"operationId": "listNatsTriggers",
|
|
"tags": [
|
|
"nats_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId",
|
|
"required": true
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Page"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/PerPage"
|
|
},
|
|
{
|
|
"name": "path",
|
|
"description": "filter by path",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "is_flow",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
{
|
|
"name": "path_start",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "label",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "string"
|
|
},
|
|
"description": "Filter by label"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "nats trigger list",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/NatsTrigger"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/nats_triggers/exists/{path}": {
|
|
"get": {
|
|
"summary": "does nats trigger exists",
|
|
"operationId": "existsNatsTrigger",
|
|
"tags": [
|
|
"nats_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "nats trigger exists",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/nats_triggers/setmode/{path}": {
|
|
"post": {
|
|
"summary": "set enabled nats trigger",
|
|
"operationId": "setNatsTriggerMode",
|
|
"tags": [
|
|
"nats_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "updated nats trigger enable",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"mode": {
|
|
"$ref": "#/components/schemas/TriggerMode"
|
|
}
|
|
},
|
|
"required": [
|
|
"mode"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "nats trigger enabled set",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/nats_triggers/test": {
|
|
"post": {
|
|
"summary": "test NATS connection",
|
|
"operationId": "testNatsConnection",
|
|
"tags": [
|
|
"nats_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "test nats connection",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"connection": {
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"connection"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "successfuly connected to NATS servers",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/sqs_triggers/create": {
|
|
"post": {
|
|
"summary": "create sqs trigger",
|
|
"operationId": "createSqsTrigger",
|
|
"tags": [
|
|
"sqs_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "new sqs trigger",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/NewSqsTrigger"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "sqs trigger created",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/sqs_triggers/update/{path}": {
|
|
"post": {
|
|
"summary": "update sqs trigger",
|
|
"operationId": "updateSqsTrigger",
|
|
"tags": [
|
|
"sqs_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "updated trigger",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/EditSqsTrigger"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "sqs trigger updated",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/sqs_triggers/delete/{path}": {
|
|
"delete": {
|
|
"summary": "delete sqs trigger",
|
|
"operationId": "deleteSqsTrigger",
|
|
"tags": [
|
|
"sqs_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "sqs trigger deleted",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/sqs_triggers/get/{path}": {
|
|
"get": {
|
|
"summary": "get sqs trigger",
|
|
"operationId": "getSqsTrigger",
|
|
"tags": [
|
|
"sqs_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "sqs trigger deleted",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SqsTrigger"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/sqs_triggers/list": {
|
|
"get": {
|
|
"summary": "list sqs triggers",
|
|
"operationId": "listSqsTriggers",
|
|
"tags": [
|
|
"sqs_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId",
|
|
"required": true
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Page"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/PerPage"
|
|
},
|
|
{
|
|
"name": "path",
|
|
"description": "filter by path",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "is_flow",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
{
|
|
"name": "path_start",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "label",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "string"
|
|
},
|
|
"description": "Filter by label"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "sqs trigger list",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/SqsTrigger"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/sqs_triggers/exists/{path}": {
|
|
"get": {
|
|
"summary": "does sqs trigger exists",
|
|
"operationId": "existsSqsTrigger",
|
|
"tags": [
|
|
"sqs_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "sqs trigger exists",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/sqs_triggers/setmode/{path}": {
|
|
"post": {
|
|
"summary": "set enabled sqs trigger",
|
|
"operationId": "setSqsTriggerMode",
|
|
"tags": [
|
|
"sqs_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "updated sqs trigger enable",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"mode": {
|
|
"$ref": "#/components/schemas/TriggerMode"
|
|
}
|
|
},
|
|
"required": [
|
|
"mode"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "sqs trigger enabled set",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/sqs_triggers/test": {
|
|
"post": {
|
|
"summary": "test sqs connection",
|
|
"operationId": "testSqsConnection",
|
|
"tags": [
|
|
"sqs_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "test sqs connection",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"connection": {
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"connection"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "successfuly connected to sqs",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/native_triggers/integrations/list": {
|
|
"get": {
|
|
"summary": "list available native trigger services",
|
|
"operationId": "listNativeTriggerServices",
|
|
"tags": [
|
|
"workspace_integration"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "native trigger services list",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/WorkspaceIntegrations"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/native_triggers/integrations/{service_name}/exists": {
|
|
"get": {
|
|
"summary": "check if integrations for a particular service exists",
|
|
"operationId": "checkIfNativeTriggersServiceExists",
|
|
"tags": [
|
|
"workspace_integration"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "service_name",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/NativeServiceName"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "integration exists",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/native_triggers/integrations/{service_name}/create": {
|
|
"post": {
|
|
"summary": "create native trigger service",
|
|
"operationId": "createNativeTriggerService",
|
|
"tags": [
|
|
"workspace_integration"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "service_name",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/NativeServiceName"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "new native trigger service",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/WorkspaceOAuthConfig"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "native trigger service created",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/native_triggers/integrations/{service_name}/generate_connect_url": {
|
|
"post": {
|
|
"summary": "generate connect url for native trigger service",
|
|
"operationId": "generateNativeTriggerServiceConnectUrl",
|
|
"tags": [
|
|
"workspace_integration"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "service_name",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/NativeServiceName"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "redirect_uri",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/RedirectUri"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "native trigger service connect url",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/native_triggers/integrations/{service_name}/instance_sharing_available": {
|
|
"get": {
|
|
"summary": "check if instance-level credential sharing is available for a service",
|
|
"operationId": "checkInstanceSharingAvailable",
|
|
"tags": [
|
|
"workspace_integration"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "service_name",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/NativeServiceName"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "whether instance sharing is available",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/native_triggers/integrations/{service_name}/generate_instance_connect_url": {
|
|
"post": {
|
|
"summary": "generate connect url using instance-level credentials",
|
|
"operationId": "generateInstanceConnectUrl",
|
|
"tags": [
|
|
"workspace_integration"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "service_name",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/NativeServiceName"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "redirect_uri",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/RedirectUri"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "authorization URL using instance credentials",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/native_triggers/integrations/{service_name}/delete": {
|
|
"delete": {
|
|
"summary": "delete native trigger service",
|
|
"operationId": "deleteNativeTriggerService",
|
|
"tags": [
|
|
"workspace_integration"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "service_name",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/NativeServiceName"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "native trigger service deleted",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/native_triggers/integrations/{service_name}/callback": {
|
|
"post": {
|
|
"summary": "native trigger service oauth callback",
|
|
"operationId": "nativeTriggerServiceCallback",
|
|
"tags": [
|
|
"workspace_integration"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "service_name",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/NativeServiceName"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "OAuth callback data",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"code": {
|
|
"type": "string"
|
|
},
|
|
"state": {
|
|
"type": "string"
|
|
},
|
|
"redirect_uri": {
|
|
"type": "string"
|
|
},
|
|
"resource_path": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"code",
|
|
"state",
|
|
"redirect_uri"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "native trigger service oauth completed",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/native_triggers/{service_name}/create": {
|
|
"post": {
|
|
"summary": "create native trigger",
|
|
"description": "Creates a new native trigger for the specified service.\nRequires write access to the script or flow that the trigger will be associated with.\n",
|
|
"operationId": "createNativeTrigger",
|
|
"tags": [
|
|
"native_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "service_name",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/NativeServiceName"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "new native trigger configuration",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/NativeTriggerData"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "native trigger created",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateTriggerResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/native_triggers/{service_name}/update/{external_id}": {
|
|
"post": {
|
|
"summary": "update native trigger",
|
|
"description": "Updates an existing native trigger.\nRequires write access to the script or flow that the trigger is associated with.\n",
|
|
"operationId": "updateNativeTrigger",
|
|
"tags": [
|
|
"native_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "service_name",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/NativeServiceName"
|
|
}
|
|
},
|
|
{
|
|
"name": "external_id",
|
|
"in": "path",
|
|
"required": true,
|
|
"description": "The external ID of the trigger from the external service",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "updated native trigger configuration",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/NativeTriggerData"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "native trigger updated",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/native_triggers/{service_name}/get/{external_id}": {
|
|
"get": {
|
|
"summary": "get native trigger",
|
|
"description": "Retrieves a native trigger by its external ID.\nRequires write access to the script or flow that the trigger is associated with.\n",
|
|
"operationId": "getNativeTrigger",
|
|
"tags": [
|
|
"native_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "service_name",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/NativeServiceName"
|
|
}
|
|
},
|
|
{
|
|
"name": "external_id",
|
|
"in": "path",
|
|
"required": true,
|
|
"description": "The external ID of the trigger from the external service",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "native trigger with external configuration",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/NativeTriggerWithExternal"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/native_triggers/{service_name}/delete/{external_id}": {
|
|
"delete": {
|
|
"summary": "delete native trigger",
|
|
"description": "Deletes a native trigger by its external ID.\nRequires write access to the script or flow that the trigger is associated with.\n",
|
|
"operationId": "deleteNativeTrigger",
|
|
"tags": [
|
|
"native_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "service_name",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/NativeServiceName"
|
|
}
|
|
},
|
|
{
|
|
"name": "external_id",
|
|
"in": "path",
|
|
"required": true,
|
|
"description": "The external ID of the trigger from the external service",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "native trigger deleted",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/native_triggers/{service_name}/list": {
|
|
"get": {
|
|
"summary": "list native triggers",
|
|
"description": "Lists all native triggers for the specified service in the workspace.",
|
|
"operationId": "listNativeTriggers",
|
|
"tags": [
|
|
"native_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "service_name",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/NativeServiceName"
|
|
}
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Page"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/PerPage"
|
|
},
|
|
{
|
|
"name": "path",
|
|
"description": "filter by script path",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "is_flow",
|
|
"description": "filter by is_flow",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
{
|
|
"name": "label",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "string"
|
|
},
|
|
"description": "Filter by label"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "native triggers list",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/NativeTrigger"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/native_triggers/{service_name}/exists/{external_id}": {
|
|
"get": {
|
|
"summary": "check if native trigger exists",
|
|
"description": "Checks if a native trigger with the given external ID exists.",
|
|
"operationId": "existsNativeTrigger",
|
|
"tags": [
|
|
"native_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "service_name",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/NativeServiceName"
|
|
}
|
|
},
|
|
{
|
|
"name": "external_id",
|
|
"in": "path",
|
|
"required": true,
|
|
"description": "The external ID of the trigger from the external service",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "whether the native trigger exists",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/native_triggers/{service_name}/sync": {
|
|
"post": {
|
|
"summary": "sync native triggers with external service",
|
|
"operationId": "syncNativeTriggers",
|
|
"tags": [
|
|
"native_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "service_name",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/NativeServiceName"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "sync completed successfully"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/native_triggers/nextcloud/events": {
|
|
"get": {
|
|
"summary": "list available NextCloud events",
|
|
"operationId": "listNextCloudEvents",
|
|
"tags": [
|
|
"native_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "workspace",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "list of available NextCloud events",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/NextCloudEventType"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/native_triggers/google/calendars": {
|
|
"get": {
|
|
"summary": "list Google Calendars for the authenticated user",
|
|
"operationId": "listGoogleCalendars",
|
|
"tags": [
|
|
"native_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "workspace",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "list of Google Calendars",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/GoogleCalendarEntry"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/native_triggers/google/drive/files": {
|
|
"get": {
|
|
"summary": "list or search Google Drive files",
|
|
"operationId": "listGoogleDriveFiles",
|
|
"tags": [
|
|
"native_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "workspace",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "q",
|
|
"in": "query",
|
|
"description": "search query to filter files by name",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "parent_id",
|
|
"in": "query",
|
|
"description": "folder ID to list children of",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "page_token",
|
|
"in": "query",
|
|
"description": "token for next page of results",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "shared_with_me",
|
|
"in": "query",
|
|
"description": "if true, list files shared with the user",
|
|
"schema": {
|
|
"type": "boolean",
|
|
"default": false
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "list of Google Drive files",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/GoogleDriveFilesResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/native_triggers/google/drive/shared_drives": {
|
|
"get": {
|
|
"summary": "list shared drives accessible to the user",
|
|
"operationId": "listGoogleSharedDrives",
|
|
"tags": [
|
|
"native_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "workspace",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "list of shared drives",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/SharedDriveEntry"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/native_triggers/{service_name}/w/{workspace_id}/webhook/{internal_id}": {
|
|
"post": {
|
|
"summary": "receive webhook from external native trigger service",
|
|
"operationId": "nativeTriggerWebhook",
|
|
"tags": [
|
|
"native_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "service_name",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/NativeServiceName"
|
|
}
|
|
},
|
|
{
|
|
"name": "workspace_id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "internal_id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int64"
|
|
},
|
|
"description": "The internal database ID of the trigger"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "webhook payload from external service",
|
|
"required": false,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"additionalProperties": true
|
|
}
|
|
},
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "webhook received successfully",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/mqtt_triggers/create": {
|
|
"post": {
|
|
"summary": "create mqtt trigger",
|
|
"operationId": "createMqttTrigger",
|
|
"tags": [
|
|
"mqtt_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "new mqtt trigger",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/NewMqttTrigger"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "mqtt trigger created",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/mqtt_triggers/update/{path}": {
|
|
"post": {
|
|
"summary": "update mqtt trigger",
|
|
"operationId": "updateMqttTrigger",
|
|
"tags": [
|
|
"mqtt_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "updated trigger",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/EditMqttTrigger"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "mqtt trigger updated",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/mqtt_triggers/delete/{path}": {
|
|
"delete": {
|
|
"summary": "delete mqtt trigger",
|
|
"operationId": "deleteMqttTrigger",
|
|
"tags": [
|
|
"mqtt_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "mqtt trigger deleted",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/mqtt_triggers/get/{path}": {
|
|
"get": {
|
|
"summary": "get mqtt trigger",
|
|
"operationId": "getMqttTrigger",
|
|
"tags": [
|
|
"mqtt_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "mqtt trigger deleted",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/MqttTrigger"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/mqtt_triggers/list": {
|
|
"get": {
|
|
"summary": "list mqtt triggers",
|
|
"operationId": "listMqttTriggers",
|
|
"tags": [
|
|
"mqtt_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId",
|
|
"required": true
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Page"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/PerPage"
|
|
},
|
|
{
|
|
"name": "path",
|
|
"description": "filter by path",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "is_flow",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
{
|
|
"name": "path_start",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "label",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "string"
|
|
},
|
|
"description": "Filter by label"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "mqtt trigger list",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/MqttTrigger"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/mqtt_triggers/exists/{path}": {
|
|
"get": {
|
|
"summary": "does mqtt trigger exists",
|
|
"operationId": "existsMqttTrigger",
|
|
"tags": [
|
|
"mqtt_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "mqtt trigger exists",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/mqtt_triggers/setmode/{path}": {
|
|
"post": {
|
|
"summary": "set enabled mqtt trigger",
|
|
"operationId": "setMqttTriggerMode",
|
|
"tags": [
|
|
"mqtt_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "updated mqtt trigger enable",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"mode": {
|
|
"$ref": "#/components/schemas/TriggerMode"
|
|
}
|
|
},
|
|
"required": [
|
|
"mode"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "mqtt trigger enabled set",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/mqtt_triggers/test": {
|
|
"post": {
|
|
"summary": "test mqtt connection",
|
|
"operationId": "testMqttConnection",
|
|
"tags": [
|
|
"mqtt_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "test mqtt connection",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"connection": {
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"connection"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "successfully connected to mqtt",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/gcp_triggers/create": {
|
|
"post": {
|
|
"summary": "create gcp trigger",
|
|
"operationId": "createGcpTrigger",
|
|
"tags": [
|
|
"gcp_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "new gcp trigger",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/GcpTriggerData"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "gcp trigger created",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/gcp_triggers/update/{path}": {
|
|
"post": {
|
|
"summary": "update gcp trigger",
|
|
"operationId": "updateGcpTrigger",
|
|
"tags": [
|
|
"gcp_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "updated trigger",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/GcpTriggerData"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "gcp trigger updated",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/gcp_triggers/delete/{path}": {
|
|
"delete": {
|
|
"summary": "delete gcp trigger",
|
|
"operationId": "deleteGcpTrigger",
|
|
"tags": [
|
|
"gcp_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "gcp trigger deleted",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/gcp_triggers/get/{path}": {
|
|
"get": {
|
|
"summary": "get gcp trigger",
|
|
"operationId": "getGcpTrigger",
|
|
"tags": [
|
|
"gcp_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "gcp trigger deleted",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/GcpTrigger"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/gcp_triggers/list": {
|
|
"get": {
|
|
"summary": "list gcp triggers",
|
|
"operationId": "listGcpTriggers",
|
|
"tags": [
|
|
"gcp_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId",
|
|
"required": true
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Page"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/PerPage"
|
|
},
|
|
{
|
|
"name": "path",
|
|
"description": "filter by path",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "is_flow",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
{
|
|
"name": "path_start",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "label",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "string"
|
|
},
|
|
"description": "Filter by label"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "gcp trigger list",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/GcpTrigger"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/gcp_triggers/exists/{path}": {
|
|
"get": {
|
|
"summary": "does gcp trigger exists",
|
|
"operationId": "existsGcpTrigger",
|
|
"tags": [
|
|
"gcp_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "gcp trigger exists",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/gcp_triggers/setmode/{path}": {
|
|
"post": {
|
|
"summary": "set enabled gcp trigger",
|
|
"operationId": "setGcpTriggerMode",
|
|
"tags": [
|
|
"gcp_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "updated gcp trigger enable",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"mode": {
|
|
"$ref": "#/components/schemas/TriggerMode"
|
|
}
|
|
},
|
|
"required": [
|
|
"mode"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "gcp trigger enabled set",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/gcp_triggers/test": {
|
|
"post": {
|
|
"summary": "test gcp connection",
|
|
"operationId": "testGcpConnection",
|
|
"tags": [
|
|
"gcp_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "test gcp connection",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"connection": {
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"connection"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "try to connect to a gcp broker",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/gcp_triggers/subscriptions/delete/{path}": {
|
|
"delete": {
|
|
"summary": "delete gcp trigger",
|
|
"operationId": "deleteGcpSubscription",
|
|
"tags": [
|
|
"gcp_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "args to delete subscription from google cloud",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/DeleteGcpSubscription"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "gcp trigger deleted",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/gcp_triggers/topics/list/{path}": {
|
|
"get": {
|
|
"summary": "list all topics of google cloud service",
|
|
"operationId": "listGoogleTopics",
|
|
"tags": [
|
|
"gcp_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "get all google topics",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/gcp_triggers/subscriptions/list/{path}": {
|
|
"post": {
|
|
"summary": "list all subscription of a give topic from google cloud service",
|
|
"operationId": "listAllTGoogleTopicSubscriptions",
|
|
"tags": [
|
|
"gcp_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "args to get subscription's topic from google cloud",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/GetAllTopicSubscription"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "get all google topic subscriptions name",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/postgres_triggers/postgres/version/{path}": {
|
|
"get": {
|
|
"summary": "get postgres version",
|
|
"operationId": "getPostgresVersion",
|
|
"tags": [
|
|
"postgres_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "postgres version",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/postgres_triggers/is_valid_postgres_configuration/{path}": {
|
|
"get": {
|
|
"summary": "check if postgres configuration is set to logical",
|
|
"operationId": "isValidPostgresConfiguration",
|
|
"tags": [
|
|
"postgres_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "boolean that indicates if postgres is set to logical level or not",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/postgres_triggers/create_template_script": {
|
|
"post": {
|
|
"summary": "create template script",
|
|
"operationId": "createTemplateScript",
|
|
"tags": [
|
|
"postgres_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "template script",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/TemplateScript"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "custom id to retrieve template script",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/postgres_triggers/get_template_script/{id}": {
|
|
"get": {
|
|
"summary": "get template script",
|
|
"operationId": "getTemplateScript",
|
|
"tags": [
|
|
"postgres_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Id"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "template script",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/postgres_triggers/slot/list/{path}": {
|
|
"get": {
|
|
"summary": "list postgres replication slot",
|
|
"operationId": "listPostgresReplicationSlot",
|
|
"tags": [
|
|
"postgres_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "list postgres slot",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/SlotList"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/postgres_triggers/slot/create/{path}": {
|
|
"post": {
|
|
"summary": "create replication slot for postgres",
|
|
"operationId": "createPostgresReplicationSlot",
|
|
"tags": [
|
|
"postgres_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "new slot for postgres",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Slot"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "slot created",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/postgres_triggers/slot/delete/{path}": {
|
|
"delete": {
|
|
"summary": "delete postgres replication slot",
|
|
"operationId": "deletePostgresReplicationSlot",
|
|
"tags": [
|
|
"postgres_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "replication slot of postgres",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Slot"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "postgres replication slot deleted",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/postgres_triggers/publication/list/{path}": {
|
|
"get": {
|
|
"summary": "list postgres publication",
|
|
"operationId": "listPostgresPublication",
|
|
"tags": [
|
|
"postgres_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "database publication list",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/postgres_triggers/publication/get/{publication}/{path}": {
|
|
"get": {
|
|
"summary": "get postgres publication",
|
|
"operationId": "getPostgresPublication",
|
|
"tags": [
|
|
"postgres_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/PublicationName"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "postgres publication get",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PublicationData"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/postgres_triggers/publication/create/{publication}/{path}": {
|
|
"post": {
|
|
"summary": "create publication for postgres",
|
|
"operationId": "createPostgresPublication",
|
|
"tags": [
|
|
"postgres_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/PublicationName"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "new publication for postgres",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PublicationData"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "publication created",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/postgres_triggers/publication/update/{publication}/{path}": {
|
|
"post": {
|
|
"summary": "update publication for postgres",
|
|
"operationId": "updatePostgresPublication",
|
|
"tags": [
|
|
"postgres_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/PublicationName"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "update publication for postgres",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PublicationData"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "publication updated",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/postgres_triggers/publication/delete/{publication}/{path}": {
|
|
"delete": {
|
|
"summary": "delete postgres publication",
|
|
"operationId": "deletePostgresPublication",
|
|
"tags": [
|
|
"postgres_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/PublicationName"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "postgres publication deleted",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/postgres_triggers/create": {
|
|
"post": {
|
|
"summary": "create postgres trigger",
|
|
"operationId": "createPostgresTrigger",
|
|
"tags": [
|
|
"postgres_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "new postgres trigger",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/NewPostgresTrigger"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "postgres trigger created",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/postgres_triggers/update/{path}": {
|
|
"post": {
|
|
"summary": "update postgres trigger",
|
|
"operationId": "updatePostgresTrigger",
|
|
"tags": [
|
|
"postgres_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "updated trigger",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/EditPostgresTrigger"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "postgres trigger updated",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/postgres_triggers/delete/{path}": {
|
|
"delete": {
|
|
"summary": "delete postgres trigger",
|
|
"operationId": "deletePostgresTrigger",
|
|
"tags": [
|
|
"postgres_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "postgres trigger deleted",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/postgres_triggers/get/{path}": {
|
|
"get": {
|
|
"summary": "get postgres trigger",
|
|
"operationId": "getPostgresTrigger",
|
|
"tags": [
|
|
"postgres_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "get postgres trigger",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PostgresTrigger"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/postgres_triggers/list": {
|
|
"get": {
|
|
"summary": "list postgres triggers",
|
|
"operationId": "listPostgresTriggers",
|
|
"tags": [
|
|
"postgres_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId",
|
|
"required": true
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Page"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/PerPage"
|
|
},
|
|
{
|
|
"name": "path",
|
|
"description": "filter by path",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "is_flow",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
{
|
|
"name": "path_start",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "label",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "string"
|
|
},
|
|
"description": "Filter by label"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "postgres trigger list",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/PostgresTrigger"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/postgres_triggers/exists/{path}": {
|
|
"get": {
|
|
"summary": "does postgres trigger exists",
|
|
"operationId": "existsPostgresTrigger",
|
|
"tags": [
|
|
"postgres_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "postgres trigger exists",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/postgres_triggers/setmode/{path}": {
|
|
"post": {
|
|
"summary": "set enabled postgres trigger",
|
|
"operationId": "setPostgresTriggerMode",
|
|
"tags": [
|
|
"postgres_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "updated postgres trigger enable",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"mode": {
|
|
"$ref": "#/components/schemas/TriggerMode"
|
|
}
|
|
},
|
|
"required": [
|
|
"mode"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "postgres trigger enabled set",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/postgres_triggers/test": {
|
|
"post": {
|
|
"summary": "test postgres connection",
|
|
"operationId": "testPostgresConnection",
|
|
"tags": [
|
|
"postgres_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "test postgres connection",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"database": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"database"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "successfuly connected to postgres",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/email_triggers/create": {
|
|
"post": {
|
|
"summary": "create email trigger",
|
|
"operationId": "createEmailTrigger",
|
|
"tags": [
|
|
"email_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "new email trigger",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/NewEmailTrigger"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "email trigger created",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/email_triggers/update/{path}": {
|
|
"post": {
|
|
"summary": "update email trigger",
|
|
"operationId": "updateEmailTrigger",
|
|
"tags": [
|
|
"email_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "updated trigger",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/EditEmailTrigger"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "email trigger updated",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/email_triggers/delete/{path}": {
|
|
"delete": {
|
|
"summary": "delete email trigger",
|
|
"operationId": "deleteEmailTrigger",
|
|
"tags": [
|
|
"email_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "email trigger deleted",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/email_triggers/get/{path}": {
|
|
"get": {
|
|
"summary": "get email trigger",
|
|
"operationId": "getEmailTrigger",
|
|
"tags": [
|
|
"email_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "email trigger retrieved",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/EmailTrigger"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/email_triggers/list": {
|
|
"get": {
|
|
"summary": "list email triggers",
|
|
"operationId": "listEmailTriggers",
|
|
"tags": [
|
|
"email_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId",
|
|
"required": true
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Page"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/PerPage"
|
|
},
|
|
{
|
|
"name": "path",
|
|
"description": "filter by path",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "is_flow",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
{
|
|
"name": "path_start",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "label",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "string"
|
|
},
|
|
"description": "Filter by label"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "email trigger list",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/EmailTrigger"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/email_triggers/exists/{path}": {
|
|
"get": {
|
|
"summary": "does email trigger exists",
|
|
"operationId": "existsEmailTrigger",
|
|
"tags": [
|
|
"email_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "email trigger exists",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/email_triggers/local_part_exists": {
|
|
"post": {
|
|
"summary": "does email local part exists",
|
|
"operationId": "existsEmailLocalPart",
|
|
"tags": [
|
|
"email_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "email local part exists request",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"local_part": {
|
|
"type": "string"
|
|
},
|
|
"workspaced_local_part": {
|
|
"type": "boolean"
|
|
},
|
|
"trigger_path": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"local_part"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "email local part exists",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/email_triggers/setmode/{path}": {
|
|
"post": {
|
|
"summary": "enable/disable email trigger",
|
|
"operationId": "setEmailTriggerMode",
|
|
"tags": [
|
|
"email_trigger"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"mode": {
|
|
"$ref": "#/components/schemas/TriggerMode"
|
|
}
|
|
},
|
|
"required": [
|
|
"mode"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "email trigger enable/disable",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/groups/list": {
|
|
"get": {
|
|
"summary": "list instance groups",
|
|
"operationId": "listInstanceGroups",
|
|
"tags": [
|
|
"group"
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "instance group list",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/InstanceGroup"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/groups/list_with_workspaces": {
|
|
"get": {
|
|
"summary": "list instance groups with workspace information",
|
|
"operationId": "listInstanceGroupsWithWorkspaces",
|
|
"tags": [
|
|
"group"
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "instance group list with workspaces",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/InstanceGroupWithWorkspaces"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/groups/get/{name}": {
|
|
"get": {
|
|
"summary": "get instance group",
|
|
"operationId": "getInstanceGroup",
|
|
"tags": [
|
|
"group"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/Name"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "instance group",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/InstanceGroupWithWorkspaces"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/groups/create": {
|
|
"post": {
|
|
"summary": "create instance group",
|
|
"operationId": "createInstanceGroup",
|
|
"tags": [
|
|
"group"
|
|
],
|
|
"requestBody": {
|
|
"description": "create instance group",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"summary": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"name"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "instance group created",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/groups/update/{name}": {
|
|
"post": {
|
|
"summary": "update instance group",
|
|
"operationId": "updateInstanceGroup",
|
|
"tags": [
|
|
"group"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/Name"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "update instance group",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"new_summary": {
|
|
"type": "string"
|
|
},
|
|
"instance_role": {
|
|
"type": "string",
|
|
"nullable": true,
|
|
"description": "Instance-level role for group members. 'superadmin', 'devops', 'user' or empty to clear."
|
|
}
|
|
},
|
|
"required": [
|
|
"new_summary"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "instance group updated",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/groups/delete/{name}": {
|
|
"delete": {
|
|
"summary": "delete instance group",
|
|
"operationId": "deleteInstanceGroup",
|
|
"tags": [
|
|
"group"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/Name"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "instance group deleted",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/groups/adduser/{name}": {
|
|
"post": {
|
|
"summary": "add user to instance group",
|
|
"operationId": "addUserToInstanceGroup",
|
|
"tags": [
|
|
"group"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/Name"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "user to add to instance group",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"email": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"email"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "user added to instance group",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/groups/removeuser/{name}": {
|
|
"post": {
|
|
"summary": "remove user from instance group",
|
|
"operationId": "removeUserFromInstanceGroup",
|
|
"tags": [
|
|
"group"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/Name"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "user to remove from instance group",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"email": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"email"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "user removed from instance group",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/groups/export": {
|
|
"get": {
|
|
"summary": "export instance groups",
|
|
"operationId": "exportInstanceGroups",
|
|
"tags": [
|
|
"group"
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "exported instance groups",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ExportedInstanceGroup"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/groups/overwrite": {
|
|
"post": {
|
|
"summary": "overwrite instance groups",
|
|
"operationId": "overwriteInstanceGroups",
|
|
"tags": [
|
|
"group"
|
|
],
|
|
"requestBody": {
|
|
"description": "overwrite instance groups",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ExportedInstanceGroup"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "success message",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/groups/list": {
|
|
"get": {
|
|
"summary": "list groups",
|
|
"operationId": "listGroups",
|
|
"tags": [
|
|
"group"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Page"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/PerPage"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "group list",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/Group"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/groups/listnames": {
|
|
"get": {
|
|
"summary": "list group names",
|
|
"operationId": "listGroupNames",
|
|
"tags": [
|
|
"group"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "only_member_of",
|
|
"in": "query",
|
|
"description": "only list the groups the user is member of (default false)",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "group list",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/groups/create": {
|
|
"post": {
|
|
"summary": "create group",
|
|
"operationId": "createGroup",
|
|
"tags": [
|
|
"group"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "create group",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"summary": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"name"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "group created",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/groups/update/{name}": {
|
|
"post": {
|
|
"summary": "update group",
|
|
"operationId": "updateGroup",
|
|
"tags": [
|
|
"group"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Name"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "updated group",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"summary": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "group updated",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/groups/delete/{name}": {
|
|
"delete": {
|
|
"summary": "delete group",
|
|
"operationId": "deleteGroup",
|
|
"tags": [
|
|
"group"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Name"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "group deleted",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/groups/get/{name}": {
|
|
"get": {
|
|
"summary": "get group",
|
|
"operationId": "getGroup",
|
|
"tags": [
|
|
"group"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Name"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "group",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Group"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/groups/adduser/{name}": {
|
|
"post": {
|
|
"summary": "add user to group",
|
|
"operationId": "addUserToGroup",
|
|
"tags": [
|
|
"group"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Name"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "added user to group",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"username": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "user added to group",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/groups/removeuser/{name}": {
|
|
"post": {
|
|
"summary": "remove user to group",
|
|
"operationId": "removeUserToGroup",
|
|
"tags": [
|
|
"group"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Name"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "added user to group",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"username": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "user removed from group",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/groups_history/get/{name}": {
|
|
"get": {
|
|
"summary": "get group permission history",
|
|
"operationId": "getGroupPermissionHistory",
|
|
"tags": [
|
|
"group"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Name"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Page"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/PerPage"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "group permission history",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer"
|
|
},
|
|
"changed_by": {
|
|
"type": "string"
|
|
},
|
|
"changed_at": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"change_type": {
|
|
"type": "string"
|
|
},
|
|
"member_affected": {
|
|
"type": "string",
|
|
"nullable": true
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/folders/list": {
|
|
"get": {
|
|
"summary": "list folders",
|
|
"operationId": "listFolders",
|
|
"tags": [
|
|
"folder"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Page"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/PerPage"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "folder list",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/Folder"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/folders/listnames": {
|
|
"get": {
|
|
"summary": "list folder names",
|
|
"operationId": "listFolderNames",
|
|
"tags": [
|
|
"folder"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "only_member_of",
|
|
"in": "query",
|
|
"description": "only list the folders the user is member of (default false)",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "folder list",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/folders/create": {
|
|
"post": {
|
|
"summary": "create folder",
|
|
"operationId": "createFolder",
|
|
"tags": [
|
|
"folder"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "create folder",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"summary": {
|
|
"type": "string"
|
|
},
|
|
"owners": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"extra_perms": {
|
|
"additionalProperties": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"default_permissioned_as": {
|
|
"$ref": "#/components/schemas/FolderDefaultPermissionedAs"
|
|
}
|
|
},
|
|
"required": [
|
|
"name"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "folder created",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/folders/update/{name}": {
|
|
"post": {
|
|
"summary": "update folder",
|
|
"operationId": "updateFolder",
|
|
"tags": [
|
|
"folder"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Name"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "update folder",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"summary": {
|
|
"type": "string"
|
|
},
|
|
"owners": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"extra_perms": {
|
|
"additionalProperties": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"default_permissioned_as": {
|
|
"$ref": "#/components/schemas/FolderDefaultPermissionedAs"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "folder updated",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/folders/delete/{name}": {
|
|
"delete": {
|
|
"summary": "delete folder",
|
|
"operationId": "deleteFolder",
|
|
"tags": [
|
|
"folder"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Name"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "folder deleted",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/folders/get/{name}": {
|
|
"get": {
|
|
"summary": "get folder",
|
|
"operationId": "getFolder",
|
|
"tags": [
|
|
"folder"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Name"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "folder",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Folder"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/folders/exists/{name}": {
|
|
"get": {
|
|
"summary": "exists folder",
|
|
"operationId": "existsFolder",
|
|
"tags": [
|
|
"folder"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Name"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "folder exists",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/folders/getusage/{name}": {
|
|
"get": {
|
|
"summary": "get folder usage",
|
|
"operationId": "getFolderUsage",
|
|
"tags": [
|
|
"folder"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Name"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "folder",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"scripts": {
|
|
"type": "number"
|
|
},
|
|
"flows": {
|
|
"type": "number"
|
|
},
|
|
"apps": {
|
|
"type": "number"
|
|
},
|
|
"resources": {
|
|
"type": "number"
|
|
},
|
|
"variables": {
|
|
"type": "number"
|
|
},
|
|
"schedules": {
|
|
"type": "number"
|
|
}
|
|
},
|
|
"required": [
|
|
"scripts",
|
|
"flows",
|
|
"apps",
|
|
"resources",
|
|
"variables",
|
|
"schedules"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/folders/addowner/{name}": {
|
|
"post": {
|
|
"summary": "add owner to folder",
|
|
"operationId": "addOwnerToFolder",
|
|
"tags": [
|
|
"folder"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Name"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "owner user to folder",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"owner": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"owner"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "owner added to folder",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/folders/removeowner/{name}": {
|
|
"post": {
|
|
"summary": "remove owner to folder",
|
|
"operationId": "removeOwnerToFolder",
|
|
"tags": [
|
|
"folder"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Name"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "added owner to folder",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"owner": {
|
|
"type": "string"
|
|
},
|
|
"write": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"required": [
|
|
"owner"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "owner removed from folder",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/folders_history/get/{name}": {
|
|
"get": {
|
|
"summary": "get folder permission history",
|
|
"operationId": "getFolderPermissionHistory",
|
|
"tags": [
|
|
"folder"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Name"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Page"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/PerPage"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "folder permission history",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer"
|
|
},
|
|
"changed_by": {
|
|
"type": "string"
|
|
},
|
|
"changed_at": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"change_type": {
|
|
"type": "string"
|
|
},
|
|
"affected": {
|
|
"type": "string",
|
|
"nullable": true
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/workers/list": {
|
|
"get": {
|
|
"summary": "list workers",
|
|
"operationId": "listWorkers",
|
|
"x-mcp-tool": true,
|
|
"tags": [
|
|
"worker"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/Page"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/PerPage"
|
|
},
|
|
{
|
|
"name": "ping_since",
|
|
"in": "query",
|
|
"required": false,
|
|
"description": "number of seconds the worker must have had a last ping more recent of (default to 300)",
|
|
"schema": {
|
|
"type": "integer"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "a list of workers",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/WorkerPing"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/workers/exists_workers_with_tags": {
|
|
"get": {
|
|
"summary": "exists workers with tags",
|
|
"operationId": "existsWorkersWithTags",
|
|
"tags": [
|
|
"worker"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "tags",
|
|
"in": "query",
|
|
"required": true,
|
|
"description": "comma separated list of tags",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "workspace",
|
|
"in": "query",
|
|
"required": false,
|
|
"description": "workspace to filter tags visibility (required when TAGS_ARE_SENSITIVE is enabled for non-superadmins)",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "map of tags to whether at least one worker with the tag exists",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/workers/queue_metrics": {
|
|
"get": {
|
|
"summary": "get queue metrics",
|
|
"operationId": "getQueueMetrics",
|
|
"tags": [
|
|
"worker"
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "metrics",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"values": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"created_at": {
|
|
"type": "string"
|
|
},
|
|
"value": {
|
|
"type": "number"
|
|
}
|
|
},
|
|
"required": [
|
|
"created_at",
|
|
"value"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"id",
|
|
"values"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/workers/queue_counts": {
|
|
"get": {
|
|
"summary": "get counts of jobs waiting for an executor per tag",
|
|
"operationId": "getCountsOfJobsWaitingPerTag",
|
|
"tags": [
|
|
"worker"
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "queue counts",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "integer"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/workers/queue_running_counts": {
|
|
"get": {
|
|
"summary": "get counts of currently running jobs per tag",
|
|
"operationId": "getCountsOfRunningJobsPerTag",
|
|
"tags": [
|
|
"worker"
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "queue running counts",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "integer"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/configs/list_worker_groups": {
|
|
"get": {
|
|
"summary": "list worker groups",
|
|
"operationId": "listWorkerGroups",
|
|
"tags": [
|
|
"config"
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "a list of worker group configs",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"config": {}
|
|
},
|
|
"required": [
|
|
"name",
|
|
"config"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/configs/get/{name}": {
|
|
"get": {
|
|
"summary": "get config",
|
|
"operationId": "get config",
|
|
"tags": [
|
|
"config"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/Name"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "a config",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Configs"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/configs/update/{name}": {
|
|
"post": {
|
|
"summary": "Update config",
|
|
"operationId": "updateConfig",
|
|
"tags": [
|
|
"config"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/Name"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "worker group",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Update a worker group",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"delete": {
|
|
"summary": "Delete Config",
|
|
"operationId": "deleteConfig",
|
|
"tags": [
|
|
"config"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/Name"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Delete config",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/configs/list": {
|
|
"get": {
|
|
"summary": "list configs",
|
|
"operationId": "listConfigs",
|
|
"tags": [
|
|
"config"
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "list of configs",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/Config"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/configs/list_autoscaling_events/{worker_group}": {
|
|
"get": {
|
|
"summary": "List autoscaling events",
|
|
"operationId": "listAutoscalingEvents",
|
|
"tags": [
|
|
"config"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "worker_group",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Page"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/PerPage"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "List of autoscaling events",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/AutoscalingEvent"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/configs/native_kubernetes_autoscaling_healthcheck": {
|
|
"get": {
|
|
"summary": "Check Kubernetes autoscaling health for a worker group",
|
|
"operationId": "nativeKubernetesAutoscalingHealthcheck",
|
|
"tags": [
|
|
"config"
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Kubernetes autoscaling is healthy"
|
|
},
|
|
"400": {
|
|
"description": "Error",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/configs/list_available_python_versions": {
|
|
"get": {
|
|
"summary": "Get currently available python versions provided by UV.",
|
|
"operationId": "listAvailablePythonVersions",
|
|
"tags": [
|
|
"config"
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "List of python versions",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/configs/list_all_workspace_dependencies": {
|
|
"get": {
|
|
"summary": "list all workspace dependencies",
|
|
"operationId": "listAllWorkspaceDependencies",
|
|
"tags": [
|
|
"config"
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "a list of workspace dependency summaries",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"workspace_id": {
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"language": {
|
|
"$ref": "#/components/schemas/ScriptLang"
|
|
}
|
|
},
|
|
"required": [
|
|
"workspace_id",
|
|
"language"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/configs/list_all_dedicated_with_deps": {
|
|
"get": {
|
|
"summary": "list all dedicated scripts with their dependencies",
|
|
"operationId": "listAllDedicatedWithDeps",
|
|
"tags": [
|
|
"config"
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "a list of dedicated scripts with workspace dependencies",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"workspace_id": {
|
|
"type": "string"
|
|
},
|
|
"path": {
|
|
"type": "string"
|
|
},
|
|
"language": {
|
|
"$ref": "#/components/schemas/ScriptLang"
|
|
},
|
|
"workspace_dep_names": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"workspace_id",
|
|
"path",
|
|
"language",
|
|
"workspace_dep_names"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/agent_workers/create_agent_token": {
|
|
"post": {
|
|
"summary": "create agent token",
|
|
"operationId": "createAgentToken",
|
|
"tags": [
|
|
"agent_workers"
|
|
],
|
|
"requestBody": {
|
|
"description": "agent token",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"worker_group": {
|
|
"type": "string"
|
|
},
|
|
"tags": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"exp": {
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"required": [
|
|
"worker_group",
|
|
"tags",
|
|
"exp"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "agent token created",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/agent_workers/blacklist_token": {
|
|
"post": {
|
|
"summary": "blacklist agent token (requires super admin)",
|
|
"operationId": "blacklistAgentToken",
|
|
"tags": [
|
|
"agent_workers"
|
|
],
|
|
"requestBody": {
|
|
"description": "token to blacklist",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"token": {
|
|
"type": "string",
|
|
"description": "The agent token to blacklist"
|
|
},
|
|
"expires_at": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"description": "Optional expiration date for the blacklist entry"
|
|
}
|
|
},
|
|
"required": [
|
|
"token"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "token blacklisted successfully"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/agent_workers/remove_blacklist_token": {
|
|
"post": {
|
|
"summary": "remove agent token from blacklist (requires super admin)",
|
|
"operationId": "removeBlacklistAgentToken",
|
|
"tags": [
|
|
"agent_workers"
|
|
],
|
|
"requestBody": {
|
|
"description": "token to remove from blacklist",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"token": {
|
|
"type": "string",
|
|
"description": "The agent token to remove from blacklist"
|
|
}
|
|
},
|
|
"required": [
|
|
"token"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "token removed from blacklist successfully"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/agent_workers/list_blacklisted_tokens": {
|
|
"get": {
|
|
"summary": "list blacklisted agent tokens (requires super admin)",
|
|
"operationId": "listBlacklistedAgentTokens",
|
|
"tags": [
|
|
"agent_workers"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "include_expired",
|
|
"in": "query",
|
|
"description": "Whether to include expired blacklisted tokens",
|
|
"schema": {
|
|
"type": "boolean",
|
|
"default": false
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "list of blacklisted tokens",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"token": {
|
|
"type": "string",
|
|
"description": "The blacklisted token (without prefix)"
|
|
},
|
|
"expires_at": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"description": "When the blacklist entry expires"
|
|
},
|
|
"blacklisted_at": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"description": "When the token was blacklisted"
|
|
},
|
|
"blacklisted_by": {
|
|
"type": "string",
|
|
"description": "Email of the user who blacklisted the token"
|
|
}
|
|
},
|
|
"required": [
|
|
"token",
|
|
"expires_at",
|
|
"blacklisted_at",
|
|
"blacklisted_by"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/agent_workers/get_min_version": {
|
|
"get": {
|
|
"summary": "get minimum worker version across all workers",
|
|
"operationId": "getMinVersion",
|
|
"tags": [
|
|
"agent_workers"
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "minimum worker version",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "string",
|
|
"description": "Minimum semantic version across all workers (e.g. \"1.583.0\")"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/acls/get/{kind}/{path}": {
|
|
"get": {
|
|
"summary": "get granular acls",
|
|
"operationId": "getGranularAcls",
|
|
"tags": [
|
|
"granular_acl"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
},
|
|
{
|
|
"name": "kind",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"enum": [
|
|
"script",
|
|
"group_",
|
|
"resource",
|
|
"schedule",
|
|
"variable",
|
|
"flow",
|
|
"folder",
|
|
"app",
|
|
"raw_app",
|
|
"http_trigger",
|
|
"websocket_trigger",
|
|
"kafka_trigger",
|
|
"nats_trigger",
|
|
"postgres_trigger",
|
|
"mqtt_trigger",
|
|
"gcp_trigger",
|
|
"sqs_trigger",
|
|
"email_trigger",
|
|
"volume"
|
|
]
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "acls",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/acls/add/{kind}/{path}": {
|
|
"post": {
|
|
"summary": "add granular acls",
|
|
"operationId": "addGranularAcls",
|
|
"tags": [
|
|
"granular_acl"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
},
|
|
{
|
|
"name": "kind",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"enum": [
|
|
"script",
|
|
"group_",
|
|
"resource",
|
|
"schedule",
|
|
"variable",
|
|
"flow",
|
|
"folder",
|
|
"app",
|
|
"raw_app",
|
|
"http_trigger",
|
|
"websocket_trigger",
|
|
"kafka_trigger",
|
|
"nats_trigger",
|
|
"postgres_trigger",
|
|
"mqtt_trigger",
|
|
"gcp_trigger",
|
|
"sqs_trigger",
|
|
"email_trigger",
|
|
"volume"
|
|
]
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "acl to add",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"owner": {
|
|
"type": "string"
|
|
},
|
|
"write": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"required": [
|
|
"owner"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "granular acl added",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/acls/remove/{kind}/{path}": {
|
|
"post": {
|
|
"summary": "remove granular acls",
|
|
"operationId": "removeGranularAcls",
|
|
"tags": [
|
|
"granular_acl"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
},
|
|
{
|
|
"name": "kind",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"enum": [
|
|
"script",
|
|
"group_",
|
|
"resource",
|
|
"schedule",
|
|
"variable",
|
|
"flow",
|
|
"folder",
|
|
"app",
|
|
"raw_app",
|
|
"http_trigger",
|
|
"websocket_trigger",
|
|
"kafka_trigger",
|
|
"nats_trigger",
|
|
"postgres_trigger",
|
|
"mqtt_trigger",
|
|
"gcp_trigger",
|
|
"sqs_trigger",
|
|
"email_trigger",
|
|
"volume"
|
|
]
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "acl to add",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"owner": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"owner"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "granular acl removed",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/capture/set_config": {
|
|
"post": {
|
|
"summary": "set capture config",
|
|
"operationId": "setCaptureConfig",
|
|
"tags": [
|
|
"capture"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "capture config",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"trigger_kind": {
|
|
"$ref": "#/components/schemas/CaptureTriggerKind"
|
|
},
|
|
"path": {
|
|
"type": "string"
|
|
},
|
|
"is_flow": {
|
|
"type": "boolean"
|
|
},
|
|
"trigger_config": {
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"trigger_kind",
|
|
"path",
|
|
"is_flow"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "capture config set",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/capture/ping_config/{trigger_kind}/{runnable_kind}/{path}": {
|
|
"post": {
|
|
"summary": "ping capture config",
|
|
"operationId": "pingCaptureConfig",
|
|
"tags": [
|
|
"capture"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "trigger_kind",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CaptureTriggerKind"
|
|
}
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/RunnableKind"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "capture config pinged"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/capture/get_configs/{runnable_kind}/{path}": {
|
|
"get": {
|
|
"summary": "get capture configs for a script or flow",
|
|
"operationId": "getCaptureConfigs",
|
|
"tags": [
|
|
"capture"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/RunnableKind"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "capture configs for a script or flow",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/CaptureConfig"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/capture/list/{runnable_kind}/{path}": {
|
|
"get": {
|
|
"summary": "list captures for a script or flow",
|
|
"operationId": "listCaptures",
|
|
"tags": [
|
|
"capture"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/RunnableKind"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
},
|
|
{
|
|
"name": "trigger_kind",
|
|
"in": "query",
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CaptureTriggerKind"
|
|
}
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Page"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/PerPage"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "list of captures for a script or flow",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/Capture"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/capture/move/{runnable_kind}/{path}": {
|
|
"post": {
|
|
"summary": "move captures and configs for a script or flow",
|
|
"operationId": "moveCapturesAndConfigs",
|
|
"tags": [
|
|
"capture"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/RunnableKind"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "move captures and configs to a new path",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"new_path": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "captures and configs moved",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/capture/{id}": {
|
|
"get": {
|
|
"summary": "get a capture",
|
|
"operationId": "getCapture",
|
|
"tags": [
|
|
"capture"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "capture",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Capture"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"delete": {
|
|
"summary": "delete a capture",
|
|
"operationId": "deleteCapture",
|
|
"tags": [
|
|
"capture"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "capture deleted"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/favorites/star": {
|
|
"post": {
|
|
"summary": "star item",
|
|
"operationId": "star",
|
|
"tags": [
|
|
"favorite"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"path": {
|
|
"type": "string"
|
|
},
|
|
"favorite_kind": {
|
|
"type": "string",
|
|
"enum": [
|
|
"flow",
|
|
"app",
|
|
"script",
|
|
"raw_app",
|
|
"asset"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "star item"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/favorites/unstar": {
|
|
"post": {
|
|
"summary": "unstar item",
|
|
"operationId": "unstar",
|
|
"tags": [
|
|
"favorite"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"path": {
|
|
"type": "string"
|
|
},
|
|
"favorite_kind": {
|
|
"type": "string",
|
|
"enum": [
|
|
"flow",
|
|
"app",
|
|
"script",
|
|
"raw_app",
|
|
"asset"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "unstar item"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/inputs/history": {
|
|
"get": {
|
|
"summary": "List Inputs used in previously completed jobs",
|
|
"operationId": "getInputHistory",
|
|
"tags": [
|
|
"input"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/RunnableId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/RunnableTypeQuery"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Page"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/PerPage"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ArgsFilter"
|
|
},
|
|
{
|
|
"name": "include_preview",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Input history for completed jobs",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/Input"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/inputs/{jobOrInputId}/args": {
|
|
"get": {
|
|
"summary": "Get args from history or saved input",
|
|
"operationId": "getArgsFromHistoryOrSavedInput",
|
|
"tags": [
|
|
"input"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "jobOrInputId",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "input",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
{
|
|
"name": "allow_large",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "args",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/inputs/list": {
|
|
"get": {
|
|
"summary": "List saved Inputs for a Runnable",
|
|
"operationId": "listInputs",
|
|
"tags": [
|
|
"input"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/RunnableId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/RunnableTypeQuery"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Page"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/PerPage"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Saved Inputs for a Runnable",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/Input"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/inputs/create": {
|
|
"post": {
|
|
"summary": "Create an Input for future use in a script or flow",
|
|
"operationId": "createInput",
|
|
"tags": [
|
|
"input"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/RunnableId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/RunnableTypeQuery"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "Input",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateInput"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "Input created",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/inputs/update": {
|
|
"post": {
|
|
"summary": "Update an Input",
|
|
"operationId": "updateInput",
|
|
"tags": [
|
|
"input"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "UpdateInput",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateInput"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "Input updated",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/inputs/delete/{input}": {
|
|
"post": {
|
|
"summary": "Delete a Saved Input",
|
|
"operationId": "deleteInput",
|
|
"tags": [
|
|
"input"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/InputId"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Input deleted",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/job_helpers/duckdb_connection_settings": {
|
|
"post": {
|
|
"summary": "Converts an S3 resource to the set of instructions necessary to connect DuckDB to an S3 bucket",
|
|
"operationId": "duckdbConnectionSettings",
|
|
"tags": [
|
|
"helpers"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "S3 resource to connect to",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"s3_resource": {
|
|
"$ref": "#/components/schemas/S3Resource"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Connection settings",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"connection_settings_str": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/job_helpers/v2/duckdb_connection_settings": {
|
|
"post": {
|
|
"summary": "Converts an S3 resource to the set of instructions necessary to connect DuckDB to an S3 bucket",
|
|
"operationId": "duckdbConnectionSettingsV2",
|
|
"tags": [
|
|
"helpers"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "S3 resource path to use to generate the connection settings. If empty, the S3 resource defined in the workspace settings will be used",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"s3_resource_path": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Connection settings",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"connection_settings_str": {
|
|
"type": "string"
|
|
},
|
|
"azure_container_path": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"connection_settings_str"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/job_helpers/polars_connection_settings": {
|
|
"post": {
|
|
"summary": "Converts an S3 resource to the set of arguments necessary to connect Polars to an S3 bucket",
|
|
"operationId": "polarsConnectionSettings",
|
|
"tags": [
|
|
"helpers"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "S3 resource to connect to",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"s3_resource": {
|
|
"$ref": "#/components/schemas/S3Resource"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Connection settings",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"endpoint_url": {
|
|
"type": "string"
|
|
},
|
|
"key": {
|
|
"type": "string"
|
|
},
|
|
"secret": {
|
|
"type": "string"
|
|
},
|
|
"use_ssl": {
|
|
"type": "boolean"
|
|
},
|
|
"cache_regions": {
|
|
"type": "boolean"
|
|
},
|
|
"client_kwargs": {
|
|
"$ref": "#/components/schemas/PolarsClientKwargs"
|
|
}
|
|
},
|
|
"required": [
|
|
"endpoint_url",
|
|
"use_ssl",
|
|
"cache_regions",
|
|
"client_kwargs"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/job_helpers/v2/polars_connection_settings": {
|
|
"post": {
|
|
"summary": "Converts an S3 resource to the set of arguments necessary to connect Polars to an S3 bucket",
|
|
"operationId": "polarsConnectionSettingsV2",
|
|
"tags": [
|
|
"helpers"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "S3 resource path to use to generate the connection settings. If empty, the S3 resource defined in the workspace settings will be used",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"s3_resource_path": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Connection settings",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"s3fs_args": {
|
|
"type": "object",
|
|
"properties": {
|
|
"endpoint_url": {
|
|
"type": "string"
|
|
},
|
|
"key": {
|
|
"type": "string"
|
|
},
|
|
"secret": {
|
|
"type": "string"
|
|
},
|
|
"use_ssl": {
|
|
"type": "boolean"
|
|
},
|
|
"cache_regions": {
|
|
"type": "boolean"
|
|
},
|
|
"client_kwargs": {
|
|
"$ref": "#/components/schemas/PolarsClientKwargs"
|
|
}
|
|
},
|
|
"required": [
|
|
"endpoint_url",
|
|
"use_ssl",
|
|
"cache_regions",
|
|
"client_kwargs"
|
|
]
|
|
},
|
|
"storage_options": {
|
|
"type": "object",
|
|
"properties": {
|
|
"aws_endpoint_url": {
|
|
"type": "string"
|
|
},
|
|
"aws_access_key_id": {
|
|
"type": "string"
|
|
},
|
|
"aws_secret_access_key": {
|
|
"type": "string"
|
|
},
|
|
"aws_region": {
|
|
"type": "string"
|
|
},
|
|
"aws_allow_http": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"aws_endpoint_url",
|
|
"aws_region",
|
|
"aws_allow_http"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"s3fs_args",
|
|
"storage_options"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/job_helpers/v2/s3_resource_info": {
|
|
"post": {
|
|
"summary": "Returns the s3 resource associated to the provided path, or the workspace default S3 resource",
|
|
"operationId": "s3ResourceInfo",
|
|
"tags": [
|
|
"helpers"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "S3 resource path to use. If empty, the S3 resource defined in the workspace settings will be used",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"s3_resource_path": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Connection settings",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/S3Resource"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/job_helpers/test_connection": {
|
|
"get": {
|
|
"summary": "Test connection to the workspace object storage",
|
|
"operationId": "datasetStorageTestConnection",
|
|
"tags": [
|
|
"helpers"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "storage",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Connection settings",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/job_helpers/list_stored_files": {
|
|
"get": {
|
|
"summary": "List the file keys available in a workspace object storage",
|
|
"operationId": "listStoredFiles",
|
|
"tags": [
|
|
"helpers"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "max_keys",
|
|
"in": "query",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer"
|
|
}
|
|
},
|
|
{
|
|
"name": "marker",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "prefix",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "storage",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "List of file keys",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"next_marker": {
|
|
"type": "string"
|
|
},
|
|
"windmill_large_files": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/WindmillLargeFile"
|
|
}
|
|
},
|
|
"restricted_access": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"required": [
|
|
"windmill_large_files"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/job_helpers/load_file_metadata": {
|
|
"get": {
|
|
"summary": "Load metadata of the file",
|
|
"operationId": "loadFileMetadata",
|
|
"tags": [
|
|
"helpers"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "file_key",
|
|
"in": "query",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "storage",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "FileMetadata",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/WindmillFileMetadata"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/job_helpers/load_file_preview": {
|
|
"get": {
|
|
"summary": "Load a preview of the file",
|
|
"operationId": "loadFilePreview",
|
|
"tags": [
|
|
"helpers"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "file_key",
|
|
"in": "query",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "file_size_in_bytes",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "integer"
|
|
}
|
|
},
|
|
{
|
|
"name": "file_mime_type",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "csv_separator",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "csv_has_header",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
{
|
|
"name": "read_bytes_from",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "integer"
|
|
}
|
|
},
|
|
{
|
|
"name": "read_bytes_length",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "integer"
|
|
}
|
|
},
|
|
{
|
|
"name": "storage",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "FilePreview",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/WindmillFilePreview"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/job_helpers/list_git_repo_files": {
|
|
"get": {
|
|
"summary": "List the file keys available in instance object storage with resource-based access control",
|
|
"operationId": "listGitRepoFiles",
|
|
"tags": [
|
|
"helpers"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "max_keys",
|
|
"in": "query",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer"
|
|
}
|
|
},
|
|
{
|
|
"name": "marker",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "prefix",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "string",
|
|
"description": "Must follow format gitrepos/{workspace_id}/{resource_path}/..."
|
|
}
|
|
},
|
|
{
|
|
"name": "storage",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "List of file keys",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"next_marker": {
|
|
"type": "string"
|
|
},
|
|
"windmill_large_files": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/WindmillLargeFile"
|
|
}
|
|
},
|
|
"restricted_access": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"required": [
|
|
"windmill_large_files"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/job_helpers/load_git_repo_file_preview": {
|
|
"get": {
|
|
"summary": "Load a preview of a file from instance storage with resource-based access control",
|
|
"operationId": "loadGitRepoFilePreview",
|
|
"tags": [
|
|
"helpers"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "file_key",
|
|
"in": "query",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"description": "Must follow format gitrepos/{workspace_id}/{resource_path}/..."
|
|
}
|
|
},
|
|
{
|
|
"name": "file_size_in_bytes",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "integer"
|
|
}
|
|
},
|
|
{
|
|
"name": "file_mime_type",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "csv_separator",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "csv_has_header",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
{
|
|
"name": "read_bytes_from",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "integer"
|
|
}
|
|
},
|
|
{
|
|
"name": "read_bytes_length",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "integer"
|
|
}
|
|
},
|
|
{
|
|
"name": "storage",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "FilePreview",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/WindmillFilePreview"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/job_helpers/load_git_repo_file_metadata": {
|
|
"get": {
|
|
"summary": "Load file metadata from instance storage with resource-based access control",
|
|
"operationId": "loadGitRepoFileMetadata",
|
|
"tags": [
|
|
"helpers"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "file_key",
|
|
"in": "query",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"description": "Must follow format gitrepos/{workspace_id}/{resource_path}/..."
|
|
}
|
|
},
|
|
{
|
|
"name": "storage",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "FileMetadata",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/WindmillFileMetadata"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/job_helpers/check_s3_folder_exists": {
|
|
"get": {
|
|
"summary": "Check if S3 path exists and is a folder",
|
|
"operationId": "checkS3FolderExists",
|
|
"tags": [
|
|
"helpers"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "file_key",
|
|
"description": "S3 file key to check (e.g., gitrepos/{workspace_id}/u/user/resource/{commit_hash})",
|
|
"in": "query",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "S3 folder existence check result",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"exists": {
|
|
"type": "boolean",
|
|
"description": "Whether the path exists"
|
|
},
|
|
"is_folder": {
|
|
"type": "boolean",
|
|
"description": "Whether the path is a folder (true) or file (false)"
|
|
}
|
|
},
|
|
"required": [
|
|
"exists",
|
|
"is_folder"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/job_helpers/load_parquet_preview/{path}": {
|
|
"get": {
|
|
"summary": "Load a preview of a parquet file",
|
|
"operationId": "loadParquetPreview",
|
|
"tags": [
|
|
"helpers"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
},
|
|
{
|
|
"name": "offset",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "number"
|
|
}
|
|
},
|
|
{
|
|
"name": "limit",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "number"
|
|
}
|
|
},
|
|
{
|
|
"name": "sort_col",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "sort_desc",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
{
|
|
"name": "search_col",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "search_term",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "storage",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Parquet Preview",
|
|
"content": {
|
|
"application/json": {}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/job_helpers/load_table_count/{path}": {
|
|
"get": {
|
|
"summary": "Load the table row count",
|
|
"operationId": "loadTableRowCount",
|
|
"tags": [
|
|
"helpers"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
},
|
|
{
|
|
"name": "search_col",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "search_term",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "storage",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Table count",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"count": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/job_helpers/load_csv_preview/{path}": {
|
|
"get": {
|
|
"summary": "Load a preview of a csv file",
|
|
"operationId": "loadCsvPreview",
|
|
"tags": [
|
|
"helpers"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
},
|
|
{
|
|
"name": "offset",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "number"
|
|
}
|
|
},
|
|
{
|
|
"name": "limit",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "number"
|
|
}
|
|
},
|
|
{
|
|
"name": "sort_col",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "sort_desc",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
{
|
|
"name": "search_col",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "search_term",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "storage",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "csv_separator",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Csv Preview",
|
|
"content": {
|
|
"application/json": {}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/job_helpers/delete_s3_file": {
|
|
"delete": {
|
|
"summary": "Permanently delete file from S3",
|
|
"operationId": "deleteS3File",
|
|
"tags": [
|
|
"helpers"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "file_key",
|
|
"in": "query",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "storage",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Confirmation",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/job_helpers/move_s3_file": {
|
|
"get": {
|
|
"summary": "Move a S3 file from one path to the other within the same bucket",
|
|
"operationId": "moveS3File",
|
|
"tags": [
|
|
"helpers"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "src_file_key",
|
|
"in": "query",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "dest_file_key",
|
|
"in": "query",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "storage",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Confirmation",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/job_helpers/upload_s3_file": {
|
|
"post": {
|
|
"summary": "Upload file to S3 bucket",
|
|
"operationId": "fileUpload",
|
|
"tags": [
|
|
"helpers"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "file_key",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "file_extension",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "s3_resource_path",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "resource_type",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "storage",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "content_type",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "content_disposition",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "File content",
|
|
"required": true,
|
|
"content": {
|
|
"application/octet-stream": {
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "binary"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "File upload status",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"file_key": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"file_key"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/job_helpers/upload_git_repo_file_to_instance_storage": {
|
|
"post": {
|
|
"summary": "Upload a file to the instance storage gitrepos section for viewing",
|
|
"operationId": "gitRepoViewerFileUpload",
|
|
"tags": [
|
|
"helpers"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "file_key",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "file_extension",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "s3_resource_path",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "resource_type",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "storage",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "content_type",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "content_disposition",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "File content",
|
|
"required": true,
|
|
"content": {
|
|
"application/octet-stream": {
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "binary"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "File upload status",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"file_key": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"file_key"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/job_helpers/download_s3_file": {
|
|
"get": {
|
|
"summary": "Download file from S3 bucket",
|
|
"operationId": "fileDownload",
|
|
"tags": [
|
|
"helpers"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "file_key",
|
|
"in": "query",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "s3_resource_path",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "resource_type",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "storage",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Chunk of the downloaded file",
|
|
"content": {
|
|
"application/octet-stream": {
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "binary"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/job_helpers/download_s3_parquet_file_as_csv": {
|
|
"get": {
|
|
"summary": "Download file to S3 bucket",
|
|
"operationId": "fileDownloadParquetAsCsv",
|
|
"tags": [
|
|
"helpers"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "file_key",
|
|
"in": "query",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "s3_resource_path",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "resource_type",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "The downloaded file",
|
|
"content": {
|
|
"text/csv": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/job_metrics/get/{id}": {
|
|
"post": {
|
|
"summary": "get job metrics",
|
|
"operationId": "getJobMetrics",
|
|
"tags": [
|
|
"metrics"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/JobId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "parameters for statistics retrieval",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"timeseries_max_datapoints": {
|
|
"type": "integer"
|
|
},
|
|
"from_timestamp": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"to_timestamp": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "job details",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"metrics_metadata": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/MetricMetadata"
|
|
}
|
|
},
|
|
"scalar_metrics": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ScalarMetric"
|
|
}
|
|
},
|
|
"timeseries_metrics": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/TimeseriesMetric"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/job_metrics/set_progress/{id}": {
|
|
"post": {
|
|
"summary": "set job metrics",
|
|
"operationId": "setJobProgress",
|
|
"tags": [
|
|
"metrics"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/JobId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "parameters for statistics retrieval",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"percent": {
|
|
"type": "integer"
|
|
},
|
|
"flow_job_id": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Job progress updated",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/job_metrics/get_progress/{id}": {
|
|
"get": {
|
|
"summary": "get job progress",
|
|
"operationId": "getJobProgress",
|
|
"tags": [
|
|
"metrics"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/JobId"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "job progress between 0 and 99",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "integer"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/service_logs/list_files": {
|
|
"get": {
|
|
"summary": "list log files ordered by timestamp",
|
|
"operationId": "listLogFiles",
|
|
"tags": [
|
|
"service_logs"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/Before"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/After"
|
|
},
|
|
{
|
|
"name": "with_error",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "time",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"hostname": {
|
|
"type": "string"
|
|
},
|
|
"mode": {
|
|
"type": "string"
|
|
},
|
|
"worker_group": {
|
|
"type": "string"
|
|
},
|
|
"log_ts": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"file_path": {
|
|
"type": "string"
|
|
},
|
|
"ok_lines": {
|
|
"type": "integer"
|
|
},
|
|
"err_lines": {
|
|
"type": "integer"
|
|
},
|
|
"json_fmt": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"required": [
|
|
"hostname",
|
|
"mode",
|
|
"log_ts",
|
|
"file_path",
|
|
"json_fmt"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/service_logs/get_log_file/{path}": {
|
|
"get": {
|
|
"summary": "get log file by path",
|
|
"operationId": "getLogFile",
|
|
"tags": [
|
|
"service_logs"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/Path"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "log stream",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/concurrency_groups/list": {
|
|
"get": {
|
|
"summary": "List all concurrency groups",
|
|
"operationId": "listConcurrencyGroups",
|
|
"tags": [
|
|
"concurrencyGroups"
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "all concurrency groups",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ConcurrencyGroup"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/concurrency_groups/prune/{concurrency_id}": {
|
|
"delete": {
|
|
"summary": "Delete concurrency group",
|
|
"operationId": "deleteConcurrencyGroup",
|
|
"tags": [
|
|
"concurrencyGroups"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/ConcurrencyId"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "concurrency group removed",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/concurrency_groups/{id}/key": {
|
|
"get": {
|
|
"summary": "Get the concurrency key for a job that has concurrency limits enabled",
|
|
"operationId": "getConcurrencyKey",
|
|
"tags": [
|
|
"concurrencyGroups"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/JobId"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "concurrency key for given job",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/concurrency_groups/list_jobs": {
|
|
"get": {
|
|
"summary": "Get intervals of job runtime concurrency",
|
|
"operationId": "listExtendedJobs",
|
|
"tags": [
|
|
"concurrencyGroups",
|
|
"job"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "concurrency_key",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "row_limit",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "number"
|
|
}
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/CreatedBy"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Label"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ParentJob"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ScriptExactPath"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ScriptStartPath"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/SchedulePath"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ScriptExactHash"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/StartedBefore"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/StartedAfter"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Running"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ScheduledForBeforeNow"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/CompletedBefore"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/CompletedAfter"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/CreatedBeforeQueue"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/CreatedAfterQueue"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/JobKinds"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ArgsFilter"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Tag"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/ResultFilter"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/AllowWildcards"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/Page"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/PerPage"
|
|
},
|
|
{
|
|
"$ref": "#/components/parameters/JobTriggerKind"
|
|
},
|
|
{
|
|
"name": "is_skipped",
|
|
"description": "is the job skipped",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
{
|
|
"name": "is_flow_step",
|
|
"description": "is the job a flow step",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
{
|
|
"name": "has_null_parent",
|
|
"description": "has null parent",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
{
|
|
"name": "success",
|
|
"description": "filter on successful jobs",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
{
|
|
"name": "all_workspaces",
|
|
"description": "get jobs from all workspaces (only valid if request come from the `admins` workspace)",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
{
|
|
"name": "is_not_schedule",
|
|
"description": "is not a scheduled job",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "time",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ExtendedJobs"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/srch/w/{workspace}/index/search/job": {
|
|
"get": {
|
|
"summary": "Search through jobs with a string query",
|
|
"operationId": "searchJobsIndex",
|
|
"tags": [
|
|
"indexSearch"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "search_query",
|
|
"in": "query",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "pagination_offset",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "integer"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "search results",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"query_parse_errors": {
|
|
"description": "a list of the terms that couldn't be parsed (and thus ignored)",
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"hits": {
|
|
"description": "the jobs that matched the query",
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/JobSearchHit"
|
|
}
|
|
},
|
|
"hit_count": {
|
|
"description": "how many jobs matched in total",
|
|
"type": "number"
|
|
},
|
|
"index_metadata": {
|
|
"description": "Metadata about the index current state",
|
|
"type": "object",
|
|
"properties": {
|
|
"indexed_until": {
|
|
"description": "Datetime of the most recently indexed job",
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"lost_lock_ownership": {
|
|
"description": "Is the current indexer service being replaced",
|
|
"type": "boolean"
|
|
},
|
|
"max_index_time_window_secs": {
|
|
"description": "Maximum time window in seconds for indexing",
|
|
"type": "number"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/srch/index/search/service_logs": {
|
|
"get": {
|
|
"summary": "Search through service logs with a string query",
|
|
"operationId": "searchLogsIndex",
|
|
"tags": [
|
|
"indexSearch"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "search_query",
|
|
"in": "query",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "mode",
|
|
"in": "query",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "worker_group",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "hostname",
|
|
"in": "query",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "min_ts",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
}
|
|
},
|
|
{
|
|
"name": "max_ts",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "search results",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"query_parse_errors": {
|
|
"description": "a list of the terms that couldn't be parsed (and thus ignored)",
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"hits": {
|
|
"description": "log files that matched the query",
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/LogSearchHit"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/srch/index/search/count_service_logs": {
|
|
"get": {
|
|
"summary": "Search and count the log line hits on every provided host",
|
|
"operationId": "countSearchLogsIndex",
|
|
"tags": [
|
|
"indexSearch"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "search_query",
|
|
"in": "query",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "min_ts",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
}
|
|
},
|
|
{
|
|
"name": "max_ts",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "search results",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"query_parse_errors": {
|
|
"description": "a list of the terms that couldn't be parsed (and thus ignored)",
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"count_per_host": {
|
|
"description": "count of log lines that matched the query per hostname",
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/srch/index/storage/disk": {
|
|
"get": {
|
|
"summary": "Get index disk storage sizes from the indexer.",
|
|
"operationId": "getIndexDiskStorageSizes",
|
|
"tags": [
|
|
"indexSearch"
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "disk storage sizes for each index",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"job_index_disk_size_bytes": {
|
|
"type": "integer",
|
|
"nullable": true
|
|
},
|
|
"log_index_disk_size_bytes": {
|
|
"type": "integer",
|
|
"nullable": true
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/indexer/delete/{idx_name}": {
|
|
"delete": {
|
|
"summary": "Clear an index and restart the indexer.",
|
|
"operationId": "clearIndex",
|
|
"tags": [
|
|
"indexSearch"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "idx_name",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"enum": [
|
|
"JobIndex",
|
|
"ServiceLogIndex"
|
|
]
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "idx to be deleted and indexer restarting",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/indexer/storage": {
|
|
"get": {
|
|
"summary": "Get index storage sizes (disk and S3).",
|
|
"operationId": "getIndexStorageSizes",
|
|
"tags": [
|
|
"indexSearch"
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "storage sizes for each index",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"job_index": {
|
|
"type": "object",
|
|
"properties": {
|
|
"disk_size_bytes": {
|
|
"type": "integer",
|
|
"nullable": true
|
|
},
|
|
"s3_size_bytes": {
|
|
"type": "integer",
|
|
"nullable": true
|
|
}
|
|
}
|
|
},
|
|
"service_log_index": {
|
|
"type": "object",
|
|
"properties": {
|
|
"disk_size_bytes": {
|
|
"type": "integer",
|
|
"nullable": true
|
|
},
|
|
"s3_size_bytes": {
|
|
"type": "integer",
|
|
"nullable": true
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/indexer/status": {
|
|
"get": {
|
|
"summary": "Get indexer status including liveness and storage sizes.",
|
|
"operationId": "getIndexerStatus",
|
|
"tags": [
|
|
"indexSearch"
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "indexer status for each index",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"job_indexer": {
|
|
"type": "object",
|
|
"properties": {
|
|
"is_alive": {
|
|
"type": "boolean"
|
|
},
|
|
"last_locked_at": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"nullable": true
|
|
},
|
|
"owner": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"storage": {
|
|
"type": "object",
|
|
"properties": {
|
|
"disk_size_bytes": {
|
|
"type": "integer",
|
|
"nullable": true
|
|
},
|
|
"s3_size_bytes": {
|
|
"type": "integer",
|
|
"nullable": true
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"log_indexer": {
|
|
"type": "object",
|
|
"properties": {
|
|
"is_alive": {
|
|
"type": "boolean"
|
|
},
|
|
"last_locked_at": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"nullable": true
|
|
},
|
|
"owner": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"storage": {
|
|
"type": "object",
|
|
"properties": {
|
|
"disk_size_bytes": {
|
|
"type": "integer",
|
|
"nullable": true
|
|
},
|
|
"s3_size_bytes": {
|
|
"type": "integer",
|
|
"nullable": true
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/assets/list": {
|
|
"get": {
|
|
"summary": "List all assets in the workspace with cursor pagination",
|
|
"operationId": "listAssets",
|
|
"tags": [
|
|
"asset"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "per_page",
|
|
"in": "query",
|
|
"description": "Number of items per page (max 1000, default 50)",
|
|
"schema": {
|
|
"type": "integer",
|
|
"default": 50,
|
|
"minimum": 1,
|
|
"maximum": 1000
|
|
}
|
|
},
|
|
{
|
|
"name": "cursor_created_at",
|
|
"in": "query",
|
|
"description": "Cursor timestamp for pagination (created_at of last item from previous page)",
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
}
|
|
},
|
|
{
|
|
"name": "cursor_id",
|
|
"in": "query",
|
|
"description": "Cursor ID for pagination (id of last item from previous page)",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int64"
|
|
}
|
|
},
|
|
{
|
|
"name": "asset_path",
|
|
"in": "query",
|
|
"description": "Filter by asset path (case-insensitive partial match)",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "usage_path",
|
|
"in": "query",
|
|
"description": "Filter by usage path (case-insensitive partial match)",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "asset_kinds",
|
|
"in": "query",
|
|
"description": "Filter by asset kinds (multiple values allowed)",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "path",
|
|
"in": "query",
|
|
"description": "exact path match filter",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "columns",
|
|
"in": "query",
|
|
"description": "JSONB subset match filter for columns using base64 encoded JSON",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "broad_filter",
|
|
"description": "broad search across multiple fields (case-insensitive substring match)",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "paginated assets in the workspace",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"required": [
|
|
"assets"
|
|
],
|
|
"properties": {
|
|
"assets": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"required": [
|
|
"path",
|
|
"kind",
|
|
"usages"
|
|
],
|
|
"properties": {
|
|
"path": {
|
|
"type": "string"
|
|
},
|
|
"kind": {
|
|
"$ref": "#/components/schemas/AssetKind"
|
|
},
|
|
"usages": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"required": [
|
|
"path",
|
|
"kind"
|
|
],
|
|
"properties": {
|
|
"path": {
|
|
"type": "string"
|
|
},
|
|
"kind": {
|
|
"$ref": "#/components/schemas/AssetUsageKind"
|
|
},
|
|
"access_type": {
|
|
"$ref": "#/components/schemas/AssetUsageAccessType"
|
|
},
|
|
"columns": {
|
|
"type": "object",
|
|
"description": "The columns used (for tables)",
|
|
"additionalProperties": {
|
|
"$ref": "#/components/schemas/AssetUsageAccessType"
|
|
}
|
|
},
|
|
"created_at": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"description": "When the asset was detected"
|
|
},
|
|
"metadata": {
|
|
"type": "object",
|
|
"properties": {
|
|
"runnable_path": {
|
|
"type": "string",
|
|
"description": "The path of the script/flow that was run (only present when kind is 'job')"
|
|
},
|
|
"job_kind": {
|
|
"type": "string",
|
|
"description": "The kind of job (script, flow, preview, etc.) (only present when kind is 'job')"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"metadata": {
|
|
"type": "object",
|
|
"properties": {
|
|
"resource_type": {
|
|
"type": "string",
|
|
"description": "The type of the resource (only present when kind is 'resource')"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"next_cursor": {
|
|
"type": "object",
|
|
"description": "Cursor for the next page (null if no more pages)",
|
|
"nullable": true,
|
|
"properties": {
|
|
"created_at": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"description": "Timestamp to use for next page"
|
|
},
|
|
"id": {
|
|
"type": "integer",
|
|
"format": "int64",
|
|
"description": "ID to use for next page"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/assets/list_by_usages": {
|
|
"post": {
|
|
"summary": "List all assets used by given usages paths",
|
|
"operationId": "listAssetsByUsage",
|
|
"tags": [
|
|
"asset"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "list assets by usages",
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"required": [
|
|
"usages"
|
|
],
|
|
"properties": {
|
|
"usages": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"required": [
|
|
"path",
|
|
"kind"
|
|
],
|
|
"properties": {
|
|
"path": {
|
|
"type": "string"
|
|
},
|
|
"kind": {
|
|
"$ref": "#/components/schemas/AssetUsageKind"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "all assets used by the given usage paths, in the same order",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"required": [
|
|
"path",
|
|
"kind"
|
|
],
|
|
"properties": {
|
|
"path": {
|
|
"type": "string"
|
|
},
|
|
"kind": {
|
|
"$ref": "#/components/schemas/AssetKind"
|
|
},
|
|
"access_type": {
|
|
"$ref": "#/components/schemas/AssetUsageAccessType"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/assets/list_favorites": {
|
|
"get": {
|
|
"summary": "List all favorite assets for the authenticated user",
|
|
"operationId": "listFavoriteAssets",
|
|
"tags": [
|
|
"asset"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "list of favorite assets",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"required": [
|
|
"path"
|
|
],
|
|
"properties": {
|
|
"path": {
|
|
"type": "string",
|
|
"description": "The asset path"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/volumes/list": {
|
|
"get": {
|
|
"summary": "List all volumes in the workspace",
|
|
"operationId": "listVolumes",
|
|
"tags": [
|
|
"volume"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "list of volumes",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/Volume"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/volumes/storage": {
|
|
"get": {
|
|
"summary": "Get the volume storage name (secondary storage) or null for primary",
|
|
"operationId": "getVolumeStorage",
|
|
"tags": [
|
|
"volume"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "volume storage name or null",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "string",
|
|
"nullable": true
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/volumes/create": {
|
|
"post": {
|
|
"summary": "Create a new volume",
|
|
"operationId": "createVolume",
|
|
"tags": [
|
|
"volume"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"required": [
|
|
"name"
|
|
],
|
|
"properties": {
|
|
"name": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "volume created",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/w/{workspace}/volumes/delete/{name}": {
|
|
"delete": {
|
|
"summary": "Delete a volume (admin only)",
|
|
"operationId": "deleteVolume",
|
|
"tags": [
|
|
"volume"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
},
|
|
{
|
|
"name": "name",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "volume deleted",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/mcp/w/{workspace}/list_tools": {
|
|
"get": {
|
|
"summary": "list available MCP tools",
|
|
"operationId": "listMcpTools",
|
|
"tags": [
|
|
"mcp"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/WorkspaceId"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "list of MCP tools available for the workspace",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/EndpointTool"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/mcp/oauth/discover": {
|
|
"post": {
|
|
"summary": "discover MCP server OAuth metadata",
|
|
"operationId": "discoverMcpOAuth",
|
|
"tags": [
|
|
"mcp_oauth"
|
|
],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"required": [
|
|
"mcp_server_url"
|
|
],
|
|
"properties": {
|
|
"mcp_server_url": {
|
|
"type": "string",
|
|
"description": "URL of the MCP server to discover OAuth metadata from"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OAuth metadata from MCP server",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"scopes_supported": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"authorization_endpoint": {
|
|
"type": "string"
|
|
},
|
|
"token_endpoint": {
|
|
"type": "string"
|
|
},
|
|
"registration_endpoint": {
|
|
"type": "string"
|
|
},
|
|
"supports_dynamic_registration": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/mcp/oauth/start": {
|
|
"get": {
|
|
"summary": "start MCP OAuth popup flow",
|
|
"description": "Opens in a popup, discovers OAuth metadata, registers client, and redirects to OAuth provider",
|
|
"operationId": "startMcpOAuthPopup",
|
|
"tags": [
|
|
"mcp_oauth"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "mcp_server_url",
|
|
"in": "query",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
},
|
|
"description": "URL of the MCP server to connect to"
|
|
},
|
|
{
|
|
"name": "scopes",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "string"
|
|
},
|
|
"description": "Comma-separated list of OAuth scopes to request"
|
|
}
|
|
],
|
|
"responses": {
|
|
"302": {
|
|
"description": "Redirect to OAuth provider authorization URL"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/mcp/oauth/callback": {
|
|
"get": {
|
|
"security": [],
|
|
"summary": "MCP OAuth callback",
|
|
"description": "Handles OAuth callback, exchanges code for tokens, returns HTML that posts message to opener",
|
|
"operationId": "mcpOAuthCallback",
|
|
"tags": [
|
|
"mcp_oauth"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "code",
|
|
"in": "query",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
},
|
|
"description": "OAuth authorization code"
|
|
},
|
|
{
|
|
"name": "state",
|
|
"in": "query",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
},
|
|
"description": "CSRF state token"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "HTML page with JavaScript that posts tokens to opener window and closes",
|
|
"content": {
|
|
"text/html": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"components": {
|
|
"securitySchemes": {
|
|
"bearerAuth": {
|
|
"type": "http",
|
|
"scheme": "bearer"
|
|
},
|
|
"cookieAuth": {
|
|
"type": "apiKey",
|
|
"in": "cookie",
|
|
"name": "token"
|
|
}
|
|
},
|
|
"parameters": {
|
|
"Id": {
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"Key": {
|
|
"name": "key",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"WorkspaceId": {
|
|
"name": "workspace",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"PublicationName": {
|
|
"name": "publication",
|
|
"in": "path",
|
|
"required": true,
|
|
"description": "The name of the publication",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"VersionId": {
|
|
"name": "version",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "number"
|
|
}
|
|
},
|
|
"Token": {
|
|
"name": "token",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"AccountId": {
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"ClientName": {
|
|
"name": "client_name",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"ScriptPath": {
|
|
"name": "path",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"ScriptHash": {
|
|
"name": "hash",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"JobId": {
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
}
|
|
},
|
|
"Path": {
|
|
"name": "path",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"CustomPath": {
|
|
"name": "custom_path",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"PathId": {
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"PathVersion": {
|
|
"name": "version",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"Name": {
|
|
"name": "name",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"Page": {
|
|
"name": "page",
|
|
"description": "which page to return (start at 1, default 1)",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"PerPage": {
|
|
"name": "per_page",
|
|
"description": "number of items to return for a given page (default 30, max 100)",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"JobTriggerKind": {
|
|
"name": "trigger_kind",
|
|
"description": "filter by trigger kind. Supports comma-separated list (e.g. 'schedule,webhook') and negation by prefixing all values with '!' (e.g. '!schedule,!webhook')",
|
|
"in": "query",
|
|
"x-go-name": "JobTriggerKindParam",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"OrderDesc": {
|
|
"name": "order_desc",
|
|
"description": "order by desc order (default true)",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"CreatedBy": {
|
|
"name": "created_by",
|
|
"description": "filter by exact matching user creator. Supports comma-separated list (e.g. 'alice,bob') and negation by prefixing all values with '!' (e.g. '!alice,!bob')",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"Label": {
|
|
"name": "label",
|
|
"description": "filter by exact matching job label. Supports comma-separated list (e.g. 'deploy,release') and negation by prefixing all values with '!' (e.g. '!deploy,!release')",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"Worker": {
|
|
"name": "worker",
|
|
"description": "filter by worker this job ran on. Supports comma-separated list (e.g. 'worker-1,worker-2') and negation by prefixing all values with '!' (e.g. '!worker-1,!worker-2')",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"ParentJob": {
|
|
"name": "parent_job",
|
|
"description": "The parent job that is at the origin and responsible for the execution of this script if any",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
}
|
|
},
|
|
"WorkerTag": {
|
|
"name": "tag",
|
|
"description": "Override the tag to use",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"CacheTtl": {
|
|
"name": "cache_ttl",
|
|
"description": "Override the cache time to live (in seconds). Can not be used to disable caching, only override with a new cache ttl",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"NewJobId": {
|
|
"name": "job_id",
|
|
"description": "The job id to assign to the created job. if missing, job is chosen randomly using the ULID scheme. If a job id already exists in the queue or as a completed job, the request to create one will fail (Bad Request)",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
}
|
|
},
|
|
"IncludeHeader": {
|
|
"name": "include_header",
|
|
"description": "List of headers's keys (separated with ',') whove value are added to the args\nHeader's key lowercased and '-'' replaced to '_' such that 'Content-Type' becomes the 'content_type' arg key\n",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"QueueLimit": {
|
|
"name": "queue_limit",
|
|
"description": "The maximum size of the queue for which the request would get rejected if that job would push it above that limit\n",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"SkipPreprocessor": {
|
|
"name": "skip_preprocessor",
|
|
"description": "skip the preprocessor",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"Payload": {
|
|
"name": "payload",
|
|
"description": "The base64 encoded payload that has been encoded as a JSON. e.g how to encode such payload encodeURIComponent\n`encodeURIComponent(btoa(JSON.stringify({a: 2})))`\n",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"ScriptStartPath": {
|
|
"name": "script_path_start",
|
|
"description": "filter by script path prefix. Supports comma-separated list (e.g. 'f/folder1,f/folder2') and negation by prefixing all values with '!' (e.g. '!f/folder1,!f/folder2')",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"SchedulePath": {
|
|
"name": "schedule_path",
|
|
"description": "mask to filter by schedule path",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"TriggerPath": {
|
|
"name": "trigger_path",
|
|
"description": "filter by trigger path. Supports comma-separated list (e.g. 'f/trigger1,f/trigger2') and negation by prefixing all values with '!' (e.g. '!f/trigger1,!f/trigger2')",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"ScriptExactPath": {
|
|
"name": "script_path_exact",
|
|
"description": "filter by exact matching script path. Supports comma-separated list (e.g. 'f/script1,f/script2') and negation by prefixing all values with '!' (e.g. '!f/script1,!f/script2')",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"ScriptExactHash": {
|
|
"name": "script_hash",
|
|
"description": "mask to filter exact matching path",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"CreatedBefore": {
|
|
"name": "created_before",
|
|
"description": "filter on created before (inclusive) timestamp",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
}
|
|
},
|
|
"CreatedAfter": {
|
|
"name": "created_after",
|
|
"description": "filter on created after (exclusive) timestamp",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
}
|
|
},
|
|
"StartedBefore": {
|
|
"name": "started_before",
|
|
"description": "filter on started before (inclusive) timestamp",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
}
|
|
},
|
|
"StartedAfter": {
|
|
"name": "started_after",
|
|
"description": "filter on started after (exclusive) timestamp",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
}
|
|
},
|
|
"Before": {
|
|
"name": "before",
|
|
"description": "filter on started before (inclusive) timestamp",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
}
|
|
},
|
|
"CompletedBefore": {
|
|
"name": "completed_before",
|
|
"description": "filter on started before (inclusive) timestamp",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
}
|
|
},
|
|
"CompletedAfter": {
|
|
"name": "completed_after",
|
|
"description": "filter on started after (exclusive) timestamp",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
}
|
|
},
|
|
"CreatedAfterQueue": {
|
|
"name": "created_after_queue",
|
|
"description": "filter on jobs created after X for jobs in the queue only",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
}
|
|
},
|
|
"CreatedBeforeQueue": {
|
|
"name": "created_before_queue",
|
|
"description": "filter on jobs created before X for jobs in the queue only",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
}
|
|
},
|
|
"Success": {
|
|
"name": "success",
|
|
"description": "filter on successful jobs",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"ScheduledForBeforeNow": {
|
|
"name": "scheduled_for_before_now",
|
|
"description": "filter on jobs scheduled_for before now (hence waitinf for a worker)",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"Suspended": {
|
|
"name": "suspended",
|
|
"description": "filter on suspended jobs",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"Running": {
|
|
"name": "running",
|
|
"description": "filter on running jobs",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"AllowWildcards": {
|
|
"name": "allow_wildcards",
|
|
"description": "allow wildcards (*) in the filter of label, tag, worker",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"ArgsFilter": {
|
|
"name": "args",
|
|
"description": "filter on jobs containing those args as a json subset (@> in postgres)",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"Tag": {
|
|
"name": "tag",
|
|
"description": "filter by tag/worker group. Supports comma-separated list (e.g. 'gpu,highmem') and negation by prefixing all values with '!' (e.g. '!gpu,!highmem')",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"ResultFilter": {
|
|
"name": "result",
|
|
"description": "filter on jobs containing those result as a json subset (@> in postgres)",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"After": {
|
|
"name": "after",
|
|
"description": "filter on created after (exclusive) timestamp",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
}
|
|
},
|
|
"Username": {
|
|
"name": "username",
|
|
"description": "filter on exact username of user",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"Operation": {
|
|
"name": "operation",
|
|
"description": "filter on exact or prefix name of operation",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"ResourceName": {
|
|
"name": "resource",
|
|
"description": "filter on exact or prefix name of resource",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"ActionKind": {
|
|
"name": "action_kind",
|
|
"description": "filter on type of operation",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string",
|
|
"enum": [
|
|
"Create",
|
|
"Update",
|
|
"Delete",
|
|
"Execute"
|
|
]
|
|
}
|
|
},
|
|
"JobKinds": {
|
|
"name": "job_kinds",
|
|
"description": "filter by job kind. Supports comma-separated list of values ('preview', 'script', 'dependencies', 'flow') and negation by prefixing all values with '!' (e.g. '!preview,!dependencies')",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"RunnableId": {
|
|
"name": "runnable_id",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"RunnableTypeQuery": {
|
|
"name": "runnable_type",
|
|
"in": "query",
|
|
"schema": {
|
|
"$ref": "#/components/schemas/RunnableType"
|
|
}
|
|
},
|
|
"InputId": {
|
|
"name": "input",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"GetStarted": {
|
|
"name": "get_started",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"ConcurrencyId": {
|
|
"name": "concurrency_id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"RunnableKind": {
|
|
"name": "runnable_kind",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"enum": [
|
|
"script",
|
|
"flow"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"schemas": {
|
|
"OpenFlow": {
|
|
"type": "object",
|
|
"description": "Top-level flow definition containing metadata, configuration, and the flow structure",
|
|
"properties": {
|
|
"summary": {
|
|
"type": "string",
|
|
"description": "Short description of what this flow does"
|
|
},
|
|
"description": {
|
|
"type": "string",
|
|
"description": "Detailed documentation for this flow"
|
|
},
|
|
"value": {
|
|
"$ref": "#/components/schemas/schemas-FlowValue"
|
|
},
|
|
"schema": {
|
|
"type": "object",
|
|
"description": "JSON Schema for flow inputs. Use this to define input parameters, their types, defaults, and validation. For resource inputs, set type to 'object' and format to 'resource-<type>' (e.g., 'resource-stripe')"
|
|
},
|
|
"on_behalf_of_email": {
|
|
"type": "string",
|
|
"description": "The flow will be run with the permissions of the user with this email."
|
|
}
|
|
},
|
|
"required": [
|
|
"summary",
|
|
"value"
|
|
]
|
|
},
|
|
"FlowValue": {
|
|
"type": "object",
|
|
"description": "The flow structure containing modules and optional preprocessor/failure handlers",
|
|
"properties": {
|
|
"modules": {
|
|
"type": "array",
|
|
"description": "Array of steps that execute in sequence. Each step can be a script, subflow, loop, or branch",
|
|
"items": {
|
|
"$ref": "#/components/schemas/schemas-FlowModule"
|
|
}
|
|
},
|
|
"failure_module": {
|
|
"description": "Special module that executes when the flow fails. Receives error object with message, name, stack, and step_id. Must have id 'failure'. Only supports script/rawscript types",
|
|
"$ref": "#/components/schemas/schemas-FlowModule"
|
|
},
|
|
"preprocessor_module": {
|
|
"description": "Special module that runs before the first step on external triggers. Must have id 'preprocessor'. Only supports script/rawscript types. Cannot reference other step results",
|
|
"$ref": "#/components/schemas/schemas-FlowModule"
|
|
},
|
|
"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": "integer",
|
|
"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": "integer",
|
|
"description": "Maximum total time in seconds that a job can be debounced"
|
|
},
|
|
"max_total_debounces_amount": {
|
|
"type": "integer",
|
|
"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"
|
|
},
|
|
"delete_after_secs": {
|
|
"type": "integer",
|
|
"description": "If set, delete the flow job's args, result and logs after this many seconds following job completion"
|
|
},
|
|
"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": {
|
|
"$ref": "#/components/schemas/schemas-FlowNote"
|
|
}
|
|
},
|
|
"groups": {
|
|
"type": "array",
|
|
"description": "Semantic groups of modules for organizational purposes",
|
|
"items": {
|
|
"$ref": "#/components/schemas/FlowGroup"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"modules"
|
|
]
|
|
},
|
|
"Retry": {
|
|
"type": "object",
|
|
"description": "Retry configuration for failed module executions",
|
|
"properties": {
|
|
"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": {
|
|
"$ref": "#/components/schemas/RetryIf"
|
|
}
|
|
}
|
|
},
|
|
"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",
|
|
"nullable": true,
|
|
"description": "Custom error message when stopping with an error. Mutually exclusive with skip_if_stopped. If set to a non-empty string, the flow stops with this error. If empty string, a default error message is used. If null or omitted, no error is raised."
|
|
}
|
|
},
|
|
"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": {
|
|
"$ref": "#/components/schemas/schemas-FlowModuleValue"
|
|
},
|
|
"stop_after_if": {
|
|
"description": "Early termination condition evaluated after this step completes",
|
|
"$ref": "#/components/schemas/schemas-StopAfterIf"
|
|
},
|
|
"stop_after_all_iters_if": {
|
|
"description": "For loops only - early termination condition evaluated after all iterations complete",
|
|
"$ref": "#/components/schemas/schemas-StopAfterIf"
|
|
},
|
|
"skip_if": {
|
|
"type": "object",
|
|
"description": "Conditionally skip this step based on previous results or flow inputs",
|
|
"properties": {
|
|
"expr": {
|
|
"type": "string",
|
|
"description": "JavaScript expression that returns true to skip. Can use 'flow_input' or 'results.<step_id>'"
|
|
}
|
|
},
|
|
"required": [
|
|
"expr"
|
|
]
|
|
},
|
|
"sleep": {
|
|
"description": "Delay before executing this step (in seconds or as expression)",
|
|
"$ref": "#/components/schemas/schemas-InputTransform"
|
|
},
|
|
"cache_ttl": {
|
|
"type": "number",
|
|
"description": "Cache duration in seconds for this step's results"
|
|
},
|
|
"cache_ignore_s3_path": {
|
|
"type": "boolean"
|
|
},
|
|
"timeout": {
|
|
"description": "Maximum execution time in seconds (static value or expression)",
|
|
"$ref": "#/components/schemas/schemas-InputTransform"
|
|
},
|
|
"delete_after_secs": {
|
|
"type": "integer",
|
|
"description": "If set, delete the step's args, result and logs after this many seconds following job completion"
|
|
},
|
|
"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": "Expression or list of groups that can approve",
|
|
"$ref": "#/components/schemas/schemas-InputTransform"
|
|
},
|
|
"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 if this step fails",
|
|
"$ref": "#/components/schemas/schemas-Retry"
|
|
},
|
|
"debouncing": {
|
|
"description": "Debounce configuration for this step (EE only)",
|
|
"type": "object",
|
|
"properties": {
|
|
"debounce_delay_s": {
|
|
"type": "integer",
|
|
"description": "Delay in seconds to debounce this step's executions across flow runs"
|
|
},
|
|
"debounce_key": {
|
|
"type": "string",
|
|
"description": "Expression to group debounced executions. Supports $workspace and $args[name]. Default: $workspace/flow/<flow_path>-<step_id>"
|
|
},
|
|
"debounce_args_to_accumulate": {
|
|
"type": "array",
|
|
"description": "Array-type arguments to accumulate across debounced executions",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"max_total_debouncing_time": {
|
|
"type": "integer",
|
|
"description": "Maximum total time in seconds before forced execution"
|
|
},
|
|
"max_total_debounces_amount": {
|
|
"type": "integer",
|
|
"description": "Maximum number of debounces before forced execution"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"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": "#/components/schemas/schemas-StaticTransform"
|
|
},
|
|
{
|
|
"$ref": "#/components/schemas/schemas-JavascriptTransform"
|
|
},
|
|
{
|
|
"$ref": "#/components/schemas/schemas-AiTransform"
|
|
}
|
|
],
|
|
"discriminator": {
|
|
"propertyName": "type",
|
|
"mapping": {
|
|
"static": "#/components/schemas/schemas-StaticTransform",
|
|
"javascript": "#/components/schemas/schemas-JavascriptTransform",
|
|
"ai": "#/components/schemas/schemas-AiTransform"
|
|
}
|
|
}
|
|
},
|
|
"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": {
|
|
"$ref": "#/components/schemas/AIProviderKind"
|
|
},
|
|
"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": [
|
|
{
|
|
"$ref": "#/components/schemas/MemoryOff"
|
|
},
|
|
{
|
|
"$ref": "#/components/schemas/MemoryAuto"
|
|
},
|
|
{
|
|
"$ref": "#/components/schemas/MemoryManual"
|
|
}
|
|
],
|
|
"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": [
|
|
{
|
|
"$ref": "#/components/schemas/schemas-RawScript"
|
|
},
|
|
{
|
|
"$ref": "#/components/schemas/schemas-PathScript"
|
|
},
|
|
{
|
|
"$ref": "#/components/schemas/schemas-PathFlow"
|
|
},
|
|
{
|
|
"$ref": "#/components/schemas/schemas-ForloopFlow"
|
|
},
|
|
{
|
|
"$ref": "#/components/schemas/schemas-WhileloopFlow"
|
|
},
|
|
{
|
|
"$ref": "#/components/schemas/schemas-BranchOne"
|
|
},
|
|
{
|
|
"$ref": "#/components/schemas/schemas-BranchAll"
|
|
},
|
|
{
|
|
"$ref": "#/components/schemas/schemas-Identity"
|
|
},
|
|
{
|
|
"$ref": "#/components/schemas/schemas-AiAgent"
|
|
}
|
|
],
|
|
"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": {
|
|
"$ref": "#/components/schemas/schemas-InputTransform"
|
|
}
|
|
},
|
|
"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",
|
|
"rlang",
|
|
"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",
|
|
"volume"
|
|
]
|
|
},
|
|
"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": {
|
|
"$ref": "#/components/schemas/schemas-InputTransform"
|
|
}
|
|
},
|
|
"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": {
|
|
"$ref": "#/components/schemas/schemas-InputTransform"
|
|
}
|
|
},
|
|
"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": {
|
|
"$ref": "#/components/schemas/schemas-FlowModule"
|
|
}
|
|
},
|
|
"iterator": {
|
|
"description": "JavaScript expression that returns an array to iterate over. Can reference 'results.step_id' or 'flow_input'",
|
|
"$ref": "#/components/schemas/schemas-InputTransform"
|
|
},
|
|
"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": "Maximum number of concurrent iterations when parallel=true. Limits resource usage. Can be static number or expression",
|
|
"$ref": "#/components/schemas/schemas-InputTransform"
|
|
},
|
|
"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": {
|
|
"$ref": "#/components/schemas/schemas-FlowModule"
|
|
}
|
|
},
|
|
"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": "Maximum number of concurrent iterations when parallel=true",
|
|
"$ref": "#/components/schemas/schemas-InputTransform"
|
|
},
|
|
"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": {
|
|
"$ref": "#/components/schemas/schemas-FlowModule"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"modules",
|
|
"expr"
|
|
]
|
|
}
|
|
},
|
|
"default": {
|
|
"type": "array",
|
|
"description": "Steps to execute if no branch expressions match",
|
|
"items": {
|
|
"$ref": "#/components/schemas/schemas-FlowModule"
|
|
}
|
|
},
|
|
"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": {
|
|
"$ref": "#/components/schemas/schemas-FlowModule"
|
|
}
|
|
}
|
|
},
|
|
"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": {
|
|
"$ref": "#/components/schemas/ProviderTransform"
|
|
},
|
|
"output_type": {
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/schemas-InputTransform"
|
|
}
|
|
],
|
|
"description": "Output format type.\nValid values: 'text' (default) - plain text response, 'image' - image generation\n"
|
|
},
|
|
"user_message": {
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/schemas-InputTransform"
|
|
}
|
|
],
|
|
"description": "The user's prompt/message to the AI agent. Supports variable interpolation with flow.input syntax."
|
|
},
|
|
"system_prompt": {
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/schemas-InputTransform"
|
|
}
|
|
],
|
|
"description": "System instructions that guide the AI's behavior, persona, and response style. Optional."
|
|
},
|
|
"streaming": {
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/schemas-InputTransform"
|
|
}
|
|
],
|
|
"description": "Boolean. If true, stream the AI response incrementally.\nStreaming events include: token_delta, tool_call, tool_call_arguments, tool_execution, tool_result\n"
|
|
},
|
|
"memory": {
|
|
"$ref": "#/components/schemas/MemoryTransform"
|
|
},
|
|
"output_schema": {
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/schemas-InputTransform"
|
|
}
|
|
],
|
|
"description": "JSON Schema object defining structured output format. Used when you need the AI to return data in a specific shape.\nSupports standard JSON Schema properties: type, properties, required, items, enum, pattern, minLength, maxLength, minimum, maximum, etc.\nExample: { type: 'object', properties: { name: { type: 'string' }, age: { type: 'integer' } }, required: ['name'] }\n"
|
|
},
|
|
"user_attachments": {
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/schemas-InputTransform"
|
|
}
|
|
],
|
|
"description": "Array of file references (images or PDFs) for the AI agent.\nFormat: Array<{ bucket: string, key: string }> - S3 object references\nExample: [{ bucket: 'my-bucket', key: 'documents/report.pdf' }]\n"
|
|
},
|
|
"max_completion_tokens": {
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/schemas-InputTransform"
|
|
}
|
|
],
|
|
"description": "Integer. Maximum number of tokens the AI will generate in its response.\nRange: 1 to 4,294,967,295. Typical values: 256-4096 for most use cases.\n"
|
|
},
|
|
"temperature": {
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/schemas-InputTransform"
|
|
}
|
|
],
|
|
"description": "Float. Controls randomness/creativity of responses.\nRange: 0.0 to 2.0 (provider-dependent)\n- 0.0 = deterministic, focused responses\n- 0.7 = balanced (common default)\n- 1.0+ = more creative/random\n"
|
|
}
|
|
},
|
|
"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": {
|
|
"$ref": "#/components/schemas/AgentTool"
|
|
}
|
|
},
|
|
"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": {
|
|
"step": {
|
|
"type": "integer"
|
|
},
|
|
"modules": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/schemas-FlowStatusModule"
|
|
}
|
|
},
|
|
"user_states": {
|
|
"additionalProperties": true
|
|
},
|
|
"preprocessor_module": {
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/schemas-FlowStatusModule"
|
|
}
|
|
]
|
|
},
|
|
"failure_module": {
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/schemas-FlowStatusModule"
|
|
},
|
|
{
|
|
"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": [
|
|
"step",
|
|
"modules",
|
|
"failure_module"
|
|
]
|
|
},
|
|
"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"
|
|
]
|
|
},
|
|
"CiTestResult": {
|
|
"type": "object",
|
|
"properties": {
|
|
"test_script_path": {
|
|
"type": "string"
|
|
},
|
|
"job_id": {
|
|
"type": "string",
|
|
"format": "uuid",
|
|
"nullable": true
|
|
},
|
|
"status": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"started_at": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"nullable": true
|
|
}
|
|
},
|
|
"required": [
|
|
"test_script_path"
|
|
]
|
|
},
|
|
"HealthStatusResponse": {
|
|
"type": "object",
|
|
"description": "Health status response (cached with 5s TTL)",
|
|
"required": [
|
|
"status",
|
|
"checked_at",
|
|
"database_healthy",
|
|
"workers_alive"
|
|
],
|
|
"properties": {
|
|
"status": {
|
|
"type": "string",
|
|
"enum": [
|
|
"healthy",
|
|
"degraded",
|
|
"unhealthy"
|
|
],
|
|
"description": "Overall health status"
|
|
},
|
|
"checked_at": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"description": "Timestamp when the health check was actually performed (not cache return time)"
|
|
},
|
|
"database_healthy": {
|
|
"type": "boolean",
|
|
"description": "Whether the database is reachable"
|
|
},
|
|
"workers_alive": {
|
|
"type": "integer",
|
|
"format": "int64",
|
|
"description": "Number of workers that pinged within last 5 minutes"
|
|
}
|
|
}
|
|
},
|
|
"DetailedHealthResponse": {
|
|
"type": "object",
|
|
"description": "Detailed health status response (always fresh, no caching)",
|
|
"required": [
|
|
"status",
|
|
"checked_at",
|
|
"version",
|
|
"checks"
|
|
],
|
|
"properties": {
|
|
"status": {
|
|
"type": "string",
|
|
"enum": [
|
|
"healthy",
|
|
"degraded",
|
|
"unhealthy"
|
|
],
|
|
"description": "Overall health status"
|
|
},
|
|
"checked_at": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"description": "Timestamp when the health check was performed"
|
|
},
|
|
"version": {
|
|
"type": "string",
|
|
"description": "Server version (e.g., \"EE 1.615.3\")"
|
|
},
|
|
"checks": {
|
|
"$ref": "#/components/schemas/HealthChecks"
|
|
}
|
|
}
|
|
},
|
|
"HealthChecks": {
|
|
"type": "object",
|
|
"description": "Detailed health checks",
|
|
"required": [
|
|
"database",
|
|
"readiness"
|
|
],
|
|
"properties": {
|
|
"database": {
|
|
"$ref": "#/components/schemas/DatabaseHealth"
|
|
},
|
|
"workers": {
|
|
"$ref": "#/components/schemas/WorkersHealth",
|
|
"description": "Worker status (null if database is unreachable)",
|
|
"nullable": true
|
|
},
|
|
"queue": {
|
|
"$ref": "#/components/schemas/QueueHealth",
|
|
"description": "Queue status (null if database is unreachable)",
|
|
"nullable": true
|
|
},
|
|
"readiness": {
|
|
"$ref": "#/components/schemas/ReadinessHealth"
|
|
}
|
|
}
|
|
},
|
|
"DatabaseHealth": {
|
|
"type": "object",
|
|
"description": "Database health status",
|
|
"required": [
|
|
"healthy",
|
|
"latency_ms",
|
|
"pool"
|
|
],
|
|
"properties": {
|
|
"healthy": {
|
|
"type": "boolean",
|
|
"description": "Whether the database is reachable"
|
|
},
|
|
"latency_ms": {
|
|
"type": "integer",
|
|
"format": "int64",
|
|
"description": "Database query latency in milliseconds"
|
|
},
|
|
"pool": {
|
|
"$ref": "#/components/schemas/PoolStats"
|
|
}
|
|
}
|
|
},
|
|
"PoolStats": {
|
|
"type": "object",
|
|
"description": "Database connection pool statistics",
|
|
"required": [
|
|
"size",
|
|
"idle",
|
|
"max_connections"
|
|
],
|
|
"properties": {
|
|
"size": {
|
|
"type": "integer",
|
|
"description": "Current number of connections in the pool"
|
|
},
|
|
"idle": {
|
|
"type": "integer",
|
|
"description": "Number of idle connections"
|
|
},
|
|
"max_connections": {
|
|
"type": "integer",
|
|
"description": "Maximum number of connections allowed"
|
|
}
|
|
}
|
|
},
|
|
"WorkersHealth": {
|
|
"type": "object",
|
|
"description": "Workers health status",
|
|
"required": [
|
|
"healthy",
|
|
"active_count",
|
|
"worker_groups",
|
|
"min_version",
|
|
"versions"
|
|
],
|
|
"properties": {
|
|
"healthy": {
|
|
"type": "boolean",
|
|
"description": "Whether any workers are active"
|
|
},
|
|
"active_count": {
|
|
"type": "integer",
|
|
"format": "int64",
|
|
"description": "Number of active workers (pinged in last 5 minutes)"
|
|
},
|
|
"worker_groups": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"description": "List of active worker groups"
|
|
},
|
|
"min_version": {
|
|
"type": "string",
|
|
"description": "Minimum required worker version"
|
|
},
|
|
"versions": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"description": "List of active worker versions"
|
|
}
|
|
}
|
|
},
|
|
"QueueHealth": {
|
|
"type": "object",
|
|
"description": "Job queue status",
|
|
"required": [
|
|
"pending_jobs",
|
|
"running_jobs"
|
|
],
|
|
"properties": {
|
|
"pending_jobs": {
|
|
"type": "integer",
|
|
"format": "int64",
|
|
"description": "Number of pending jobs in the queue"
|
|
},
|
|
"running_jobs": {
|
|
"type": "integer",
|
|
"format": "int64",
|
|
"description": "Number of currently running jobs"
|
|
}
|
|
}
|
|
},
|
|
"ReadinessHealth": {
|
|
"type": "object",
|
|
"description": "Server readiness status",
|
|
"required": [
|
|
"healthy"
|
|
],
|
|
"properties": {
|
|
"healthy": {
|
|
"type": "boolean",
|
|
"description": "Whether the server is ready to accept requests"
|
|
}
|
|
}
|
|
},
|
|
"AutoInviteConfig": {
|
|
"type": "object",
|
|
"description": "Configuration for auto-inviting users to the workspace",
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean",
|
|
"default": false
|
|
},
|
|
"domain": {
|
|
"type": "string"
|
|
},
|
|
"operator": {
|
|
"type": "boolean",
|
|
"default": false,
|
|
"description": "If true, auto-invited users are added as operators. If false, they are added as developers."
|
|
},
|
|
"mode": {
|
|
"type": "string",
|
|
"enum": [
|
|
"invite",
|
|
"add"
|
|
],
|
|
"default": "invite"
|
|
},
|
|
"instance_groups": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"instance_groups_roles": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"ErrorHandlerConfig": {
|
|
"type": "object",
|
|
"description": "Configuration for the workspace error handler",
|
|
"properties": {
|
|
"path": {
|
|
"type": "string",
|
|
"description": "Path to the error handler script or flow"
|
|
},
|
|
"extra_args": {
|
|
"$ref": "#/components/schemas/ScriptArgs"
|
|
},
|
|
"muted_on_cancel": {
|
|
"type": "boolean",
|
|
"default": false
|
|
},
|
|
"muted_on_user_path": {
|
|
"type": "boolean",
|
|
"default": false
|
|
}
|
|
}
|
|
},
|
|
"SuccessHandlerConfig": {
|
|
"type": "object",
|
|
"description": "Configuration for the workspace success handler",
|
|
"properties": {
|
|
"path": {
|
|
"type": "string",
|
|
"description": "Path to the success handler script or flow"
|
|
},
|
|
"extra_args": {
|
|
"$ref": "#/components/schemas/ScriptArgs"
|
|
}
|
|
}
|
|
},
|
|
"EditErrorHandler": {
|
|
"description": "Request body for editing the workspace error handler. Accepts both new grouped format and legacy flat format for backward compatibility.",
|
|
"oneOf": [
|
|
{
|
|
"$ref": "#/components/schemas/EditErrorHandlerNew"
|
|
},
|
|
{
|
|
"$ref": "#/components/schemas/EditErrorHandlerLegacy"
|
|
}
|
|
]
|
|
},
|
|
"EditErrorHandlerNew": {
|
|
"type": "object",
|
|
"description": "New grouped format for editing error handler",
|
|
"properties": {
|
|
"path": {
|
|
"type": "string",
|
|
"description": "Path to the error handler script or flow"
|
|
},
|
|
"extra_args": {
|
|
"$ref": "#/components/schemas/ScriptArgs"
|
|
},
|
|
"muted_on_cancel": {
|
|
"type": "boolean",
|
|
"default": false
|
|
},
|
|
"muted_on_user_path": {
|
|
"type": "boolean",
|
|
"default": false
|
|
}
|
|
}
|
|
},
|
|
"EditErrorHandlerLegacy": {
|
|
"type": "object",
|
|
"description": "Legacy flat format for editing error handler (deprecated, use new format)",
|
|
"properties": {
|
|
"error_handler": {
|
|
"type": "string",
|
|
"description": "Path to the error handler script or flow"
|
|
},
|
|
"error_handler_extra_args": {
|
|
"$ref": "#/components/schemas/ScriptArgs"
|
|
},
|
|
"error_handler_muted_on_cancel": {
|
|
"type": "boolean",
|
|
"default": false
|
|
}
|
|
}
|
|
},
|
|
"EditSuccessHandler": {
|
|
"description": "Request body for editing the workspace success handler. Accepts both new grouped format and legacy flat format for backward compatibility.",
|
|
"oneOf": [
|
|
{
|
|
"$ref": "#/components/schemas/EditSuccessHandlerNew"
|
|
},
|
|
{
|
|
"$ref": "#/components/schemas/EditSuccessHandlerLegacy"
|
|
}
|
|
]
|
|
},
|
|
"EditSuccessHandlerNew": {
|
|
"type": "object",
|
|
"description": "New grouped format for editing success handler",
|
|
"properties": {
|
|
"path": {
|
|
"type": "string",
|
|
"description": "Path to the success handler script or flow"
|
|
},
|
|
"extra_args": {
|
|
"$ref": "#/components/schemas/ScriptArgs"
|
|
}
|
|
}
|
|
},
|
|
"EditSuccessHandlerLegacy": {
|
|
"type": "object",
|
|
"description": "Legacy flat format for editing success handler (deprecated, use new format)",
|
|
"properties": {
|
|
"success_handler": {
|
|
"type": "string",
|
|
"description": "Path to the success handler script or flow"
|
|
},
|
|
"success_handler_extra_args": {
|
|
"$ref": "#/components/schemas/ScriptArgs"
|
|
}
|
|
}
|
|
},
|
|
"VaultSettings": {
|
|
"type": "object",
|
|
"required": [
|
|
"address",
|
|
"mount_path"
|
|
],
|
|
"properties": {
|
|
"address": {
|
|
"type": "string",
|
|
"description": "HashiCorp Vault server address (e.g., https://vault.company.com:8200)"
|
|
},
|
|
"mount_path": {
|
|
"type": "string",
|
|
"description": "KV v2 secrets engine mount path (e.g., windmill)"
|
|
},
|
|
"jwt_role": {
|
|
"type": "string",
|
|
"description": "Vault JWT auth role name for Windmill (optional, if not provided token auth is used)"
|
|
},
|
|
"namespace": {
|
|
"type": "string",
|
|
"description": "Vault Enterprise namespace (optional)"
|
|
},
|
|
"token": {
|
|
"type": "string",
|
|
"description": "Static Vault token for testing/development (optional, if provided this is used instead of JWT authentication)"
|
|
},
|
|
"skip_ssl_verify": {
|
|
"type": "boolean",
|
|
"description": "Skip TLS certificate verification when connecting to Vault. Only use for self-signed certificates in development environments."
|
|
}
|
|
}
|
|
},
|
|
"AzureKeyVaultSettings": {
|
|
"type": "object",
|
|
"required": [
|
|
"vault_url",
|
|
"tenant_id",
|
|
"client_id"
|
|
],
|
|
"properties": {
|
|
"vault_url": {
|
|
"type": "string",
|
|
"description": "Azure Key Vault URL (e.g., https://myvault.vault.azure.net)"
|
|
},
|
|
"tenant_id": {
|
|
"type": "string",
|
|
"description": "Azure AD tenant ID"
|
|
},
|
|
"client_id": {
|
|
"type": "string",
|
|
"description": "Azure AD application (client) ID"
|
|
},
|
|
"client_secret": {
|
|
"type": "string",
|
|
"description": "Azure AD client secret"
|
|
},
|
|
"token": {
|
|
"type": "string",
|
|
"description": "Static Bearer token for testing/development (optional, if provided this is used instead of OAuth2 authentication)"
|
|
}
|
|
}
|
|
},
|
|
"AwsSecretsManagerSettings": {
|
|
"type": "object",
|
|
"required": [
|
|
"region"
|
|
],
|
|
"properties": {
|
|
"region": {
|
|
"type": "string",
|
|
"description": "AWS region (e.g., us-east-1)"
|
|
},
|
|
"access_key_id": {
|
|
"type": "string",
|
|
"description": "AWS Access Key ID (optional, uses default credential chain if not provided)"
|
|
},
|
|
"secret_access_key": {
|
|
"type": "string",
|
|
"description": "AWS Secret Access Key (optional)"
|
|
},
|
|
"endpoint_url": {
|
|
"type": "string",
|
|
"description": "Custom endpoint URL for testing (e.g., LocalStack)"
|
|
},
|
|
"prefix": {
|
|
"type": "string",
|
|
"description": "Prefix for secret names (e.g., windmill/)"
|
|
}
|
|
}
|
|
},
|
|
"SecretMigrationFailure": {
|
|
"type": "object",
|
|
"required": [
|
|
"workspace_id",
|
|
"path",
|
|
"error"
|
|
],
|
|
"properties": {
|
|
"workspace_id": {
|
|
"type": "string",
|
|
"description": "Workspace ID where the secret is located"
|
|
},
|
|
"path": {
|
|
"type": "string",
|
|
"description": "Path of the secret that failed to migrate"
|
|
},
|
|
"error": {
|
|
"type": "string",
|
|
"description": "Error message"
|
|
}
|
|
}
|
|
},
|
|
"SecretMigrationReport": {
|
|
"type": "object",
|
|
"required": [
|
|
"total_secrets",
|
|
"migrated_count",
|
|
"failed_count",
|
|
"failures"
|
|
],
|
|
"properties": {
|
|
"total_secrets": {
|
|
"type": "integer",
|
|
"format": "int64",
|
|
"description": "Total number of secrets found"
|
|
},
|
|
"migrated_count": {
|
|
"type": "integer",
|
|
"format": "int64",
|
|
"description": "Number of secrets successfully migrated"
|
|
},
|
|
"failed_count": {
|
|
"type": "integer",
|
|
"format": "int64",
|
|
"description": "Number of secrets that failed to migrate"
|
|
},
|
|
"failures": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/SecretMigrationFailure"
|
|
},
|
|
"description": "Details of any failures encountered during migration"
|
|
}
|
|
}
|
|
},
|
|
"JwksResponse": {
|
|
"type": "object",
|
|
"required": [
|
|
"keys"
|
|
],
|
|
"properties": {
|
|
"keys": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"additionalProperties": true
|
|
},
|
|
"description": "Array of JSON Web Keys for JWT verification"
|
|
}
|
|
}
|
|
},
|
|
"FlowConversation": {
|
|
"type": "object",
|
|
"required": [
|
|
"id",
|
|
"workspace_id",
|
|
"flow_path",
|
|
"created_at",
|
|
"updated_at",
|
|
"created_by"
|
|
],
|
|
"properties": {
|
|
"id": {
|
|
"type": "string",
|
|
"format": "uuid",
|
|
"description": "Unique identifier for the conversation"
|
|
},
|
|
"workspace_id": {
|
|
"type": "string",
|
|
"description": "The workspace ID where the conversation belongs"
|
|
},
|
|
"flow_path": {
|
|
"type": "string",
|
|
"description": "Path of the flow this conversation is for"
|
|
},
|
|
"title": {
|
|
"type": "string",
|
|
"description": "Optional title for the conversation",
|
|
"nullable": true
|
|
},
|
|
"created_at": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"description": "When the conversation was created"
|
|
},
|
|
"updated_at": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"description": "When the conversation was last updated"
|
|
},
|
|
"created_by": {
|
|
"type": "string",
|
|
"description": "Username who created the conversation"
|
|
}
|
|
}
|
|
},
|
|
"FlowConversationMessage": {
|
|
"type": "object",
|
|
"required": [
|
|
"id",
|
|
"conversation_id",
|
|
"message_type",
|
|
"content",
|
|
"created_at"
|
|
],
|
|
"properties": {
|
|
"id": {
|
|
"type": "string",
|
|
"format": "uuid",
|
|
"description": "Unique identifier for the message"
|
|
},
|
|
"conversation_id": {
|
|
"type": "string",
|
|
"format": "uuid",
|
|
"description": "The conversation this message belongs to"
|
|
},
|
|
"message_type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"user",
|
|
"assistant",
|
|
"system",
|
|
"tool"
|
|
],
|
|
"description": "Type of the message"
|
|
},
|
|
"content": {
|
|
"type": "string",
|
|
"description": "The message content"
|
|
},
|
|
"job_id": {
|
|
"type": "string",
|
|
"format": "uuid",
|
|
"nullable": true,
|
|
"description": "Associated job ID if this message came from a flow run"
|
|
},
|
|
"created_at": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"description": "When the message was created"
|
|
},
|
|
"step_name": {
|
|
"type": "string",
|
|
"description": "The step name that produced that message"
|
|
},
|
|
"success": {
|
|
"type": "boolean",
|
|
"description": "Whether the message is a success"
|
|
}
|
|
}
|
|
},
|
|
"EndpointTool": {
|
|
"type": "object",
|
|
"required": [
|
|
"name",
|
|
"description",
|
|
"instructions",
|
|
"path",
|
|
"method"
|
|
],
|
|
"properties": {
|
|
"name": {
|
|
"type": "string",
|
|
"description": "The tool name/operation ID"
|
|
},
|
|
"description": {
|
|
"type": "string",
|
|
"description": "Short description of the tool"
|
|
},
|
|
"instructions": {
|
|
"type": "string",
|
|
"description": "Detailed instructions for using the tool"
|
|
},
|
|
"path": {
|
|
"type": "string",
|
|
"description": "API endpoint path"
|
|
},
|
|
"method": {
|
|
"type": "string",
|
|
"description": "HTTP method (GET, POST, etc.)"
|
|
},
|
|
"path_params_schema": {
|
|
"type": "object",
|
|
"description": "JSON schema for path parameters",
|
|
"nullable": true
|
|
},
|
|
"query_params_schema": {
|
|
"type": "object",
|
|
"description": "JSON schema for query parameters",
|
|
"nullable": true
|
|
},
|
|
"body_schema": {
|
|
"type": "object",
|
|
"description": "JSON schema for request body",
|
|
"nullable": true
|
|
}
|
|
}
|
|
},
|
|
"AIProvider": {
|
|
"type": "string",
|
|
"enum": [
|
|
"openai",
|
|
"azure_openai",
|
|
"anthropic",
|
|
"mistral",
|
|
"deepseek",
|
|
"googleai",
|
|
"groq",
|
|
"openrouter",
|
|
"togetherai",
|
|
"aws_bedrock",
|
|
"customai"
|
|
]
|
|
},
|
|
"GitSyncObjectType": {
|
|
"type": "string",
|
|
"enum": [
|
|
"script",
|
|
"flow",
|
|
"app",
|
|
"folder",
|
|
"resource",
|
|
"variable",
|
|
"secret",
|
|
"resourcetype",
|
|
"schedule",
|
|
"user",
|
|
"group",
|
|
"trigger",
|
|
"settings",
|
|
"key",
|
|
"workspacedependencies"
|
|
]
|
|
},
|
|
"AIProviderModel": {
|
|
"type": "object",
|
|
"properties": {
|
|
"model": {
|
|
"type": "string"
|
|
},
|
|
"provider": {
|
|
"$ref": "#/components/schemas/AIProvider"
|
|
}
|
|
},
|
|
"required": [
|
|
"model",
|
|
"provider"
|
|
]
|
|
},
|
|
"AIProviderConfig": {
|
|
"type": "object",
|
|
"properties": {
|
|
"resource_path": {
|
|
"type": "string"
|
|
},
|
|
"models": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"resource_path",
|
|
"models"
|
|
]
|
|
},
|
|
"AIConfig": {
|
|
"type": "object",
|
|
"properties": {
|
|
"providers": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"$ref": "#/components/schemas/AIProviderConfig"
|
|
}
|
|
},
|
|
"default_model": {
|
|
"$ref": "#/components/schemas/AIProviderModel"
|
|
},
|
|
"code_completion_model": {
|
|
"$ref": "#/components/schemas/AIProviderModel"
|
|
},
|
|
"custom_prompts": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"max_tokens_per_model": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "integer",
|
|
"minimum": 1,
|
|
"maximum": 2000000
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"InstanceAIProviderSummary": {
|
|
"type": "object",
|
|
"properties": {
|
|
"provider": {
|
|
"$ref": "#/components/schemas/AIProvider"
|
|
},
|
|
"models": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"provider",
|
|
"models"
|
|
]
|
|
},
|
|
"InstanceAISummary": {
|
|
"type": "object",
|
|
"properties": {
|
|
"providers": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/InstanceAIProviderSummary"
|
|
}
|
|
},
|
|
"default_model": {
|
|
"$ref": "#/components/schemas/AIProviderModel"
|
|
},
|
|
"code_completion_model": {
|
|
"$ref": "#/components/schemas/AIProviderModel"
|
|
}
|
|
},
|
|
"required": [
|
|
"providers"
|
|
]
|
|
},
|
|
"Alert": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"tags_to_monitor": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"jobs_num_threshold": {
|
|
"type": "integer"
|
|
},
|
|
"alert_cooldown_seconds": {
|
|
"type": "integer"
|
|
},
|
|
"alert_time_threshold_seconds": {
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"required": [
|
|
"name",
|
|
"tags_to_monitor",
|
|
"jobs_num_threshold",
|
|
"alert_cooldown_seconds",
|
|
"alert_time_threshold_seconds"
|
|
]
|
|
},
|
|
"Configs": {
|
|
"type": "object",
|
|
"nullable": true,
|
|
"properties": {
|
|
"alerts": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/Alert"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"WorkspaceDependencies": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer"
|
|
},
|
|
"archived": {
|
|
"type": "boolean"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"content": {
|
|
"type": "string"
|
|
},
|
|
"language": {
|
|
"$ref": "#/components/schemas/ScriptLang"
|
|
},
|
|
"workspace_id": {
|
|
"type": "string"
|
|
},
|
|
"created_at": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
}
|
|
},
|
|
"required": [
|
|
"workspace_id",
|
|
"language",
|
|
"created_at",
|
|
"content",
|
|
"id",
|
|
"archived"
|
|
]
|
|
},
|
|
"NewWorkspaceDependencies": {
|
|
"type": "object",
|
|
"properties": {
|
|
"workspace_id": {
|
|
"type": "string"
|
|
},
|
|
"language": {
|
|
"$ref": "#/components/schemas/ScriptLang"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"content": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"workspace_id",
|
|
"language",
|
|
"content"
|
|
]
|
|
},
|
|
"Script": {
|
|
"type": "object",
|
|
"properties": {
|
|
"workspace_id": {
|
|
"type": "string"
|
|
},
|
|
"hash": {
|
|
"type": "string"
|
|
},
|
|
"path": {
|
|
"type": "string"
|
|
},
|
|
"parent_hashes": {
|
|
"type": "array",
|
|
"description": "The first element is the direct parent of the script, the second is the parent of the first, etc\n",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"summary": {
|
|
"type": "string"
|
|
},
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"content": {
|
|
"type": "string"
|
|
},
|
|
"created_by": {
|
|
"type": "string"
|
|
},
|
|
"created_at": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"archived": {
|
|
"type": "boolean"
|
|
},
|
|
"schema": {
|
|
"type": "object"
|
|
},
|
|
"deleted": {
|
|
"type": "boolean"
|
|
},
|
|
"is_template": {
|
|
"type": "boolean"
|
|
},
|
|
"extra_perms": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"lock": {
|
|
"type": "string"
|
|
},
|
|
"lock_error_logs": {
|
|
"type": "string"
|
|
},
|
|
"language": {
|
|
"$ref": "#/components/schemas/ScriptLang"
|
|
},
|
|
"kind": {
|
|
"type": "string",
|
|
"enum": [
|
|
"script",
|
|
"failure",
|
|
"trigger",
|
|
"command",
|
|
"approval",
|
|
"preprocessor"
|
|
]
|
|
},
|
|
"starred": {
|
|
"type": "boolean"
|
|
},
|
|
"tag": {
|
|
"type": "string"
|
|
},
|
|
"has_draft": {
|
|
"type": "boolean"
|
|
},
|
|
"draft_only": {
|
|
"type": "boolean"
|
|
},
|
|
"envs": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"concurrent_limit": {
|
|
"type": "integer"
|
|
},
|
|
"concurrency_time_window_s": {
|
|
"type": "integer"
|
|
},
|
|
"concurrency_key": {
|
|
"type": "string"
|
|
},
|
|
"debounce_key": {
|
|
"type": "string"
|
|
},
|
|
"debounce_delay_s": {
|
|
"type": "integer"
|
|
},
|
|
"debounce_args_to_accumulate": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"max_total_debouncing_time": {
|
|
"type": "integer"
|
|
},
|
|
"max_total_debounces_amount": {
|
|
"type": "integer"
|
|
},
|
|
"cache_ttl": {
|
|
"type": "number"
|
|
},
|
|
"dedicated_worker": {
|
|
"type": "boolean"
|
|
},
|
|
"ws_error_handler_muted": {
|
|
"type": "boolean"
|
|
},
|
|
"priority": {
|
|
"type": "integer"
|
|
},
|
|
"restart_unless_cancelled": {
|
|
"type": "boolean"
|
|
},
|
|
"timeout": {
|
|
"type": "integer"
|
|
},
|
|
"delete_after_secs": {
|
|
"type": "integer",
|
|
"description": "If set, delete the job's args, result and logs after this many seconds following job completion"
|
|
},
|
|
"visible_to_runner_only": {
|
|
"type": "boolean"
|
|
},
|
|
"auto_kind": {
|
|
"type": "string"
|
|
},
|
|
"codebase": {
|
|
"type": "string"
|
|
},
|
|
"has_preprocessor": {
|
|
"type": "boolean"
|
|
},
|
|
"on_behalf_of_email": {
|
|
"type": "string"
|
|
},
|
|
"modules": {
|
|
"type": "object",
|
|
"nullable": true,
|
|
"description": "Additional script modules keyed by relative file path",
|
|
"additionalProperties": {
|
|
"$ref": "#/components/schemas/ScriptModule"
|
|
}
|
|
},
|
|
"labels": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"default": []
|
|
}
|
|
},
|
|
"required": [
|
|
"hash",
|
|
"path",
|
|
"summary",
|
|
"description",
|
|
"content",
|
|
"created_by",
|
|
"created_at",
|
|
"archived",
|
|
"deleted",
|
|
"is_template",
|
|
"extra_perms",
|
|
"language",
|
|
"kind",
|
|
"starred",
|
|
"has_preprocessor"
|
|
]
|
|
},
|
|
"NewScript": {
|
|
"type": "object",
|
|
"properties": {
|
|
"path": {
|
|
"type": "string"
|
|
},
|
|
"parent_hash": {
|
|
"type": "string"
|
|
},
|
|
"summary": {
|
|
"type": "string"
|
|
},
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"content": {
|
|
"type": "string"
|
|
},
|
|
"schema": {
|
|
"type": "object"
|
|
},
|
|
"is_template": {
|
|
"type": "boolean"
|
|
},
|
|
"lock": {
|
|
"type": "string"
|
|
},
|
|
"language": {
|
|
"$ref": "#/components/schemas/ScriptLang"
|
|
},
|
|
"kind": {
|
|
"type": "string",
|
|
"enum": [
|
|
"script",
|
|
"failure",
|
|
"trigger",
|
|
"command",
|
|
"approval",
|
|
"preprocessor"
|
|
]
|
|
},
|
|
"tag": {
|
|
"type": "string"
|
|
},
|
|
"draft_only": {
|
|
"type": "boolean"
|
|
},
|
|
"envs": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"concurrent_limit": {
|
|
"type": "integer"
|
|
},
|
|
"concurrency_time_window_s": {
|
|
"type": "integer"
|
|
},
|
|
"cache_ttl": {
|
|
"type": "number"
|
|
},
|
|
"cache_ignore_s3_path": {
|
|
"type": "boolean"
|
|
},
|
|
"dedicated_worker": {
|
|
"type": "boolean"
|
|
},
|
|
"ws_error_handler_muted": {
|
|
"type": "boolean"
|
|
},
|
|
"priority": {
|
|
"type": "integer"
|
|
},
|
|
"restart_unless_cancelled": {
|
|
"type": "boolean"
|
|
},
|
|
"timeout": {
|
|
"type": "integer"
|
|
},
|
|
"delete_after_secs": {
|
|
"type": "integer",
|
|
"description": "If set, delete the job's args, result and logs after this many seconds following job completion"
|
|
},
|
|
"deployment_message": {
|
|
"type": "string"
|
|
},
|
|
"concurrency_key": {
|
|
"type": "string"
|
|
},
|
|
"debounce_key": {
|
|
"type": "string"
|
|
},
|
|
"debounce_delay_s": {
|
|
"type": "integer"
|
|
},
|
|
"debounce_args_to_accumulate": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"max_total_debouncing_time": {
|
|
"type": "integer"
|
|
},
|
|
"max_total_debounces_amount": {
|
|
"type": "integer"
|
|
},
|
|
"visible_to_runner_only": {
|
|
"type": "boolean"
|
|
},
|
|
"auto_kind": {
|
|
"type": "string"
|
|
},
|
|
"codebase": {
|
|
"type": "string"
|
|
},
|
|
"has_preprocessor": {
|
|
"type": "boolean"
|
|
},
|
|
"on_behalf_of_email": {
|
|
"type": "string"
|
|
},
|
|
"preserve_on_behalf_of": {
|
|
"type": "boolean",
|
|
"description": "When true and the caller is a member of the 'wm_deployers' group, preserves the original on_behalf_of_email value instead of overwriting it."
|
|
},
|
|
"assets": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"required": [
|
|
"path",
|
|
"kind"
|
|
],
|
|
"properties": {
|
|
"path": {
|
|
"type": "string"
|
|
},
|
|
"kind": {
|
|
"$ref": "#/components/schemas/AssetKind"
|
|
},
|
|
"access_type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"r",
|
|
"w",
|
|
"rw"
|
|
]
|
|
},
|
|
"alt_access_type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"r",
|
|
"w",
|
|
"rw"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"modules": {
|
|
"type": "object",
|
|
"nullable": true,
|
|
"description": "Additional script modules keyed by relative file path",
|
|
"additionalProperties": {
|
|
"$ref": "#/components/schemas/ScriptModule"
|
|
}
|
|
},
|
|
"labels": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"path",
|
|
"summary",
|
|
"content",
|
|
"language"
|
|
]
|
|
},
|
|
"NewScriptWithDraft": {
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/NewScript"
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"draft": {
|
|
"$ref": "#/components/schemas/NewScript"
|
|
},
|
|
"hash": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"hash"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"ScriptHistory": {
|
|
"type": "object",
|
|
"properties": {
|
|
"script_hash": {
|
|
"type": "string"
|
|
},
|
|
"deployment_msg": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"script_hash"
|
|
]
|
|
},
|
|
"ScriptArgs": {
|
|
"type": "object",
|
|
"description": "The arguments to pass to the script or flow",
|
|
"additionalProperties": true
|
|
},
|
|
"Input": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"created_by": {
|
|
"type": "string"
|
|
},
|
|
"created_at": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"is_public": {
|
|
"type": "boolean"
|
|
},
|
|
"success": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"required": [
|
|
"id",
|
|
"name",
|
|
"args",
|
|
"created_by",
|
|
"created_at",
|
|
"is_public"
|
|
]
|
|
},
|
|
"CreateInput": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"args": {
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"name",
|
|
"args",
|
|
"created_by"
|
|
]
|
|
},
|
|
"UpdateInput": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"is_public": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"required": [
|
|
"id",
|
|
"name",
|
|
"is_public"
|
|
]
|
|
},
|
|
"RunnableType": {
|
|
"type": "string",
|
|
"enum": [
|
|
"ScriptHash",
|
|
"ScriptPath",
|
|
"FlowPath"
|
|
]
|
|
},
|
|
"QueuedJob": {
|
|
"type": "object",
|
|
"properties": {
|
|
"workspace_id": {
|
|
"type": "string"
|
|
},
|
|
"id": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
},
|
|
"parent_job": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
},
|
|
"created_by": {
|
|
"type": "string"
|
|
},
|
|
"created_at": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"started_at": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"scheduled_for": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"running": {
|
|
"type": "boolean"
|
|
},
|
|
"script_path": {
|
|
"type": "string"
|
|
},
|
|
"script_hash": {
|
|
"type": "string"
|
|
},
|
|
"args": {
|
|
"$ref": "#/components/schemas/ScriptArgs"
|
|
},
|
|
"logs": {
|
|
"type": "string"
|
|
},
|
|
"raw_code": {
|
|
"type": "string"
|
|
},
|
|
"canceled": {
|
|
"type": "boolean"
|
|
},
|
|
"canceled_by": {
|
|
"type": "string"
|
|
},
|
|
"canceled_reason": {
|
|
"type": "string"
|
|
},
|
|
"last_ping": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"job_kind": {
|
|
"type": "string",
|
|
"enum": [
|
|
"script",
|
|
"preview",
|
|
"dependencies",
|
|
"flowdependencies",
|
|
"appdependencies",
|
|
"flow",
|
|
"flowpreview",
|
|
"script_hub",
|
|
"identity",
|
|
"deploymentcallback",
|
|
"singlestepflow",
|
|
"flowscript",
|
|
"flownode",
|
|
"appscript",
|
|
"aiagent",
|
|
"unassigned_script",
|
|
"unassigned_flow",
|
|
"unassigned_singlestepflow"
|
|
]
|
|
},
|
|
"schedule_path": {
|
|
"type": "string"
|
|
},
|
|
"permissioned_as": {
|
|
"type": "string",
|
|
"description": "The user (u/userfoo) or group (g/groupfoo) whom\nthe execution of this script will be permissioned_as and by extension its DT_TOKEN.\n"
|
|
},
|
|
"flow_status": {
|
|
"$ref": "#/components/schemas/FlowStatus"
|
|
},
|
|
"workflow_as_code_status": {
|
|
"$ref": "#/components/schemas/WorkflowStatus"
|
|
},
|
|
"raw_flow": {
|
|
"$ref": "#/components/schemas/FlowValue"
|
|
},
|
|
"is_flow_step": {
|
|
"type": "boolean"
|
|
},
|
|
"language": {
|
|
"$ref": "#/components/schemas/ScriptLang"
|
|
},
|
|
"email": {
|
|
"type": "string"
|
|
},
|
|
"visible_to_owner": {
|
|
"type": "boolean"
|
|
},
|
|
"mem_peak": {
|
|
"type": "integer"
|
|
},
|
|
"tag": {
|
|
"type": "string"
|
|
},
|
|
"priority": {
|
|
"type": "integer"
|
|
},
|
|
"self_wait_time_ms": {
|
|
"type": "number"
|
|
},
|
|
"aggregate_wait_time_ms": {
|
|
"type": "number"
|
|
},
|
|
"suspend": {
|
|
"type": "number"
|
|
},
|
|
"preprocessed": {
|
|
"type": "boolean"
|
|
},
|
|
"worker": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"id",
|
|
"running",
|
|
"canceled",
|
|
"job_kind",
|
|
"permissioned_as",
|
|
"is_flow_step",
|
|
"email",
|
|
"visible_to_owner",
|
|
"tag"
|
|
]
|
|
},
|
|
"CompletedJob": {
|
|
"type": "object",
|
|
"properties": {
|
|
"workspace_id": {
|
|
"type": "string"
|
|
},
|
|
"id": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
},
|
|
"parent_job": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
},
|
|
"created_by": {
|
|
"type": "string"
|
|
},
|
|
"created_at": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"started_at": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"completed_at": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"duration_ms": {
|
|
"type": "integer"
|
|
},
|
|
"success": {
|
|
"type": "boolean"
|
|
},
|
|
"script_path": {
|
|
"type": "string"
|
|
},
|
|
"script_hash": {
|
|
"type": "string"
|
|
},
|
|
"args": {
|
|
"$ref": "#/components/schemas/ScriptArgs"
|
|
},
|
|
"result": {},
|
|
"logs": {
|
|
"type": "string"
|
|
},
|
|
"deleted": {
|
|
"type": "boolean"
|
|
},
|
|
"raw_code": {
|
|
"type": "string"
|
|
},
|
|
"canceled": {
|
|
"type": "boolean"
|
|
},
|
|
"canceled_by": {
|
|
"type": "string"
|
|
},
|
|
"canceled_reason": {
|
|
"type": "string"
|
|
},
|
|
"job_kind": {
|
|
"type": "string",
|
|
"enum": [
|
|
"script",
|
|
"preview",
|
|
"dependencies",
|
|
"flow",
|
|
"flowdependencies",
|
|
"appdependencies",
|
|
"flowpreview",
|
|
"script_hub",
|
|
"identity",
|
|
"deploymentcallback",
|
|
"singlestepflow",
|
|
"flowscript",
|
|
"flownode",
|
|
"appscript",
|
|
"aiagent",
|
|
"unassigned_script",
|
|
"unassigned_flow",
|
|
"unassigned_singlestepflow"
|
|
]
|
|
},
|
|
"schedule_path": {
|
|
"type": "string"
|
|
},
|
|
"permissioned_as": {
|
|
"type": "string",
|
|
"description": "The user (u/userfoo) or group (g/groupfoo) whom\nthe execution of this script will be permissioned_as and by extension its DT_TOKEN.\n"
|
|
},
|
|
"flow_status": {
|
|
"$ref": "#/components/schemas/FlowStatus"
|
|
},
|
|
"workflow_as_code_status": {
|
|
"$ref": "#/components/schemas/WorkflowStatus"
|
|
},
|
|
"raw_flow": {
|
|
"$ref": "#/components/schemas/FlowValue"
|
|
},
|
|
"is_flow_step": {
|
|
"type": "boolean"
|
|
},
|
|
"language": {
|
|
"$ref": "#/components/schemas/ScriptLang"
|
|
},
|
|
"is_skipped": {
|
|
"type": "boolean"
|
|
},
|
|
"email": {
|
|
"type": "string"
|
|
},
|
|
"visible_to_owner": {
|
|
"type": "boolean"
|
|
},
|
|
"mem_peak": {
|
|
"type": "integer"
|
|
},
|
|
"tag": {
|
|
"type": "string"
|
|
},
|
|
"priority": {
|
|
"type": "integer"
|
|
},
|
|
"labels": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"self_wait_time_ms": {
|
|
"type": "number"
|
|
},
|
|
"aggregate_wait_time_ms": {
|
|
"type": "number"
|
|
},
|
|
"preprocessed": {
|
|
"type": "boolean"
|
|
},
|
|
"worker": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"id",
|
|
"created_by",
|
|
"duration_ms",
|
|
"created_at",
|
|
"started_at",
|
|
"success",
|
|
"canceled",
|
|
"job_kind",
|
|
"permissioned_as",
|
|
"is_flow_step",
|
|
"is_skipped",
|
|
"email",
|
|
"visible_to_owner",
|
|
"tag"
|
|
]
|
|
},
|
|
"ExportableCompletedJob": {
|
|
"type": "object",
|
|
"description": "Completed job with full data for export/import operations",
|
|
"properties": {
|
|
"id": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
},
|
|
"parent_job": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
},
|
|
"created_by": {
|
|
"type": "string"
|
|
},
|
|
"created_at": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"started_at": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"completed_at": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"duration_ms": {
|
|
"type": "integer"
|
|
},
|
|
"script_path": {
|
|
"type": "string"
|
|
},
|
|
"script_hash": {
|
|
"type": "string"
|
|
},
|
|
"args": {
|
|
"type": "object",
|
|
"description": "Full job arguments without size restrictions"
|
|
},
|
|
"result": {
|
|
"type": "object",
|
|
"description": "Full job result without size restrictions"
|
|
},
|
|
"logs": {
|
|
"type": "string",
|
|
"description": "Complete job logs from v2_job table"
|
|
},
|
|
"raw_code": {
|
|
"type": "string"
|
|
},
|
|
"raw_lock": {
|
|
"type": "string"
|
|
},
|
|
"canceled_by": {
|
|
"type": "string"
|
|
},
|
|
"canceled_reason": {
|
|
"type": "string"
|
|
},
|
|
"job_kind": {
|
|
"type": "string",
|
|
"enum": [
|
|
"script",
|
|
"preview",
|
|
"dependencies",
|
|
"flow",
|
|
"flowdependencies",
|
|
"appdependencies",
|
|
"flowpreview",
|
|
"script_hub",
|
|
"identity",
|
|
"deploymentcallback",
|
|
"singlestepflow",
|
|
"flowscript",
|
|
"flownode",
|
|
"appscript",
|
|
"aiagent",
|
|
"unassigned_script",
|
|
"unassigned_flow",
|
|
"unassigned_singlestepflow"
|
|
]
|
|
},
|
|
"trigger": {
|
|
"type": "string",
|
|
"description": "Trigger path for the job (replaces schedule_path)"
|
|
},
|
|
"trigger_kind": {
|
|
"type": "string",
|
|
"enum": [
|
|
"webhook",
|
|
"http",
|
|
"websocket",
|
|
"kafka",
|
|
"email",
|
|
"nats",
|
|
"schedule",
|
|
"app",
|
|
"ui",
|
|
"postgres",
|
|
"sqs",
|
|
"gcp"
|
|
]
|
|
},
|
|
"permissioned_as": {
|
|
"type": "string"
|
|
},
|
|
"permissioned_as_email": {
|
|
"type": "string"
|
|
},
|
|
"flow_status": {
|
|
"type": "object",
|
|
"description": "Flow status from v2_job_status table"
|
|
},
|
|
"workflow_as_code_status": {
|
|
"type": "object"
|
|
},
|
|
"raw_flow": {
|
|
"type": "object"
|
|
},
|
|
"is_flow_step": {
|
|
"type": "boolean"
|
|
},
|
|
"language": {
|
|
"$ref": "#/components/schemas/ScriptLang"
|
|
},
|
|
"is_skipped": {
|
|
"type": "boolean"
|
|
},
|
|
"email": {
|
|
"type": "string"
|
|
},
|
|
"visible_to_owner": {
|
|
"type": "boolean"
|
|
},
|
|
"mem_peak": {
|
|
"type": "integer"
|
|
},
|
|
"tag": {
|
|
"type": "string"
|
|
},
|
|
"priority": {
|
|
"type": "integer"
|
|
},
|
|
"labels": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"same_worker": {
|
|
"type": "boolean"
|
|
},
|
|
"flow_step_id": {
|
|
"type": "string"
|
|
},
|
|
"flow_innermost_root_job": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
},
|
|
"concurrent_limit": {
|
|
"type": "integer"
|
|
},
|
|
"concurrency_time_window_s": {
|
|
"type": "integer"
|
|
},
|
|
"timeout": {
|
|
"type": "integer"
|
|
},
|
|
"cache_ttl": {
|
|
"type": "integer"
|
|
},
|
|
"self_wait_time_ms": {
|
|
"type": "integer"
|
|
},
|
|
"aggregate_wait_time_ms": {
|
|
"type": "integer"
|
|
},
|
|
"preprocessed": {
|
|
"type": "boolean"
|
|
},
|
|
"worker": {
|
|
"type": "string"
|
|
},
|
|
"status": {
|
|
"type": "string",
|
|
"description": "Actual job status from database"
|
|
}
|
|
},
|
|
"required": [
|
|
"id",
|
|
"created_by",
|
|
"created_at",
|
|
"job_kind",
|
|
"permissioned_as",
|
|
"email",
|
|
"visible_to_owner"
|
|
]
|
|
},
|
|
"ExportableQueuedJob": {
|
|
"type": "object",
|
|
"description": "Queued job with full data for export/import operations",
|
|
"properties": {
|
|
"id": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
},
|
|
"parent_job": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
},
|
|
"created_by": {
|
|
"type": "string"
|
|
},
|
|
"created_at": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"started_at": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"scheduled_for": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"script_path": {
|
|
"type": "string"
|
|
},
|
|
"script_hash": {
|
|
"type": "string"
|
|
},
|
|
"args": {
|
|
"type": "object",
|
|
"description": "Full job arguments without size restrictions"
|
|
},
|
|
"logs": {
|
|
"type": "string",
|
|
"description": "Complete job logs from v2_job table"
|
|
},
|
|
"raw_code": {
|
|
"type": "string"
|
|
},
|
|
"raw_lock": {
|
|
"type": "string"
|
|
},
|
|
"canceled_by": {
|
|
"type": "string"
|
|
},
|
|
"canceled_reason": {
|
|
"type": "string"
|
|
},
|
|
"job_kind": {
|
|
"type": "string",
|
|
"enum": [
|
|
"script",
|
|
"preview",
|
|
"dependencies",
|
|
"flowdependencies",
|
|
"appdependencies",
|
|
"flow",
|
|
"flowpreview",
|
|
"script_hub",
|
|
"identity",
|
|
"deploymentcallback",
|
|
"singlestepflow",
|
|
"flowscript",
|
|
"flownode",
|
|
"appscript",
|
|
"aiagent",
|
|
"unassigned_script",
|
|
"unassigned_flow",
|
|
"unassigned_singlestepflow"
|
|
]
|
|
},
|
|
"trigger": {
|
|
"type": "string",
|
|
"description": "Trigger path for the job (replaces schedule_path)"
|
|
},
|
|
"trigger_kind": {
|
|
"type": "string",
|
|
"enum": [
|
|
"webhook",
|
|
"http",
|
|
"websocket",
|
|
"kafka",
|
|
"email",
|
|
"nats",
|
|
"schedule",
|
|
"app",
|
|
"ui",
|
|
"postgres",
|
|
"sqs",
|
|
"gcp"
|
|
]
|
|
},
|
|
"permissioned_as": {
|
|
"type": "string"
|
|
},
|
|
"permissioned_as_email": {
|
|
"type": "string"
|
|
},
|
|
"flow_status": {
|
|
"type": "object",
|
|
"description": "Flow status from v2_job_status table"
|
|
},
|
|
"workflow_as_code_status": {
|
|
"type": "object"
|
|
},
|
|
"raw_flow": {
|
|
"type": "object"
|
|
},
|
|
"is_flow_step": {
|
|
"type": "boolean"
|
|
},
|
|
"language": {
|
|
"$ref": "#/components/schemas/ScriptLang"
|
|
},
|
|
"email": {
|
|
"type": "string"
|
|
},
|
|
"visible_to_owner": {
|
|
"type": "boolean"
|
|
},
|
|
"mem_peak": {
|
|
"type": "integer"
|
|
},
|
|
"tag": {
|
|
"type": "string"
|
|
},
|
|
"priority": {
|
|
"type": "integer"
|
|
},
|
|
"labels": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"same_worker": {
|
|
"type": "boolean"
|
|
},
|
|
"flow_step_id": {
|
|
"type": "string"
|
|
},
|
|
"flow_innermost_root_job": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
},
|
|
"concurrent_limit": {
|
|
"type": "integer"
|
|
},
|
|
"concurrency_time_window_s": {
|
|
"type": "integer"
|
|
},
|
|
"timeout": {
|
|
"type": "integer"
|
|
},
|
|
"cache_ttl": {
|
|
"type": "integer"
|
|
},
|
|
"self_wait_time_ms": {
|
|
"type": "integer"
|
|
},
|
|
"aggregate_wait_time_ms": {
|
|
"type": "integer"
|
|
},
|
|
"preprocessed": {
|
|
"type": "boolean"
|
|
},
|
|
"suspend": {
|
|
"type": "integer"
|
|
},
|
|
"suspend_until": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
}
|
|
},
|
|
"required": [
|
|
"id",
|
|
"created_by",
|
|
"created_at",
|
|
"job_kind",
|
|
"permissioned_as",
|
|
"email",
|
|
"visible_to_owner"
|
|
]
|
|
},
|
|
"ObscuredJob": {
|
|
"type": "object",
|
|
"properties": {
|
|
"typ": {
|
|
"type": "string"
|
|
},
|
|
"started_at": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"duration_ms": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
},
|
|
"Job": {
|
|
"oneOf": [
|
|
{
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/CompletedJob"
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"CompletedJob"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/QueuedJob"
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"QueuedJob"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"discriminator": {
|
|
"propertyName": "type"
|
|
}
|
|
},
|
|
"User": {
|
|
"type": "object",
|
|
"properties": {
|
|
"email": {
|
|
"type": "string"
|
|
},
|
|
"username": {
|
|
"type": "string"
|
|
},
|
|
"is_admin": {
|
|
"type": "boolean"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"is_super_admin": {
|
|
"type": "boolean"
|
|
},
|
|
"created_at": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"operator": {
|
|
"type": "boolean"
|
|
},
|
|
"disabled": {
|
|
"type": "boolean"
|
|
},
|
|
"groups": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"folders": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"folders_owners": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"added_via": {
|
|
"nullable": true,
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/UserSource"
|
|
}
|
|
]
|
|
},
|
|
"is_service_account": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"required": [
|
|
"email",
|
|
"username",
|
|
"is_admin",
|
|
"is_super_admin",
|
|
"created_at",
|
|
"operator",
|
|
"disabled",
|
|
"folders",
|
|
"folders_owners"
|
|
]
|
|
},
|
|
"UserSource": {
|
|
"type": "object",
|
|
"properties": {
|
|
"source": {
|
|
"type": "string",
|
|
"enum": [
|
|
"domain",
|
|
"instance_group",
|
|
"manual"
|
|
],
|
|
"description": "How the user was added to the workspace"
|
|
},
|
|
"domain": {
|
|
"type": "string",
|
|
"description": "The domain used for auto-invite (when source is 'domain')"
|
|
},
|
|
"group": {
|
|
"type": "string",
|
|
"description": "The instance group name (when source is 'instance_group')"
|
|
}
|
|
},
|
|
"required": [
|
|
"source"
|
|
]
|
|
},
|
|
"UserUsage": {
|
|
"type": "object",
|
|
"properties": {
|
|
"email": {
|
|
"type": "string"
|
|
},
|
|
"executions": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
},
|
|
"Login": {
|
|
"type": "object",
|
|
"properties": {
|
|
"email": {
|
|
"type": "string"
|
|
},
|
|
"password": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"email",
|
|
"password"
|
|
]
|
|
},
|
|
"PasswordResetResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"message": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"message"
|
|
]
|
|
},
|
|
"EditWorkspaceUser": {
|
|
"type": "object",
|
|
"properties": {
|
|
"is_admin": {
|
|
"type": "boolean"
|
|
},
|
|
"operator": {
|
|
"type": "boolean"
|
|
},
|
|
"disabled": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"OffboardAffectedPaths": {
|
|
"type": "object",
|
|
"properties": {
|
|
"scripts": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"flows": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"apps": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"resources": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"variables": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"schedules": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"triggers": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"OffboardPreview": {
|
|
"type": "object",
|
|
"properties": {
|
|
"owned": {
|
|
"$ref": "#/components/schemas/OffboardAffectedPaths",
|
|
"description": "Objects under u/{username}/ that will be reassigned"
|
|
},
|
|
"executing_on_behalf": {
|
|
"$ref": "#/components/schemas/OffboardAffectedPaths",
|
|
"description": "Objects not under the user's path but that execute on behalf of this user (permissioned_as/on_behalf_of will be updated)"
|
|
},
|
|
"referencing": {
|
|
"$ref": "#/components/schemas/OffboardAffectedPaths",
|
|
"description": "Scripts/flows/apps/resources whose content or value references this user's paths (may break after reassignment)"
|
|
},
|
|
"tokens": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/OffboardTokenInfo"
|
|
},
|
|
"description": "Tokens owned by this user (will be deleted)"
|
|
},
|
|
"http_triggers": {
|
|
"type": "integer",
|
|
"description": "HTTP triggers under the user's path (webhook URLs will change)"
|
|
},
|
|
"email_triggers": {
|
|
"type": "integer",
|
|
"description": "Email triggers under the user's path (email addresses will change)"
|
|
}
|
|
},
|
|
"required": [
|
|
"owned",
|
|
"executing_on_behalf",
|
|
"referencing",
|
|
"tokens",
|
|
"http_triggers",
|
|
"email_triggers"
|
|
]
|
|
},
|
|
"OffboardTokenInfo": {
|
|
"type": "object",
|
|
"properties": {
|
|
"label": {
|
|
"type": "string"
|
|
},
|
|
"scopes": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"expiration": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"label",
|
|
"scopes"
|
|
]
|
|
},
|
|
"OffboardRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"reassign_to": {
|
|
"type": "string",
|
|
"description": "Target for reassignment: 'u/{username}' or 'f/{folder}'"
|
|
},
|
|
"new_on_behalf_of_user": {
|
|
"type": "string",
|
|
"description": "Required when reassign_to is a folder. The username whose identity will be used as permissioned_as for schedules and triggers."
|
|
},
|
|
"delete_user": {
|
|
"type": "boolean",
|
|
"default": true,
|
|
"description": "Whether to also remove the user from the workspace"
|
|
}
|
|
},
|
|
"required": [
|
|
"reassign_to"
|
|
]
|
|
},
|
|
"OffboardResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"conflicts": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"description": "List of path conflicts that block the offboarding. Empty on success."
|
|
},
|
|
"summary": {
|
|
"$ref": "#/components/schemas/OffboardSummary"
|
|
}
|
|
}
|
|
},
|
|
"OffboardSummary": {
|
|
"type": "object",
|
|
"properties": {
|
|
"scripts_reassigned": {
|
|
"type": "integer"
|
|
},
|
|
"flows_reassigned": {
|
|
"type": "integer"
|
|
},
|
|
"apps_reassigned": {
|
|
"type": "integer"
|
|
},
|
|
"resources_reassigned": {
|
|
"type": "integer"
|
|
},
|
|
"variables_reassigned": {
|
|
"type": "integer"
|
|
},
|
|
"schedules_reassigned": {
|
|
"type": "integer"
|
|
},
|
|
"triggers_reassigned": {
|
|
"type": "integer"
|
|
},
|
|
"drafts_deleted": {
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"required": [
|
|
"scripts_reassigned",
|
|
"flows_reassigned",
|
|
"apps_reassigned",
|
|
"resources_reassigned",
|
|
"variables_reassigned",
|
|
"schedules_reassigned",
|
|
"triggers_reassigned",
|
|
"drafts_deleted"
|
|
]
|
|
},
|
|
"GlobalOffboardPreview": {
|
|
"type": "object",
|
|
"properties": {
|
|
"workspaces": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/WorkspaceOffboardPreview"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"workspaces"
|
|
]
|
|
},
|
|
"WorkspaceOffboardPreview": {
|
|
"type": "object",
|
|
"properties": {
|
|
"workspace_id": {
|
|
"type": "string"
|
|
},
|
|
"username": {
|
|
"type": "string"
|
|
},
|
|
"preview": {
|
|
"$ref": "#/components/schemas/OffboardPreview"
|
|
}
|
|
},
|
|
"required": [
|
|
"workspace_id",
|
|
"username",
|
|
"preview"
|
|
]
|
|
},
|
|
"GlobalOffboardRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"reassignments": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"$ref": "#/components/schemas/WorkspaceReassignment"
|
|
},
|
|
"description": "Map of workspace_id to reassignment config"
|
|
},
|
|
"delete_user": {
|
|
"type": "boolean",
|
|
"default": true,
|
|
"description": "Whether to also remove the user from the instance"
|
|
}
|
|
}
|
|
},
|
|
"WorkspaceReassignment": {
|
|
"type": "object",
|
|
"properties": {
|
|
"reassign_to": {
|
|
"type": "string",
|
|
"description": "Target: 'u/{username}' or 'f/{folder}'"
|
|
},
|
|
"new_on_behalf_of_user": {
|
|
"type": "string",
|
|
"description": "Required when reassign_to is a folder. Username to use as permissioned_as."
|
|
}
|
|
},
|
|
"required": [
|
|
"reassign_to"
|
|
]
|
|
},
|
|
"TruncatedToken": {
|
|
"type": "object",
|
|
"properties": {
|
|
"label": {
|
|
"type": "string"
|
|
},
|
|
"expiration": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"token_prefix": {
|
|
"type": "string"
|
|
},
|
|
"created_at": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"last_used_at": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"scopes": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"email": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"token_prefix",
|
|
"created_at",
|
|
"last_used_at"
|
|
]
|
|
},
|
|
"ExternalJwtToken": {
|
|
"type": "object",
|
|
"properties": {
|
|
"jwt_hash": {
|
|
"type": "integer",
|
|
"format": "int64"
|
|
},
|
|
"email": {
|
|
"type": "string"
|
|
},
|
|
"username": {
|
|
"type": "string"
|
|
},
|
|
"is_admin": {
|
|
"type": "boolean"
|
|
},
|
|
"is_operator": {
|
|
"type": "boolean"
|
|
},
|
|
"workspace_id": {
|
|
"type": "string"
|
|
},
|
|
"label": {
|
|
"type": "string"
|
|
},
|
|
"scopes": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"last_used_at": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
}
|
|
},
|
|
"required": [
|
|
"jwt_hash",
|
|
"email",
|
|
"username",
|
|
"is_admin",
|
|
"is_operator",
|
|
"last_used_at"
|
|
]
|
|
},
|
|
"NewToken": {
|
|
"type": "object",
|
|
"properties": {
|
|
"label": {
|
|
"type": "string"
|
|
},
|
|
"expiration": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"scopes": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"workspace_id": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"NewTokenImpersonate": {
|
|
"type": "object",
|
|
"properties": {
|
|
"label": {
|
|
"type": "string"
|
|
},
|
|
"expiration": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"impersonate_email": {
|
|
"type": "string"
|
|
},
|
|
"workspace_id": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"impersonate_email"
|
|
]
|
|
},
|
|
"ListableVariable": {
|
|
"type": "object",
|
|
"properties": {
|
|
"workspace_id": {
|
|
"type": "string"
|
|
},
|
|
"path": {
|
|
"type": "string"
|
|
},
|
|
"value": {
|
|
"type": "string"
|
|
},
|
|
"is_secret": {
|
|
"type": "boolean"
|
|
},
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"account": {
|
|
"type": "integer"
|
|
},
|
|
"is_oauth": {
|
|
"type": "boolean"
|
|
},
|
|
"extra_perms": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"is_expired": {
|
|
"type": "boolean"
|
|
},
|
|
"refresh_error": {
|
|
"type": "string"
|
|
},
|
|
"is_linked": {
|
|
"type": "boolean"
|
|
},
|
|
"is_refreshed": {
|
|
"type": "boolean"
|
|
},
|
|
"expires_at": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"labels": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"workspace_id",
|
|
"path",
|
|
"is_secret",
|
|
"extra_perms"
|
|
]
|
|
},
|
|
"ContextualVariable": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"value": {
|
|
"type": "string"
|
|
},
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"is_custom": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"required": [
|
|
"name",
|
|
"value",
|
|
"description",
|
|
"is_custom"
|
|
]
|
|
},
|
|
"CreateVariable": {
|
|
"type": "object",
|
|
"properties": {
|
|
"path": {
|
|
"type": "string",
|
|
"description": "The path to the variable"
|
|
},
|
|
"value": {
|
|
"type": "string",
|
|
"description": "The value of the variable"
|
|
},
|
|
"is_secret": {
|
|
"type": "boolean",
|
|
"description": "Whether the variable is a secret"
|
|
},
|
|
"description": {
|
|
"type": "string",
|
|
"description": "The description of the variable"
|
|
},
|
|
"account": {
|
|
"type": "integer",
|
|
"description": "The account identifier"
|
|
},
|
|
"is_oauth": {
|
|
"type": "boolean",
|
|
"description": "Whether the variable is an OAuth variable"
|
|
},
|
|
"expires_at": {
|
|
"type": "string",
|
|
"description": "The expiration date of the variable",
|
|
"format": "date-time"
|
|
},
|
|
"labels": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"path",
|
|
"value",
|
|
"is_secret",
|
|
"description"
|
|
]
|
|
},
|
|
"EditVariable": {
|
|
"type": "object",
|
|
"properties": {
|
|
"path": {
|
|
"type": "string",
|
|
"description": "The path to the variable"
|
|
},
|
|
"value": {
|
|
"type": "string",
|
|
"description": "The new value of the variable"
|
|
},
|
|
"is_secret": {
|
|
"type": "boolean",
|
|
"description": "Whether the variable is a secret"
|
|
},
|
|
"description": {
|
|
"type": "string",
|
|
"description": "The new description of the variable"
|
|
},
|
|
"labels": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"AuditLog": {
|
|
"type": "object",
|
|
"properties": {
|
|
"workspace_id": {
|
|
"type": "string"
|
|
},
|
|
"id": {
|
|
"type": "integer"
|
|
},
|
|
"timestamp": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"username": {
|
|
"type": "string"
|
|
},
|
|
"operation": {
|
|
"type": "string",
|
|
"enum": [
|
|
"jobs.run",
|
|
"jobs.run.script",
|
|
"jobs.run.preview",
|
|
"jobs.run.flow",
|
|
"jobs.run.flow_preview",
|
|
"jobs.run.script_hub",
|
|
"jobs.run.dependencies",
|
|
"jobs.run.identity",
|
|
"jobs.run.noop",
|
|
"jobs.flow_dependencies",
|
|
"jobs",
|
|
"jobs.cancel",
|
|
"jobs.force_cancel",
|
|
"jobs.disapproval",
|
|
"jobs.delete",
|
|
"account.delete",
|
|
"ai.request",
|
|
"resources.create",
|
|
"resources.update",
|
|
"resources.delete",
|
|
"resource_types.create",
|
|
"resource_types.update",
|
|
"resource_types.delete",
|
|
"schedule.create",
|
|
"schedule.setenabled",
|
|
"schedule.edit",
|
|
"schedule.delete",
|
|
"scripts.create",
|
|
"scripts.update",
|
|
"scripts.archive",
|
|
"scripts.delete",
|
|
"users.create",
|
|
"users.delete",
|
|
"users.update",
|
|
"users.login",
|
|
"users.login_failure",
|
|
"users.logout",
|
|
"users.accept_invite",
|
|
"users.decline_invite",
|
|
"users.token.create",
|
|
"users.token.delete",
|
|
"users.add_to_workspace",
|
|
"users.add_global",
|
|
"users.setpassword",
|
|
"users.impersonate",
|
|
"users.leave_workspace",
|
|
"oauth.login",
|
|
"oauth.login_failure",
|
|
"oauth.signup",
|
|
"variables.create",
|
|
"variables.delete",
|
|
"variables.update",
|
|
"flows.create",
|
|
"flows.update",
|
|
"flows.delete",
|
|
"flows.archive",
|
|
"apps.create",
|
|
"apps.update",
|
|
"apps.delete",
|
|
"folder.create",
|
|
"folder.update",
|
|
"folder.delete",
|
|
"folder.add_owner",
|
|
"folder.remove_owner",
|
|
"group.create",
|
|
"group.delete",
|
|
"group.edit",
|
|
"group.adduser",
|
|
"group.removeuser",
|
|
"igroup.create",
|
|
"igroup.delete",
|
|
"igroup.adduser",
|
|
"igroup.removeuser",
|
|
"variables.decrypt_secret",
|
|
"workspaces.edit_command_script",
|
|
"workspaces.edit_deploy_to",
|
|
"workspaces.edit_auto_invite_domain",
|
|
"workspaces.edit_webhook",
|
|
"workspaces.edit_copilot_config",
|
|
"workspaces.edit_error_handler",
|
|
"workspaces.create",
|
|
"workspaces.update",
|
|
"workspaces.archive",
|
|
"workspaces.unarchive",
|
|
"workspaces.delete"
|
|
]
|
|
},
|
|
"action_kind": {
|
|
"type": "string",
|
|
"enum": [
|
|
"Created",
|
|
"Updated",
|
|
"Delete",
|
|
"Execute"
|
|
]
|
|
},
|
|
"resource": {
|
|
"type": "string"
|
|
},
|
|
"parameters": {
|
|
"type": "object"
|
|
},
|
|
"span": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"workspace_id",
|
|
"id",
|
|
"timestamp",
|
|
"username",
|
|
"operation",
|
|
"action_kind"
|
|
]
|
|
},
|
|
"MainArgSignature": {
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"Valid",
|
|
"Invalid"
|
|
]
|
|
},
|
|
"error": {
|
|
"type": "string"
|
|
},
|
|
"star_args": {
|
|
"type": "boolean"
|
|
},
|
|
"star_kwargs": {
|
|
"type": "boolean"
|
|
},
|
|
"args": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"typ": {
|
|
"oneOf": [
|
|
{
|
|
"type": "string",
|
|
"enum": [
|
|
"float",
|
|
"int",
|
|
"bool",
|
|
"email",
|
|
"unknown",
|
|
"bytes",
|
|
"dict",
|
|
"datetime",
|
|
"sql"
|
|
]
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"resource": {
|
|
"type": "string",
|
|
"nullable": true
|
|
}
|
|
},
|
|
"required": [
|
|
"resource"
|
|
]
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"str": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"nullable": true
|
|
}
|
|
},
|
|
"required": [
|
|
"str"
|
|
]
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"object": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"props": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"key": {
|
|
"type": "string"
|
|
},
|
|
"typ": {
|
|
"oneOf": [
|
|
{
|
|
"type": "string",
|
|
"enum": [
|
|
"float",
|
|
"int",
|
|
"bool",
|
|
"email",
|
|
"unknown",
|
|
"bytes",
|
|
"dict",
|
|
"datetime",
|
|
"sql"
|
|
]
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"str": {}
|
|
},
|
|
"required": [
|
|
"str"
|
|
]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"key",
|
|
"typ"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"object"
|
|
]
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"list": {
|
|
"oneOf": [
|
|
{
|
|
"type": "string",
|
|
"enum": [
|
|
"float",
|
|
"int",
|
|
"bool",
|
|
"email",
|
|
"unknown",
|
|
"bytes",
|
|
"dict",
|
|
"datetime",
|
|
"sql"
|
|
]
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"str": {}
|
|
},
|
|
"required": [
|
|
"str"
|
|
]
|
|
}
|
|
],
|
|
"nullable": true
|
|
}
|
|
},
|
|
"required": [
|
|
"list"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"has_default": {
|
|
"type": "boolean"
|
|
},
|
|
"default": {}
|
|
},
|
|
"required": [
|
|
"name",
|
|
"typ"
|
|
]
|
|
}
|
|
},
|
|
"auto_kind": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"has_preprocessor": {
|
|
"type": "boolean",
|
|
"nullable": true
|
|
}
|
|
},
|
|
"required": [
|
|
"star_args",
|
|
"start_kwargs",
|
|
"args",
|
|
"type",
|
|
"error",
|
|
"auto_kind",
|
|
"has_preprocessor"
|
|
]
|
|
},
|
|
"ScriptLang": {
|
|
"type": "string",
|
|
"enum": [
|
|
"python3",
|
|
"deno",
|
|
"go",
|
|
"bash",
|
|
"powershell",
|
|
"postgresql",
|
|
"mysql",
|
|
"bigquery",
|
|
"snowflake",
|
|
"mssql",
|
|
"oracledb",
|
|
"graphql",
|
|
"nativets",
|
|
"bun",
|
|
"php",
|
|
"rust",
|
|
"ansible",
|
|
"csharp",
|
|
"nu",
|
|
"java",
|
|
"ruby",
|
|
"rlang",
|
|
"duckdb",
|
|
"bunnative"
|
|
]
|
|
},
|
|
"ScriptModule": {
|
|
"type": "object",
|
|
"description": "An additional module file associated with a script",
|
|
"properties": {
|
|
"content": {
|
|
"type": "string",
|
|
"description": "The source code content of this module"
|
|
},
|
|
"language": {
|
|
"$ref": "#/components/schemas/ScriptLang"
|
|
},
|
|
"lock": {
|
|
"type": "string",
|
|
"nullable": true,
|
|
"description": "Lock file content for this module's dependencies"
|
|
}
|
|
},
|
|
"required": [
|
|
"content",
|
|
"language"
|
|
]
|
|
},
|
|
"Preview": {
|
|
"type": "object",
|
|
"properties": {
|
|
"content": {
|
|
"type": "string",
|
|
"description": "The code to run"
|
|
},
|
|
"path": {
|
|
"type": "string",
|
|
"description": "The path to the script"
|
|
},
|
|
"script_hash": {
|
|
"type": "string",
|
|
"description": "The hash of the script"
|
|
},
|
|
"args": {
|
|
"$ref": "#/components/schemas/ScriptArgs"
|
|
},
|
|
"language": {
|
|
"$ref": "#/components/schemas/ScriptLang"
|
|
},
|
|
"tag": {
|
|
"type": "string"
|
|
},
|
|
"kind": {
|
|
"type": "string",
|
|
"enum": [
|
|
"code",
|
|
"identity",
|
|
"http"
|
|
]
|
|
},
|
|
"dedicated_worker": {
|
|
"type": "boolean"
|
|
},
|
|
"lock": {
|
|
"type": "string"
|
|
},
|
|
"flow_path": {
|
|
"type": "string"
|
|
},
|
|
"modules": {
|
|
"type": "object",
|
|
"nullable": true,
|
|
"description": "Additional script modules keyed by relative file path",
|
|
"additionalProperties": {
|
|
"$ref": "#/components/schemas/ScriptModule"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"args"
|
|
]
|
|
},
|
|
"PreviewInline": {
|
|
"type": "object",
|
|
"properties": {
|
|
"content": {
|
|
"type": "string",
|
|
"description": "The code to run"
|
|
},
|
|
"args": {
|
|
"$ref": "#/components/schemas/ScriptArgs"
|
|
},
|
|
"language": {
|
|
"$ref": "#/components/schemas/ScriptLang"
|
|
}
|
|
},
|
|
"required": [
|
|
"content",
|
|
"args",
|
|
"language"
|
|
]
|
|
},
|
|
"InlineScriptArgs": {
|
|
"type": "object",
|
|
"properties": {
|
|
"args": {
|
|
"$ref": "#/components/schemas/ScriptArgs"
|
|
}
|
|
}
|
|
},
|
|
"WorkflowTask": {
|
|
"type": "object",
|
|
"properties": {
|
|
"args": {
|
|
"$ref": "#/components/schemas/ScriptArgs"
|
|
}
|
|
},
|
|
"required": [
|
|
"args"
|
|
]
|
|
},
|
|
"WorkflowStatusRecord": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"$ref": "#/components/schemas/WorkflowStatus"
|
|
}
|
|
},
|
|
"WorkflowStatus": {
|
|
"type": "object",
|
|
"properties": {
|
|
"scheduled_for": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"started_at": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"duration_ms": {
|
|
"type": "number"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"CreateResource": {
|
|
"type": "object",
|
|
"properties": {
|
|
"path": {
|
|
"type": "string",
|
|
"description": "The path to the resource"
|
|
},
|
|
"value": {},
|
|
"description": {
|
|
"type": "string",
|
|
"description": "The description of the resource"
|
|
},
|
|
"resource_type": {
|
|
"type": "string",
|
|
"description": "The resource_type associated with the resource"
|
|
},
|
|
"labels": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"path",
|
|
"value",
|
|
"resource_type"
|
|
]
|
|
},
|
|
"EditResource": {
|
|
"type": "object",
|
|
"properties": {
|
|
"path": {
|
|
"type": "string",
|
|
"description": "The path to the resource"
|
|
},
|
|
"description": {
|
|
"type": "string",
|
|
"description": "The new description of the resource"
|
|
},
|
|
"value": {},
|
|
"resource_type": {
|
|
"type": "string",
|
|
"description": "The new resource_type to be associated with the resource"
|
|
},
|
|
"labels": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"Resource": {
|
|
"type": "object",
|
|
"properties": {
|
|
"workspace_id": {
|
|
"type": "string"
|
|
},
|
|
"path": {
|
|
"type": "string"
|
|
},
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"resource_type": {
|
|
"type": "string"
|
|
},
|
|
"value": {},
|
|
"is_oauth": {
|
|
"type": "boolean"
|
|
},
|
|
"extra_perms": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"created_by": {
|
|
"type": "string"
|
|
},
|
|
"edited_at": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"labels": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"path",
|
|
"resource_type",
|
|
"is_oauth"
|
|
]
|
|
},
|
|
"ListableResource": {
|
|
"type": "object",
|
|
"properties": {
|
|
"workspace_id": {
|
|
"type": "string"
|
|
},
|
|
"path": {
|
|
"type": "string"
|
|
},
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"resource_type": {
|
|
"type": "string"
|
|
},
|
|
"value": {},
|
|
"is_oauth": {
|
|
"type": "boolean"
|
|
},
|
|
"extra_perms": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"is_expired": {
|
|
"type": "boolean"
|
|
},
|
|
"refresh_error": {
|
|
"type": "string"
|
|
},
|
|
"is_linked": {
|
|
"type": "boolean"
|
|
},
|
|
"is_refreshed": {
|
|
"type": "boolean"
|
|
},
|
|
"account": {
|
|
"type": "number"
|
|
},
|
|
"created_by": {
|
|
"type": "string"
|
|
},
|
|
"edited_at": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"labels": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"path",
|
|
"resource_type",
|
|
"is_oauth",
|
|
"is_linked",
|
|
"is_refreshed"
|
|
]
|
|
},
|
|
"ResourceType": {
|
|
"type": "object",
|
|
"properties": {
|
|
"workspace_id": {
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"schema": {},
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"created_by": {
|
|
"type": "string"
|
|
},
|
|
"edited_at": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"format_extension": {
|
|
"type": "string"
|
|
},
|
|
"is_fileset": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"required": [
|
|
"name"
|
|
]
|
|
},
|
|
"EditResourceType": {
|
|
"type": "object",
|
|
"properties": {
|
|
"schema": {},
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"is_fileset": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"Schedule": {
|
|
"type": "object",
|
|
"properties": {
|
|
"path": {
|
|
"type": "string",
|
|
"description": "The unique path identifier for this schedule"
|
|
},
|
|
"edited_by": {
|
|
"type": "string",
|
|
"description": "Username of the last person who edited this schedule"
|
|
},
|
|
"edited_at": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"description": "Timestamp of the last edit"
|
|
},
|
|
"schedule": {
|
|
"type": "string",
|
|
"description": "Cron expression with 6 fields (seconds, minutes, hours, day of month, month, day of week). Example '0 0 12 * * *' for daily at noon"
|
|
},
|
|
"timezone": {
|
|
"type": "string",
|
|
"description": "IANA timezone for the schedule (e.g., 'UTC', 'Europe/Paris', 'America/New_York')"
|
|
},
|
|
"enabled": {
|
|
"type": "boolean",
|
|
"description": "Whether the schedule is currently active and will trigger jobs"
|
|
},
|
|
"script_path": {
|
|
"type": "string",
|
|
"description": "Path to the script or flow to execute when triggered"
|
|
},
|
|
"is_flow": {
|
|
"type": "boolean",
|
|
"description": "True if script_path points to a flow, false if it points to a script"
|
|
},
|
|
"args": {
|
|
"$ref": "#/components/schemas/ScriptArgs",
|
|
"nullable": true
|
|
},
|
|
"extra_perms": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "boolean"
|
|
},
|
|
"description": "Additional permissions for this schedule"
|
|
},
|
|
"email": {
|
|
"type": "string",
|
|
"description": "Email of the user who owns this schedule, used for permissioned_as"
|
|
},
|
|
"permissioned_as": {
|
|
"type": "string",
|
|
"description": "The user or group this schedule runs as (e.g., 'u/admin' or 'g/mygroup')"
|
|
},
|
|
"error": {
|
|
"type": "string",
|
|
"nullable": true,
|
|
"description": "Last error message if the schedule failed to trigger"
|
|
},
|
|
"on_failure": {
|
|
"type": "string",
|
|
"nullable": true,
|
|
"description": "Path to a script or flow to run when the scheduled job fails"
|
|
},
|
|
"on_failure_times": {
|
|
"type": "number",
|
|
"nullable": true,
|
|
"description": "Number of consecutive failures before the on_failure handler is triggered (default 1)"
|
|
},
|
|
"on_failure_exact": {
|
|
"type": "boolean",
|
|
"nullable": true,
|
|
"description": "If true, trigger on_failure handler only on exactly N failures, not on every failure after N"
|
|
},
|
|
"on_failure_extra_args": {
|
|
"$ref": "#/components/schemas/ScriptArgs",
|
|
"nullable": true
|
|
},
|
|
"on_recovery": {
|
|
"type": "string",
|
|
"nullable": true,
|
|
"description": "Path to a script or flow to run when the schedule recovers after failures"
|
|
},
|
|
"on_recovery_times": {
|
|
"type": "number",
|
|
"nullable": true,
|
|
"description": "Number of consecutive successes before the on_recovery handler is triggered (default 1)"
|
|
},
|
|
"on_recovery_extra_args": {
|
|
"$ref": "#/components/schemas/ScriptArgs",
|
|
"nullable": true
|
|
},
|
|
"on_success": {
|
|
"type": "string",
|
|
"nullable": true,
|
|
"description": "Path to a script or flow to run after each successful execution"
|
|
},
|
|
"on_success_extra_args": {
|
|
"$ref": "#/components/schemas/ScriptArgs",
|
|
"nullable": true
|
|
},
|
|
"ws_error_handler_muted": {
|
|
"type": "boolean",
|
|
"description": "If true, the workspace-level error handler will not be triggered for this schedule's failures"
|
|
},
|
|
"retry": {
|
|
"$ref": "#/components/schemas/Retry",
|
|
"nullable": true
|
|
},
|
|
"summary": {
|
|
"type": "string",
|
|
"nullable": true,
|
|
"description": "Short summary describing the purpose of this schedule"
|
|
},
|
|
"description": {
|
|
"type": "string",
|
|
"nullable": true,
|
|
"description": "Detailed description of what this schedule does"
|
|
},
|
|
"no_flow_overlap": {
|
|
"type": "boolean",
|
|
"description": "If true, skip this schedule's execution if the previous run is still in progress (prevents concurrent runs)"
|
|
},
|
|
"tag": {
|
|
"type": "string",
|
|
"nullable": true,
|
|
"description": "Worker tag to route jobs to specific worker groups"
|
|
},
|
|
"paused_until": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"nullable": true,
|
|
"description": "ISO 8601 datetime until which the schedule is paused. Schedule resumes automatically after this time"
|
|
},
|
|
"cron_version": {
|
|
"type": "string",
|
|
"nullable": true,
|
|
"description": "Cron parser version. Use 'v2' for extended syntax with additional features"
|
|
},
|
|
"dynamic_skip": {
|
|
"type": "string",
|
|
"nullable": true,
|
|
"description": "Path to a script that validates scheduled datetimes. Receives scheduled_for datetime and returns boolean to skip (true) or run (false)"
|
|
},
|
|
"labels": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"default": []
|
|
}
|
|
},
|
|
"required": [
|
|
"path",
|
|
"edited_by",
|
|
"edited_at",
|
|
"schedule",
|
|
"script_path",
|
|
"timezone",
|
|
"extra_perms",
|
|
"is_flow",
|
|
"enabled",
|
|
"email",
|
|
"permissioned_as"
|
|
]
|
|
},
|
|
"ScheduleWJobs": {
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/Schedule"
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"jobs": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"success": {
|
|
"type": "boolean"
|
|
},
|
|
"duration_ms": {
|
|
"type": "number"
|
|
}
|
|
},
|
|
"required": [
|
|
"id",
|
|
"success",
|
|
"duration_ms"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"ErrorHandler": {
|
|
"type": "string",
|
|
"enum": [
|
|
"custom",
|
|
"slack",
|
|
"teams",
|
|
"email"
|
|
]
|
|
},
|
|
"NewSchedule": {
|
|
"type": "object",
|
|
"properties": {
|
|
"path": {
|
|
"type": "string",
|
|
"description": "The unique path identifier for this schedule"
|
|
},
|
|
"schedule": {
|
|
"type": "string",
|
|
"description": "Cron expression with 6 fields (seconds, minutes, hours, day of month, month, day of week). Example '0 0 12 * * *' for daily at noon"
|
|
},
|
|
"timezone": {
|
|
"type": "string",
|
|
"description": "IANA timezone for the schedule (e.g., 'UTC', 'Europe/Paris', 'America/New_York')"
|
|
},
|
|
"script_path": {
|
|
"type": "string",
|
|
"description": "Path to the script or flow to execute when triggered"
|
|
},
|
|
"is_flow": {
|
|
"type": "boolean",
|
|
"description": "True if script_path points to a flow, false if it points to a script"
|
|
},
|
|
"args": {
|
|
"nullable": true,
|
|
"$ref": "#/components/schemas/ScriptArgs"
|
|
},
|
|
"enabled": {
|
|
"type": "boolean",
|
|
"description": "Whether the schedule is currently active and will trigger jobs"
|
|
},
|
|
"on_failure": {
|
|
"type": "string",
|
|
"nullable": true,
|
|
"description": "Path to a script or flow to run when the scheduled job fails"
|
|
},
|
|
"on_failure_times": {
|
|
"type": "number",
|
|
"nullable": true,
|
|
"description": "Number of consecutive failures before the on_failure handler is triggered (default 1)"
|
|
},
|
|
"on_failure_exact": {
|
|
"type": "boolean",
|
|
"nullable": true,
|
|
"description": "If true, trigger on_failure handler only on exactly N failures, not on every failure after N"
|
|
},
|
|
"on_failure_extra_args": {
|
|
"nullable": true,
|
|
"$ref": "#/components/schemas/ScriptArgs"
|
|
},
|
|
"on_recovery": {
|
|
"type": "string",
|
|
"nullable": true,
|
|
"description": "Path to a script or flow to run when the schedule recovers after failures"
|
|
},
|
|
"on_recovery_times": {
|
|
"type": "number",
|
|
"nullable": true,
|
|
"description": "Number of consecutive successes before the on_recovery handler is triggered (default 1)"
|
|
},
|
|
"on_recovery_extra_args": {
|
|
"nullable": true,
|
|
"$ref": "#/components/schemas/ScriptArgs"
|
|
},
|
|
"on_success": {
|
|
"type": "string",
|
|
"nullable": true,
|
|
"description": "Path to a script or flow to run after each successful execution"
|
|
},
|
|
"on_success_extra_args": {
|
|
"nullable": true,
|
|
"$ref": "#/components/schemas/ScriptArgs"
|
|
},
|
|
"ws_error_handler_muted": {
|
|
"type": "boolean",
|
|
"description": "If true, the workspace-level error handler will not be triggered for this schedule's failures"
|
|
},
|
|
"retry": {
|
|
"nullable": true,
|
|
"$ref": "#/components/schemas/Retry"
|
|
},
|
|
"no_flow_overlap": {
|
|
"type": "boolean",
|
|
"description": "If true, skip this schedule's execution if the previous run is still in progress (prevents concurrent runs)"
|
|
},
|
|
"summary": {
|
|
"type": "string",
|
|
"nullable": true,
|
|
"description": "Short summary describing the purpose of this schedule"
|
|
},
|
|
"description": {
|
|
"type": "string",
|
|
"nullable": true,
|
|
"description": "Detailed description of what this schedule does"
|
|
},
|
|
"tag": {
|
|
"type": "string",
|
|
"nullable": true,
|
|
"description": "Worker tag to route jobs to specific worker groups"
|
|
},
|
|
"paused_until": {
|
|
"type": "string",
|
|
"nullable": true,
|
|
"format": "date-time",
|
|
"description": "ISO 8601 datetime until which the schedule is paused. Schedule resumes automatically after this time"
|
|
},
|
|
"cron_version": {
|
|
"type": "string",
|
|
"nullable": true,
|
|
"description": "Cron parser version. Use 'v2' for extended syntax with additional features"
|
|
},
|
|
"dynamic_skip": {
|
|
"type": "string",
|
|
"nullable": true,
|
|
"description": "Path to a script that validates scheduled datetimes. Receives scheduled_for datetime and returns boolean to skip (true) or run (false)"
|
|
},
|
|
"permissioned_as": {
|
|
"type": "string",
|
|
"description": "The user or group this schedule runs as. Used during deployment to preserve the original schedule owner."
|
|
},
|
|
"preserve_permissioned_as": {
|
|
"type": "boolean",
|
|
"description": "When true and the caller is a member of the 'wm_deployers' group, preserves the original permissioned_as value instead of overwriting it."
|
|
},
|
|
"labels": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"path",
|
|
"schedule",
|
|
"timezone",
|
|
"script_path",
|
|
"is_flow",
|
|
"args"
|
|
]
|
|
},
|
|
"EditSchedule": {
|
|
"type": "object",
|
|
"properties": {
|
|
"schedule": {
|
|
"type": "string",
|
|
"description": "Cron expression with 6 fields (seconds, minutes, hours, day of month, month, day of week). Example '0 0 12 * * *' for daily at noon"
|
|
},
|
|
"timezone": {
|
|
"type": "string",
|
|
"description": "IANA timezone for the schedule (e.g., 'UTC', 'Europe/Paris', 'America/New_York')"
|
|
},
|
|
"args": {
|
|
"nullable": true,
|
|
"$ref": "#/components/schemas/ScriptArgs"
|
|
},
|
|
"on_failure": {
|
|
"type": "string",
|
|
"nullable": true,
|
|
"description": "Path to a script or flow to run when the scheduled job fails"
|
|
},
|
|
"on_failure_times": {
|
|
"type": "number",
|
|
"nullable": true,
|
|
"description": "Number of consecutive failures before the on_failure handler is triggered (default 1)"
|
|
},
|
|
"on_failure_exact": {
|
|
"type": "boolean",
|
|
"nullable": true,
|
|
"description": "If true, trigger on_failure handler only on exactly N failures, not on every failure after N"
|
|
},
|
|
"on_failure_extra_args": {
|
|
"nullable": true,
|
|
"$ref": "#/components/schemas/ScriptArgs"
|
|
},
|
|
"on_recovery": {
|
|
"type": "string",
|
|
"nullable": true,
|
|
"description": "Path to a script or flow to run when the schedule recovers after failures"
|
|
},
|
|
"on_recovery_times": {
|
|
"type": "number",
|
|
"nullable": true,
|
|
"description": "Number of consecutive successes before the on_recovery handler is triggered (default 1)"
|
|
},
|
|
"on_recovery_extra_args": {
|
|
"nullable": true,
|
|
"$ref": "#/components/schemas/ScriptArgs"
|
|
},
|
|
"on_success": {
|
|
"type": "string",
|
|
"nullable": true,
|
|
"description": "Path to a script or flow to run after each successful execution"
|
|
},
|
|
"on_success_extra_args": {
|
|
"nullable": true,
|
|
"$ref": "#/components/schemas/ScriptArgs"
|
|
},
|
|
"ws_error_handler_muted": {
|
|
"type": "boolean",
|
|
"description": "If true, the workspace-level error handler will not be triggered for this schedule's failures"
|
|
},
|
|
"retry": {
|
|
"nullable": true,
|
|
"$ref": "#/components/schemas/Retry"
|
|
},
|
|
"no_flow_overlap": {
|
|
"type": "boolean",
|
|
"description": "If true, skip this schedule's execution if the previous run is still in progress (prevents concurrent runs)"
|
|
},
|
|
"summary": {
|
|
"type": "string",
|
|
"nullable": true,
|
|
"description": "Short summary describing the purpose of this schedule"
|
|
},
|
|
"description": {
|
|
"type": "string",
|
|
"nullable": true,
|
|
"description": "Detailed description of what this schedule does"
|
|
},
|
|
"tag": {
|
|
"type": "string",
|
|
"nullable": true,
|
|
"description": "Worker tag to route jobs to specific worker groups"
|
|
},
|
|
"paused_until": {
|
|
"type": "string",
|
|
"nullable": true,
|
|
"format": "date-time",
|
|
"description": "ISO 8601 datetime until which the schedule is paused. Schedule resumes automatically after this time"
|
|
},
|
|
"cron_version": {
|
|
"type": "string",
|
|
"nullable": true,
|
|
"description": "Cron parser version. Use 'v2' for extended syntax with additional features"
|
|
},
|
|
"dynamic_skip": {
|
|
"type": "string",
|
|
"nullable": true,
|
|
"description": "Path to a script that validates scheduled datetimes. Receives scheduled_for datetime and returns boolean to skip (true) or run (false)"
|
|
},
|
|
"permissioned_as": {
|
|
"type": "string",
|
|
"nullable": true,
|
|
"description": "The user or group this schedule runs as (e.g., 'u/admin' or 'g/mygroup'). Only admins and wm_deployers can set this via preserve_permissioned_as."
|
|
},
|
|
"preserve_permissioned_as": {
|
|
"type": "boolean",
|
|
"nullable": true,
|
|
"description": "If true and user is admin/wm_deployers, preserve the provided permissioned_as instead of using the deploying user's identity"
|
|
},
|
|
"labels": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"schedule",
|
|
"timezone",
|
|
"args"
|
|
]
|
|
},
|
|
"JobTriggerKind": {
|
|
"description": "job trigger kind (schedule, http, websocket...)",
|
|
"type": "string",
|
|
"enum": [
|
|
"webhook",
|
|
"default_email",
|
|
"email",
|
|
"schedule",
|
|
"http",
|
|
"websocket",
|
|
"postgres",
|
|
"kafka",
|
|
"nats",
|
|
"mqtt",
|
|
"sqs",
|
|
"gcp",
|
|
"google"
|
|
]
|
|
},
|
|
"TriggerMode": {
|
|
"description": "job trigger mode",
|
|
"type": "string",
|
|
"enum": [
|
|
"enabled",
|
|
"disabled",
|
|
"suspended"
|
|
]
|
|
},
|
|
"TriggerExtraProperty": {
|
|
"type": "object",
|
|
"properties": {
|
|
"path": {
|
|
"type": "string",
|
|
"description": "The unique path identifier for this trigger"
|
|
},
|
|
"script_path": {
|
|
"type": "string",
|
|
"description": "Path to the script or flow to execute when triggered"
|
|
},
|
|
"permissioned_as": {
|
|
"type": "string",
|
|
"description": "The user or group this trigger runs as (permissioned_as)"
|
|
},
|
|
"extra_perms": {
|
|
"type": "object",
|
|
"description": "Additional permissions for this trigger",
|
|
"additionalProperties": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"workspace_id": {
|
|
"type": "string",
|
|
"description": "The workspace this trigger belongs to"
|
|
},
|
|
"edited_by": {
|
|
"type": "string",
|
|
"description": "Username of the last person who edited this trigger"
|
|
},
|
|
"edited_at": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"description": "Timestamp of the last edit"
|
|
},
|
|
"is_flow": {
|
|
"type": "boolean",
|
|
"description": "True if script_path points to a flow, false if it points to a script"
|
|
},
|
|
"mode": {
|
|
"$ref": "#/components/schemas/TriggerMode",
|
|
"description": "Trigger mode (enabled/disabled)"
|
|
},
|
|
"labels": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"default": []
|
|
}
|
|
},
|
|
"required": [
|
|
"path",
|
|
"script_path",
|
|
"permissioned_as",
|
|
"extra_perms",
|
|
"workspace_id",
|
|
"edited_by",
|
|
"edited_at",
|
|
"is_flow",
|
|
"mode"
|
|
]
|
|
},
|
|
"AuthenticationMethod": {
|
|
"type": "string",
|
|
"enum": [
|
|
"none",
|
|
"windmill",
|
|
"api_key",
|
|
"basic_http",
|
|
"custom_script",
|
|
"signature"
|
|
]
|
|
},
|
|
"RunnableKind": {
|
|
"type": "string",
|
|
"enum": [
|
|
"script",
|
|
"flow"
|
|
]
|
|
},
|
|
"OpenapiSpecFormat": {
|
|
"type": "string",
|
|
"enum": [
|
|
"yaml",
|
|
"json"
|
|
]
|
|
},
|
|
"OpenapiHttpRouteFilters": {
|
|
"type": "object",
|
|
"properties": {
|
|
"folder_regex": {
|
|
"type": "string"
|
|
},
|
|
"path_regex": {
|
|
"type": "string"
|
|
},
|
|
"route_path_regex": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"folder_regex",
|
|
"path_regex",
|
|
"route_path_regex"
|
|
]
|
|
},
|
|
"WebhookFilters": {
|
|
"type": "object",
|
|
"properties": {
|
|
"user_or_folder_regex": {
|
|
"type": "string",
|
|
"enum": [
|
|
"*",
|
|
"u",
|
|
"f"
|
|
]
|
|
},
|
|
"user_or_folder_regex_value": {
|
|
"type": "string"
|
|
},
|
|
"path": {
|
|
"type": "string"
|
|
},
|
|
"runnable_kind": {
|
|
"$ref": "#/components/schemas/RunnableKind"
|
|
}
|
|
},
|
|
"required": [
|
|
"user_or_folder_regex",
|
|
"user_or_folder_regex_value",
|
|
"path",
|
|
"runnable_kind"
|
|
]
|
|
},
|
|
"OpenapiV3Info": {
|
|
"type": "object",
|
|
"properties": {
|
|
"title": {
|
|
"type": "string"
|
|
},
|
|
"version": {
|
|
"type": "string"
|
|
},
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"terms_of_service": {
|
|
"type": "string"
|
|
},
|
|
"contact": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"url": {
|
|
"type": "string"
|
|
},
|
|
"email": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"license": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"identifier": {
|
|
"type": "string"
|
|
},
|
|
"url": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"name"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"title",
|
|
"version"
|
|
]
|
|
},
|
|
"GenerateOpenapiSpec": {
|
|
"type": "object",
|
|
"properties": {
|
|
"info": {
|
|
"$ref": "#/components/schemas/OpenapiV3Info"
|
|
},
|
|
"url": {
|
|
"type": "string"
|
|
},
|
|
"openapi_spec_format": {
|
|
"$ref": "#/components/schemas/OpenapiSpecFormat"
|
|
},
|
|
"http_route_filters": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/OpenapiHttpRouteFilters"
|
|
}
|
|
},
|
|
"webhook_filters": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/WebhookFilters"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"HttpMethod": {
|
|
"type": "string",
|
|
"enum": [
|
|
"get",
|
|
"post",
|
|
"put",
|
|
"delete",
|
|
"patch"
|
|
]
|
|
},
|
|
"HttpRequestType": {
|
|
"type": "string",
|
|
"enum": [
|
|
"sync",
|
|
"async",
|
|
"sync_sse"
|
|
]
|
|
},
|
|
"HttpTrigger": {
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/TriggerExtraProperty"
|
|
}
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"route_path": {
|
|
"type": "string",
|
|
"description": "The URL route path that will trigger this endpoint (e.g., 'api/myendpoint'). Must NOT start with a /."
|
|
},
|
|
"static_asset_config": {
|
|
"type": "object",
|
|
"nullable": true,
|
|
"description": "Configuration for serving static assets (s3 bucket, storage path, filename)",
|
|
"properties": {
|
|
"s3": {
|
|
"type": "string",
|
|
"description": "S3 bucket path for static assets"
|
|
},
|
|
"storage": {
|
|
"type": "string",
|
|
"description": "Storage path for static assets"
|
|
},
|
|
"filename": {
|
|
"type": "string",
|
|
"description": "Filename for the static asset"
|
|
}
|
|
},
|
|
"required": [
|
|
"s3"
|
|
]
|
|
},
|
|
"http_method": {
|
|
"$ref": "#/components/schemas/HttpMethod",
|
|
"description": "HTTP method (get, post, put, delete, patch) that triggers this endpoint"
|
|
},
|
|
"authentication_resource_path": {
|
|
"type": "string",
|
|
"nullable": true,
|
|
"description": "Path to the resource containing authentication configuration (for api_key, basic_http, custom_script, signature methods)"
|
|
},
|
|
"summary": {
|
|
"type": "string",
|
|
"nullable": true,
|
|
"description": "Short summary describing the purpose of this trigger"
|
|
},
|
|
"description": {
|
|
"type": "string",
|
|
"nullable": true,
|
|
"description": "Detailed description of what this trigger does"
|
|
},
|
|
"request_type": {
|
|
"$ref": "#/components/schemas/HttpRequestType",
|
|
"description": "How the request is handled - 'sync' waits for result, 'async' returns job ID immediately, 'sync_sse' streams results via Server-Sent Events"
|
|
},
|
|
"authentication_method": {
|
|
"$ref": "#/components/schemas/AuthenticationMethod",
|
|
"description": "How requests are authenticated - 'none' (public), 'windmill' (Windmill token), 'api_key', 'basic_http', 'custom_script', 'signature'"
|
|
},
|
|
"is_static_website": {
|
|
"type": "boolean",
|
|
"description": "If true, serves static files from S3/storage instead of running a script"
|
|
},
|
|
"workspaced_route": {
|
|
"type": "boolean",
|
|
"description": "If true, the route includes the workspace ID in the path"
|
|
},
|
|
"wrap_body": {
|
|
"type": "boolean",
|
|
"description": "If true, wraps the request body in a 'body' parameter"
|
|
},
|
|
"raw_string": {
|
|
"type": "boolean",
|
|
"description": "If true, passes the request body as a raw string instead of parsing as JSON"
|
|
},
|
|
"error_handler_path": {
|
|
"type": "string",
|
|
"description": "Path to a script or flow to run when the triggered job fails"
|
|
},
|
|
"error_handler_args": {
|
|
"$ref": "#/components/schemas/ScriptArgs",
|
|
"description": "Arguments to pass to the error handler"
|
|
},
|
|
"retry": {
|
|
"$ref": "#/components/schemas/Retry",
|
|
"description": "Retry configuration for failed executions"
|
|
}
|
|
},
|
|
"required": [
|
|
"route_path",
|
|
"request_type",
|
|
"authentication_method",
|
|
"http_method",
|
|
"is_static_website",
|
|
"workspaced_route",
|
|
"wrap_body",
|
|
"raw_string"
|
|
]
|
|
},
|
|
"NewHttpTrigger": {
|
|
"type": "object",
|
|
"properties": {
|
|
"path": {
|
|
"type": "string",
|
|
"description": "The unique path identifier for this trigger"
|
|
},
|
|
"script_path": {
|
|
"type": "string",
|
|
"description": "Path to the script or flow to execute when triggered"
|
|
},
|
|
"route_path": {
|
|
"type": "string",
|
|
"description": "The URL route path that will trigger this endpoint (e.g., 'api/myendpoint'). Must NOT start with a /."
|
|
},
|
|
"workspaced_route": {
|
|
"type": "boolean",
|
|
"description": "If true, the route includes the workspace ID in the path"
|
|
},
|
|
"summary": {
|
|
"type": "string",
|
|
"nullable": true,
|
|
"description": "Short summary describing the purpose of this trigger"
|
|
},
|
|
"description": {
|
|
"type": "string",
|
|
"nullable": true,
|
|
"description": "Detailed description of what this trigger does"
|
|
},
|
|
"static_asset_config": {
|
|
"type": "object",
|
|
"nullable": true,
|
|
"description": "Configuration for serving static assets (s3 bucket, storage path, filename)",
|
|
"properties": {
|
|
"s3": {
|
|
"type": "string",
|
|
"description": "S3 bucket path for static assets"
|
|
},
|
|
"storage": {
|
|
"type": "string",
|
|
"description": "Storage path for static assets"
|
|
},
|
|
"filename": {
|
|
"type": "string",
|
|
"description": "Filename for the static asset"
|
|
}
|
|
},
|
|
"required": [
|
|
"s3"
|
|
]
|
|
},
|
|
"is_flow": {
|
|
"type": "boolean",
|
|
"description": "True if script_path points to a flow, false if it points to a script"
|
|
},
|
|
"http_method": {
|
|
"$ref": "#/components/schemas/HttpMethod",
|
|
"description": "HTTP method (get, post, put, delete, patch) that triggers this endpoint"
|
|
},
|
|
"authentication_resource_path": {
|
|
"type": "string",
|
|
"nullable": true,
|
|
"description": "Path to the resource containing authentication configuration (for api_key, basic_http, custom_script, signature methods)"
|
|
},
|
|
"is_async": {
|
|
"type": "boolean",
|
|
"description": "Deprecated, use request_type instead"
|
|
},
|
|
"request_type": {
|
|
"$ref": "#/components/schemas/HttpRequestType",
|
|
"description": "How the request is handled - 'sync' waits for result, 'async' returns job ID immediately, 'sync_sse' streams results via Server-Sent Events"
|
|
},
|
|
"authentication_method": {
|
|
"$ref": "#/components/schemas/AuthenticationMethod",
|
|
"description": "How requests are authenticated - 'none' (public), 'windmill' (Windmill token), 'api_key', 'basic_http', 'custom_script', 'signature'"
|
|
},
|
|
"is_static_website": {
|
|
"type": "boolean",
|
|
"description": "If true, serves static files from S3/storage instead of running a script"
|
|
},
|
|
"wrap_body": {
|
|
"type": "boolean",
|
|
"description": "If true, wraps the request body in a 'body' parameter"
|
|
},
|
|
"mode": {
|
|
"$ref": "#/components/schemas/TriggerMode"
|
|
},
|
|
"raw_string": {
|
|
"type": "boolean",
|
|
"description": "If true, passes the request body as a raw string instead of parsing as JSON"
|
|
},
|
|
"error_handler_path": {
|
|
"type": "string",
|
|
"description": "Path to a script or flow to run when the triggered job fails"
|
|
},
|
|
"error_handler_args": {
|
|
"$ref": "#/components/schemas/ScriptArgs",
|
|
"description": "Arguments to pass to the error handler"
|
|
},
|
|
"retry": {
|
|
"$ref": "#/components/schemas/Retry",
|
|
"description": "Retry configuration for failed executions"
|
|
},
|
|
"permissioned_as": {
|
|
"type": "string",
|
|
"description": "The user or group this trigger runs as. Used during deployment to preserve the original trigger owner."
|
|
},
|
|
"preserve_permissioned_as": {
|
|
"type": "boolean",
|
|
"description": "When true and the caller is a member of the 'wm_deployers' group, preserves the original permissioned_as value instead of overwriting it."
|
|
},
|
|
"labels": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"path",
|
|
"script_path",
|
|
"route_path",
|
|
"is_flow",
|
|
"authentication_method",
|
|
"http_method",
|
|
"is_static_website"
|
|
]
|
|
},
|
|
"EditHttpTrigger": {
|
|
"type": "object",
|
|
"properties": {
|
|
"path": {
|
|
"type": "string",
|
|
"description": "The unique path identifier for this trigger"
|
|
},
|
|
"script_path": {
|
|
"type": "string",
|
|
"description": "Path to the script or flow to execute when triggered"
|
|
},
|
|
"route_path": {
|
|
"type": "string",
|
|
"description": "The URL route path that will trigger this endpoint (e.g., 'api/myendpoint'). Must NOT start with a /."
|
|
},
|
|
"summary": {
|
|
"type": "string",
|
|
"nullable": true,
|
|
"description": "Short summary describing the purpose of this trigger"
|
|
},
|
|
"description": {
|
|
"type": "string",
|
|
"nullable": true,
|
|
"description": "Detailed description of what this trigger does"
|
|
},
|
|
"workspaced_route": {
|
|
"type": "boolean",
|
|
"description": "If true, the route includes the workspace ID in the path"
|
|
},
|
|
"static_asset_config": {
|
|
"type": "object",
|
|
"nullable": true,
|
|
"description": "Configuration for serving static assets (s3 bucket, storage path, filename)",
|
|
"properties": {
|
|
"s3": {
|
|
"type": "string",
|
|
"description": "S3 bucket path for static assets"
|
|
},
|
|
"storage": {
|
|
"type": "string",
|
|
"description": "Storage path for static assets"
|
|
},
|
|
"filename": {
|
|
"type": "string",
|
|
"description": "Filename for the static asset"
|
|
}
|
|
},
|
|
"required": [
|
|
"s3"
|
|
]
|
|
},
|
|
"authentication_resource_path": {
|
|
"type": "string",
|
|
"nullable": true,
|
|
"description": "Path to the resource containing authentication configuration (for api_key, basic_http, custom_script, signature methods)"
|
|
},
|
|
"is_flow": {
|
|
"type": "boolean",
|
|
"description": "True if script_path points to a flow, false if it points to a script"
|
|
},
|
|
"http_method": {
|
|
"$ref": "#/components/schemas/HttpMethod",
|
|
"description": "HTTP method (get, post, put, delete, patch) that triggers this endpoint"
|
|
},
|
|
"is_async": {
|
|
"type": "boolean",
|
|
"description": "Deprecated, use request_type instead"
|
|
},
|
|
"request_type": {
|
|
"$ref": "#/components/schemas/HttpRequestType",
|
|
"description": "How the request is handled - 'sync' waits for result, 'async' returns job ID immediately, 'sync_sse' streams results via Server-Sent Events"
|
|
},
|
|
"authentication_method": {
|
|
"$ref": "#/components/schemas/AuthenticationMethod",
|
|
"description": "How requests are authenticated - 'none' (public), 'windmill' (Windmill token), 'api_key', 'basic_http', 'custom_script', 'signature'"
|
|
},
|
|
"is_static_website": {
|
|
"type": "boolean",
|
|
"description": "If true, serves static files from S3/storage instead of running a script"
|
|
},
|
|
"wrap_body": {
|
|
"type": "boolean",
|
|
"description": "If true, wraps the request body in a 'body' parameter"
|
|
},
|
|
"raw_string": {
|
|
"type": "boolean",
|
|
"description": "If true, passes the request body as a raw string instead of parsing as JSON"
|
|
},
|
|
"error_handler_path": {
|
|
"type": "string",
|
|
"description": "Path to a script or flow to run when the triggered job fails"
|
|
},
|
|
"error_handler_args": {
|
|
"$ref": "#/components/schemas/ScriptArgs",
|
|
"description": "Arguments to pass to the error handler"
|
|
},
|
|
"retry": {
|
|
"$ref": "#/components/schemas/Retry",
|
|
"description": "Retry configuration for failed executions"
|
|
},
|
|
"permissioned_as": {
|
|
"type": "string",
|
|
"description": "The user or group this trigger runs as. Used during deployment to preserve the original trigger owner."
|
|
},
|
|
"preserve_permissioned_as": {
|
|
"type": "boolean",
|
|
"description": "When true and the caller is a member of the 'wm_deployers' group, preserves the original permissioned_as value instead of overwriting it."
|
|
},
|
|
"labels": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"path",
|
|
"script_path",
|
|
"is_flow",
|
|
"kind",
|
|
"authentication_method",
|
|
"http_method",
|
|
"is_static_website"
|
|
]
|
|
},
|
|
"TriggersCount": {
|
|
"type": "object",
|
|
"properties": {
|
|
"primary_schedule": {
|
|
"type": "object",
|
|
"properties": {
|
|
"schedule": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"schedule_count": {
|
|
"type": "number"
|
|
},
|
|
"http_routes_count": {
|
|
"type": "number"
|
|
},
|
|
"webhook_count": {
|
|
"type": "number"
|
|
},
|
|
"email_count": {
|
|
"type": "number"
|
|
},
|
|
"default_email_count": {
|
|
"type": "number"
|
|
},
|
|
"websocket_count": {
|
|
"type": "number"
|
|
},
|
|
"postgres_count": {
|
|
"type": "number"
|
|
},
|
|
"kafka_count": {
|
|
"type": "number"
|
|
},
|
|
"nats_count": {
|
|
"type": "number"
|
|
},
|
|
"mqtt_count": {
|
|
"type": "number"
|
|
},
|
|
"gcp_count": {
|
|
"type": "number"
|
|
},
|
|
"sqs_count": {
|
|
"type": "number"
|
|
},
|
|
"nextcloud_count": {
|
|
"type": "number"
|
|
},
|
|
"google_count": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
},
|
|
"WebsocketHeartbeat": {
|
|
"type": "object",
|
|
"properties": {
|
|
"interval_secs": {
|
|
"type": "integer",
|
|
"minimum": 1,
|
|
"description": "Interval in seconds between heartbeat messages"
|
|
},
|
|
"message": {
|
|
"type": "string",
|
|
"description": "Message to send as heartbeat. Use {{state}} as a placeholder for a value extracted from incoming messages (see state_field)."
|
|
},
|
|
"state_field": {
|
|
"type": "string",
|
|
"description": "Optional. Top-level JSON field to extract from incoming messages. The extracted value replaces {{state}} in the heartbeat message."
|
|
}
|
|
},
|
|
"required": [
|
|
"interval_secs",
|
|
"message"
|
|
]
|
|
},
|
|
"WebsocketTrigger": {
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/TriggerExtraProperty"
|
|
}
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"url": {
|
|
"type": "string",
|
|
"description": "The WebSocket URL to connect to (can be a static URL or computed by a runnable)"
|
|
},
|
|
"server_id": {
|
|
"type": "string",
|
|
"description": "ID of the server currently handling this trigger (internal)"
|
|
},
|
|
"last_server_ping": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"description": "Timestamp of last server heartbeat (internal)"
|
|
},
|
|
"error": {
|
|
"type": "string",
|
|
"description": "Last error message if the trigger failed"
|
|
},
|
|
"filters": {
|
|
"type": "array",
|
|
"description": "Array of key-value filters to match incoming messages (only matching messages trigger the script)",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"key": {
|
|
"type": "string"
|
|
},
|
|
"value": {}
|
|
},
|
|
"required": [
|
|
"key",
|
|
"value"
|
|
]
|
|
}
|
|
},
|
|
"filter_logic": {
|
|
"type": "string",
|
|
"enum": [
|
|
"and",
|
|
"or"
|
|
],
|
|
"default": "and",
|
|
"description": "Logic to apply when evaluating filters. 'and' requires all filters to match, 'or' requires any filter to match."
|
|
},
|
|
"initial_messages": {
|
|
"type": "array",
|
|
"nullable": true,
|
|
"description": "Messages to send immediately after connecting (can be raw strings or computed by runnables)",
|
|
"items": {
|
|
"$ref": "#/components/schemas/WebsocketTriggerInitialMessage"
|
|
}
|
|
},
|
|
"url_runnable_args": {
|
|
"description": "Arguments to pass to the script/flow that computes the WebSocket URL",
|
|
"$ref": "#/components/schemas/ScriptArgs",
|
|
"nullable": true
|
|
},
|
|
"can_return_message": {
|
|
"type": "boolean",
|
|
"description": "If true, the script can return a message to send back through the WebSocket"
|
|
},
|
|
"can_return_error_result": {
|
|
"type": "boolean",
|
|
"description": "If true, error results are sent back through the WebSocket"
|
|
},
|
|
"heartbeat": {
|
|
"$ref": "#/components/schemas/WebsocketHeartbeat",
|
|
"nullable": true,
|
|
"description": "Optional periodic heartbeat message configuration"
|
|
},
|
|
"error_handler_path": {
|
|
"type": "string",
|
|
"description": "Path to a script or flow to run when the triggered job fails"
|
|
},
|
|
"error_handler_args": {
|
|
"description": "Arguments to pass to the error handler",
|
|
"$ref": "#/components/schemas/ScriptArgs"
|
|
},
|
|
"retry": {
|
|
"description": "Retry configuration for failed executions",
|
|
"$ref": "#/components/schemas/Retry"
|
|
}
|
|
},
|
|
"required": [
|
|
"url",
|
|
"filters",
|
|
"can_return_message",
|
|
"can_return_error_result"
|
|
]
|
|
},
|
|
"NewWebsocketTrigger": {
|
|
"type": "object",
|
|
"properties": {
|
|
"path": {
|
|
"type": "string",
|
|
"description": "The unique path identifier for this trigger"
|
|
},
|
|
"script_path": {
|
|
"type": "string",
|
|
"description": "Path to the script or flow to execute when a message is received"
|
|
},
|
|
"is_flow": {
|
|
"type": "boolean",
|
|
"description": "True if script_path points to a flow, false if it points to a script"
|
|
},
|
|
"url": {
|
|
"type": "string",
|
|
"description": "The WebSocket URL to connect to (can be a static URL or computed by a runnable)"
|
|
},
|
|
"mode": {
|
|
"$ref": "#/components/schemas/TriggerMode"
|
|
},
|
|
"filters": {
|
|
"type": "array",
|
|
"description": "Array of key-value filters to match incoming messages (only matching messages trigger the script)",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"key": {
|
|
"type": "string"
|
|
},
|
|
"value": {}
|
|
},
|
|
"required": [
|
|
"key",
|
|
"value"
|
|
]
|
|
}
|
|
},
|
|
"filter_logic": {
|
|
"type": "string",
|
|
"enum": [
|
|
"and",
|
|
"or"
|
|
],
|
|
"default": "and",
|
|
"description": "Logic to apply when evaluating filters. 'and' requires all filters to match, 'or' requires any filter to match."
|
|
},
|
|
"initial_messages": {
|
|
"type": "array",
|
|
"nullable": true,
|
|
"description": "Messages to send immediately after connecting (can be raw strings or computed by runnables)",
|
|
"items": {
|
|
"$ref": "#/components/schemas/WebsocketTriggerInitialMessage"
|
|
}
|
|
},
|
|
"url_runnable_args": {
|
|
"description": "Arguments to pass to the script/flow that computes the WebSocket URL",
|
|
"nullable": true,
|
|
"$ref": "#/components/schemas/ScriptArgs"
|
|
},
|
|
"can_return_message": {
|
|
"type": "boolean",
|
|
"description": "If true, the script can return a message to send back through the WebSocket"
|
|
},
|
|
"can_return_error_result": {
|
|
"type": "boolean",
|
|
"description": "If true, error results are sent back through the WebSocket"
|
|
},
|
|
"heartbeat": {
|
|
"$ref": "#/components/schemas/WebsocketHeartbeat",
|
|
"nullable": true,
|
|
"description": "Optional periodic heartbeat message configuration"
|
|
},
|
|
"error_handler_path": {
|
|
"type": "string",
|
|
"description": "Path to a script or flow to run when the triggered job fails"
|
|
},
|
|
"error_handler_args": {
|
|
"description": "Arguments to pass to the error handler",
|
|
"$ref": "#/components/schemas/ScriptArgs"
|
|
},
|
|
"retry": {
|
|
"description": "Retry configuration for failed executions",
|
|
"$ref": "#/components/schemas/Retry"
|
|
},
|
|
"permissioned_as": {
|
|
"type": "string",
|
|
"description": "The user or group this trigger runs as. Used during deployment to preserve the original trigger owner."
|
|
},
|
|
"preserve_permissioned_as": {
|
|
"type": "boolean",
|
|
"description": "When true and the caller is a member of the 'wm_deployers' group, preserves the original permissioned_as value instead of overwriting it."
|
|
},
|
|
"labels": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"path",
|
|
"script_path",
|
|
"url",
|
|
"is_flow",
|
|
"filters",
|
|
"can_return_message",
|
|
"can_return_error_result"
|
|
]
|
|
},
|
|
"EditWebsocketTrigger": {
|
|
"type": "object",
|
|
"properties": {
|
|
"url": {
|
|
"type": "string",
|
|
"description": "The WebSocket URL to connect to (can be a static URL or computed by a runnable)"
|
|
},
|
|
"path": {
|
|
"type": "string",
|
|
"description": "The unique path identifier for this trigger"
|
|
},
|
|
"script_path": {
|
|
"type": "string",
|
|
"description": "Path to the script or flow to execute when a message is received"
|
|
},
|
|
"is_flow": {
|
|
"type": "boolean",
|
|
"description": "True if script_path points to a flow, false if it points to a script"
|
|
},
|
|
"filters": {
|
|
"type": "array",
|
|
"description": "Array of key-value filters to match incoming messages (only matching messages trigger the script)",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"key": {
|
|
"type": "string"
|
|
},
|
|
"value": {}
|
|
},
|
|
"required": [
|
|
"key",
|
|
"value"
|
|
]
|
|
}
|
|
},
|
|
"filter_logic": {
|
|
"type": "string",
|
|
"enum": [
|
|
"and",
|
|
"or"
|
|
],
|
|
"default": "and",
|
|
"description": "Logic to apply when evaluating filters. 'and' requires all filters to match, 'or' requires any filter to match."
|
|
},
|
|
"initial_messages": {
|
|
"type": "array",
|
|
"nullable": true,
|
|
"description": "Messages to send immediately after connecting (can be raw strings or computed by runnables)",
|
|
"items": {
|
|
"$ref": "#/components/schemas/WebsocketTriggerInitialMessage"
|
|
}
|
|
},
|
|
"url_runnable_args": {
|
|
"description": "Arguments to pass to the script/flow that computes the WebSocket URL",
|
|
"nullable": true,
|
|
"$ref": "#/components/schemas/ScriptArgs"
|
|
},
|
|
"can_return_message": {
|
|
"type": "boolean",
|
|
"description": "If true, the script can return a message to send back through the WebSocket"
|
|
},
|
|
"can_return_error_result": {
|
|
"type": "boolean",
|
|
"description": "If true, error results are sent back through the WebSocket"
|
|
},
|
|
"heartbeat": {
|
|
"$ref": "#/components/schemas/WebsocketHeartbeat",
|
|
"nullable": true,
|
|
"description": "Optional periodic heartbeat message configuration"
|
|
},
|
|
"error_handler_path": {
|
|
"type": "string",
|
|
"description": "Path to a script or flow to run when the triggered job fails"
|
|
},
|
|
"error_handler_args": {
|
|
"description": "Arguments to pass to the error handler",
|
|
"$ref": "#/components/schemas/ScriptArgs"
|
|
},
|
|
"retry": {
|
|
"description": "Retry configuration for failed executions",
|
|
"$ref": "#/components/schemas/Retry"
|
|
},
|
|
"permissioned_as": {
|
|
"type": "string",
|
|
"description": "The user or group this trigger runs as. Used during deployment to preserve the original trigger owner."
|
|
},
|
|
"preserve_permissioned_as": {
|
|
"type": "boolean",
|
|
"description": "When true and the caller is a member of the 'wm_deployers' group, preserves the original permissioned_as value instead of overwriting it."
|
|
},
|
|
"labels": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"path",
|
|
"script_path",
|
|
"url",
|
|
"is_flow",
|
|
"filters",
|
|
"can_return_message",
|
|
"can_return_error_result"
|
|
]
|
|
},
|
|
"WebsocketTriggerInitialMessage": {
|
|
"anyOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"raw_message": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"raw_message"
|
|
]
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"runnable_result": {
|
|
"type": "object",
|
|
"properties": {
|
|
"path": {
|
|
"type": "string"
|
|
},
|
|
"args": {
|
|
"$ref": "#/components/schemas/ScriptArgs"
|
|
},
|
|
"is_flow": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"required": [
|
|
"path",
|
|
"args",
|
|
"is_flow"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"runnable_result"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"MqttQoS": {
|
|
"type": "string",
|
|
"enum": [
|
|
"qos0",
|
|
"qos1",
|
|
"qos2"
|
|
]
|
|
},
|
|
"MqttV3Config": {
|
|
"type": "object",
|
|
"properties": {
|
|
"clean_session": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"MqttV5Config": {
|
|
"type": "object",
|
|
"properties": {
|
|
"clean_start": {
|
|
"type": "boolean"
|
|
},
|
|
"topic_alias_maximum": {
|
|
"type": "number"
|
|
},
|
|
"session_expiry_interval": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
},
|
|
"MqttSubscribeTopic": {
|
|
"type": "object",
|
|
"properties": {
|
|
"qos": {
|
|
"$ref": "#/components/schemas/MqttQoS"
|
|
},
|
|
"topic": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"qos",
|
|
"topic"
|
|
]
|
|
},
|
|
"MqttClientVersion": {
|
|
"type": "string",
|
|
"enum": [
|
|
"v3",
|
|
"v5"
|
|
]
|
|
},
|
|
"MqttTrigger": {
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/TriggerExtraProperty"
|
|
}
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"mqtt_resource_path": {
|
|
"type": "string",
|
|
"description": "Path to the MQTT resource containing broker connection configuration"
|
|
},
|
|
"subscribe_topics": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/MqttSubscribeTopic"
|
|
},
|
|
"description": "Array of MQTT topics to subscribe to, each with topic name and QoS level"
|
|
},
|
|
"v3_config": {
|
|
"$ref": "#/components/schemas/MqttV3Config",
|
|
"nullable": true,
|
|
"description": "MQTT v3 specific configuration (clean_session)"
|
|
},
|
|
"v5_config": {
|
|
"$ref": "#/components/schemas/MqttV5Config",
|
|
"nullable": true,
|
|
"description": "MQTT v5 specific configuration (clean_start, topic_alias_maximum, session_expiry_interval)"
|
|
},
|
|
"client_id": {
|
|
"type": "string",
|
|
"nullable": true,
|
|
"description": "MQTT client ID for this connection"
|
|
},
|
|
"client_version": {
|
|
"$ref": "#/components/schemas/MqttClientVersion",
|
|
"nullable": true,
|
|
"description": "MQTT protocol version ('v3' or 'v5')"
|
|
},
|
|
"server_id": {
|
|
"type": "string",
|
|
"description": "ID of the server currently handling this trigger (internal)"
|
|
},
|
|
"last_server_ping": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"description": "Timestamp of last server heartbeat (internal)"
|
|
},
|
|
"error": {
|
|
"type": "string",
|
|
"description": "Last error message if the trigger failed"
|
|
},
|
|
"error_handler_path": {
|
|
"type": "string",
|
|
"description": "Path to a script or flow to run when the triggered job fails"
|
|
},
|
|
"error_handler_args": {
|
|
"$ref": "#/components/schemas/ScriptArgs",
|
|
"description": "Arguments to pass to the error handler"
|
|
},
|
|
"retry": {
|
|
"$ref": "#/components/schemas/Retry",
|
|
"description": "Retry configuration for failed executions"
|
|
}
|
|
},
|
|
"required": [
|
|
"subscribe_topics",
|
|
"mqtt_resource_path"
|
|
]
|
|
},
|
|
"NewMqttTrigger": {
|
|
"type": "object",
|
|
"properties": {
|
|
"mqtt_resource_path": {
|
|
"type": "string",
|
|
"description": "Path to the MQTT resource containing broker connection configuration"
|
|
},
|
|
"subscribe_topics": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/MqttSubscribeTopic"
|
|
},
|
|
"description": "Array of MQTT topics to subscribe to, each with topic name and QoS level"
|
|
},
|
|
"client_id": {
|
|
"type": "string",
|
|
"nullable": true,
|
|
"description": "MQTT client ID for this connection"
|
|
},
|
|
"v3_config": {
|
|
"nullable": true,
|
|
"$ref": "#/components/schemas/MqttV3Config",
|
|
"description": "MQTT v3 specific configuration (clean_session)"
|
|
},
|
|
"v5_config": {
|
|
"nullable": true,
|
|
"$ref": "#/components/schemas/MqttV5Config",
|
|
"description": "MQTT v5 specific configuration (clean_start, topic_alias_maximum, session_expiry_interval)"
|
|
},
|
|
"client_version": {
|
|
"nullable": true,
|
|
"$ref": "#/components/schemas/MqttClientVersion",
|
|
"description": "MQTT protocol version ('v3' or 'v5')"
|
|
},
|
|
"path": {
|
|
"type": "string",
|
|
"description": "The unique path identifier for this trigger"
|
|
},
|
|
"script_path": {
|
|
"type": "string",
|
|
"description": "Path to the script or flow to execute when a message is received"
|
|
},
|
|
"is_flow": {
|
|
"type": "boolean",
|
|
"description": "True if script_path points to a flow, false if it points to a script"
|
|
},
|
|
"mode": {
|
|
"$ref": "#/components/schemas/TriggerMode"
|
|
},
|
|
"error_handler_path": {
|
|
"type": "string",
|
|
"description": "Path to a script or flow to run when the triggered job fails"
|
|
},
|
|
"error_handler_args": {
|
|
"$ref": "#/components/schemas/ScriptArgs",
|
|
"description": "Arguments to pass to the error handler"
|
|
},
|
|
"retry": {
|
|
"$ref": "#/components/schemas/Retry",
|
|
"description": "Retry configuration for failed executions"
|
|
},
|
|
"permissioned_as": {
|
|
"type": "string",
|
|
"description": "The user or group this trigger runs as. Used during deployment to preserve the original trigger owner."
|
|
},
|
|
"preserve_permissioned_as": {
|
|
"type": "boolean",
|
|
"description": "When true and the caller is a member of the 'wm_deployers' group, preserves the original permissioned_as value instead of overwriting it."
|
|
},
|
|
"labels": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"path",
|
|
"script_path",
|
|
"is_flow",
|
|
"subscribe_topics",
|
|
"mqtt_resource_path"
|
|
]
|
|
},
|
|
"EditMqttTrigger": {
|
|
"type": "object",
|
|
"properties": {
|
|
"mqtt_resource_path": {
|
|
"type": "string",
|
|
"description": "Path to the MQTT resource containing broker connection configuration"
|
|
},
|
|
"subscribe_topics": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/MqttSubscribeTopic"
|
|
},
|
|
"description": "Array of MQTT topics to subscribe to, each with topic name and QoS level"
|
|
},
|
|
"client_id": {
|
|
"type": "string",
|
|
"nullable": true,
|
|
"description": "MQTT client ID for this connection"
|
|
},
|
|
"v3_config": {
|
|
"nullable": true,
|
|
"$ref": "#/components/schemas/MqttV3Config",
|
|
"description": "MQTT v3 specific configuration (clean_session)"
|
|
},
|
|
"v5_config": {
|
|
"nullable": true,
|
|
"$ref": "#/components/schemas/MqttV5Config",
|
|
"description": "MQTT v5 specific configuration (clean_start, topic_alias_maximum, session_expiry_interval)"
|
|
},
|
|
"client_version": {
|
|
"nullable": true,
|
|
"$ref": "#/components/schemas/MqttClientVersion",
|
|
"description": "MQTT protocol version ('v3' or 'v5')"
|
|
},
|
|
"path": {
|
|
"type": "string",
|
|
"description": "The unique path identifier for this trigger"
|
|
},
|
|
"script_path": {
|
|
"type": "string",
|
|
"description": "Path to the script or flow to execute when a message is received"
|
|
},
|
|
"is_flow": {
|
|
"type": "boolean",
|
|
"description": "True if script_path points to a flow, false if it points to a script"
|
|
},
|
|
"mode": {
|
|
"$ref": "#/components/schemas/TriggerMode"
|
|
},
|
|
"error_handler_path": {
|
|
"type": "string",
|
|
"description": "Path to a script or flow to run when the triggered job fails"
|
|
},
|
|
"error_handler_args": {
|
|
"$ref": "#/components/schemas/ScriptArgs",
|
|
"description": "Arguments to pass to the error handler"
|
|
},
|
|
"retry": {
|
|
"$ref": "#/components/schemas/Retry",
|
|
"description": "Retry configuration for failed executions"
|
|
},
|
|
"permissioned_as": {
|
|
"type": "string",
|
|
"description": "The user or group this trigger runs as. Used during deployment to preserve the original trigger owner."
|
|
},
|
|
"preserve_permissioned_as": {
|
|
"type": "boolean",
|
|
"description": "When true and the caller is a member of the 'wm_deployers' group, preserves the original permissioned_as value instead of overwriting it."
|
|
},
|
|
"labels": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"path",
|
|
"script_path",
|
|
"is_flow",
|
|
"enabled",
|
|
"subscribe_topics",
|
|
"mqtt_resource_path"
|
|
]
|
|
},
|
|
"DeliveryType": {
|
|
"type": "string",
|
|
"enum": [
|
|
"push",
|
|
"pull"
|
|
],
|
|
"description": "Delivery mode for messages. 'push' for HTTP push delivery where messages are sent to a webhook endpoint, 'pull' for polling where the trigger actively fetches messages."
|
|
},
|
|
"PushConfig": {
|
|
"type": "object",
|
|
"description": "Configuration for push delivery mode.",
|
|
"properties": {
|
|
"audience": {
|
|
"type": "string",
|
|
"description": "The audience claim for OIDC tokens used in push authentication."
|
|
},
|
|
"authenticate": {
|
|
"type": "boolean",
|
|
"description": "If true, push messages will include OIDC authentication tokens."
|
|
}
|
|
},
|
|
"required": [
|
|
"authenticate",
|
|
"base_endpoint"
|
|
]
|
|
},
|
|
"GcpTrigger": {
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/TriggerExtraProperty"
|
|
}
|
|
],
|
|
"type": "object",
|
|
"description": "A Google Cloud Pub/Sub trigger that executes a script or flow when messages are received.",
|
|
"properties": {
|
|
"gcp_resource_path": {
|
|
"type": "string",
|
|
"description": "Path to the GCP resource containing service account credentials for authentication."
|
|
},
|
|
"topic_id": {
|
|
"type": "string",
|
|
"description": "Google Cloud Pub/Sub topic ID to subscribe to."
|
|
},
|
|
"subscription_id": {
|
|
"type": "string",
|
|
"description": "Google Cloud Pub/Sub subscription ID."
|
|
},
|
|
"server_id": {
|
|
"type": "string",
|
|
"description": "ID of the server currently handling this trigger (internal use)."
|
|
},
|
|
"delivery_type": {
|
|
"$ref": "#/components/schemas/DeliveryType"
|
|
},
|
|
"delivery_config": {
|
|
"$ref": "#/components/schemas/PushConfig",
|
|
"nullable": true
|
|
},
|
|
"subscription_mode": {
|
|
"$ref": "#/components/schemas/SubscriptionMode"
|
|
},
|
|
"last_server_ping": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"description": "Timestamp of last server heartbeat (internal use)."
|
|
},
|
|
"error": {
|
|
"type": "string",
|
|
"description": "Last error message if the trigger failed."
|
|
},
|
|
"error_handler_path": {
|
|
"type": "string",
|
|
"description": "Path to a script or flow to run when the triggered job fails."
|
|
},
|
|
"error_handler_args": {
|
|
"$ref": "#/components/schemas/ScriptArgs",
|
|
"description": "Arguments to pass to the error handler."
|
|
},
|
|
"retry": {
|
|
"$ref": "#/components/schemas/Retry",
|
|
"description": "Retry configuration for failed executions."
|
|
}
|
|
},
|
|
"required": [
|
|
"gcp_resource_path",
|
|
"topic_id",
|
|
"subscription_id",
|
|
"delivery_type",
|
|
"subscription_mode"
|
|
]
|
|
},
|
|
"SubscriptionMode": {
|
|
"type": "string",
|
|
"enum": [
|
|
"existing",
|
|
"create_update"
|
|
],
|
|
"description": "The mode of subscription. 'existing' means using an existing GCP subscription, while 'create_update' involves creating or updating a new subscription."
|
|
},
|
|
"GcpTriggerData": {
|
|
"type": "object",
|
|
"description": "Data for creating or updating a Google Cloud Pub/Sub trigger.",
|
|
"properties": {
|
|
"gcp_resource_path": {
|
|
"type": "string",
|
|
"description": "Path to the GCP resource containing service account credentials for authentication."
|
|
},
|
|
"subscription_mode": {
|
|
"$ref": "#/components/schemas/SubscriptionMode"
|
|
},
|
|
"topic_id": {
|
|
"type": "string",
|
|
"description": "Google Cloud Pub/Sub topic ID to subscribe to."
|
|
},
|
|
"subscription_id": {
|
|
"type": "string",
|
|
"description": "Google Cloud Pub/Sub subscription ID."
|
|
},
|
|
"base_endpoint": {
|
|
"type": "string",
|
|
"description": "Base URL for push delivery endpoint."
|
|
},
|
|
"delivery_type": {
|
|
"$ref": "#/components/schemas/DeliveryType"
|
|
},
|
|
"delivery_config": {
|
|
"nullable": true,
|
|
"$ref": "#/components/schemas/PushConfig"
|
|
},
|
|
"path": {
|
|
"type": "string",
|
|
"description": "The unique path identifier for this trigger."
|
|
},
|
|
"script_path": {
|
|
"type": "string",
|
|
"description": "Path to the script or flow to execute when a message is received."
|
|
},
|
|
"is_flow": {
|
|
"type": "boolean",
|
|
"description": "True if script_path points to a flow, false if it points to a script."
|
|
},
|
|
"mode": {
|
|
"$ref": "#/components/schemas/TriggerMode"
|
|
},
|
|
"auto_acknowledge_msg": {
|
|
"type": "boolean",
|
|
"description": "If true, automatically acknowledge messages after processing."
|
|
},
|
|
"ack_deadline": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"minimum": 10,
|
|
"maximum": 600,
|
|
"description": "Time in seconds within which the message must be acknowledged. If not provided, defaults to the subscription's acknowledgment deadline (600 seconds)."
|
|
},
|
|
"error_handler_path": {
|
|
"type": "string",
|
|
"description": "Path to a script or flow to run when the triggered job fails."
|
|
},
|
|
"error_handler_args": {
|
|
"$ref": "#/components/schemas/ScriptArgs",
|
|
"description": "Arguments to pass to the error handler."
|
|
},
|
|
"retry": {
|
|
"$ref": "#/components/schemas/Retry",
|
|
"description": "Retry configuration for failed executions."
|
|
},
|
|
"permissioned_as": {
|
|
"type": "string",
|
|
"description": "The user or group this trigger runs as. Used during deployment to preserve the original trigger owner."
|
|
},
|
|
"preserve_permissioned_as": {
|
|
"type": "boolean",
|
|
"description": "When true and the caller is a member of the 'wm_deployers' group, preserves the original permissioned_as value instead of overwriting it."
|
|
},
|
|
"labels": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"path",
|
|
"script_path",
|
|
"is_flow",
|
|
"gcp_resource_path",
|
|
"topic_id",
|
|
"subscription_mode"
|
|
]
|
|
},
|
|
"GetAllTopicSubscription": {
|
|
"type": "object",
|
|
"properties": {
|
|
"topic_id": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"topic_id"
|
|
]
|
|
},
|
|
"DeleteGcpSubscription": {
|
|
"type": "object",
|
|
"properties": {
|
|
"subscription_id": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"subscription_id"
|
|
]
|
|
},
|
|
"AwsAuthResourceType": {
|
|
"type": "string",
|
|
"enum": [
|
|
"oidc",
|
|
"credentials"
|
|
]
|
|
},
|
|
"SqsTrigger": {
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/TriggerExtraProperty"
|
|
}
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"queue_url": {
|
|
"type": "string",
|
|
"description": "The full URL of the AWS SQS queue to poll for messages"
|
|
},
|
|
"aws_auth_resource_type": {
|
|
"$ref": "#/components/schemas/AwsAuthResourceType",
|
|
"description": "Authentication type - 'credentials' for access key/secret, 'oidc' for OpenID Connect"
|
|
},
|
|
"aws_resource_path": {
|
|
"type": "string",
|
|
"description": "Path to the AWS resource containing credentials or OIDC configuration"
|
|
},
|
|
"message_attributes": {
|
|
"type": "array",
|
|
"nullable": true,
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"description": "Array of SQS message attribute names to include with each message"
|
|
},
|
|
"server_id": {
|
|
"type": "string",
|
|
"description": "ID of the server currently handling this trigger (internal)"
|
|
},
|
|
"last_server_ping": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"description": "Timestamp of last server heartbeat (internal)"
|
|
},
|
|
"error": {
|
|
"type": "string",
|
|
"description": "Last error message if the trigger failed"
|
|
},
|
|
"error_handler_path": {
|
|
"type": "string",
|
|
"description": "Path to a script or flow to run when the triggered job fails"
|
|
},
|
|
"error_handler_args": {
|
|
"$ref": "#/components/schemas/ScriptArgs",
|
|
"description": "Arguments to pass to the error handler"
|
|
},
|
|
"retry": {
|
|
"$ref": "#/components/schemas/Retry",
|
|
"description": "Retry configuration for failed executions"
|
|
}
|
|
},
|
|
"required": [
|
|
"queue_url",
|
|
"aws_resource_path",
|
|
"aws_auth_resource_type"
|
|
]
|
|
},
|
|
"LoggedWizardStatus": {
|
|
"type": "string",
|
|
"enum": [
|
|
"OK",
|
|
"SKIP",
|
|
"FAIL"
|
|
]
|
|
},
|
|
"CustomInstanceDbLogs": {
|
|
"type": "object",
|
|
"properties": {
|
|
"super_admin": {
|
|
"$ref": "#/components/schemas/LoggedWizardStatus"
|
|
},
|
|
"database_credentials": {
|
|
"$ref": "#/components/schemas/LoggedWizardStatus"
|
|
},
|
|
"valid_dbname": {
|
|
"$ref": "#/components/schemas/LoggedWizardStatus"
|
|
},
|
|
"created_database": {
|
|
"$ref": "#/components/schemas/LoggedWizardStatus"
|
|
},
|
|
"db_connect": {
|
|
"$ref": "#/components/schemas/LoggedWizardStatus"
|
|
},
|
|
"grant_permissions": {
|
|
"$ref": "#/components/schemas/LoggedWizardStatus"
|
|
}
|
|
}
|
|
},
|
|
"CustomInstanceDbTag": {
|
|
"type": "string",
|
|
"enum": [
|
|
"ducklake",
|
|
"datatable"
|
|
]
|
|
},
|
|
"CustomInstanceDb": {
|
|
"type": "object",
|
|
"required": [
|
|
"logs",
|
|
"success"
|
|
],
|
|
"properties": {
|
|
"logs": {
|
|
"$ref": "#/components/schemas/CustomInstanceDbLogs"
|
|
},
|
|
"success": {
|
|
"type": "boolean",
|
|
"description": "Whether the operation completed successfully",
|
|
"example": true
|
|
},
|
|
"error": {
|
|
"type": "string",
|
|
"nullable": true,
|
|
"description": "Error message if the operation failed",
|
|
"example": "Connection timeout"
|
|
},
|
|
"tag": {
|
|
"$ref": "#/components/schemas/CustomInstanceDbTag"
|
|
}
|
|
}
|
|
},
|
|
"NewSqsTrigger": {
|
|
"type": "object",
|
|
"properties": {
|
|
"queue_url": {
|
|
"type": "string",
|
|
"description": "The full URL of the AWS SQS queue to poll for messages"
|
|
},
|
|
"aws_auth_resource_type": {
|
|
"$ref": "#/components/schemas/AwsAuthResourceType",
|
|
"description": "Authentication type - 'credentials' for access key/secret, 'oidc' for OpenID Connect"
|
|
},
|
|
"aws_resource_path": {
|
|
"type": "string",
|
|
"description": "Path to the AWS resource containing credentials or OIDC configuration"
|
|
},
|
|
"message_attributes": {
|
|
"type": "array",
|
|
"nullable": true,
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"description": "Array of SQS message attribute names to include with each message"
|
|
},
|
|
"path": {
|
|
"type": "string",
|
|
"description": "The unique path identifier for this trigger"
|
|
},
|
|
"script_path": {
|
|
"type": "string",
|
|
"description": "Path to the script or flow to execute when a message is received"
|
|
},
|
|
"is_flow": {
|
|
"type": "boolean",
|
|
"description": "True if script_path points to a flow, false if it points to a script"
|
|
},
|
|
"mode": {
|
|
"$ref": "#/components/schemas/TriggerMode"
|
|
},
|
|
"error_handler_path": {
|
|
"type": "string",
|
|
"description": "Path to a script or flow to run when the triggered job fails"
|
|
},
|
|
"error_handler_args": {
|
|
"$ref": "#/components/schemas/ScriptArgs",
|
|
"description": "Arguments to pass to the error handler"
|
|
},
|
|
"retry": {
|
|
"$ref": "#/components/schemas/Retry",
|
|
"description": "Retry configuration for failed executions"
|
|
},
|
|
"permissioned_as": {
|
|
"type": "string",
|
|
"description": "The user or group this trigger runs as. Used during deployment to preserve the original trigger owner."
|
|
},
|
|
"preserve_permissioned_as": {
|
|
"type": "boolean",
|
|
"description": "When true and the caller is a member of the 'wm_deployers' group, preserves the original permissioned_as value instead of overwriting it."
|
|
},
|
|
"labels": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"queue_url",
|
|
"aws_resource_path",
|
|
"path",
|
|
"script_path",
|
|
"is_flow",
|
|
"aws_auth_resource_type"
|
|
]
|
|
},
|
|
"EditSqsTrigger": {
|
|
"type": "object",
|
|
"properties": {
|
|
"queue_url": {
|
|
"type": "string",
|
|
"description": "The full URL of the AWS SQS queue to poll for messages"
|
|
},
|
|
"aws_auth_resource_type": {
|
|
"$ref": "#/components/schemas/AwsAuthResourceType",
|
|
"description": "Authentication type - 'credentials' for access key/secret, 'oidc' for OpenID Connect"
|
|
},
|
|
"aws_resource_path": {
|
|
"type": "string",
|
|
"description": "Path to the AWS resource containing credentials or OIDC configuration"
|
|
},
|
|
"message_attributes": {
|
|
"type": "array",
|
|
"nullable": true,
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"description": "Array of SQS message attribute names to include with each message"
|
|
},
|
|
"path": {
|
|
"type": "string",
|
|
"description": "The unique path identifier for this trigger"
|
|
},
|
|
"script_path": {
|
|
"type": "string",
|
|
"description": "Path to the script or flow to execute when a message is received"
|
|
},
|
|
"is_flow": {
|
|
"type": "boolean",
|
|
"description": "True if script_path points to a flow, false if it points to a script"
|
|
},
|
|
"mode": {
|
|
"$ref": "#/components/schemas/TriggerMode"
|
|
},
|
|
"error_handler_path": {
|
|
"type": "string",
|
|
"description": "Path to a script or flow to run when the triggered job fails"
|
|
},
|
|
"error_handler_args": {
|
|
"$ref": "#/components/schemas/ScriptArgs",
|
|
"description": "Arguments to pass to the error handler"
|
|
},
|
|
"retry": {
|
|
"$ref": "#/components/schemas/Retry",
|
|
"description": "Retry configuration for failed executions"
|
|
},
|
|
"permissioned_as": {
|
|
"type": "string",
|
|
"description": "The user or group this trigger runs as. Used during deployment to preserve the original trigger owner."
|
|
},
|
|
"preserve_permissioned_as": {
|
|
"type": "boolean",
|
|
"description": "When true and the caller is a member of the 'wm_deployers' group, preserves the original permissioned_as value instead of overwriting it."
|
|
},
|
|
"labels": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"queue_url",
|
|
"aws_resource_path",
|
|
"path",
|
|
"script_path",
|
|
"is_flow",
|
|
"enabled",
|
|
"aws_auth_resource_type"
|
|
]
|
|
},
|
|
"Slot": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"SlotList": {
|
|
"type": "object",
|
|
"properties": {
|
|
"slot_name": {
|
|
"type": "string"
|
|
},
|
|
"active": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"PublicationData": {
|
|
"type": "object",
|
|
"properties": {
|
|
"table_to_track": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/Relations"
|
|
}
|
|
},
|
|
"transaction_to_track": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"transaction_to_track"
|
|
]
|
|
},
|
|
"TableToTrack": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"table_name": {
|
|
"type": "string"
|
|
},
|
|
"columns_name": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"where_clause": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"table_name"
|
|
]
|
|
}
|
|
},
|
|
"Relations": {
|
|
"type": "object",
|
|
"properties": {
|
|
"schema_name": {
|
|
"type": "string"
|
|
},
|
|
"table_to_track": {
|
|
"$ref": "#/components/schemas/TableToTrack"
|
|
}
|
|
},
|
|
"required": [
|
|
"schema_name",
|
|
"table_to_track"
|
|
]
|
|
},
|
|
"Language": {
|
|
"type": "string",
|
|
"enum": [
|
|
"Typescript"
|
|
]
|
|
},
|
|
"TemplateScript": {
|
|
"type": "object",
|
|
"properties": {
|
|
"postgres_resource_path": {
|
|
"type": "string"
|
|
},
|
|
"relations": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/Relations"
|
|
}
|
|
},
|
|
"language": {
|
|
"$ref": "#/components/schemas/Language"
|
|
}
|
|
},
|
|
"required": [
|
|
"postgres_resource_path",
|
|
"relations",
|
|
"language"
|
|
]
|
|
},
|
|
"PostgresTrigger": {
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/TriggerExtraProperty"
|
|
}
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"postgres_resource_path": {
|
|
"type": "string",
|
|
"description": "Path to the PostgreSQL resource containing connection configuration"
|
|
},
|
|
"publication_name": {
|
|
"type": "string",
|
|
"description": "Name of the PostgreSQL publication to subscribe to for change data capture"
|
|
},
|
|
"server_id": {
|
|
"type": "string",
|
|
"description": "ID of the server currently handling this trigger (internal)"
|
|
},
|
|
"replication_slot_name": {
|
|
"type": "string",
|
|
"description": "Name of the PostgreSQL logical replication slot to use"
|
|
},
|
|
"error": {
|
|
"type": "string",
|
|
"description": "Last error message if the trigger failed"
|
|
},
|
|
"last_server_ping": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"description": "Timestamp of last server heartbeat (internal)"
|
|
},
|
|
"error_handler_path": {
|
|
"type": "string",
|
|
"description": "Path to a script or flow to run when the triggered job fails"
|
|
},
|
|
"error_handler_args": {
|
|
"$ref": "#/components/schemas/ScriptArgs",
|
|
"description": "Arguments to pass to the error handler"
|
|
},
|
|
"retry": {
|
|
"$ref": "#/components/schemas/Retry",
|
|
"description": "Retry configuration for failed executions"
|
|
}
|
|
},
|
|
"required": [
|
|
"postgres_resource_path",
|
|
"replication_slot_name",
|
|
"publication_name"
|
|
]
|
|
},
|
|
"NewPostgresTrigger": {
|
|
"type": "object",
|
|
"properties": {
|
|
"replication_slot_name": {
|
|
"type": "string",
|
|
"description": "Name of the PostgreSQL logical replication slot to use"
|
|
},
|
|
"publication_name": {
|
|
"type": "string",
|
|
"description": "Name of the PostgreSQL publication to subscribe to for change data capture"
|
|
},
|
|
"path": {
|
|
"type": "string",
|
|
"description": "The unique path identifier for this trigger"
|
|
},
|
|
"script_path": {
|
|
"type": "string",
|
|
"description": "Path to the script or flow to execute when database changes are detected"
|
|
},
|
|
"is_flow": {
|
|
"type": "boolean",
|
|
"description": "True if script_path points to a flow, false if it points to a script"
|
|
},
|
|
"mode": {
|
|
"$ref": "#/components/schemas/TriggerMode"
|
|
},
|
|
"postgres_resource_path": {
|
|
"type": "string",
|
|
"description": "Path to the PostgreSQL resource containing connection configuration"
|
|
},
|
|
"publication": {
|
|
"$ref": "#/components/schemas/PublicationData",
|
|
"description": "Configuration for creating/managing the publication (tables, operations)"
|
|
},
|
|
"error_handler_path": {
|
|
"type": "string",
|
|
"description": "Path to a script or flow to run when the triggered job fails"
|
|
},
|
|
"error_handler_args": {
|
|
"$ref": "#/components/schemas/ScriptArgs",
|
|
"description": "Arguments to pass to the error handler"
|
|
},
|
|
"retry": {
|
|
"$ref": "#/components/schemas/Retry",
|
|
"description": "Retry configuration for failed executions"
|
|
},
|
|
"permissioned_as": {
|
|
"type": "string",
|
|
"description": "The user or group this trigger runs as. Used during deployment to preserve the original trigger owner."
|
|
},
|
|
"preserve_permissioned_as": {
|
|
"type": "boolean",
|
|
"description": "When true and the caller is a member of the 'wm_deployers' group, preserves the original permissioned_as value instead of overwriting it."
|
|
},
|
|
"labels": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"path",
|
|
"script_path",
|
|
"is_flow",
|
|
"enabled",
|
|
"postgres_resource_path"
|
|
]
|
|
},
|
|
"EditPostgresTrigger": {
|
|
"type": "object",
|
|
"properties": {
|
|
"replication_slot_name": {
|
|
"type": "string",
|
|
"description": "Name of the PostgreSQL logical replication slot to use"
|
|
},
|
|
"publication_name": {
|
|
"type": "string",
|
|
"description": "Name of the PostgreSQL publication to subscribe to for change data capture"
|
|
},
|
|
"path": {
|
|
"type": "string",
|
|
"description": "The unique path identifier for this trigger"
|
|
},
|
|
"script_path": {
|
|
"type": "string",
|
|
"description": "Path to the script or flow to execute when database changes are detected"
|
|
},
|
|
"is_flow": {
|
|
"type": "boolean",
|
|
"description": "True if script_path points to a flow, false if it points to a script"
|
|
},
|
|
"mode": {
|
|
"$ref": "#/components/schemas/TriggerMode"
|
|
},
|
|
"postgres_resource_path": {
|
|
"type": "string",
|
|
"description": "Path to the PostgreSQL resource containing connection configuration"
|
|
},
|
|
"publication": {
|
|
"$ref": "#/components/schemas/PublicationData",
|
|
"description": "Configuration for creating/managing the publication (tables, operations)"
|
|
},
|
|
"error_handler_path": {
|
|
"type": "string",
|
|
"description": "Path to a script or flow to run when the triggered job fails"
|
|
},
|
|
"error_handler_args": {
|
|
"$ref": "#/components/schemas/ScriptArgs",
|
|
"description": "Arguments to pass to the error handler"
|
|
},
|
|
"retry": {
|
|
"$ref": "#/components/schemas/Retry",
|
|
"description": "Retry configuration for failed executions"
|
|
},
|
|
"permissioned_as": {
|
|
"type": "string",
|
|
"description": "The user or group this trigger runs as. Used during deployment to preserve the original trigger owner."
|
|
},
|
|
"preserve_permissioned_as": {
|
|
"type": "boolean",
|
|
"description": "When true and the caller is a member of the 'wm_deployers' group, preserves the original permissioned_as value instead of overwriting it."
|
|
},
|
|
"labels": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"path",
|
|
"script_path",
|
|
"is_flow",
|
|
"enabled",
|
|
"postgres_resource_path",
|
|
"publication_name",
|
|
"replication_slot_name"
|
|
]
|
|
},
|
|
"KafkaTrigger": {
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/TriggerExtraProperty"
|
|
}
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"kafka_resource_path": {
|
|
"type": "string",
|
|
"description": "Path to the Kafka resource containing connection configuration"
|
|
},
|
|
"group_id": {
|
|
"type": "string",
|
|
"description": "Kafka consumer group ID for this trigger"
|
|
},
|
|
"topics": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"description": "Array of Kafka topic names to subscribe to"
|
|
},
|
|
"filters": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"key": {
|
|
"type": "string"
|
|
},
|
|
"value": {}
|
|
},
|
|
"required": [
|
|
"key",
|
|
"value"
|
|
]
|
|
}
|
|
},
|
|
"filter_logic": {
|
|
"type": "string",
|
|
"enum": [
|
|
"and",
|
|
"or"
|
|
],
|
|
"default": "and",
|
|
"description": "Logic to apply when evaluating filters. 'and' requires all filters to match, 'or' requires any filter to match."
|
|
},
|
|
"auto_offset_reset": {
|
|
"type": "string",
|
|
"enum": [
|
|
"latest",
|
|
"earliest"
|
|
],
|
|
"default": "latest",
|
|
"description": "Initial offset behavior when consumer group has no committed offset. 'latest' starts from new messages only, 'earliest' starts from the beginning."
|
|
},
|
|
"auto_commit": {
|
|
"type": "boolean",
|
|
"default": true,
|
|
"description": "When true (default), offsets are committed automatically after receiving each message. When false, you must manually commit offsets using the commit_offsets endpoint."
|
|
},
|
|
"server_id": {
|
|
"type": "string",
|
|
"description": "ID of the server currently handling this trigger (internal)"
|
|
},
|
|
"last_server_ping": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"description": "Timestamp of last server heartbeat (internal)"
|
|
},
|
|
"error": {
|
|
"type": "string",
|
|
"description": "Last error message if the trigger failed"
|
|
},
|
|
"error_handler_path": {
|
|
"type": "string",
|
|
"description": "Path to a script or flow to run when the triggered job fails"
|
|
},
|
|
"error_handler_args": {
|
|
"$ref": "#/components/schemas/ScriptArgs",
|
|
"description": "Arguments to pass to the error handler"
|
|
},
|
|
"retry": {
|
|
"$ref": "#/components/schemas/Retry",
|
|
"description": "Retry configuration for failed executions"
|
|
}
|
|
},
|
|
"required": [
|
|
"kafka_resource_path",
|
|
"group_id",
|
|
"topics",
|
|
"filters"
|
|
]
|
|
},
|
|
"NewKafkaTrigger": {
|
|
"type": "object",
|
|
"properties": {
|
|
"path": {
|
|
"type": "string",
|
|
"description": "The unique path identifier for this trigger"
|
|
},
|
|
"script_path": {
|
|
"type": "string",
|
|
"description": "Path to the script or flow to execute when a message is received"
|
|
},
|
|
"is_flow": {
|
|
"type": "boolean",
|
|
"description": "True if script_path points to a flow, false if it points to a script"
|
|
},
|
|
"kafka_resource_path": {
|
|
"type": "string",
|
|
"description": "Path to the Kafka resource containing connection configuration"
|
|
},
|
|
"group_id": {
|
|
"type": "string",
|
|
"description": "Kafka consumer group ID for this trigger"
|
|
},
|
|
"topics": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"description": "Array of Kafka topic names to subscribe to"
|
|
},
|
|
"filters": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"key": {
|
|
"type": "string"
|
|
},
|
|
"value": {}
|
|
},
|
|
"required": [
|
|
"key",
|
|
"value"
|
|
]
|
|
}
|
|
},
|
|
"filter_logic": {
|
|
"type": "string",
|
|
"enum": [
|
|
"and",
|
|
"or"
|
|
],
|
|
"default": "and",
|
|
"description": "Logic to apply when evaluating filters. 'and' requires all filters to match, 'or' requires any filter to match."
|
|
},
|
|
"auto_offset_reset": {
|
|
"type": "string",
|
|
"enum": [
|
|
"latest",
|
|
"earliest"
|
|
],
|
|
"default": "latest",
|
|
"description": "Initial offset behavior when consumer group has no committed offset."
|
|
},
|
|
"auto_commit": {
|
|
"type": "boolean",
|
|
"default": true,
|
|
"description": "When true (default), offsets are committed automatically after receiving each message. When false, you must manually commit offsets using the commit_offsets endpoint."
|
|
},
|
|
"mode": {
|
|
"$ref": "#/components/schemas/TriggerMode"
|
|
},
|
|
"error_handler_path": {
|
|
"type": "string",
|
|
"description": "Path to a script or flow to run when the triggered job fails"
|
|
},
|
|
"error_handler_args": {
|
|
"$ref": "#/components/schemas/ScriptArgs",
|
|
"description": "Arguments to pass to the error handler"
|
|
},
|
|
"retry": {
|
|
"$ref": "#/components/schemas/Retry",
|
|
"description": "Retry configuration for failed executions"
|
|
},
|
|
"permissioned_as": {
|
|
"type": "string",
|
|
"description": "The user or group this trigger runs as. Used during deployment to preserve the original trigger owner."
|
|
},
|
|
"preserve_permissioned_as": {
|
|
"type": "boolean",
|
|
"description": "When true and the caller is a member of the 'wm_deployers' group, preserves the original permissioned_as value instead of overwriting it."
|
|
},
|
|
"labels": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"path",
|
|
"script_path",
|
|
"is_flow",
|
|
"kafka_resource_path",
|
|
"group_id",
|
|
"topics",
|
|
"filters"
|
|
]
|
|
},
|
|
"EditKafkaTrigger": {
|
|
"type": "object",
|
|
"properties": {
|
|
"kafka_resource_path": {
|
|
"type": "string",
|
|
"description": "Path to the Kafka resource containing connection configuration"
|
|
},
|
|
"group_id": {
|
|
"type": "string",
|
|
"description": "Kafka consumer group ID for this trigger"
|
|
},
|
|
"topics": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"description": "Array of Kafka topic names to subscribe to"
|
|
},
|
|
"filters": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"key": {
|
|
"type": "string"
|
|
},
|
|
"value": {}
|
|
},
|
|
"required": [
|
|
"key",
|
|
"value"
|
|
]
|
|
}
|
|
},
|
|
"filter_logic": {
|
|
"type": "string",
|
|
"enum": [
|
|
"and",
|
|
"or"
|
|
],
|
|
"default": "and",
|
|
"description": "Logic to apply when evaluating filters. 'and' requires all filters to match, 'or' requires any filter to match."
|
|
},
|
|
"auto_offset_reset": {
|
|
"type": "string",
|
|
"enum": [
|
|
"latest",
|
|
"earliest"
|
|
],
|
|
"default": "latest",
|
|
"description": "Initial offset behavior when consumer group has no committed offset."
|
|
},
|
|
"auto_commit": {
|
|
"type": "boolean",
|
|
"default": true,
|
|
"description": "When true (default), offsets are committed automatically after receiving each message. When false, you must manually commit offsets using the commit_offsets endpoint."
|
|
},
|
|
"path": {
|
|
"type": "string",
|
|
"description": "The unique path identifier for this trigger"
|
|
},
|
|
"script_path": {
|
|
"type": "string",
|
|
"description": "Path to the script or flow to execute when a message is received"
|
|
},
|
|
"is_flow": {
|
|
"type": "boolean",
|
|
"description": "True if script_path points to a flow, false if it points to a script"
|
|
},
|
|
"error_handler_path": {
|
|
"type": "string",
|
|
"description": "Path to a script or flow to run when the triggered job fails"
|
|
},
|
|
"error_handler_args": {
|
|
"$ref": "#/components/schemas/ScriptArgs",
|
|
"description": "Arguments to pass to the error handler"
|
|
},
|
|
"retry": {
|
|
"$ref": "#/components/schemas/Retry",
|
|
"description": "Retry configuration for failed executions"
|
|
},
|
|
"permissioned_as": {
|
|
"type": "string",
|
|
"description": "The user or group this trigger runs as. Used during deployment to preserve the original trigger owner."
|
|
},
|
|
"preserve_permissioned_as": {
|
|
"type": "boolean",
|
|
"description": "When true and the caller is a member of the 'wm_deployers' group, preserves the original permissioned_as value instead of overwriting it."
|
|
},
|
|
"labels": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"path",
|
|
"script_path",
|
|
"kafka_resource_path",
|
|
"group_id",
|
|
"topics",
|
|
"filters",
|
|
"is_flow"
|
|
]
|
|
},
|
|
"NatsTrigger": {
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/TriggerExtraProperty"
|
|
}
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"nats_resource_path": {
|
|
"type": "string",
|
|
"description": "Path to the NATS resource containing connection configuration"
|
|
},
|
|
"use_jetstream": {
|
|
"type": "boolean",
|
|
"description": "If true, uses NATS JetStream for durable message delivery"
|
|
},
|
|
"stream_name": {
|
|
"type": "string",
|
|
"nullable": true,
|
|
"description": "JetStream stream name (required when use_jetstream is true)"
|
|
},
|
|
"consumer_name": {
|
|
"type": "string",
|
|
"nullable": true,
|
|
"description": "JetStream consumer name (required when use_jetstream is true)"
|
|
},
|
|
"subjects": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"description": "Array of NATS subjects to subscribe to"
|
|
},
|
|
"server_id": {
|
|
"type": "string",
|
|
"description": "ID of the server currently handling this trigger (internal)"
|
|
},
|
|
"last_server_ping": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"description": "Timestamp of last server heartbeat (internal)"
|
|
},
|
|
"error": {
|
|
"type": "string",
|
|
"description": "Last error message if the trigger failed"
|
|
},
|
|
"error_handler_path": {
|
|
"type": "string",
|
|
"description": "Path to a script or flow to run when the triggered job fails"
|
|
},
|
|
"error_handler_args": {
|
|
"$ref": "#/components/schemas/ScriptArgs",
|
|
"description": "Arguments to pass to the error handler"
|
|
},
|
|
"retry": {
|
|
"$ref": "#/components/schemas/Retry",
|
|
"description": "Retry configuration for failed executions"
|
|
}
|
|
},
|
|
"required": [
|
|
"nats_resource_path",
|
|
"use_jetstream",
|
|
"subjects"
|
|
]
|
|
},
|
|
"NewNatsTrigger": {
|
|
"type": "object",
|
|
"properties": {
|
|
"path": {
|
|
"type": "string",
|
|
"description": "The unique path identifier for this trigger"
|
|
},
|
|
"script_path": {
|
|
"type": "string",
|
|
"description": "Path to the script or flow to execute when a message is received"
|
|
},
|
|
"is_flow": {
|
|
"type": "boolean",
|
|
"description": "True if script_path points to a flow, false if it points to a script"
|
|
},
|
|
"nats_resource_path": {
|
|
"type": "string",
|
|
"description": "Path to the NATS resource containing connection configuration"
|
|
},
|
|
"use_jetstream": {
|
|
"type": "boolean",
|
|
"description": "If true, uses NATS JetStream for durable message delivery"
|
|
},
|
|
"stream_name": {
|
|
"type": "string",
|
|
"nullable": true,
|
|
"description": "JetStream stream name (required when use_jetstream is true)"
|
|
},
|
|
"consumer_name": {
|
|
"type": "string",
|
|
"nullable": true,
|
|
"description": "JetStream consumer name (required when use_jetstream is true)"
|
|
},
|
|
"subjects": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"description": "Array of NATS subjects to subscribe to"
|
|
},
|
|
"mode": {
|
|
"$ref": "#/components/schemas/TriggerMode"
|
|
},
|
|
"error_handler_path": {
|
|
"type": "string",
|
|
"description": "Path to a script or flow to run when the triggered job fails"
|
|
},
|
|
"error_handler_args": {
|
|
"$ref": "#/components/schemas/ScriptArgs",
|
|
"description": "Arguments to pass to the error handler"
|
|
},
|
|
"retry": {
|
|
"$ref": "#/components/schemas/Retry",
|
|
"description": "Retry configuration for failed executions"
|
|
},
|
|
"permissioned_as": {
|
|
"type": "string",
|
|
"description": "The user or group this trigger runs as. Used during deployment to preserve the original trigger owner."
|
|
},
|
|
"preserve_permissioned_as": {
|
|
"type": "boolean",
|
|
"description": "When true and the caller is a member of the 'wm_deployers' group, preserves the original permissioned_as value instead of overwriting it."
|
|
},
|
|
"labels": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"path",
|
|
"script_path",
|
|
"is_flow",
|
|
"nats_resource_path",
|
|
"use_jetstream",
|
|
"subjects"
|
|
]
|
|
},
|
|
"EditNatsTrigger": {
|
|
"type": "object",
|
|
"properties": {
|
|
"nats_resource_path": {
|
|
"type": "string",
|
|
"description": "Path to the NATS resource containing connection configuration"
|
|
},
|
|
"use_jetstream": {
|
|
"type": "boolean",
|
|
"description": "If true, uses NATS JetStream for durable message delivery"
|
|
},
|
|
"stream_name": {
|
|
"type": "string",
|
|
"nullable": true,
|
|
"description": "JetStream stream name (required when use_jetstream is true)"
|
|
},
|
|
"consumer_name": {
|
|
"type": "string",
|
|
"nullable": true,
|
|
"description": "JetStream consumer name (required when use_jetstream is true)"
|
|
},
|
|
"subjects": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"description": "Array of NATS subjects to subscribe to"
|
|
},
|
|
"path": {
|
|
"type": "string",
|
|
"description": "The unique path identifier for this trigger"
|
|
},
|
|
"script_path": {
|
|
"type": "string",
|
|
"description": "Path to the script or flow to execute when a message is received"
|
|
},
|
|
"is_flow": {
|
|
"type": "boolean",
|
|
"description": "True if script_path points to a flow, false if it points to a script"
|
|
},
|
|
"error_handler_path": {
|
|
"type": "string",
|
|
"description": "Path to a script or flow to run when the triggered job fails"
|
|
},
|
|
"error_handler_args": {
|
|
"$ref": "#/components/schemas/ScriptArgs",
|
|
"description": "Arguments to pass to the error handler"
|
|
},
|
|
"retry": {
|
|
"$ref": "#/components/schemas/Retry",
|
|
"description": "Retry configuration for failed executions"
|
|
},
|
|
"permissioned_as": {
|
|
"type": "string",
|
|
"description": "The user or group this trigger runs as. Used during deployment to preserve the original trigger owner."
|
|
},
|
|
"preserve_permissioned_as": {
|
|
"type": "boolean",
|
|
"description": "When true and the caller is a member of the 'wm_deployers' group, preserves the original permissioned_as value instead of overwriting it."
|
|
},
|
|
"labels": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"path",
|
|
"script_path",
|
|
"nats_resource_path",
|
|
"use_jetstream",
|
|
"subjects",
|
|
"is_flow"
|
|
]
|
|
},
|
|
"EmailTrigger": {
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/TriggerExtraProperty"
|
|
}
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"local_part": {
|
|
"type": "string"
|
|
},
|
|
"workspaced_local_part": {
|
|
"type": "boolean"
|
|
},
|
|
"error_handler_path": {
|
|
"type": "string"
|
|
},
|
|
"error_handler_args": {
|
|
"$ref": "#/components/schemas/ScriptArgs"
|
|
},
|
|
"retry": {
|
|
"$ref": "#/components/schemas/Retry"
|
|
}
|
|
},
|
|
"required": [
|
|
"local_part"
|
|
]
|
|
},
|
|
"NewEmailTrigger": {
|
|
"type": "object",
|
|
"properties": {
|
|
"path": {
|
|
"type": "string"
|
|
},
|
|
"script_path": {
|
|
"type": "string"
|
|
},
|
|
"local_part": {
|
|
"type": "string"
|
|
},
|
|
"workspaced_local_part": {
|
|
"type": "boolean"
|
|
},
|
|
"is_flow": {
|
|
"type": "boolean"
|
|
},
|
|
"error_handler_path": {
|
|
"type": "string"
|
|
},
|
|
"error_handler_args": {
|
|
"$ref": "#/components/schemas/ScriptArgs"
|
|
},
|
|
"retry": {
|
|
"$ref": "#/components/schemas/Retry"
|
|
},
|
|
"mode": {
|
|
"$ref": "#/components/schemas/TriggerMode"
|
|
},
|
|
"permissioned_as": {
|
|
"type": "string",
|
|
"description": "The user or group this trigger runs as. Used during deployment to preserve the original trigger owner."
|
|
},
|
|
"preserve_permissioned_as": {
|
|
"type": "boolean",
|
|
"description": "When true and the caller is a member of the 'wm_deployers' group, preserves the original permissioned_as value instead of overwriting it."
|
|
},
|
|
"labels": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"path",
|
|
"script_path",
|
|
"local_part",
|
|
"is_flow"
|
|
]
|
|
},
|
|
"EditEmailTrigger": {
|
|
"type": "object",
|
|
"properties": {
|
|
"path": {
|
|
"type": "string"
|
|
},
|
|
"script_path": {
|
|
"type": "string"
|
|
},
|
|
"local_part": {
|
|
"type": "string"
|
|
},
|
|
"workspaced_local_part": {
|
|
"type": "boolean"
|
|
},
|
|
"is_flow": {
|
|
"type": "boolean"
|
|
},
|
|
"error_handler_path": {
|
|
"type": "string"
|
|
},
|
|
"error_handler_args": {
|
|
"$ref": "#/components/schemas/ScriptArgs"
|
|
},
|
|
"retry": {
|
|
"$ref": "#/components/schemas/Retry"
|
|
},
|
|
"permissioned_as": {
|
|
"type": "string",
|
|
"description": "The user or group this trigger runs as. Used during deployment to preserve the original trigger owner."
|
|
},
|
|
"preserve_permissioned_as": {
|
|
"type": "boolean",
|
|
"description": "When true and the caller is a member of the 'wm_deployers' group, preserves the original permissioned_as value instead of overwriting it."
|
|
},
|
|
"labels": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"path",
|
|
"script_path",
|
|
"is_flow"
|
|
]
|
|
},
|
|
"Group": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"summary": {
|
|
"type": "string"
|
|
},
|
|
"members": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"extra_perms": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"name"
|
|
]
|
|
},
|
|
"InstanceGroup": {
|
|
"type": "object",
|
|
"required": [
|
|
"name"
|
|
],
|
|
"properties": {
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"summary": {
|
|
"type": "string"
|
|
},
|
|
"emails": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"instance_role": {
|
|
"type": "string",
|
|
"nullable": true,
|
|
"enum": [
|
|
"superadmin",
|
|
"devops"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"InstanceGroupWithWorkspaces": {
|
|
"type": "object",
|
|
"required": [
|
|
"name"
|
|
],
|
|
"properties": {
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"summary": {
|
|
"type": "string"
|
|
},
|
|
"emails": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"instance_role": {
|
|
"type": "string",
|
|
"nullable": true,
|
|
"enum": [
|
|
"superadmin",
|
|
"devops"
|
|
]
|
|
},
|
|
"workspaces": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/WorkspaceInfo"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"WorkspaceInfo": {
|
|
"type": "object",
|
|
"properties": {
|
|
"workspace_id": {
|
|
"type": "string"
|
|
},
|
|
"workspace_name": {
|
|
"type": "string"
|
|
},
|
|
"role": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"name"
|
|
]
|
|
},
|
|
"Folder": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"owners": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"extra_perms": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"summary": {
|
|
"type": "string"
|
|
},
|
|
"created_by": {
|
|
"type": "string"
|
|
},
|
|
"edited_at": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"default_permissioned_as": {
|
|
"$ref": "#/components/schemas/FolderDefaultPermissionedAs"
|
|
}
|
|
},
|
|
"required": [
|
|
"name",
|
|
"owners",
|
|
"extra_perms"
|
|
]
|
|
},
|
|
"FolderDefaultPermissionedAs": {
|
|
"description": "Ordered list of rules applied at create-time when admins or `wm_deployers` members deploy items in this folder. The first rule whose `path_glob` matches the item path (relative to the folder root) wins, and its `permissioned_as` is used as the default.\n",
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"required": [
|
|
"path_glob",
|
|
"permissioned_as"
|
|
],
|
|
"properties": {
|
|
"path_glob": {
|
|
"type": "string",
|
|
"description": "Glob pattern evaluated against the item path *relative* to the folder root (e.g. \"jobs/**\" matches every item whose full path is `f/<folder>/jobs/...`). Supports `*`, `**`, `?`, `[abc]`, `{a,b}`.\n"
|
|
},
|
|
"permissioned_as": {
|
|
"type": "string",
|
|
"description": "Target identity the matched item should be permissioned as. Must be `u/<username>`, `g/<groupname>`, or an email that exists in this workspace.\n"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"WorkerPing": {
|
|
"type": "object",
|
|
"properties": {
|
|
"worker": {
|
|
"type": "string"
|
|
},
|
|
"worker_instance": {
|
|
"type": "string"
|
|
},
|
|
"last_ping": {
|
|
"type": "number"
|
|
},
|
|
"started_at": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"ip": {
|
|
"type": "string"
|
|
},
|
|
"jobs_executed": {
|
|
"type": "integer"
|
|
},
|
|
"custom_tags": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"worker_group": {
|
|
"type": "string"
|
|
},
|
|
"wm_version": {
|
|
"type": "string"
|
|
},
|
|
"last_job_id": {
|
|
"type": "string"
|
|
},
|
|
"last_job_workspace_id": {
|
|
"type": "string"
|
|
},
|
|
"occupancy_rate": {
|
|
"type": "number"
|
|
},
|
|
"occupancy_rate_15s": {
|
|
"type": "number"
|
|
},
|
|
"occupancy_rate_5m": {
|
|
"type": "number"
|
|
},
|
|
"occupancy_rate_30m": {
|
|
"type": "number"
|
|
},
|
|
"memory": {
|
|
"type": "number"
|
|
},
|
|
"vcpus": {
|
|
"type": "number"
|
|
},
|
|
"memory_usage": {
|
|
"type": "number"
|
|
},
|
|
"wm_memory_usage": {
|
|
"type": "number"
|
|
},
|
|
"job_isolation": {
|
|
"type": "string"
|
|
},
|
|
"native_mode": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"required": [
|
|
"worker",
|
|
"worker_instance",
|
|
"ping_at",
|
|
"started_at",
|
|
"ip",
|
|
"jobs_executed",
|
|
"worker_group",
|
|
"wm_version"
|
|
]
|
|
},
|
|
"UserWorkspaceList": {
|
|
"type": "object",
|
|
"properties": {
|
|
"email": {
|
|
"type": "string"
|
|
},
|
|
"workspaces": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"username": {
|
|
"type": "string"
|
|
},
|
|
"color": {
|
|
"type": "string"
|
|
},
|
|
"operator_settings": {
|
|
"$ref": "#/components/schemas/OperatorSettings"
|
|
},
|
|
"parent_workspace_id": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"created_by": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"disabled": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"required": [
|
|
"id",
|
|
"name",
|
|
"username",
|
|
"color",
|
|
"disabled"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"email",
|
|
"workspaces"
|
|
]
|
|
},
|
|
"CreateWorkspace": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"username": {
|
|
"type": "string"
|
|
},
|
|
"color": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"id",
|
|
"name"
|
|
]
|
|
},
|
|
"CreateWorkspaceFork": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"color": {
|
|
"type": "string"
|
|
},
|
|
"forked_datatables": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"required": [
|
|
"name",
|
|
"new_dbname"
|
|
],
|
|
"properties": {
|
|
"name": {
|
|
"type": "string",
|
|
"description": "Datatable name"
|
|
},
|
|
"new_dbname": {
|
|
"type": "string",
|
|
"description": "New database name for the fork"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"id",
|
|
"name",
|
|
"parent_workspace_id"
|
|
]
|
|
},
|
|
"Workspace": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"owner": {
|
|
"type": "string"
|
|
},
|
|
"domain": {
|
|
"type": "string"
|
|
},
|
|
"color": {
|
|
"type": "string"
|
|
},
|
|
"parent_workspace_id": {
|
|
"type": "string",
|
|
"nullable": true
|
|
}
|
|
},
|
|
"required": [
|
|
"id",
|
|
"name",
|
|
"owner",
|
|
"created_at"
|
|
]
|
|
},
|
|
"DependencyMap": {
|
|
"type": "object",
|
|
"properties": {
|
|
"workspace_id": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"importer_path": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"importer_kind": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"imported_path": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"importer_node_id": {
|
|
"type": "string",
|
|
"nullable": true
|
|
}
|
|
}
|
|
},
|
|
"DependencyDependent": {
|
|
"type": "object",
|
|
"properties": {
|
|
"importer_path": {
|
|
"type": "string"
|
|
},
|
|
"importer_kind": {
|
|
"type": "string",
|
|
"enum": [
|
|
"script",
|
|
"flow",
|
|
"app"
|
|
]
|
|
},
|
|
"importer_node_ids": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"nullable": true
|
|
}
|
|
},
|
|
"required": [
|
|
"importer_path",
|
|
"importer_kind"
|
|
]
|
|
},
|
|
"DependentsAmount": {
|
|
"type": "object",
|
|
"properties": {
|
|
"imported_path": {
|
|
"type": "string"
|
|
},
|
|
"count": {
|
|
"type": "integer",
|
|
"format": "int64"
|
|
}
|
|
},
|
|
"required": [
|
|
"imported_path",
|
|
"count"
|
|
]
|
|
},
|
|
"WorkspaceInvite": {
|
|
"type": "object",
|
|
"properties": {
|
|
"workspace_id": {
|
|
"type": "string"
|
|
},
|
|
"email": {
|
|
"type": "string"
|
|
},
|
|
"is_admin": {
|
|
"type": "boolean"
|
|
},
|
|
"operator": {
|
|
"type": "boolean"
|
|
},
|
|
"parent_workspace_id": {
|
|
"type": "string",
|
|
"nullable": true
|
|
}
|
|
},
|
|
"required": [
|
|
"workspace_id",
|
|
"email",
|
|
"is_admin",
|
|
"operator"
|
|
]
|
|
},
|
|
"GlobalUserInfo": {
|
|
"type": "object",
|
|
"properties": {
|
|
"email": {
|
|
"type": "string"
|
|
},
|
|
"login_type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"password",
|
|
"github"
|
|
]
|
|
},
|
|
"super_admin": {
|
|
"type": "boolean"
|
|
},
|
|
"devops": {
|
|
"type": "boolean"
|
|
},
|
|
"verified": {
|
|
"type": "boolean"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"company": {
|
|
"type": "string"
|
|
},
|
|
"username": {
|
|
"type": "string"
|
|
},
|
|
"operator_only": {
|
|
"type": "boolean"
|
|
},
|
|
"first_time_user": {
|
|
"type": "boolean"
|
|
},
|
|
"role_source": {
|
|
"type": "string",
|
|
"enum": [
|
|
"manual",
|
|
"instance_group"
|
|
]
|
|
},
|
|
"disabled": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"required": [
|
|
"email",
|
|
"login_type",
|
|
"super_admin",
|
|
"verified",
|
|
"first_time_user",
|
|
"role_source",
|
|
"disabled"
|
|
]
|
|
},
|
|
"Flow": {
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/OpenFlow"
|
|
},
|
|
{
|
|
"$ref": "#/components/schemas/FlowMetadata"
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"lock_error_logs": {
|
|
"type": "string"
|
|
},
|
|
"version_id": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"ExtraPerms": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"FlowMetadata": {
|
|
"type": "object",
|
|
"properties": {
|
|
"workspace_id": {
|
|
"type": "string"
|
|
},
|
|
"path": {
|
|
"type": "string"
|
|
},
|
|
"edited_by": {
|
|
"type": "string"
|
|
},
|
|
"edited_at": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"archived": {
|
|
"type": "boolean"
|
|
},
|
|
"extra_perms": {
|
|
"$ref": "#/components/schemas/ExtraPerms"
|
|
},
|
|
"starred": {
|
|
"type": "boolean"
|
|
},
|
|
"draft_only": {
|
|
"type": "boolean"
|
|
},
|
|
"tag": {
|
|
"type": "string"
|
|
},
|
|
"ws_error_handler_muted": {
|
|
"type": "boolean"
|
|
},
|
|
"priority": {
|
|
"type": "integer"
|
|
},
|
|
"dedicated_worker": {
|
|
"type": "boolean"
|
|
},
|
|
"timeout": {
|
|
"type": "number"
|
|
},
|
|
"visible_to_runner_only": {
|
|
"type": "boolean"
|
|
},
|
|
"on_behalf_of_email": {
|
|
"type": "string"
|
|
},
|
|
"labels": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"default": []
|
|
}
|
|
},
|
|
"required": [
|
|
"path",
|
|
"edited_by",
|
|
"edited_at",
|
|
"archived",
|
|
"extra_perms"
|
|
]
|
|
},
|
|
"OpenFlowWPath": {
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/OpenFlow"
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"path": {
|
|
"type": "string"
|
|
},
|
|
"tag": {
|
|
"type": "string"
|
|
},
|
|
"ws_error_handler_muted": {
|
|
"type": "boolean"
|
|
},
|
|
"priority": {
|
|
"type": "integer"
|
|
},
|
|
"dedicated_worker": {
|
|
"type": "boolean"
|
|
},
|
|
"timeout": {
|
|
"type": "number"
|
|
},
|
|
"visible_to_runner_only": {
|
|
"type": "boolean"
|
|
},
|
|
"on_behalf_of_email": {
|
|
"type": "string"
|
|
},
|
|
"preserve_on_behalf_of": {
|
|
"type": "boolean",
|
|
"description": "When true and the caller is a member of the 'wm_deployers' group, preserves the original on_behalf_of_email value instead of overwriting it."
|
|
},
|
|
"labels": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"path"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"FlowPreview": {
|
|
"type": "object",
|
|
"properties": {
|
|
"value": {
|
|
"$ref": "#/components/schemas/FlowValue"
|
|
},
|
|
"path": {
|
|
"type": "string"
|
|
},
|
|
"args": {
|
|
"$ref": "#/components/schemas/ScriptArgs"
|
|
},
|
|
"tag": {
|
|
"type": "string"
|
|
},
|
|
"restarted_from": {
|
|
"$ref": "#/components/schemas/RestartedFrom"
|
|
}
|
|
},
|
|
"required": [
|
|
"value",
|
|
"content",
|
|
"args"
|
|
]
|
|
},
|
|
"RestartedFrom": {
|
|
"type": "object",
|
|
"properties": {
|
|
"flow_job_id": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
},
|
|
"step_id": {
|
|
"type": "string"
|
|
},
|
|
"branch_or_iteration_n": {
|
|
"type": "integer"
|
|
},
|
|
"flow_version": {
|
|
"type": "integer"
|
|
}
|
|
}
|
|
},
|
|
"Policy": {
|
|
"type": "object",
|
|
"properties": {
|
|
"triggerables": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "object"
|
|
}
|
|
},
|
|
"triggerables_v2": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "object"
|
|
}
|
|
},
|
|
"s3_inputs": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object"
|
|
}
|
|
},
|
|
"allowed_s3_keys": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"s3_path": {
|
|
"type": "string"
|
|
},
|
|
"resource": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"execution_mode": {
|
|
"type": "string",
|
|
"enum": [
|
|
"viewer",
|
|
"publisher",
|
|
"anonymous"
|
|
]
|
|
},
|
|
"on_behalf_of": {
|
|
"type": "string"
|
|
},
|
|
"on_behalf_of_email": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"ListableApp": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer"
|
|
},
|
|
"workspace_id": {
|
|
"type": "string"
|
|
},
|
|
"path": {
|
|
"type": "string"
|
|
},
|
|
"summary": {
|
|
"type": "string"
|
|
},
|
|
"version": {
|
|
"type": "integer"
|
|
},
|
|
"extra_perms": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"starred": {
|
|
"type": "boolean"
|
|
},
|
|
"edited_at": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"execution_mode": {
|
|
"type": "string",
|
|
"enum": [
|
|
"viewer",
|
|
"publisher",
|
|
"anonymous"
|
|
]
|
|
},
|
|
"raw_app": {
|
|
"type": "boolean"
|
|
},
|
|
"labels": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"default": []
|
|
}
|
|
},
|
|
"required": [
|
|
"id",
|
|
"workspace_id",
|
|
"path",
|
|
"summary",
|
|
"version",
|
|
"extra_perms",
|
|
"edited_at",
|
|
"execution_mode"
|
|
]
|
|
},
|
|
"ScopeDefinition": {
|
|
"type": "object",
|
|
"properties": {
|
|
"value": {
|
|
"type": "string"
|
|
},
|
|
"label": {
|
|
"type": "string"
|
|
},
|
|
"description": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"requires_resource_path": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"required": [
|
|
"value",
|
|
"label",
|
|
"requires_resource_path"
|
|
]
|
|
},
|
|
"ScopeDomain": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"description": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"scopes": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ScopeDefinition"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"name",
|
|
"scopes"
|
|
]
|
|
},
|
|
"ListableRawApp": {
|
|
"type": "object",
|
|
"properties": {
|
|
"workspace_id": {
|
|
"type": "string"
|
|
},
|
|
"path": {
|
|
"type": "string"
|
|
},
|
|
"summary": {
|
|
"type": "string"
|
|
},
|
|
"extra_perms": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"starred": {
|
|
"type": "boolean"
|
|
},
|
|
"version": {
|
|
"type": "number"
|
|
},
|
|
"edited_at": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"labels": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"default": []
|
|
}
|
|
},
|
|
"required": [
|
|
"workspace_id",
|
|
"path",
|
|
"summary",
|
|
"extra_perms",
|
|
"version",
|
|
"edited_at"
|
|
]
|
|
},
|
|
"AppWithLastVersion": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer"
|
|
},
|
|
"workspace_id": {
|
|
"type": "string"
|
|
},
|
|
"path": {
|
|
"type": "string"
|
|
},
|
|
"summary": {
|
|
"type": "string"
|
|
},
|
|
"versions": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"created_by": {
|
|
"type": "string"
|
|
},
|
|
"created_at": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"value": {},
|
|
"policy": {
|
|
"$ref": "#/components/schemas/Policy"
|
|
},
|
|
"execution_mode": {
|
|
"type": "string",
|
|
"enum": [
|
|
"viewer",
|
|
"publisher",
|
|
"anonymous"
|
|
]
|
|
},
|
|
"extra_perms": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"custom_path": {
|
|
"type": "string"
|
|
},
|
|
"raw_app": {
|
|
"type": "boolean"
|
|
},
|
|
"bundle_secret": {
|
|
"type": "string"
|
|
},
|
|
"labels": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"default": []
|
|
}
|
|
},
|
|
"required": [
|
|
"id",
|
|
"workspace_id",
|
|
"path",
|
|
"summary",
|
|
"versions",
|
|
"created_by",
|
|
"created_at",
|
|
"value",
|
|
"policy",
|
|
"execution_mode",
|
|
"extra_perms",
|
|
"raw_app"
|
|
]
|
|
},
|
|
"AppWithLastVersionWDraft": {
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/AppWithLastVersion"
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"draft_only": {
|
|
"type": "boolean"
|
|
},
|
|
"draft": {}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"AppHistory": {
|
|
"type": "object",
|
|
"properties": {
|
|
"version": {
|
|
"type": "integer"
|
|
},
|
|
"deployment_msg": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"version"
|
|
]
|
|
},
|
|
"FlowVersion": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer"
|
|
},
|
|
"created_at": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"deployment_msg": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"id",
|
|
"created_at"
|
|
]
|
|
},
|
|
"SlackToken": {
|
|
"type": "object",
|
|
"properties": {
|
|
"access_token": {
|
|
"type": "string"
|
|
},
|
|
"team": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"id",
|
|
"name"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"access_token"
|
|
]
|
|
},
|
|
"TokenResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"access_token": {
|
|
"type": "string"
|
|
},
|
|
"expires_in": {
|
|
"type": "integer"
|
|
},
|
|
"refresh_token": {
|
|
"type": "string"
|
|
},
|
|
"scope": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"grant_type": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"access_token"
|
|
]
|
|
},
|
|
"HubScriptKind": {
|
|
"type": "string",
|
|
"enum": [
|
|
"script",
|
|
"failure",
|
|
"trigger",
|
|
"approval"
|
|
]
|
|
},
|
|
"PolarsClientKwargs": {
|
|
"type": "object",
|
|
"properties": {
|
|
"region_name": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"region_name"
|
|
]
|
|
},
|
|
"LargeFileStorage": {
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"S3Storage",
|
|
"AzureBlobStorage",
|
|
"AzureWorkloadIdentity",
|
|
"S3AwsOidc",
|
|
"GoogleCloudStorage"
|
|
]
|
|
},
|
|
"s3_resource_path": {
|
|
"type": "string"
|
|
},
|
|
"azure_blob_resource_path": {
|
|
"type": "string"
|
|
},
|
|
"gcs_resource_path": {
|
|
"type": "string"
|
|
},
|
|
"public_resource": {
|
|
"type": "boolean"
|
|
},
|
|
"advanced_permissions": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/S3PermissionRule"
|
|
}
|
|
},
|
|
"secondary_storage": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"S3Storage",
|
|
"AzureBlobStorage",
|
|
"AzureWorkloadIdentity",
|
|
"S3AwsOidc",
|
|
"GoogleCloudStorage"
|
|
]
|
|
},
|
|
"s3_resource_path": {
|
|
"type": "string"
|
|
},
|
|
"azure_blob_resource_path": {
|
|
"type": "string"
|
|
},
|
|
"gcs_resource_path": {
|
|
"type": "string"
|
|
},
|
|
"public_resource": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"DucklakeSettings": {
|
|
"type": "object",
|
|
"required": [
|
|
"ducklakes"
|
|
],
|
|
"properties": {
|
|
"ducklakes": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "object",
|
|
"required": [
|
|
"catalog",
|
|
"storage"
|
|
],
|
|
"properties": {
|
|
"catalog": {
|
|
"type": "object",
|
|
"properties": {
|
|
"resource_type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"postgresql",
|
|
"mysql",
|
|
"instance"
|
|
]
|
|
},
|
|
"resource_path": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"resource_type"
|
|
]
|
|
},
|
|
"storage": {
|
|
"type": "object",
|
|
"properties": {
|
|
"storage": {
|
|
"type": "string"
|
|
},
|
|
"path": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"path"
|
|
]
|
|
},
|
|
"extra_args": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"DataTableSettings": {
|
|
"type": "object",
|
|
"required": [
|
|
"datatables"
|
|
],
|
|
"properties": {
|
|
"datatables": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "object",
|
|
"required": [
|
|
"database"
|
|
],
|
|
"properties": {
|
|
"database": {
|
|
"type": "object",
|
|
"properties": {
|
|
"resource_type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"postgresql",
|
|
"instance"
|
|
]
|
|
},
|
|
"resource_path": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"resource_type"
|
|
]
|
|
},
|
|
"forked_from": {
|
|
"type": "object",
|
|
"description": "Fork origin info with schema snapshot",
|
|
"properties": {
|
|
"schema": {
|
|
"type": "object",
|
|
"description": "Schema snapshot at fork time",
|
|
"additionalProperties": true
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"DataTableSchema": {
|
|
"type": "object",
|
|
"required": [
|
|
"datatable_name",
|
|
"schemas"
|
|
],
|
|
"properties": {
|
|
"datatable_name": {
|
|
"type": "string"
|
|
},
|
|
"schemas": {
|
|
"type": "object",
|
|
"description": "Hierarchical schema: schema_name -> table_name -> column_name -> compact_type (e.g. 'int4', 'text?', 'int4?=0')",
|
|
"additionalProperties": {
|
|
"type": "object",
|
|
"description": "Tables in this schema",
|
|
"additionalProperties": {
|
|
"type": "object",
|
|
"description": "Columns in this table",
|
|
"additionalProperties": {
|
|
"type": "string",
|
|
"description": "Compact type: 'type[?][=default]' where ? means nullable"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"error": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"DynamicInputData": {
|
|
"type": "object",
|
|
"properties": {
|
|
"entrypoint_function": {
|
|
"type": "string",
|
|
"description": "Name of the function to execute for dynamic select"
|
|
},
|
|
"args": {
|
|
"type": "object",
|
|
"description": "Arguments to pass to the function"
|
|
},
|
|
"runnable_ref": {
|
|
"type": "object",
|
|
"oneOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"source": {
|
|
"type": "string",
|
|
"enum": [
|
|
"deployed"
|
|
]
|
|
},
|
|
"path": {
|
|
"type": "string",
|
|
"description": "Path to the deployed script or flow"
|
|
},
|
|
"runnable_kind": {
|
|
"$ref": "#/components/schemas/RunnableKind"
|
|
}
|
|
},
|
|
"required": [
|
|
"source",
|
|
"path",
|
|
"runnable_kind"
|
|
]
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"source": {
|
|
"type": "string",
|
|
"enum": [
|
|
"inline"
|
|
]
|
|
},
|
|
"code": {
|
|
"type": "string",
|
|
"description": "Code content for inline execution"
|
|
},
|
|
"language": {
|
|
"$ref": "#/components/schemas/ScriptLang"
|
|
}
|
|
},
|
|
"required": [
|
|
"source",
|
|
"code"
|
|
]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"entrypoint_function",
|
|
"runnable_ref"
|
|
]
|
|
},
|
|
"WindmillLargeFile": {
|
|
"type": "object",
|
|
"properties": {
|
|
"s3": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"s3"
|
|
]
|
|
},
|
|
"WindmillFileMetadata": {
|
|
"type": "object",
|
|
"properties": {
|
|
"mime_type": {
|
|
"type": "string"
|
|
},
|
|
"size_in_bytes": {
|
|
"type": "integer"
|
|
},
|
|
"last_modified": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"expires": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"version_id": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"WindmillFilePreview": {
|
|
"type": "object",
|
|
"properties": {
|
|
"msg": {
|
|
"type": "string"
|
|
},
|
|
"content": {
|
|
"type": "string"
|
|
},
|
|
"content_type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"RawText",
|
|
"Csv",
|
|
"Parquet",
|
|
"Unknown"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"content_type"
|
|
]
|
|
},
|
|
"S3Resource": {
|
|
"type": "object",
|
|
"properties": {
|
|
"bucket": {
|
|
"type": "string"
|
|
},
|
|
"region": {
|
|
"type": "string"
|
|
},
|
|
"endPoint": {
|
|
"type": "string"
|
|
},
|
|
"useSSL": {
|
|
"type": "boolean"
|
|
},
|
|
"accessKey": {
|
|
"type": "string"
|
|
},
|
|
"secretKey": {
|
|
"type": "string"
|
|
},
|
|
"pathStyle": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"required": [
|
|
"bucket",
|
|
"region",
|
|
"endPoint",
|
|
"useSSL",
|
|
"pathStyle"
|
|
]
|
|
},
|
|
"WorkspaceGitSyncSettings": {
|
|
"type": "object",
|
|
"properties": {
|
|
"repositories": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/GitRepositorySettings"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"WorkspaceDeployUISettings": {
|
|
"type": "object",
|
|
"properties": {
|
|
"include_path": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"include_type": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/GitSyncObjectType"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"WorkspaceDefaultScripts": {
|
|
"type": "object",
|
|
"properties": {
|
|
"order": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"hidden": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"default_script_content": {
|
|
"additionalProperties": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"S3PermissionRule": {
|
|
"type": "object",
|
|
"properties": {
|
|
"pattern": {
|
|
"type": "string"
|
|
},
|
|
"allow": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"pattern",
|
|
"allow"
|
|
]
|
|
},
|
|
"GitRepositorySettings": {
|
|
"type": "object",
|
|
"properties": {
|
|
"script_path": {
|
|
"type": "string"
|
|
},
|
|
"git_repo_resource_path": {
|
|
"type": "string"
|
|
},
|
|
"use_individual_branch": {
|
|
"type": "boolean"
|
|
},
|
|
"group_by_folder": {
|
|
"type": "boolean"
|
|
},
|
|
"force_branch": {
|
|
"type": "string"
|
|
},
|
|
"collapsed": {
|
|
"type": "boolean"
|
|
},
|
|
"settings": {
|
|
"type": "object",
|
|
"properties": {
|
|
"include_path": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"include_type": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/GitSyncObjectType"
|
|
}
|
|
},
|
|
"exclude_path": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"extra_include_path": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"exclude_types_override": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/GitSyncObjectType"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"git_repo_resource_path"
|
|
]
|
|
},
|
|
"MetricMetadata": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"id"
|
|
]
|
|
},
|
|
"ScalarMetric": {
|
|
"type": "object",
|
|
"properties": {
|
|
"metric_id": {
|
|
"type": "string"
|
|
},
|
|
"value": {
|
|
"type": "number"
|
|
}
|
|
},
|
|
"required": [
|
|
"id",
|
|
"value"
|
|
]
|
|
},
|
|
"TimeseriesMetric": {
|
|
"type": "object",
|
|
"properties": {
|
|
"metric_id": {
|
|
"type": "string"
|
|
},
|
|
"values": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/MetricDataPoint"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"id",
|
|
"values"
|
|
]
|
|
},
|
|
"MetricDataPoint": {
|
|
"type": "object",
|
|
"properties": {
|
|
"timestamp": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"value": {
|
|
"type": "number"
|
|
}
|
|
},
|
|
"required": [
|
|
"timestamp",
|
|
"value"
|
|
]
|
|
},
|
|
"RawScriptForDependencies": {
|
|
"type": "object",
|
|
"properties": {
|
|
"raw_code": {
|
|
"type": "string"
|
|
},
|
|
"path": {
|
|
"type": "string"
|
|
},
|
|
"language": {
|
|
"$ref": "#/components/schemas/ScriptLang"
|
|
}
|
|
},
|
|
"required": [
|
|
"raw_code",
|
|
"path",
|
|
"language"
|
|
]
|
|
},
|
|
"ConcurrencyGroup": {
|
|
"type": "object",
|
|
"properties": {
|
|
"concurrency_key": {
|
|
"type": "string"
|
|
},
|
|
"total_running": {
|
|
"type": "number"
|
|
}
|
|
},
|
|
"required": [
|
|
"concurrency_key",
|
|
"total_running"
|
|
]
|
|
},
|
|
"ExtendedJobs": {
|
|
"type": "object",
|
|
"properties": {
|
|
"jobs": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/Job"
|
|
}
|
|
},
|
|
"obscured_jobs": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ObscuredJob"
|
|
}
|
|
},
|
|
"omitted_obscured_jobs": {
|
|
"description": "Obscured jobs omitted for security because of too specific filtering",
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"required": [
|
|
"jobs",
|
|
"obscured_jobs"
|
|
]
|
|
},
|
|
"ExportedUser": {
|
|
"type": "object",
|
|
"properties": {
|
|
"email": {
|
|
"type": "string"
|
|
},
|
|
"password_hash": {
|
|
"type": "string"
|
|
},
|
|
"super_admin": {
|
|
"type": "boolean"
|
|
},
|
|
"verified": {
|
|
"type": "boolean"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"company": {
|
|
"type": "string"
|
|
},
|
|
"first_time_user": {
|
|
"type": "boolean"
|
|
},
|
|
"username": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"email",
|
|
"super_admin",
|
|
"verified",
|
|
"first_time_user"
|
|
]
|
|
},
|
|
"GlobalSetting": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"value": {}
|
|
},
|
|
"required": [
|
|
"name",
|
|
"value"
|
|
]
|
|
},
|
|
"InstanceConfig": {
|
|
"type": "object",
|
|
"description": "Unified instance configuration combining global settings and worker group configs",
|
|
"properties": {
|
|
"global_settings": {
|
|
"type": "object",
|
|
"description": "Global settings keyed by setting name. Known fields include base_url, license_key, retention_period_secs, smtp_settings, otel, etc. Unknown fields are preserved as-is.\n",
|
|
"additionalProperties": true
|
|
},
|
|
"worker_configs": {
|
|
"type": "object",
|
|
"description": "Worker group configurations keyed by group name (e.g. \"default\", \"gpu\"). Each value contains worker_tags, init_bash, autoscaling, etc.\n",
|
|
"additionalProperties": {
|
|
"type": "object",
|
|
"additionalProperties": true
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"Config": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"config": {
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"name"
|
|
]
|
|
},
|
|
"ExportedInstanceGroup": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"summary": {
|
|
"type": "string"
|
|
},
|
|
"emails": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"scim_display_name": {
|
|
"type": "string"
|
|
},
|
|
"external_id": {
|
|
"type": "string"
|
|
},
|
|
"instance_role": {
|
|
"type": "string",
|
|
"nullable": true,
|
|
"enum": [
|
|
"superadmin",
|
|
"devops"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"name"
|
|
]
|
|
},
|
|
"JobSearchHit": {
|
|
"type": "object",
|
|
"properties": {
|
|
"dancer": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"LogSearchHit": {
|
|
"type": "object",
|
|
"properties": {
|
|
"dancer": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"AutoscalingEvent": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"format": "int64"
|
|
},
|
|
"worker_group": {
|
|
"type": "string"
|
|
},
|
|
"event_type": {
|
|
"type": "string"
|
|
},
|
|
"desired_workers": {
|
|
"type": "integer"
|
|
},
|
|
"reason": {
|
|
"type": "string"
|
|
},
|
|
"applied_at": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
}
|
|
}
|
|
},
|
|
"CriticalAlert": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"description": "Unique identifier for the alert"
|
|
},
|
|
"alert_type": {
|
|
"type": "string",
|
|
"description": "Type of alert (e.g., critical_error)"
|
|
},
|
|
"message": {
|
|
"type": "string",
|
|
"description": "The message content of the alert"
|
|
},
|
|
"created_at": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"description": "Time when the alert was created"
|
|
},
|
|
"acknowledged": {
|
|
"type": "boolean",
|
|
"nullable": true,
|
|
"description": "Acknowledgment status of the alert, can be true, false, or null if not set"
|
|
},
|
|
"workspace_id": {
|
|
"type": "string",
|
|
"nullable": true,
|
|
"description": "Workspace id if the alert is in the scope of a workspace"
|
|
}
|
|
}
|
|
},
|
|
"CaptureTriggerKind": {
|
|
"type": "string",
|
|
"enum": [
|
|
"webhook",
|
|
"http",
|
|
"websocket",
|
|
"kafka",
|
|
"default_email",
|
|
"nats",
|
|
"postgres",
|
|
"sqs",
|
|
"mqtt",
|
|
"gcp",
|
|
"email"
|
|
]
|
|
},
|
|
"Capture": {
|
|
"type": "object",
|
|
"properties": {
|
|
"trigger_kind": {
|
|
"$ref": "#/components/schemas/CaptureTriggerKind"
|
|
},
|
|
"main_args": {},
|
|
"preprocessor_args": {},
|
|
"id": {
|
|
"type": "integer"
|
|
},
|
|
"created_at": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
}
|
|
},
|
|
"required": [
|
|
"trigger_kind",
|
|
"main_args",
|
|
"preprocessor_args",
|
|
"id",
|
|
"created_at"
|
|
]
|
|
},
|
|
"CaptureConfig": {
|
|
"type": "object",
|
|
"properties": {
|
|
"trigger_config": {},
|
|
"trigger_kind": {
|
|
"$ref": "#/components/schemas/CaptureTriggerKind"
|
|
},
|
|
"error": {
|
|
"type": "string"
|
|
},
|
|
"last_server_ping": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
}
|
|
},
|
|
"required": [
|
|
"trigger_kind"
|
|
]
|
|
},
|
|
"OperatorSettings": {
|
|
"nullable": true,
|
|
"type": "object",
|
|
"required": [
|
|
"runs",
|
|
"schedules",
|
|
"resources",
|
|
"assets",
|
|
"variables",
|
|
"triggers",
|
|
"audit_logs",
|
|
"groups",
|
|
"folders",
|
|
"workers"
|
|
],
|
|
"properties": {
|
|
"runs": {
|
|
"type": "boolean",
|
|
"description": "Whether operators can view runs"
|
|
},
|
|
"schedules": {
|
|
"type": "boolean",
|
|
"description": "Whether operators can view schedules"
|
|
},
|
|
"resources": {
|
|
"type": "boolean",
|
|
"description": "Whether operators can view resources"
|
|
},
|
|
"variables": {
|
|
"type": "boolean",
|
|
"description": "Whether operators can view variables"
|
|
},
|
|
"assets": {
|
|
"type": "boolean",
|
|
"description": "Whether operators can view assets"
|
|
},
|
|
"audit_logs": {
|
|
"type": "boolean",
|
|
"description": "Whether operators can view audit logs"
|
|
},
|
|
"triggers": {
|
|
"type": "boolean",
|
|
"description": "Whether operators can view triggers"
|
|
},
|
|
"groups": {
|
|
"type": "boolean",
|
|
"description": "Whether operators can view groups page"
|
|
},
|
|
"folders": {
|
|
"type": "boolean",
|
|
"description": "Whether operators can view folders page"
|
|
},
|
|
"workers": {
|
|
"type": "boolean",
|
|
"description": "Whether operators can view workers page"
|
|
}
|
|
}
|
|
},
|
|
"WorkspaceComparison": {
|
|
"type": "object",
|
|
"required": [
|
|
"all_ahead_items_visible",
|
|
"all_behind_items_visible",
|
|
"skipped_comparison",
|
|
"diffs",
|
|
"summary"
|
|
],
|
|
"properties": {
|
|
"all_ahead_items_visible": {
|
|
"type": "boolean",
|
|
"description": "All items with changes ahead are visible by the user of the request."
|
|
},
|
|
"all_behind_items_visible": {
|
|
"type": "boolean",
|
|
"description": "All items with changes behind are visible by the user of the request."
|
|
},
|
|
"skipped_comparison": {
|
|
"type": "boolean",
|
|
"description": "Whether the comparison was skipped. This happens with old forks that where not being kept track of"
|
|
},
|
|
"diffs": {
|
|
"type": "array",
|
|
"description": "List of differences found between workspaces",
|
|
"items": {
|
|
"$ref": "#/components/schemas/WorkspaceItemDiff"
|
|
}
|
|
},
|
|
"summary": {
|
|
"$ref": "#/components/schemas/CompareSummary",
|
|
"description": "Summary statistics of the comparison"
|
|
}
|
|
}
|
|
},
|
|
"WorkspaceItemDiff": {
|
|
"type": "object",
|
|
"required": [
|
|
"kind",
|
|
"path",
|
|
"ahead",
|
|
"behind",
|
|
"has_changes",
|
|
"exists_in_source",
|
|
"exists_in_fork"
|
|
],
|
|
"properties": {
|
|
"kind": {
|
|
"type": "string",
|
|
"enum": [
|
|
"script",
|
|
"flow",
|
|
"app",
|
|
"raw_app",
|
|
"resource",
|
|
"variable",
|
|
"resource_type"
|
|
],
|
|
"description": "Type of the item"
|
|
},
|
|
"path": {
|
|
"type": "string",
|
|
"description": "Path of the item in the workspace"
|
|
},
|
|
"ahead": {
|
|
"type": "integer",
|
|
"description": "Number of versions source is ahead of target"
|
|
},
|
|
"behind": {
|
|
"type": "integer",
|
|
"description": "Number of versions source is behind target"
|
|
},
|
|
"has_changes": {
|
|
"type": "boolean",
|
|
"description": "Whether the item has any differences"
|
|
},
|
|
"exists_in_source": {
|
|
"type": "boolean",
|
|
"description": "If the item exists in the source workspace"
|
|
},
|
|
"exists_in_fork": {
|
|
"type": "boolean",
|
|
"description": "If the item exists in the fork workspace"
|
|
}
|
|
}
|
|
},
|
|
"CompareSummary": {
|
|
"type": "object",
|
|
"required": [
|
|
"total_diffs",
|
|
"total_ahead",
|
|
"total_behind",
|
|
"scripts_changed",
|
|
"flows_changed",
|
|
"apps_changed",
|
|
"resources_changed",
|
|
"variables_changed",
|
|
"resource_types_changed",
|
|
"folders_changed",
|
|
"conflicts"
|
|
],
|
|
"properties": {
|
|
"total_diffs": {
|
|
"type": "integer",
|
|
"description": "Total number of items with differences"
|
|
},
|
|
"total_ahead": {
|
|
"type": "integer",
|
|
"description": "Total number of ahead changes"
|
|
},
|
|
"total_behind": {
|
|
"type": "integer",
|
|
"description": "Total number of behind changes"
|
|
},
|
|
"scripts_changed": {
|
|
"type": "integer",
|
|
"description": "Number of scripts with differences"
|
|
},
|
|
"flows_changed": {
|
|
"type": "integer",
|
|
"description": "Number of flows with differences"
|
|
},
|
|
"apps_changed": {
|
|
"type": "integer",
|
|
"description": "Number of apps with differences"
|
|
},
|
|
"resources_changed": {
|
|
"type": "integer",
|
|
"description": "Number of resources with differences"
|
|
},
|
|
"variables_changed": {
|
|
"type": "integer",
|
|
"description": "Number of variables with differences"
|
|
},
|
|
"resource_types_changed": {
|
|
"type": "integer",
|
|
"description": "Number of resource types with differences"
|
|
},
|
|
"folders_changed": {
|
|
"type": "integer",
|
|
"description": "Number of folders with differences"
|
|
},
|
|
"conflicts": {
|
|
"type": "integer",
|
|
"description": "Number of items that are both ahead and behind (conflicts)"
|
|
}
|
|
}
|
|
},
|
|
"TeamInfo": {
|
|
"type": "object",
|
|
"required": [
|
|
"team_id",
|
|
"team_name",
|
|
"channels"
|
|
],
|
|
"properties": {
|
|
"team_id": {
|
|
"type": "string",
|
|
"description": "The unique identifier of the Microsoft Teams team",
|
|
"example": "19:abc123def456@thread.tacv2"
|
|
},
|
|
"team_name": {
|
|
"type": "string",
|
|
"description": "The display name of the Microsoft Teams team",
|
|
"example": "Engineering Team"
|
|
},
|
|
"channels": {
|
|
"type": "array",
|
|
"description": "List of channels within the team",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ChannelInfo"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"ChannelInfo": {
|
|
"type": "object",
|
|
"required": [
|
|
"channel_id",
|
|
"channel_name",
|
|
"tenant_id",
|
|
"service_url"
|
|
],
|
|
"properties": {
|
|
"channel_id": {
|
|
"type": "string",
|
|
"description": "The unique identifier of the channel",
|
|
"example": "19:channel123@thread.tacv2"
|
|
},
|
|
"channel_name": {
|
|
"type": "string",
|
|
"description": "The display name of the channel",
|
|
"example": "General"
|
|
},
|
|
"tenant_id": {
|
|
"type": "string",
|
|
"description": "The Microsoft Teams tenant identifier",
|
|
"example": "12345678-1234-1234-1234-123456789012"
|
|
},
|
|
"service_url": {
|
|
"type": "string",
|
|
"description": "The service URL for the channel",
|
|
"example": "https://smba.trafficmanager.net/amer/12345678-1234-1234-1234-123456789012/"
|
|
}
|
|
}
|
|
},
|
|
"GithubInstallations": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"workspace_id": {
|
|
"type": "string"
|
|
},
|
|
"installation_id": {
|
|
"type": "number"
|
|
},
|
|
"account_id": {
|
|
"type": "string"
|
|
},
|
|
"repositories": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"url": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"name",
|
|
"url"
|
|
]
|
|
}
|
|
},
|
|
"total_count": {
|
|
"type": "number",
|
|
"description": "Total number of repositories available for this installation"
|
|
},
|
|
"per_page": {
|
|
"type": "number",
|
|
"description": "Number of repositories loaded per page"
|
|
},
|
|
"error": {
|
|
"type": "string",
|
|
"description": "Error message if token retrieval failed"
|
|
}
|
|
},
|
|
"required": [
|
|
"installation_id",
|
|
"account_id",
|
|
"repositories",
|
|
"total_count",
|
|
"per_page"
|
|
]
|
|
}
|
|
},
|
|
"WorkspaceGithubInstallation": {
|
|
"type": "object",
|
|
"properties": {
|
|
"account_id": {
|
|
"type": "string"
|
|
},
|
|
"installation_id": {
|
|
"type": "number"
|
|
}
|
|
},
|
|
"required": [
|
|
"account_id",
|
|
"installation_id"
|
|
]
|
|
},
|
|
"S3Object": {
|
|
"type": "object",
|
|
"properties": {
|
|
"s3": {
|
|
"type": "string"
|
|
},
|
|
"filename": {
|
|
"type": "string"
|
|
},
|
|
"storage": {
|
|
"type": "string"
|
|
},
|
|
"presigned": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"s3"
|
|
]
|
|
},
|
|
"TeamsChannel": {
|
|
"type": "object",
|
|
"required": [
|
|
"team_id",
|
|
"team_name",
|
|
"channel_id",
|
|
"channel_name"
|
|
],
|
|
"properties": {
|
|
"team_id": {
|
|
"type": "string",
|
|
"description": "Microsoft Teams team ID",
|
|
"minLength": 1
|
|
},
|
|
"team_name": {
|
|
"type": "string",
|
|
"description": "Microsoft Teams team name",
|
|
"minLength": 1
|
|
},
|
|
"channel_id": {
|
|
"type": "string",
|
|
"description": "Microsoft Teams channel ID",
|
|
"minLength": 1
|
|
},
|
|
"channel_name": {
|
|
"type": "string",
|
|
"description": "Microsoft Teams channel name",
|
|
"minLength": 1
|
|
}
|
|
}
|
|
},
|
|
"AssetUsageKind": {
|
|
"type": "string",
|
|
"enum": [
|
|
"script",
|
|
"flow",
|
|
"job"
|
|
]
|
|
},
|
|
"AssetUsageAccessType": {
|
|
"type": "string",
|
|
"enum": [
|
|
"r",
|
|
"w",
|
|
"rw"
|
|
],
|
|
"nullable": true
|
|
},
|
|
"AssetKind": {
|
|
"type": "string",
|
|
"enum": [
|
|
"s3object",
|
|
"resource",
|
|
"ducklake",
|
|
"datatable",
|
|
"volume"
|
|
]
|
|
},
|
|
"Asset": {
|
|
"type": "object",
|
|
"properties": {
|
|
"path": {
|
|
"type": "string"
|
|
},
|
|
"kind": {
|
|
"$ref": "#/components/schemas/AssetKind"
|
|
}
|
|
},
|
|
"required": [
|
|
"path",
|
|
"kind"
|
|
]
|
|
},
|
|
"Volume": {
|
|
"type": "object",
|
|
"required": [
|
|
"name",
|
|
"size_bytes",
|
|
"file_count",
|
|
"created_at",
|
|
"created_by"
|
|
],
|
|
"properties": {
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"size_bytes": {
|
|
"type": "integer",
|
|
"format": "int64"
|
|
},
|
|
"file_count": {
|
|
"type": "integer"
|
|
},
|
|
"created_at": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"created_by": {
|
|
"type": "string"
|
|
},
|
|
"updated_at": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"nullable": true
|
|
},
|
|
"last_used_at": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"nullable": true
|
|
},
|
|
"extra_perms": {
|
|
"type": "object",
|
|
"additionalProperties": true
|
|
}
|
|
}
|
|
},
|
|
"ProtectionRuleset": {
|
|
"type": "object",
|
|
"description": "A workspace protection rule defining restrictions and bypass permissions",
|
|
"required": [
|
|
"name",
|
|
"rules",
|
|
"bypass_groups",
|
|
"bypass_users"
|
|
],
|
|
"properties": {
|
|
"name": {
|
|
"type": "string",
|
|
"description": "Unique name for the protection rule",
|
|
"example": "Production Protection"
|
|
},
|
|
"workspace_id": {
|
|
"type": "string"
|
|
},
|
|
"rules": {
|
|
"$ref": "#/components/schemas/ProtectionRules"
|
|
},
|
|
"bypass_groups": {
|
|
"$ref": "#/components/schemas/RuleBypasserGroups"
|
|
},
|
|
"bypass_users": {
|
|
"$ref": "#/components/schemas/RuleBypasserUsers"
|
|
}
|
|
}
|
|
},
|
|
"ProtectionRules": {
|
|
"type": "array",
|
|
"description": "Configuration of protection restrictions",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ProtectionRuleKind"
|
|
}
|
|
},
|
|
"ProtectionRuleKind": {
|
|
"type": "string",
|
|
"enum": [
|
|
"DisableDirectDeployment",
|
|
"DisableWorkspaceForking",
|
|
"RestrictDeployToDeployers"
|
|
]
|
|
},
|
|
"RuleBypasserGroups": {
|
|
"type": "array",
|
|
"description": "Groups that can bypass this ruleset",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"RuleBypasserUsers": {
|
|
"type": "array",
|
|
"description": "Users that can bypass this ruleset",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"DeploymentRequestEligibleDeployer": {
|
|
"type": "object",
|
|
"required": [
|
|
"username",
|
|
"email",
|
|
"is_admin"
|
|
],
|
|
"properties": {
|
|
"username": {
|
|
"type": "string"
|
|
},
|
|
"email": {
|
|
"type": "string"
|
|
},
|
|
"is_admin": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"DeploymentRequestAssignee": {
|
|
"type": "object",
|
|
"required": [
|
|
"username",
|
|
"email"
|
|
],
|
|
"properties": {
|
|
"username": {
|
|
"type": "string"
|
|
},
|
|
"email": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"DeploymentRequestComment": {
|
|
"type": "object",
|
|
"required": [
|
|
"id",
|
|
"author",
|
|
"author_email",
|
|
"body",
|
|
"obsolete",
|
|
"created_at"
|
|
],
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"format": "int64"
|
|
},
|
|
"parent_id": {
|
|
"type": "integer",
|
|
"format": "int64",
|
|
"nullable": true
|
|
},
|
|
"author": {
|
|
"type": "string"
|
|
},
|
|
"author_email": {
|
|
"type": "string"
|
|
},
|
|
"body": {
|
|
"type": "string"
|
|
},
|
|
"anchor_kind": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"anchor_path": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"obsolete": {
|
|
"type": "boolean"
|
|
},
|
|
"created_at": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
}
|
|
}
|
|
},
|
|
"DeploymentRequest": {
|
|
"type": "object",
|
|
"required": [
|
|
"id",
|
|
"source_workspace_id",
|
|
"fork_workspace_id",
|
|
"requested_by",
|
|
"requested_by_email",
|
|
"requested_at",
|
|
"assignees",
|
|
"comments"
|
|
],
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"format": "int64"
|
|
},
|
|
"source_workspace_id": {
|
|
"type": "string"
|
|
},
|
|
"fork_workspace_id": {
|
|
"type": "string"
|
|
},
|
|
"requested_by": {
|
|
"type": "string"
|
|
},
|
|
"requested_by_email": {
|
|
"type": "string"
|
|
},
|
|
"requested_at": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"assignees": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/DeploymentRequestAssignee"
|
|
}
|
|
},
|
|
"comments": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/DeploymentRequestComment"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"QuotaInfo": {
|
|
"type": "object",
|
|
"properties": {
|
|
"used": {
|
|
"type": "integer"
|
|
},
|
|
"limit": {
|
|
"type": "integer"
|
|
},
|
|
"prunable": {
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"required": [
|
|
"used",
|
|
"limit",
|
|
"prunable"
|
|
]
|
|
},
|
|
"NativeServiceName": {
|
|
"type": "string",
|
|
"enum": [
|
|
"nextcloud",
|
|
"google"
|
|
]
|
|
},
|
|
"NativeTrigger": {
|
|
"type": "object",
|
|
"description": "A native trigger stored in Windmill",
|
|
"properties": {
|
|
"external_id": {
|
|
"type": "string",
|
|
"description": "The unique identifier from the external service"
|
|
},
|
|
"workspace_id": {
|
|
"type": "string",
|
|
"description": "The workspace this trigger belongs to"
|
|
},
|
|
"service_name": {
|
|
"$ref": "#/components/schemas/NativeServiceName"
|
|
},
|
|
"script_path": {
|
|
"type": "string",
|
|
"description": "The path to the script or flow that will be triggered"
|
|
},
|
|
"is_flow": {
|
|
"type": "boolean",
|
|
"description": "Whether the trigger targets a flow (true) or a script (false)"
|
|
},
|
|
"service_config": {
|
|
"type": "object",
|
|
"description": "Configuration for the trigger including event_type and service_config",
|
|
"additionalProperties": true
|
|
},
|
|
"error": {
|
|
"type": "string",
|
|
"nullable": true,
|
|
"description": "Error message if the trigger is in an error state"
|
|
},
|
|
"summary": {
|
|
"type": "string",
|
|
"nullable": true,
|
|
"description": "Short summary to be displayed when listed"
|
|
}
|
|
},
|
|
"required": [
|
|
"external_id",
|
|
"workspace_id",
|
|
"service_name",
|
|
"script_path",
|
|
"is_flow",
|
|
"service_config"
|
|
]
|
|
},
|
|
"NativeTriggerWithExternal": {
|
|
"type": "object",
|
|
"description": "Full trigger response containing both Windmill data and external service data",
|
|
"properties": {
|
|
"external_id": {
|
|
"type": "string",
|
|
"description": "The unique identifier from the external service"
|
|
},
|
|
"workspace_id": {
|
|
"type": "string",
|
|
"description": "The workspace this trigger belongs to"
|
|
},
|
|
"service_name": {
|
|
"$ref": "#/components/schemas/NativeServiceName"
|
|
},
|
|
"script_path": {
|
|
"type": "string",
|
|
"description": "The path to the script or flow that will be triggered"
|
|
},
|
|
"is_flow": {
|
|
"type": "boolean",
|
|
"description": "Whether the trigger targets a flow (true) or a script (false)"
|
|
},
|
|
"service_config": {
|
|
"type": "object",
|
|
"description": "Configuration for the trigger including event_type and service_config",
|
|
"additionalProperties": true
|
|
},
|
|
"error": {
|
|
"type": "string",
|
|
"nullable": true,
|
|
"description": "Error message if the trigger is in an error state"
|
|
},
|
|
"summary": {
|
|
"type": "string",
|
|
"nullable": true,
|
|
"description": "Short summary to be displayed when listed"
|
|
},
|
|
"external_data": {
|
|
"type": "object",
|
|
"description": "Configuration data from the external service",
|
|
"additionalProperties": true
|
|
}
|
|
},
|
|
"required": [
|
|
"external_id",
|
|
"workspace_id",
|
|
"service_name",
|
|
"script_path",
|
|
"is_flow",
|
|
"service_config",
|
|
"external_data"
|
|
]
|
|
},
|
|
"WorkspaceIntegrations": {
|
|
"type": "object",
|
|
"properties": {
|
|
"service_name": {
|
|
"$ref": "#/components/schemas/NativeServiceName"
|
|
},
|
|
"oauth_data": {
|
|
"nullable": true,
|
|
"$ref": "#/components/schemas/WorkspaceOAuthConfig"
|
|
},
|
|
"resource_path": {
|
|
"type": "string",
|
|
"nullable": true,
|
|
"description": "Path to the resource storing the OAuth token"
|
|
}
|
|
},
|
|
"required": [
|
|
"service_name"
|
|
]
|
|
},
|
|
"WorkspaceOAuthConfig": {
|
|
"type": "object",
|
|
"properties": {
|
|
"client_id": {
|
|
"type": "string",
|
|
"description": "The OAuth client ID for the workspace"
|
|
},
|
|
"client_secret": {
|
|
"type": "string",
|
|
"description": "The OAuth client secret for the workspace"
|
|
},
|
|
"base_url": {
|
|
"type": "string",
|
|
"format": "uri",
|
|
"description": "The base URL of the workspace"
|
|
},
|
|
"redirect_uri": {
|
|
"type": "string",
|
|
"format": "uri",
|
|
"description": "The OAuth redirect URI"
|
|
}
|
|
},
|
|
"required": [
|
|
"client_id",
|
|
"client_secret",
|
|
"base_url",
|
|
"redirect_uri"
|
|
]
|
|
},
|
|
"WebhookEvent": {
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"webhook"
|
|
]
|
|
},
|
|
"request_type": {
|
|
"$ref": "#/components/schemas/WebhookRequestType"
|
|
}
|
|
},
|
|
"required": [
|
|
"type",
|
|
"request_type"
|
|
]
|
|
},
|
|
"WebhookRequestType": {
|
|
"type": "string",
|
|
"description": "The type of webhook request (define possible values here)",
|
|
"enum": [
|
|
"async",
|
|
"sync"
|
|
]
|
|
},
|
|
"RedirectUri": {
|
|
"type": "object",
|
|
"properties": {
|
|
"redirect_uri": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"redirect_uri"
|
|
]
|
|
},
|
|
"NativeTriggerData": {
|
|
"type": "object",
|
|
"description": "Data for creating or updating a native trigger",
|
|
"properties": {
|
|
"script_path": {
|
|
"type": "string",
|
|
"description": "The path to the script or flow that will be triggered"
|
|
},
|
|
"is_flow": {
|
|
"type": "boolean",
|
|
"description": "Whether the trigger targets a flow (true) or a script (false)"
|
|
},
|
|
"service_config": {
|
|
"type": "object",
|
|
"description": "Service-specific configuration (e.g., event types, filters)",
|
|
"additionalProperties": true
|
|
},
|
|
"summary": {
|
|
"type": "string",
|
|
"nullable": true,
|
|
"description": "Short summary to be displayed when listed"
|
|
}
|
|
},
|
|
"required": [
|
|
"script_path",
|
|
"is_flow",
|
|
"service_config"
|
|
]
|
|
},
|
|
"CreateTriggerResponse": {
|
|
"type": "object",
|
|
"description": "Response returned when a native trigger is created",
|
|
"properties": {
|
|
"external_id": {
|
|
"type": "string",
|
|
"description": "The external ID of the created trigger from the external service"
|
|
}
|
|
},
|
|
"required": [
|
|
"external_id"
|
|
]
|
|
},
|
|
"SyncResult": {
|
|
"type": "object",
|
|
"properties": {
|
|
"already_in_sync": {
|
|
"type": "boolean"
|
|
},
|
|
"added_count": {
|
|
"type": "integer"
|
|
},
|
|
"added_triggers": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"total_external": {
|
|
"type": "integer"
|
|
},
|
|
"total_windmill": {
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"required": [
|
|
"already_in_sync",
|
|
"added_count",
|
|
"added_triggers",
|
|
"total_external",
|
|
"total_windmill"
|
|
]
|
|
},
|
|
"NextCloudEventType": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"category": {
|
|
"type": "string"
|
|
},
|
|
"path": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"id",
|
|
"name",
|
|
"path"
|
|
]
|
|
},
|
|
"GoogleCalendarEntry": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"summary": {
|
|
"type": "string"
|
|
},
|
|
"primary": {
|
|
"type": "boolean",
|
|
"default": false
|
|
}
|
|
},
|
|
"required": [
|
|
"id",
|
|
"summary"
|
|
]
|
|
},
|
|
"GoogleDriveFile": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"mime_type": {
|
|
"type": "string"
|
|
},
|
|
"is_folder": {
|
|
"type": "boolean",
|
|
"default": false
|
|
}
|
|
},
|
|
"required": [
|
|
"id",
|
|
"name",
|
|
"mime_type"
|
|
]
|
|
},
|
|
"GoogleDriveFilesResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"files": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/GoogleDriveFile"
|
|
}
|
|
},
|
|
"next_page_token": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"files"
|
|
]
|
|
},
|
|
"SharedDriveEntry": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"id",
|
|
"name"
|
|
]
|
|
},
|
|
"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": {
|
|
"value": {
|
|
"description": "The static value. For resources, use format '$res:path/to/resource'"
|
|
},
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"static"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"type"
|
|
]
|
|
},
|
|
"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": {
|
|
"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"
|
|
]
|
|
},
|
|
"schemas-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"
|
|
]
|
|
},
|
|
"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": "#/components/schemas/schemas-StaticTransform"
|
|
},
|
|
{
|
|
"$ref": "#/components/schemas/schemas-JavascriptTransform"
|
|
},
|
|
{
|
|
"$ref": "#/components/schemas/schemas-AiTransform"
|
|
}
|
|
],
|
|
"discriminator": {
|
|
"propertyName": "type",
|
|
"mapping": {
|
|
"static": "#/components/schemas/schemas-StaticTransform",
|
|
"javascript": "#/components/schemas/schemas-JavascriptTransform",
|
|
"ai": "#/components/schemas/schemas-AiTransform"
|
|
}
|
|
}
|
|
},
|
|
"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": {
|
|
"input_transforms": {
|
|
"type": "object",
|
|
"description": "Map of parameter names to their values (static or JavaScript expressions). These become the script's input arguments",
|
|
"additionalProperties": {
|
|
"$ref": "#/components/schemas/schemas-InputTransform"
|
|
}
|
|
},
|
|
"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",
|
|
"rlang",
|
|
"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",
|
|
"volume"
|
|
]
|
|
},
|
|
"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"
|
|
]
|
|
},
|
|
"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": {
|
|
"input_transforms": {
|
|
"type": "object",
|
|
"description": "Map of parameter names to their values (static or JavaScript expressions). These become the script's input arguments",
|
|
"additionalProperties": {
|
|
"$ref": "#/components/schemas/schemas-InputTransform"
|
|
}
|
|
},
|
|
"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"
|
|
]
|
|
},
|
|
"schemas-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": {
|
|
"$ref": "#/components/schemas/schemas-InputTransform"
|
|
}
|
|
},
|
|
"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"
|
|
]
|
|
},
|
|
"schemas-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": {
|
|
"$ref": "#/components/schemas/schemas-FlowModuleValue"
|
|
},
|
|
"stop_after_if": {
|
|
"description": "Early termination condition evaluated after this step completes",
|
|
"$ref": "#/components/schemas/schemas-StopAfterIf"
|
|
},
|
|
"stop_after_all_iters_if": {
|
|
"description": "For loops only - early termination condition evaluated after all iterations complete",
|
|
"$ref": "#/components/schemas/schemas-StopAfterIf"
|
|
},
|
|
"skip_if": {
|
|
"type": "object",
|
|
"description": "Conditionally skip this step based on previous results or flow inputs",
|
|
"properties": {
|
|
"expr": {
|
|
"type": "string",
|
|
"description": "JavaScript expression that returns true to skip. Can use 'flow_input' or 'results.<step_id>'"
|
|
}
|
|
},
|
|
"required": [
|
|
"expr"
|
|
]
|
|
},
|
|
"sleep": {
|
|
"description": "Delay before executing this step (in seconds or as expression)",
|
|
"$ref": "#/components/schemas/schemas-InputTransform"
|
|
},
|
|
"cache_ttl": {
|
|
"type": "number",
|
|
"description": "Cache duration in seconds for this step's results"
|
|
},
|
|
"cache_ignore_s3_path": {
|
|
"type": "boolean"
|
|
},
|
|
"timeout": {
|
|
"description": "Maximum execution time in seconds (static value or expression)",
|
|
"$ref": "#/components/schemas/schemas-InputTransform"
|
|
},
|
|
"delete_after_secs": {
|
|
"type": "integer",
|
|
"description": "If set, delete the step's args, result and logs after this many seconds following job completion"
|
|
},
|
|
"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": "Expression or list of groups that can approve",
|
|
"$ref": "#/components/schemas/schemas-InputTransform"
|
|
},
|
|
"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 if this step fails",
|
|
"$ref": "#/components/schemas/schemas-Retry"
|
|
},
|
|
"debouncing": {
|
|
"description": "Debounce configuration for this step (EE only)",
|
|
"type": "object",
|
|
"properties": {
|
|
"debounce_delay_s": {
|
|
"type": "integer",
|
|
"description": "Delay in seconds to debounce this step's executions across flow runs"
|
|
},
|
|
"debounce_key": {
|
|
"type": "string",
|
|
"description": "Expression to group debounced executions. Supports $workspace and $args[name]. Default: $workspace/flow/<flow_path>-<step_id>"
|
|
},
|
|
"debounce_args_to_accumulate": {
|
|
"type": "array",
|
|
"description": "Array-type arguments to accumulate across debounced executions",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"max_total_debouncing_time": {
|
|
"type": "integer",
|
|
"description": "Maximum total time in seconds before forced execution"
|
|
},
|
|
"max_total_debounces_amount": {
|
|
"type": "integer",
|
|
"description": "Maximum number of debounces before forced execution"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"value",
|
|
"id"
|
|
]
|
|
},
|
|
"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": {
|
|
"modules": {
|
|
"type": "array",
|
|
"description": "Steps to execute for each iteration. These can reference the iteration value via 'flow_input.iter.value'",
|
|
"items": {
|
|
"$ref": "#/components/schemas/schemas-FlowModule"
|
|
}
|
|
},
|
|
"iterator": {
|
|
"description": "JavaScript expression that returns an array to iterate over. Can reference 'results.step_id' or 'flow_input'",
|
|
"$ref": "#/components/schemas/schemas-InputTransform"
|
|
},
|
|
"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": "Maximum number of concurrent iterations when parallel=true. Limits resource usage. Can be static number or expression",
|
|
"$ref": "#/components/schemas/schemas-InputTransform"
|
|
},
|
|
"squash": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"required": [
|
|
"modules",
|
|
"iterator",
|
|
"skip_failures",
|
|
"type"
|
|
]
|
|
},
|
|
"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": {
|
|
"modules": {
|
|
"type": "array",
|
|
"description": "Steps to execute in each iteration. Use stop_after_if to control when the loop ends",
|
|
"items": {
|
|
"$ref": "#/components/schemas/schemas-FlowModule"
|
|
}
|
|
},
|
|
"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": "Maximum number of concurrent iterations when parallel=true",
|
|
"$ref": "#/components/schemas/schemas-InputTransform"
|
|
},
|
|
"squash": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"required": [
|
|
"modules",
|
|
"skip_failures",
|
|
"type"
|
|
]
|
|
},
|
|
"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": {
|
|
"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": {
|
|
"$ref": "#/components/schemas/schemas-FlowModule"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"modules",
|
|
"expr"
|
|
]
|
|
}
|
|
},
|
|
"default": {
|
|
"type": "array",
|
|
"description": "Steps to execute if no branch expressions match",
|
|
"items": {
|
|
"$ref": "#/components/schemas/schemas-FlowModule"
|
|
}
|
|
},
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"branchone"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"branches",
|
|
"default",
|
|
"type"
|
|
]
|
|
},
|
|
"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": {
|
|
"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": {
|
|
"$ref": "#/components/schemas/schemas-FlowModule"
|
|
}
|
|
}
|
|
},
|
|
"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"
|
|
]
|
|
},
|
|
"schemas-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"
|
|
]
|
|
},
|
|
"AIProviderKind": {
|
|
"type": "string",
|
|
"description": "Supported AI provider types",
|
|
"enum": [
|
|
"openai",
|
|
"azure_openai",
|
|
"anthropic",
|
|
"mistral",
|
|
"deepseek",
|
|
"googleai",
|
|
"groq",
|
|
"openrouter",
|
|
"togetherai",
|
|
"customai",
|
|
"aws_bedrock"
|
|
]
|
|
},
|
|
"schemas-ProviderConfig": {
|
|
"type": "object",
|
|
"description": "Complete AI provider configuration with resource reference and model selection",
|
|
"properties": {
|
|
"kind": {
|
|
"$ref": "#/components/schemas/AIProviderKind"
|
|
},
|
|
"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"
|
|
]
|
|
},
|
|
"StaticProviderTransform": {
|
|
"type": "object",
|
|
"description": "Static provider configuration passed directly to the AI agent",
|
|
"properties": {
|
|
"value": {
|
|
"$ref": "#/components/schemas/schemas-ProviderConfig"
|
|
},
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"static"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"type",
|
|
"value"
|
|
]
|
|
},
|
|
"ProviderTransform": {
|
|
"description": "Provider configuration - can be static (ProviderConfig), JavaScript expression, or AI-determined",
|
|
"oneOf": [
|
|
{
|
|
"$ref": "#/components/schemas/StaticProviderTransform"
|
|
},
|
|
{
|
|
"$ref": "#/components/schemas/schemas-JavascriptTransform"
|
|
},
|
|
{
|
|
"$ref": "#/components/schemas/schemas-AiTransform"
|
|
}
|
|
],
|
|
"discriminator": {
|
|
"propertyName": "type",
|
|
"mapping": {
|
|
"static": "#/components/schemas/StaticProviderTransform",
|
|
"javascript": "#/components/schemas/schemas-JavascriptTransform",
|
|
"ai": "#/components/schemas/schemas-AiTransform"
|
|
}
|
|
}
|
|
},
|
|
"MemoryOff": {
|
|
"type": "object",
|
|
"description": "No conversation memory/context",
|
|
"properties": {
|
|
"kind": {
|
|
"type": "string",
|
|
"enum": [
|
|
"off"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"kind"
|
|
]
|
|
},
|
|
"MemoryAuto": {
|
|
"type": "object",
|
|
"description": "Automatic context management",
|
|
"properties": {
|
|
"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": [
|
|
"kind"
|
|
]
|
|
},
|
|
"MemoryMessage": {
|
|
"type": "object",
|
|
"description": "A single message in conversation history",
|
|
"properties": {
|
|
"role": {
|
|
"type": "string",
|
|
"enum": [
|
|
"user",
|
|
"assistant",
|
|
"system"
|
|
]
|
|
},
|
|
"content": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"role",
|
|
"content"
|
|
]
|
|
},
|
|
"MemoryManual": {
|
|
"type": "object",
|
|
"description": "Explicit message history",
|
|
"properties": {
|
|
"kind": {
|
|
"type": "string",
|
|
"enum": [
|
|
"manual"
|
|
]
|
|
},
|
|
"messages": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/MemoryMessage"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"kind",
|
|
"messages"
|
|
]
|
|
},
|
|
"schemas-MemoryConfig": {
|
|
"description": "Conversation memory configuration",
|
|
"oneOf": [
|
|
{
|
|
"$ref": "#/components/schemas/MemoryOff"
|
|
},
|
|
{
|
|
"$ref": "#/components/schemas/MemoryAuto"
|
|
},
|
|
{
|
|
"$ref": "#/components/schemas/MemoryManual"
|
|
}
|
|
],
|
|
"discriminator": {
|
|
"propertyName": "kind",
|
|
"mapping": {
|
|
"off": "#/components/schemas/MemoryOff",
|
|
"auto": "#/components/schemas/MemoryAuto",
|
|
"manual": "#/components/schemas/MemoryManual"
|
|
}
|
|
}
|
|
},
|
|
"StaticMemoryTransform": {
|
|
"type": "object",
|
|
"description": "Static memory configuration passed directly to the AI agent",
|
|
"properties": {
|
|
"value": {
|
|
"$ref": "#/components/schemas/schemas-MemoryConfig"
|
|
},
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"static"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"type",
|
|
"value"
|
|
]
|
|
},
|
|
"MemoryTransform": {
|
|
"description": "Memory configuration - can be static (MemoryConfig), JavaScript expression, or AI-determined",
|
|
"oneOf": [
|
|
{
|
|
"$ref": "#/components/schemas/StaticMemoryTransform"
|
|
},
|
|
{
|
|
"$ref": "#/components/schemas/schemas-JavascriptTransform"
|
|
},
|
|
{
|
|
"$ref": "#/components/schemas/schemas-AiTransform"
|
|
}
|
|
],
|
|
"discriminator": {
|
|
"propertyName": "type",
|
|
"mapping": {
|
|
"static": "#/components/schemas/StaticMemoryTransform",
|
|
"javascript": "#/components/schemas/schemas-JavascriptTransform",
|
|
"ai": "#/components/schemas/schemas-AiTransform"
|
|
}
|
|
}
|
|
},
|
|
"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": "#/components/schemas/schemas-RawScript"
|
|
},
|
|
{
|
|
"$ref": "#/components/schemas/schemas-PathScript"
|
|
},
|
|
{
|
|
"$ref": "#/components/schemas/schemas-PathFlow"
|
|
},
|
|
{
|
|
"$ref": "#/components/schemas/schemas-ForloopFlow"
|
|
},
|
|
{
|
|
"$ref": "#/components/schemas/schemas-WhileloopFlow"
|
|
},
|
|
{
|
|
"$ref": "#/components/schemas/schemas-BranchOne"
|
|
},
|
|
{
|
|
"$ref": "#/components/schemas/schemas-BranchAll"
|
|
},
|
|
{
|
|
"$ref": "#/components/schemas/schemas-Identity"
|
|
},
|
|
{
|
|
"$ref": "#/components/schemas/schemas-AiAgent"
|
|
}
|
|
],
|
|
"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"
|
|
}
|
|
}
|
|
},
|
|
"FlowModuleTool": {
|
|
"description": "A tool implemented as a flow module (script, flow, etc.). The AI can call this like any other flow module",
|
|
"allOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"tool_type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"flowmodule"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"tool_type"
|
|
]
|
|
},
|
|
{
|
|
"$ref": "#/components/schemas/schemas-FlowModuleValue"
|
|
}
|
|
]
|
|
},
|
|
"McpToolValue": {
|
|
"type": "object",
|
|
"description": "Reference to an external MCP (Model Context Protocol) tool. The AI can call tools from MCP servers",
|
|
"properties": {
|
|
"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": [
|
|
"tool_type",
|
|
"resource_path"
|
|
]
|
|
},
|
|
"WebsearchToolValue": {
|
|
"type": "object",
|
|
"description": "A tool implemented as a websearch tool. The AI can call this like any other websearch tool",
|
|
"properties": {
|
|
"tool_type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"websearch"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"tool_type"
|
|
]
|
|
},
|
|
"ToolValue": {
|
|
"description": "The implementation of a tool. Can be a flow module (script/flow) or an MCP tool reference",
|
|
"oneOf": [
|
|
{
|
|
"$ref": "#/components/schemas/FlowModuleTool"
|
|
},
|
|
{
|
|
"$ref": "#/components/schemas/McpToolValue"
|
|
},
|
|
{
|
|
"$ref": "#/components/schemas/WebsearchToolValue"
|
|
}
|
|
],
|
|
"discriminator": {
|
|
"propertyName": "tool_type",
|
|
"mapping": {
|
|
"flowmodule": "#/components/schemas/FlowModuleTool",
|
|
"mcp": "#/components/schemas/McpToolValue",
|
|
"websearch": "#/components/schemas/WebsearchToolValue"
|
|
}
|
|
}
|
|
},
|
|
"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": {
|
|
"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": {
|
|
"$ref": "#/components/schemas/ToolValue"
|
|
}
|
|
},
|
|
"required": [
|
|
"id",
|
|
"value"
|
|
]
|
|
},
|
|
"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": {
|
|
"input_transforms": {
|
|
"type": "object",
|
|
"description": "Input parameters for the AI agent mapped to their values",
|
|
"properties": {
|
|
"provider": {
|
|
"$ref": "#/components/schemas/ProviderTransform"
|
|
},
|
|
"output_type": {
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/schemas-InputTransform"
|
|
}
|
|
],
|
|
"description": "Output format type.\nValid values: 'text' (default) - plain text response, 'image' - image generation\n"
|
|
},
|
|
"user_message": {
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/schemas-InputTransform"
|
|
}
|
|
],
|
|
"description": "The user's prompt/message to the AI agent. Supports variable interpolation with flow.input syntax."
|
|
},
|
|
"system_prompt": {
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/schemas-InputTransform"
|
|
}
|
|
],
|
|
"description": "System instructions that guide the AI's behavior, persona, and response style. Optional."
|
|
},
|
|
"streaming": {
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/schemas-InputTransform"
|
|
}
|
|
],
|
|
"description": "Boolean. If true, stream the AI response incrementally.\nStreaming events include: token_delta, tool_call, tool_call_arguments, tool_execution, tool_result\n"
|
|
},
|
|
"memory": {
|
|
"$ref": "#/components/schemas/MemoryTransform"
|
|
},
|
|
"output_schema": {
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/schemas-InputTransform"
|
|
}
|
|
],
|
|
"description": "JSON Schema object defining structured output format. Used when you need the AI to return data in a specific shape.\nSupports standard JSON Schema properties: type, properties, required, items, enum, pattern, minLength, maxLength, minimum, maximum, etc.\nExample: { type: 'object', properties: { name: { type: 'string' }, age: { type: 'integer' } }, required: ['name'] }\n"
|
|
},
|
|
"user_attachments": {
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/schemas-InputTransform"
|
|
}
|
|
],
|
|
"description": "Array of file references (images or PDFs) for the AI agent.\nFormat: Array<{ bucket: string, key: string }> - S3 object references\nExample: [{ bucket: 'my-bucket', key: 'documents/report.pdf' }]\n"
|
|
},
|
|
"max_completion_tokens": {
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/schemas-InputTransform"
|
|
}
|
|
],
|
|
"description": "Integer. Maximum number of tokens the AI will generate in its response.\nRange: 1 to 4,294,967,295. Typical values: 256-4096 for most use cases.\n"
|
|
},
|
|
"temperature": {
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/schemas-InputTransform"
|
|
}
|
|
],
|
|
"description": "Float. Controls randomness/creativity of responses.\nRange: 0.0 to 2.0 (provider-dependent)\n- 0.0 = deterministic, focused responses\n- 0.7 = balanced (common default)\n- 1.0+ = more creative/random\n"
|
|
}
|
|
},
|
|
"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": {
|
|
"$ref": "#/components/schemas/AgentTool"
|
|
}
|
|
},
|
|
"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"
|
|
]
|
|
},
|
|
"schemas-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",
|
|
"nullable": true,
|
|
"description": "Custom error message when stopping with an error. Mutually exclusive with skip_if_stopped. If set to a non-empty string, the flow stops with this error. If empty string, a default error message is used. If null or omitted, no error is raised."
|
|
}
|
|
},
|
|
"required": [
|
|
"expr"
|
|
]
|
|
},
|
|
"RetryIf": {
|
|
"type": "object",
|
|
"description": "Conditional retry based on error or result",
|
|
"properties": {
|
|
"expr": {
|
|
"type": "string",
|
|
"description": "JavaScript expression that returns true to retry. Has access to 'result' and 'error' variables"
|
|
}
|
|
},
|
|
"required": [
|
|
"expr"
|
|
]
|
|
},
|
|
"schemas-Retry": {
|
|
"type": "object",
|
|
"description": "Retry configuration for failed module executions",
|
|
"properties": {
|
|
"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": {
|
|
"$ref": "#/components/schemas/RetryIf"
|
|
}
|
|
}
|
|
},
|
|
"schemas-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"
|
|
]
|
|
},
|
|
"FlowGroup": {
|
|
"type": "object",
|
|
"description": "A semantic group of flow modules for organizational purposes. Does not affect execution — modules remain in their original position in the flow. Groups provide naming and collapsibility in the editor. Members are computed dynamically from all nodes on paths between start_id and end_id.",
|
|
"properties": {
|
|
"summary": {
|
|
"type": "string",
|
|
"description": "Display name for this group"
|
|
},
|
|
"note": {
|
|
"type": "string",
|
|
"description": "Markdown note shown below the group header"
|
|
},
|
|
"autocollapse": {
|
|
"type": "boolean",
|
|
"default": false,
|
|
"description": "If true, this group is collapsed by default in the flow editor. UI hint only."
|
|
},
|
|
"start_id": {
|
|
"type": "string",
|
|
"description": "ID of the first flow module in this group (topological entry point)"
|
|
},
|
|
"end_id": {
|
|
"type": "string",
|
|
"description": "ID of the last flow module in this group (topological exit point)"
|
|
},
|
|
"color": {
|
|
"type": "string",
|
|
"description": "Color for the group in the flow editor"
|
|
}
|
|
},
|
|
"required": [
|
|
"start_id",
|
|
"end_id"
|
|
]
|
|
},
|
|
"schemas-FlowValue": {
|
|
"type": "object",
|
|
"description": "The flow structure containing modules and optional preprocessor/failure handlers",
|
|
"properties": {
|
|
"modules": {
|
|
"type": "array",
|
|
"description": "Array of steps that execute in sequence. Each step can be a script, subflow, loop, or branch",
|
|
"items": {
|
|
"$ref": "#/components/schemas/schemas-FlowModule"
|
|
}
|
|
},
|
|
"failure_module": {
|
|
"description": "Special module that executes when the flow fails. Receives error object with message, name, stack, and step_id. Must have id 'failure'. Only supports script/rawscript types",
|
|
"$ref": "#/components/schemas/schemas-FlowModule"
|
|
},
|
|
"preprocessor_module": {
|
|
"description": "Special module that runs before the first step on external triggers. Must have id 'preprocessor'. Only supports script/rawscript types. Cannot reference other step results",
|
|
"$ref": "#/components/schemas/schemas-FlowModule"
|
|
},
|
|
"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": "integer",
|
|
"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": "integer",
|
|
"description": "Maximum total time in seconds that a job can be debounced"
|
|
},
|
|
"max_total_debounces_amount": {
|
|
"type": "integer",
|
|
"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"
|
|
},
|
|
"delete_after_secs": {
|
|
"type": "integer",
|
|
"description": "If set, delete the flow job's args, result and logs after this many seconds following job completion"
|
|
},
|
|
"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": {
|
|
"$ref": "#/components/schemas/schemas-FlowNote"
|
|
}
|
|
},
|
|
"groups": {
|
|
"type": "array",
|
|
"description": "Semantic groups of modules for organizational purposes",
|
|
"items": {
|
|
"$ref": "#/components/schemas/FlowGroup"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"modules"
|
|
]
|
|
},
|
|
"schemas-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"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
} |