diff --git a/backend/windmill-api/openapi-deref.json b/backend/windmill-api/openapi-deref.json index 328f3f70f5..db789c2163 100644 --- a/backend/windmill-api/openapi-deref.json +++ b/backend/windmill-api/openapi-deref.json @@ -1,7 +1,7 @@ { "openapi": "3.0.3", "info": { - "version": "1.304.2", + "version": "1.409.0", "title": "Windmill API", "contact": { "name": "Windmill Team", @@ -176,6 +176,22 @@ { "$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" }, @@ -501,6 +517,9 @@ "properties": { "is_super_admin": { "type": "boolean" + }, + "name": { + "type": "string" } } } @@ -660,6 +679,65 @@ } } }, + "/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" + } + } + } + } + } + } + } + }, "/w/{workspace}/users/delete/{username}": { "delete": { "summary": "delete user (require admin privilege)", @@ -1061,6 +1139,49 @@ } } }, + "/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/test_license_key": { "post": { "summary": "test license key", @@ -1155,6 +1276,103 @@ } } }, + "/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", @@ -1187,6 +1405,30 @@ } } }, + "/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" + } + } + } + } + } + } + } + }, "/users/email": { "get": { "summary": "get current user email (if logged in)", @@ -2122,6 +2364,9 @@ "git_sync": { "$ref": "#/components/schemas/WorkspaceGitSyncSettings" }, + "deploy_ui": { + "$ref": "#/components/schemas/WorkspaceDeployUISettings" + }, "default_app": { "type": "string" }, @@ -2730,6 +2975,46 @@ } } }, + "/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", @@ -2934,6 +3219,9 @@ "properties": { "new_key": { "type": "string" + }, + "skip_reencrypt": { + "type": "boolean" } }, "required": [ @@ -3127,6 +3415,40 @@ } } }, + "/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" + } + } + } + } + } + } + }, "/users/tokens/create": { "post": { "summary": "create token", @@ -3236,6 +3558,12 @@ "schema": { "type": "boolean" } + }, + { + "$ref": "#/components/parameters/Page" + }, + { + "$ref": "#/components/parameters/PerPage" } ], "responses": { @@ -3559,6 +3887,19 @@ "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" + }, + { + "name": "path_start", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "$ref": "#/components/parameters/Page" + }, + { + "$ref": "#/components/parameters/PerPage" } ], "responses": { @@ -3710,6 +4051,50 @@ } } }, + "/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", @@ -3944,6 +4329,7 @@ "required": [ "type" ] + } }, "saml": { "type": "string" @@ -3972,19 +4358,50 @@ "content": { "application/json": { "schema": { - "additionalProperties": { - "type": "object", - "properties": { - "extra_params": { - "additionalProperties": { - "type": "string" - } - }, - "scopes": { - "type": "array", - "items": { - "type": "string" - } + "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" } } } @@ -4304,6 +4721,13 @@ "schema": { "type": "string" } + }, + { + "name": "path_start", + "in": "query", + "schema": { + "type": "string" + } } ], "responses": { @@ -4443,6 +4867,30 @@ } } }, + "/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 ext", + "content": { + "application/json": { + "schema": {} + } + } + } + } + } + }, "/w/{workspace}/resources/type/delete/{path}": { "delete": { "summary": "delete resource_type", @@ -5291,7 +5739,23 @@ }, { "name": "show_archived", - "description": "(default false)\nshow also the archived files.\nwhen multiple archived hash share the same path, only the ones with the latest create_at\nare \ned.\n", + "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" @@ -5320,6 +5784,14 @@ "schema": { "type": "boolean" } + }, + { + "name": "with_deployment_msg", + "description": "(default false)\ninclude deployment message\n", + "in": "query", + "schema": { + "type": "boolean" + } } ], "responses": { @@ -5745,6 +6217,13 @@ }, { "$ref": "#/components/parameters/ScriptPath" + }, + { + "name": "with_starred_info", + "in": "query", + "schema": { + "type": "boolean" + } } ], "responses": { @@ -5761,6 +6240,67 @@ } } }, + "/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", @@ -5973,6 +6513,13 @@ }, { "$ref": "#/components/parameters/ScriptHash" + }, + { + "name": "with_starred_info", + "in": "query", + "schema": { + "type": "boolean" + } } ], "responses": { @@ -6086,6 +6633,14 @@ "type": "integer" } }, + { + "name": "skip_preprocessor", + "description": "skip the preprocessor", + "in": "query", + "schema": { + "type": "boolean" + } + }, { "$ref": "#/components/parameters/ParentJob" }, @@ -6528,7 +7083,7 @@ }, { "name": "show_archived", - "description": "(default false)\nshow also the archived files.\nwhen multiple archived hash share the same path, only the ones with the latest create_at\nare displayed.\n", + "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" @@ -6541,6 +7096,22 @@ "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" + } } ], "responses": { @@ -6575,6 +7146,133 @@ } } }, + "/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/v/{version}/p/{path}": { + "get": { + "summary": "get flow version", + "operationId": "getFlowVersion", + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + }, + { + "type": "string", + "name": "version", + "in": "path", + "required": true, + "schema": { + "type": "number" + } + }, + { + "$ref": "#/components/parameters/ScriptPath" + } + ], + "tags": [ + "flow" + ], + "responses": { + "200": { + "description": "flow details", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Flow" + } + } + } + } + } + } + }, + "/w/{workspace}/flows/history_update/v/{version}/p/{path}": { + "post": { + "summary": "update flow history", + "operationId": "updateFlowHistory", + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + }, + { + "type": "string", + "name": "version", + "in": "path", + "required": true, + "schema": { + "type": "number" + } + }, + { + "$ref": "#/components/parameters/ScriptPath" + } + ], + "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", @@ -6588,6 +7286,13 @@ }, { "$ref": "#/components/parameters/ScriptPath" + }, + { + "name": "with_starred_info", + "in": "query", + "schema": { + "type": "boolean" + } } ], "responses": { @@ -6604,6 +7309,67 @@ } } }, + "/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", @@ -6897,44 +7663,6 @@ } } }, - "/w/{workspace}/flows/input_history/p/{path}": { - "get": { - "summary": "list inputs for previous completed flow jobs", - "operationId": "getFlowInputHistoryByPath", - "tags": [ - "flow" - ], - "parameters": [ - { - "$ref": "#/components/parameters/WorkspaceId" - }, - { - "$ref": "#/components/parameters/ScriptPath" - }, - { - "$ref": "#/components/parameters/Page" - }, - { - "$ref": "#/components/parameters/PerPage" - } - ], - "responses": { - "200": { - "description": "input history for completed jobs with this flow path", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Input" - } - } - } - } - } - } - } - }, "/w/{workspace}/raw_apps/list": { "get": { "summary": "list all raw apps", @@ -7146,6 +7874,22 @@ "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" + } } ], "responses": { @@ -7268,6 +8012,13 @@ }, { "$ref": "#/components/parameters/ScriptPath" + }, + { + "name": "with_starred_info", + "in": "query", + "schema": { + "type": "boolean" + } } ], "responses": { @@ -7766,6 +8517,9 @@ "path": { "type": "string" }, + "lock": { + "type": "string" + }, "cache_ttl": { "type": "integer" } @@ -7777,6 +8531,15 @@ }, "force_viewer_static_fields": { "type": "object" + }, + "force_viewer_one_of_fields": { + "type": "object" + }, + "force_viewer_allow_user_resources": { + "type": "array", + "items": { + "type": "string" + } } }, "required": [ @@ -7832,6 +8595,14 @@ "type": "integer" } }, + { + "name": "skip_preprocessor", + "description": "skip the preprocessor", + "in": "query", + "schema": { + "type": "boolean" + } + }, { "$ref": "#/components/parameters/ParentJob" }, @@ -8006,6 +8777,14 @@ "type": "integer" } }, + { + "name": "skip_preprocessor", + "description": "skip the preprocessor", + "in": "query", + "schema": { + "type": "boolean" + } + }, { "$ref": "#/components/parameters/ParentJob" }, @@ -8349,6 +9128,14 @@ "schema": { "type": "boolean" } + }, + { + "name": "is_not_schedule", + "description": "is not a scheduled job", + "in": "query", + "schema": { + "type": "boolean" + } } ], "responses": { @@ -8398,6 +9185,9 @@ "properties": { "database_length": { "type": "integer" + }, + "suspended": { + "type": "integer" } }, "required": [ @@ -8444,10 +9234,120 @@ } } }, - "/w/{workspace}/jobs/queue/cancel_all": { + "/w/{workspace}/jobs/queue/list_filtered_uuids": { + "get": { + "summary": "get the ids of all jobs matching the given filters", + "operationId": "listFilteredUuids", + "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/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 all jobs", - "operationId": "cancelAll", + "summary": "cancel jobs based on the given uuids", + "operationId": "cancelSelection", "tags": [ "job" ], @@ -8456,6 +9356,20 @@ "$ref": "#/components/parameters/WorkspaceId" } ], + "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", @@ -8490,6 +9404,9 @@ { "$ref": "#/components/parameters/CreatedBy" }, + { + "$ref": "#/components/parameters/Label" + }, { "$ref": "#/components/parameters/ParentJob" }, @@ -8555,6 +9472,14 @@ "schema": { "type": "boolean" } + }, + { + "name": "is_not_schedule", + "description": "is not a scheduled job", + "in": "query", + "schema": { + "type": "boolean" + } } ], "responses": { @@ -8588,6 +9513,9 @@ { "$ref": "#/components/parameters/CreatedBy" }, + { + "$ref": "#/components/parameters/Label" + }, { "$ref": "#/components/parameters/ParentJob" }, @@ -8609,6 +9537,12 @@ { "$ref": "#/components/parameters/StartedAfter" }, + { + "$ref": "#/components/parameters/CreatedBefore" + }, + { + "$ref": "#/components/parameters/CreatedAfter" + }, { "$ref": "#/components/parameters/CreatedOrStartedBefore" }, @@ -8621,9 +9555,15 @@ { "$ref": "#/components/parameters/CreatedOrStartedAfter" }, + { + "$ref": "#/components/parameters/CreatedOrStartedAfterCompletedJob" + }, { "$ref": "#/components/parameters/JobKinds" }, + { + "$ref": "#/components/parameters/Suspended" + }, { "$ref": "#/components/parameters/ArgsFilter" }, @@ -8678,6 +9618,14 @@ "schema": { "type": "boolean" } + }, + { + "name": "is_not_schedule", + "description": "is not a scheduled job", + "in": "query", + "schema": { + "type": "boolean" + } } ], "responses": { @@ -8718,6 +9666,62 @@ } } }, + "/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", @@ -8812,6 +9816,33 @@ } } }, + "/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/getupdate/{id}": { "get": { "summary": "get job updates", @@ -8839,6 +9870,13 @@ "schema": { "type": "integer" } + }, + { + "name": "get_progress", + "in": "query", + "schema": { + "type": "boolean" + } } ], "responses": { @@ -8864,6 +9902,9 @@ "mem_peak": { "type": "integer" }, + "progress": { + "type": "integer" + }, "flow_status": { "$ref": "#/components/schemas/WorkflowStatusRecord" } @@ -8875,6 +9916,38 @@ } } }, + "/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": { + "type": "string" + } + } + } + } + } + }, "/w/{workspace}/jobs_u/get_flow_debug_info/{id}": { "get": { "summary": "get flow debug info", @@ -8944,6 +10017,34 @@ }, { "$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": { @@ -9037,7 +10138,7 @@ }, "/w/{workspace}/jobs_u/queue/cancel/{id}": { "post": { - "summary": "cancel queued job", + "summary": "cancel queued or running job", "operationId": "cancelQueuedJob", "tags": [ "job" @@ -9992,6 +11093,13 @@ "schema": { "type": "boolean" } + }, + { + "name": "path_start", + "in": "query", + "schema": { + "type": "string" + } } ], "responses": { @@ -10070,7 +11178,8 @@ "type": "string", "enum": [ "error", - "recovery" + "recovery", + "success" ] }, "override_existing": { @@ -10107,6 +11216,311 @@ } } }, + "/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" + } + } + ], + "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": { + "type": "string", + "enum": [ + "get", + "post", + "put", + "delete", + "patch" + ] + } + }, + "required": [ + "kind", + "route_path", + "http_method" + ] + } + } + } + }, + "responses": { + "200": { + "description": "route exists", + "content": { + "application/json": { + "schema": { + "type": "boolean" + } + } + } + } + } + } + }, + "/w/{workspace}/http_triggers/used": { + "get": { + "summary": "whether http triggers are used", + "operationId": "used", + "tags": [ + "http_trigger" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + } + ], + "responses": { + "200": { + "description": "whether http triggers are used", + "content": { + "application/json": { + "schema": { + "type": "boolean" + } + } + } + } + } + } + }, "/groups/list": { "get": { "summary": "list instance groups", @@ -10361,6 +11775,65 @@ } } }, + "/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", @@ -10769,6 +12242,9 @@ "name": { "type": "string" }, + "summary": { + "type": "string" + }, "owners": { "type": "array", "items": { @@ -10825,6 +12301,9 @@ "schema": { "type": "object", "properties": { + "summary": { + "type": "string" + }, "owners": { "type": "array", "items": { @@ -11141,6 +12620,57 @@ } } }, + "/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" + ] + } + } + } + } + } + } + } + }, "/configs/list_worker_groups": { "get": { "summary": "list worker groups", @@ -11258,6 +12788,30 @@ } } }, + "/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" + } + } + } + } + } + } + } + }, "/w/{workspace}/acls/get/{kind}/{path}": { "get": { "summary": "get granular acls", @@ -11287,7 +12841,8 @@ "flow", "folder", "app", - "raw_app" + "raw_app", + "http_trigger" ] } } @@ -11338,7 +12893,8 @@ "flow", "folder", "app", - "raw_app" + "raw_app", + "http_trigger" ] } } @@ -11408,7 +12964,8 @@ "flow", "folder", "app", - "raw_app" + "raw_app", + "http_trigger" ] } } @@ -11643,6 +13200,52 @@ } } }, + "/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", @@ -12107,7 +13710,7 @@ }, "/w/{workspace}/job_helpers/test_connection": { "get": { - "summary": "Test connection to the workspace datasets storage", + "summary": "Test connection to the workspace object storage", "operationId": "datasetStorageTestConnection", "tags": [ "helpers" @@ -12115,6 +13718,13 @@ "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" + }, + { + "name": "storage", + "in": "query", + "schema": { + "type": "string" + } } ], "responses": { @@ -12131,7 +13741,7 @@ }, "/w/{workspace}/job_helpers/list_stored_files": { "get": { - "summary": "List the file keys available in the workspace files storage (S3)", + "summary": "List the file keys available in a workspace object storage", "operationId": "listStoredFiles", "tags": [ "helpers" @@ -12161,6 +13771,13 @@ "schema": { "type": "string" } + }, + { + "name": "storage", + "in": "query", + "schema": { + "type": "string" + } } ], "responses": { @@ -12212,6 +13829,13 @@ "schema": { "type": "string" } + }, + { + "name": "storage", + "in": "query", + "schema": { + "type": "string" + } } ], "responses": { @@ -12288,6 +13912,13 @@ "schema": { "type": "integer" } + }, + { + "name": "storage", + "in": "query", + "schema": { + "type": "string" + } } ], "responses": { @@ -12359,6 +13990,13 @@ "schema": { "type": "string" } + }, + { + "name": "storage", + "in": "query", + "schema": { + "type": "string" + } } ], "responses": { @@ -12373,6 +14011,144 @@ } } }, + "/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": { + "schema": {} + } + } + } + } + } + }, "/w/{workspace}/job_helpers/delete_s3_file": { "delete": { "summary": "Permanently delete file from S3", @@ -12391,6 +14167,13 @@ "schema": { "type": "string" } + }, + { + "name": "storage", + "in": "query", + "schema": { + "type": "string" + } } ], "responses": { @@ -12431,6 +14214,13 @@ "schema": { "type": "string" } + }, + { + "name": "storage", + "in": "query", + "schema": { + "type": "string" + } } ], "responses": { @@ -12487,6 +14277,13 @@ "schema": { "type": "string" } + }, + { + "name": "storage", + "in": "query", + "schema": { + "type": "string" + } } ], "requestBody": { @@ -12557,6 +14354,13 @@ "schema": { "type": "string" } + }, + { + "name": "storage", + "in": "query", + "schema": { + "type": "string" + } } ], "responses": { @@ -12574,6 +14378,56 @@ } } }, + "/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", @@ -12647,6 +14501,182 @@ } } }, + "/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", @@ -12671,7 +14701,7 @@ } } }, - "/concurrency_groups/{concurrency_id}": { + "/concurrency_groups/prune/{concurrency_id}": { "delete": { "summary": "Delete concurrency group", "operationId": "deleteConcurrencyGroup", @@ -12697,6 +14727,238 @@ } } } + }, + "/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/CreatedOrStartedBefore" + }, + { + "$ref": "#/components/parameters/Running" + }, + { + "$ref": "#/components/parameters/ScheduledForBeforeNow" + }, + { + "$ref": "#/components/parameters/CreatedOrStartedAfter" + }, + { + "$ref": "#/components/parameters/CreatedOrStartedAfterCompletedJob" + }, + { + "$ref": "#/components/parameters/JobKinds" + }, + { + "$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": "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" + } + } + ], + "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": "object", + "properties": { + "dancer": { + "type": "string" + } + } + } + }, + "hits": { + "description": "the jobs that matched the query", + "type": "array", + "items": { + "$ref": "#/components/schemas/JobSearchHit" + } + } + } + } + } + } + } + } + } } }, "components": { @@ -12849,6 +15111,14 @@ "type": "string" } }, + "Label": { + "name": "label", + "description": "mask to filter exact matching job's label (job labels are completed jobs with as a result an object containing a string in the array at key 'wm_labels')", + "in": "query", + "schema": { + "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", @@ -12939,6 +15209,24 @@ "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", @@ -12957,6 +15245,15 @@ "format": "date-time" } }, + "Before": { + "name": "before", + "description": "filter on started before (inclusive) timestamp", + "in": "query", + "schema": { + "type": "string", + "format": "date-time" + } + }, "CreatedOrStartedAfter": { "name": "created_or_started_after", "description": "filter on created_at for non non started job and started_at otherwise after (exclusive) timestamp", @@ -12966,6 +15263,15 @@ "format": "date-time" } }, + "CreatedOrStartedAfterCompletedJob": { + "name": "created_or_started_after_completed_jobs", + "description": "filter on created_at for non non started job and started_at otherwise after (exclusive) timestamp but only for the completed jobs", + "in": "query", + "schema": { + "type": "string", + "format": "date-time" + } + }, "CreatedOrStartedBefore": { "name": "created_or_started_before", "description": "filter on created_at for non non started job and started_at otherwise before (inclusive) timestamp", @@ -13040,15 +15346,6 @@ "format": "date-time" } }, - "Before": { - "name": "before", - "description": "filter on created before (exclusive) timestamp", - "in": "query", - "schema": { - "type": "string", - "format": "date-time" - } - }, "Username": { "name": "username", "description": "filter on exact username of user", @@ -13208,7 +15505,10 @@ "mssql", "graphql", "nativets", - "bun" + "bun", + "php", + "rust", + "ansible" ] }, "kind": { @@ -13245,6 +15545,9 @@ "concurrency_time_window_s": { "type": "integer" }, + "concurrency_key": { + "type": "string" + }, "cache_ttl": { "type": "number" }, @@ -13268,6 +15571,15 @@ }, "visible_to_runner_only": { "type": "boolean" + }, + "no_main_func": { + "type": "boolean" + }, + "codebase": { + "type": "string" + }, + "has_preprocessor": { + "type": "boolean" } }, "required": [ @@ -13284,7 +15596,9 @@ "extra_perms", "language", "kind", - "starred" + "starred", + "no_main_func", + "has_preprocessor" ] }, "NewScript": { @@ -13329,7 +15643,10 @@ "mssql", "graphql", "nativets", - "bun" + "bun", + "php", + "rust", + "ansible" ] }, "kind": { @@ -13389,6 +15706,15 @@ }, "visible_to_runner_only": { "type": "boolean" + }, + "no_main_func": { + "type": "boolean" + }, + "codebase": { + "type": "string" + }, + "has_preprocessor": { + "type": "boolean" } }, "required": [ @@ -13447,9 +15773,6 @@ "name": { "type": "string" }, - "args": { - "type": "object" - }, "created_by": { "type": "string" }, @@ -13623,7 +15946,10 @@ "mssql", "graphql", "nativets", - "bun" + "bun", + "php", + "rust", + "ansible" ] }, "email": { @@ -13640,6 +15966,15 @@ }, "priority": { "type": "integer" + }, + "self_wait_time_ms": { + "type": "number" + }, + "aggregate_wait_time_ms": { + "type": "number" + }, + "suspend": { + "type": "number" } }, "required": [ @@ -13760,7 +16095,10 @@ "mssql", "graphql", "nativets", - "bun" + "bun", + "php", + "rust", + "ansible" ] }, "is_skipped": { @@ -13780,6 +16118,18 @@ }, "priority": { "type": "integer" + }, + "labels": { + "type": "array", + "items": { + "type": "string" + } + }, + "self_wait_time_ms": { + "type": "number" + }, + "aggregate_wait_time_ms": { + "type": "number" } }, "required": [ @@ -13799,29 +16149,58 @@ "tag" ] }, + "ObscuredJob": { + "type": "object", + "properties": { + "typ": { + "type": "string" + }, + "started_at": { + "type": "string", + "format": "date-time" + }, + "duration_ms": { + "type": "number" + } + } + }, "Job": { - "allOf": [ + "oneOf": [ { - "oneOf": [ + "allOf": [ { "$ref": "#/components/schemas/CompletedJob" }, { - "$ref": "#/components/schemas/QueuedJob" + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "CompletedJob" + ] + } + } } ] }, { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "CompletedJob", - "QueuedJob" - ] + "allOf": [ + { + "$ref": "#/components/schemas/QueuedJob" + }, + { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "QueuedJob" + ] + } + } } - } + ] } ], "discriminator": { @@ -13950,6 +16329,9 @@ "items": { "type": "string" } + }, + "email": { + "type": "string" } }, "required": [ @@ -13973,6 +16355,9 @@ "items": { "type": "string" } + }, + "workspace_id": { + "type": "string" } } }, @@ -13988,6 +16373,9 @@ }, "impersonate_email": { "type": "string" + }, + "workspace_id": { + "type": "string" } }, "required": [ @@ -14035,6 +16423,10 @@ }, "is_refreshed": { "type": "boolean" + }, + "expires_at": { + "type": "string", + "format": "date-time" } }, "required": [ @@ -14087,6 +16479,10 @@ }, "is_oauth": { "type": "boolean" + }, + "expires_at": { + "type": "string", + "format": "date-time" } }, "required": [ @@ -14406,6 +16802,14 @@ "typ" ] } + }, + "no_main_func": { + "type": "boolean", + "nullable": true + }, + "has_preprocessor": { + "type": "boolean", + "nullable": true } }, "required": [ @@ -14413,7 +16817,9 @@ "start_kwargs", "args", "type", - "error" + "error", + "no_main_func", + "has_preprocessor" ] }, "Preview": { @@ -14443,7 +16849,10 @@ "mssql", "graphql", "nativets", - "bun" + "bun", + "php", + "rust", + "ansible" ] }, "tag": { @@ -14560,6 +16969,13 @@ "additionalProperties": { "type": "boolean" } + }, + "created_by": { + "type": "string" + }, + "edited_at": { + "type": "string", + "format": "date-time" } }, "required": [ @@ -14607,6 +17023,13 @@ }, "account": { "type": "number" + }, + "created_by": { + "type": "string" + }, + "edited_at": { + "type": "string", + "format": "date-time" } }, "required": [ @@ -14629,6 +17052,16 @@ "schema": {}, "description": { "type": "string" + }, + "created_by": { + "type": "string" + }, + "edited_at": { + "type": "string", + "format": "date-time" + }, + "format_extension": { + "type": "string" } }, "required": [ @@ -14708,6 +17141,12 @@ "on_recovery_extra_args": { "$ref": "#/components/schemas/ScriptArgs" }, + "on_success": { + "type": "string" + }, + "on_success_extra_args": { + "$ref": "#/components/schemas/ScriptArgs" + }, "ws_error_handler_muted": { "type": "boolean" }, @@ -14722,6 +17161,10 @@ }, "tag": { "type": "string" + }, + "paused_until": { + "type": "string", + "format": "date-time" } }, "required": [ @@ -14816,6 +17259,12 @@ "on_recovery_extra_args": { "$ref": "#/components/schemas/ScriptArgs" }, + "on_success": { + "type": "string" + }, + "on_success_extra_args": { + "$ref": "#/components/schemas/ScriptArgs" + }, "ws_error_handler_muted": { "type": "boolean" }, @@ -14830,6 +17279,10 @@ }, "tag": { "type": "string" + }, + "paused_until": { + "type": "string", + "format": "date-time" } }, "required": [ @@ -14874,6 +17327,12 @@ "on_recovery_extra_args": { "$ref": "#/components/schemas/ScriptArgs" }, + "on_success": { + "type": "string" + }, + "on_success_extra_args": { + "$ref": "#/components/schemas/ScriptArgs" + }, "ws_error_handler_muted": { "type": "boolean" }, @@ -14888,6 +17347,10 @@ }, "tag": { "type": "string" + }, + "paused_until": { + "type": "string", + "format": "date-time" } }, "required": [ @@ -14898,6 +17361,181 @@ "args" ] }, + "HttpTrigger": { + "type": "object", + "properties": { + "path": { + "type": "string" + }, + "edited_by": { + "type": "string" + }, + "edited_at": { + "type": "string", + "format": "date-time" + }, + "script_path": { + "type": "string" + }, + "route_path": { + "type": "string" + }, + "is_flow": { + "type": "boolean" + }, + "extra_perms": { + "type": "object", + "additionalProperties": { + "type": "boolean" + } + }, + "email": { + "type": "string" + }, + "workspace_id": { + "type": "string" + }, + "http_method": { + "type": "string", + "enum": [ + "get", + "post", + "put", + "delete", + "patch" + ] + }, + "is_async": { + "type": "boolean" + }, + "requires_auth": { + "type": "boolean" + } + }, + "required": [ + "path", + "edited_by", + "edited_at", + "script_path", + "route_path", + "extra_perms", + "is_flow", + "email", + "workspace_id", + "is_async", + "requires_auth", + "http_method" + ] + }, + "NewHttpTrigger": { + "type": "object", + "properties": { + "path": { + "type": "string" + }, + "script_path": { + "type": "string" + }, + "route_path": { + "type": "string" + }, + "is_flow": { + "type": "boolean" + }, + "http_method": { + "type": "string", + "enum": [ + "get", + "post", + "put", + "delete", + "patch" + ] + }, + "is_async": { + "type": "boolean" + }, + "requires_auth": { + "type": "boolean" + } + }, + "required": [ + "path", + "script_path", + "route_path", + "is_flow", + "is_async", + "requires_auth", + "http_method" + ] + }, + "EditHttpTrigger": { + "type": "object", + "properties": { + "path": { + "type": "string" + }, + "script_path": { + "type": "string" + }, + "route_path": { + "type": "string" + }, + "is_flow": { + "type": "boolean" + }, + "http_method": { + "type": "string", + "enum": [ + "get", + "post", + "put", + "delete", + "patch" + ] + }, + "is_async": { + "type": "boolean" + }, + "requires_auth": { + "type": "boolean" + } + }, + "required": [ + "path", + "script_path", + "is_flow", + "kind", + "is_async", + "requires_auth", + "http_method" + ] + }, + "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" + } + } + }, "Group": { "type": "object", "properties": { @@ -14961,6 +17599,16 @@ "additionalProperties": { "type": "boolean" } + }, + "summary": { + "type": "string" + }, + "created_by": { + "type": "string" + }, + "edited_at": { + "type": "string", + "format": "date-time" } }, "required": [ @@ -15002,6 +17650,36 @@ }, "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" } }, "required": [ @@ -15158,6 +17836,12 @@ } ] }, + "ExtraPerms": { + "type": "object", + "additionalProperties": { + "type": "boolean" + } + }, "FlowMetadata": { "type": "object", "properties": { @@ -15178,10 +17862,7 @@ "type": "boolean" }, "extra_perms": { - "type": "object" - }, - "additionalProperties": { - "type": "boolean" + "$ref": "#/components/schemas/ExtraPerms" }, "starred": { "type": "boolean" @@ -15301,6 +17982,12 @@ "type": "object" } }, + "triggerables_v2": { + "type": "object", + "additionalProperties": { + "type": "object" + } + }, "execution_mode": { "type": "string", "enum": [ @@ -15434,7 +18121,9 @@ "type": "string", "format": "date-time" }, - "value": {}, + "value": { + "type": "object" + }, "policy": { "$ref": "#/components/schemas/Policy" }, @@ -15497,6 +18186,25 @@ "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": { @@ -15591,6 +18299,32 @@ }, "public_resource": { "type": "boolean" + }, + "secondary_storage": { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "S3Storage", + "AzureBlobStorage", + "AzureWorkloadIdentity", + "S3AwsOidc" + ] + }, + "s3_resource_path": { + "type": "string" + }, + "azure_blob_resource_path": { + "type": "string" + }, + "public_resource": { + "type": "boolean" + } + } + } } } }, @@ -15719,6 +18453,31 @@ } } }, + "WorkspaceDeployUISettings": { + "type": "object", + "properties": { + "include_path": { + "type": "array", + "items": { + "type": "string" + } + }, + "include_type": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "script", + "flow", + "app", + "resource", + "variable", + "secret" + ] + } + } + } + }, "WorkspaceDefaultScripts": { "type": "object", "properties": { @@ -15883,7 +18642,10 @@ "mssql", "graphql", "nativets", - "bun" + "bun", + "php", + "rust", + "ansible" ] } }, @@ -15896,21 +18658,144 @@ "ConcurrencyGroup": { "type": "object", "properties": { - "concurrency_id": { + "concurrency_key": { "type": "string" }, - "job_uuids": { + "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": { + "type": "object" + } + }, + "required": [ + "name", + "value" + ] + }, + "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" } }, "required": [ - "concurrency_id", - "job_uuids" + "name" ] }, + "JobSearchHit": { + "type": "object", + "properties": { + "dancer": { + "type": "string" + } + } + }, "StaticTransform": { "type": "object", "properties": { @@ -15989,7 +18874,8 @@ "snowflake", "mssql", "graphql", - "nativets" + "nativets", + "php" ] }, "path": { @@ -16012,6 +18898,9 @@ }, "concurrency_time_window_s": { "type": "number" + }, + "custom_concurrency_key": { + "type": "string" } }, "required": [ @@ -16041,6 +18930,9 @@ "enum": [ "script" ] + }, + "tag_override": { + "type": "string" } }, "required": [ @@ -16097,6 +18989,31 @@ "expr" ] }, + "stop_after_all_iters_if": { + "type": "object", + "properties": { + "skip_if_stopped": { + "type": "boolean" + }, + "expr": { + "type": "string" + } + }, + "required": [ + "expr" + ] + }, + "skip_if": { + "type": "object", + "properties": { + "expr": { + "type": "string" + } + }, + "required": [ + "expr" + ] + }, "sleep": { "$ref": "#/components/schemas/InputTransform" }, @@ -16149,6 +19066,9 @@ }, "hide_cancel": { "type": "boolean" + }, + "continue_on_disapprove_timeout": { + "type": "boolean" } } }, @@ -16429,12 +19349,18 @@ "failure_module": { "$ref": "#/components/schemas/FlowModule" }, + "preprocessor_module": { + "$ref": "#/components/schemas/FlowModule" + }, "same_worker": { "type": "boolean" }, "concurrent_limit": { "type": "number" }, + "concurrency_key": { + "type": "string" + }, "concurrency_time_window_s": { "type": "number" }, @@ -16500,6 +19426,9 @@ "count": { "type": "integer" }, + "progress": { + "type": "integer" + }, "iterator": { "type": "object", "properties": { @@ -16519,6 +19448,12 @@ "type": "string" } }, + "flow_jobs_success": { + "type": "array", + "items": { + "type": "boolean" + } + }, "branch_chosen": { "type": "object", "properties": { @@ -16569,6 +19504,16 @@ "approver" ] } + }, + "failed_retries": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + } + }, + "skipped": { + "type": "boolean" } }, "required": [ @@ -16590,6 +19535,13 @@ "user_states": { "additionalProperties": true }, + "preprocessor_module": { + "allOf": [ + { + "$ref": "#/components/schemas/FlowStatusModule" + } + ] + }, "failure_module": { "allOf": [ { diff --git a/backend/windmill-api/openapi-deref.yaml b/backend/windmill-api/openapi-deref.yaml index 9654b10550..e2a0b00a85 100644 --- a/backend/windmill-api/openapi-deref.yaml +++ b/backend/windmill-api/openapi-deref.yaml @@ -1,6 +1,6 @@ openapi: 3.0.3 info: - version: 1.269.0 + version: 1.409.0 title: Windmill API contact: name: Windmill Team @@ -87,7 +87,7 @@ paths: - name: id in: path required: true - schema: &ref_24 + schema: &ref_28 type: integer responses: '200': @@ -221,44 +221,54 @@ paths: - name: page description: which page to return (start at 1, default 1) in: query - schema: &ref_3 + schema: &ref_5 type: integer - name: per_page description: number of items to return for a given page (default 30, max 100) in: query - schema: &ref_4 + schema: &ref_6 type: integer - name: before - description: filter on created before (exclusive) timestamp + description: filter on started before (inclusive) timestamp in: query - schema: &ref_102 + schema: &ref_109 type: string format: date-time - name: after description: filter on created after (exclusive) timestamp in: query - schema: &ref_101 + schema: &ref_110 type: string format: date-time - name: username description: filter on exact username of user in: query - schema: &ref_103 + schema: &ref_119 type: string - name: operation description: filter on exact or prefix name of operation in: query - schema: &ref_104 + schema: &ref_120 + type: string + - name: operations + in: query + description: comma separated list of exact operations to include + schema: + type: string + - name: exclude_operations + in: query + description: comma separated list of operations to exclude + schema: type: string - name: resource description: filter on exact or prefix name of resource in: query - schema: &ref_105 + schema: &ref_121 type: string - name: action_kind description: filter on type of operation in: query - schema: &ref_106 + schema: &ref_122 type: string enum: - Create @@ -290,12 +300,12 @@ paths: application/json: schema: type: object - properties: &ref_119 + properties: &ref_136 email: type: string password: type: string - required: &ref_120 + required: &ref_137 - email - password responses: @@ -332,10 +342,10 @@ paths: text/plain: schema: type: string - /w/{workspace}/users/add: - post: - summary: create user (require admin privilege) - operationId: createUser + /w/{workspace}/users/{username}: + get: + summary: get user (require admin privilege) + operationId: getUser tags: - user - admin @@ -344,31 +354,56 @@ paths: in: path required: true schema: *ref_0 - requestBody: - description: new user - required: true - content: - application/json: - schema: - type: object - properties: &ref_121 - email: - type: string - username: - type: string - is_admin: - type: boolean - required: &ref_122 - - email - - username - - is_admin + - name: username + in: path + required: true + schema: + type: string responses: - '201': + '200': description: user created content: - text/plain: + application/json: schema: - type: string + type: object + properties: &ref_10 + email: + type: string + username: + type: string + is_admin: + type: boolean + 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 + required: &ref_11 + - email + - username + - is_admin + - is_super_admin + - created_at + - operator + - disabled + - folders + - folders_owners /w/{workspace}/users/update/{username}: post: summary: update user (require admin privilege) @@ -393,7 +428,7 @@ paths: application/json: schema: type: object - properties: &ref_123 + properties: &ref_138 is_admin: type: boolean operator: @@ -421,7 +456,7 @@ paths: - name: path in: path required: true - schema: &ref_17 + schema: &ref_21 type: string responses: '200': @@ -512,6 +547,8 @@ paths: properties: is_super_admin: type: boolean + name: + type: string responses: '200': description: user updated @@ -519,6 +556,74 @@ paths: 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) @@ -538,6 +643,67 @@ paths: text/plain: schema: type: string + /users/overwrite: + post: + summary: global overwrite users (require super admin and EE) + operationId: globalUsersOverwrite + tags: + - user + requestBody: + description: List of users + required: true + content: + application/json: + schema: + type: array + items: + type: object + properties: &ref_3 + email: + type: string + password_hash: + type: string + super_admin: + type: boolean + verified: + type: boolean + name: + type: string + company: + type: string + first_time_user: + type: boolean + username: + type: string + required: &ref_4 + - email + - super_admin + - verified + - first_time_user + responses: + '200': + description: Success message + content: + text/plain: + schema: + type: string + /users/export: + get: + summary: global export users (require super admin and EE) + operationId: globalUsersExport + tags: + - user + responses: + '200': + description: exported users + content: + application/json: + schema: + type: array + items: + type: object + properties: *ref_3 + required: *ref_4 /w/{workspace}/users/delete/{username}: delete: summary: delete user (require admin privilege) @@ -577,7 +743,7 @@ paths: type: array items: type: object - properties: &ref_5 + properties: &ref_7 id: type: string name: @@ -586,7 +752,7 @@ paths: type: string domain: type: string - required: &ref_6 + required: &ref_8 - id - name - owner @@ -616,7 +782,7 @@ paths: application/json: schema: type: object - properties: &ref_151 + properties: &ref_172 email: type: string workspaces: @@ -634,7 +800,7 @@ paths: - id - name - username - required: &ref_152 + required: &ref_173 - email - workspaces /workspaces/list_as_superadmin: @@ -647,11 +813,11 @@ paths: - name: page description: which page to return (start at 1, default 1) in: query - schema: *ref_3 + schema: *ref_5 - name: per_page description: number of items to return for a given page (default 30, max 100) in: query - schema: *ref_4 + schema: *ref_6 responses: '200': description: workspaces @@ -661,8 +827,8 @@ paths: type: array items: type: object - properties: *ref_5 - required: *ref_6 + properties: *ref_7 + required: *ref_8 /workspaces/create: post: summary: create workspace @@ -676,17 +842,16 @@ paths: application/json: schema: type: object - properties: &ref_153 + properties: &ref_174 id: type: string name: type: string username: type: string - required: &ref_154 + required: &ref_175 - id - name - - username responses: '201': description: token created @@ -756,7 +921,7 @@ paths: - name: key in: path required: true - schema: &ref_7 + schema: &ref_9 type: string responses: '200': @@ -773,7 +938,7 @@ paths: - name: key in: path required: true - schema: *ref_7 + schema: *ref_9 requestBody: description: value set required: true @@ -850,6 +1015,33 @@ paths: 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/test_license_key: post: summary: test license key @@ -875,6 +1067,27 @@ paths: text/plain: schema: type: string + /settings/test_object_storage_config: + post: + summary: test object storage config + operationId: testObjectStorageConfig + tags: + - setting + requestBody: + description: test object storage config + required: true + content: + application/json: + schema: + type: object + additionalProperties: true + responses: + '200': + description: status + content: + text/plain: + schema: + type: string /settings/send_stats: post: summary: send stats @@ -888,6 +1101,110 @@ paths: text/plain: schema: type: string + /settings/latest_key_renewal_attempt: + get: + summary: get latest key renewal attempt + operationId: getLatestKeyRenewalAttempt + tags: + - setting + responses: + '200': + description: status + content: + application/json: + schema: + type: object + properties: + result: + type: string + attempted_at: + type: string + format: date-time + required: + - result + - attempted_at + nullable: true + /settings/renew_license_key: + post: + summary: renew license key + operationId: renewLicenseKey + tags: + - setting + parameters: + - name: license_key + in: query + required: false + schema: + type: string + responses: + '200': + description: status + content: + text/plain: + schema: + type: string + /settings/customer_portal: + post: + summary: create customer portal session + operationId: createCustomerPortalSession + tags: + - setting + parameters: + - name: license_key + in: query + required: false + schema: + type: string + responses: + '200': + description: url to portal + content: + text/plain: + schema: + type: string + /saml/test_metadata: + post: + summary: test metadata + operationId: testMetadata + tags: + - setting + requestBody: + description: test metadata + required: true + content: + application/json: + schema: + type: string + responses: + '200': + description: status + content: + text/plain: + schema: + type: string + /settings/list_global: + get: + summary: list global settings + operationId: listGlobalSettings + tags: + - setting + responses: + '200': + description: list of settings + content: + application/json: + schema: + type: array + items: + type: object + properties: &ref_214 + name: + type: string + value: + type: object + required: &ref_215 + - name + - value /users/email: get: summary: get current user email (if logged in) @@ -1026,7 +1343,7 @@ paths: application/json: schema: type: object - properties: &ref_10 + properties: &ref_12 email: type: string login_type: @@ -1042,7 +1359,9 @@ paths: type: string company: type: string - required: &ref_11 + username: + type: string + required: &ref_13 - email - login_type - super_admin @@ -1062,7 +1381,7 @@ paths: type: array items: type: object - properties: &ref_12 + properties: &ref_14 workspace_id: type: string email: @@ -1071,7 +1390,7 @@ paths: type: boolean operator: type: boolean - required: &ref_13 + required: &ref_15 - workspace_id - email - is_admin @@ -1094,49 +1413,8 @@ paths: application/json: schema: type: object - properties: &ref_8 - email: - type: string - username: - type: string - is_admin: - type: boolean - 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 - usage: - type: object - properties: &ref_118 - executions: - type: number - required: &ref_9 - - email - - username - - is_admin - - is_super_admin - - created_at - - operator - - disabled - - folders - - folders_owners + properties: *ref_10 + required: *ref_11 /users/accept_invite: post: summary: accept invite to workspace @@ -1157,7 +1435,6 @@ paths: type: string required: - workspace_id - - username responses: '200': description: status @@ -1257,7 +1534,6 @@ paths: - email - is_admin - operator - - username responses: '200': description: status @@ -1373,6 +1649,82 @@ paths: text/plain: schema: type: string + /w/{workspace}/workspaces/get_workspace_name: + get: + summary: get workspace name + operationId: getWorkspaceName + tags: + - workspace + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + responses: + '200': + description: status + content: + text/plain: + schema: + type: string + /w/{workspace}/workspaces/change_workspace_name: + post: + summary: change workspace name + operationId: changeWorkspaceName + tags: + - workspace + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + requestBody: + content: + application/json: + schema: + type: object + properties: + new_name: + type: string + required: + - username + responses: + '200': + description: status + content: + text/plain: + schema: + type: string + /w/{workspace}/workspaces/change_workspace_id: + post: + summary: change workspace id + operationId: changeWorkspaceId + tags: + - workspace + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + 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}/users/whois/{username}: get: summary: whois @@ -1396,8 +1748,8 @@ paths: application/json: schema: type: object - properties: *ref_8 - required: *ref_9 + properties: *ref_10 + required: *ref_11 /users/exists/{email}: get: summary: exists email @@ -1427,11 +1779,11 @@ paths: - name: page description: which page to return (start at 1, default 1) in: query - schema: *ref_3 + schema: *ref_5 - name: per_page description: number of items to return for a given page (default 30, max 100) in: query - schema: *ref_4 + schema: *ref_6 responses: '200': description: user @@ -1441,8 +1793,8 @@ paths: type: array items: type: object - properties: *ref_10 - required: *ref_11 + properties: *ref_12 + required: *ref_13 /w/{workspace}/workspaces/list_pending_invites: get: summary: list pending invites for a workspace @@ -1463,8 +1815,8 @@ paths: type: array items: type: object - properties: *ref_12 - required: *ref_13 + properties: *ref_14 + required: *ref_15 /w/{workspace}/workspaces/get_settings: get: summary: get settings @@ -1500,6 +1852,8 @@ paths: type: boolean plan: type: string + automatic_billing: + type: boolean customer_id: type: string webhook: @@ -1514,26 +1868,46 @@ paths: type: string error_handler_extra_args: type: object - additionalProperties: &ref_14 {} + additionalProperties: &ref_16 {} error_handler_muted_on_cancel: type: boolean large_file_storage: type: object - properties: &ref_15 + properties: &ref_17 type: type: string enum: - S3Storage - AzureBlobStorage + - AzureWorkloadIdentity + - S3AwsOidc s3_resource_path: type: string azure_blob_resource_path: type: string public_resource: type: boolean + secondary_storage: + type: object + additionalProperties: + type: object + properties: + type: + type: string + enum: + - S3Storage + - AzureBlobStorage + - AzureWorkloadIdentity + - S3AwsOidc + s3_resource_path: + type: string + azure_blob_resource_path: + type: string + public_resource: + type: boolean git_sync: type: object - properties: &ref_16 + properties: &ref_18 include_path: type: array items: @@ -1552,24 +1926,78 @@ paths: - secret - resourcetype - schedule + - user + - group repositories: type: array items: type: object - properties: &ref_174 + properties: &ref_198 script_path: type: string git_repo_resource_path: type: string use_individual_branch: type: boolean - required: &ref_175 + group_by_folder: + type: boolean + exclude_types_override: + type: array + items: + type: string + enum: + - script + - flow + - app + - folder + - resource + - variable + - secret + - resourcetype + - schedule + - user + - group + required: &ref_199 - script_path - git_repo_resource_path + deploy_ui: + type: object + properties: &ref_19 + include_path: + type: array + items: + type: string + include_type: + type: array + items: + type: string + enum: + - script + - flow + - app + - resource + - variable + - secret default_app: type: string + default_scripts: + type: object + properties: &ref_20 + order: + type: array + items: + type: string + hidden: + type: array + items: + type: string + default_script_content: + additionalProperties: + type: string required: - code_completion_enabled + - automatic_billing + - error_handler_muted_on_cancel /w/{workspace}/workspaces/get_deploy_to: get: summary: get deploy to @@ -1634,8 +2062,43 @@ paths: type: number seats: type: number + automatic_billing: + type: boolean required: - premium + - automatic_billing + /w/{workspace}/workspaces/set_automatic_billing: + post: + summary: set automatic billing + operationId: setAutomaticBilling + tags: + - workspace + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + requestBody: + description: automatic billing + required: true + content: + application/json: + schema: + type: object + properties: + automatic_billing: + type: boolean + seats: + type: number + required: + - automatic_billing + responses: + '200': + description: status + content: + text/plain: + schema: + type: string /w/{workspace}/workspaces/edit_slack_command: post: summary: edit slack command @@ -1867,7 +2330,7 @@ paths: type: string error_handler_extra_args: type: object - additionalProperties: *ref_14 + additionalProperties: *ref_16 error_handler_muted_on_cancel: type: boolean responses: @@ -1898,7 +2361,7 @@ paths: properties: large_file_storage: type: object - properties: *ref_15 + properties: *ref_17 responses: '200': description: status @@ -1926,7 +2389,35 @@ paths: properties: git_sync_settings: type: object - properties: *ref_16 + properties: *ref_18 + responses: + '200': + description: status + content: + application/json: + schema: {} + /w/{workspace}/workspaces/edit_deploy_ui_config: + post: + summary: edit workspace deploy ui settings + operationId: editWorkspaceDeployUISettings + tags: + - workspace + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + requestBody: + description: Workspace deploy UI settings + required: true + content: + application/json: + schema: + type: object + properties: + deploy_ui_settings: + type: object + properties: *ref_19 responses: '200': description: status @@ -1961,6 +2452,81 @@ paths: text/plain: schema: type: string + /w/{workspace}/workspaces/default_scripts: + post: + summary: edit default scripts for workspace + operationId: editDefaultScripts + tags: + - workspace + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + requestBody: + description: Workspace default app + content: + application/json: + schema: + type: object + properties: *ref_20 + responses: + '200': + description: status + content: + text/plain: + schema: + type: string + get: + summary: get default scripts for workspace + operationId: get default scripts + tags: + - workspace + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + responses: + '200': + description: status + content: + application/json: + schema: + type: object + properties: *ref_20 + /w/{workspace}/workspaces/set_environment_variable: + post: + summary: set environment variable + operationId: setEnvironmentVariable + tags: + - workspace + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + 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 @@ -2004,6 +2570,8 @@ paths: properties: new_key: type: string + skip_reencrypt: + type: boolean required: - new_key responses: @@ -2052,7 +2620,25 @@ paths: application/json: schema: type: object - properties: *ref_15 + properties: *ref_17 + /w/{workspace}/workspaces/usage: + get: + summary: get usage + operationId: getWorkspaceUsage + tags: + - workspace + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + responses: + '200': + description: usage + content: + text/plain: + schema: + type: number /w/{workspace}/users/list: get: summary: list users @@ -2073,8 +2659,33 @@ paths: type: array items: type: object - properties: *ref_8 - required: *ref_9 + properties: *ref_10 + required: *ref_11 + /w/{workspace}/users/list_usage: + get: + summary: list users usage + operationId: listUsersUsage + tags: + - user + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + responses: + '200': + description: user + content: + application/json: + schema: + type: array + items: + type: object + properties: &ref_135 + email: + type: string + executions: + type: number /w/{workspace}/users/list_usernames: get: summary: list usernames @@ -2095,6 +2706,29 @@ paths: type: array items: type: string + /w/{workspace}/users/username_to_email/{username}: + get: + summary: get email from username + operationId: usernameToEmail + tags: + - user + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - name: username + in: path + required: true + schema: + type: string + responses: + '200': + description: email + content: + text/plain: + schema: + type: string /users/tokens/create: post: summary: create token @@ -2108,7 +2742,7 @@ paths: application/json: schema: type: object - properties: &ref_126 + properties: &ref_139 label: type: string expiration: @@ -2118,6 +2752,8 @@ paths: type: array items: type: string + workspace_id: + type: string responses: '201': description: token created @@ -2138,7 +2774,7 @@ paths: application/json: schema: type: object - properties: &ref_127 + properties: &ref_140 label: type: string expiration: @@ -2146,7 +2782,9 @@ paths: format: date-time impersonate_email: type: string - required: &ref_128 + workspace_id: + type: string + required: &ref_141 - impersonate_email responses: '201': @@ -2185,6 +2823,14 @@ paths: in: query schema: type: boolean + - name: page + description: which page to return (start at 1, default 1) + in: query + schema: *ref_5 + - name: per_page + description: number of items to return for a given page (default 30, max 100) + in: query + schema: *ref_6 responses: '200': description: truncated token @@ -2194,7 +2840,7 @@ paths: type: array items: type: object - properties: &ref_124 + properties: &ref_38 label: type: string expiration: @@ -2212,7 +2858,9 @@ paths: type: array items: type: string - required: &ref_125 + email: + type: string + required: &ref_39 - token_prefix - created_at - last_used_at @@ -2261,7 +2909,7 @@ paths: application/json: schema: type: object - properties: &ref_131 + properties: &ref_144 path: type: string value: @@ -2274,7 +2922,10 @@ paths: type: integer is_oauth: type: boolean - required: &ref_132 + expires_at: + type: string + format: date-time + required: &ref_145 - path - value - is_secret @@ -2325,7 +2976,7 @@ paths: - name: path in: path required: true - schema: *ref_17 + schema: *ref_21 responses: '200': description: variable deleted @@ -2347,7 +2998,7 @@ paths: - name: path in: path required: true - schema: *ref_17 + schema: *ref_21 - name: already_encrypted in: query schema: @@ -2359,7 +3010,7 @@ paths: application/json: schema: type: object - properties: &ref_133 + properties: &ref_146 path: type: string value: @@ -2389,7 +3040,7 @@ paths: - name: path in: path required: true - schema: *ref_17 + schema: *ref_21 - name: decrypt_secret description: | ask to decrypt secret if this variable is secret @@ -2411,7 +3062,7 @@ paths: application/json: schema: type: object - properties: &ref_18 + properties: &ref_22 workspace_id: type: string path: @@ -2438,7 +3089,10 @@ paths: type: boolean is_refreshed: type: boolean - required: &ref_19 + expires_at: + type: string + format: date-time + required: &ref_23 - workspace_id - path - is_secret @@ -2457,7 +3111,7 @@ paths: - name: path in: path required: true - schema: *ref_17 + schema: *ref_21 responses: '200': description: variable @@ -2479,7 +3133,7 @@ paths: - name: path in: path required: true - schema: *ref_17 + schema: *ref_21 responses: '200': description: variable @@ -2498,6 +3152,18 @@ paths: in: path required: true schema: *ref_0 + - name: path_start + in: query + schema: + type: string + - name: page + description: which page to return (start at 1, default 1) + in: query + schema: *ref_5 + - name: per_page + description: number of items to return for a given page (default 30, max 100) + in: query + schema: *ref_6 responses: '200': description: variable list @@ -2507,8 +3173,8 @@ paths: type: array items: type: object - properties: *ref_18 - required: *ref_19 + properties: *ref_22 + required: *ref_23 /w/{workspace}/variables/list_contextual: get: summary: list contextual variables @@ -2529,17 +3195,20 @@ paths: type: array items: type: object - properties: &ref_129 + properties: &ref_142 name: type: string value: type: string description: type: string - required: &ref_130 + is_custom: + type: boolean + required: &ref_143 - name - value - description + - is_custom /oauth/login_callback/{client_name}: post: security: [] @@ -2551,7 +3220,7 @@ paths: - name: client_name in: path required: true - schema: &ref_20 + schema: &ref_24 type: string requestBody: description: Partially filled script @@ -2614,6 +3283,34 @@ paths: 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 @@ -2624,7 +3321,7 @@ paths: - name: client_name in: path required: true - schema: *ref_20 + schema: *ref_24 requestBody: description: code endpoint required: true @@ -2647,7 +3344,7 @@ paths: application/json: schema: type: object - properties: &ref_167 + properties: &ref_191 access_token: type: string expires_in: @@ -2658,7 +3355,7 @@ paths: type: array items: type: string - required: &ref_168 + required: &ref_192 - access_token /w/{workspace}/oauth/create_account: post: @@ -2709,7 +3406,7 @@ paths: - name: id in: path required: true - schema: &ref_21 + schema: &ref_25 type: integer requestBody: description: variable path @@ -2744,7 +3441,7 @@ paths: - name: id in: path required: true - schema: *ref_21 + schema: *ref_25 responses: '200': description: disconnected client @@ -2787,7 +3484,14 @@ paths: oauth: type: array items: - type: string + type: object + properties: + type: + type: string + display_name: + type: string + required: + - type saml: type: string required: @@ -2804,16 +3508,36 @@ paths: content: application/json: schema: - additionalProperties: - type: object - properties: - extra_params: - additionalProperties: - type: string - scopes: - type: array - items: - type: string + 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 /w/{workspace}/resources/create: post: summary: create resource @@ -2836,7 +3560,7 @@ paths: application/json: schema: type: object - properties: &ref_136 + properties: &ref_153 path: type: string value: {} @@ -2844,7 +3568,7 @@ paths: type: string resource_type: type: string - required: &ref_137 + required: &ref_154 - path - value - resource_type @@ -2869,7 +3593,7 @@ paths: - name: path in: path required: true - schema: *ref_17 + schema: *ref_21 responses: '200': description: resource deleted @@ -2891,7 +3615,7 @@ paths: - name: path in: path required: true - schema: *ref_17 + schema: *ref_21 requestBody: description: updated resource required: true @@ -2899,7 +3623,7 @@ paths: application/json: schema: type: object - properties: &ref_138 + properties: &ref_155 path: type: string description: @@ -2926,7 +3650,7 @@ paths: - name: path in: path required: true - schema: *ref_17 + schema: *ref_21 requestBody: description: updated resource required: true @@ -2957,7 +3681,7 @@ paths: - name: path in: path required: true - schema: *ref_17 + schema: *ref_21 responses: '200': description: resource @@ -2965,7 +3689,7 @@ paths: application/json: schema: type: object - properties: &ref_139 + properties: &ref_156 workspace_id: type: string path: @@ -2981,7 +3705,12 @@ paths: type: object additionalProperties: type: boolean - required: &ref_140 + created_by: + type: string + edited_at: + type: string + format: date-time + required: &ref_157 - path - resource_type - is_oauth @@ -2999,7 +3728,7 @@ paths: - name: path in: path required: true - schema: *ref_17 + schema: *ref_21 - name: job_id description: job id in: query @@ -3026,7 +3755,7 @@ paths: - name: path in: path required: true - schema: *ref_17 + schema: *ref_21 responses: '200': description: resource value @@ -3047,7 +3776,7 @@ paths: - name: path in: path required: true - schema: *ref_17 + schema: *ref_21 responses: '200': description: does resource exists @@ -3069,11 +3798,11 @@ paths: - name: page description: which page to return (start at 1, default 1) in: query - schema: *ref_3 + schema: *ref_5 - name: per_page description: number of items to return for a given page (default 30, max 100) in: query - schema: *ref_4 + schema: *ref_6 - name: resource_type description: resource_types to list from, separated by ',', in: query @@ -3084,6 +3813,10 @@ paths: in: query schema: type: string + - name: path_start + in: query + schema: + type: string responses: '200': description: resource list @@ -3093,7 +3826,7 @@ paths: type: array items: type: object - properties: &ref_141 + properties: &ref_158 workspace_id: type: string path: @@ -3119,7 +3852,12 @@ paths: type: boolean account: type: number - required: &ref_142 + created_by: + type: string + edited_at: + type: string + format: date-time + required: &ref_159 - path - resource_type - is_oauth @@ -3166,7 +3904,7 @@ paths: - name: name in: path required: true - schema: &ref_80 + schema: &ref_92 type: string responses: '200': @@ -3203,7 +3941,7 @@ paths: application/json: schema: type: object - properties: &ref_22 + properties: &ref_26 workspace_id: type: string name: @@ -3211,7 +3949,14 @@ paths: schema: {} description: type: string - required: &ref_23 + created_by: + type: string + edited_at: + type: string + format: date-time + format_extension: + type: string + required: &ref_27 - name responses: '201': @@ -3220,6 +3965,23 @@ paths: text/plain: schema: type: string + /w/{workspace}/resources/file_resource_type_to_file_ext_map: + get: + summary: get map from resource type to format extension + operationId: fileResourceTypeToFileExtMap + tags: + - resource + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + responses: + '200': + description: map from resource type to file ext + content: + application/json: + schema: {} /w/{workspace}/resources/type/delete/{path}: delete: summary: delete resource_type @@ -3234,7 +3996,7 @@ paths: - name: path in: path required: true - schema: *ref_17 + schema: *ref_21 responses: '200': description: resource_type deleted @@ -3256,7 +4018,7 @@ paths: - name: path in: path required: true - schema: *ref_17 + schema: *ref_21 requestBody: description: updated resource_type required: true @@ -3264,7 +4026,7 @@ paths: application/json: schema: type: object - properties: &ref_143 + properties: &ref_160 schema: {} description: type: string @@ -3289,7 +4051,7 @@ paths: - name: path in: path required: true - schema: *ref_17 + schema: *ref_21 responses: '200': description: resource_type deleted @@ -3297,8 +4059,8 @@ paths: application/json: schema: type: object - properties: *ref_22 - required: *ref_23 + properties: *ref_26 + required: *ref_27 /w/{workspace}/resources/type/exists/{path}: get: summary: does resource_type exists @@ -3313,7 +4075,7 @@ paths: - name: path in: path required: true - schema: *ref_17 + schema: *ref_21 responses: '200': description: does resource_type exist @@ -3341,8 +4103,8 @@ paths: type: array items: type: object - properties: *ref_22 - required: *ref_23 + properties: *ref_26 + required: *ref_27 /w/{workspace}/resources/type/listnames: get: summary: list resource_types names @@ -3481,7 +4243,7 @@ paths: - name: id in: path required: true - schema: *ref_24 + schema: *ref_28 responses: '200': description: flow @@ -3492,51 +4254,51 @@ paths: properties: flow: type: object - properties: &ref_43 + properties: &ref_50 summary: type: string description: type: string value: type: object - properties: &ref_50 + properties: &ref_58 modules: type: array items: type: object - properties: &ref_27 + properties: &ref_31 id: type: string value: - oneOf: &ref_206 + oneOf: &ref_239 - type: object - properties: &ref_192 + properties: &ref_223 input_transforms: type: object additionalProperties: - oneOf: &ref_25 + oneOf: &ref_29 - type: object - properties: &ref_188 + properties: &ref_219 value: {} type: type: string enum: - javascript - required: &ref_189 + required: &ref_220 - expr - type - type: object - properties: &ref_190 + properties: &ref_221 expr: type: string type: type: string enum: - javascript - required: &ref_191 + required: &ref_222 - expr - type - discriminator: &ref_26 + discriminator: &ref_30 propertyName: type mapping: static: '#/components/schemas/StaticTransform' @@ -3559,6 +4321,7 @@ paths: - mssql - graphql - nativets + - php path: type: string lock: @@ -3573,18 +4336,20 @@ paths: type: number concurrency_time_window_s: type: number - required: &ref_193 + custom_concurrency_key: + type: string + required: &ref_224 - type - content - language - input_transforms - type: object - properties: &ref_194 + properties: &ref_225 input_transforms: type: object additionalProperties: - oneOf: *ref_25 - discriminator: *ref_26 + oneOf: *ref_29 + discriminator: *ref_30 path: type: string hash: @@ -3593,40 +4358,42 @@ paths: type: string enum: - script - required: &ref_195 + tag_override: + type: string + required: &ref_226 - type - path - input_transforms - type: object - properties: &ref_196 + properties: &ref_227 input_transforms: type: object additionalProperties: - oneOf: *ref_25 - discriminator: *ref_26 + oneOf: *ref_29 + discriminator: *ref_30 path: type: string type: type: string enum: - flow - required: &ref_197 + required: &ref_228 - type - path - input_transforms - type: object - properties: &ref_198 + properties: &ref_229 modules: type: array items: type: object - properties: *ref_27 - required: &ref_28 + properties: *ref_31 + required: &ref_32 - value - id iterator: - oneOf: *ref_25 - discriminator: *ref_26 + oneOf: *ref_29 + discriminator: *ref_30 skip_failures: type: boolean type: @@ -3637,13 +4404,35 @@ paths: type: boolean parallelism: type: integer - required: &ref_199 + required: &ref_230 - modules - iterator - skip_failures - type - type: object - properties: &ref_200 + properties: &ref_231 + modules: + type: array + items: + type: object + properties: *ref_31 + required: *ref_32 + skip_failures: + type: boolean + type: + type: string + enum: + - forloopflow + parallel: + type: boolean + parallelism: + type: integer + required: &ref_232 + - modules + - skip_failures + - type + - type: object + properties: &ref_233 branches: type: array items: @@ -3657,8 +4446,8 @@ paths: type: array items: type: object - properties: *ref_27 - required: *ref_28 + properties: *ref_31 + required: *ref_32 required: - modules - expr @@ -3666,20 +4455,20 @@ paths: type: array items: type: object - properties: *ref_27 - required: *ref_28 + properties: *ref_31 + required: *ref_32 required: - modules type: type: string enum: - branchone - required: &ref_201 + required: &ref_234 - branches - default - type - type: object - properties: &ref_202 + properties: &ref_235 branches: type: array items: @@ -3693,8 +4482,8 @@ paths: type: array items: type: object - properties: *ref_27 - required: *ref_28 + properties: *ref_31 + required: *ref_32 required: - modules - expr @@ -3704,26 +4493,27 @@ paths: - branchall parallel: type: boolean - required: &ref_203 + required: &ref_236 - branches - type - type: object - properties: &ref_204 + properties: &ref_237 type: type: string enum: - identity flow: type: boolean - required: &ref_205 + required: &ref_238 - type - discriminator: &ref_207 + discriminator: &ref_240 propertyName: type mapping: rawscript: '#/components/schemas/RawScript' script: '#/components/schemas/PathScript' flow: '#/components/schemas/PathFlow' forloopflow: '#/components/schemas/ForloopFlow' + whileloopflow: '#/components/schemas/WhileloopFlow' branchone: '#/components/schemas/BranchOne' branchall: '#/components/schemas/BranchAll' identity: '#/components/schemas/Identity' @@ -3736,9 +4526,25 @@ paths: type: string required: - expr + stop_after_all_iters_if: + type: object + properties: + skip_if_stopped: + type: boolean + expr: + type: string + required: + - expr + skip_if: + type: object + properties: + expr: + type: string + required: + - expr sleep: - oneOf: *ref_25 - discriminator: *ref_26 + oneOf: *ref_29 + discriminator: *ref_30 cache_ttl: type: number timeout: @@ -3768,15 +4574,21 @@ paths: user_auth_required: type: boolean user_groups_required: - oneOf: *ref_25 - discriminator: *ref_26 + oneOf: *ref_29 + discriminator: *ref_30 self_approval_disabled: type: boolean + hide_cancel: + type: boolean + continue_on_disapprove_timeout: + type: boolean priority: type: number + continue_on_error: + type: boolean retry: type: object - properties: &ref_77 + properties: &ref_87 constant: type: object properties: @@ -3797,15 +4609,21 @@ paths: type: integer minimum: 0 maximum: 100 - required: *ref_28 + required: *ref_32 failure_module: type: object - properties: *ref_27 - required: *ref_28 + properties: *ref_31 + required: *ref_32 + preprocessor_module: + type: object + properties: *ref_31 + required: *ref_32 same_worker: type: boolean concurrent_limit: type: number + concurrency_key: + type: string concurrency_time_window_s: type: number skip_expr: @@ -3816,11 +4634,11 @@ paths: type: number early_return: type: string - required: &ref_51 + required: &ref_59 - modules schema: type: object - required: &ref_44 + required: &ref_51 - summary - value /apps/hub/list: @@ -3873,7 +4691,7 @@ paths: - name: id in: path required: true - schema: *ref_24 + schema: *ref_28 responses: '200': description: app @@ -3903,7 +4721,7 @@ paths: - name: path in: path required: true - schema: &ref_29 + schema: &ref_33 type: string responses: '200': @@ -3922,7 +4740,7 @@ paths: - name: path in: path required: true - schema: *ref_29 + schema: *ref_33 responses: '200': description: script details @@ -3993,7 +4811,7 @@ paths: type: number kind: name: kind - schema: &ref_30 + schema: &ref_34 type: string enum: - script @@ -4066,7 +4884,7 @@ paths: type: string kind: name: kind - schema: *ref_30 + schema: *ref_34 score: type: number required: @@ -4119,20 +4937,20 @@ paths: - name: page description: which page to return (start at 1, default 1) in: query - schema: *ref_3 + schema: *ref_5 - name: per_page description: number of items to return for a given page (default 30, max 100) in: query - schema: *ref_4 + schema: *ref_6 - name: order_desc description: order by desc order (default true) in: query - schema: &ref_41 + schema: &ref_48 type: boolean - name: created_by description: mask to filter exact matching user creator in: query - schema: &ref_42 + schema: &ref_49 type: string - name: path_start description: mask to filter matching starting path @@ -4182,7 +5000,7 @@ paths: description: > (default false) - show also the archived files. + show only the archived files. when multiple archived hash share the same path, only the ones with the latest create_at @@ -4193,6 +5011,20 @@ paths: in: query schema: type: boolean + - name: include_without_main + description: | + (default false) + include scripts without an exported main function + in: query + schema: + type: boolean + - name: include_draft_only + description: | + (default false) + include scripts that have no deployed version + in: query + schema: + type: boolean - name: is_template description: | (default regardless) @@ -4216,6 +5048,13 @@ paths: in: query schema: type: boolean + - name: with_deployment_msg + description: | + (default false) + include deployment message + in: query + schema: + type: boolean responses: '200': description: All scripts @@ -4225,7 +5064,7 @@ paths: type: array items: type: object - properties: &ref_31 + properties: &ref_35 workspace_id: type: string hash: @@ -4282,6 +5121,9 @@ paths: - graphql - nativets - bun + - php + - rust + - ansible kind: type: string enum: @@ -4306,6 +5148,8 @@ paths: type: integer concurrency_time_window_s: type: integer + concurrency_key: + type: string cache_ttl: type: number dedicated_worker: @@ -4320,7 +5164,15 @@ paths: type: integer delete_after_use: type: boolean - required: &ref_32 + visible_to_runner_only: + type: boolean + no_main_func: + type: boolean + codebase: + type: string + has_preprocessor: + type: boolean + required: &ref_36 - hash - path - summary @@ -4335,6 +5187,8 @@ paths: - language - kind - starred + - no_main_func + - has_preprocessor /w/{workspace}/scripts/list_paths: get: summary: list all scripts paths @@ -4416,7 +5270,7 @@ paths: - name: path in: path required: true - schema: *ref_29 + schema: *ref_33 responses: '200': description: draft deleted @@ -4442,7 +5296,7 @@ paths: application/json: schema: type: object - properties: &ref_34 + properties: &ref_40 path: type: string parent_hash: @@ -4475,6 +5329,9 @@ paths: - graphql - nativets - bun + - php + - rust + - ansible kind: type: string enum: @@ -4513,7 +5370,15 @@ paths: type: string concurrency_key: type: string - required: &ref_35 + visible_to_runner_only: + type: boolean + no_main_func: + type: boolean + codebase: + type: string + has_preprocessor: + type: boolean + required: &ref_41 - path - summary - description @@ -4540,7 +5405,7 @@ paths: - name: path in: path required: true - schema: *ref_29 + schema: *ref_33 requestBody: description: Workspace error handler enabled required: true @@ -4617,7 +5482,7 @@ paths: - name: path in: path required: true - schema: *ref_29 + schema: *ref_33 responses: '200': description: script archived @@ -4639,7 +5504,7 @@ paths: - name: hash in: path required: true - schema: &ref_33 + schema: &ref_37 type: string responses: '200': @@ -4648,8 +5513,8 @@ paths: application/json: schema: type: object - properties: *ref_31 - required: *ref_32 + properties: *ref_35 + required: *ref_36 /w/{workspace}/scripts/delete/h/{hash}: post: summary: delete script by hash (erase content but keep hash, require admin) @@ -4664,7 +5529,7 @@ paths: - name: hash in: path required: true - schema: *ref_33 + schema: *ref_37 responses: '200': description: script details @@ -4672,8 +5537,8 @@ paths: application/json: schema: type: object - properties: *ref_31 - required: *ref_32 + properties: *ref_35 + required: *ref_36 /w/{workspace}/scripts/delete/p/{path}: post: summary: delete all scripts at a given path (require admin) @@ -4688,7 +5553,7 @@ paths: - name: path in: path required: true - schema: *ref_29 + schema: *ref_33 responses: '200': description: script path @@ -4710,7 +5575,11 @@ paths: - name: path in: path required: true - schema: *ref_29 + schema: *ref_33 + - name: with_starred_info + in: query + schema: + type: boolean responses: '200': description: script details @@ -4718,8 +5587,70 @@ paths: application/json: schema: type: object - properties: *ref_31 - required: *ref_32 + properties: *ref_35 + required: *ref_36 + /w/{workspace}/scripts/get_triggers_count/{path}: + get: + summary: get triggers count of script + operationId: getTriggersCountOfScript + tags: + - script + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - name: path + in: path + required: true + schema: *ref_33 + responses: + '200': + description: triggers count + content: + application/json: + schema: + type: object + properties: &ref_53 + 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 + /w/{workspace}/scripts/list_tokens/{path}: + get: + summary: get tokens with script scope + operationId: listTokensOfScript + tags: + - script + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - name: path + in: path + required: true + schema: *ref_33 + responses: + '200': + description: tokens list + content: + application/json: + schema: + type: array + items: + type: object + properties: *ref_38 + required: *ref_39 /w/{workspace}/scripts/get/draft/{path}: get: summary: get script by path with draft @@ -4734,23 +5665,23 @@ paths: - name: path in: path required: true - schema: *ref_29 + schema: *ref_33 responses: '200': description: script details content: application/json: schema: - allOf: &ref_110 + allOf: &ref_126 - type: object - properties: *ref_34 - required: *ref_35 + properties: *ref_40 + required: *ref_41 - type: object properties: draft: type: object - properties: *ref_34 - required: *ref_35 + properties: *ref_40 + required: *ref_41 hash: type: string required: @@ -4769,7 +5700,7 @@ paths: - name: path in: path required: true - schema: *ref_29 + schema: *ref_33 responses: '200': description: script history @@ -4779,12 +5710,12 @@ paths: type: array items: type: object - properties: &ref_111 + properties: &ref_127 script_hash: type: string deployment_msg: type: string - required: &ref_112 + required: &ref_128 - script_hash /w/{workspace}/scripts/history_update/h/{hash}/p/{path}: post: @@ -4800,11 +5731,11 @@ paths: - name: hash in: path required: true - schema: *ref_33 + schema: *ref_37 - name: path in: path required: true - schema: *ref_29 + schema: *ref_33 requestBody: description: Script deployment message required: true @@ -4836,7 +5767,7 @@ paths: - name: path in: path required: true - schema: *ref_29 + schema: *ref_33 responses: '200': description: script content @@ -4860,12 +5791,12 @@ paths: - name: token in: path required: true - schema: &ref_96 + schema: &ref_115 type: string - name: path in: path required: true - schema: *ref_29 + schema: *ref_33 responses: '200': description: script content @@ -4887,7 +5818,7 @@ paths: - name: path in: path required: true - schema: *ref_29 + schema: *ref_33 responses: '200': description: does it exists @@ -4909,7 +5840,11 @@ paths: - name: hash in: path required: true - schema: *ref_33 + schema: *ref_37 + - name: with_starred_info + in: query + schema: + type: boolean responses: '200': description: script details @@ -4917,8 +5852,8 @@ paths: application/json: schema: type: object - properties: *ref_31 - required: *ref_32 + properties: *ref_35 + required: *ref_36 /w/{workspace}/scripts/raw/h/{path}: get: summary: raw script by hash @@ -4933,7 +5868,7 @@ paths: - name: path in: path required: true - schema: *ref_29 + schema: *ref_33 responses: '200': description: script content @@ -4955,7 +5890,7 @@ paths: - name: hash in: path required: true - schema: *ref_33 + schema: *ref_37 responses: '200': description: script details @@ -4982,7 +5917,7 @@ paths: - name: path in: path required: true - schema: *ref_29 + schema: *ref_33 - name: scheduled_for description: when to schedule this job (leave empty for immediate run) in: query @@ -4994,18 +5929,30 @@ paths: in: query schema: type: integer + - name: skip_preprocessor + description: skip the preprocessor + in: query + schema: + type: boolean - name: parent_job description: >- The parent job that is at the origin and responsible for the execution of this script if any in: query - schema: &ref_36 + schema: &ref_42 type: string format: uuid - name: tag description: Override the tag to use in: query - schema: &ref_38 + schema: &ref_44 + type: string + - name: cache_ttl + description: >- + Override the cache time to live (in seconds). Can not be used to + disable caching, only override with a new cache ttl + in: query + schema: &ref_45 type: string - name: job_id description: >- @@ -5014,7 +5961,7 @@ paths: queue or as a completed job, the request to create one will fail (Bad Request) in: query - schema: &ref_37 + schema: &ref_43 type: string format: uuid - name: invisible_to_owner @@ -5029,7 +5976,7 @@ paths: application/json: schema: type: object - additionalProperties: *ref_14 + additionalProperties: *ref_16 responses: '201': description: job created @@ -5052,13 +5999,13 @@ paths: - name: path in: path required: true - schema: *ref_29 + schema: *ref_33 - name: parent_job description: >- The parent job that is at the origin and responsible for the execution of this script if any in: query - schema: *ref_36 + schema: *ref_42 - name: job_id description: >- The job id to assign to the created job. if missing, job is chosen @@ -5066,7 +6013,7 @@ paths: queue or as a completed job, the request to create one will fail (Bad Request) in: query - schema: *ref_37 + schema: *ref_43 - name: include_header description: > List of headers's keys (separated with ',') whove value are added to @@ -5075,14 +6022,14 @@ paths: Header's key lowercased and '-'' replaced to '_' such that 'Content-Type' becomes the 'content_type' arg key in: query - schema: &ref_39 + schema: &ref_46 type: string - name: queue_limit description: > The maximum size of the queue for which the request would get rejected if that job would push it above that limit in: query - schema: &ref_40 + schema: &ref_47 type: string requestBody: description: script args @@ -5091,7 +6038,7 @@ paths: application/json: schema: type: object - additionalProperties: *ref_14 + additionalProperties: *ref_16 responses: '200': description: job result @@ -5112,17 +6059,23 @@ paths: - name: path in: path required: true - schema: *ref_29 + schema: *ref_33 - name: parent_job description: >- The parent job that is at the origin and responsible for the execution of this script if any in: query - schema: *ref_36 + schema: *ref_42 - name: tag description: Override the tag to use in: query - schema: *ref_38 + schema: *ref_44 + - name: cache_ttl + description: >- + Override the cache time to live (in seconds). Can not be used to + disable caching, only override with a new cache ttl + in: query + schema: *ref_45 - name: job_id description: >- The job id to assign to the created job. if missing, job is chosen @@ -5130,7 +6083,7 @@ paths: queue or as a completed job, the request to create one will fail (Bad Request) in: query - schema: *ref_37 + schema: *ref_43 - name: include_header description: > List of headers's keys (separated with ',') whove value are added to @@ -5139,13 +6092,13 @@ paths: Header's key lowercased and '-'' replaced to '_' such that 'Content-Type' becomes the 'content_type' arg key in: query - schema: *ref_39 + schema: *ref_46 - name: queue_limit description: > The maximum size of the queue for which the request would get rejected if that job would push it above that limit in: query - schema: *ref_40 + schema: *ref_47 requestBody: description: script args required: true @@ -5153,7 +6106,7 @@ paths: application/json: schema: type: object - additionalProperties: *ref_14 + additionalProperties: *ref_16 responses: '200': description: job result @@ -5173,17 +6126,23 @@ paths: - name: path in: path required: true - schema: *ref_29 + schema: *ref_33 - name: parent_job description: >- The parent job that is at the origin and responsible for the execution of this script if any in: query - schema: *ref_36 + schema: *ref_42 - name: tag description: Override the tag to use in: query - schema: *ref_38 + schema: *ref_44 + - name: cache_ttl + description: >- + Override the cache time to live (in seconds). Can not be used to + disable caching, only override with a new cache ttl + in: query + schema: *ref_45 - name: job_id description: >- The job id to assign to the created job. if missing, job is chosen @@ -5191,7 +6150,7 @@ paths: queue or as a completed job, the request to create one will fail (Bad Request) in: query - schema: *ref_37 + schema: *ref_43 - name: include_header description: > List of headers's keys (separated with ',') whove value are added to @@ -5200,13 +6159,13 @@ paths: Header's key lowercased and '-'' replaced to '_' such that 'Content-Type' becomes the 'content_type' arg key in: query - schema: *ref_39 + schema: *ref_46 - name: queue_limit description: > The maximum size of the queue for which the request would get rejected if that job would push it above that limit in: query - schema: *ref_40 + schema: *ref_47 - name: payload description: > The base64 encoded payload that has been encoded as a JSON. e.g how @@ -5214,7 +6173,7 @@ paths: `encodeURIComponent(btoa(JSON.stringify({a: 2})))` in: query - schema: &ref_76 + schema: &ref_86 type: string responses: '200': @@ -5236,7 +6195,7 @@ paths: - name: path in: path required: true - schema: *ref_29 + schema: *ref_33 - name: include_header description: > List of headers's keys (separated with ',') whove value are added to @@ -5245,13 +6204,13 @@ paths: Header's key lowercased and '-'' replaced to '_' such that 'Content-Type' becomes the 'content_type' arg key in: query - schema: *ref_39 + schema: *ref_46 - name: queue_limit description: > The maximum size of the queue for which the request would get rejected if that job would push it above that limit in: query - schema: *ref_40 + schema: *ref_47 - name: job_id description: >- The job id to assign to the created job. if missing, job is chosen @@ -5259,7 +6218,7 @@ paths: queue or as a completed job, the request to create one will fail (Bad Request) in: query - schema: *ref_37 + schema: *ref_43 requestBody: description: script args required: true @@ -5267,7 +6226,7 @@ paths: application/json: schema: type: object - additionalProperties: *ref_14 + additionalProperties: *ref_16 responses: '200': description: job result @@ -5288,7 +6247,7 @@ paths: - name: path in: path required: true - schema: *ref_29 + schema: *ref_33 - name: include_header description: > List of headers's keys (separated with ',') whove value are added to @@ -5297,13 +6256,13 @@ paths: Header's key lowercased and '-'' replaced to '_' such that 'Content-Type' becomes the 'content_type' arg key in: query - schema: *ref_39 + schema: *ref_46 - name: queue_limit description: > The maximum size of the queue for which the request would get rejected if that job would push it above that limit in: query - schema: *ref_40 + schema: *ref_47 - name: job_id description: >- The job id to assign to the created job. if missing, job is chosen @@ -5311,7 +6270,7 @@ paths: queue or as a completed job, the request to create one will fail (Bad Request) in: query - schema: *ref_37 + schema: *ref_43 requestBody: description: script args required: true @@ -5319,7 +6278,7 @@ paths: application/json: schema: type: object - additionalProperties: *ref_14 + additionalProperties: *ref_16 responses: '200': description: job result @@ -5414,19 +6373,19 @@ paths: - name: page description: which page to return (start at 1, default 1) in: query - schema: *ref_3 + schema: *ref_5 - name: per_page description: number of items to return for a given page (default 30, max 100) in: query - schema: *ref_4 + schema: *ref_6 - name: order_desc description: order by desc order (default true) in: query - schema: *ref_41 + schema: *ref_48 - name: created_by description: mask to filter exact matching user creator in: query - schema: *ref_42 + schema: *ref_49 - name: path_start description: mask to filter matching starting path in: query @@ -5441,7 +6400,7 @@ paths: description: > (default false) - show also the archived files. + show only the archived files. when multiple archived hash share the same path, only the ones with the latest create_at @@ -5457,6 +6416,20 @@ paths: in: query schema: type: boolean + - name: include_draft_only + description: | + (default false) + include items that have no deployed version + in: query + schema: + type: boolean + - name: with_deployment_msg + description: | + (default false) + include deployment message + in: query + schema: + type: boolean responses: '200': description: All flow @@ -5466,12 +6439,12 @@ paths: type: array items: allOf: - - allOf: &ref_45 + - allOf: &ref_52 - type: object - properties: *ref_43 - required: *ref_44 + properties: *ref_50 + required: *ref_51 - type: object - properties: &ref_155 + properties: &ref_177 workspace_id: type: string path: @@ -5485,8 +6458,8 @@ paths: type: boolean extra_perms: type: object - additionalProperties: - type: boolean + additionalProperties: &ref_176 + type: boolean starred: type: boolean draft_only: @@ -5501,7 +6474,9 @@ paths: type: boolean timeout: type: number - required: &ref_156 + visible_to_runner_only: + type: boolean + required: &ref_178 - path - edited_by - edited_at @@ -5513,6 +6488,109 @@ paths: type: boolean draft_only: type: boolean + /w/{workspace}/flows/history/p/{path}: + get: + summary: get flow history by path + operationId: getFlowHistory + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - name: path + in: path + required: true + schema: *ref_33 + tags: + - flow + responses: + '200': + description: Flow history + content: + application/json: + schema: + type: array + items: + type: object + properties: &ref_189 + id: + type: integer + created_at: + type: string + format: date-time + deployment_msg: + type: string + required: &ref_190 + - id + - created_at + /w/{workspace}/flows/get/v/{version}/p/{path}: + get: + summary: get flow version + operationId: getFlowVersion + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - type: string + name: version + in: path + required: true + schema: + type: number + - name: path + in: path + required: true + schema: *ref_33 + tags: + - flow + responses: + '200': + description: flow details + content: + application/json: + schema: + allOf: *ref_52 + /w/{workspace}/flows/history_update/v/{version}/p/{path}: + post: + summary: update flow history + operationId: updateFlowHistory + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - type: string + name: version + in: path + required: true + schema: + type: number + - name: path + in: path + required: true + schema: *ref_33 + 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 @@ -5527,14 +6605,67 @@ paths: - name: path in: path required: true - schema: *ref_29 + schema: *ref_33 + - name: with_starred_info + in: query + schema: + type: boolean responses: '200': description: flow details content: application/json: schema: - allOf: *ref_45 + allOf: *ref_52 + /w/{workspace}/flows/get_triggers_count/{path}: + get: + summary: get triggers count of flow + operationId: getTriggersCountOfFlow + tags: + - flow + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - name: path + in: path + required: true + schema: *ref_33 + responses: + '200': + description: triggers count + content: + application/json: + schema: + type: object + properties: *ref_53 + /w/{workspace}/flows/list_tokens/{path}: + get: + summary: get tokens with flow scope + operationId: listTokensOfFlow + tags: + - flow + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - name: path + in: path + required: true + schema: *ref_33 + responses: + '200': + description: tokens list + content: + application/json: + schema: + type: array + items: + type: object + properties: *ref_38 + required: *ref_39 /w/{workspace}/flows/toggle_workspace_error_handler/{path}: post: summary: Toggle ON and OFF the workspace error handler for a given flow @@ -5549,7 +6680,7 @@ paths: - name: path in: path required: true - schema: *ref_29 + schema: *ref_33 requestBody: description: Workspace error handler enabled required: true @@ -5581,7 +6712,7 @@ paths: - name: path in: path required: true - schema: *ref_29 + schema: *ref_33 responses: '200': description: flow details with draft @@ -5589,11 +6720,11 @@ paths: application/json: schema: allOf: - - allOf: *ref_45 + - allOf: *ref_52 - type: object properties: draft: - allOf: *ref_45 + allOf: *ref_52 /w/{workspace}/flows/exists/{path}: get: summary: exists flow by path @@ -5608,7 +6739,7 @@ paths: - name: path in: path required: true - schema: *ref_29 + schema: *ref_33 responses: '200': description: flow details @@ -5634,10 +6765,10 @@ paths: application/json: schema: allOf: - - allOf: &ref_46 + - allOf: &ref_54 - type: object - properties: *ref_43 - required: *ref_44 + properties: *ref_50 + required: *ref_51 - type: object properties: path: @@ -5652,6 +6783,8 @@ paths: type: boolean timeout: type: number + visible_to_runner_only: + type: boolean required: - path - type: object @@ -5681,7 +6814,7 @@ paths: - name: path in: path required: true - schema: *ref_29 + schema: *ref_33 requestBody: description: Partially filled flow required: true @@ -5689,7 +6822,7 @@ paths: application/json: schema: allOf: - - allOf: *ref_46 + - allOf: *ref_54 - type: object properties: deployment_message: @@ -5715,7 +6848,7 @@ paths: - name: path in: path required: true - schema: *ref_29 + schema: *ref_33 requestBody: description: archiveFlow required: true @@ -5747,7 +6880,7 @@ paths: - name: path in: path required: true - schema: *ref_29 + schema: *ref_33 responses: '200': description: flow delete @@ -5755,61 +6888,6 @@ paths: text/plain: schema: type: string - /w/{workspace}/flows/input_history/p/{path}: - get: - summary: list inputs for previous completed flow jobs - operationId: getFlowInputHistoryByPath - tags: - - flow - parameters: - - name: workspace - in: path - required: true - schema: *ref_0 - - name: path - in: path - required: true - schema: *ref_29 - - name: page - description: which page to return (start at 1, default 1) - in: query - schema: *ref_3 - - name: per_page - description: number of items to return for a given page (default 30, max 100) - in: query - schema: *ref_4 - responses: - '200': - description: input history for completed jobs with this flow path - content: - application/json: - schema: - type: array - items: - type: object - properties: &ref_87 - id: - type: string - name: - type: string - args: - type: object - created_by: - type: string - created_at: - type: string - format: date-time - is_public: - type: boolean - success: - type: boolean - required: &ref_88 - - id - - name - - args - - created_by - - created_at - - is_public /w/{workspace}/raw_apps/list: get: summary: list all raw apps @@ -5824,19 +6902,19 @@ paths: - name: page description: which page to return (start at 1, default 1) in: query - schema: *ref_3 + schema: *ref_5 - name: per_page description: number of items to return for a given page (default 30, max 100) in: query - schema: *ref_4 + schema: *ref_6 - name: order_desc description: order by desc order (default true) in: query - schema: *ref_41 + schema: *ref_48 - name: created_by description: mask to filter exact matching user creator in: query - schema: *ref_42 + schema: *ref_49 - name: path_start description: mask to filter matching starting path in: query @@ -5863,7 +6941,7 @@ paths: type: array items: type: object - properties: &ref_162 + properties: &ref_184 workspace_id: type: string path: @@ -5881,7 +6959,7 @@ paths: edited_at: type: string format: date-time - required: &ref_163 + required: &ref_185 - workspace_id - path - summary @@ -5902,7 +6980,7 @@ paths: - name: path in: path required: true - schema: *ref_17 + schema: *ref_21 responses: '200': description: app exists @@ -5924,12 +7002,12 @@ paths: - name: version in: path required: true - schema: &ref_95 + schema: &ref_114 type: number - name: path in: path required: true - schema: *ref_29 + schema: *ref_33 responses: '200': description: app details @@ -5978,19 +7056,19 @@ paths: - name: page description: which page to return (start at 1, default 1) in: query - schema: *ref_3 + schema: *ref_5 - name: per_page description: number of items to return for a given page (default 30, max 100) in: query - schema: *ref_4 + schema: *ref_6 - name: order_desc description: order by desc order (default true) in: query - schema: *ref_41 + schema: *ref_48 - name: created_by description: mask to filter exact matching user creator in: query - schema: *ref_42 + schema: *ref_49 - name: path_start description: mask to filter matching starting path in: query @@ -6008,6 +7086,20 @@ paths: in: query schema: type: boolean + - name: include_draft_only + description: | + (default false) + include items that have no deployed version + in: query + schema: + type: boolean + - name: with_deployment_msg + description: | + (default false) + include deployment message + in: query + schema: + type: boolean responses: '200': description: All apps @@ -6017,7 +7109,7 @@ paths: type: array items: type: object - properties: &ref_160 + properties: &ref_182 id: type: integer workspace_id: @@ -6043,7 +7135,7 @@ paths: - viewer - publisher - anonymous - required: &ref_161 + required: &ref_183 - id - workspace_id - path @@ -6078,11 +7170,15 @@ paths: type: string policy: type: object - properties: &ref_47 + properties: &ref_55 triggerables: type: object additionalProperties: type: object + triggerables_v2: + type: object + additionalProperties: + type: object execution_mode: type: string enum: @@ -6123,7 +7219,7 @@ paths: - name: path in: path required: true - schema: *ref_17 + schema: *ref_21 responses: '200': description: app exists @@ -6145,7 +7241,11 @@ paths: - name: path in: path required: true - schema: *ref_29 + schema: *ref_33 + - name: with_starred_info + in: query + schema: + type: boolean responses: '200': description: app details @@ -6153,7 +7253,7 @@ paths: application/json: schema: type: object - properties: &ref_48 + properties: &ref_56 id: type: integer workspace_id: @@ -6171,10 +7271,11 @@ paths: created_at: type: string format: date-time - value: {} + value: + type: object policy: type: object - properties: *ref_47 + properties: *ref_55 execution_mode: type: string enum: @@ -6185,7 +7286,7 @@ paths: type: object additionalProperties: type: boolean - required: &ref_49 + required: &ref_57 - id - workspace_id - path @@ -6211,17 +7312,17 @@ paths: - name: path in: path required: true - schema: *ref_29 + schema: *ref_33 responses: '200': description: app details with draft content: application/json: schema: - allOf: &ref_164 + allOf: &ref_186 - type: object - properties: *ref_48 - required: *ref_49 + properties: *ref_56 + required: *ref_57 - type: object properties: draft_only: @@ -6241,7 +7342,7 @@ paths: - name: path in: path required: true - schema: *ref_29 + schema: *ref_33 responses: '200': description: app history @@ -6251,12 +7352,12 @@ paths: type: array items: type: object - properties: &ref_165 + properties: &ref_187 version: type: integer deployment_msg: type: string - required: &ref_166 + required: &ref_188 - version /w/{workspace}/apps/history_update/a/{id}/v/{version}: post: @@ -6272,11 +7373,11 @@ paths: - name: id in: path required: true - schema: *ref_24 + schema: *ref_28 - name: version in: path required: true - schema: &ref_97 + schema: &ref_116 type: integer requestBody: description: App deployment message @@ -6309,7 +7410,7 @@ paths: - name: path in: path required: true - schema: *ref_17 + schema: *ref_21 responses: '200': description: app details @@ -6317,8 +7418,8 @@ paths: application/json: schema: type: object - properties: *ref_48 - required: *ref_49 + properties: *ref_56 + required: *ref_57 /w/{workspace}/apps_u/public_resource/{path}: get: summary: get public resource @@ -6333,7 +7434,7 @@ paths: - name: path in: path required: true - schema: *ref_17 + schema: *ref_21 responses: '200': description: resource value @@ -6354,7 +7455,7 @@ paths: - name: path in: path required: true - schema: *ref_17 + schema: *ref_21 responses: '200': description: app secret @@ -6376,7 +7477,7 @@ paths: - name: id in: path required: true - schema: *ref_24 + schema: *ref_28 responses: '200': description: app details @@ -6384,8 +7485,8 @@ paths: application/json: schema: type: object - properties: *ref_48 - required: *ref_49 + properties: *ref_56 + required: *ref_57 /w/{workspace}/raw_apps/create: post: summary: create raw app @@ -6436,7 +7537,7 @@ paths: - name: path in: path required: true - schema: *ref_29 + schema: *ref_33 requestBody: description: updateraw app required: true @@ -6472,7 +7573,7 @@ paths: - name: path in: path required: true - schema: *ref_17 + schema: *ref_21 responses: '200': description: app deleted @@ -6494,7 +7595,7 @@ paths: - name: path in: path required: true - schema: *ref_17 + schema: *ref_21 responses: '200': description: app deleted @@ -6516,7 +7617,7 @@ paths: - name: path in: path required: true - schema: *ref_29 + schema: *ref_33 requestBody: description: update app required: true @@ -6532,7 +7633,7 @@ paths: value: {} policy: type: object - properties: *ref_47 + properties: *ref_55 deployment_message: type: string responses: @@ -6556,7 +7657,7 @@ paths: - name: path in: path required: true - schema: *ref_29 + schema: *ref_33 requestBody: description: update app required: true @@ -6579,6 +7680,8 @@ paths: type: string path: type: string + lock: + type: string cache_ttl: type: integer required: @@ -6586,6 +7689,12 @@ paths: - language force_viewer_static_fields: type: object + force_viewer_one_of_fields: + type: object + force_viewer_allow_user_resources: + type: array + items: + type: string required: - args - component @@ -6610,7 +7719,7 @@ paths: - name: path in: path required: true - schema: *ref_29 + schema: *ref_33 - name: scheduled_for description: when to schedule this job (leave empty for immediate run) in: query @@ -6622,16 +7731,21 @@ paths: in: query schema: type: integer + - name: skip_preprocessor + description: skip the preprocessor + in: query + schema: + type: boolean - name: parent_job description: >- The parent job that is at the origin and responsible for the execution of this script if any in: query - schema: *ref_36 + schema: *ref_42 - name: tag description: Override the tag to use in: query - schema: *ref_38 + schema: *ref_44 - name: job_id description: >- The job id to assign to the created job. if missing, job is chosen @@ -6639,7 +7753,7 @@ paths: queue or as a completed job, the request to create one will fail (Bad Request) in: query - schema: *ref_37 + schema: *ref_43 - name: include_header description: > List of headers's keys (separated with ',') whove value are added to @@ -6648,7 +7762,7 @@ paths: Header's key lowercased and '-'' replaced to '_' such that 'Content-Type' becomes the 'content_type' arg key in: query - schema: *ref_39 + schema: *ref_46 - name: invisible_to_owner description: make the run invisible to the the flow owner (default false) in: query @@ -6661,7 +7775,7 @@ paths: application/json: schema: type: object - additionalProperties: *ref_14 + additionalProperties: *ref_16 responses: '201': description: job created @@ -6684,7 +7798,7 @@ paths: - name: id in: path required: true - schema: &ref_73 + schema: &ref_83 type: string format: uuid - name: step_id @@ -6717,11 +7831,11 @@ paths: The parent job that is at the origin and responsible for the execution of this script if any in: query - schema: *ref_36 + schema: *ref_42 - name: tag description: Override the tag to use in: query - schema: *ref_38 + schema: *ref_44 - name: job_id description: >- The job id to assign to the created job. if missing, job is chosen @@ -6729,7 +7843,7 @@ paths: queue or as a completed job, the request to create one will fail (Bad Request) in: query - schema: *ref_37 + schema: *ref_43 - name: include_header description: > List of headers's keys (separated with ',') whove value are added to @@ -6738,7 +7852,7 @@ paths: Header's key lowercased and '-'' replaced to '_' such that 'Content-Type' becomes the 'content_type' arg key in: query - schema: *ref_39 + schema: *ref_46 - name: invisible_to_owner description: make the run invisible to the the flow owner (default false) in: query @@ -6751,7 +7865,7 @@ paths: application/json: schema: type: object - additionalProperties: *ref_14 + additionalProperties: *ref_16 responses: '201': description: job created @@ -6774,7 +7888,7 @@ paths: - name: hash in: path required: true - schema: *ref_33 + schema: *ref_37 - name: scheduled_for description: when to schedule this job (leave empty for immediate run) in: query @@ -6786,16 +7900,27 @@ paths: in: query schema: type: integer + - name: skip_preprocessor + description: skip the preprocessor + in: query + schema: + type: boolean - name: parent_job description: >- The parent job that is at the origin and responsible for the execution of this script if any in: query - schema: *ref_36 + schema: *ref_42 - name: tag description: Override the tag to use in: query - schema: *ref_38 + schema: *ref_44 + - name: cache_ttl + description: >- + Override the cache time to live (in seconds). Can not be used to + disable caching, only override with a new cache ttl + in: query + schema: *ref_45 - name: job_id description: >- The job id to assign to the created job. if missing, job is chosen @@ -6803,7 +7928,7 @@ paths: queue or as a completed job, the request to create one will fail (Bad Request) in: query - schema: *ref_37 + schema: *ref_43 - name: include_header description: > List of headers's keys (separated with ',') whove value are added to @@ -6812,7 +7937,7 @@ paths: Header's key lowercased and '-'' replaced to '_' such that 'Content-Type' becomes the 'content_type' arg key in: query - schema: *ref_39 + schema: *ref_46 - name: invisible_to_owner description: make the run invisible to the the script owner (default false) in: query @@ -6852,7 +7977,7 @@ paths: Header's key lowercased and '-'' replaced to '_' such that 'Content-Type' becomes the 'content_type' arg key in: query - schema: *ref_39 + schema: *ref_46 - name: invisible_to_owner description: make the run invisible to the the script owner (default false) in: query @@ -6865,7 +7990,7 @@ paths: queue or as a completed job, the request to create one will fail (Bad Request) in: query - schema: *ref_37 + schema: *ref_43 requestBody: description: preview required: true @@ -6873,14 +7998,14 @@ paths: application/json: schema: type: object - properties: &ref_134 + properties: &ref_147 content: type: string path: type: string args: type: object - additionalProperties: *ref_14 + additionalProperties: *ref_16 language: type: string enum: @@ -6897,6 +8022,9 @@ paths: - graphql - nativets - bun + - php + - rust + - ansible tag: type: string kind: @@ -6909,7 +8037,49 @@ paths: type: boolean lock: type: string - required: &ref_135 + required: &ref_148 + - args + responses: + '201': + description: job created + content: + text/plain: + schema: + type: string + format: uuid + /w/{workspace}/jobs/workflow_as_code/{job_id}/{entrypoint}: + post: + summary: run code-workflow task + operationId: runCodeWorkflowTask + tags: + - job + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - name: job_id + in: path + required: true + schema: + type: string + - name: entrypoint + in: path + required: true + schema: + type: string + requestBody: + description: preview + required: true + content: + application/json: + schema: + type: object + properties: &ref_149 + args: + type: object + additionalProperties: *ref_16 + required: &ref_150 - args responses: '201': @@ -6942,7 +8112,7 @@ paths: type: array items: type: object - properties: &ref_184 + properties: &ref_208 raw_code: type: string path: @@ -6963,7 +8133,10 @@ paths: - graphql - nativets - bun - required: &ref_185 + - php + - rust + - ansible + required: &ref_209 - raw_code - path - language @@ -7003,7 +8176,7 @@ paths: Header's key lowercased and '-'' replaced to '_' such that 'Content-Type' becomes the 'content_type' arg key in: query - schema: *ref_39 + schema: *ref_46 - name: invisible_to_owner description: make the run invisible to the the script owner (default false) in: query @@ -7016,7 +8189,7 @@ paths: queue or as a completed job, the request to create one will fail (Bad Request) in: query - schema: *ref_37 + schema: *ref_43 requestBody: description: preview required: true @@ -7024,21 +8197,21 @@ paths: application/json: schema: type: object - properties: &ref_157 + properties: &ref_179 value: type: object - properties: *ref_50 - required: *ref_51 + properties: *ref_58 + required: *ref_59 path: type: string args: type: object - additionalProperties: *ref_14 + additionalProperties: *ref_16 tag: type: string restarted_from: type: object - properties: &ref_159 + properties: &ref_181 flow_job_id: type: string format: uuid @@ -7046,7 +8219,7 @@ paths: type: string branch_or_iteration_n: type: integer - required: &ref_158 + required: &ref_180 - value - content - args @@ -7072,95 +8245,103 @@ paths: - name: order_desc description: order by desc order (default true) in: query - schema: *ref_41 + schema: *ref_48 - name: created_by description: mask to filter exact matching user creator in: query - schema: *ref_42 + schema: *ref_49 - name: parent_job description: >- The parent job that is at the origin and responsible for the execution of this script if any in: query - schema: *ref_36 + schema: *ref_42 - name: script_path_exact description: mask to filter exact matching path in: query - schema: &ref_54 + schema: &ref_62 type: string - name: script_path_start description: mask to filter matching starting path in: query - schema: &ref_55 + schema: &ref_63 type: string - name: schedule_path description: mask to filter by schedule path in: query - schema: &ref_56 + schema: &ref_64 type: string - name: script_hash description: mask to filter exact matching path in: query - schema: &ref_57 + schema: &ref_65 type: string - name: started_before description: filter on started before (inclusive) timestamp in: query - schema: &ref_58 + schema: &ref_66 type: string format: date-time - name: started_after description: filter on started after (exclusive) timestamp in: query - schema: &ref_59 + schema: &ref_67 type: string format: date-time - name: success description: filter on successful jobs in: query - schema: &ref_60 + schema: &ref_68 type: boolean - name: scheduled_for_before_now description: filter on jobs scheduled_for before now (hence waitinf for a worker) in: query - schema: &ref_68 + schema: &ref_69 type: boolean - name: job_kinds description: >- filter on job kind (values 'preview', 'script', 'dependencies', 'flow') separated by, in: query - schema: &ref_61 + schema: &ref_70 type: string - name: suspended description: filter on suspended jobs in: query - schema: &ref_100 + schema: &ref_71 type: boolean - name: running description: filter on running jobs in: query - schema: &ref_67 + schema: &ref_72 type: boolean - name: args description: >- filter on jobs containing those args as a json subset (@> in postgres) in: query - schema: &ref_62 + schema: &ref_73 type: string - name: result description: >- filter on jobs containing those result as a json subset (@> in postgres) in: query - schema: &ref_63 + schema: &ref_74 type: string - name: tag description: filter on jobs with a given tag/worker group in: query - schema: &ref_64 + schema: &ref_75 type: string + - name: page + description: which page to return (start at 1, default 1) + in: query + schema: *ref_5 + - name: per_page + description: number of items to return for a given page (default 30, max 100) + in: query + schema: *ref_6 - name: all_workspaces description: >- get jobs from all workspaces (only valid if request come from the @@ -7168,6 +8349,11 @@ paths: 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 @@ -7177,7 +8363,7 @@ paths: type: array items: type: object - properties: &ref_71 + properties: &ref_81 workspace_id: type: string id: @@ -7205,7 +8391,7 @@ paths: type: string args: type: object - additionalProperties: *ref_14 + additionalProperties: *ref_16 logs: type: string raw_code: @@ -7244,14 +8430,14 @@ paths: by extension its DT_TOKEN. flow_status: type: object - properties: &ref_65 + properties: &ref_76 step: type: integer modules: type: array items: type: object - properties: &ref_52 + properties: &ref_60 type: type: string enum: @@ -7268,6 +8454,8 @@ paths: format: uuid count: type: integer + progress: + type: integer iterator: type: object properties: @@ -7281,6 +8469,10 @@ paths: type: array items: type: string + flow_jobs_success: + type: array + items: + type: boolean branch_chosen: type: object properties: @@ -7315,13 +8507,27 @@ paths: required: - resume_id - approver - required: &ref_53 + failed_retries: + type: array + items: + type: string + format: uuid + skipped: + type: boolean + required: &ref_61 - type + user_states: + additionalProperties: true + preprocessor_module: + allOf: + - type: object + properties: *ref_60 + required: *ref_61 failure_module: allOf: - type: object - properties: *ref_52 - required: *ref_53 + properties: *ref_60 + required: *ref_61 - type: object properties: parent_module: @@ -7336,14 +8542,14 @@ paths: items: type: string format: uuid - required: &ref_66 + required: &ref_77 - step - modules - failure_module raw_flow: type: object - properties: *ref_50 - required: *ref_51 + properties: *ref_58 + required: *ref_59 is_flow_step: type: boolean language: @@ -7362,6 +8568,9 @@ paths: - graphql - nativets - bun + - php + - rust + - ansible email: type: string visible_to_owner: @@ -7372,7 +8581,13 @@ paths: type: string priority: type: integer - required: &ref_72 + self_wait_time_ms: + type: number + aggregate_wait_time_ms: + type: number + suspend: + type: number + required: &ref_82 - id - running - canceled @@ -7410,6 +8625,8 @@ paths: properties: database_length: type: integer + suspended: + type: integer required: - database_length /w/{workspace}/jobs/completed/count: @@ -7435,10 +8652,10 @@ paths: type: integer required: - database_length - /w/{workspace}/jobs/queue/cancel_all: - post: - summary: cancel all jobs - operationId: cancelAll + /w/{workspace}/jobs/queue/list_filtered_uuids: + get: + summary: get the ids of all jobs matching the given filters + operationId: listFilteredUuids tags: - job parameters: @@ -7446,6 +8663,136 @@ paths: in: path required: true schema: *ref_0 + - name: order_desc + description: order by desc order (default true) + in: query + schema: *ref_48 + - name: created_by + description: mask to filter exact matching user creator + in: query + schema: *ref_49 + - name: parent_job + description: >- + The parent job that is at the origin and responsible for the + execution of this script if any + in: query + schema: *ref_42 + - name: script_path_exact + description: mask to filter exact matching path + in: query + schema: *ref_62 + - name: script_path_start + description: mask to filter matching starting path + in: query + schema: *ref_63 + - name: schedule_path + description: mask to filter by schedule path + in: query + schema: *ref_64 + - name: script_hash + description: mask to filter exact matching path + in: query + schema: *ref_65 + - name: started_before + description: filter on started before (inclusive) timestamp + in: query + schema: *ref_66 + - name: started_after + description: filter on started after (exclusive) timestamp + in: query + schema: *ref_67 + - name: success + description: filter on successful jobs + in: query + schema: *ref_68 + - name: scheduled_for_before_now + description: filter on jobs scheduled_for before now (hence waitinf for a worker) + in: query + schema: *ref_69 + - name: job_kinds + description: >- + filter on job kind (values 'preview', 'script', 'dependencies', + 'flow') separated by, + in: query + schema: *ref_70 + - name: suspended + description: filter on suspended jobs + in: query + schema: *ref_71 + - name: running + description: filter on running jobs + in: query + schema: *ref_72 + - name: args + description: >- + filter on jobs containing those args as a json subset (@> in + postgres) + in: query + schema: *ref_73 + - name: result + description: >- + filter on jobs containing those result as a json subset (@> in + postgres) + in: query + schema: *ref_74 + - name: tag + description: filter on jobs with a given tag/worker group + in: query + schema: *ref_75 + - name: page + description: which page to return (start at 1, default 1) + in: query + schema: *ref_5 + - name: per_page + description: number of items to return for a given page (default 30, max 100) + in: query + schema: *ref_6 + - name: concurrency_key + in: query + required: false + schema: + type: string + - name: all_workspaces + description: >- + get jobs from all workspaces (only valid if request come from the + `admins` workspace) + in: query + schema: + type: boolean + - name: is_not_schedule + description: is not a scheduled job + in: query + schema: + type: boolean + responses: + '200': + description: uuids of jobs + content: + application/json: + schema: + type: array + items: + type: string + /w/{workspace}/jobs/queue/cancel_selection: + post: + summary: cancel jobs based on the given uuids + operationId: cancelSelection + tags: + - job + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + 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 @@ -7469,67 +8816,83 @@ paths: - name: order_desc description: order by desc order (default true) in: query - schema: *ref_41 + schema: *ref_48 - name: created_by description: mask to filter exact matching user creator in: query - schema: *ref_42 + schema: *ref_49 + - name: label + description: >- + mask to filter exact matching job's label (job labels are completed + jobs with as a result an object containing a string in the array at + key 'wm_labels') + in: query + schema: &ref_78 + type: string - name: parent_job description: >- The parent job that is at the origin and responsible for the execution of this script if any in: query - schema: *ref_36 + schema: *ref_42 - name: script_path_exact description: mask to filter exact matching path in: query - schema: *ref_54 + schema: *ref_62 - name: script_path_start description: mask to filter matching starting path in: query - schema: *ref_55 + schema: *ref_63 - name: schedule_path description: mask to filter by schedule path in: query - schema: *ref_56 + schema: *ref_64 - name: script_hash description: mask to filter exact matching path in: query - schema: *ref_57 + schema: *ref_65 - name: started_before description: filter on started before (inclusive) timestamp in: query - schema: *ref_58 + schema: *ref_66 - name: started_after description: filter on started after (exclusive) timestamp in: query - schema: *ref_59 + schema: *ref_67 - name: success description: filter on successful jobs in: query - schema: *ref_60 + schema: *ref_68 - name: job_kinds description: >- filter on job kind (values 'preview', 'script', 'dependencies', 'flow') separated by, in: query - schema: *ref_61 + schema: *ref_70 - name: args description: >- filter on jobs containing those args as a json subset (@> in postgres) in: query - schema: *ref_62 + schema: *ref_73 - name: result description: >- filter on jobs containing those result as a json subset (@> in postgres) in: query - schema: *ref_63 + schema: *ref_74 - name: tag description: filter on jobs with a given tag/worker group in: query - schema: *ref_64 + schema: *ref_75 + - name: page + description: which page to return (start at 1, default 1) + in: query + schema: *ref_5 + - name: per_page + description: number of items to return for a given page (default 30, max 100) + in: query + schema: *ref_6 - name: is_skipped description: is the job skipped in: query @@ -7540,6 +8903,16 @@ paths: 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 @@ -7549,7 +8922,7 @@ paths: type: array items: type: object - properties: &ref_69 + properties: &ref_79 workspace_id: type: string id: @@ -7576,7 +8949,7 @@ paths: type: string args: type: object - additionalProperties: *ref_14 + additionalProperties: *ref_16 result: {} logs: type: string @@ -7615,12 +8988,12 @@ paths: by extension its DT_TOKEN. flow_status: type: object - properties: *ref_65 - required: *ref_66 + properties: *ref_76 + required: *ref_77 raw_flow: type: object - properties: *ref_50 - required: *ref_51 + properties: *ref_58 + required: *ref_59 is_flow_step: type: boolean language: @@ -7639,6 +9012,9 @@ paths: - graphql - nativets - bun + - php + - rust + - ansible is_skipped: type: boolean email: @@ -7651,7 +9027,15 @@ paths: type: string priority: type: integer - required: &ref_70 + labels: + type: array + items: + type: string + self_wait_time_ms: + type: number + aggregate_wait_time_ms: + type: number + required: &ref_80 - id - created_by - duration_ms @@ -7680,59 +9064,87 @@ paths: - name: created_by description: mask to filter exact matching user creator in: query - schema: *ref_42 + schema: *ref_49 + - name: label + description: >- + mask to filter exact matching job's label (job labels are completed + jobs with as a result an object containing a string in the array at + key 'wm_labels') + in: query + schema: *ref_78 - name: parent_job description: >- The parent job that is at the origin and responsible for the execution of this script if any in: query - schema: *ref_36 + schema: *ref_42 - name: script_path_exact description: mask to filter exact matching path in: query - schema: *ref_54 + schema: *ref_62 - name: script_path_start description: mask to filter matching starting path in: query - schema: *ref_55 + schema: *ref_63 - name: schedule_path description: mask to filter by schedule path in: query - schema: *ref_56 + schema: *ref_64 - name: script_hash description: mask to filter exact matching path in: query - schema: *ref_57 + schema: *ref_65 - name: started_before description: filter on started before (inclusive) timestamp in: query - schema: *ref_58 + schema: *ref_66 - name: started_after description: filter on started after (exclusive) timestamp in: query - schema: *ref_59 + schema: *ref_67 + - name: created_before + description: filter on created before (inclusive) timestamp + in: query + schema: &ref_117 + type: string + format: date-time + - name: created_after + description: filter on created after (exclusive) timestamp + in: query + schema: &ref_118 + type: string + format: date-time - name: created_or_started_before description: >- filter on created_at for non non started job and started_at otherwise before (inclusive) timestamp in: query - schema: &ref_99 + schema: &ref_111 type: string format: date-time - name: running description: filter on running jobs in: query - schema: *ref_67 + schema: *ref_72 - name: scheduled_for_before_now description: filter on jobs scheduled_for before now (hence waitinf for a worker) in: query - schema: *ref_68 + schema: *ref_69 - name: created_or_started_after description: >- filter on created_at for non non started job and started_at otherwise after (exclusive) timestamp in: query - schema: &ref_98 + schema: &ref_112 + type: string + format: date-time + - name: created_or_started_after_completed_jobs + description: >- + filter on created_at for non non started job and started_at + otherwise after (exclusive) timestamp but only for the completed + jobs + in: query + schema: &ref_113 type: string format: date-time - name: job_kinds @@ -7740,23 +9152,35 @@ paths: filter on job kind (values 'preview', 'script', 'dependencies', 'flow') separated by, in: query - schema: *ref_61 + schema: *ref_70 + - name: suspended + description: filter on suspended jobs + in: query + schema: *ref_71 - name: args description: >- filter on jobs containing those args as a json subset (@> in postgres) in: query - schema: *ref_62 + schema: *ref_73 - name: tag description: filter on jobs with a given tag/worker group in: query - schema: *ref_64 + schema: *ref_75 - name: result description: >- filter on jobs containing those result as a json subset (@> in postgres) in: query - schema: *ref_63 + schema: *ref_74 + - name: page + description: which page to return (start at 1, default 1) + in: query + schema: *ref_5 + - name: per_page + description: number of items to return for a given page (default 30, max 100) + in: query + schema: *ref_6 - name: is_skipped description: is the job skipped in: query @@ -7767,6 +9191,11 @@ paths: 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 @@ -7779,6 +9208,11 @@ paths: in: query schema: type: boolean + - name: is_not_schedule + description: is not a scheduled job + in: query + schema: + type: boolean responses: '200': description: All jobs @@ -7787,22 +9221,28 @@ paths: schema: type: array items: - allOf: &ref_74 - - oneOf: + oneOf: &ref_84 + - allOf: - type: object - properties: *ref_69 - required: *ref_70 + properties: *ref_79 + required: *ref_80 - type: object - properties: *ref_71 - required: *ref_72 - - type: object - properties: - type: - type: string - enum: - - CompletedJob - - QueuedJob - discriminator: &ref_75 + properties: + type: + type: string + enum: + - CompletedJob + - allOf: + - type: object + properties: *ref_81 + required: *ref_82 + - type: object + properties: + type: + type: string + enum: + - QueuedJob + discriminator: &ref_85 propertyName: type /jobs/db_clock: get: @@ -7817,6 +9257,44 @@ paths: 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 @@ -7831,15 +9309,19 @@ paths: - name: id in: path required: true - schema: *ref_73 + schema: *ref_83 + - name: no_logs + in: query + schema: + type: boolean responses: '200': description: job details content: application/json: schema: - allOf: *ref_74 - discriminator: *ref_75 + oneOf: *ref_84 + discriminator: *ref_85 /w/{workspace}/jobs_u/get_root_job_id/{id}: get: summary: get root job id @@ -7854,7 +9336,7 @@ paths: - name: id in: path required: true - schema: *ref_73 + schema: *ref_83 responses: '200': description: get root job id @@ -7876,7 +9358,7 @@ paths: - name: id in: path required: true - schema: *ref_73 + schema: *ref_83 responses: '200': description: job details @@ -7884,6 +9366,27 @@ paths: text/plain: schema: type: string + /w/{workspace}/jobs_u/get_args/{id}: + get: + summary: get job args + operationId: getJobArgs + tags: + - job + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - name: id + in: path + required: true + schema: *ref_83 + responses: + '200': + description: job args + content: + application/json: + schema: {} /w/{workspace}/jobs_u/getupdate/{id}: get: summary: get job updates @@ -7898,7 +9401,7 @@ paths: - name: id in: path required: true - schema: *ref_73 + schema: *ref_83 - name: running in: query schema: @@ -7907,6 +9410,10 @@ paths: in: query schema: type: integer + - name: get_progress + in: query + schema: + type: boolean responses: '200': description: job details @@ -7921,8 +9428,49 @@ paths: type: boolean new_logs: type: string + log_offset: + type: integer mem_peak: type: integer + progress: + type: integer + flow_status: + type: object + additionalProperties: &ref_151 + type: object + properties: &ref_152 + scheduled_for: + type: string + format: date-time + started_at: + type: string + format: date-time + duration_ms: + type: number + name: + type: string + /w/{workspace}/jobs_u/get_log_file/{path}: + get: + summary: get log file from object store + operationId: getLogFileFromStore + tags: + - job + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - name: path + in: path + required: true + schema: + type: string + responses: + '200': + description: job log + content: + text/plain: + type: string /w/{workspace}/jobs_u/get_flow_debug_info/{id}: get: summary: get flow debug info @@ -7937,7 +9485,7 @@ paths: - name: id in: path required: true - schema: *ref_73 + schema: *ref_83 responses: '200': description: flow debug info details @@ -7958,7 +9506,7 @@ paths: - name: id in: path required: true - schema: *ref_73 + schema: *ref_83 responses: '200': description: job details @@ -7966,8 +9514,8 @@ paths: application/json: schema: type: object - properties: *ref_69 - required: *ref_70 + properties: *ref_79 + required: *ref_80 /w/{workspace}/jobs_u/completed/get_result/{id}: get: summary: get completed job result @@ -7982,7 +9530,23 @@ paths: - name: id in: path required: true - schema: *ref_73 + schema: *ref_83 + - 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 @@ -8003,10 +9567,10 @@ paths: - name: id in: path required: true - schema: *ref_73 + schema: *ref_83 - name: get_started in: query - schema: &ref_108 + schema: &ref_124 type: boolean responses: '200': @@ -8040,7 +9604,7 @@ paths: - name: id in: path required: true - schema: *ref_73 + schema: *ref_83 responses: '200': description: job details @@ -8048,11 +9612,11 @@ paths: application/json: schema: type: object - properties: *ref_69 - required: *ref_70 + properties: *ref_79 + required: *ref_80 /w/{workspace}/jobs_u/queue/cancel/{id}: post: - summary: cancel queued job + summary: cancel queued or running job operationId: cancelQueuedJob tags: - job @@ -8064,7 +9628,7 @@ paths: - name: id in: path required: true - schema: *ref_73 + schema: *ref_83 requestBody: description: reason required: true @@ -8096,7 +9660,7 @@ paths: - name: path in: path required: true - schema: *ref_17 + schema: *ref_21 requestBody: description: reason required: true @@ -8128,7 +9692,7 @@ paths: - name: id in: path required: true - schema: *ref_73 + schema: *ref_83 requestBody: description: reason required: true @@ -8160,7 +9724,7 @@ paths: - name: id in: path required: true - schema: *ref_73 + schema: *ref_83 - name: resume_id in: path required: true @@ -8191,7 +9755,7 @@ paths: - name: id in: path required: true - schema: *ref_73 + schema: *ref_83 - name: resume_id in: path required: true @@ -8233,7 +9797,7 @@ paths: - name: id in: path required: true - schema: *ref_73 + schema: *ref_83 - name: payload description: > The base64 encoded payload that has been encoded as a JSON. e.g how @@ -8241,7 +9805,7 @@ paths: `encodeURIComponent(btoa(JSON.stringify({a: 2})))` in: query - schema: *ref_76 + schema: *ref_86 - name: resume_id in: path required: true @@ -8276,7 +9840,7 @@ paths: - name: id in: path required: true - schema: *ref_73 + schema: *ref_83 - name: resume_id in: path required: true @@ -8304,6 +9868,64 @@ paths: text/plain: schema: type: string + /w/{workspace}/jobs/flow/user_states/{id}/{key}: + post: + summary: set flow user state at a given key + operationId: setFlowUserState + tags: + - job + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - name: id + in: path + required: true + schema: *ref_83 + - name: key + in: path + required: true + schema: + type: string + requestBody: + description: new value + required: true + content: + application/json: + schema: {} + responses: + '200': + description: flow user state updated + content: + text/plain: + schema: + type: string + get: + summary: get flow user state at a given key + operationId: getFlowUserState + tags: + - job + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - name: id + in: path + required: true + schema: *ref_83 + - 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 @@ -8318,7 +9940,7 @@ paths: - name: id in: path required: true - schema: *ref_73 + schema: *ref_83 requestBody: required: true content: @@ -8346,7 +9968,7 @@ paths: - name: id in: path required: true - schema: *ref_73 + schema: *ref_83 - name: resume_id in: path required: true @@ -8381,7 +10003,7 @@ paths: - name: id in: path required: true - schema: *ref_73 + schema: *ref_83 - name: resume_id in: path required: true @@ -8423,7 +10045,7 @@ paths: - name: id in: path required: true - schema: *ref_73 + schema: *ref_83 - name: resume_id in: path required: true @@ -8447,8 +10069,8 @@ paths: type: object properties: job: - allOf: *ref_74 - discriminator: *ref_75 + oneOf: *ref_84 + discriminator: *ref_85 approvers: type: array items: @@ -8513,7 +10135,7 @@ paths: application/json: schema: type: object - properties: &ref_145 + properties: &ref_162 path: type: string schedule: @@ -8526,7 +10148,7 @@ paths: type: boolean args: type: object - additionalProperties: *ref_14 + additionalProperties: *ref_16 enabled: type: boolean on_failure: @@ -8537,26 +10159,34 @@ paths: type: boolean on_failure_extra_args: type: object - additionalProperties: *ref_14 + additionalProperties: *ref_16 on_recovery: type: string on_recovery_times: type: number on_recovery_extra_args: type: object - additionalProperties: *ref_14 + additionalProperties: *ref_16 + on_success: + type: string + on_success_extra_args: + type: object + additionalProperties: *ref_16 ws_error_handler_muted: type: boolean retry: type: object - properties: *ref_77 + properties: *ref_87 no_flow_overlap: type: boolean summary: type: string tag: type: string - required: &ref_146 + paused_until: + type: string + format: date-time + required: &ref_163 - path - schedule - timezone @@ -8584,7 +10214,7 @@ paths: - name: path in: path required: true - schema: *ref_17 + schema: *ref_21 requestBody: description: updated schedule required: true @@ -8592,14 +10222,14 @@ paths: application/json: schema: type: object - properties: &ref_147 + properties: &ref_164 schedule: type: string timezone: type: string args: type: object - additionalProperties: *ref_14 + additionalProperties: *ref_16 on_failure: type: string on_failure_times: @@ -8608,26 +10238,34 @@ paths: type: boolean on_failure_extra_args: type: object - additionalProperties: *ref_14 + additionalProperties: *ref_16 on_recovery: type: string on_recovery_times: type: number on_recovery_extra_args: type: object - additionalProperties: *ref_14 + additionalProperties: *ref_16 + on_success: + type: string + on_success_extra_args: + type: object + additionalProperties: *ref_16 ws_error_handler_muted: type: boolean retry: type: object - properties: *ref_77 + properties: *ref_87 no_flow_overlap: type: boolean summary: type: string tag: type: string - required: &ref_148 + paused_until: + type: string + format: date-time + required: &ref_165 - schedule - timezone - script_path @@ -8654,7 +10292,7 @@ paths: - name: path in: path required: true - schema: *ref_17 + schema: *ref_21 requestBody: description: updated schedule enable required: true @@ -8688,7 +10326,7 @@ paths: - name: path in: path required: true - schema: *ref_17 + schema: *ref_21 responses: '200': description: schedule deleted @@ -8710,7 +10348,7 @@ paths: - name: path in: path required: true - schema: *ref_17 + schema: *ref_21 responses: '200': description: schedule deleted @@ -8718,7 +10356,7 @@ paths: application/json: schema: type: object - properties: &ref_78 + properties: &ref_88 path: type: string edited_by: @@ -8738,7 +10376,7 @@ paths: type: boolean args: type: object - additionalProperties: *ref_14 + additionalProperties: *ref_16 extra_perms: type: object additionalProperties: @@ -8755,26 +10393,34 @@ paths: type: boolean on_failure_extra_args: type: object - additionalProperties: *ref_14 + additionalProperties: *ref_16 on_recovery: type: string on_recovery_times: type: number on_recovery_extra_args: type: object - additionalProperties: *ref_14 + additionalProperties: *ref_16 + on_success: + type: string + on_success_extra_args: + type: object + additionalProperties: *ref_16 ws_error_handler_muted: type: boolean retry: type: object - properties: *ref_77 + properties: *ref_87 summary: type: string no_flow_overlap: type: boolean tag: type: string - required: &ref_79 + paused_until: + type: string + format: date-time + required: &ref_89 - path - edited_by - edited_at @@ -8799,7 +10445,7 @@ paths: - name: path in: path required: true - schema: *ref_17 + schema: *ref_21 responses: '200': description: schedule exists @@ -8821,11 +10467,17 @@ paths: - name: page description: which page to return (start at 1, default 1) in: query - schema: *ref_3 + schema: *ref_5 - name: per_page description: number of items to return for a given page (default 30, max 100) in: query - schema: *ref_4 + schema: *ref_6 + - name: args + description: >- + filter on jobs containing those args as a json subset (@> in + postgres) + in: query + schema: *ref_73 - name: path description: filter by path in: query @@ -8835,6 +10487,10 @@ paths: in: query schema: type: boolean + - name: path_start + in: query + schema: + type: string responses: '200': description: schedule list @@ -8844,8 +10500,8 @@ paths: type: array items: type: object - properties: *ref_78 - required: *ref_79 + properties: *ref_88 + required: *ref_89 /w/{workspace}/schedules/list_with_jobs: get: summary: list schedules with last 20 jobs @@ -8860,11 +10516,11 @@ paths: - name: page description: which page to return (start at 1, default 1) in: query - schema: *ref_3 + schema: *ref_5 - name: per_page description: number of items to return for a given page (default 30, max 100) in: query - schema: *ref_4 + schema: *ref_6 responses: '200': description: schedule list @@ -8873,10 +10529,10 @@ paths: schema: type: array items: - allOf: &ref_144 + allOf: &ref_161 - type: object - properties: *ref_78 - required: *ref_79 + properties: *ref_88 + required: *ref_89 - type: object properties: jobs: @@ -8918,6 +10574,7 @@ paths: enum: - error - recovery + - success override_existing: type: boolean path: @@ -8936,6 +10593,332 @@ paths: responses: '201': description: default error handler set + /w/{workspace}/http_triggers/create: + post: + summary: create http trigger + operationId: createHttpTrigger + tags: + - http_trigger + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + requestBody: + description: new http trigger + required: true + content: + application/json: + schema: + type: object + properties: &ref_166 + path: + type: string + script_path: + type: string + route_path: + type: string + is_flow: + type: boolean + http_method: + type: string + enum: + - get + - post + - put + - delete + - patch + is_async: + type: boolean + requires_auth: + type: boolean + required: &ref_167 + - path + - script_path + - route_path + - is_flow + - is_async + - requires_auth + - http_method + responses: + '201': + description: http trigger created + content: + text/plain: + schema: + type: string + /w/{workspace}/http_triggers/update/{path}: + post: + summary: update http trigger + operationId: updateHttpTrigger + tags: + - http_trigger + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - name: path + in: path + required: true + schema: *ref_21 + requestBody: + description: updated trigger + required: true + content: + application/json: + schema: + type: object + properties: &ref_168 + path: + type: string + script_path: + type: string + route_path: + type: string + is_flow: + type: boolean + http_method: + type: string + enum: + - get + - post + - put + - delete + - patch + is_async: + type: boolean + requires_auth: + type: boolean + required: &ref_169 + - path + - script_path + - is_flow + - kind + - is_async + - requires_auth + - http_method + responses: + '200': + description: http trigger updated + content: + text/plain: + schema: + type: string + /w/{workspace}/http_triggers/delete/{path}: + delete: + summary: delete http trigger + operationId: deleteHttpTrigger + tags: + - http_trigger + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - name: path + in: path + required: true + schema: *ref_21 + responses: + '200': + description: http trigger deleted + content: + text/plain: + schema: + type: string + /w/{workspace}/http_triggers/get/{path}: + get: + summary: get http trigger + operationId: getHttpTrigger + tags: + - http_trigger + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - name: path + in: path + required: true + schema: *ref_21 + responses: + '200': + description: http trigger deleted + content: + application/json: + schema: + type: object + properties: &ref_90 + path: + type: string + edited_by: + type: string + edited_at: + type: string + format: date-time + script_path: + type: string + route_path: + type: string + is_flow: + type: boolean + extra_perms: + type: object + additionalProperties: + type: boolean + email: + type: string + workspace_id: + type: string + http_method: + type: string + enum: + - get + - post + - put + - delete + - patch + is_async: + type: boolean + requires_auth: + type: boolean + required: &ref_91 + - path + - edited_by + - edited_at + - script_path + - route_path + - extra_perms + - is_flow + - email + - workspace_id + - is_async + - requires_auth + - http_method + /w/{workspace}/http_triggers/list: + get: + summary: list http triggers + operationId: listHttpTriggers + tags: + - http_trigger + parameters: + - required: true + name: workspace + in: path + schema: *ref_0 + - name: page + description: which page to return (start at 1, default 1) + in: query + schema: *ref_5 + - name: per_page + description: number of items to return for a given page (default 30, max 100) + in: query + schema: *ref_6 + - name: path + description: filter by path + in: query + schema: + type: string + - name: is_flow + in: query + schema: + type: boolean + - name: path_start + in: query + schema: + type: string + responses: + '200': + description: http trigger list + content: + application/json: + schema: + type: array + items: + type: object + properties: *ref_90 + required: *ref_91 + /w/{workspace}/http_triggers/exists/{path}: + get: + summary: does http trigger exists + operationId: existsHttpTrigger + tags: + - http_trigger + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - name: path + in: path + required: true + schema: *ref_21 + responses: + '200': + description: http trigger exists + content: + application/json: + schema: + type: boolean + /w/{workspace}/http_triggers/route_exists: + post: + summary: does route exists + operationId: existsRoute + tags: + - http_trigger + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + requestBody: + description: route exists request + required: true + content: + application/json: + schema: + type: object + properties: + route_path: + type: string + http_method: + type: string + enum: + - get + - post + - put + - delete + - patch + required: + - kind + - route_path + - http_method + responses: + '200': + description: route exists + content: + application/json: + schema: + type: boolean + /w/{workspace}/http_triggers/used: + get: + summary: whether http triggers are used + operationId: used + tags: + - http_trigger + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + responses: + '200': + description: whether http triggers are used + content: + application/json: + schema: + type: boolean /groups/list: get: summary: list instance groups @@ -8951,7 +10934,7 @@ paths: type: array items: type: object - properties: &ref_81 + properties: &ref_93 name: type: string summary: @@ -8960,7 +10943,7 @@ paths: type: array items: type: string - required: &ref_82 + required: &ref_94 - name /groups/get/{name}: get: @@ -8972,7 +10955,7 @@ paths: - name: name in: path required: true - schema: *ref_80 + schema: *ref_92 responses: '200': description: instance group @@ -8980,8 +10963,8 @@ paths: application/json: schema: type: object - properties: *ref_81 - required: *ref_82 + properties: *ref_93 + required: *ref_94 /groups/create: post: summary: create instance group @@ -9019,7 +11002,7 @@ paths: - name: name in: path required: true - schema: *ref_80 + schema: *ref_92 requestBody: description: update instance group required: true @@ -9049,7 +11032,7 @@ paths: - name: name in: path required: true - schema: *ref_80 + schema: *ref_92 responses: '200': description: instance group deleted @@ -9067,7 +11050,7 @@ paths: - name: name in: path required: true - schema: *ref_80 + schema: *ref_92 requestBody: description: user to add to instance group required: true @@ -9097,7 +11080,7 @@ paths: - name: name in: path required: true - schema: *ref_80 + schema: *ref_92 requestBody: description: user to remove from instance group required: true @@ -9117,6 +11100,62 @@ paths: text/plain: schema: type: string + /groups/export: + get: + summary: export instance groups + operationId: exportInstanceGroups + tags: + - group + responses: + '200': + description: exported instance groups + content: + application/json: + schema: + type: array + items: + type: object + properties: &ref_95 + name: + type: string + summary: + type: string + emails: + type: array + items: + type: string + id: + type: string + scim_display_name: + type: string + external_id: + type: string + required: &ref_96 + - name + /groups/overwrite: + post: + summary: overwrite instance groups + operationId: overwriteInstanceGroups + tags: + - group + requestBody: + description: overwrite instance groups + required: true + content: + application/json: + schema: + type: array + items: + type: object + properties: *ref_95 + required: *ref_96 + responses: + '200': + description: success message + content: + text/plain: + schema: + type: string /w/{workspace}/groups/list: get: summary: list groups @@ -9131,11 +11170,11 @@ paths: - name: page description: which page to return (start at 1, default 1) in: query - schema: *ref_3 + schema: *ref_5 - name: per_page description: number of items to return for a given page (default 30, max 100) in: query - schema: *ref_4 + schema: *ref_6 responses: '200': description: group list @@ -9145,7 +11184,7 @@ paths: type: array items: type: object - properties: &ref_83 + properties: &ref_97 name: type: string summary: @@ -9158,7 +11197,7 @@ paths: type: object additionalProperties: type: boolean - required: &ref_84 + required: &ref_98 - name /w/{workspace}/groups/listnames: get: @@ -9231,7 +11270,7 @@ paths: - name: name in: path required: true - schema: *ref_80 + schema: *ref_92 requestBody: description: updated group required: true @@ -9263,7 +11302,7 @@ paths: - name: name in: path required: true - schema: *ref_80 + schema: *ref_92 responses: '200': description: group deleted @@ -9285,7 +11324,7 @@ paths: - name: name in: path required: true - schema: *ref_80 + schema: *ref_92 responses: '200': description: group @@ -9293,8 +11332,8 @@ paths: application/json: schema: type: object - properties: *ref_83 - required: *ref_84 + properties: *ref_97 + required: *ref_98 /w/{workspace}/groups/adduser/{name}: post: summary: add user to group @@ -9309,7 +11348,7 @@ paths: - name: name in: path required: true - schema: *ref_80 + schema: *ref_92 requestBody: description: added user to group required: true @@ -9341,7 +11380,7 @@ paths: - name: name in: path required: true - schema: *ref_80 + schema: *ref_92 requestBody: description: added user to group required: true @@ -9373,11 +11412,11 @@ paths: - name: page description: which page to return (start at 1, default 1) in: query - schema: *ref_3 + schema: *ref_5 - name: per_page description: number of items to return for a given page (default 30, max 100) in: query - schema: *ref_4 + schema: *ref_6 responses: '200': description: folder list @@ -9387,7 +11426,7 @@ paths: type: array items: type: object - properties: &ref_85 + properties: &ref_99 name: type: string owners: @@ -9398,7 +11437,14 @@ paths: type: object additionalProperties: type: boolean - required: &ref_86 + summary: + type: string + created_by: + type: string + edited_at: + type: string + format: date-time + required: &ref_100 - name - owners - extra_perms @@ -9448,6 +11494,8 @@ paths: properties: name: type: string + summary: + type: string owners: type: array items: @@ -9478,7 +11526,7 @@ paths: - name: name in: path required: true - schema: *ref_80 + schema: *ref_92 requestBody: description: update folder required: true @@ -9487,6 +11535,8 @@ paths: schema: type: object properties: + summary: + type: string owners: type: array items: @@ -9515,7 +11565,7 @@ paths: - name: name in: path required: true - schema: *ref_80 + schema: *ref_92 responses: '200': description: folder deleted @@ -9537,7 +11587,7 @@ paths: - name: name in: path required: true - schema: *ref_80 + schema: *ref_92 responses: '200': description: folder @@ -9545,8 +11595,8 @@ paths: application/json: schema: type: object - properties: *ref_85 - required: *ref_86 + properties: *ref_99 + required: *ref_100 /w/{workspace}/folders/getusage/{name}: get: summary: get folder usage @@ -9561,7 +11611,7 @@ paths: - name: name in: path required: true - schema: *ref_80 + schema: *ref_92 responses: '200': description: folder @@ -9603,7 +11653,7 @@ paths: - name: name in: path required: true - schema: *ref_80 + schema: *ref_92 requestBody: description: owner user to folder required: true @@ -9614,6 +11664,8 @@ paths: properties: owner: type: string + required: + - owner responses: '200': description: owner added to folder @@ -9635,7 +11687,7 @@ paths: - name: name in: path required: true - schema: *ref_80 + schema: *ref_92 requestBody: description: added owner to folder required: true @@ -9646,6 +11698,10 @@ paths: properties: owner: type: string + write: + type: boolean + required: + - owner responses: '200': description: owner removed from folder @@ -9663,11 +11719,11 @@ paths: - name: page description: which page to return (start at 1, default 1) in: query - schema: *ref_3 + schema: *ref_5 - name: per_page description: number of items to return for a given page (default 30, max 100) in: query - schema: *ref_4 + schema: *ref_6 - name: ping_since in: query required: false @@ -9685,7 +11741,7 @@ paths: type: array items: type: object - properties: &ref_149 + properties: &ref_170 worker: type: string worker_instance: @@ -9707,7 +11763,27 @@ paths: type: string wm_version: type: string - required: &ref_150 + 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 + required: &ref_171 - worker - worker_instance - ping_at @@ -9735,6 +11811,39 @@ paths: application/json: schema: 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 /configs/list_worker_groups: get: summary: list worker groups @@ -9767,7 +11876,7 @@ paths: - name: name in: path required: true - schema: *ref_80 + schema: *ref_92 responses: '200': description: a config @@ -9784,7 +11893,7 @@ paths: - name: name in: path required: true - schema: *ref_80 + schema: *ref_92 requestBody: description: worker group required: true @@ -9807,7 +11916,7 @@ paths: - name: name in: path required: true - schema: *ref_80 + schema: *ref_92 responses: '200': description: Delete config @@ -9815,6 +11924,28 @@ paths: text/plain: schema: type: string + /configs/list: + get: + summary: list configs + operationId: listConfigs + tags: + - config + responses: + '200': + description: list of configs + content: + application/json: + schema: + type: array + items: + type: object + properties: &ref_216 + name: + type: string + config: + type: object + required: &ref_217 + - name /w/{workspace}/acls/get/{kind}/{path}: get: summary: get granular acls @@ -9829,7 +11960,7 @@ paths: - name: path in: path required: true - schema: *ref_17 + schema: *ref_21 - name: kind in: path required: true @@ -9845,6 +11976,7 @@ paths: - folder - app - raw_app + - http_trigger responses: '200': description: acls @@ -9868,7 +12000,7 @@ paths: - name: path in: path required: true - schema: *ref_17 + schema: *ref_21 - name: kind in: path required: true @@ -9884,6 +12016,7 @@ paths: - folder - app - raw_app + - http_trigger requestBody: description: acl to add required: true @@ -9919,7 +12052,7 @@ paths: - name: path in: path required: true - schema: *ref_17 + schema: *ref_21 - name: kind in: path required: true @@ -9935,6 +12068,7 @@ paths: - folder - app - raw_app + - http_trigger requestBody: description: acl to add required: true @@ -9968,7 +12102,7 @@ paths: - name: path in: path required: true - schema: *ref_17 + schema: *ref_21 responses: '204': description: flow preview captured @@ -9986,7 +12120,7 @@ paths: - name: path in: path required: true - schema: *ref_17 + schema: *ref_21 responses: '201': description: flow preview capture created @@ -10003,7 +12137,7 @@ paths: - name: path in: path required: true - schema: *ref_17 + schema: *ref_21 responses: '200': description: captured flow preview @@ -10083,24 +12217,24 @@ paths: schema: *ref_0 - name: runnable_id in: query - schema: &ref_89 + schema: &ref_101 type: string - name: runnable_type in: query - schema: &ref_90 + schema: &ref_102 type: string - enum: &ref_117 + enum: &ref_133 - ScriptHash - ScriptPath - FlowPath - name: page description: which page to return (start at 1, default 1) in: query - schema: *ref_3 + schema: *ref_5 - name: per_page description: number of items to return for a given page (default 30, max 100) in: query - schema: *ref_4 + schema: *ref_6 responses: '200': description: Input history for completed jobs @@ -10110,8 +12244,57 @@ paths: type: array items: type: object - properties: *ref_87 - required: *ref_88 + properties: &ref_103 + id: + type: string + name: + type: string + created_by: + type: string + created_at: + type: string + format: date-time + is_public: + type: boolean + success: + type: boolean + required: &ref_104 + - id + - name + - args + - created_by + - created_at + - is_public + /w/{workspace}/inputs/{jobOrInputId}/args: + get: + summary: Get args from history or saved input + operationId: getArgsFromHistoryOrSavedInput + tags: + - input + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - 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 @@ -10125,18 +12308,18 @@ paths: schema: *ref_0 - name: runnable_id in: query - schema: *ref_89 + schema: *ref_101 - name: runnable_type in: query - schema: *ref_90 + schema: *ref_102 - name: page description: which page to return (start at 1, default 1) in: query - schema: *ref_3 + schema: *ref_5 - name: per_page description: number of items to return for a given page (default 30, max 100) in: query - schema: *ref_4 + schema: *ref_6 responses: '200': description: Saved Inputs for a Runnable @@ -10146,8 +12329,8 @@ paths: type: array items: type: object - properties: *ref_87 - required: *ref_88 + properties: *ref_103 + required: *ref_104 /w/{workspace}/inputs/create: post: summary: Create an Input for future use in a script or flow @@ -10161,10 +12344,10 @@ paths: schema: *ref_0 - name: runnable_id in: query - schema: *ref_89 + schema: *ref_101 - name: runnable_type in: query - schema: *ref_90 + schema: *ref_102 requestBody: description: Input required: true @@ -10172,12 +12355,12 @@ paths: application/json: schema: type: object - properties: &ref_113 + properties: &ref_129 name: type: string args: type: object - required: &ref_114 + required: &ref_130 - name - args - created_by @@ -10207,14 +12390,14 @@ paths: application/json: schema: type: object - properties: &ref_115 + properties: &ref_131 id: type: string name: type: string is_public: type: boolean - required: &ref_116 + required: &ref_132 - id - name - is_public @@ -10240,7 +12423,7 @@ paths: - name: input in: path required: true - schema: &ref_107 + schema: &ref_123 type: string responses: '200': @@ -10273,7 +12456,7 @@ paths: properties: s3_resource: type: object - properties: &ref_91 + properties: &ref_105 bucket: type: string region: @@ -10288,7 +12471,7 @@ paths: type: string pathStyle: type: boolean - required: &ref_92 + required: &ref_106 - bucket - region - endPoint @@ -10364,8 +12547,8 @@ paths: properties: s3_resource: type: object - properties: *ref_91 - required: *ref_92 + properties: *ref_105 + required: *ref_106 responses: '200': description: Connection settings @@ -10386,10 +12569,10 @@ paths: type: boolean client_kwargs: type: object - properties: &ref_93 + properties: &ref_107 region_name: type: string - required: &ref_94 + required: &ref_108 - region_name required: - endpoint_url @@ -10444,8 +12627,8 @@ paths: type: boolean client_kwargs: type: object - properties: *ref_93 - required: *ref_94 + properties: *ref_107 + required: *ref_108 required: - endpoint_url - use_ssl @@ -10503,11 +12686,11 @@ paths: application/json: schema: type: object - properties: *ref_91 - required: *ref_92 + properties: *ref_105 + required: *ref_106 /w/{workspace}/job_helpers/test_connection: get: - summary: Test connection to the workspace datasets storage + summary: Test connection to the workspace object storage operationId: datasetStorageTestConnection tags: - helpers @@ -10516,6 +12699,10 @@ paths: in: path required: true schema: *ref_0 + - name: storage + in: query + schema: + type: string responses: '200': description: Connection settings @@ -10524,7 +12711,7 @@ paths: schema: {} /w/{workspace}/job_helpers/list_stored_files: get: - summary: List the file keys available in the workspace files storage (S3) + summary: List the file keys available in a workspace object storage operationId: listStoredFiles tags: - helpers @@ -10546,6 +12733,10 @@ paths: in: query schema: type: string + - name: storage + in: query + schema: + type: string responses: '200': description: List of file keys @@ -10560,10 +12751,10 @@ paths: type: array items: type: object - properties: &ref_169 + properties: &ref_193 s3: type: string - required: &ref_170 + required: &ref_194 - s3 restricted_access: type: boolean @@ -10585,6 +12776,10 @@ paths: required: true schema: type: string + - name: storage + in: query + schema: + type: string responses: '200': description: FileMetadata @@ -10592,7 +12787,7 @@ paths: application/json: schema: type: object - properties: &ref_171 + properties: &ref_195 mime_type: type: string size_in_bytes: @@ -10645,6 +12840,10 @@ paths: in: query schema: type: integer + - name: storage + in: query + schema: + type: string responses: '200': description: FilePreview @@ -10652,7 +12851,7 @@ paths: application/json: schema: type: object - properties: &ref_172 + properties: &ref_196 msg: type: string content: @@ -10664,7 +12863,7 @@ paths: - Csv - Parquet - Unknown - required: &ref_173 + required: &ref_197 - content_type /w/{workspace}/job_helpers/load_parquet_preview/{path}: get: @@ -10680,7 +12879,7 @@ paths: - name: path in: path required: true - schema: *ref_17 + schema: *ref_21 - name: offset in: query schema: @@ -10705,12 +12904,106 @@ paths: in: query schema: type: string + - name: storage + in: query + schema: + type: string responses: '200': description: Parquet Preview content: application/json: schema: {} + /w/{workspace}/job_helpers/load_table_count/{path}: + get: + summary: Load the table row count + operationId: loadTableRowCount + tags: + - helpers + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - name: path + in: path + required: true + schema: *ref_21 + - name: search_col + in: query + schema: + type: string + - name: search_term + in: query + schema: + type: string + - name: storage + in: query + schema: + type: string + responses: + '200': + description: Table count + content: + application/json: + schema: + type: object + properties: + count: + type: number + /w/{workspace}/job_helpers/load_csv_preview/{path}: + get: + summary: Load a preview of a csv file + operationId: loadCsvPreview + tags: + - helpers + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - name: path + in: path + required: true + schema: *ref_21 + - 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: + schema: {} /w/{workspace}/job_helpers/delete_s3_file: delete: summary: Permanently delete file from S3 @@ -10727,6 +13020,10 @@ paths: required: true schema: type: string + - name: storage + in: query + schema: + type: string responses: '200': description: Confirmation @@ -10754,6 +13051,10 @@ paths: required: true schema: type: string + - name: storage + in: query + schema: + type: string responses: '200': description: Confirmation @@ -10791,6 +13092,10 @@ paths: required: false schema: type: string + - name: storage + in: query + schema: + type: string requestBody: description: File content required: true @@ -10837,6 +13142,10 @@ paths: required: false schema: type: string + - name: storage + in: query + schema: + type: string responses: '200': description: Chunk of the downloaded file @@ -10845,6 +13154,39 @@ paths: schema: type: string format: binary + /w/{workspace}/job_helpers/download_s3_parquet_file_as_csv: + get: + summary: Download file to S3 bucket + operationId: fileDownloadParquetAsCsv + tags: + - helpers + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - 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 @@ -10859,7 +13201,7 @@ paths: - name: id in: path required: true - schema: *ref_73 + schema: *ref_83 requestBody: description: parameters for statistics retrieval required: true @@ -10888,48 +13230,175 @@ paths: type: array items: type: object - properties: &ref_176 + properties: &ref_200 id: type: string name: type: string - required: &ref_177 + required: &ref_201 - id scalar_metrics: type: array items: type: object - properties: &ref_178 + properties: &ref_202 metric_id: type: string value: type: number - required: &ref_179 + required: &ref_203 - id - value timeseries_metrics: type: array items: type: object - properties: &ref_180 + properties: &ref_204 metric_id: type: string values: type: array items: type: object - properties: &ref_182 + properties: &ref_206 timestamp: type: string format: date-time value: type: number - required: &ref_183 + required: &ref_207 - timestamp - value - required: &ref_181 + required: &ref_205 - id - values + /w/{workspace}/job_metrics/set_progress/{id}: + post: + summary: set job metrics + operationId: setJobProgress + tags: + - metrics + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - name: id + in: path + required: true + schema: *ref_83 + requestBody: + description: parameters for statistics retrieval + required: true + content: + application/json: + schema: + type: object + properties: + percent: + type: integer + flow_job_id: + type: string + format: uuid + responses: + '200': + description: Job progress updated + content: + application/json: + schema: {} + /w/{workspace}/job_metrics/get_progress/{id}: + get: + summary: get job progress + operationId: getJobProgress + tags: + - metrics + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - name: id + in: path + required: true + schema: *ref_83 + responses: + '200': + description: job progress between 0 and 99 + content: + application/json: + schema: + type: integer + /service_logs/list_files: + get: + summary: list log files ordered by timestamp + operationId: listLogFiles + tags: + - service_logs + parameters: + - name: before + description: filter on started before (inclusive) timestamp + in: query + schema: *ref_109 + - name: after + description: filter on created after (exclusive) timestamp + in: query + schema: *ref_110 + - name: with_error + in: query + required: false + schema: + type: boolean + responses: + '200': + description: time + content: + application/json: + schema: + type: array + items: + type: object + properties: + hostname: + type: string + mode: + type: string + worker_group: + type: string + log_ts: + type: string + format: date-time + file_path: + type: string + ok_lines: + type: integer + err_lines: + type: integer + json_fmt: + type: boolean + required: + - hostname + - mode + - log_ts + - file_path + - json_fmt + /service_logs/get_log_file/{path}: + get: + summary: get log file by path + operationId: getLogFile + tags: + - service_logs + parameters: + - name: path + in: path + required: true + schema: *ref_21 + responses: + '200': + description: log stream + content: + text/plain: + schema: + type: string /concurrency_groups/list: get: summary: List all concurrency groups @@ -10945,17 +13414,15 @@ paths: type: array items: type: object - properties: &ref_186 - concurrency_id: + properties: &ref_210 + concurrency_key: type: string - job_uuids: - type: array - items: - type: string - required: &ref_187 - - concurrency_id - - job_uuids - /concurrency_groups/{concurrency_id}: + total_running: + type: number + required: &ref_211 + - concurrency_key + - total_running + /concurrency_groups/prune/{concurrency_id}: delete: summary: Delete concurrency group operationId: deleteConcurrencyGroup @@ -10965,7 +13432,7 @@ paths: - name: concurrency_id in: path required: true - schema: &ref_109 + schema: &ref_125 type: string responses: '200': @@ -10975,6 +13442,251 @@ paths: schema: type: object properties: {} + /concurrency_groups/{id}/key: + get: + summary: Get the concurrency key for a job that has concurrency limits enabled + operationId: getConcurrencyKey + tags: + - concurrencyGroups + parameters: + - name: id + in: path + required: true + schema: *ref_83 + responses: + '200': + description: concurrency key for given job + content: + application/json: + schema: + type: string + /w/{workspace}/concurrency_groups/list_jobs: + get: + summary: Get intervals of job runtime concurrency + operationId: listExtendedJobs + tags: + - concurrencyGroups + - job + parameters: + - name: concurrency_key + in: query + required: false + schema: + type: string + - name: row_limit + in: query + required: false + schema: + type: number + - name: workspace + in: path + required: true + schema: *ref_0 + - name: created_by + description: mask to filter exact matching user creator + in: query + schema: *ref_49 + - name: label + description: >- + mask to filter exact matching job's label (job labels are completed + jobs with as a result an object containing a string in the array at + key 'wm_labels') + in: query + schema: *ref_78 + - name: parent_job + description: >- + The parent job that is at the origin and responsible for the + execution of this script if any + in: query + schema: *ref_42 + - name: script_path_exact + description: mask to filter exact matching path + in: query + schema: *ref_62 + - name: script_path_start + description: mask to filter matching starting path + in: query + schema: *ref_63 + - name: schedule_path + description: mask to filter by schedule path + in: query + schema: *ref_64 + - name: script_hash + description: mask to filter exact matching path + in: query + schema: *ref_65 + - name: started_before + description: filter on started before (inclusive) timestamp + in: query + schema: *ref_66 + - name: started_after + description: filter on started after (exclusive) timestamp + in: query + schema: *ref_67 + - name: created_or_started_before + description: >- + filter on created_at for non non started job and started_at + otherwise before (inclusive) timestamp + in: query + schema: *ref_111 + - name: running + description: filter on running jobs + in: query + schema: *ref_72 + - name: scheduled_for_before_now + description: filter on jobs scheduled_for before now (hence waitinf for a worker) + in: query + schema: *ref_69 + - name: created_or_started_after + description: >- + filter on created_at for non non started job and started_at + otherwise after (exclusive) timestamp + in: query + schema: *ref_112 + - name: created_or_started_after_completed_jobs + description: >- + filter on created_at for non non started job and started_at + otherwise after (exclusive) timestamp but only for the completed + jobs + in: query + schema: *ref_113 + - name: job_kinds + description: >- + filter on job kind (values 'preview', 'script', 'dependencies', + 'flow') separated by, + in: query + schema: *ref_70 + - name: args + description: >- + filter on jobs containing those args as a json subset (@> in + postgres) + in: query + schema: *ref_73 + - name: tag + description: filter on jobs with a given tag/worker group + in: query + schema: *ref_75 + - name: result + description: >- + filter on jobs containing those result as a json subset (@> in + postgres) + in: query + schema: *ref_74 + - name: page + description: which page to return (start at 1, default 1) + in: query + schema: *ref_5 + - name: per_page + description: number of items to return for a given page (default 30, max 100) + in: query + schema: *ref_6 + - name: is_skipped + description: is the job skipped + in: query + schema: + type: boolean + - name: is_flow_step + description: is the job a flow step + in: query + schema: + type: boolean + - name: has_null_parent + description: has null parent + in: query + schema: + type: boolean + - name: success + description: filter on successful jobs + in: query + schema: + type: boolean + - name: all_workspaces + description: >- + get jobs from all workspaces (only valid if request come from the + `admins` workspace) + in: query + schema: + type: boolean + - name: is_not_schedule + description: is not a scheduled job + in: query + schema: + type: boolean + responses: + '200': + description: time + content: + application/json: + schema: + type: object + properties: &ref_212 + jobs: + type: array + items: + oneOf: *ref_84 + discriminator: *ref_85 + obscured_jobs: + type: array + items: + type: object + properties: &ref_134 + typ: + type: string + started_at: + type: string + format: date-time + duration_ms: + type: number + omitted_obscured_jobs: + description: >- + Obscured jobs omitted for security because of too specific + filtering + type: boolean + required: &ref_213 + - jobs + - obscured_jobs + /srch/w/{workspace}/index/search/job: + get: + summary: Search through jobs with a string query + operationId: searchJobsIndex + tags: + - indexSearch + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - name: search_query + in: query + required: true + schema: + type: string + 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: object + properties: + dancer: + type: string + hits: + description: the jobs that matched the query + type: array + items: + type: object + properties: &ref_218 + dancer: + type: string components: securitySchemes: bearerAuth: @@ -10989,7 +13701,7 @@ components: name: key in: path required: true - schema: *ref_7 + schema: *ref_9 WorkspaceId: name: workspace in: path @@ -10999,89 +13711,104 @@ components: name: version in: path required: true - schema: *ref_95 + schema: *ref_114 Token: name: token in: path required: true - schema: *ref_96 + schema: *ref_115 AccountId: name: id in: path required: true - schema: *ref_21 + schema: *ref_25 ClientName: name: client_name in: path required: true - schema: *ref_20 + schema: *ref_24 ScriptPath: name: path in: path required: true - schema: *ref_29 + schema: *ref_33 ScriptHash: name: hash in: path required: true - schema: *ref_33 + schema: *ref_37 JobId: name: id in: path required: true - schema: *ref_73 + schema: *ref_83 Path: name: path in: path required: true - schema: *ref_17 + schema: *ref_21 PathId: name: id in: path required: true - schema: *ref_24 + schema: *ref_28 PathVersion: name: version in: path required: true - schema: *ref_97 + schema: *ref_116 Name: name: name in: path required: true - schema: *ref_80 + schema: *ref_92 Page: name: page description: which page to return (start at 1, default 1) in: query - schema: *ref_3 + schema: *ref_5 PerPage: name: per_page description: number of items to return for a given page (default 30, max 100) in: query - schema: *ref_4 + schema: *ref_6 OrderDesc: name: order_desc description: order by desc order (default true) in: query - schema: *ref_41 + schema: *ref_48 CreatedBy: name: created_by description: mask to filter exact matching user creator in: query - schema: *ref_42 + schema: *ref_49 + Label: + name: label + description: >- + mask to filter exact matching job's label (job labels are completed jobs + with as a result an object containing a string in the array at key + 'wm_labels') + in: query + schema: *ref_78 ParentJob: name: parent_job description: >- The parent job that is at the origin and responsible for the execution of this script if any in: query - schema: *ref_36 + schema: *ref_42 WorkerTag: name: tag description: Override the tag to use in: query - schema: *ref_38 + schema: *ref_44 + CacheTtl: + name: cache_ttl + description: >- + Override the cache time to live (in seconds). Can not be used to disable + caching, only override with a new cache ttl + in: query + schema: *ref_45 NewJobId: name: job_id description: >- @@ -11089,7 +13816,7 @@ components: randomly using the ULID scheme. If a job id already exists in the queue or as a completed job, the request to create one will fail (Bad Request) in: query - schema: *ref_37 + schema: *ref_43 IncludeHeader: name: include_header description: > @@ -11099,14 +13826,14 @@ components: Header's key lowercased and '-'' replaced to '_' such that 'Content-Type' becomes the 'content_type' arg key in: query - schema: *ref_39 + schema: *ref_46 QueueLimit: name: queue_limit description: > The maximum size of the queue for which the request would get rejected if that job would push it above that limit in: query - schema: *ref_40 + schema: *ref_47 Payload: name: payload description: > @@ -11115,233 +13842,249 @@ components: `encodeURIComponent(btoa(JSON.stringify({a: 2})))` in: query - schema: *ref_76 + schema: *ref_86 ScriptStartPath: name: script_path_start description: mask to filter matching starting path in: query - schema: *ref_55 + schema: *ref_63 SchedulePath: name: schedule_path description: mask to filter by schedule path in: query - schema: *ref_56 + schema: *ref_64 ScriptExactPath: name: script_path_exact description: mask to filter exact matching path in: query - schema: *ref_54 + schema: *ref_62 ScriptExactHash: name: script_hash description: mask to filter exact matching path in: query - schema: *ref_57 + schema: *ref_65 + CreatedBefore: + name: created_before + description: filter on created before (inclusive) timestamp + in: query + schema: *ref_117 + CreatedAfter: + name: created_after + description: filter on created after (exclusive) timestamp + in: query + schema: *ref_118 StartedBefore: name: started_before description: filter on started before (inclusive) timestamp in: query - schema: *ref_58 + schema: *ref_66 StartedAfter: name: started_after description: filter on started after (exclusive) timestamp in: query - schema: *ref_59 + schema: *ref_67 + Before: + name: before + description: filter on started before (inclusive) timestamp + in: query + schema: *ref_109 CreatedOrStartedAfter: name: created_or_started_after description: >- filter on created_at for non non started job and started_at otherwise after (exclusive) timestamp in: query - schema: *ref_98 + schema: *ref_112 + CreatedOrStartedAfterCompletedJob: + name: created_or_started_after_completed_jobs + description: >- + filter on created_at for non non started job and started_at otherwise + after (exclusive) timestamp but only for the completed jobs + in: query + schema: *ref_113 CreatedOrStartedBefore: name: created_or_started_before description: >- filter on created_at for non non started job and started_at otherwise before (inclusive) timestamp in: query - schema: *ref_99 + schema: *ref_111 Success: name: success description: filter on successful jobs in: query - schema: *ref_60 + schema: *ref_68 ScheduledForBeforeNow: name: scheduled_for_before_now description: filter on jobs scheduled_for before now (hence waitinf for a worker) in: query - schema: *ref_68 + schema: *ref_69 Suspended: name: suspended description: filter on suspended jobs in: query - schema: *ref_100 + schema: *ref_71 Running: name: running description: filter on running jobs in: query - schema: *ref_67 + schema: *ref_72 ArgsFilter: name: args description: filter on jobs containing those args as a json subset (@> in postgres) in: query - schema: *ref_62 + schema: *ref_73 Tag: name: tag description: filter on jobs with a given tag/worker group in: query - schema: *ref_64 + schema: *ref_75 ResultFilter: name: result description: filter on jobs containing those result as a json subset (@> in postgres) in: query - schema: *ref_63 + schema: *ref_74 After: name: after description: filter on created after (exclusive) timestamp in: query - schema: *ref_101 - Before: - name: before - description: filter on created before (exclusive) timestamp - in: query - schema: *ref_102 + schema: *ref_110 Username: name: username description: filter on exact username of user in: query - schema: *ref_103 + schema: *ref_119 Operation: name: operation description: filter on exact or prefix name of operation in: query - schema: *ref_104 + schema: *ref_120 ResourceName: name: resource description: filter on exact or prefix name of resource in: query - schema: *ref_105 + schema: *ref_121 ActionKind: name: action_kind description: filter on type of operation in: query - schema: *ref_106 + schema: *ref_122 JobKinds: name: job_kinds description: >- filter on job kind (values 'preview', 'script', 'dependencies', 'flow') separated by, in: query - schema: *ref_61 + schema: *ref_70 RunnableId: name: runnable_id in: query - schema: *ref_89 + schema: *ref_101 RunnableTypeQuery: name: runnable_type in: query - schema: *ref_90 + schema: *ref_102 InputId: name: input in: path required: true - schema: *ref_107 + schema: *ref_123 GetStarted: name: get_started in: query - schema: *ref_108 + schema: *ref_124 ConcurrencyId: name: concurrency_id in: path required: true - schema: *ref_109 + schema: *ref_125 schemas: Script: type: object - properties: *ref_31 - required: *ref_32 + properties: *ref_35 + required: *ref_36 NewScript: type: object - properties: *ref_34 - required: *ref_35 + properties: *ref_40 + required: *ref_41 NewScriptWithDraft: - allOf: *ref_110 + allOf: *ref_126 ScriptHistory: - type: object - properties: *ref_111 - required: *ref_112 - ScriptArgs: - type: object - additionalProperties: *ref_14 - Input: - type: object - properties: *ref_87 - required: *ref_88 - CreateInput: - type: object - properties: *ref_113 - required: *ref_114 - UpdateInput: - type: object - properties: *ref_115 - required: *ref_116 - RunnableType: - type: string - enum: *ref_117 - QueuedJob: - type: object - properties: *ref_71 - required: *ref_72 - CompletedJob: - type: object - properties: *ref_69 - required: *ref_70 - Job: - allOf: *ref_74 - discriminator: *ref_75 - User: - type: object - properties: *ref_8 - required: *ref_9 - Usage: - type: object - properties: *ref_118 - Login: - type: object - properties: *ref_119 - required: *ref_120 - NewUser: - type: object - properties: *ref_121 - required: *ref_122 - EditWorkspaceUser: - type: object - properties: *ref_123 - TruncatedToken: - type: object - properties: *ref_124 - required: *ref_125 - NewToken: - type: object - properties: *ref_126 - NewTokenImpersonate: type: object properties: *ref_127 required: *ref_128 - ListableVariable: + ScriptArgs: type: object - properties: *ref_18 - required: *ref_19 - ContextualVariable: + additionalProperties: *ref_16 + Input: + type: object + properties: *ref_103 + required: *ref_104 + CreateInput: type: object properties: *ref_129 required: *ref_130 - CreateVariable: + UpdateInput: type: object properties: *ref_131 required: *ref_132 + RunnableType: + type: string + enum: *ref_133 + QueuedJob: + type: object + properties: *ref_81 + required: *ref_82 + CompletedJob: + type: object + properties: *ref_79 + required: *ref_80 + ObscuredJob: + type: object + properties: *ref_134 + Job: + oneOf: *ref_84 + discriminator: *ref_85 + User: + type: object + properties: *ref_10 + required: *ref_11 + UserUsage: + type: object + properties: *ref_135 + Login: + type: object + properties: *ref_136 + required: *ref_137 + EditWorkspaceUser: + type: object + properties: *ref_138 + TruncatedToken: + type: object + properties: *ref_38 + required: *ref_39 + NewToken: + type: object + properties: *ref_139 + NewTokenImpersonate: + type: object + properties: *ref_140 + required: *ref_141 + ListableVariable: + type: object + properties: *ref_22 + required: *ref_23 + ContextualVariable: + type: object + properties: *ref_142 + required: *ref_143 + CreateVariable: + type: object + properties: *ref_144 + required: *ref_145 EditVariable: type: object - properties: *ref_133 + properties: *ref_146 AuditLog: type: object properties: *ref_1 @@ -11457,124 +14200,164 @@ components: required: - name - typ + no_main_func: + type: boolean + nullable: true + has_preprocessor: + type: boolean + nullable: true required: - star_args - start_kwargs - args - type - error + - no_main_func + - has_preprocessor Preview: - type: object - properties: *ref_134 - required: *ref_135 - CreateResource: - type: object - properties: *ref_136 - required: *ref_137 - EditResource: - type: object - properties: *ref_138 - Resource: - type: object - properties: *ref_139 - required: *ref_140 - ListableResource: - type: object - properties: *ref_141 - required: *ref_142 - ResourceType: - type: object - properties: *ref_22 - required: *ref_23 - EditResourceType: - type: object - properties: *ref_143 - Schedule: - type: object - properties: *ref_78 - required: *ref_79 - ScheduleWJobs: - allOf: *ref_144 - NewSchedule: - type: object - properties: *ref_145 - required: *ref_146 - EditSchedule: type: object properties: *ref_147 required: *ref_148 - Group: - type: object - properties: *ref_83 - required: *ref_84 - InstanceGroup: - type: object - properties: *ref_81 - required: *ref_82 - Folder: - type: object - properties: *ref_85 - required: *ref_86 - WorkerPing: + WorkflowTask: type: object properties: *ref_149 required: *ref_150 - UserWorkspaceList: + WorkflowStatusRecord: type: object - properties: *ref_151 - required: *ref_152 - CreateWorkspace: + additionalProperties: *ref_151 + WorkflowStatus: + type: object + properties: *ref_152 + CreateResource: type: object properties: *ref_153 required: *ref_154 - Workspace: - type: object - properties: *ref_5 - required: *ref_6 - WorkspaceInvite: - type: object - properties: *ref_12 - required: *ref_13 - GlobalUserInfo: - type: object - properties: *ref_10 - required: *ref_11 - Flow: - allOf: *ref_45 - FlowMetadata: + EditResource: type: object properties: *ref_155 - required: *ref_156 - OpenFlowWPath: - allOf: *ref_46 - FlowPreview: + Resource: type: object - properties: *ref_157 - required: *ref_158 - RestartedFrom: + properties: *ref_156 + required: *ref_157 + ListableResource: type: object - properties: *ref_159 - Policy: + properties: *ref_158 + required: *ref_159 + ResourceType: type: object - properties: *ref_47 - ListableApp: + properties: *ref_26 + required: *ref_27 + EditResourceType: type: object properties: *ref_160 - required: *ref_161 - ListableRawApp: + Schedule: + type: object + properties: *ref_88 + required: *ref_89 + ScheduleWJobs: + allOf: *ref_161 + NewSchedule: type: object properties: *ref_162 required: *ref_163 + EditSchedule: + type: object + properties: *ref_164 + required: *ref_165 + HttpTrigger: + type: object + properties: *ref_90 + required: *ref_91 + NewHttpTrigger: + type: object + properties: *ref_166 + required: *ref_167 + EditHttpTrigger: + type: object + properties: *ref_168 + required: *ref_169 + TriggersCount: + type: object + properties: *ref_53 + Group: + type: object + properties: *ref_97 + required: *ref_98 + InstanceGroup: + type: object + properties: *ref_93 + required: *ref_94 + Folder: + type: object + properties: *ref_99 + required: *ref_100 + WorkerPing: + type: object + properties: *ref_170 + required: *ref_171 + UserWorkspaceList: + type: object + properties: *ref_172 + required: *ref_173 + CreateWorkspace: + type: object + properties: *ref_174 + required: *ref_175 + Workspace: + type: object + properties: *ref_7 + required: *ref_8 + WorkspaceInvite: + type: object + properties: *ref_14 + required: *ref_15 + GlobalUserInfo: + type: object + properties: *ref_12 + required: *ref_13 + Flow: + allOf: *ref_52 + ExtraPerms: + type: object + additionalProperties: *ref_176 + FlowMetadata: + type: object + properties: *ref_177 + required: *ref_178 + OpenFlowWPath: + allOf: *ref_54 + FlowPreview: + type: object + properties: *ref_179 + required: *ref_180 + RestartedFrom: + type: object + properties: *ref_181 + Policy: + type: object + properties: *ref_55 + ListableApp: + type: object + properties: *ref_182 + required: *ref_183 + ListableRawApp: + type: object + properties: *ref_184 + required: *ref_185 AppWithLastVersion: type: object - properties: *ref_48 - required: *ref_49 + properties: *ref_56 + required: *ref_57 AppWithLastVersionWDraft: - allOf: *ref_164 + allOf: *ref_186 AppHistory: type: object - properties: *ref_165 - required: *ref_166 + properties: *ref_187 + required: *ref_188 + FlowVersion: + type: object + properties: *ref_189 + required: *ref_190 SlackToken: type: object properties: @@ -11596,40 +14379,46 @@ components: - bot TokenResponse: type: object - properties: *ref_167 - required: *ref_168 + properties: *ref_191 + required: *ref_192 HubScriptKind: name: kind - schema: *ref_30 + schema: *ref_34 PolarsClientKwargs: type: object - properties: *ref_93 - required: *ref_94 + properties: *ref_107 + required: *ref_108 LargeFileStorage: type: object - properties: *ref_15 + properties: *ref_17 WindmillLargeFile: type: object - properties: *ref_169 - required: *ref_170 + properties: *ref_193 + required: *ref_194 WindmillFileMetadata: type: object - properties: *ref_171 + properties: *ref_195 WindmillFilePreview: type: object - properties: *ref_172 - required: *ref_173 + properties: *ref_196 + required: *ref_197 S3Resource: type: object - properties: *ref_91 - required: *ref_92 + properties: *ref_105 + required: *ref_106 WorkspaceGitSyncSettings: type: object - properties: *ref_16 + properties: *ref_18 + WorkspaceDeployUISettings: + type: object + properties: *ref_19 + WorkspaceDefaultScripts: + type: object + properties: *ref_20 GitRepositorySettings: type: object - properties: *ref_174 - required: *ref_175 + properties: *ref_198 + required: *ref_199 UploadFilePart: type: object properties: @@ -11641,91 +14430,118 @@ components: - part_number - tag MetricMetadata: - type: object - properties: *ref_176 - required: *ref_177 - ScalarMetric: - type: object - properties: *ref_178 - required: *ref_179 - TimeseriesMetric: - type: object - properties: *ref_180 - required: *ref_181 - MetricDataPoint: - type: object - properties: *ref_182 - required: *ref_183 - RawScriptForDependencies: - type: object - properties: *ref_184 - required: *ref_185 - ConcurrencyGroup: - type: object - properties: *ref_186 - required: *ref_187 - StaticTransform: - type: object - properties: *ref_188 - required: *ref_189 - JavascriptTransform: - type: object - properties: *ref_190 - required: *ref_191 - InputTransform: - oneOf: *ref_25 - discriminator: *ref_26 - RawScript: - type: object - properties: *ref_192 - required: *ref_193 - PathScript: - type: object - properties: *ref_194 - required: *ref_195 - PathFlow: - type: object - properties: *ref_196 - required: *ref_197 - FlowModule: - type: object - properties: *ref_27 - required: *ref_28 - ForloopFlow: - type: object - properties: *ref_198 - required: *ref_199 - BranchOne: type: object properties: *ref_200 required: *ref_201 - BranchAll: + ScalarMetric: type: object properties: *ref_202 required: *ref_203 - Identity: + TimeseriesMetric: type: object properties: *ref_204 required: *ref_205 + MetricDataPoint: + type: object + properties: *ref_206 + required: *ref_207 + RawScriptForDependencies: + type: object + properties: *ref_208 + required: *ref_209 + ConcurrencyGroup: + type: object + properties: *ref_210 + required: *ref_211 + ExtendedJobs: + type: object + properties: *ref_212 + required: *ref_213 + ExportedUser: + type: object + properties: *ref_3 + required: *ref_4 + GlobalSetting: + type: object + properties: *ref_214 + required: *ref_215 + Config: + type: object + properties: *ref_216 + required: *ref_217 + ExportedInstanceGroup: + type: object + properties: *ref_95 + required: *ref_96 + JobSearchHit: + type: object + properties: *ref_218 + StaticTransform: + type: object + properties: *ref_219 + required: *ref_220 + JavascriptTransform: + type: object + properties: *ref_221 + required: *ref_222 + InputTransform: + oneOf: *ref_29 + discriminator: *ref_30 + RawScript: + type: object + properties: *ref_223 + required: *ref_224 + PathScript: + type: object + properties: *ref_225 + required: *ref_226 + PathFlow: + type: object + properties: *ref_227 + required: *ref_228 + FlowModule: + type: object + properties: *ref_31 + required: *ref_32 + ForloopFlow: + type: object + properties: *ref_229 + required: *ref_230 + WhileloopFlow: + type: object + properties: *ref_231 + required: *ref_232 + BranchOne: + type: object + properties: *ref_233 + required: *ref_234 + BranchAll: + type: object + properties: *ref_235 + required: *ref_236 + Identity: + type: object + properties: *ref_237 + required: *ref_238 FlowModuleValue: - oneOf: *ref_206 - discriminator: *ref_207 + oneOf: *ref_239 + discriminator: *ref_240 Retry: type: object - properties: *ref_77 + properties: *ref_87 FlowValue: + type: object + properties: *ref_58 + required: *ref_59 + OpenFlow: type: object properties: *ref_50 required: *ref_51 - OpenFlow: - type: object - properties: *ref_43 - required: *ref_44 FlowStatusModule: type: object - properties: *ref_52 - required: *ref_53 + properties: *ref_60 + required: *ref_61 FlowStatus: type: object - properties: *ref_65 - required: *ref_66 + properties: *ref_76 + required: *ref_77