diff --git a/.github/workflows/validate-openapi.yml b/.github/workflows/validate-openapi.yml new file mode 100644 index 0000000000..5bc59ebc4c --- /dev/null +++ b/.github/workflows/validate-openapi.yml @@ -0,0 +1,34 @@ +name: Validate OpenAPI Spec + +on: + push: + paths: + - 'backend/windmill-api/openapi*' + pull_request: + paths: + - 'backend/windmill-api/openapi*' +jobs: + validate: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up Node.js + uses: actions/setup-node@v4 + with: + node-version: '20' + + - name: Install openapi-generator-cli + run: npm install @openapitools/openapi-generator-cli -g + + - name: Validate openapi.yaml + run: npx @openapitools/openapi-generator-cli validate -i backend/windmill-api/openapi.yaml + + - name: Validate openapi-deref.json + run: npx @openapitools/openapi-generator-cli validate -i backend/windmill-api/openapi-deref.json + + # Does not work well with dereferenced yaml + # - name: Validate openapi-deref.yaml + # run: npx @openapitools/openapi-generator-cli validate -i backend/windmill-api/openapi-deref.yaml + diff --git a/backend/windmill-api/openapi-deref.json b/backend/windmill-api/openapi-deref.json index 91214e99b4..1186be6069 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.423.2", + "version": "1.492.1", "title": "Windmill API", "contact": { "name": "Windmill Team", @@ -197,6 +197,14 @@ }, { "$ref": "#/components/parameters/ActionKind" + }, + { + "name": "all_workspaces", + "in": "query", + "description": "get audit logs for all workspaces", + "schema": { + "type": "boolean" + } } ], "responses": { @@ -618,6 +626,9 @@ "is_super_admin": { "type": "boolean" }, + "is_devops": { + "type": "boolean" + }, "name": { "type": "string" } @@ -873,6 +884,27 @@ } } }, + "/github_app/connected_repositories": { + "get": { + "summary": "get connected repositories", + "operationId": "getGlobalConnectedRepositories", + "tags": [ + "git_sync" + ], + "responses": { + "200": { + "description": "connected repositories", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GithubInstallations" + } + } + } + } + } + } + }, "/workspaces/list": { "get": { "summary": "list all workspaces visible to me", @@ -1329,9 +1361,24 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CriticalAlert" + "type": "object", + "properties": { + "alerts": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CriticalAlert" + } + }, + "total_rows": { + "type": "integer", + "description": "Total number of rows matching the query.", + "example": 100 + }, + "total_pages": { + "type": "integer", + "description": "Total number of pages based on the page size.", + "example": 10 + } } } } @@ -1670,9 +1717,19 @@ "tags": [ "user" ], + "parameters": [ + { + "name": "if_expiring_in_less_than_s", + "in": "query", + "required": false, + "schema": { + "type": "integer" + } + } + ], "responses": { "200": { - "description": "free usage", + "description": "new token", "content": { "text/plain": { "schema": { @@ -1910,6 +1967,220 @@ } } }, + "/w/{workspace}/github_app/token": { + "post": { + "summary": "get github app token", + "operationId": "getGithubAppToken", + "tags": [ + "workspace" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + } + ], + "requestBody": { + "description": "jwt job token", + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "job_token": { + "type": "string" + } + }, + "required": [ + "job_token" + ] + } + } + } + }, + "responses": { + "200": { + "description": "github app token", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "token": { + "type": "string" + } + }, + "required": [ + "token" + ] + } + } + } + } + } + } + }, + "/w/{workspace}/github_app/install_from_workspace": { + "post": { + "tags": [ + "Git Sync" + ], + "summary": "Install a GitHub installation from another workspace", + "operationId": "installFromWorkspace", + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "source_workspace_id": { + "type": "string", + "description": "The ID of the workspace containing the installation to copy" + }, + "installation_id": { + "type": "number", + "description": "The ID of the GitHub installation to copy" + } + }, + "required": [ + "source_workspace_id", + "installation_id" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Installation successfully copied" + } + } + } + }, + "/w/{workspace}/github_app/installation/{installation_id}": { + "delete": { + "summary": "Delete a GitHub installation from a workspace", + "operationId": "deleteFromWorkspace", + "description": "Removes a GitHub installation from the specified workspace. Requires admin privileges.", + "tags": [ + "Git Sync" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + }, + { + "name": "installation_id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + }, + "description": "The ID of the GitHub installation to delete" + } + ], + "responses": { + "200": { + "description": "Installation successfully deleted" + } + } + } + }, + "/w/{workspace}/github_app/export/{installationId}": { + "get": { + "summary": "Export GitHub installation JWT token", + "description": "Exports the JWT token for a specific GitHub installation in the workspace", + "operationId": "exportInstallation", + "tags": [ + "Git Sync" + ], + "parameters": [ + { + "name": "workspace", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "installationId", + "in": "path", + "required": true, + "schema": { + "type": "integer" + } + } + ], + "responses": { + "200": { + "description": "Successfully exported the JWT token", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "jwt_token": { + "type": "string" + } + } + } + } + } + } + } + } + }, + "/w/{workspace}/github_app/import": { + "post": { + "summary": "Import GitHub installation from JWT token", + "description": "Imports a GitHub installation from a JWT token exported from another instance", + "operationId": "importInstallation", + "tags": [ + "Git Sync" + ], + "parameters": [ + { + "name": "workspace", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "jwt_token" + ], + "properties": { + "jwt_token": { + "type": "string" + } + } + } + } + } + }, + "responses": { + "200": { + "description": "Successfully imported the installation" + } + } + } + }, "/users/accept_invite": { "post": { "summary": "accept invite to workspace", @@ -2374,6 +2645,46 @@ } } }, + "/w/{workspace}/workspaces/change_workspace_color": { + "post": { + "summary": "change workspace id", + "operationId": "changeWorkspaceColor", + "tags": [ + "workspace" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "color": { + "type": "string" + } + } + } + } + } + }, + "responses": { + "200": { + "description": "status", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + } + } + } + } + }, "/w/{workspace}/users/whois/{username}": { "get": { "summary": "whois", @@ -2408,6 +2719,43 @@ } } }, + "/w/{workspace}/workspaces/operator_settings": { + "post": { + "operationId": "updateOperatorSettings", + "summary": "Update operator settings for a workspace", + "description": "Updates the operator settings for a specific workspace. Requires workspace admin privileges.", + "tags": [ + "workspace" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OperatorSettings" + } + } + } + }, + "responses": { + "200": { + "description": "Operator settings updated successfully", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + } + } + } + } + }, "/users/exists/{email}": { "get": { "summary": "exists email", @@ -2540,6 +2888,15 @@ "slack_command_script": { "type": "string" }, + "teams_team_id": { + "type": "string" + }, + "teams_command_script": { + "type": "string" + }, + "teams_team_name": { + "type": "string" + }, "auto_invite_domain": { "type": "string" }, @@ -2552,9 +2909,6 @@ "plan": { "type": "string" }, - "automatic_billing": { - "type": "boolean" - }, "customer_id": { "type": "string" }, @@ -2564,11 +2918,8 @@ "deploy_to": { "type": "string" }, - "ai_resource": { - "$ref": "#/components/schemas/AiResource" - }, - "code_completion_enabled": { - "type": "boolean" + "ai_config": { + "$ref": "#/components/schemas/AIConfig" }, "error_handler": { "type": "string" @@ -2593,11 +2944,18 @@ }, "default_scripts": { "$ref": "#/components/schemas/WorkspaceDefaultScripts" + }, + "mute_critical_alerts": { + "type": "boolean" + }, + "color": { + "type": "string" + }, + "operator_settings": { + "$ref": "#/components/schemas/OperatorSettings" } }, "required": [ - "code_completion_enabled", - "automatic_billing", "error_handler_muted_on_cancel" ] } @@ -2690,16 +3048,16 @@ "usage": { "type": "number" }, - "seats": { - "type": "number" + "owner": { + "type": "string" }, - "automatic_billing": { - "type": "boolean" + "status": { + "type": "string" } }, "required": [ "premium", - "automatic_billing" + "owner" ] } } @@ -2708,10 +3066,43 @@ } } }, - "/w/{workspace}/workspaces/set_automatic_billing": { + "/w/{workspace}/workspaces/threshold_alert": { + "get": { + "summary": "get threshold alert info", + "operationId": "getThresholdAlert", + "tags": [ + "workspace" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + } + ], + "responses": { + "200": { + "description": "status", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "threshold_alert_amount": { + "type": "number" + }, + "last_alert_sent": { + "type": "string", + "format": "date-time" + } + } + } + } + } + } + } + }, "post": { - "summary": "set automatic billing", - "operationId": "setAutomaticBilling", + "summary": "set threshold alert info", + "operationId": "setThresholdAlert", "tags": [ "workspace" ], @@ -2721,23 +3112,17 @@ } ], "requestBody": { - "description": "automatic billing", + "description": "threshold alert info", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { - "automatic_billing": { - "type": "boolean" - }, - "seats": { + "threshold_alert_amount": { "type": "number" } - }, - "required": [ - "automatic_billing" - ] + } } } } @@ -2798,6 +3183,173 @@ } } }, + "/w/{workspace}/workspaces/edit_teams_command": { + "post": { + "summary": "edit teams command", + "operationId": "editTeamsCommand", + "tags": [ + "workspace" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + } + ], + "requestBody": { + "description": "WorkspaceInvite", + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "slack_command_script": { + "type": "string" + } + } + } + } + } + }, + "responses": { + "200": { + "description": "status", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + } + } + } + } + }, + "/w/{workspace}/workspaces/available_teams_ids": { + "get": { + "summary": "list available teams ids", + "operationId": "listAvailableTeamsIds", + "tags": [ + "workspace" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + } + ], + "responses": { + "200": { + "description": "status", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "team_name": { + "type": "string" + }, + "team_id": { + "type": "string" + } + } + } + } + } + } + } + } + } + }, + "/w/{workspace}/workspaces/available_teams_channels": { + "get": { + "summary": "list available teams channels", + "operationId": "listAvailableTeamsChannels", + "tags": [ + "workspace" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + } + ], + "responses": { + "200": { + "description": "status", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "channel_name": { + "type": "string" + }, + "channel_id": { + "type": "string" + }, + "service_url": { + "type": "string" + }, + "tenant_id": { + "type": "string" + } + } + } + } + } + } + } + } + } + }, + "/w/{workspace}/workspaces/connect_teams": { + "post": { + "summary": "connect teams", + "operationId": "connectTeams", + "tags": [ + "workspace" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + } + ], + "requestBody": { + "description": "connect teams", + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "team_id": { + "type": "string" + }, + "team_name": { + "type": "string" + } + } + } + } + } + }, + "responses": { + "200": { + "description": "status", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + } + } + } + } + }, "/w/{workspace}/workspaces/run_slack_message_test_job": { "post": { "summary": "run a job that sends a message to Slack", @@ -2851,6 +3403,59 @@ } } }, + "/w/{workspace}/workspaces/run_teams_message_test_job": { + "post": { + "summary": "run a job that sends a message to Teams", + "operationId": "runTeamsMessageTestJob", + "tags": [ + "workspace" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + } + ], + "requestBody": { + "description": "path to hub script to run and its corresponding args", + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "hub_script_path": { + "type": "string" + }, + "channel": { + "type": "string" + }, + "test_msg": { + "type": "string" + } + } + } + } + } + }, + "responses": { + "200": { + "description": "status", + "content": { + "text/json": { + "schema": { + "type": "object", + "properties": { + "job_uuid": { + "type": "string" + } + } + } + } + } + } + } + } + }, "/w/{workspace}/workspaces/edit_deploy_to": { "post": { "summary": "edit deploy to", @@ -3000,18 +3605,7 @@ "content": { "application/json": { "schema": { - "type": "object", - "required": [ - "code_completion_enabled" - ], - "properties": { - "ai_resource": { - "$ref": "#/components/schemas/AiResource" - }, - "code_completion_enabled": { - "type": "boolean" - } - } + "$ref": "#/components/schemas/AIConfig" } } } @@ -3046,25 +3640,9 @@ "200": { "description": "status", "content": { - "text/plain": { + "application/json": { "schema": { - "type": "object", - "properties": { - "ai_provider": { - "type": "string" - }, - "exists_ai_resource": { - "type": "boolean" - }, - "code_completion_enabled": { - "type": "boolean" - } - }, - "required": [ - "ai_provider", - "exists_ai_resource", - "code_completion_enabled" - ] + "$ref": "#/components/schemas/AIConfig" } } } @@ -3578,11 +4156,35 @@ }, "websocket_used": { "type": "boolean" + }, + "kafka_used": { + "type": "boolean" + }, + "nats_used": { + "type": "boolean" + }, + "postgres_used": { + "type": "boolean" + }, + "mqtt_used": { + "type": "boolean" + }, + "gcp_used": { + "type": "boolean" + }, + "sqs_used": { + "type": "boolean" } }, "required": [ "http_routes_used", - "websocket_used" + "websocket_used", + "kafka_used", + "nats_used", + "postgres_used", + "mqtt_used", + "gcp_used", + "sqs_used" ] } } @@ -4211,6 +4813,186 @@ } } }, + "/w/{workspace}/workspaces/critical_alerts": { + "get": { + "summary": "Get all critical alerts for this workspace", + "operationId": "workspaceGetCriticalAlerts", + "tags": [ + "setting" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + }, + { + "in": "query", + "name": "page", + "schema": { + "type": "integer", + "default": 1, + "description": "The page number to retrieve (minimum value is 1)" + } + }, + { + "in": "query", + "name": "page_size", + "schema": { + "type": "integer", + "default": 10, + "maximum": 100, + "description": "Number of alerts per page (maximum is 100)" + } + }, + { + "in": "query", + "name": "acknowledged", + "schema": { + "type": "boolean", + "nullable": true, + "description": "Filter by acknowledgment status; true for acknowledged, false for unacknowledged, and omit for all alerts" + } + } + ], + "responses": { + "200": { + "description": "Successfully retrieved all critical alerts", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "alerts": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CriticalAlert" + } + }, + "total_rows": { + "type": "integer", + "description": "Total number of rows matching the query.", + "example": 100 + }, + "total_pages": { + "type": "integer", + "description": "Total number of pages based on the page size.", + "example": 10 + } + } + } + } + } + } + } + } + }, + "/w/{workspace}/workspaces/critical_alerts/{id}/acknowledge": { + "post": { + "summary": "Acknowledge a critical alert for this workspace", + "operationId": "workspaceAcknowledgeCriticalAlert", + "tags": [ + "setting" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + }, + { + "in": "path", + "name": "id", + "required": true, + "schema": { + "type": "integer" + }, + "description": "The ID of the critical alert to acknowledge" + } + ], + "responses": { + "200": { + "description": "Successfully acknowledged the critical alert", + "content": { + "application/json": { + "schema": { + "type": "string", + "example": "Critical alert acknowledged" + } + } + } + } + } + } + }, + "/w/{workspace}/workspaces/critical_alerts/acknowledge_all": { + "post": { + "summary": "Acknowledge all unacknowledged critical alerts for this workspace", + "operationId": "workspaceAcknowledgeAllCriticalAlerts", + "tags": [ + "setting" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + } + ], + "responses": { + "200": { + "description": "Successfully acknowledged all unacknowledged critical alerts.", + "content": { + "application/json": { + "schema": { + "type": "string", + "example": "All unacknowledged critical alerts acknowledged" + } + } + } + } + } + } + }, + "/w/{workspace}/workspaces/critical_alerts/mute": { + "post": { + "summary": "Mute critical alert UI for this workspace", + "operationId": "workspaceMuteCriticalAlertsUI", + "tags": [ + "setting" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + } + ], + "requestBody": { + "description": "Boolean flag to mute critical alerts.", + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "mute_critical_alerts": { + "type": "boolean", + "description": "Whether critical alerts should be muted.", + "example": true + } + } + } + } + } + }, + "responses": { + "200": { + "description": "Successfully updated mute critical alert settings.", + "content": { + "application/json": { + "schema": { + "type": "string", + "example": "Updated mute critical alert UI settings for workspace: workspace_id" + } + } + } + } + } + } + }, "/oauth/login_callback/{client_name}": { "post": { "security": [], @@ -4562,6 +5344,32 @@ } } }, + "/w/{workspace}/oauth/disconnect_teams": { + "post": { + "summary": "disconnect teams", + "operationId": "disconnectTeams", + "tags": [ + "oauth" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + } + ], + "responses": { + "200": { + "description": "disconnected teams", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + } + } + } + } + }, "/oauth/list_logins": { "get": { "summary": "list oauth logins", @@ -4675,6 +5483,78 @@ } } }, + "/teams/sync": { + "post": { + "operationId": "syncTeams", + "summary": "synchronize Microsoft Teams information (teams/channels)", + "tags": [ + "teams" + ], + "responses": { + "200": { + "description": "Teams information successfully synchronized", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TeamInfo" + } + } + } + } + } + } + } + }, + "/teams/activities": { + "post": { + "summary": "send update to Microsoft Teams activity", + "description": "Respond to a Microsoft Teams activity after a workspace command is run", + "operationId": "sendMessageToConversation", + "tags": [ + "teams" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "conversation_id", + "text" + ], + "properties": { + "conversation_id": { + "type": "string", + "description": "The ID of the Teams conversation/activity" + }, + "success": { + "type": "boolean", + "description": "Used for styling the card conditionally", + "default": true + }, + "text": { + "type": "string", + "description": "The message text to be sent in the Teams card" + }, + "card_block": { + "type": "object", + "description": "The card block to be sent in the Teams card" + } + } + } + } + } + }, + "responses": { + "200": { + "description": "Activity processed successfully" + } + } + } + }, "/w/{workspace}/resources/create": { "post": { "summary": "create resource", @@ -5637,6 +6517,44 @@ } } }, + "/apps_u/public_app_by_custom_path/{custom_path}": { + "get": { + "summary": "get public app by custom path", + "operationId": "getPublicAppByCustomPath", + "tags": [ + "app" + ], + "parameters": [ + { + "$ref": "#/components/parameters/CustomPath" + } + ], + "responses": { + "200": { + "description": "app details", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/AppWithLastVersion" + }, + { + "type": "object", + "properties": { + "workspace_id": { + "type": "string" + } + } + } + ] + } + } + } + } + } + } + }, "/scripts/hub/get/{path}": { "get": { "summary": "get hub script content by path", @@ -5986,7 +6904,7 @@ }, { "name": "last_parent_hash", - "description": "mask to filter scripts whom last parent in the chain has exact hash. \nBeware that each script stores only a limited number of parents. Hence\nthe last parent hash for a script is not necessarily its top-most parent.\nTo find the top-most parent you will have to jump from last to last hash\n until finding the parent\n", + "description": "mask to filter scripts whom last parent in the chain has exact hash.\nBeware that each script stores only a limited number of parents. Hence\nthe last parent hash for a script is not necessarily its top-most parent.\nTo find the top-most parent you will have to jump from last to last hash\n until finding the parent\n", "in": "query", "schema": { "type": "string" @@ -6002,7 +6920,7 @@ }, { "name": "show_archived", - "description": "(default false)\nshow only the archived files.\nwhen multiple archived hash share the same path, only the ones with the latest create_at\nare \ned.\n", + "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" @@ -6289,6 +7207,24 @@ "tags": [ "worker" ], + "parameters": [ + { + "name": "workspace", + "in": "query", + "schema": { + "type": "string" + }, + "required": false + }, + { + "name": "show_workspace_restriction", + "in": "query", + "schema": { + "type": "boolean" + }, + "required": false + } + ], "responses": { "200": { "description": "list of custom tags", @@ -6440,7 +7376,7 @@ }, "/w/{workspace}/scripts/delete/p/{path}": { "post": { - "summary": "delete all scripts at a given path (require admin)", + "summary": "delete script at a given path (require admin)", "operationId": "deleteScriptByPath", "tags": [ "script" @@ -6451,6 +7387,14 @@ }, { "$ref": "#/components/parameters/ScriptPath" + }, + { + "name": "keep_captures", + "description": "keep captures", + "in": "query", + "schema": { + "type": "boolean" + } } ], "responses": { @@ -6625,6 +7569,38 @@ } } }, + "/w/{workspace}/scripts/list_paths_from_workspace_runnable/{path}": { + "get": { + "summary": "list script paths using provided script as a relative import", + "operationId": "listScriptPathsFromWorkspaceRunnable", + "tags": [ + "script" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + }, + { + "$ref": "#/components/parameters/ScriptPath" + } + ], + "responses": { + "200": { + "description": "list of script paths", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + } + } + }, "/w/{workspace}/scripts/get_latest_version/{path}": { "get": { "summary": "get scripts's latest version (hash)", @@ -6645,7 +7621,6 @@ "description": "Script version/hash", "content": { "application/json": { - "required": false, "schema": { "$ref": "#/components/schemas/ScriptHistory" } @@ -6895,6 +7870,96 @@ } } }, + "/w/{workspace}/jobs/list_selected_job_groups": { + "post": { + "summary": "list selected jobs script/flow schemas grouped by (kind, path)", + "operationId": "listSelectedJobGroups", + "tags": [ + "job" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + } + ], + "requestBody": { + "description": "script args", + "required": true, + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + } + } + } + } + }, + "responses": { + "200": { + "description": "result", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "kind": { + "type": "string", + "enum": [ + "script", + "flow" + ] + }, + "script_path": { + "type": "string" + }, + "latest_schema": { + "type": "object" + }, + "schemas": { + "type": "array", + "items": { + "type": "object", + "properties": { + "schema": { + "type": "object" + }, + "script_hash": { + "type": "string" + }, + "job_ids": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "schema", + "script_hash", + "job_ids" + ] + } + } + }, + "required": [ + "kind", + "script_path", + "latest_schema", + "schemas" + ] + } + } + } + } + } + } + } + }, "/w/{workspace}/jobs/run/p/{path}": { "post": { "summary": "run script by path", @@ -7491,7 +8556,6 @@ "description": "Flow version", "content": { "application/json": { - "required": false, "schema": { "$ref": "#/components/schemas/FlowVersion" } @@ -7501,6 +8565,41 @@ } } }, + "/w/{workspace}/flows/list_paths_from_workspace_runnable/{runnable_kind}/{path}": { + "get": { + "summary": "list flow paths from workspace runnable", + "operationId": "listFlowPathsFromWorkspaceRunnable", + "tags": [ + "flow" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + }, + { + "$ref": "#/components/parameters/RunnableKind" + }, + { + "$ref": "#/components/parameters/ScriptPath" + } + ], + "responses": { + "200": { + "description": "list of flow paths", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + } + } + }, "/w/{workspace}/flows/get/v/{version}/p/{path}": { "get": { "summary": "get flow version", @@ -7510,7 +8609,6 @@ "$ref": "#/components/parameters/WorkspaceId" }, { - "type": "string", "name": "version", "in": "path", "required": true, @@ -7548,7 +8646,6 @@ "$ref": "#/components/parameters/WorkspaceId" }, { - "type": "string", "name": "version", "in": "path", "required": true, @@ -7632,6 +8729,40 @@ } } }, + "/w/{workspace}/flows/deployment_status/p/{path}": { + "get": { + "summary": "get flow deployment status", + "operationId": "getFlowDeploymentStatus", + "tags": [ + "flow" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + }, + { + "$ref": "#/components/parameters/ScriptPath" + } + ], + "responses": { + "200": { + "description": "flow status", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "lock_error_logs": { + "type": "string" + } + } + } + } + } + } + } + } + }, "/w/{workspace}/flows/get_triggers_count/{path}": { "get": { "summary": "get triggers count of flow", @@ -7970,6 +9101,14 @@ }, { "$ref": "#/components/parameters/ScriptPath" + }, + { + "name": "keep_captures", + "description": "keep captures", + "in": "query", + "schema": { + "type": "boolean" + } } ], "responses": { @@ -8267,6 +9406,9 @@ }, "deployment_message": { "type": "string" + }, + "custom_path": { + "type": "string" } }, "required": [ @@ -8293,6 +9435,81 @@ } } }, + "/w/{workspace}/apps/create_raw": { + "post": { + "summary": "create app raw", + "operationId": "createAppRaw", + "tags": [ + "app" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + } + ], + "requestBody": { + "description": "new app", + "required": true, + "content": { + "multipart/form-data": { + "schema": { + "type": "object", + "properties": { + "app": { + "type": "object", + "properties": { + "path": { + "type": "string" + }, + "value": {}, + "summary": { + "type": "string" + }, + "policy": { + "$ref": "#/components/schemas/Policy" + }, + "draft_only": { + "type": "boolean" + }, + "deployment_message": { + "type": "string" + }, + "custom_path": { + "type": "string" + } + }, + "required": [ + "path", + "value", + "summary", + "policy" + ] + }, + "js": { + "type": "string" + }, + "css": { + "type": "string" + } + } + } + } + } + }, + "responses": { + "201": { + "description": "app created", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + } + } + } + } + }, "/w/{workspace}/apps/exists/{path}": { "get": { "summary": "does an app exisst at path", @@ -8358,6 +9575,35 @@ } } }, + "/w/{workspace}/apps/get/lite/{path}": { + "get": { + "summary": "get app lite by path", + "operationId": "getAppLiteByPath", + "tags": [ + "app" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + }, + { + "$ref": "#/components/parameters/ScriptPath" + } + ], + "responses": { + "200": { + "description": "app lite details", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AppWithLastVersion" + } + } + } + } + } + } + }, "/w/{workspace}/apps/get/draft/{path}": { "get": { "summary": "get app by path with draft", @@ -8439,7 +9685,6 @@ "description": "App version", "content": { "application/json": { - "required": false, "schema": { "$ref": "#/components/schemas/AppHistory" } @@ -8449,6 +9694,41 @@ } } }, + "/w/{workspace}/apps/list_paths_from_workspace_runnable/{runnable_kind}/{path}": { + "get": { + "summary": "list app paths from workspace runnable", + "operationId": "listAppPathsFromWorkspaceRunnable", + "tags": [ + "app" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + }, + { + "$ref": "#/components/parameters/RunnableKind" + }, + { + "$ref": "#/components/parameters/ScriptPath" + } + ], + "responses": { + "200": { + "description": "list of app paths", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + } + } + }, "/w/{workspace}/apps/history_update/a/{id}/v/{version}": { "post": { "summary": "update app history", @@ -8808,6 +10088,9 @@ }, "deployment_message": { "type": "string" + }, + "custom_path": { + "type": "string" } } } @@ -8828,6 +10111,155 @@ } } }, + "/w/{workspace}/apps/update_raw/{path}": { + "post": { + "summary": "update app", + "operationId": "updateAppRaw", + "tags": [ + "app" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + }, + { + "$ref": "#/components/parameters/ScriptPath" + } + ], + "requestBody": { + "description": "update app", + "required": true, + "content": { + "multipart/form-data": { + "schema": { + "type": "object", + "properties": { + "app": { + "type": "object", + "properties": { + "path": { + "type": "string" + }, + "summary": { + "type": "string" + }, + "value": {}, + "policy": { + "$ref": "#/components/schemas/Policy" + }, + "deployment_message": { + "type": "string" + }, + "custom_path": { + "type": "string" + } + } + }, + "js": { + "type": "string" + }, + "css": { + "type": "string" + } + } + } + } + } + }, + "responses": { + "200": { + "description": "app updated", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + } + } + } + } + }, + "/w/{workspace}/apps/custom_path_exists/{custom_path}": { + "get": { + "summary": "check if custom path exists", + "operationId": "customPathExists", + "tags": [ + "app" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + }, + { + "$ref": "#/components/parameters/CustomPath" + } + ], + "responses": { + "200": { + "description": "custom path exists", + "content": { + "application/json": { + "schema": { + "type": "boolean" + } + } + } + } + } + } + }, + "/w/{workspace}/apps/sign_s3_objects": { + "post": { + "summary": "sign s3 objects, to be used by anonymous users in public apps", + "operationId": "signS3Objects", + "tags": [ + "app" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + } + ], + "requestBody": { + "description": "s3 objects to sign", + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "s3_objects": { + "type": "array", + "items": { + "$ref": "#/components/schemas/S3Object" + } + } + }, + "required": [ + "s3_objects" + ] + } + } + } + }, + "responses": { + "200": { + "description": "signed s3 objects", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/S3Object" + } + } + } + } + } + } + } + }, "/w/{workspace}/apps_u/execute_component/{path}": { "post": { "summary": "executeComponent", @@ -8857,6 +10289,9 @@ "path": { "type": "string" }, + "version": { + "type": "integer" + }, "args": {}, "raw_code": { "type": "object", @@ -8882,6 +10317,9 @@ "language" ] }, + "id": { + "type": "integer" + }, "force_viewer_static_fields": { "type": "object" }, @@ -8917,6 +10355,146 @@ } } }, + "/w/{workspace}/apps_u/upload_s3_file/{path}": { + "post": { + "summary": "upload s3 file from app", + "operationId": "uploadS3FileFromApp", + "tags": [ + "app" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + }, + { + "$ref": "#/components/parameters/Path" + }, + { + "name": "file_key", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "file_extension", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "s3_resource_path", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "resource_type", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "storage", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "content_type", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "content_disposition", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "File content", + "required": true, + "content": { + "application/octet-stream": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "responses": { + "200": { + "description": "file uploaded", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "file_key": { + "type": "string" + }, + "delete_token": { + "type": "string" + } + }, + "required": [ + "file_key", + "delete_token" + ] + } + } + } + } + } + } + }, + "/w/{workspace}/apps_u/delete_s3_file": { + "delete": { + "summary": "delete s3 file from app", + "operationId": "deleteS3FileFromApp", + "tags": [ + "app" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + }, + { + "name": "delete_token", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "file deleted", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + } + } + } + } + }, "/w/{workspace}/jobs/run/f/{path}": { "post": { "summary": "run flow by path", @@ -9003,6 +10581,90 @@ } } }, + "/w/{workspace}/jobs/run/batch_rerun_jobs": { + "post": { + "summary": "re-run multiple jobs", + "operationId": "batchReRunJobs", + "tags": [ + "job" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + } + ], + "requestBody": { + "description": "list of job ids to re run and arg tranforms", + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "job_ids", + "script_options_by_path", + "flow_options_by_path" + ], + "properties": { + "job_ids": { + "type": "array", + "items": { + "type": "string" + } + }, + "script_options_by_path": { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "input_transforms": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/InputTransform" + } + }, + "use_latest_version": { + "type": "boolean" + } + } + } + }, + "flow_options_by_path": { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "input_transforms": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/InputTransform" + } + }, + "use_latest_version": { + "type": "boolean" + } + } + } + } + } + } + } + } + }, + "responses": { + "201": { + "description": "stream of created job uuids separated by \\n. Lines may start with 'Error:'", + "content": { + "text/event-stream": { + "schema": { + "type": "string" + } + } + } + } + } + } + }, "/w/{workspace}/jobs/restart/f/{id}/from/{step_id}/{branch_or_iteration_n}": { "post": { "summary": "restart a completed flow at a given step", @@ -9426,6 +11088,9 @@ { "$ref": "#/components/parameters/ParentJob" }, + { + "$ref": "#/components/parameters/Worker" + }, { "$ref": "#/components/parameters/ScriptExactPath" }, @@ -9465,6 +11130,9 @@ { "$ref": "#/components/parameters/ResultFilter" }, + { + "$ref": "#/components/parameters/AllowWildcards" + }, { "$ref": "#/components/parameters/Tag" }, @@ -9587,10 +11255,213 @@ } } }, - "/w/{workspace}/jobs/queue/list_filtered_uuids": { + "/w/{workspace}/jobs/completed/count_jobs": { + "get": { + "summary": "count number of completed jobs with filter", + "operationId": "countCompletedJobs", + "tags": [ + "job" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + }, + { + "name": "completed_after_s_ago", + "in": "query", + "schema": { + "type": "integer" + } + }, + { + "name": "success", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "tags", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "all_workspaces", + "in": "query", + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "description": "Count of completed jobs", + "content": { + "application/json": { + "schema": { + "type": "integer" + } + } + } + } + } + } + }, + "/w/{workspace}/jobs/list_filtered_uuids": { "get": { "summary": "get the ids of all jobs matching the given filters", - "operationId": "listFilteredUuids", + "operationId": "listFilteredJobsUuids", + "tags": [ + "job" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + }, + { + "$ref": "#/components/parameters/CreatedBy" + }, + { + "$ref": "#/components/parameters/Label" + }, + { + "$ref": "#/components/parameters/Worker" + }, + { + "$ref": "#/components/parameters/ParentJob" + }, + { + "$ref": "#/components/parameters/ScriptExactPath" + }, + { + "$ref": "#/components/parameters/ScriptStartPath" + }, + { + "$ref": "#/components/parameters/SchedulePath" + }, + { + "$ref": "#/components/parameters/ScriptExactHash" + }, + { + "$ref": "#/components/parameters/StartedBefore" + }, + { + "$ref": "#/components/parameters/StartedAfter" + }, + { + "$ref": "#/components/parameters/CreatedBefore" + }, + { + "$ref": "#/components/parameters/CreatedAfter" + }, + { + "$ref": "#/components/parameters/CreatedOrStartedBefore" + }, + { + "$ref": "#/components/parameters/Running" + }, + { + "$ref": "#/components/parameters/ScheduledForBeforeNow" + }, + { + "$ref": "#/components/parameters/CreatedOrStartedAfter" + }, + { + "$ref": "#/components/parameters/CreatedOrStartedAfterCompletedJob" + }, + { + "$ref": "#/components/parameters/JobKinds" + }, + { + "$ref": "#/components/parameters/Suspended" + }, + { + "$ref": "#/components/parameters/ArgsFilter" + }, + { + "$ref": "#/components/parameters/Tag" + }, + { + "$ref": "#/components/parameters/ResultFilter" + }, + { + "$ref": "#/components/parameters/Page" + }, + { + "$ref": "#/components/parameters/PerPage" + }, + { + "name": "is_skipped", + "description": "is the job skipped", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "is_flow_step", + "description": "is the job a flow step", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "has_null_parent", + "description": "has null parent", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "success", + "description": "filter on successful jobs", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "all_workspaces", + "description": "get jobs from all workspaces (only valid if request come from the `admins` workspace)", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "is_not_schedule", + "description": "is not a scheduled job", + "in": "query", + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "description": "uuids of jobs", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + } + } + }, + "/w/{workspace}/jobs/queue/list_filtered_uuids": { + "get": { + "summary": "get the ids of all queued jobs matching the given filters", + "operationId": "listFilteredQueueUuids", "tags": [ "job" ], @@ -9646,6 +11517,9 @@ { "$ref": "#/components/parameters/ResultFilter" }, + { + "$ref": "#/components/parameters/AllowWildcards" + }, { "$ref": "#/components/parameters/Tag" }, @@ -9760,6 +11634,9 @@ { "$ref": "#/components/parameters/Label" }, + { + "$ref": "#/components/parameters/Worker" + }, { "$ref": "#/components/parameters/ParentJob" }, @@ -9793,6 +11670,9 @@ { "$ref": "#/components/parameters/ResultFilter" }, + { + "$ref": "#/components/parameters/AllowWildcards" + }, { "$ref": "#/components/parameters/Tag" }, @@ -9869,6 +11749,9 @@ { "$ref": "#/components/parameters/Label" }, + { + "$ref": "#/components/parameters/Worker" + }, { "$ref": "#/components/parameters/ParentJob" }, @@ -9926,6 +11809,9 @@ { "$ref": "#/components/parameters/ResultFilter" }, + { + "$ref": "#/components/parameters/AllowWildcards" + }, { "$ref": "#/components/parameters/Page" }, @@ -10294,7 +12180,9 @@ "description": "job log", "content": { "text/plain": { - "type": "string" + "schema": { + "type": "string" + } } } } @@ -10728,6 +12616,158 @@ } } }, + "/w/{workspace}/jobs/slack_approval/{id}": { + "get": { + "summary": "generate interactive slack approval for suspended job", + "operationId": "getSlackApprovalPayload", + "tags": [ + "job" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + }, + { + "$ref": "#/components/parameters/JobId" + }, + { + "name": "approver", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "message", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "slack_resource_path", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "channel_id", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "flow_step_id", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "default_args_json", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "dynamic_enums_json", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Interactive slack approval message sent successfully" + } + } + } + }, + "/w/{workspace}/jobs/teams_approval/{id}": { + "get": { + "summary": "generate interactive teams approval for suspended job", + "operationId": "getTeamsApprovalPayload", + "tags": [ + "job" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + }, + { + "$ref": "#/components/parameters/JobId" + }, + { + "name": "approver", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "message", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "team_name", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "channel_name", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "flow_step_id", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "default_args_json", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "dynamic_enums_json", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Interactive slack approval message sent successfully" + } + } + } + }, "/w/{workspace}/jobs_u/resume/{id}/{resume_id}/{signature}": { "get": { "summary": "resume a job for a suspended flow", @@ -11172,6 +13212,9 @@ }, "timezone": { "type": "string" + }, + "cron_version": { + "type": "string" } }, "required": [ @@ -11823,10 +13866,15 @@ "delete", "patch" ] + }, + "trigger_path": { + "type": "string" + }, + "workspaced_route": { + "type": "boolean" } }, "required": [ - "kind", "route_path", "http_method" ] @@ -12118,6 +14166,2452 @@ } } }, + "/w/{workspace}/websocket_triggers/test": { + "post": { + "summary": "test websocket connection", + "operationId": "testWebsocketConnection", + "tags": [ + "websocket_trigger" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + } + ], + "requestBody": { + "description": "test websocket connection", + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "url": { + "type": "string" + }, + "url_runnable_args": { + "$ref": "#/components/schemas/ScriptArgs" + }, + "can_return_message": { + "type": "boolean" + } + }, + "required": [ + "url", + "can_return_message" + ] + } + } + } + }, + "responses": { + "200": { + "description": "successfuly connected to websocket", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + } + } + } + } + }, + "/w/{workspace}/kafka_triggers/create": { + "post": { + "summary": "create kafka trigger", + "operationId": "createKafkaTrigger", + "tags": [ + "kafka_trigger" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + } + ], + "requestBody": { + "description": "new kafka trigger", + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NewKafkaTrigger" + } + } + } + }, + "responses": { + "201": { + "description": "kafka trigger created", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + } + } + } + } + }, + "/w/{workspace}/kafka_triggers/update/{path}": { + "post": { + "summary": "update kafka trigger", + "operationId": "updateKafkaTrigger", + "tags": [ + "kafka_trigger" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + }, + { + "$ref": "#/components/parameters/Path" + } + ], + "requestBody": { + "description": "updated trigger", + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EditKafkaTrigger" + } + } + } + }, + "responses": { + "200": { + "description": "kafka trigger updated", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + } + } + } + } + }, + "/w/{workspace}/kafka_triggers/delete/{path}": { + "delete": { + "summary": "delete kafka trigger", + "operationId": "deleteKafkaTrigger", + "tags": [ + "kafka_trigger" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + }, + { + "$ref": "#/components/parameters/Path" + } + ], + "responses": { + "200": { + "description": "kafka trigger deleted", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + } + } + } + } + }, + "/w/{workspace}/kafka_triggers/get/{path}": { + "get": { + "summary": "get kafka trigger", + "operationId": "getKafkaTrigger", + "tags": [ + "kafka_trigger" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + }, + { + "$ref": "#/components/parameters/Path" + } + ], + "responses": { + "200": { + "description": "kafka trigger deleted", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/KafkaTrigger" + } + } + } + } + } + } + }, + "/w/{workspace}/kafka_triggers/list": { + "get": { + "summary": "list kafka triggers", + "operationId": "listKafkaTriggers", + "tags": [ + "kafka_trigger" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId", + "required": true + }, + { + "$ref": "#/components/parameters/Page" + }, + { + "$ref": "#/components/parameters/PerPage" + }, + { + "name": "path", + "description": "filter by path", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "is_flow", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "path_start", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "kafka trigger list", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/KafkaTrigger" + } + } + } + } + } + } + } + }, + "/w/{workspace}/kafka_triggers/exists/{path}": { + "get": { + "summary": "does kafka trigger exists", + "operationId": "existsKafkaTrigger", + "tags": [ + "kafka_trigger" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + }, + { + "$ref": "#/components/parameters/Path" + } + ], + "responses": { + "200": { + "description": "kafka trigger exists", + "content": { + "application/json": { + "schema": { + "type": "boolean" + } + } + } + } + } + } + }, + "/w/{workspace}/kafka_triggers/setenabled/{path}": { + "post": { + "summary": "set enabled kafka trigger", + "operationId": "setKafkaTriggerEnabled", + "tags": [ + "kafka_trigger" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + }, + { + "$ref": "#/components/parameters/Path" + } + ], + "requestBody": { + "description": "updated kafka trigger enable", + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + } + }, + "required": [ + "enabled" + ] + } + } + } + }, + "responses": { + "200": { + "description": "kafka trigger enabled set", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + } + } + } + } + }, + "/w/{workspace}/kafka_triggers/test": { + "post": { + "summary": "test kafka connection", + "operationId": "testKafkaConnection", + "tags": [ + "kafka_trigger" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + } + ], + "requestBody": { + "description": "test kafka connection", + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "connection": { + "type": "object" + } + }, + "required": [ + "connection" + ] + } + } + } + }, + "responses": { + "200": { + "description": "successfuly connected to kafka brokers", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + } + } + } + } + }, + "/w/{workspace}/nats_triggers/create": { + "post": { + "summary": "create nats trigger", + "operationId": "createNatsTrigger", + "tags": [ + "nats_trigger" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + } + ], + "requestBody": { + "description": "new nats trigger", + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NewNatsTrigger" + } + } + } + }, + "responses": { + "201": { + "description": "nats trigger created", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + } + } + } + } + }, + "/w/{workspace}/nats_triggers/update/{path}": { + "post": { + "summary": "update nats trigger", + "operationId": "updateNatsTrigger", + "tags": [ + "nats_trigger" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + }, + { + "$ref": "#/components/parameters/Path" + } + ], + "requestBody": { + "description": "updated trigger", + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EditNatsTrigger" + } + } + } + }, + "responses": { + "200": { + "description": "nats trigger updated", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + } + } + } + } + }, + "/w/{workspace}/nats_triggers/delete/{path}": { + "delete": { + "summary": "delete nats trigger", + "operationId": "deleteNatsTrigger", + "tags": [ + "nats_trigger" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + }, + { + "$ref": "#/components/parameters/Path" + } + ], + "responses": { + "200": { + "description": "nats trigger deleted", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + } + } + } + } + }, + "/w/{workspace}/nats_triggers/get/{path}": { + "get": { + "summary": "get nats trigger", + "operationId": "getNatsTrigger", + "tags": [ + "nats_trigger" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + }, + { + "$ref": "#/components/parameters/Path" + } + ], + "responses": { + "200": { + "description": "nats trigger deleted", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NatsTrigger" + } + } + } + } + } + } + }, + "/w/{workspace}/nats_triggers/list": { + "get": { + "summary": "list nats triggers", + "operationId": "listNatsTriggers", + "tags": [ + "nats_trigger" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId", + "required": true + }, + { + "$ref": "#/components/parameters/Page" + }, + { + "$ref": "#/components/parameters/PerPage" + }, + { + "name": "path", + "description": "filter by path", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "is_flow", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "path_start", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "nats trigger list", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NatsTrigger" + } + } + } + } + } + } + } + }, + "/w/{workspace}/nats_triggers/exists/{path}": { + "get": { + "summary": "does nats trigger exists", + "operationId": "existsNatsTrigger", + "tags": [ + "nats_trigger" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + }, + { + "$ref": "#/components/parameters/Path" + } + ], + "responses": { + "200": { + "description": "nats trigger exists", + "content": { + "application/json": { + "schema": { + "type": "boolean" + } + } + } + } + } + } + }, + "/w/{workspace}/nats_triggers/setenabled/{path}": { + "post": { + "summary": "set enabled nats trigger", + "operationId": "setNatsTriggerEnabled", + "tags": [ + "nats_trigger" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + }, + { + "$ref": "#/components/parameters/Path" + } + ], + "requestBody": { + "description": "updated nats trigger enable", + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + } + }, + "required": [ + "enabled" + ] + } + } + } + }, + "responses": { + "200": { + "description": "nats trigger enabled set", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + } + } + } + } + }, + "/w/{workspace}/nats_triggers/test": { + "post": { + "summary": "test NATS connection", + "operationId": "testNatsConnection", + "tags": [ + "nats_trigger" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + } + ], + "requestBody": { + "description": "test nats connection", + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "connection": { + "type": "object" + } + }, + "required": [ + "connection" + ] + } + } + } + }, + "responses": { + "200": { + "description": "successfuly connected to NATS servers", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + } + } + } + } + }, + "/w/{workspace}/sqs_triggers/create": { + "post": { + "summary": "create sqs trigger", + "operationId": "createSqsTrigger", + "tags": [ + "sqs_trigger" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + } + ], + "requestBody": { + "description": "new sqs trigger", + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NewSqsTrigger" + } + } + } + }, + "responses": { + "201": { + "description": "sqs trigger created", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + } + } + } + } + }, + "/w/{workspace}/sqs_triggers/update/{path}": { + "post": { + "summary": "update sqs trigger", + "operationId": "updateSqsTrigger", + "tags": [ + "sqs_trigger" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + }, + { + "$ref": "#/components/parameters/Path" + } + ], + "requestBody": { + "description": "updated trigger", + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EditSqsTrigger" + } + } + } + }, + "responses": { + "200": { + "description": "sqs trigger updated", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + } + } + } + } + }, + "/w/{workspace}/sqs_triggers/delete/{path}": { + "delete": { + "summary": "delete sqs trigger", + "operationId": "deleteSqsTrigger", + "tags": [ + "sqs_trigger" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + }, + { + "$ref": "#/components/parameters/Path" + } + ], + "responses": { + "200": { + "description": "sqs trigger deleted", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + } + } + } + } + }, + "/w/{workspace}/sqs_triggers/get/{path}": { + "get": { + "summary": "get sqs trigger", + "operationId": "getSqsTrigger", + "tags": [ + "sqs_trigger" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + }, + { + "$ref": "#/components/parameters/Path" + } + ], + "responses": { + "200": { + "description": "sqs trigger deleted", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SqsTrigger" + } + } + } + } + } + } + }, + "/w/{workspace}/sqs_triggers/list": { + "get": { + "summary": "list sqs triggers", + "operationId": "listSqsTriggers", + "tags": [ + "sqs_trigger" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId", + "required": true + }, + { + "$ref": "#/components/parameters/Page" + }, + { + "$ref": "#/components/parameters/PerPage" + }, + { + "name": "path", + "description": "filter by path", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "is_flow", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "path_start", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "sqs trigger list", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SqsTrigger" + } + } + } + } + } + } + } + }, + "/w/{workspace}/sqs_triggers/exists/{path}": { + "get": { + "summary": "does sqs trigger exists", + "operationId": "existsSqsTrigger", + "tags": [ + "sqs_trigger" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + }, + { + "$ref": "#/components/parameters/Path" + } + ], + "responses": { + "200": { + "description": "sqs trigger exists", + "content": { + "application/json": { + "schema": { + "type": "boolean" + } + } + } + } + } + } + }, + "/w/{workspace}/sqs_triggers/setenabled/{path}": { + "post": { + "summary": "set enabled sqs trigger", + "operationId": "setSqsTriggerEnabled", + "tags": [ + "sqs_trigger" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + }, + { + "$ref": "#/components/parameters/Path" + } + ], + "requestBody": { + "description": "updated sqs trigger enable", + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + } + }, + "required": [ + "enabled" + ] + } + } + } + }, + "responses": { + "200": { + "description": "sqs trigger enabled set", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + } + } + } + } + }, + "/w/{workspace}/sqs_triggers/test": { + "post": { + "summary": "test sqs connection", + "operationId": "testSqsConnection", + "tags": [ + "sqs_trigger" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + } + ], + "requestBody": { + "description": "test sqs connection", + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "connection": { + "type": "object" + } + }, + "required": [ + "connection" + ] + } + } + } + }, + "responses": { + "200": { + "description": "successfuly connected to sqs", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + } + } + } + } + }, + "/w/{workspace}/mqtt_triggers/create": { + "post": { + "summary": "create mqtt trigger", + "operationId": "createMqttTrigger", + "tags": [ + "mqtt_trigger" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + } + ], + "requestBody": { + "description": "new mqtt trigger", + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NewMqttTrigger" + } + } + } + }, + "responses": { + "201": { + "description": "mqtt trigger created", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + } + } + } + } + }, + "/w/{workspace}/mqtt_triggers/update/{path}": { + "post": { + "summary": "update mqtt trigger", + "operationId": "updateMqttTrigger", + "tags": [ + "mqtt_trigger" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + }, + { + "$ref": "#/components/parameters/Path" + } + ], + "requestBody": { + "description": "updated trigger", + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EditMqttTrigger" + } + } + } + }, + "responses": { + "200": { + "description": "mqtt trigger updated", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + } + } + } + } + }, + "/w/{workspace}/mqtt_triggers/delete/{path}": { + "delete": { + "summary": "delete mqtt trigger", + "operationId": "deleteMqttTrigger", + "tags": [ + "mqtt_trigger" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + }, + { + "$ref": "#/components/parameters/Path" + } + ], + "responses": { + "200": { + "description": "mqtt trigger deleted", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + } + } + } + } + }, + "/w/{workspace}/mqtt_triggers/get/{path}": { + "get": { + "summary": "get mqtt trigger", + "operationId": "getMqttTrigger", + "tags": [ + "mqtt_trigger" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + }, + { + "$ref": "#/components/parameters/Path" + } + ], + "responses": { + "200": { + "description": "mqtt trigger deleted", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MqttTrigger" + } + } + } + } + } + } + }, + "/w/{workspace}/mqtt_triggers/list": { + "get": { + "summary": "list mqtt triggers", + "operationId": "listMqttTriggers", + "tags": [ + "mqtt_trigger" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId", + "required": true + }, + { + "$ref": "#/components/parameters/Page" + }, + { + "$ref": "#/components/parameters/PerPage" + }, + { + "name": "path", + "description": "filter by path", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "is_flow", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "path_start", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "mqtt trigger list", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MqttTrigger" + } + } + } + } + } + } + } + }, + "/w/{workspace}/mqtt_triggers/exists/{path}": { + "get": { + "summary": "does mqtt trigger exists", + "operationId": "existsMqttTrigger", + "tags": [ + "mqtt_trigger" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + }, + { + "$ref": "#/components/parameters/Path" + } + ], + "responses": { + "200": { + "description": "mqtt trigger exists", + "content": { + "application/json": { + "schema": { + "type": "boolean" + } + } + } + } + } + } + }, + "/w/{workspace}/mqtt_triggers/setenabled/{path}": { + "post": { + "summary": "set enabled mqtt trigger", + "operationId": "setMqttTriggerEnabled", + "tags": [ + "mqtt_trigger" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + }, + { + "$ref": "#/components/parameters/Path" + } + ], + "requestBody": { + "description": "updated mqtt trigger enable", + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + } + }, + "required": [ + "enabled" + ] + } + } + } + }, + "responses": { + "200": { + "description": "mqtt trigger enabled set", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + } + } + } + } + }, + "/w/{workspace}/mqtt_triggers/test": { + "post": { + "summary": "test mqtt connection", + "operationId": "testMqttConnection", + "tags": [ + "mqtt_trigger" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + } + ], + "requestBody": { + "description": "test mqtt connection", + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "connection": { + "type": "object" + } + }, + "required": [ + "connection" + ] + } + } + } + }, + "responses": { + "200": { + "description": "successfully connected to mqtt", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + } + } + } + } + }, + "/w/{workspace}/gcp_triggers/create": { + "post": { + "summary": "create gcp trigger", + "operationId": "createGcpTrigger", + "tags": [ + "gcp_trigger" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + } + ], + "requestBody": { + "description": "new gcp trigger", + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GcpTriggerData" + } + } + } + }, + "responses": { + "201": { + "description": "gcp trigger created", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + } + } + } + } + }, + "/w/{workspace}/gcp_triggers/update/{path}": { + "post": { + "summary": "update gcp trigger", + "operationId": "updateGcpTrigger", + "tags": [ + "gcp_trigger" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + }, + { + "$ref": "#/components/parameters/Path" + } + ], + "requestBody": { + "description": "updated trigger", + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GcpTriggerData" + } + } + } + }, + "responses": { + "200": { + "description": "gcp trigger updated", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + } + } + } + } + }, + "/w/{workspace}/gcp_triggers/delete/{path}": { + "delete": { + "summary": "delete gcp trigger", + "operationId": "deleteGcpTrigger", + "tags": [ + "gcp_trigger" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + }, + { + "$ref": "#/components/parameters/Path" + } + ], + "responses": { + "200": { + "description": "gcp trigger deleted", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + } + } + } + } + }, + "/w/{workspace}/gcp_triggers/get/{path}": { + "get": { + "summary": "get gcp trigger", + "operationId": "getGcpTrigger", + "tags": [ + "gcp_trigger" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + }, + { + "$ref": "#/components/parameters/Path" + } + ], + "responses": { + "200": { + "description": "gcp trigger deleted", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GcpTrigger" + } + } + } + } + } + } + }, + "/w/{workspace}/gcp_triggers/list": { + "get": { + "summary": "list gcp triggers", + "operationId": "listGcpTriggers", + "tags": [ + "gcp_trigger" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId", + "required": true + }, + { + "$ref": "#/components/parameters/Page" + }, + { + "$ref": "#/components/parameters/PerPage" + }, + { + "name": "path", + "description": "filter by path", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "is_flow", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "path_start", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "gcp trigger list", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/GcpTrigger" + } + } + } + } + } + } + } + }, + "/w/{workspace}/gcp_triggers/exists/{path}": { + "get": { + "summary": "does gcp trigger exists", + "operationId": "existsGcpTrigger", + "tags": [ + "gcp_trigger" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + }, + { + "$ref": "#/components/parameters/Path" + } + ], + "responses": { + "200": { + "description": "gcp trigger exists", + "content": { + "application/json": { + "schema": { + "type": "boolean" + } + } + } + } + } + } + }, + "/w/{workspace}/gcp_triggers/setenabled/{path}": { + "post": { + "summary": "set enabled gcp trigger", + "operationId": "setGcpTriggerEnabled", + "tags": [ + "gcp_trigger" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + }, + { + "$ref": "#/components/parameters/Path" + } + ], + "requestBody": { + "description": "updated gcp trigger enable", + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + } + }, + "required": [ + "enabled" + ] + } + } + } + }, + "responses": { + "200": { + "description": "gcp trigger enabled set", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + } + } + } + } + }, + "/w/{workspace}/gcp_triggers/test": { + "post": { + "summary": "test gcp connection", + "operationId": "testGcpConnection", + "tags": [ + "gcp_trigger" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + } + ], + "requestBody": { + "description": "test gcp connection", + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "connection": { + "type": "object" + } + }, + "required": [ + "connection" + ] + } + } + } + }, + "responses": { + "200": { + "description": "try to connect to a gcp broker", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + } + } + } + } + }, + "/w/{workspace}/gcp_triggers/subscriptions/delete/{path}": { + "delete": { + "summary": "delete gcp trigger", + "operationId": "deleteGcpSubscription", + "tags": [ + "gcp_trigger" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + }, + { + "$ref": "#/components/parameters/Path" + } + ], + "requestBody": { + "description": "args to delete subscription from google cloud", + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeleteGcpSubscription" + } + } + } + }, + "responses": { + "200": { + "description": "gcp trigger deleted", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + } + } + } + } + }, + "/w/{workspace}/gcp_triggers/topics/list/{path}": { + "get": { + "summary": "list all topics of google cloud service", + "operationId": "listGoogleTopics", + "tags": [ + "gcp_trigger" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + }, + { + "$ref": "#/components/parameters/Path" + } + ], + "responses": { + "200": { + "description": "get all google topics", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + } + } + }, + "/w/{workspace}/gcp_triggers/subscriptions/list/{path}": { + "post": { + "summary": "list all subscription of a give topic from google cloud service", + "operationId": "listAllTGoogleTopicSubscriptions", + "tags": [ + "gcp_trigger" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + }, + { + "$ref": "#/components/parameters/Path" + } + ], + "requestBody": { + "description": "args to get subscription's topic from google cloud", + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GetAllTopicSubscription" + } + } + } + }, + "responses": { + "200": { + "description": "get all google topic subscriptions name", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + } + } + }, + "/w/{workspace}/postgres_triggers/is_valid_postgres_configuration/{path}": { + "get": { + "summary": "check if postgres configuration is set to logical", + "operationId": "isValidPostgresConfiguration", + "tags": [ + "postgres_trigger" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + }, + { + "$ref": "#/components/parameters/Path" + } + ], + "responses": { + "200": { + "description": "boolean that indicates if postgres is set to logical level or not", + "content": { + "application/json": { + "schema": { + "type": "boolean" + } + } + } + } + } + } + }, + "/w/{workspace}/postgres_triggers/create_template_script": { + "post": { + "summary": "create template script", + "operationId": "createTemplateScript", + "tags": [ + "postgres_trigger" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + } + ], + "requestBody": { + "description": "template script", + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TemplateScript" + } + } + } + }, + "responses": { + "200": { + "description": "custom id to retrieve template script", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + } + } + } + } + }, + "/w/{workspace}/postgres_triggers/get_template_script/{id}": { + "get": { + "summary": "get template script", + "operationId": "getTemplateScript", + "tags": [ + "postgres_trigger" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + }, + { + "$ref": "#/components/parameters/Id" + } + ], + "responses": { + "200": { + "description": "template script", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + } + } + } + } + }, + "/w/{workspace}/postgres_triggers/slot/list/{path}": { + "get": { + "summary": "list postgres replication slot", + "operationId": "listPostgresReplicationSlot", + "tags": [ + "postgres_trigger" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + }, + { + "$ref": "#/components/parameters/Path" + } + ], + "responses": { + "200": { + "description": "list postgres slot", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SlotList" + } + } + } + } + } + } + } + }, + "/w/{workspace}/postgres_triggers/slot/create/{path}": { + "post": { + "summary": "create replication slot for postgres", + "operationId": "createPostgresReplicationSlot", + "tags": [ + "postgres_trigger" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + }, + { + "$ref": "#/components/parameters/Path" + } + ], + "requestBody": { + "description": "new slot for postgres", + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Slot" + } + } + } + }, + "responses": { + "201": { + "description": "slot created", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + } + } + } + } + }, + "/w/{workspace}/postgres_triggers/slot/delete/{path}": { + "delete": { + "summary": "delete postgres replication slot", + "operationId": "deletePostgresReplicationSlot", + "tags": [ + "postgres_trigger" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + }, + { + "$ref": "#/components/parameters/Path" + } + ], + "requestBody": { + "description": "replication slot of postgres", + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Slot" + } + } + } + }, + "responses": { + "200": { + "description": "postgres replication slot deleted", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + } + } + } + } + }, + "/w/{workspace}/postgres_triggers/publication/list/{path}": { + "get": { + "summary": "list postgres publication", + "operationId": "listPostgresPublication", + "tags": [ + "postgres_trigger" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + }, + { + "$ref": "#/components/parameters/Path" + } + ], + "responses": { + "200": { + "description": "database publication list", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + } + } + }, + "/w/{workspace}/postgres_triggers/publication/get/{publication}/{path}": { + "get": { + "summary": "get postgres publication", + "operationId": "getPostgresPublication", + "tags": [ + "postgres_trigger" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + }, + { + "$ref": "#/components/parameters/Path" + }, + { + "$ref": "#/components/parameters/PublicationName" + } + ], + "responses": { + "200": { + "description": "postgres publication get", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PublicationData" + } + } + } + } + } + } + }, + "/w/{workspace}/postgres_triggers/publication/create/{publication}/{path}": { + "post": { + "summary": "create publication for postgres", + "operationId": "createPostgresPublication", + "tags": [ + "postgres_trigger" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + }, + { + "$ref": "#/components/parameters/Path" + }, + { + "$ref": "#/components/parameters/PublicationName" + } + ], + "requestBody": { + "description": "new publication for postgres", + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PublicationData" + } + } + } + }, + "responses": { + "201": { + "description": "publication created", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + } + } + } + } + }, + "/w/{workspace}/postgres_triggers/publication/update/{publication}/{path}": { + "post": { + "summary": "update publication for postgres", + "operationId": "updatePostgresPublication", + "tags": [ + "postgres_trigger" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + }, + { + "$ref": "#/components/parameters/Path" + }, + { + "$ref": "#/components/parameters/PublicationName" + } + ], + "requestBody": { + "description": "update publication for postgres", + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PublicationData" + } + } + } + }, + "responses": { + "201": { + "description": "publication updated", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + } + } + } + } + }, + "/w/{workspace}/postgres_triggers/publication/delete/{publication}/{path}": { + "delete": { + "summary": "delete postgres publication", + "operationId": "deletePostgresPublication", + "tags": [ + "postgres_trigger" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + }, + { + "$ref": "#/components/parameters/Path" + }, + { + "$ref": "#/components/parameters/PublicationName" + } + ], + "responses": { + "200": { + "description": "postgres publication deleted", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + } + } + } + } + }, + "/w/{workspace}/postgres_triggers/create": { + "post": { + "summary": "create postgres trigger", + "operationId": "createPostgresTrigger", + "tags": [ + "postgres_trigger" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + } + ], + "requestBody": { + "description": "new postgres trigger", + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NewPostgresTrigger" + } + } + } + }, + "responses": { + "201": { + "description": "postgres trigger created", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + } + } + } + } + }, + "/w/{workspace}/postgres_triggers/update/{path}": { + "post": { + "summary": "update postgres trigger", + "operationId": "updatePostgresTrigger", + "tags": [ + "postgres_trigger" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + }, + { + "$ref": "#/components/parameters/Path" + } + ], + "requestBody": { + "description": "updated trigger", + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EditPostgresTrigger" + } + } + } + }, + "responses": { + "200": { + "description": "postgres trigger updated", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + } + } + } + } + }, + "/w/{workspace}/postgres_triggers/delete/{path}": { + "delete": { + "summary": "delete postgres trigger", + "operationId": "deletePostgresTrigger", + "tags": [ + "postgres_trigger" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + }, + { + "$ref": "#/components/parameters/Path" + } + ], + "responses": { + "200": { + "description": "postgres trigger deleted", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + } + } + } + } + }, + "/w/{workspace}/postgres_triggers/get/{path}": { + "get": { + "summary": "get postgres trigger", + "operationId": "getPostgresTrigger", + "tags": [ + "postgres_trigger" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + }, + { + "$ref": "#/components/parameters/Path" + } + ], + "responses": { + "200": { + "description": "get postgres trigger", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PostgresTrigger" + } + } + } + } + } + } + }, + "/w/{workspace}/postgres_triggers/list": { + "get": { + "summary": "list postgres triggers", + "operationId": "listPostgresTriggers", + "tags": [ + "postgres_trigger" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId", + "required": true + }, + { + "$ref": "#/components/parameters/Page" + }, + { + "$ref": "#/components/parameters/PerPage" + }, + { + "name": "path", + "description": "filter by path", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "is_flow", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "path_start", + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "postgres trigger list", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PostgresTrigger" + } + } + } + } + } + } + } + }, + "/w/{workspace}/postgres_triggers/exists/{path}": { + "get": { + "summary": "does postgres trigger exists", + "operationId": "existsPostgresTrigger", + "tags": [ + "postgres_trigger" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + }, + { + "$ref": "#/components/parameters/Path" + } + ], + "responses": { + "200": { + "description": "postgres trigger exists", + "content": { + "application/json": { + "schema": { + "type": "boolean" + } + } + } + } + } + } + }, + "/w/{workspace}/postgres_triggers/setenabled/{path}": { + "post": { + "summary": "set enabled postgres trigger", + "operationId": "setPostgresTriggerEnabled", + "tags": [ + "postgres_trigger" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + }, + { + "$ref": "#/components/parameters/Path" + } + ], + "requestBody": { + "description": "updated postgres trigger enable", + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + } + }, + "required": [ + "enabled" + ] + } + } + } + }, + "responses": { + "200": { + "description": "postgres trigger enabled set", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + } + } + } + } + }, + "/w/{workspace}/postgres_triggers/test": { + "post": { + "summary": "test postgres connection", + "operationId": "testPostgresConnection", + "tags": [ + "postgres_trigger" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + } + ], + "requestBody": { + "description": "test postgres connection", + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "database": { + "type": "string" + } + }, + "required": [ + "database" + ] + } + } + } + }, + "responses": { + "200": { + "description": "successfuly connected to postgres", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + } + } + } + } + }, "/groups/list": { "get": { "summary": "list instance groups", @@ -12989,6 +17483,35 @@ } } }, + "/w/{workspace}/folders/exists/{name}": { + "get": { + "summary": "exists folder", + "operationId": "existsFolder", + "tags": [ + "folder" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + }, + { + "$ref": "#/components/parameters/Name" + } + ], + "responses": { + "200": { + "description": "folder exists", + "content": { + "application/json": { + "schema": { + "type": "boolean" + } + } + } + } + } + } + }, "/w/{workspace}/folders/getusage/{name}": { "get": { "summary": "get folder usage", @@ -13343,7 +17866,9 @@ "description": "a config", "content": { "application/json": { - "schema": {} + "schema": { + "$ref": "#/components/schemas/Configs" + } } } } @@ -13467,6 +17992,81 @@ } } }, + "/configs/list_available_python_versions": { + "get": { + "summary": "Get currently available python versions provided by UV.", + "operationId": "listAvailablePythonVersions", + "tags": [ + "config" + ], + "responses": { + "200": { + "description": "List of python versions", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + } + } + }, + "/agent_workers/create_agent_token": { + "post": { + "summary": "create agent token", + "operationId": "createAgentToken", + "tags": [ + "agent_workers" + ], + "requestBody": { + "description": "agent token", + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "worker_group": { + "type": "string" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + } + }, + "exp": { + "type": "integer" + } + }, + "required": [ + "worker_group", + "tags", + "exp" + ] + } + } + } + }, + "responses": { + "200": { + "description": "agent token created", + "content": { + "application/json": { + "schema": { + "type": "string" + } + } + } + } + } + } + }, "/w/{workspace}/acls/get/{kind}/{path}": { "get": { "summary": "get granular acls", @@ -13498,7 +18098,13 @@ "app", "raw_app", "http_trigger", - "websocket_trigger" + "websocket_trigger", + "kafka_trigger", + "nats_trigger", + "postgres_trigger", + "mqtt_trigger", + "gcp_trigger", + "sqs_trigger" ] } } @@ -13551,7 +18157,13 @@ "app", "raw_app", "http_trigger", - "websocket_trigger" + "websocket_trigger", + "kafka_trigger", + "nats_trigger", + "postgres_trigger", + "mqtt_trigger", + "gcp_trigger", + "sqs_trigger" ] } } @@ -13623,7 +18235,13 @@ "app", "raw_app", "http_trigger", - "websocket_trigger" + "websocket_trigger", + "kafka_trigger", + "nats_trigger", + "postgres_trigger", + "mqtt_trigger", + "gcp_trigger", + "sqs_trigger" ] } } @@ -13661,32 +18279,66 @@ } } }, - "/w/{workspace}/capture_u/{path}": { + "/w/{workspace}/capture/set_config": { "post": { - "summary": "update flow preview capture", - "operationId": "updateCapture", + "summary": "set capture config", + "operationId": "setCaptureConfig", "tags": [ "capture" ], "parameters": [ { "$ref": "#/components/parameters/WorkspaceId" - }, - { - "$ref": "#/components/parameters/Path" } ], + "requestBody": { + "description": "capture config", + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "trigger_kind": { + "$ref": "#/components/schemas/CaptureTriggerKind" + }, + "path": { + "type": "string" + }, + "is_flow": { + "type": "boolean" + }, + "trigger_config": { + "type": "object" + } + }, + "required": [ + "trigger_kind", + "path", + "is_flow" + ] + } + } + } + }, "responses": { - "204": { - "description": "flow preview captured" + "200": { + "description": "capture config set", + "content": { + "application/json": { + "schema": { + "type": "object" + } + } + } } } } }, - "/w/{workspace}/capture/{path}": { - "put": { - "summary": "create flow preview capture", - "operationId": "createCapture", + "/w/{workspace}/capture/ping_config/{trigger_kind}/{runnable_kind}/{path}": { + "post": { + "summary": "ping capture config", + "operationId": "pingCaptureConfig", "tags": [ "capture" ], @@ -13694,18 +18346,162 @@ { "$ref": "#/components/parameters/WorkspaceId" }, + { + "name": "trigger_kind", + "in": "path", + "required": true, + "schema": { + "$ref": "#/components/schemas/CaptureTriggerKind" + } + }, + { + "$ref": "#/components/parameters/RunnableKind" + }, { "$ref": "#/components/parameters/Path" } ], "responses": { - "201": { - "description": "flow preview capture created" + "200": { + "description": "capture config pinged" } } - }, + } + }, + "/w/{workspace}/capture/get_configs/{runnable_kind}/{path}": { "get": { - "summary": "get flow preview capture", + "summary": "get capture configs for a script or flow", + "operationId": "getCaptureConfigs", + "tags": [ + "capture" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + }, + { + "$ref": "#/components/parameters/RunnableKind" + }, + { + "$ref": "#/components/parameters/Path" + } + ], + "responses": { + "200": { + "description": "capture configs for a script or flow", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CaptureConfig" + } + } + } + } + } + } + } + }, + "/w/{workspace}/capture/list/{runnable_kind}/{path}": { + "get": { + "summary": "list captures for a script or flow", + "operationId": "listCaptures", + "tags": [ + "capture" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + }, + { + "$ref": "#/components/parameters/RunnableKind" + }, + { + "$ref": "#/components/parameters/Path" + }, + { + "name": "trigger_kind", + "in": "query", + "schema": { + "$ref": "#/components/schemas/CaptureTriggerKind" + } + }, + { + "$ref": "#/components/parameters/Page" + }, + { + "$ref": "#/components/parameters/PerPage" + } + ], + "responses": { + "200": { + "description": "list of captures for a script or flow", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Capture" + } + } + } + } + } + } + } + }, + "/w/{workspace}/capture/move/{runnable_kind}/{path}": { + "post": { + "summary": "move captures and configs for a script or flow", + "operationId": "moveCapturesAndConfigs", + "tags": [ + "capture" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" + }, + { + "$ref": "#/components/parameters/RunnableKind" + }, + { + "$ref": "#/components/parameters/Path" + } + ], + "requestBody": { + "description": "move captures and configs to a new path", + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "new_path": { + "type": "string" + } + } + } + } + } + }, + "responses": { + "200": { + "description": "captures and configs moved", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + } + } + } + } + }, + "/w/{workspace}/capture/{id}": { + "get": { + "summary": "get a capture", "operationId": "getCapture", "tags": [ "capture" @@ -13715,20 +18511,49 @@ "$ref": "#/components/parameters/WorkspaceId" }, { - "$ref": "#/components/parameters/Path" + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer" + } } ], "responses": { "200": { - "description": "captured flow preview", + "description": "capture", "content": { "application/json": { - "schema": {} + "schema": { + "$ref": "#/components/schemas/Capture" + } } } + } + } + }, + "delete": { + "summary": "delete a capture", + "operationId": "deleteCapture", + "tags": [ + "capture" + ], + "parameters": [ + { + "$ref": "#/components/parameters/WorkspaceId" }, - "404": { - "description": "capture does not exist for this flow" + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "integer" + } + } + ], + "responses": { + "200": { + "description": "capture deleted" } } } @@ -13839,6 +18664,16 @@ }, { "$ref": "#/components/parameters/PerPage" + }, + { + "$ref": "#/components/parameters/ArgsFilter" + }, + { + "name": "include_preview", + "in": "query", + "schema": { + "type": "boolean" + } } ], "responses": { @@ -14142,6 +18977,9 @@ "properties": { "connection_settings_str": { "type": "string" + }, + "azure_container_path": { + "type": "string" } }, "required": [ @@ -14994,7 +19832,7 @@ }, "/w/{workspace}/job_helpers/download_s3_file": { "get": { - "summary": "Download file to S3 bucket", + "summary": "Download file from S3 bucket", "operationId": "fileDownload", "tags": [ "helpers" @@ -15508,6 +20346,9 @@ { "$ref": "#/components/parameters/ResultFilter" }, + { + "$ref": "#/components/parameters/AllowWildcards" + }, { "$ref": "#/components/parameters/Page" }, @@ -15595,6 +20436,14 @@ "schema": { "type": "string" } + }, + { + "name": "pagination_offset", + "in": "query", + "required": false, + "schema": { + "type": "integer" + } } ], "responses": { @@ -15609,12 +20458,7 @@ "description": "a list of the terms that couldn't be parsed (and thus ignored)", "type": "array", "items": { - "type": "object", - "properties": { - "dancer": { - "type": "string" - } - } + "type": "string" } }, "hits": { @@ -15623,6 +20467,25 @@ "items": { "$ref": "#/components/schemas/JobSearchHit" } + }, + "hit_count": { + "description": "how many jobs matched in total", + "type": "number" + }, + "index_metadata": { + "description": "Metadata about the index current state", + "type": "object", + "properties": { + "indexed_until": { + "description": "Datetime of the most recently indexed job", + "type": "string", + "format": "date-time" + }, + "lost_lock_ownership": { + "description": "Is the current indexer service being replaced", + "type": "boolean" + } + } } } } @@ -15737,14 +20600,6 @@ "type": "string" } }, - { - "name": "hosts", - "in": "query", - "required": true, - "schema": { - "type": "string" - } - }, { "name": "min_ts", "in": "query", @@ -15790,6 +20645,41 @@ } } } + }, + "/srch/index/delete/{idx_name}": { + "delete": { + "summary": "Restart container and delete the index to recreate it.", + "operationId": "clearIndex", + "tags": [ + "indexSearch" + ], + "parameters": [ + { + "name": "idx_name", + "in": "path", + "required": true, + "schema": { + "type": "string", + "enum": [ + "JobIndex", + "ServiceLogIndex" + ] + } + } + ], + "responses": { + "200": { + "description": "idx to be deleted and container restarting", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + } + } + } + } } }, "components": { @@ -15805,6 +20695,14 @@ } }, "parameters": { + "Id": { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, "Key": { "name": "key", "in": "path", @@ -15821,6 +20719,14 @@ "type": "string" } }, + "PublicationName": { + "name": "publication", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, "VersionId": { "name": "version", "in": "path", @@ -15886,6 +20792,14 @@ "type": "string" } }, + "CustomPath": { + "name": "custom_path", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, "PathId": { "name": "id", "in": "path", @@ -15950,6 +20864,14 @@ "type": "string" } }, + "Worker": { + "name": "worker", + "description": "worker this job was ran on", + "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", @@ -16144,6 +21066,14 @@ "type": "boolean" } }, + "AllowWildcards": { + "name": "allow_wildcards", + "description": "allow wildcards (*) in the filter of label, tag, worker", + "in": "query", + "schema": { + "type": "boolean" + } + }, "ArgsFilter": { "name": "args", "description": "filter on jobs containing those args as a json subset (@> in postgres)", @@ -16259,24 +21189,135 @@ "schema": { "type": "string" } + }, + "RunnableKind": { + "name": "runnable_kind", + "in": "path", + "required": true, + "schema": { + "type": "string", + "enum": [ + "script", + "flow" + ] + } } }, "schemas": { - "AiResource": { + "InputTransform": { + "allOf": [ + { + "$ref": "#/components/schemas/schemas-InputTransform" + } + ] + }, + "AIProvider": { + "type": "string", + "enum": [ + "openai", + "azure_openai", + "anthropic", + "mistral", + "deepseek", + "googleai", + "groq", + "openrouter", + "togetherai", + "customai" + ] + }, + "AIProviderModel": { "type": "object", "properties": { - "path": { + "model": { "type": "string" }, "provider": { - "type": "string" + "$ref": "#/components/schemas/AIProvider" } }, "required": [ - "path", + "model", "provider" ] }, + "AIProviderConfig": { + "type": "object", + "properties": { + "resource_path": { + "type": "string" + }, + "models": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "resource_path", + "models" + ] + }, + "AIConfig": { + "type": "object", + "properties": { + "providers": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/AIProviderConfig" + } + }, + "default_model": { + "$ref": "#/components/schemas/AIProviderModel" + }, + "code_completion_model": { + "$ref": "#/components/schemas/AIProviderModel" + } + } + }, + "Alert": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "tags_to_monitor": { + "type": "array", + "items": { + "type": "string" + } + }, + "jobs_num_threshold": { + "type": "integer" + }, + "alert_cooldown_seconds": { + "type": "integer" + }, + "alert_time_threshold_seconds": { + "type": "integer" + } + }, + "required": [ + "name", + "tags_to_monitor", + "jobs_num_threshold", + "alert_cooldown_seconds", + "alert_time_threshold_seconds" + ] + }, + "Configs": { + "type": "object", + "nullable": true, + "properties": { + "alerts": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Alert" + } + } + } + }, "Script": { "type": "object", "properties": { @@ -16337,25 +21378,7 @@ "type": "string" }, "language": { - "type": "string", - "enum": [ - "python3", - "deno", - "go", - "bash", - "powershell", - "postgresql", - "mysql", - "bigquery", - "snowflake", - "mssql", - "graphql", - "nativets", - "bun", - "php", - "rust", - "ansible" - ] + "$ref": "#/components/schemas/ScriptLang" }, "kind": { "type": "string", @@ -16364,7 +21387,8 @@ "failure", "trigger", "command", - "approval" + "approval", + "preprocessor" ] }, "starred": { @@ -16426,6 +21450,9 @@ }, "has_preprocessor": { "type": "boolean" + }, + "on_behalf_of_email": { + "type": "string" } }, "required": [ @@ -16475,25 +21502,7 @@ "type": "string" }, "language": { - "type": "string", - "enum": [ - "python3", - "deno", - "go", - "bash", - "powershell", - "postgresql", - "mysql", - "bigquery", - "snowflake", - "mssql", - "graphql", - "nativets", - "bun", - "php", - "rust", - "ansible" - ] + "$ref": "#/components/schemas/ScriptLang" }, "kind": { "type": "string", @@ -16502,7 +21511,8 @@ "failure", "trigger", "command", - "approval" + "approval", + "preprocessor" ] }, "tag": { @@ -16561,6 +21571,9 @@ }, "has_preprocessor": { "type": "boolean" + }, + "on_behalf_of_email": { + "type": "string" } }, "required": [ @@ -16758,7 +21771,10 @@ "script_hub", "identity", "deploymentcallback", - "singlescriptflow" + "singlescriptflow", + "flowscript", + "flownode", + "appscript" ] }, "schedule_path": { @@ -16766,7 +21782,7 @@ }, "permissioned_as": { "type": "string", - "description": "The user (u/userfoo) or group (g/groupfoo) whom \nthe execution of this script will be permissioned_as and by extension its DT_TOKEN.\n" + "description": "The user (u/userfoo) or group (g/groupfoo) whom\nthe execution of this script will be permissioned_as and by extension its DT_TOKEN.\n" }, "flow_status": { "$ref": "#/components/schemas/FlowStatus" @@ -16778,25 +21794,7 @@ "type": "boolean" }, "language": { - "type": "string", - "enum": [ - "python3", - "deno", - "go", - "bash", - "powershell", - "postgresql", - "mysql", - "bigquery", - "snowflake", - "mssql", - "graphql", - "nativets", - "bun", - "php", - "rust", - "ansible" - ] + "$ref": "#/components/schemas/ScriptLang" }, "email": { "type": "string" @@ -16821,6 +21819,12 @@ }, "suspend": { "type": "number" + }, + "preprocessed": { + "type": "boolean" + }, + "worker": { + "type": "string" } }, "required": [ @@ -16907,7 +21911,10 @@ "script_hub", "identity", "deploymentcallback", - "singlescriptflow" + "singlescriptflow", + "flowscript", + "flownode", + "appscript" ] }, "schedule_path": { @@ -16915,7 +21922,7 @@ }, "permissioned_as": { "type": "string", - "description": "The user (u/userfoo) or group (g/groupfoo) whom \nthe execution of this script will be permissioned_as and by extension its DT_TOKEN.\n" + "description": "The user (u/userfoo) or group (g/groupfoo) whom\nthe execution of this script will be permissioned_as and by extension its DT_TOKEN.\n" }, "flow_status": { "$ref": "#/components/schemas/FlowStatus" @@ -16927,25 +21934,7 @@ "type": "boolean" }, "language": { - "type": "string", - "enum": [ - "python3", - "deno", - "go", - "bash", - "powershell", - "postgresql", - "mysql", - "bigquery", - "snowflake", - "mssql", - "graphql", - "nativets", - "bun", - "php", - "rust", - "ansible" - ] + "$ref": "#/components/schemas/ScriptLang" }, "is_skipped": { "type": "boolean" @@ -16976,6 +21965,12 @@ }, "aggregate_wait_time_ms": { "type": "number" + }, + "preprocessed": { + "type": "boolean" + }, + "worker": { + "type": "string" } }, "required": [ @@ -17065,6 +22060,9 @@ "is_admin": { "type": "boolean" }, + "name": { + "type": "string" + }, "is_super_admin": { "type": "boolean" }, @@ -17670,6 +22668,31 @@ "has_preprocessor" ] }, + "ScriptLang": { + "type": "string", + "enum": [ + "python3", + "deno", + "go", + "bash", + "powershell", + "postgresql", + "mysql", + "bigquery", + "snowflake", + "mssql", + "oracledb", + "graphql", + "nativets", + "bun", + "php", + "rust", + "ansible", + "csharp", + "nu", + "java" + ] + }, "Preview": { "type": "object", "properties": { @@ -17679,29 +22702,14 @@ "path": { "type": "string" }, + "script_hash": { + "type": "string" + }, "args": { "$ref": "#/components/schemas/ScriptArgs" }, "language": { - "type": "string", - "enum": [ - "python3", - "deno", - "go", - "bash", - "powershell", - "postgresql", - "mysql", - "bigquery", - "snowflake", - "mssql", - "graphql", - "nativets", - "bun", - "php", - "rust", - "ansible" - ] + "$ref": "#/components/schemas/ScriptLang" }, "tag": { "type": "string" @@ -18004,6 +23012,9 @@ "summary": { "type": "string" }, + "description": { + "type": "string" + }, "no_flow_overlap": { "type": "boolean" }, @@ -18013,6 +23024,9 @@ "paused_until": { "type": "string", "format": "date-time" + }, + "cron_version": { + "type": "string" } }, "required": [ @@ -18125,12 +23139,18 @@ "summary": { "type": "string" }, + "description": { + "type": "string" + }, "tag": { "type": "string" }, "paused_until": { "type": "string", "format": "date-time" + }, + "cron_version": { + "type": "string" } }, "required": [ @@ -18193,12 +23213,18 @@ "summary": { "type": "string" }, + "description": { + "type": "string" + }, "tag": { "type": "string" }, "paused_until": { "type": "string", "format": "date-time" + }, + "cron_version": { + "type": "string" } }, "required": [ @@ -18209,12 +23235,27 @@ "args" ] }, - "HttpTrigger": { + "TriggerExtraProperty": { "type": "object", "properties": { "path": { "type": "string" }, + "script_path": { + "type": "string" + }, + "email": { + "type": "string" + }, + "extra_perms": { + "type": "object", + "additionalProperties": { + "type": "boolean" + } + }, + "workspace_id": { + "type": "string" + }, "edited_by": { "type": "string" }, @@ -18222,9 +23263,40 @@ "type": "string", "format": "date-time" }, - "script_path": { - "type": "string" - }, + "is_flow": { + "type": "boolean" + } + }, + "required": [ + "path", + "script_path", + "email", + "extra_perms", + "workspace_id", + "edited_by", + "edited_at", + "is_flow" + ] + }, + "AuthenticationMethod": { + "type": "string", + "enum": [ + "none", + "windmill", + "api_key", + "basic_http", + "custom_script", + "signature" + ] + }, + "HttpTrigger": { + "allOf": [ + { + "$ref": "#/components/schemas/TriggerExtraProperty" + } + ], + "type": "object", + "properties": { "route_path": { "type": "string" }, @@ -18245,21 +23317,6 @@ "s3" ] }, - "is_flow": { - "type": "boolean" - }, - "extra_perms": { - "type": "object", - "additionalProperties": { - "type": "boolean" - } - }, - "email": { - "type": "string" - }, - "workspace_id": { - "type": "string" - }, "http_method": { "type": "string", "enum": [ @@ -18270,26 +23327,37 @@ "patch" ] }, + "authentication_resource_path": { + "type": "string" + }, "is_async": { "type": "boolean" }, - "requires_auth": { + "authentication_method": { + "$ref": "#/components/schemas/AuthenticationMethod" + }, + "is_static_website": { + "type": "boolean" + }, + "workspaced_route": { + "type": "boolean" + }, + "wrap_body": { + "type": "boolean" + }, + "raw_string": { "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" + "authentication_method", + "http_method", + "is_static_website", + "workspaced_route", + "wrap_body", + "raw_string" ] }, "NewHttpTrigger": { @@ -18304,6 +23372,9 @@ "route_path": { "type": "string" }, + "workspaced_route": { + "type": "boolean" + }, "static_asset_config": { "type": "object", "properties": { @@ -18334,10 +23405,22 @@ "patch" ] }, + "authentication_resource_path": { + "type": "string" + }, "is_async": { "type": "boolean" }, - "requires_auth": { + "authentication_method": { + "$ref": "#/components/schemas/AuthenticationMethod" + }, + "is_static_website": { + "type": "boolean" + }, + "wrap_body": { + "type": "boolean" + }, + "raw_string": { "type": "boolean" } }, @@ -18347,8 +23430,9 @@ "route_path", "is_flow", "is_async", - "requires_auth", - "http_method" + "authentication_method", + "http_method", + "is_static_website" ] }, "EditHttpTrigger": { @@ -18363,6 +23447,9 @@ "route_path": { "type": "string" }, + "workspaced_route": { + "type": "boolean" + }, "static_asset_config": { "type": "object", "properties": { @@ -18380,6 +23467,9 @@ "s3" ] }, + "authentication_resource_path": { + "type": "string" + }, "is_flow": { "type": "boolean" }, @@ -18396,7 +23486,16 @@ "is_async": { "type": "boolean" }, - "requires_auth": { + "authentication_method": { + "$ref": "#/components/schemas/AuthenticationMethod" + }, + "is_static_website": { + "type": "boolean" + }, + "wrap_body": { + "type": "boolean" + }, + "raw_string": { "type": "boolean" } }, @@ -18406,8 +23505,9 @@ "is_flow", "kind", "is_async", - "requires_auth", - "http_method" + "authentication_method", + "http_method", + "is_static_website" ] }, "TriggersCount": { @@ -18435,43 +23535,38 @@ }, "websocket_count": { "type": "number" + }, + "postgres_count": { + "type": "number" + }, + "kafka_count": { + "type": "number" + }, + "nats_count": { + "type": "number" + }, + "mqtt_count": { + "type": "number" + }, + "gcp_count": { + "type": "number" + }, + "sqs_count": { + "type": "number" } } }, "WebsocketTrigger": { + "allOf": [ + { + "$ref": "#/components/schemas/TriggerExtraProperty" + } + ], "type": "object", "properties": { - "path": { - "type": "string" - }, - "edited_by": { - "type": "string" - }, - "edited_at": { - "type": "string", - "format": "date-time" - }, - "script_path": { - "type": "string" - }, "url": { "type": "string" }, - "is_flow": { - "type": "boolean" - }, - "extra_perms": { - "type": "object", - "additionalProperties": { - "type": "boolean" - } - }, - "email": { - "type": "string" - }, - "workspace_id": { - "type": "string" - }, "server_id": { "type": "string" }, @@ -18509,22 +23604,16 @@ }, "url_runnable_args": { "$ref": "#/components/schemas/ScriptArgs" + }, + "can_return_message": { + "type": "boolean" } }, "required": [ - "path", - "edited_by", - "edited_at", - "script_path", "url", - "extra_perms", - "is_flow", - "email", - "workspace_id", "enabled", "filters", - "initial_messages", - "url_runnable_args" + "can_return_message" ] }, "NewWebsocketTrigger": { @@ -18569,6 +23658,9 @@ }, "url_runnable_args": { "$ref": "#/components/schemas/ScriptArgs" + }, + "can_return_message": { + "type": "boolean" } }, "required": [ @@ -18577,8 +23669,7 @@ "url", "is_flow", "filters", - "initial_messages", - "url_runnable_args" + "can_return_message" ] }, "EditWebsocketTrigger": { @@ -18620,6 +23711,9 @@ }, "url_runnable_args": { "$ref": "#/components/schemas/ScriptArgs" + }, + "can_return_message": { + "type": "boolean" } }, "required": [ @@ -18628,8 +23722,7 @@ "url", "is_flow", "filters", - "initial_messages", - "url_runnable_args" + "can_return_message" ] }, "WebsocketTriggerInitialMessage": { @@ -18674,6 +23767,936 @@ } ] }, + "MqttQoS": { + "type": "string", + "enum": [ + "qos0", + "qos1", + "qos2" + ] + }, + "MqttV3Config": { + "type": "object", + "properties": { + "clean_session": { + "type": "boolean" + } + } + }, + "MqttV5Config": { + "type": "object", + "properties": { + "clean_start": { + "type": "boolean" + }, + "topic_alias": { + "type": "number" + }, + "session_expiry_interval": { + "type": "number" + } + } + }, + "MqttSubscribeTopic": { + "type": "object", + "properties": { + "qos": { + "$ref": "#/components/schemas/MqttQoS" + }, + "topic": { + "type": "string" + } + }, + "required": [ + "qos", + "topic" + ] + }, + "MqttClientVersion": { + "type": "string", + "enum": [ + "v3", + "v5" + ] + }, + "MqttTrigger": { + "allOf": [ + { + "$ref": "#/components/schemas/TriggerExtraProperty" + } + ], + "type": "object", + "properties": { + "mqtt_resource_path": { + "type": "string" + }, + "subscribe_topics": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MqttSubscribeTopic" + } + }, + "v3_config": { + "$ref": "#/components/schemas/MqttV3Config" + }, + "v5_config": { + "$ref": "#/components/schemas/MqttV5Config" + }, + "client_id": { + "type": "string" + }, + "client_version": { + "$ref": "#/components/schemas/MqttClientVersion" + }, + "server_id": { + "type": "string" + }, + "last_server_ping": { + "type": "string", + "format": "date-time" + }, + "error": { + "type": "string" + }, + "enabled": { + "type": "boolean" + } + }, + "required": [ + "enabled", + "subscribe_topics", + "mqtt_resource_path" + ] + }, + "NewMqttTrigger": { + "type": "object", + "properties": { + "mqtt_resource_path": { + "type": "string" + }, + "subscribe_topics": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MqttSubscribeTopic" + } + }, + "client_id": { + "type": "string" + }, + "v3_config": { + "$ref": "#/components/schemas/MqttV3Config" + }, + "v5_config": { + "$ref": "#/components/schemas/MqttV5Config" + }, + "client_version": { + "$ref": "#/components/schemas/MqttClientVersion" + }, + "path": { + "type": "string" + }, + "script_path": { + "type": "string" + }, + "is_flow": { + "type": "boolean" + }, + "enabled": { + "type": "boolean" + } + }, + "required": [ + "path", + "script_path", + "is_flow", + "subscribe_topics", + "mqtt_resource_path" + ] + }, + "EditMqttTrigger": { + "type": "object", + "properties": { + "mqtt_resource_path": { + "type": "string" + }, + "subscribe_topics": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MqttSubscribeTopic" + } + }, + "client_id": { + "type": "string" + }, + "v3_config": { + "$ref": "#/components/schemas/MqttV3Config" + }, + "v5_config": { + "$ref": "#/components/schemas/MqttV5Config" + }, + "client_version": { + "$ref": "#/components/schemas/MqttClientVersion" + }, + "path": { + "type": "string" + }, + "script_path": { + "type": "string" + }, + "is_flow": { + "type": "boolean" + }, + "enabled": { + "type": "boolean" + } + }, + "required": [ + "path", + "script_path", + "is_flow", + "enabled", + "subscribe_topics", + "mqtt_resource_path" + ] + }, + "DeliveryType": { + "type": "string", + "enum": [ + "push", + "pull" + ] + }, + "PushConfig": { + "type": "object", + "properties": { + "audience": { + "type": "string" + }, + "authenticate": { + "type": "boolean" + } + }, + "required": [ + "authenticate", + "base_endpoint" + ] + }, + "GcpTrigger": { + "allOf": [ + { + "$ref": "#/components/schemas/TriggerExtraProperty" + } + ], + "type": "object", + "properties": { + "gcp_resource_path": { + "type": "string" + }, + "topic_id": { + "type": "string" + }, + "subscription_id": { + "type": "string" + }, + "server_id": { + "type": "string" + }, + "delivery_type": { + "$ref": "#/components/schemas/DeliveryType" + }, + "delivery_config": { + "$ref": "#/components/schemas/PushConfig" + }, + "subscription_mode": { + "$ref": "#/components/schemas/SubscriptionMode" + }, + "last_server_ping": { + "type": "string", + "format": "date-time" + }, + "error": { + "type": "string" + }, + "enabled": { + "type": "boolean" + } + }, + "required": [ + "gcp_resource_path", + "topic_id", + "subscription_id", + "enabled", + "delivery_type", + "subscription_mode" + ] + }, + "SubscriptionMode": { + "type": "string", + "enum": [ + "existing", + "create_update" + ], + "description": "The mode of subscription. 'existing' means using an existing GCP subscription, while 'create_update' involves creating or updating a new subscription." + }, + "GcpTriggerData": { + "type": "object", + "properties": { + "gcp_resource_path": { + "type": "string" + }, + "subscription_mode": { + "$ref": "#/components/schemas/SubscriptionMode" + }, + "topic_id": { + "type": "string" + }, + "subscription_id": { + "type": "string" + }, + "base_endpoint": { + "type": "string" + }, + "delivery_type": { + "$ref": "#/components/schemas/DeliveryType" + }, + "delivery_config": { + "$ref": "#/components/schemas/PushConfig" + }, + "path": { + "type": "string" + }, + "script_path": { + "type": "string" + }, + "is_flow": { + "type": "boolean" + }, + "enabled": { + "type": "boolean" + } + }, + "required": [ + "path", + "script_path", + "is_flow", + "gcp_resource_path", + "topic_id", + "subscription_mode" + ] + }, + "GetAllTopicSubscription": { + "type": "object", + "properties": { + "topic_id": { + "type": "string" + } + }, + "required": [ + "topic_id" + ] + }, + "DeleteGcpSubscription": { + "type": "object", + "properties": { + "subscription_id": { + "type": "string" + } + }, + "required": [ + "subscription_id" + ] + }, + "AwsAuthResourceType": { + "type": "string", + "enum": [ + "oidc", + "credentials" + ] + }, + "SqsTrigger": { + "allOf": [ + { + "$ref": "#/components/schemas/TriggerExtraProperty" + } + ], + "type": "object", + "properties": { + "queue_url": { + "type": "string" + }, + "aws_auth_resource_type": { + "$ref": "#/components/schemas/AwsAuthResourceType" + }, + "aws_resource_path": { + "type": "string" + }, + "message_attributes": { + "type": "array", + "items": { + "type": "string" + } + }, + "server_id": { + "type": "string" + }, + "last_server_ping": { + "type": "string", + "format": "date-time" + }, + "error": { + "type": "string" + }, + "enabled": { + "type": "boolean" + } + }, + "required": [ + "queue_url", + "aws_resource_path", + "enabled", + "aws_auth_resource_type" + ] + }, + "NewSqsTrigger": { + "type": "object", + "properties": { + "queue_url": { + "type": "string" + }, + "aws_auth_resource_type": { + "$ref": "#/components/schemas/AwsAuthResourceType" + }, + "aws_resource_path": { + "type": "string" + }, + "message_attributes": { + "type": "array", + "items": { + "type": "string" + } + }, + "path": { + "type": "string" + }, + "script_path": { + "type": "string" + }, + "is_flow": { + "type": "boolean" + }, + "enabled": { + "type": "boolean" + } + }, + "required": [ + "queue_url", + "aws_resource_path", + "path", + "script_path", + "is_flow", + "aws_auth_resource_type" + ] + }, + "EditSqsTrigger": { + "type": "object", + "properties": { + "queue_url": { + "type": "string" + }, + "aws_auth_resource_type": { + "$ref": "#/components/schemas/AwsAuthResourceType" + }, + "aws_resource_path": { + "type": "string" + }, + "message_attributes": { + "type": "array", + "items": { + "type": "string" + } + }, + "path": { + "type": "string" + }, + "script_path": { + "type": "string" + }, + "is_flow": { + "type": "boolean" + }, + "enabled": { + "type": "boolean" + } + }, + "required": [ + "queue_url", + "aws_resource_path", + "path", + "script_path", + "is_flow", + "enabled", + "aws_auth_resource_type" + ] + }, + "Slot": { + "type": "object", + "properties": { + "name": { + "type": "string" + } + } + }, + "SlotList": { + "type": "object", + "properties": { + "slot_name": { + "type": "string" + }, + "active": { + "type": "boolean" + } + } + }, + "PublicationData": { + "type": "object", + "properties": { + "table_to_track": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Relations" + } + }, + "transaction_to_track": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "transaction_to_track" + ] + }, + "TableToTrack": { + "type": "array", + "items": { + "type": "object", + "properties": { + "table_name": { + "type": "string" + }, + "columns_name": { + "type": "array", + "items": { + "type": "string" + } + }, + "where_clause": { + "type": "string" + } + }, + "required": [ + "table_name" + ] + } + }, + "Relations": { + "type": "object", + "properties": { + "schema_name": { + "type": "string" + }, + "table_to_track": { + "$ref": "#/components/schemas/TableToTrack" + } + }, + "required": [ + "schema_name", + "table_to_track" + ] + }, + "Language": { + "type": "string", + "enum": [ + "Typescript" + ] + }, + "TemplateScript": { + "type": "object", + "properties": { + "postgres_resource_path": { + "type": "string" + }, + "relations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Relations" + } + }, + "language": { + "$ref": "#/components/schemas/Language" + } + }, + "required": [ + "postgres_resource_path", + "relations", + "language" + ] + }, + "PostgresTrigger": { + "allOf": [ + { + "$ref": "#/components/schemas/TriggerExtraProperty" + } + ], + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + }, + "postgres_resource_path": { + "type": "string" + }, + "publication_name": { + "type": "string" + }, + "server_id": { + "type": "string" + }, + "replication_slot_name": { + "type": "string" + }, + "error": { + "type": "string" + }, + "last_server_ping": { + "type": "string", + "format": "date-time" + } + }, + "required": [ + "enabled", + "postgres_resource_path", + "replication_slot_name", + "publication_name" + ] + }, + "NewPostgresTrigger": { + "type": "object", + "properties": { + "replication_slot_name": { + "type": "string" + }, + "publication_name": { + "type": "string" + }, + "path": { + "type": "string" + }, + "script_path": { + "type": "string" + }, + "is_flow": { + "type": "boolean" + }, + "enabled": { + "type": "boolean" + }, + "postgres_resource_path": { + "type": "string" + }, + "publication": { + "$ref": "#/components/schemas/PublicationData" + } + }, + "required": [ + "path", + "script_path", + "is_flow", + "enabled", + "postgres_resource_path" + ] + }, + "EditPostgresTrigger": { + "type": "object", + "properties": { + "replication_slot_name": { + "type": "string" + }, + "publication_name": { + "type": "string" + }, + "path": { + "type": "string" + }, + "script_path": { + "type": "string" + }, + "is_flow": { + "type": "boolean" + }, + "enabled": { + "type": "boolean" + }, + "postgres_resource_path": { + "type": "string" + }, + "publication": { + "$ref": "#/components/schemas/PublicationData" + } + }, + "required": [ + "path", + "script_path", + "is_flow", + "enabled", + "postgres_resource_path", + "publication_name", + "replication_slot_name" + ] + }, + "KafkaTrigger": { + "allOf": [ + { + "$ref": "#/components/schemas/TriggerExtraProperty" + } + ], + "type": "object", + "properties": { + "kafka_resource_path": { + "type": "string" + }, + "group_id": { + "type": "string" + }, + "topics": { + "type": "array", + "items": { + "type": "string" + } + }, + "server_id": { + "type": "string" + }, + "last_server_ping": { + "type": "string", + "format": "date-time" + }, + "error": { + "type": "string" + }, + "enabled": { + "type": "boolean" + } + }, + "required": [ + "kafka_resource_path", + "group_id", + "topics", + "enabled" + ] + }, + "NewKafkaTrigger": { + "type": "object", + "properties": { + "path": { + "type": "string" + }, + "script_path": { + "type": "string" + }, + "is_flow": { + "type": "boolean" + }, + "kafka_resource_path": { + "type": "string" + }, + "group_id": { + "type": "string" + }, + "topics": { + "type": "array", + "items": { + "type": "string" + } + }, + "enabled": { + "type": "boolean" + } + }, + "required": [ + "path", + "script_path", + "is_flow", + "kafka_resource_path", + "group_id", + "topics" + ] + }, + "EditKafkaTrigger": { + "type": "object", + "properties": { + "kafka_resource_path": { + "type": "string" + }, + "group_id": { + "type": "string" + }, + "topics": { + "type": "array", + "items": { + "type": "string" + } + }, + "path": { + "type": "string" + }, + "script_path": { + "type": "string" + }, + "is_flow": { + "type": "boolean" + } + }, + "required": [ + "path", + "script_path", + "kafka_resource_path", + "group_id", + "topics", + "is_flow" + ] + }, + "NatsTrigger": { + "allOf": [ + { + "$ref": "#/components/schemas/TriggerExtraProperty" + } + ], + "type": "object", + "properties": { + "nats_resource_path": { + "type": "string" + }, + "use_jetstream": { + "type": "boolean" + }, + "stream_name": { + "type": "string" + }, + "consumer_name": { + "type": "string" + }, + "subjects": { + "type": "array", + "items": { + "type": "string" + } + }, + "server_id": { + "type": "string" + }, + "last_server_ping": { + "type": "string", + "format": "date-time" + }, + "error": { + "type": "string" + }, + "enabled": { + "type": "boolean" + } + }, + "required": [ + "nats_resource_path", + "use_jetstream", + "subjects", + "enabled" + ] + }, + "NewNatsTrigger": { + "type": "object", + "properties": { + "path": { + "type": "string" + }, + "script_path": { + "type": "string" + }, + "is_flow": { + "type": "boolean" + }, + "nats_resource_path": { + "type": "string" + }, + "use_jetstream": { + "type": "boolean" + }, + "stream_name": { + "type": "string" + }, + "consumer_name": { + "type": "string" + }, + "subjects": { + "type": "array", + "items": { + "type": "string" + } + }, + "enabled": { + "type": "boolean" + } + }, + "required": [ + "path", + "script_path", + "is_flow", + "nats_resource_path", + "use_jetstream", + "subjects" + ] + }, + "EditNatsTrigger": { + "type": "object", + "properties": { + "nats_resource_path": { + "type": "string" + }, + "use_jetstream": { + "type": "boolean" + }, + "stream_name": { + "type": "string" + }, + "consumer_name": { + "type": "string" + }, + "subjects": { + "type": "array", + "items": { + "type": "string" + } + }, + "path": { + "type": "string" + }, + "script_path": { + "type": "string" + }, + "is_flow": { + "type": "boolean" + } + }, + "required": [ + "path", + "script_path", + "nats_resource_path", + "use_jetstream", + "subjects", + "is_flow" + ] + }, "Group": { "type": "object", "properties": { @@ -18850,12 +24873,19 @@ }, "username": { "type": "string" + }, + "color": { + "type": "string" + }, + "operator_settings": { + "$ref": "#/components/schemas/OperatorSettings" } }, "required": [ "id", "name", - "username" + "username", + "color" ] } } @@ -18876,6 +24906,9 @@ }, "username": { "type": "string" + }, + "color": { + "type": "string" } }, "required": [ @@ -18897,6 +24930,9 @@ }, "domain": { "type": "string" + }, + "color": { + "type": "string" } }, "required": [ @@ -18944,6 +24980,9 @@ "super_admin": { "type": "boolean" }, + "devops": { + "type": "boolean" + }, "verified": { "type": "boolean" }, @@ -18974,6 +25013,14 @@ }, { "$ref": "#/components/schemas/FlowMetadata" + }, + { + "type": "object", + "properties": { + "lock_error_logs": { + "type": "string" + } + } } ] }, @@ -19028,6 +25075,9 @@ }, "visible_to_runner_only": { "type": "boolean" + }, + "on_behalf_of_email": { + "type": "string" } }, "required": [ @@ -19066,6 +25116,9 @@ }, "visible_to_runner_only": { "type": "boolean" + }, + "on_behalf_of_email": { + "type": "string" } }, "required": [ @@ -19135,6 +25188,20 @@ "type": "object" } }, + "allowed_s3_keys": { + "type": "array", + "items": { + "type": "object", + "properties": { + "s3_path": { + "type": "string" + }, + "resource": { + "type": "string" + } + } + } + }, "execution_mode": { "type": "string", "enum": [ @@ -19189,6 +25256,9 @@ "publisher", "anonymous" ] + }, + "raw_app": { + "type": "boolean" } }, "required": [ @@ -19287,6 +25357,9 @@ "additionalProperties": { "type": "boolean" } + }, + "custom_path": { + "type": "string" } }, "required": [ @@ -19404,16 +25477,13 @@ ] }, "HubScriptKind": { - "name": "kind", - "schema": { - "type": "string", - "enum": [ - "script", - "failure", - "trigger", - "approval" - ] - } + "type": "string", + "enum": [ + "script", + "failure", + "trigger", + "approval" + ] }, "PolarsClientKwargs": { "type": "object", @@ -19588,7 +25658,8 @@ "resourcetype", "schedule", "user", - "group" + "group", + "trigger" ] } }, @@ -19619,7 +25690,8 @@ "app", "resource", "variable", - "secret" + "secret", + "trigger" ] } } @@ -19677,7 +25749,8 @@ "resourcetype", "schedule", "user", - "group" + "group", + "trigger" ] } } @@ -19775,25 +25848,7 @@ "type": "string" }, "language": { - "type": "string", - "enum": [ - "python3", - "deno", - "go", - "bash", - "powershell", - "postgresql", - "mysql", - "bigquery", - "snowflake", - "mssql", - "graphql", - "nativets", - "bun", - "php", - "rust", - "ansible" - ] + "$ref": "#/components/schemas/ScriptLang" } }, "required": [ @@ -20000,6 +26055,286 @@ "type": "boolean", "nullable": true, "description": "Acknowledgment status of the alert, can be true, false, or null if not set" + }, + "workspace_id": { + "type": "string", + "nullable": true, + "description": "Workspace id if the alert is in the scope of a workspace" + } + } + }, + "CaptureTriggerKind": { + "type": "string", + "enum": [ + "webhook", + "http", + "websocket", + "kafka", + "email", + "nats", + "postgres", + "sqs", + "mqtt", + "gcp" + ] + }, + "Capture": { + "type": "object", + "properties": { + "trigger_kind": { + "$ref": "#/components/schemas/CaptureTriggerKind" + }, + "main_args": {}, + "preprocessor_args": {}, + "id": { + "type": "integer" + }, + "created_at": { + "type": "string", + "format": "date-time" + } + }, + "required": [ + "trigger_kind", + "main_args", + "preprocessor_args", + "id", + "created_at" + ] + }, + "CaptureConfig": { + "type": "object", + "properties": { + "trigger_config": {}, + "trigger_kind": { + "$ref": "#/components/schemas/CaptureTriggerKind" + }, + "error": { + "type": "string" + }, + "last_server_ping": { + "type": "string", + "format": "date-time" + } + }, + "required": [ + "trigger_kind" + ] + }, + "OperatorSettings": { + "nullable": true, + "type": "object", + "required": [ + "runs", + "schedules", + "resources", + "variables", + "triggers", + "audit_logs", + "groups", + "folders", + "workers" + ], + "properties": { + "runs": { + "type": "boolean", + "description": "Whether operators can view runs" + }, + "schedules": { + "type": "boolean", + "description": "Whether operators can view schedules" + }, + "resources": { + "type": "boolean", + "description": "Whether operators can view resources" + }, + "variables": { + "type": "boolean", + "description": "Whether operators can view variables" + }, + "audit_logs": { + "type": "boolean", + "description": "Whether operators can view audit logs" + }, + "triggers": { + "type": "boolean", + "description": "Whether operators can view triggers" + }, + "groups": { + "type": "boolean", + "description": "Whether operators can view groups page" + }, + "folders": { + "type": "boolean", + "description": "Whether operators can view folders page" + }, + "workers": { + "type": "boolean", + "description": "Whether operators can view workers page" + } + } + }, + "TeamInfo": { + "type": "object", + "required": [ + "team_id", + "team_name", + "channels" + ], + "properties": { + "team_id": { + "type": "string", + "description": "The unique identifier of the Microsoft Teams team", + "example": "19:abc123def456@thread.tacv2" + }, + "team_name": { + "type": "string", + "description": "The display name of the Microsoft Teams team", + "example": "Engineering Team" + }, + "channels": { + "type": "array", + "description": "List of channels within the team", + "items": { + "$ref": "#/components/schemas/ChannelInfo" + } + } + } + }, + "ChannelInfo": { + "type": "object", + "required": [ + "channel_id", + "channel_name", + "tenant_id", + "service_url" + ], + "properties": { + "channel_id": { + "type": "string", + "description": "The unique identifier of the channel", + "example": "19:channel123@thread.tacv2" + }, + "channel_name": { + "type": "string", + "description": "The display name of the channel", + "example": "General" + }, + "tenant_id": { + "type": "string", + "description": "The Microsoft Teams tenant identifier", + "example": "12345678-1234-1234-1234-123456789012" + }, + "service_url": { + "type": "string", + "description": "The service URL for the channel", + "example": "https://smba.trafficmanager.net/amer/12345678-1234-1234-1234-123456789012/" + } + } + }, + "GithubInstallations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "workspace_id": { + "type": "string" + }, + "installation_id": { + "type": "number" + }, + "account_id": { + "type": "string" + }, + "repositories": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "required": [ + "name", + "url" + ] + } + } + }, + "required": [ + "installation_id", + "account_id", + "repositories" + ] + } + }, + "WorkspaceGithubInstallation": { + "type": "object", + "properties": { + "account_id": { + "type": "string" + }, + "installation_id": { + "type": "number" + } + }, + "required": [ + "account_id", + "installation_id" + ] + }, + "S3Object": { + "type": "object", + "properties": { + "s3": { + "type": "string" + }, + "filename": { + "type": "string" + }, + "storage": { + "type": "string" + }, + "presigned": { + "type": "string" + } + }, + "required": [ + "s3" + ] + }, + "TeamsChannel": { + "type": "object", + "required": [ + "team_id", + "team_name", + "channel_id", + "channel_name" + ], + "properties": { + "team_id": { + "type": "string", + "description": "Microsoft Teams team ID", + "minLength": 1 + }, + "team_name": { + "type": "string", + "description": "Microsoft Teams team name", + "minLength": 1 + }, + "channel_id": { + "type": "string", + "description": "Microsoft Teams channel ID", + "minLength": 1 + }, + "channel_name": { + "type": "string", + "description": "Microsoft Teams channel name", + "minLength": 1 } } }, @@ -20037,7 +26372,7 @@ "type" ] }, - "InputTransform": { + "schemas-InputTransform": { "oneOf": [ { "$ref": "#/components/schemas/StaticTransform" @@ -20060,7 +26395,7 @@ "input_transforms": { "type": "object", "additionalProperties": { - "$ref": "#/components/schemas/InputTransform" + "$ref": "#/components/schemas/schemas-InputTransform" } }, "content": { @@ -20080,6 +26415,7 @@ "bigquery", "snowflake", "mssql", + "oracledb", "graphql", "nativets", "php" @@ -20126,7 +26462,7 @@ "input_transforms": { "type": "object", "additionalProperties": { - "$ref": "#/components/schemas/InputTransform" + "$ref": "#/components/schemas/schemas-InputTransform" } }, "path": { @@ -20160,7 +26496,7 @@ "input_transforms": { "type": "object", "additionalProperties": { - "$ref": "#/components/schemas/InputTransform" + "$ref": "#/components/schemas/schemas-InputTransform" } }, "path": { @@ -20189,32 +26525,10 @@ "$ref": "#/components/schemas/FlowModuleValue" }, "stop_after_if": { - "type": "object", - "properties": { - "skip_if_stopped": { - "type": "boolean" - }, - "expr": { - "type": "string" - } - }, - "required": [ - "expr" - ] + "$ref": "#/components/schemas/StopAfterIf" }, "stop_after_all_iters_if": { - "type": "object", - "properties": { - "skip_if_stopped": { - "type": "boolean" - }, - "expr": { - "type": "string" - } - }, - "required": [ - "expr" - ] + "$ref": "#/components/schemas/StopAfterIf" }, "skip_if": { "type": "object", @@ -20228,7 +26542,7 @@ ] }, "sleep": { - "$ref": "#/components/schemas/InputTransform" + "$ref": "#/components/schemas/schemas-InputTransform" }, "cache_ttl": { "type": "number" @@ -20272,7 +26586,7 @@ "type": "boolean" }, "user_groups_required": { - "$ref": "#/components/schemas/InputTransform" + "$ref": "#/components/schemas/schemas-InputTransform" }, "self_approval_disabled": { "type": "boolean" @@ -20310,7 +26624,7 @@ } }, "iterator": { - "$ref": "#/components/schemas/InputTransform" + "$ref": "#/components/schemas/schemas-InputTransform" }, "skip_failures": { "type": "boolean" @@ -20515,6 +26829,23 @@ } } }, + "StopAfterIf": { + "type": "object", + "properties": { + "skip_if_stopped": { + "type": "boolean" + }, + "expr": { + "type": "string" + }, + "error_message": { + "type": "string" + } + }, + "required": [ + "expr" + ] + }, "Retry": { "type": "object", "properties": { diff --git a/backend/windmill-api/openapi-deref.yaml b/backend/windmill-api/openapi-deref.yaml index c8893f824c..4c13a9c7f8 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.423.2 + version: 1.492.1 title: Windmill API contact: name: Windmill Team @@ -87,7 +87,7 @@ paths: - name: id in: path required: true - schema: &ref_30 + schema: &ref_34 type: integer responses: '200': @@ -233,24 +233,24 @@ paths: - name: before description: filter on started before (inclusive) timestamp in: query - schema: &ref_120 + schema: &ref_183 type: string format: date-time - name: after description: filter on created after (exclusive) timestamp in: query - schema: &ref_121 + schema: &ref_184 type: string format: date-time - name: username description: filter on exact username of user in: query - schema: &ref_130 + schema: &ref_189 type: string - name: operation description: filter on exact or prefix name of operation in: query - schema: &ref_131 + schema: &ref_190 type: string - name: operations in: query @@ -265,18 +265,23 @@ paths: - name: resource description: filter on exact or prefix name of resource in: query - schema: &ref_132 + schema: &ref_191 type: string - name: action_kind description: filter on type of operation in: query - schema: &ref_133 + schema: &ref_192 type: string enum: - Create - Update - Delete - Execute + - name: all_workspaces + in: query + description: get audit logs for all workspaces + schema: + type: boolean responses: '200': description: a list of audit logs @@ -302,12 +307,12 @@ paths: application/json: schema: type: object - properties: &ref_145 + properties: &ref_210 email: type: string password: type: string - required: &ref_146 + required: &ref_211 - email - password responses: @@ -375,6 +380,8 @@ paths: type: string is_admin: type: boolean + name: + type: string is_super_admin: type: boolean created_at: @@ -430,7 +437,7 @@ paths: application/json: schema: type: object - properties: &ref_147 + properties: &ref_212 is_admin: type: boolean operator: @@ -458,7 +465,7 @@ paths: - name: path in: path required: true - schema: &ref_23 + schema: &ref_26 type: string responses: '200': @@ -611,6 +618,8 @@ paths: properties: is_super_admin: type: boolean + is_devops: + type: boolean name: type: string responses: @@ -792,6 +801,44 @@ paths: text/plain: schema: type: string + /github_app/connected_repositories: + get: + summary: get connected repositories + operationId: getGlobalConnectedRepositories + tags: + - git_sync + responses: + '200': + description: connected repositories + content: + application/json: + schema: + type: array + items: &ref_331 + type: object + properties: + workspace_id: + type: string + installation_id: + type: number + account_id: + type: string + repositories: + type: array + items: + type: object + properties: + name: + type: string + url: + type: string + required: + - name + - url + required: + - installation_id + - account_id + - repositories /workspaces/list: get: summary: list all workspaces visible to me @@ -816,6 +863,8 @@ paths: type: string domain: type: string + color: + type: string required: &ref_8 - id - name @@ -846,7 +895,7 @@ paths: application/json: schema: type: object - properties: &ref_185 + properties: &ref_280 email: type: string workspaces: @@ -860,11 +909,55 @@ paths: type: string username: type: string + color: + type: string + operator_settings: + nullable: true + type: object + required: &ref_12 + - runs + - schedules + - resources + - variables + - triggers + - audit_logs + - groups + - folders + - workers + properties: &ref_13 + runs: + type: boolean + description: Whether operators can view runs + schedules: + type: boolean + description: Whether operators can view schedules + resources: + type: boolean + description: Whether operators can view resources + variables: + type: boolean + description: Whether operators can view variables + audit_logs: + type: boolean + description: Whether operators can view audit logs + triggers: + type: boolean + description: Whether operators can view triggers + groups: + type: boolean + description: Whether operators can view groups page + folders: + type: boolean + description: Whether operators can view folders page + workers: + type: boolean + description: Whether operators can view workers page required: - id - name - username - required: &ref_186 + - color + required: &ref_281 - email - workspaces /workspaces/list_as_superadmin: @@ -906,14 +999,16 @@ paths: application/json: schema: type: object - properties: &ref_187 + properties: &ref_282 id: type: string name: type: string username: type: string - required: &ref_188 + color: + type: string + required: &ref_283 - id - name responses: @@ -1143,29 +1238,46 @@ paths: content: application/json: schema: - type: array - items: - type: object - properties: &ref_230 - id: - type: integer - description: Unique identifier for the alert - alert_type: - type: string - description: Type of alert (e.g., critical_error) - message: - type: string - description: The message content of the alert - created_at: - type: string - format: date-time - description: Time when the alert was created - acknowledged: - type: boolean - nullable: true - description: >- - Acknowledgment status of the alert, can be true, false, - or null if not set + type: object + properties: + alerts: + type: array + items: + type: object + properties: &ref_29 + id: + type: integer + description: Unique identifier for the alert + alert_type: + type: string + description: Type of alert (e.g., critical_error) + message: + type: string + description: The message content of the alert + created_at: + type: string + format: date-time + description: Time when the alert was created + acknowledged: + type: boolean + nullable: true + description: >- + Acknowledgment status of the alert, can be true, + false, or null if not set + workspace_id: + type: string + nullable: true + description: >- + Workspace id if the alert is in the scope of a + workspace + total_rows: + type: integer + description: Total number of rows matching the query. + example: 100 + total_pages: + type: integer + description: Total number of pages based on the page size. + example: 10 /settings/critical_alerts/{id}/acknowledge: post: summary: Acknowledge a critical alert @@ -1356,12 +1468,12 @@ paths: type: array items: type: object - properties: &ref_223 + properties: &ref_318 name: type: string value: type: object - required: &ref_224 + required: &ref_319 - name - value /users/email: @@ -1383,9 +1495,15 @@ paths: operationId: refreshUserToken tags: - user + parameters: + - name: if_expiring_in_less_than_s + in: query + required: false + schema: + type: integer responses: '200': - description: free usage + description: new token content: text/plain: schema: @@ -1502,7 +1620,7 @@ paths: application/json: schema: type: object - properties: &ref_12 + properties: &ref_14 email: type: string login_type: @@ -1512,6 +1630,8 @@ paths: - github super_admin: type: boolean + devops: + type: boolean verified: type: boolean name: @@ -1522,7 +1642,7 @@ paths: type: string operator_only: type: boolean - required: &ref_13 + required: &ref_15 - email - login_type - super_admin @@ -1542,7 +1662,7 @@ paths: type: array items: type: object - properties: &ref_14 + properties: &ref_16 workspace_id: type: string email: @@ -1551,7 +1671,7 @@ paths: type: boolean operator: type: boolean - required: &ref_15 + required: &ref_17 - workspace_id - email - is_admin @@ -1576,6 +1696,154 @@ paths: type: object properties: *ref_10 required: *ref_11 + /w/{workspace}/github_app/token: + post: + summary: get github app token + operationId: getGithubAppToken + tags: + - workspace + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + requestBody: + description: jwt job token + required: true + content: + application/json: + schema: + type: object + properties: + job_token: + type: string + required: + - job_token + responses: + '200': + description: github app token + content: + application/json: + schema: + type: object + properties: + token: + type: string + required: + - token + /w/{workspace}/github_app/install_from_workspace: + post: + tags: + - Git Sync + summary: Install a GitHub installation from another workspace + operationId: installFromWorkspace + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + source_workspace_id: + type: string + description: The ID of the workspace containing the installation to copy + installation_id: + type: number + description: The ID of the GitHub installation to copy + required: + - source_workspace_id + - installation_id + responses: + '200': + description: Installation successfully copied + /w/{workspace}/github_app/installation/{installation_id}: + delete: + summary: Delete a GitHub installation from a workspace + operationId: deleteFromWorkspace + description: >- + Removes a GitHub installation from the specified workspace. Requires + admin privileges. + tags: + - Git Sync + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - name: installation_id + in: path + required: true + schema: + type: integer + format: int64 + description: The ID of the GitHub installation to delete + responses: + '200': + description: Installation successfully deleted + /w/{workspace}/github_app/export/{installationId}: + get: + summary: Export GitHub installation JWT token + description: >- + Exports the JWT token for a specific GitHub installation in the + workspace + operationId: exportInstallation + tags: + - Git Sync + parameters: + - name: workspace + in: path + required: true + schema: + type: string + - name: installationId + in: path + required: true + schema: + type: integer + responses: + '200': + description: Successfully exported the JWT token + content: + application/json: + schema: + type: object + properties: + jwt_token: + type: string + /w/{workspace}/github_app/import: + post: + summary: Import GitHub installation from JWT token + description: >- + Imports a GitHub installation from a JWT token exported from another + instance + operationId: importInstallation + tags: + - Git Sync + parameters: + - name: workspace + in: path + required: true + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - jwt_token + properties: + jwt_token: + type: string + responses: + '200': + description: Successfully imported the installation /users/accept_invite: post: summary: accept invite to workspace @@ -1886,6 +2154,32 @@ paths: text/plain: schema: type: string + /w/{workspace}/workspaces/change_workspace_color: + post: + summary: change workspace id + operationId: changeWorkspaceColor + tags: + - workspace + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + requestBody: + content: + application/json: + schema: + type: object + properties: + color: + type: string + responses: + '200': + description: status + content: + text/plain: + schema: + type: string /w/{workspace}/users/whois/{username}: get: summary: whois @@ -1911,6 +2205,36 @@ paths: type: object properties: *ref_10 required: *ref_11 + /w/{workspace}/workspaces/operator_settings: + post: + operationId: updateOperatorSettings + summary: Update operator settings for a workspace + description: >- + Updates the operator settings for a specific workspace. Requires + workspace admin privileges. + tags: + - workspace + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + requestBody: + required: true + content: + application/json: + schema: + nullable: true + type: object + required: *ref_12 + properties: *ref_13 + responses: + '200': + description: Operator settings updated successfully + content: + text/plain: + schema: + type: string /users/exists/{email}: get: summary: exists email @@ -1959,8 +2283,8 @@ paths: type: array items: type: object - properties: *ref_12 - required: *ref_13 + properties: *ref_14 + required: *ref_15 /w/{workspace}/workspaces/list_pending_invites: get: summary: list pending invites for a workspace @@ -1981,8 +2305,8 @@ paths: type: array items: type: object - properties: *ref_14 - required: *ref_15 + properties: *ref_16 + required: *ref_17 /w/{workspace}/workspaces/get_settings: get: summary: get settings @@ -2010,6 +2334,12 @@ paths: type: string slack_command_script: type: string + teams_team_id: + type: string + teams_command_script: + type: string + teams_team_name: + type: string auto_invite_domain: type: string auto_invite_operator: @@ -2018,36 +2348,64 @@ paths: type: boolean plan: type: string - automatic_billing: - type: boolean customer_id: type: string webhook: type: string deploy_to: type: string - ai_resource: + ai_config: type: object - properties: &ref_16 - path: - type: string - provider: - type: string - required: &ref_17 - - path - - provider - code_completion_enabled: - type: boolean + properties: &ref_20 + providers: + type: object + additionalProperties: + type: object + properties: &ref_197 + resource_path: + type: string + models: + type: array + items: + type: string + required: &ref_198 + - resource_path + - models + default_model: + type: object + properties: &ref_18 + model: + type: string + provider: + type: string + enum: &ref_196 + - openai + - azure_openai + - anthropic + - mistral + - deepseek + - googleai + - groq + - openrouter + - togetherai + - customai + required: &ref_19 + - model + - provider + code_completion_model: + type: object + properties: *ref_18 + required: *ref_19 error_handler: type: string error_handler_extra_args: type: object - additionalProperties: &ref_18 {} + additionalProperties: &ref_21 {} error_handler_muted_on_cancel: type: boolean large_file_storage: type: object - properties: &ref_19 + properties: &ref_22 type: type: string enum: @@ -2081,7 +2439,7 @@ paths: type: boolean git_sync: type: object - properties: &ref_20 + properties: &ref_23 include_path: type: array items: @@ -2102,11 +2460,12 @@ paths: - schedule - user - group + - trigger repositories: type: array items: type: object - properties: &ref_207 + properties: &ref_302 script_path: type: string git_repo_resource_path: @@ -2131,12 +2490,13 @@ paths: - schedule - user - group - required: &ref_208 + - trigger + required: &ref_303 - script_path - git_repo_resource_path deploy_ui: type: object - properties: &ref_21 + properties: &ref_24 include_path: type: array items: @@ -2152,11 +2512,12 @@ paths: - resource - variable - secret + - trigger default_app: type: string default_scripts: type: object - properties: &ref_22 + properties: &ref_25 order: type: array items: @@ -2168,9 +2529,16 @@ paths: default_script_content: additionalProperties: type: string + mute_critical_alerts: + type: boolean + color: + type: string + operator_settings: + nullable: true + type: object + required: *ref_12 + properties: *ref_13 required: - - code_completion_enabled - - automatic_billing - error_handler_muted_on_cancel /w/{workspace}/workspaces/get_deploy_to: get: @@ -2234,17 +2602,40 @@ paths: type: boolean usage: type: number - seats: - type: number - automatic_billing: - type: boolean + owner: + type: string + status: + type: string required: - premium - - automatic_billing - /w/{workspace}/workspaces/set_automatic_billing: + - owner + /w/{workspace}/workspaces/threshold_alert: + get: + summary: get threshold alert info + operationId: getThresholdAlert + tags: + - workspace + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + responses: + '200': + description: status + content: + application/json: + schema: + type: object + properties: + threshold_alert_amount: + type: number + last_alert_sent: + type: string + format: date-time post: - summary: set automatic billing - operationId: setAutomaticBilling + summary: set threshold alert info + operationId: setThresholdAlert tags: - workspace parameters: @@ -2253,19 +2644,15 @@ paths: required: true schema: *ref_0 requestBody: - description: automatic billing + description: threshold alert info required: true content: application/json: schema: type: object properties: - automatic_billing: - type: boolean - seats: + threshold_alert_amount: type: number - required: - - automatic_billing responses: '200': description: status @@ -2301,6 +2688,118 @@ paths: text/plain: schema: type: string + /w/{workspace}/workspaces/edit_teams_command: + post: + summary: edit teams command + operationId: editTeamsCommand + tags: + - workspace + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + requestBody: + description: WorkspaceInvite + required: true + content: + application/json: + schema: + type: object + properties: + slack_command_script: + type: string + responses: + '200': + description: status + content: + text/plain: + schema: + type: string + /w/{workspace}/workspaces/available_teams_ids: + get: + summary: list available teams ids + operationId: listAvailableTeamsIds + tags: + - workspace + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + responses: + '200': + description: status + content: + application/json: + schema: + type: array + items: + type: object + properties: + team_name: + type: string + team_id: + type: string + /w/{workspace}/workspaces/available_teams_channels: + get: + summary: list available teams channels + operationId: listAvailableTeamsChannels + tags: + - workspace + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + responses: + '200': + description: status + content: + application/json: + schema: + type: array + items: + type: object + properties: + channel_name: + type: string + channel_id: + type: string + service_url: + type: string + tenant_id: + type: string + /w/{workspace}/workspaces/connect_teams: + post: + summary: connect teams + operationId: connectTeams + tags: + - workspace + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + requestBody: + description: connect teams + required: true + content: + application/json: + schema: + type: object + properties: + team_id: + type: string + team_name: + type: string + responses: + '200': + description: status + content: + text/plain: + schema: + type: string /w/{workspace}/workspaces/run_slack_message_test_job: post: summary: run a job that sends a message to Slack @@ -2336,6 +2835,41 @@ paths: properties: job_uuid: type: string + /w/{workspace}/workspaces/run_teams_message_test_job: + post: + summary: run a job that sends a message to Teams + operationId: runTeamsMessageTestJob + tags: + - workspace + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + requestBody: + description: path to hub script to run and its corresponding args + required: true + content: + application/json: + schema: + type: object + properties: + hub_script_path: + type: string + channel: + type: string + test_msg: + type: string + responses: + '200': + description: status + content: + text/json: + schema: + type: object + properties: + job_uuid: + type: string /w/{workspace}/workspaces/edit_deploy_to: post: summary: edit deploy to @@ -2441,15 +2975,7 @@ paths: application/json: schema: type: object - required: - - code_completion_enabled - properties: - ai_resource: - type: object - properties: *ref_16 - required: *ref_17 - code_completion_enabled: - type: boolean + properties: *ref_20 responses: '200': description: status @@ -2472,20 +2998,10 @@ paths: '200': description: status content: - text/plain: + application/json: schema: type: object - properties: - ai_provider: - type: string - exists_ai_resource: - type: boolean - code_completion_enabled: - type: boolean - required: - - ai_provider - - exists_ai_resource - - code_completion_enabled + properties: *ref_20 /w/{workspace}/workspaces/edit_error_handler: post: summary: edit error handler @@ -2509,7 +3025,7 @@ paths: type: string error_handler_extra_args: type: object - additionalProperties: *ref_18 + additionalProperties: *ref_21 error_handler_muted_on_cancel: type: boolean responses: @@ -2540,7 +3056,7 @@ paths: properties: large_file_storage: type: object - properties: *ref_19 + properties: *ref_22 responses: '200': description: status @@ -2568,7 +3084,7 @@ paths: properties: git_sync_settings: type: object - properties: *ref_20 + properties: *ref_23 responses: '200': description: status @@ -2596,7 +3112,7 @@ paths: properties: deploy_ui_settings: type: object - properties: *ref_21 + properties: *ref_24 responses: '200': description: status @@ -2648,7 +3164,7 @@ paths: application/json: schema: type: object - properties: *ref_22 + properties: *ref_25 responses: '200': description: status @@ -2673,7 +3189,7 @@ paths: application/json: schema: type: object - properties: *ref_22 + properties: *ref_25 /w/{workspace}/workspaces/set_environment_variable: post: summary: set environment variable @@ -2799,7 +3315,7 @@ paths: application/json: schema: type: object - properties: *ref_19 + properties: *ref_22 /w/{workspace}/workspaces/usage: get: summary: get usage @@ -2841,9 +3357,27 @@ paths: type: boolean websocket_used: type: boolean + kafka_used: + type: boolean + nats_used: + type: boolean + postgres_used: + type: boolean + mqtt_used: + type: boolean + gcp_used: + type: boolean + sqs_used: + type: boolean required: - http_routes_used - websocket_used + - kafka_used + - nats_used + - postgres_used + - mqtt_used + - gcp_used + - sqs_used /w/{workspace}/users/list: get: summary: list users @@ -2886,7 +3420,7 @@ paths: type: array items: type: object - properties: &ref_144 + properties: &ref_209 email: type: string executions: @@ -2947,7 +3481,7 @@ paths: application/json: schema: type: object - properties: &ref_148 + properties: &ref_213 label: type: string expiration: @@ -2979,7 +3513,7 @@ paths: application/json: schema: type: object - properties: &ref_149 + properties: &ref_214 label: type: string expiration: @@ -2989,7 +3523,7 @@ paths: type: string workspace_id: type: string - required: &ref_150 + required: &ref_215 - impersonate_email responses: '201': @@ -3045,7 +3579,7 @@ paths: type: array items: type: object - properties: &ref_40 + properties: &ref_47 label: type: string expiration: @@ -3065,7 +3599,7 @@ paths: type: string email: type: string - required: &ref_41 + required: &ref_48 - token_prefix - created_at - last_used_at @@ -3114,7 +3648,7 @@ paths: application/json: schema: type: object - properties: &ref_153 + properties: &ref_218 path: type: string value: @@ -3130,7 +3664,7 @@ paths: expires_at: type: string format: date-time - required: &ref_154 + required: &ref_219 - path - value - is_secret @@ -3181,7 +3715,7 @@ paths: - name: path in: path required: true - schema: *ref_23 + schema: *ref_26 responses: '200': description: variable deleted @@ -3203,7 +3737,7 @@ paths: - name: path in: path required: true - schema: *ref_23 + schema: *ref_26 - name: already_encrypted in: query schema: @@ -3215,7 +3749,7 @@ paths: application/json: schema: type: object - properties: &ref_155 + properties: &ref_220 path: type: string value: @@ -3245,7 +3779,7 @@ paths: - name: path in: path required: true - schema: *ref_23 + schema: *ref_26 - name: decrypt_secret description: | ask to decrypt secret if this variable is secret @@ -3267,7 +3801,7 @@ paths: application/json: schema: type: object - properties: &ref_24 + properties: &ref_27 workspace_id: type: string path: @@ -3297,7 +3831,7 @@ paths: expires_at: type: string format: date-time - required: &ref_25 + required: &ref_28 - workspace_id - path - is_secret @@ -3316,7 +3850,7 @@ paths: - name: path in: path required: true - schema: *ref_23 + schema: *ref_26 responses: '200': description: variable @@ -3338,7 +3872,7 @@ paths: - name: path in: path required: true - schema: *ref_23 + schema: *ref_26 responses: '200': description: variable @@ -3378,8 +3912,8 @@ paths: type: array items: type: object - properties: *ref_24 - required: *ref_25 + properties: *ref_27 + required: *ref_28 /w/{workspace}/variables/list_contextual: get: summary: list contextual variables @@ -3400,7 +3934,7 @@ paths: type: array items: type: object - properties: &ref_151 + properties: &ref_216 name: type: string value: @@ -3409,11 +3943,141 @@ paths: type: string is_custom: type: boolean - required: &ref_152 + required: &ref_217 - name - value - description - is_custom + /w/{workspace}/workspaces/critical_alerts: + get: + summary: Get all critical alerts for this workspace + operationId: workspaceGetCriticalAlerts + tags: + - setting + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - in: query + name: page + schema: + type: integer + default: 1 + description: The page number to retrieve (minimum value is 1) + - in: query + name: page_size + schema: + type: integer + default: 10 + maximum: 100 + description: Number of alerts per page (maximum is 100) + - in: query + name: acknowledged + schema: + type: boolean + nullable: true + description: >- + Filter by acknowledgment status; true for acknowledged, false for + unacknowledged, and omit for all alerts + responses: + '200': + description: Successfully retrieved all critical alerts + content: + application/json: + schema: + type: object + properties: + alerts: + type: array + items: + type: object + properties: *ref_29 + total_rows: + type: integer + description: Total number of rows matching the query. + example: 100 + total_pages: + type: integer + description: Total number of pages based on the page size. + example: 10 + /w/{workspace}/workspaces/critical_alerts/{id}/acknowledge: + post: + summary: Acknowledge a critical alert for this workspace + operationId: workspaceAcknowledgeCriticalAlert + tags: + - setting + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - in: path + name: id + required: true + schema: + type: integer + description: The ID of the critical alert to acknowledge + responses: + '200': + description: Successfully acknowledged the critical alert + content: + application/json: + schema: + type: string + example: Critical alert acknowledged + /w/{workspace}/workspaces/critical_alerts/acknowledge_all: + post: + summary: Acknowledge all unacknowledged critical alerts for this workspace + operationId: workspaceAcknowledgeAllCriticalAlerts + tags: + - setting + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + responses: + '200': + description: Successfully acknowledged all unacknowledged critical alerts. + content: + application/json: + schema: + type: string + example: All unacknowledged critical alerts acknowledged + /w/{workspace}/workspaces/critical_alerts/mute: + post: + summary: Mute critical alert UI for this workspace + operationId: workspaceMuteCriticalAlertsUI + tags: + - setting + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + requestBody: + description: Boolean flag to mute critical alerts. + required: true + content: + application/json: + schema: + type: object + properties: + mute_critical_alerts: + type: boolean + description: Whether critical alerts should be muted. + example: true + responses: + '200': + description: Successfully updated mute critical alert settings. + content: + application/json: + schema: + type: string + example: >- + Updated mute critical alert UI settings for workspace: + workspace_id /oauth/login_callback/{client_name}: post: security: [] @@ -3425,7 +4089,7 @@ paths: - name: client_name in: path required: true - schema: &ref_26 + schema: &ref_30 type: string requestBody: description: Partially filled script @@ -3526,7 +4190,7 @@ paths: - name: client_name in: path required: true - schema: *ref_26 + schema: *ref_30 requestBody: description: code endpoint required: true @@ -3549,7 +4213,7 @@ paths: application/json: schema: type: object - properties: &ref_200 + properties: &ref_295 access_token: type: string expires_in: @@ -3560,7 +4224,7 @@ paths: type: array items: type: string - required: &ref_201 + required: &ref_296 - access_token /w/{workspace}/oauth/create_account: post: @@ -3611,7 +4275,7 @@ paths: - name: id in: path required: true - schema: &ref_27 + schema: &ref_31 type: integer requestBody: description: variable path @@ -3646,7 +4310,7 @@ paths: - name: id in: path required: true - schema: *ref_27 + schema: *ref_31 responses: '200': description: disconnected client @@ -3672,6 +4336,24 @@ paths: text/plain: schema: type: string + /w/{workspace}/oauth/disconnect_teams: + post: + summary: disconnect teams + operationId: disconnectTeams + tags: + - oauth + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + responses: + '200': + description: disconnected teams + content: + text/plain: + schema: + type: string /oauth/list_logins: get: summary: list oauth logins @@ -3743,6 +4425,95 @@ paths: type: array items: type: string + /teams/sync: + post: + operationId: syncTeams + summary: synchronize Microsoft Teams information (teams/channels) + tags: + - teams + responses: + '200': + description: Teams information successfully synchronized + content: + application/json: + schema: + type: array + items: + type: object + required: &ref_327 + - team_id + - team_name + - channels + properties: &ref_328 + team_id: + type: string + description: The unique identifier of the Microsoft Teams team + example: 19:abc123def456@thread.tacv2 + team_name: + type: string + description: The display name of the Microsoft Teams team + example: Engineering Team + channels: + type: array + description: List of channels within the team + items: + type: object + required: &ref_329 + - channel_id + - channel_name + - tenant_id + - service_url + properties: &ref_330 + channel_id: + type: string + description: The unique identifier of the channel + example: 19:channel123@thread.tacv2 + channel_name: + type: string + description: The display name of the channel + example: General + tenant_id: + type: string + description: The Microsoft Teams tenant identifier + example: 12345678-1234-1234-1234-123456789012 + service_url: + type: string + description: The service URL for the channel + example: >- + https://smba.trafficmanager.net/amer/12345678-1234-1234-1234-123456789012/ + /teams/activities: + post: + summary: send update to Microsoft Teams activity + description: Respond to a Microsoft Teams activity after a workspace command is run + operationId: sendMessageToConversation + tags: + - teams + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - conversation_id + - text + properties: + conversation_id: + type: string + description: The ID of the Teams conversation/activity + success: + type: boolean + description: Used for styling the card conditionally + default: true + text: + type: string + description: The message text to be sent in the Teams card + card_block: + type: object + description: The card block to be sent in the Teams card + responses: + '200': + description: Activity processed successfully /w/{workspace}/resources/create: post: summary: create resource @@ -3765,7 +4536,7 @@ paths: application/json: schema: type: object - properties: &ref_162 + properties: &ref_227 path: type: string value: {} @@ -3773,7 +4544,7 @@ paths: type: string resource_type: type: string - required: &ref_163 + required: &ref_228 - path - value - resource_type @@ -3798,7 +4569,7 @@ paths: - name: path in: path required: true - schema: *ref_23 + schema: *ref_26 responses: '200': description: resource deleted @@ -3820,7 +4591,7 @@ paths: - name: path in: path required: true - schema: *ref_23 + schema: *ref_26 requestBody: description: updated resource required: true @@ -3828,7 +4599,7 @@ paths: application/json: schema: type: object - properties: &ref_164 + properties: &ref_229 path: type: string description: @@ -3855,7 +4626,7 @@ paths: - name: path in: path required: true - schema: *ref_23 + schema: *ref_26 requestBody: description: updated resource required: true @@ -3886,7 +4657,7 @@ paths: - name: path in: path required: true - schema: *ref_23 + schema: *ref_26 responses: '200': description: resource @@ -3894,7 +4665,7 @@ paths: application/json: schema: type: object - properties: &ref_165 + properties: &ref_230 workspace_id: type: string path: @@ -3915,7 +4686,7 @@ paths: edited_at: type: string format: date-time - required: &ref_166 + required: &ref_231 - path - resource_type - is_oauth @@ -3933,7 +4704,7 @@ paths: - name: path in: path required: true - schema: *ref_23 + schema: *ref_26 - name: job_id description: job id in: query @@ -3960,7 +4731,7 @@ paths: - name: path in: path required: true - schema: *ref_23 + schema: *ref_26 responses: '200': description: resource value @@ -3981,7 +4752,7 @@ paths: - name: path in: path required: true - schema: *ref_23 + schema: *ref_26 responses: '200': description: does resource exists @@ -4031,7 +4802,7 @@ paths: type: array items: type: object - properties: &ref_167 + properties: &ref_232 workspace_id: type: string path: @@ -4062,7 +4833,7 @@ paths: edited_at: type: string format: date-time - required: &ref_168 + required: &ref_233 - path - resource_type - is_oauth @@ -4109,7 +4880,7 @@ paths: - name: name in: path required: true - schema: &ref_103 + schema: &ref_163 type: string responses: '200': @@ -4146,7 +4917,7 @@ paths: application/json: schema: type: object - properties: &ref_28 + properties: &ref_32 workspace_id: type: string name: @@ -4161,7 +4932,7 @@ paths: format: date-time format_extension: type: string - required: &ref_29 + required: &ref_33 - name responses: '201': @@ -4201,7 +4972,7 @@ paths: - name: path in: path required: true - schema: *ref_23 + schema: *ref_26 responses: '200': description: resource_type deleted @@ -4223,7 +4994,7 @@ paths: - name: path in: path required: true - schema: *ref_23 + schema: *ref_26 requestBody: description: updated resource_type required: true @@ -4231,7 +5002,7 @@ paths: application/json: schema: type: object - properties: &ref_169 + properties: &ref_234 schema: {} description: type: string @@ -4256,7 +5027,7 @@ paths: - name: path in: path required: true - schema: *ref_23 + schema: *ref_26 responses: '200': description: resource_type deleted @@ -4264,8 +5035,8 @@ paths: application/json: schema: type: object - properties: *ref_28 - required: *ref_29 + properties: *ref_32 + required: *ref_33 /w/{workspace}/resources/type/exists/{path}: get: summary: does resource_type exists @@ -4280,7 +5051,7 @@ paths: - name: path in: path required: true - schema: *ref_23 + schema: *ref_26 responses: '200': description: does resource_type exist @@ -4308,8 +5079,8 @@ paths: type: array items: type: object - properties: *ref_28 - required: *ref_29 + properties: *ref_32 + required: *ref_33 /w/{workspace}/resources/type/listnames: get: summary: list resource_types names @@ -4448,7 +5219,7 @@ paths: - name: id in: path required: true - schema: *ref_30 + schema: *ref_34 responses: '200': description: flow @@ -4459,51 +5230,51 @@ paths: properties: flow: type: object - properties: &ref_54 + properties: &ref_61 summary: type: string description: type: string value: type: object - properties: &ref_66 + properties: &ref_78 modules: type: array items: type: object - properties: &ref_33 + properties: &ref_37 id: type: string value: - oneOf: &ref_251 + oneOf: &ref_352 - type: object - properties: &ref_235 + properties: &ref_336 input_transforms: type: object additionalProperties: - oneOf: &ref_31 + oneOf: &ref_35 - type: object - properties: &ref_231 + properties: &ref_332 value: {} type: type: string enum: - javascript - required: &ref_232 + required: &ref_333 - expr - type - type: object - properties: &ref_233 + properties: &ref_334 expr: type: string type: type: string enum: - javascript - required: &ref_234 + required: &ref_335 - expr - type - discriminator: &ref_32 + discriminator: &ref_36 propertyName: type mapping: static: '#/components/schemas/StaticTransform' @@ -4524,6 +5295,7 @@ paths: - bigquery - snowflake - mssql + - oracledb - graphql - nativets - php @@ -4545,18 +5317,18 @@ paths: type: string is_trigger: type: boolean - required: &ref_236 + required: &ref_337 - type - content - language - input_transforms - type: object - properties: &ref_237 + properties: &ref_338 input_transforms: type: object additionalProperties: - oneOf: *ref_31 - discriminator: *ref_32 + oneOf: *ref_35 + discriminator: *ref_36 path: type: string hash: @@ -4569,40 +5341,40 @@ paths: type: string is_trigger: type: boolean - required: &ref_238 + required: &ref_339 - type - path - input_transforms - type: object - properties: &ref_239 + properties: &ref_340 input_transforms: type: object additionalProperties: - oneOf: *ref_31 - discriminator: *ref_32 + oneOf: *ref_35 + discriminator: *ref_36 path: type: string type: type: string enum: - flow - required: &ref_240 + required: &ref_341 - type - path - input_transforms - type: object - properties: &ref_241 + properties: &ref_342 modules: type: array items: type: object - properties: *ref_33 - required: &ref_34 + properties: *ref_37 + required: &ref_38 - value - id iterator: - oneOf: *ref_31 - discriminator: *ref_32 + oneOf: *ref_35 + discriminator: *ref_36 skip_failures: type: boolean type: @@ -4613,19 +5385,19 @@ paths: type: boolean parallelism: type: integer - required: &ref_242 + required: &ref_343 - modules - iterator - skip_failures - type - type: object - properties: &ref_243 + properties: &ref_344 modules: type: array items: type: object - properties: *ref_33 - required: *ref_34 + properties: *ref_37 + required: *ref_38 skip_failures: type: boolean type: @@ -4636,12 +5408,12 @@ paths: type: boolean parallelism: type: integer - required: &ref_244 + required: &ref_345 - modules - skip_failures - type - type: object - properties: &ref_245 + properties: &ref_346 branches: type: array items: @@ -4655,8 +5427,8 @@ paths: type: array items: type: object - properties: *ref_33 - required: *ref_34 + properties: *ref_37 + required: *ref_38 required: - modules - expr @@ -4664,20 +5436,20 @@ paths: type: array items: type: object - properties: *ref_33 - required: *ref_34 + properties: *ref_37 + required: *ref_38 required: - modules type: type: string enum: - branchone - required: &ref_246 + required: &ref_347 - branches - default - type - type: object - properties: &ref_247 + properties: &ref_348 branches: type: array items: @@ -4691,8 +5463,8 @@ paths: type: array items: type: object - properties: *ref_33 - required: *ref_34 + properties: *ref_37 + required: *ref_38 required: - modules - expr @@ -4702,20 +5474,20 @@ paths: - branchall parallel: type: boolean - required: &ref_248 + required: &ref_349 - branches - type - type: object - properties: &ref_249 + properties: &ref_350 type: type: string enum: - identity flow: type: boolean - required: &ref_250 + required: &ref_351 - type - discriminator: &ref_252 + discriminator: &ref_353 propertyName: type mapping: rawscript: '#/components/schemas/RawScript' @@ -4728,22 +5500,19 @@ paths: identity: '#/components/schemas/Identity' stop_after_if: type: object - properties: + properties: &ref_39 skip_if_stopped: type: boolean expr: type: string - required: + error_message: + type: string + required: &ref_40 - expr stop_after_all_iters_if: type: object - properties: - skip_if_stopped: - type: boolean - expr: - type: string - required: - - expr + properties: *ref_39 + required: *ref_40 skip_if: type: object properties: @@ -4752,8 +5521,8 @@ paths: required: - expr sleep: - oneOf: *ref_31 - discriminator: *ref_32 + oneOf: *ref_35 + discriminator: *ref_36 cache_ttl: type: number timeout: @@ -4783,8 +5552,8 @@ paths: user_auth_required: type: boolean user_groups_required: - oneOf: *ref_31 - discriminator: *ref_32 + oneOf: *ref_35 + discriminator: *ref_36 self_approval_disabled: type: boolean hide_cancel: @@ -4797,7 +5566,7 @@ paths: type: boolean retry: type: object - properties: &ref_95 + properties: &ref_114 constant: type: object properties: @@ -4818,15 +5587,15 @@ paths: type: integer minimum: 0 maximum: 100 - required: *ref_34 + required: *ref_38 failure_module: type: object - properties: *ref_33 - required: *ref_34 + properties: *ref_37 + required: *ref_38 preprocessor_module: type: object - properties: *ref_33 - required: *ref_34 + properties: *ref_37 + required: *ref_38 same_worker: type: boolean concurrent_limit: @@ -4843,11 +5612,11 @@ paths: type: number early_return: type: string - required: &ref_67 + required: &ref_79 - modules schema: type: object - required: &ref_55 + required: &ref_62 - summary - value /apps/hub/list: @@ -4900,7 +5669,7 @@ paths: - name: id in: path required: true - schema: *ref_30 + schema: *ref_34 responses: '200': description: app @@ -4920,6 +5689,108 @@ paths: - value required: - app + /apps_u/public_app_by_custom_path/{custom_path}: + get: + summary: get public app by custom path + operationId: getPublicAppByCustomPath + tags: + - app + parameters: + - name: custom_path + in: path + required: true + schema: &ref_74 + type: string + responses: + '200': + description: app details + content: + application/json: + schema: + allOf: + - type: object + properties: &ref_69 + id: + type: integer + workspace_id: + type: string + path: + type: string + summary: + type: string + versions: + type: array + items: + type: integer + created_by: + type: string + created_at: + type: string + format: date-time + value: + type: object + policy: + type: object + properties: &ref_68 + triggerables: + type: object + additionalProperties: + type: object + triggerables_v2: + type: object + additionalProperties: + type: object + s3_inputs: + type: array + items: + type: object + allowed_s3_keys: + type: array + items: + type: object + properties: + s3_path: + type: string + resource: + type: string + execution_mode: + type: string + enum: + - viewer + - publisher + - anonymous + on_behalf_of: + type: string + on_behalf_of_email: + type: string + execution_mode: + type: string + enum: + - viewer + - publisher + - anonymous + extra_perms: + type: object + additionalProperties: + type: boolean + custom_path: + type: string + required: &ref_70 + - id + - workspace_id + - path + - summary + - versions + - created_by + - created_at + - value + - policy + - execution_mode + - extra_perms + - type: object + properties: + workspace_id: + type: string /scripts/hub/get/{path}: get: summary: get hub script content by path @@ -4930,7 +5801,7 @@ paths: - name: path in: path required: true - schema: &ref_35 + schema: &ref_41 type: string responses: '200': @@ -4949,7 +5820,7 @@ paths: - name: path in: path required: true - schema: *ref_35 + schema: *ref_41 responses: '200': description: script details @@ -5019,14 +5890,12 @@ paths: version_id: type: number kind: - name: kind - schema: &ref_36 - type: string - enum: - - script - - failure - - trigger - - approval + type: string + enum: &ref_42 + - script + - failure + - trigger + - approval votes: type: number views: @@ -5092,8 +5961,8 @@ paths: app: type: string kind: - name: kind - schema: *ref_36 + type: string + enum: *ref_42 score: type: number required: @@ -5154,12 +6023,12 @@ paths: - name: order_desc description: order by desc order (default true) in: query - schema: &ref_52 + schema: &ref_59 type: boolean - name: created_by description: mask to filter exact matching user creator in: query - schema: &ref_53 + schema: &ref_60 type: string - name: path_start description: mask to filter matching starting path @@ -5178,8 +6047,7 @@ paths: type: string - name: last_parent_hash description: > - mask to filter scripts whom last parent in the chain has exact - hash. + mask to filter scripts whom last parent in the chain has exact hash. Beware that each script stores only a limited number of parents. Hence @@ -5214,7 +6082,7 @@ paths: when multiple archived hash share the same path, only the ones with the latest create_at - are + are ed. in: query @@ -5273,7 +6141,7 @@ paths: type: array items: type: object - properties: &ref_37 + properties: &ref_44 workspace_id: type: string hash: @@ -5316,7 +6184,7 @@ paths: type: string language: type: string - enum: + enum: &ref_43 - python3 - deno - go @@ -5327,12 +6195,16 @@ paths: - bigquery - snowflake - mssql + - oracledb - graphql - nativets - bun - php - rust - ansible + - csharp + - nu + - java kind: type: string enum: @@ -5341,6 +6213,7 @@ paths: - trigger - command - approval + - preprocessor starred: type: boolean tag: @@ -5381,7 +6254,9 @@ paths: type: string has_preprocessor: type: boolean - required: &ref_38 + on_behalf_of_email: + type: string + required: &ref_45 - hash - path - summary @@ -5479,7 +6354,7 @@ paths: - name: path in: path required: true - schema: *ref_35 + schema: *ref_41 responses: '200': description: draft deleted @@ -5505,7 +6380,7 @@ paths: application/json: schema: type: object - properties: &ref_42 + properties: &ref_49 path: type: string parent_hash: @@ -5524,23 +6399,7 @@ paths: type: string language: type: string - enum: - - python3 - - deno - - go - - bash - - powershell - - postgresql - - mysql - - bigquery - - snowflake - - mssql - - graphql - - nativets - - bun - - php - - rust - - ansible + enum: *ref_43 kind: type: string enum: @@ -5549,6 +6408,7 @@ paths: - trigger - command - approval + - preprocessor tag: type: string draft_only: @@ -5587,7 +6447,9 @@ paths: type: string has_preprocessor: type: boolean - required: &ref_43 + on_behalf_of_email: + type: string + required: &ref_50 - path - summary - description @@ -5614,7 +6476,7 @@ paths: - name: path in: path required: true - schema: *ref_35 + schema: *ref_41 requestBody: description: Workspace error handler enabled required: true @@ -5640,6 +6502,17 @@ paths: operationId: getCustomTags tags: - worker + parameters: + - name: workspace + in: query + schema: + type: string + required: false + - name: show_workspace_restriction + in: query + schema: + type: boolean + required: false responses: '200': description: list of custom tags @@ -5691,7 +6564,7 @@ paths: - name: path in: path required: true - schema: *ref_35 + schema: *ref_41 responses: '200': description: script archived @@ -5713,7 +6586,7 @@ paths: - name: hash in: path required: true - schema: &ref_39 + schema: &ref_46 type: string responses: '200': @@ -5722,8 +6595,8 @@ paths: application/json: schema: type: object - properties: *ref_37 - required: *ref_38 + properties: *ref_44 + required: *ref_45 /w/{workspace}/scripts/delete/h/{hash}: post: summary: delete script by hash (erase content but keep hash, require admin) @@ -5738,7 +6611,7 @@ paths: - name: hash in: path required: true - schema: *ref_39 + schema: *ref_46 responses: '200': description: script details @@ -5746,11 +6619,11 @@ paths: application/json: schema: type: object - properties: *ref_37 - required: *ref_38 + properties: *ref_44 + required: *ref_45 /w/{workspace}/scripts/delete/p/{path}: post: - summary: delete all scripts at a given path (require admin) + summary: delete script at a given path (require admin) operationId: deleteScriptByPath tags: - script @@ -5762,7 +6635,12 @@ paths: - name: path in: path required: true - schema: *ref_35 + schema: *ref_41 + - name: keep_captures + description: keep captures + in: query + schema: + type: boolean responses: '200': description: script path @@ -5784,7 +6662,7 @@ paths: - name: path in: path required: true - schema: *ref_35 + schema: *ref_41 - name: with_starred_info in: query schema: @@ -5796,8 +6674,8 @@ paths: application/json: schema: type: object - properties: *ref_37 - required: *ref_38 + properties: *ref_44 + required: *ref_45 /w/{workspace}/scripts/get_triggers_count/{path}: get: summary: get triggers count of script @@ -5812,7 +6690,7 @@ paths: - name: path in: path required: true - schema: *ref_35 + schema: *ref_41 responses: '200': description: triggers count @@ -5820,7 +6698,7 @@ paths: application/json: schema: type: object - properties: &ref_59 + properties: &ref_66 primary_schedule: type: object properties: @@ -5836,6 +6714,18 @@ paths: type: number websocket_count: type: number + postgres_count: + type: number + kafka_count: + type: number + nats_count: + type: number + mqtt_count: + type: number + gcp_count: + type: number + sqs_count: + type: number /w/{workspace}/scripts/list_tokens/{path}: get: summary: get tokens with script scope @@ -5850,7 +6740,7 @@ paths: - name: path in: path required: true - schema: *ref_35 + schema: *ref_41 responses: '200': description: tokens list @@ -5860,8 +6750,8 @@ paths: type: array items: type: object - properties: *ref_40 - required: *ref_41 + properties: *ref_47 + required: *ref_48 /w/{workspace}/scripts/get/draft/{path}: get: summary: get script by path with draft @@ -5876,23 +6766,23 @@ paths: - name: path in: path required: true - schema: *ref_35 + schema: *ref_41 responses: '200': description: script details content: application/json: schema: - allOf: &ref_137 + allOf: &ref_202 - type: object - properties: *ref_42 - required: *ref_43 + properties: *ref_49 + required: *ref_50 - type: object properties: draft: type: object - properties: *ref_42 - required: *ref_43 + properties: *ref_49 + required: *ref_50 hash: type: string required: @@ -5911,7 +6801,7 @@ paths: - name: path in: path required: true - schema: *ref_35 + schema: *ref_41 responses: '200': description: script history @@ -5921,13 +6811,37 @@ paths: type: array items: type: object - properties: &ref_44 + properties: &ref_51 script_hash: type: string deployment_msg: type: string - required: &ref_45 + required: &ref_52 - script_hash + /w/{workspace}/scripts/list_paths_from_workspace_runnable/{path}: + get: + summary: list script paths using provided script as a relative import + operationId: listScriptPathsFromWorkspaceRunnable + tags: + - script + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - name: path + in: path + required: true + schema: *ref_41 + responses: + '200': + description: list of script paths + content: + application/json: + schema: + type: array + items: + type: string /w/{workspace}/scripts/get_latest_version/{path}: get: summary: get scripts's latest version (hash) @@ -5940,7 +6854,7 @@ paths: - name: path in: path required: true - schema: *ref_35 + schema: *ref_41 tags: - script responses: @@ -5948,11 +6862,10 @@ paths: description: Script version/hash content: application/json: - required: false schema: type: object - properties: *ref_44 - required: *ref_45 + properties: *ref_51 + required: *ref_52 /w/{workspace}/scripts/history_update/h/{hash}/p/{path}: post: summary: update history of a script @@ -5967,11 +6880,11 @@ paths: - name: hash in: path required: true - schema: *ref_39 + schema: *ref_46 - name: path in: path required: true - schema: *ref_35 + schema: *ref_41 requestBody: description: Script deployment message required: true @@ -6003,7 +6916,7 @@ paths: - name: path in: path required: true - schema: *ref_35 + schema: *ref_41 responses: '200': description: script content @@ -6027,12 +6940,12 @@ paths: - name: token in: path required: true - schema: &ref_126 + schema: &ref_187 type: string - name: path in: path required: true - schema: *ref_35 + schema: *ref_41 responses: '200': description: script content @@ -6054,7 +6967,7 @@ paths: - name: path in: path required: true - schema: *ref_35 + schema: *ref_41 responses: '200': description: does it exists @@ -6076,7 +6989,7 @@ paths: - name: hash in: path required: true - schema: *ref_39 + schema: *ref_46 - name: with_starred_info in: query schema: @@ -6088,8 +7001,8 @@ paths: application/json: schema: type: object - properties: *ref_37 - required: *ref_38 + properties: *ref_44 + required: *ref_45 /w/{workspace}/scripts/raw/h/{path}: get: summary: raw script by hash @@ -6104,7 +7017,7 @@ paths: - name: path in: path required: true - schema: *ref_35 + schema: *ref_41 responses: '200': description: script content @@ -6126,7 +7039,7 @@ paths: - name: hash in: path required: true - schema: *ref_39 + schema: *ref_46 responses: '200': description: script details @@ -6139,6 +7052,68 @@ paths: type: string lock_error_logs: type: string + /w/{workspace}/jobs/list_selected_job_groups: + post: + summary: list selected jobs script/flow schemas grouped by (kind, path) + operationId: listSelectedJobGroups + tags: + - job + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + requestBody: + description: script args + required: true + content: + application/json: + schema: + type: array + items: + type: string + format: uuid + responses: + '200': + description: result + content: + text/plain: + schema: + type: array + items: + type: object + properties: + kind: + type: string + enum: + - script + - flow + script_path: + type: string + latest_schema: + type: object + schemas: + type: array + items: + type: object + properties: + schema: + type: object + script_hash: + type: string + job_ids: + type: array + items: + type: string + required: + - schema + - script_hash + - job_ids + required: + - kind + - script_path + - latest_schema + - schemas /w/{workspace}/jobs/run/p/{path}: post: summary: run script by path @@ -6153,7 +7128,7 @@ paths: - name: path in: path required: true - schema: *ref_35 + schema: *ref_41 - name: scheduled_for description: when to schedule this job (leave empty for immediate run) in: query @@ -6175,20 +7150,20 @@ paths: The parent job that is at the origin and responsible for the execution of this script if any in: query - schema: &ref_46 + schema: &ref_53 type: string format: uuid - name: tag description: Override the tag to use in: query - schema: &ref_48 + schema: &ref_55 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_49 + schema: &ref_56 type: string - name: job_id description: >- @@ -6197,7 +7172,7 @@ paths: queue or as a completed job, the request to create one will fail (Bad Request) in: query - schema: &ref_47 + schema: &ref_54 type: string format: uuid - name: invisible_to_owner @@ -6212,7 +7187,7 @@ paths: application/json: schema: type: object - additionalProperties: *ref_18 + additionalProperties: *ref_21 responses: '201': description: job created @@ -6235,13 +7210,13 @@ paths: - name: path in: path required: true - schema: *ref_35 + schema: *ref_41 - 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_46 + schema: *ref_53 - name: job_id description: >- The job id to assign to the created job. if missing, job is chosen @@ -6249,7 +7224,7 @@ paths: queue or as a completed job, the request to create one will fail (Bad Request) in: query - schema: *ref_47 + schema: *ref_54 - name: include_header description: > List of headers's keys (separated with ',') whove value are added to @@ -6258,14 +7233,14 @@ paths: Header's key lowercased and '-'' replaced to '_' such that 'Content-Type' becomes the 'content_type' arg key in: query - schema: &ref_50 + schema: &ref_57 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_51 + schema: &ref_58 type: string requestBody: description: script args @@ -6274,7 +7249,7 @@ paths: application/json: schema: type: object - additionalProperties: *ref_18 + additionalProperties: *ref_21 responses: '200': description: job result @@ -6295,23 +7270,23 @@ paths: - name: path in: path required: true - schema: *ref_35 + schema: *ref_41 - 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_46 + schema: *ref_53 - name: tag description: Override the tag to use in: query - schema: *ref_48 + schema: *ref_55 - 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_49 + schema: *ref_56 - name: job_id description: >- The job id to assign to the created job. if missing, job is chosen @@ -6319,7 +7294,7 @@ paths: queue or as a completed job, the request to create one will fail (Bad Request) in: query - schema: *ref_47 + schema: *ref_54 - name: include_header description: > List of headers's keys (separated with ',') whove value are added to @@ -6328,13 +7303,13 @@ paths: Header's key lowercased and '-'' replaced to '_' such that 'Content-Type' becomes the 'content_type' arg key in: query - schema: *ref_50 + schema: *ref_57 - 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_51 + schema: *ref_58 requestBody: description: script args required: true @@ -6342,7 +7317,7 @@ paths: application/json: schema: type: object - additionalProperties: *ref_18 + additionalProperties: *ref_21 responses: '200': description: job result @@ -6362,23 +7337,23 @@ paths: - name: path in: path required: true - schema: *ref_35 + schema: *ref_41 - 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_46 + schema: *ref_53 - name: tag description: Override the tag to use in: query - schema: *ref_48 + schema: *ref_55 - 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_49 + schema: *ref_56 - name: job_id description: >- The job id to assign to the created job. if missing, job is chosen @@ -6386,7 +7361,7 @@ paths: queue or as a completed job, the request to create one will fail (Bad Request) in: query - schema: *ref_47 + schema: *ref_54 - name: include_header description: > List of headers's keys (separated with ',') whove value are added to @@ -6395,13 +7370,13 @@ paths: Header's key lowercased and '-'' replaced to '_' such that 'Content-Type' becomes the 'content_type' arg key in: query - schema: *ref_50 + schema: *ref_57 - 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_51 + schema: *ref_58 - name: payload description: > The base64 encoded payload that has been encoded as a JSON. e.g how @@ -6409,7 +7384,7 @@ paths: `encodeURIComponent(btoa(JSON.stringify({a: 2})))` in: query - schema: &ref_94 + schema: &ref_113 type: string responses: '200': @@ -6431,7 +7406,7 @@ paths: - name: path in: path required: true - schema: *ref_35 + schema: *ref_41 - name: include_header description: > List of headers's keys (separated with ',') whove value are added to @@ -6440,13 +7415,13 @@ paths: Header's key lowercased and '-'' replaced to '_' such that 'Content-Type' becomes the 'content_type' arg key in: query - schema: *ref_50 + schema: *ref_57 - 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_51 + schema: *ref_58 - name: job_id description: >- The job id to assign to the created job. if missing, job is chosen @@ -6454,7 +7429,7 @@ paths: queue or as a completed job, the request to create one will fail (Bad Request) in: query - schema: *ref_47 + schema: *ref_54 requestBody: description: script args required: true @@ -6462,7 +7437,7 @@ paths: application/json: schema: type: object - additionalProperties: *ref_18 + additionalProperties: *ref_21 responses: '200': description: job result @@ -6483,7 +7458,7 @@ paths: - name: path in: path required: true - schema: *ref_35 + schema: *ref_41 - name: include_header description: > List of headers's keys (separated with ',') whove value are added to @@ -6492,13 +7467,13 @@ paths: Header's key lowercased and '-'' replaced to '_' such that 'Content-Type' becomes the 'content_type' arg key in: query - schema: *ref_50 + schema: *ref_57 - 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_51 + schema: *ref_58 - name: job_id description: >- The job id to assign to the created job. if missing, job is chosen @@ -6506,7 +7481,7 @@ paths: queue or as a completed job, the request to create one will fail (Bad Request) in: query - schema: *ref_47 + schema: *ref_54 requestBody: description: script args required: true @@ -6514,7 +7489,7 @@ paths: application/json: schema: type: object - additionalProperties: *ref_18 + additionalProperties: *ref_21 responses: '200': description: job result @@ -6617,11 +7592,11 @@ paths: - name: order_desc description: order by desc order (default true) in: query - schema: *ref_52 + schema: *ref_59 - name: created_by description: mask to filter exact matching user creator in: query - schema: *ref_53 + schema: *ref_60 - name: path_start description: mask to filter matching starting path in: query @@ -6675,12 +7650,12 @@ paths: type: array items: allOf: - - allOf: &ref_58 + - allOf: &ref_65 - type: object - properties: *ref_54 - required: *ref_55 + properties: *ref_61 + required: *ref_62 - type: object - properties: &ref_190 + properties: &ref_285 workspace_id: type: string path: @@ -6694,7 +7669,7 @@ paths: type: boolean extra_perms: type: object - additionalProperties: &ref_189 + additionalProperties: &ref_284 type: boolean starred: type: boolean @@ -6712,12 +7687,18 @@ paths: type: number visible_to_runner_only: type: boolean - required: &ref_191 + on_behalf_of_email: + type: string + required: &ref_286 - path - edited_by - edited_at - archived - extra_perms + - type: object + properties: + lock_error_logs: + type: string - type: object properties: has_draft: @@ -6736,7 +7717,7 @@ paths: - name: path in: path required: true - schema: *ref_35 + schema: *ref_41 tags: - flow responses: @@ -6748,7 +7729,7 @@ paths: type: array items: type: object - properties: &ref_56 + properties: &ref_63 id: type: integer created_at: @@ -6756,7 +7737,7 @@ paths: format: date-time deployment_msg: type: string - required: &ref_57 + required: &ref_64 - id - created_at /w/{workspace}/flows/get_latest_version/{path}: @@ -6771,7 +7752,7 @@ paths: - name: path in: path required: true - schema: *ref_35 + schema: *ref_41 tags: - flow responses: @@ -6779,11 +7760,42 @@ paths: description: Flow version content: application/json: - required: false schema: type: object - properties: *ref_56 - required: *ref_57 + properties: *ref_63 + required: *ref_64 + /w/{workspace}/flows/list_paths_from_workspace_runnable/{runnable_kind}/{path}: + get: + summary: list flow paths from workspace runnable + operationId: listFlowPathsFromWorkspaceRunnable + tags: + - flow + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - name: runnable_kind + in: path + required: true + schema: &ref_73 + type: string + enum: + - script + - flow + - name: path + in: path + required: true + schema: *ref_41 + responses: + '200': + description: list of flow paths + content: + application/json: + schema: + type: array + items: + type: string /w/{workspace}/flows/get/v/{version}/p/{path}: get: summary: get flow version @@ -6793,8 +7805,7 @@ paths: in: path required: true schema: *ref_0 - - type: string - name: version + - name: version in: path required: true schema: @@ -6802,7 +7813,7 @@ paths: - name: path in: path required: true - schema: *ref_35 + schema: *ref_41 tags: - flow responses: @@ -6811,7 +7822,7 @@ paths: content: application/json: schema: - allOf: *ref_58 + allOf: *ref_65 /w/{workspace}/flows/history_update/v/{version}/p/{path}: post: summary: update flow history @@ -6821,8 +7832,7 @@ paths: in: path required: true schema: *ref_0 - - type: string - name: version + - name: version in: path required: true schema: @@ -6830,7 +7840,7 @@ paths: - name: path in: path required: true - schema: *ref_35 + schema: *ref_41 requestBody: description: Flow deployment message required: true @@ -6866,7 +7876,7 @@ paths: - name: path in: path required: true - schema: *ref_35 + schema: *ref_41 - name: with_starred_info in: query schema: @@ -6877,7 +7887,32 @@ paths: content: application/json: schema: - allOf: *ref_58 + allOf: *ref_65 + /w/{workspace}/flows/deployment_status/p/{path}: + get: + summary: get flow deployment status + operationId: getFlowDeploymentStatus + tags: + - flow + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - name: path + in: path + required: true + schema: *ref_41 + responses: + '200': + description: flow status + content: + application/json: + schema: + type: object + properties: + lock_error_logs: + type: string /w/{workspace}/flows/get_triggers_count/{path}: get: summary: get triggers count of flow @@ -6892,7 +7927,7 @@ paths: - name: path in: path required: true - schema: *ref_35 + schema: *ref_41 responses: '200': description: triggers count @@ -6900,7 +7935,7 @@ paths: application/json: schema: type: object - properties: *ref_59 + properties: *ref_66 /w/{workspace}/flows/list_tokens/{path}: get: summary: get tokens with flow scope @@ -6915,7 +7950,7 @@ paths: - name: path in: path required: true - schema: *ref_35 + schema: *ref_41 responses: '200': description: tokens list @@ -6925,8 +7960,8 @@ paths: type: array items: type: object - properties: *ref_40 - required: *ref_41 + properties: *ref_47 + required: *ref_48 /w/{workspace}/flows/toggle_workspace_error_handler/{path}: post: summary: Toggle ON and OFF the workspace error handler for a given flow @@ -6941,7 +7976,7 @@ paths: - name: path in: path required: true - schema: *ref_35 + schema: *ref_41 requestBody: description: Workspace error handler enabled required: true @@ -6973,7 +8008,7 @@ paths: - name: path in: path required: true - schema: *ref_35 + schema: *ref_41 responses: '200': description: flow details with draft @@ -6981,11 +8016,11 @@ paths: application/json: schema: allOf: - - allOf: *ref_58 + - allOf: *ref_65 - type: object properties: draft: - allOf: *ref_58 + allOf: *ref_65 /w/{workspace}/flows/exists/{path}: get: summary: exists flow by path @@ -7000,7 +8035,7 @@ paths: - name: path in: path required: true - schema: *ref_35 + schema: *ref_41 responses: '200': description: flow details @@ -7026,10 +8061,10 @@ paths: application/json: schema: allOf: - - allOf: &ref_60 + - allOf: &ref_67 - type: object - properties: *ref_54 - required: *ref_55 + properties: *ref_61 + required: *ref_62 - type: object properties: path: @@ -7046,6 +8081,8 @@ paths: type: number visible_to_runner_only: type: boolean + on_behalf_of_email: + type: string required: - path - type: object @@ -7075,7 +8112,7 @@ paths: - name: path in: path required: true - schema: *ref_35 + schema: *ref_41 requestBody: description: Partially filled flow required: true @@ -7083,7 +8120,7 @@ paths: application/json: schema: allOf: - - allOf: *ref_60 + - allOf: *ref_67 - type: object properties: deployment_message: @@ -7109,7 +8146,7 @@ paths: - name: path in: path required: true - schema: *ref_35 + schema: *ref_41 requestBody: description: archiveFlow required: true @@ -7141,7 +8178,12 @@ paths: - name: path in: path required: true - schema: *ref_35 + schema: *ref_41 + - name: keep_captures + description: keep captures + in: query + schema: + type: boolean responses: '200': description: flow delete @@ -7171,11 +8213,11 @@ paths: - name: order_desc description: order by desc order (default true) in: query - schema: *ref_52 + schema: *ref_59 - name: created_by description: mask to filter exact matching user creator in: query - schema: *ref_53 + schema: *ref_60 - name: path_start description: mask to filter matching starting path in: query @@ -7202,7 +8244,7 @@ paths: type: array items: type: object - properties: &ref_197 + properties: &ref_292 workspace_id: type: string path: @@ -7220,7 +8262,7 @@ paths: edited_at: type: string format: date-time - required: &ref_198 + required: &ref_293 - workspace_id - path - summary @@ -7241,7 +8283,7 @@ paths: - name: path in: path required: true - schema: *ref_23 + schema: *ref_26 responses: '200': description: app exists @@ -7263,12 +8305,12 @@ paths: - name: version in: path required: true - schema: &ref_125 + schema: &ref_186 type: number - name: path in: path required: true - schema: *ref_35 + schema: *ref_41 responses: '200': description: app details @@ -7325,11 +8367,11 @@ paths: - name: order_desc description: order by desc order (default true) in: query - schema: *ref_52 + schema: *ref_59 - name: created_by description: mask to filter exact matching user creator in: query - schema: *ref_53 + schema: *ref_60 - name: path_start description: mask to filter matching starting path in: query @@ -7370,7 +8412,7 @@ paths: type: array items: type: object - properties: &ref_195 + properties: &ref_290 id: type: integer workspace_id: @@ -7396,7 +8438,9 @@ paths: - viewer - publisher - anonymous - required: &ref_196 + raw_app: + type: boolean + required: &ref_291 - id - workspace_id - path @@ -7431,33 +8475,13 @@ paths: type: string policy: type: object - properties: &ref_61 - triggerables: - type: object - additionalProperties: - type: object - triggerables_v2: - type: object - additionalProperties: - type: object - s3_inputs: - type: array - items: - type: object - execution_mode: - type: string - enum: - - viewer - - publisher - - anonymous - on_behalf_of: - type: string - on_behalf_of_email: - type: string + properties: *ref_68 draft_only: type: boolean deployment_message: type: string + custom_path: + type: string required: - path - value @@ -7470,6 +8494,58 @@ paths: text/plain: schema: type: string + /w/{workspace}/apps/create_raw: + post: + summary: create app raw + operationId: createAppRaw + tags: + - app + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + requestBody: + description: new app + required: true + content: + multipart/form-data: + schema: + type: object + properties: + app: + type: object + properties: + path: + type: string + value: {} + summary: + type: string + policy: + type: object + properties: *ref_68 + draft_only: + type: boolean + deployment_message: + type: string + custom_path: + type: string + required: + - path + - value + - summary + - policy + js: + type: string + css: + type: string + responses: + '201': + description: app created + content: + text/plain: + schema: + type: string /w/{workspace}/apps/exists/{path}: get: summary: does an app exisst at path @@ -7484,7 +8560,7 @@ paths: - name: path in: path required: true - schema: *ref_23 + schema: *ref_26 responses: '200': description: app exists @@ -7506,7 +8582,7 @@ paths: - name: path in: path required: true - schema: *ref_35 + schema: *ref_41 - name: with_starred_info in: query schema: @@ -7518,51 +8594,32 @@ paths: application/json: schema: type: object - properties: &ref_62 - id: - type: integer - workspace_id: - type: string - path: - type: string - summary: - type: string - versions: - type: array - items: - type: integer - created_by: - type: string - created_at: - type: string - format: date-time - value: - type: object - policy: - type: object - properties: *ref_61 - execution_mode: - type: string - enum: - - viewer - - publisher - - anonymous - extra_perms: - type: object - additionalProperties: - type: boolean - required: &ref_63 - - id - - workspace_id - - path - - summary - - versions - - created_by - - created_at - - value - - policy - - execution_mode - - extra_perms + properties: *ref_69 + required: *ref_70 + /w/{workspace}/apps/get/lite/{path}: + get: + summary: get app lite by path + operationId: getAppLiteByPath + tags: + - app + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - name: path + in: path + required: true + schema: *ref_41 + responses: + '200': + description: app lite details + content: + application/json: + schema: + type: object + properties: *ref_69 + required: *ref_70 /w/{workspace}/apps/get/draft/{path}: get: summary: get app by path with draft @@ -7577,17 +8634,17 @@ paths: - name: path in: path required: true - schema: *ref_35 + schema: *ref_41 responses: '200': description: app details with draft content: application/json: schema: - allOf: &ref_199 + allOf: &ref_294 - type: object - properties: *ref_62 - required: *ref_63 + properties: *ref_69 + required: *ref_70 - type: object properties: draft_only: @@ -7607,7 +8664,7 @@ paths: - name: path in: path required: true - schema: *ref_35 + schema: *ref_41 responses: '200': description: app history @@ -7617,12 +8674,12 @@ paths: type: array items: type: object - properties: &ref_64 + properties: &ref_71 version: type: integer deployment_msg: type: string - required: &ref_65 + required: &ref_72 - version /w/{workspace}/apps/get_latest_version/{path}: get: @@ -7636,7 +8693,7 @@ paths: - name: path in: path required: true - schema: *ref_35 + schema: *ref_41 tags: - app responses: @@ -7644,11 +8701,38 @@ paths: description: App version content: application/json: - required: false schema: type: object - properties: *ref_64 - required: *ref_65 + properties: *ref_71 + required: *ref_72 + /w/{workspace}/apps/list_paths_from_workspace_runnable/{runnable_kind}/{path}: + get: + summary: list app paths from workspace runnable + operationId: listAppPathsFromWorkspaceRunnable + tags: + - app + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - name: runnable_kind + in: path + required: true + schema: *ref_73 + - name: path + in: path + required: true + schema: *ref_41 + responses: + '200': + description: list of app paths + content: + application/json: + schema: + type: array + items: + type: string /w/{workspace}/apps/history_update/a/{id}/v/{version}: post: summary: update app history @@ -7663,11 +8747,11 @@ paths: - name: id in: path required: true - schema: *ref_30 + schema: *ref_34 - name: version in: path required: true - schema: &ref_127 + schema: &ref_188 type: integer requestBody: description: App deployment message @@ -7700,7 +8784,7 @@ paths: - name: path in: path required: true - schema: *ref_23 + schema: *ref_26 responses: '200': description: app details @@ -7708,8 +8792,8 @@ paths: application/json: schema: type: object - properties: *ref_62 - required: *ref_63 + properties: *ref_69 + required: *ref_70 /w/{workspace}/apps_u/public_resource/{path}: get: summary: get public resource @@ -7724,7 +8808,7 @@ paths: - name: path in: path required: true - schema: *ref_23 + schema: *ref_26 responses: '200': description: resource value @@ -7745,7 +8829,7 @@ paths: - name: path in: path required: true - schema: *ref_23 + schema: *ref_26 responses: '200': description: app secret @@ -7767,7 +8851,7 @@ paths: - name: id in: path required: true - schema: *ref_30 + schema: *ref_34 responses: '200': description: app details @@ -7775,8 +8859,8 @@ paths: application/json: schema: type: object - properties: *ref_62 - required: *ref_63 + properties: *ref_69 + required: *ref_70 /w/{workspace}/raw_apps/create: post: summary: create raw app @@ -7827,7 +8911,7 @@ paths: - name: path in: path required: true - schema: *ref_35 + schema: *ref_41 requestBody: description: updateraw app required: true @@ -7863,7 +8947,7 @@ paths: - name: path in: path required: true - schema: *ref_23 + schema: *ref_26 responses: '200': description: app deleted @@ -7885,7 +8969,7 @@ paths: - name: path in: path required: true - schema: *ref_23 + schema: *ref_26 responses: '200': description: app deleted @@ -7907,7 +8991,7 @@ paths: - name: path in: path required: true - schema: *ref_35 + schema: *ref_41 requestBody: description: update app required: true @@ -7923,9 +9007,11 @@ paths: value: {} policy: type: object - properties: *ref_61 + properties: *ref_68 deployment_message: type: string + custom_path: + type: string responses: '200': description: app updated @@ -7933,6 +9019,124 @@ paths: text/plain: schema: type: string + /w/{workspace}/apps/update_raw/{path}: + post: + summary: update app + operationId: updateAppRaw + tags: + - app + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - name: path + in: path + required: true + schema: *ref_41 + requestBody: + description: update app + required: true + content: + multipart/form-data: + schema: + type: object + properties: + app: + type: object + properties: + path: + type: string + summary: + type: string + value: {} + policy: + type: object + properties: *ref_68 + deployment_message: + type: string + custom_path: + type: string + js: + type: string + css: + type: string + responses: + '200': + description: app updated + content: + text/plain: + schema: + type: string + /w/{workspace}/apps/custom_path_exists/{custom_path}: + get: + summary: check if custom path exists + operationId: customPathExists + tags: + - app + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - name: custom_path + in: path + required: true + schema: *ref_74 + responses: + '200': + description: custom path exists + content: + application/json: + schema: + type: boolean + /w/{workspace}/apps/sign_s3_objects: + post: + summary: sign s3 objects, to be used by anonymous users in public apps + operationId: signS3Objects + tags: + - app + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + requestBody: + description: s3 objects to sign + required: true + content: + application/json: + schema: + type: object + properties: + s3_objects: + type: array + items: + type: object + properties: &ref_75 + s3: + type: string + filename: + type: string + storage: + type: string + presigned: + type: string + required: &ref_76 + - s3 + required: + - s3_objects + responses: + '200': + description: signed s3 objects + content: + application/json: + schema: + type: array + items: + type: object + properties: *ref_75 + required: *ref_76 /w/{workspace}/apps_u/execute_component/{path}: post: summary: executeComponent @@ -7947,7 +9151,7 @@ paths: - name: path in: path required: true - schema: *ref_35 + schema: *ref_41 requestBody: description: update app required: true @@ -7960,6 +9164,8 @@ paths: type: string path: type: string + version: + type: integer args: {} raw_code: type: object @@ -7977,6 +9183,8 @@ paths: required: - content - language + id: + type: integer force_viewer_static_fields: type: object force_viewer_one_of_fields: @@ -7995,6 +9203,99 @@ paths: text/plain: schema: type: string + /w/{workspace}/apps_u/upload_s3_file/{path}: + post: + summary: upload s3 file from app + operationId: uploadS3FileFromApp + tags: + - app + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - name: path + in: path + required: true + schema: *ref_26 + - name: file_key + in: query + required: false + schema: + type: string + - name: file_extension + in: query + required: false + schema: + type: string + - name: s3_resource_path + in: query + required: false + schema: + type: string + - name: resource_type + in: query + required: false + schema: + type: string + - name: storage + in: query + schema: + type: string + - name: content_type + in: query + schema: + type: string + - name: content_disposition + in: query + schema: + type: string + requestBody: + description: File content + required: true + content: + application/octet-stream: + schema: + type: string + format: binary + responses: + '200': + description: file uploaded + content: + application/json: + schema: + type: object + properties: + file_key: + type: string + delete_token: + type: string + required: + - file_key + - delete_token + /w/{workspace}/apps_u/delete_s3_file: + delete: + summary: delete s3 file from app + operationId: deleteS3FileFromApp + tags: + - app + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - name: delete_token + in: query + required: true + schema: + type: string + responses: + '200': + description: file deleted + content: + text/plain: + schema: + type: string /w/{workspace}/jobs/run/f/{path}: post: summary: run flow by path @@ -8009,7 +9310,7 @@ paths: - name: path in: path required: true - schema: *ref_35 + schema: *ref_41 - name: scheduled_for description: when to schedule this job (leave empty for immediate run) in: query @@ -8031,11 +9332,11 @@ paths: The parent job that is at the origin and responsible for the execution of this script if any in: query - schema: *ref_46 + schema: *ref_53 - name: tag description: Override the tag to use in: query - schema: *ref_48 + schema: *ref_55 - name: job_id description: >- The job id to assign to the created job. if missing, job is chosen @@ -8043,7 +9344,7 @@ paths: queue or as a completed job, the request to create one will fail (Bad Request) in: query - schema: *ref_47 + schema: *ref_54 - name: include_header description: > List of headers's keys (separated with ',') whove value are added to @@ -8052,7 +9353,7 @@ paths: Header's key lowercased and '-'' replaced to '_' such that 'Content-Type' becomes the 'content_type' arg key in: query - schema: *ref_50 + schema: *ref_57 - name: invisible_to_owner description: make the run invisible to the the flow owner (default false) in: query @@ -8065,7 +9366,7 @@ paths: application/json: schema: type: object - additionalProperties: *ref_18 + additionalProperties: *ref_21 responses: '201': description: job created @@ -8074,6 +9375,66 @@ paths: schema: type: string format: uuid + /w/{workspace}/jobs/run/batch_rerun_jobs: + post: + summary: re-run multiple jobs + operationId: batchReRunJobs + tags: + - job + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + requestBody: + description: list of job ids to re run and arg tranforms + required: true + content: + application/json: + schema: + type: object + required: + - job_ids + - script_options_by_path + - flow_options_by_path + properties: + job_ids: + type: array + items: + type: string + script_options_by_path: + type: object + additionalProperties: + type: object + properties: + input_transforms: + type: object + additionalProperties: + allOf: &ref_77 + - oneOf: *ref_35 + discriminator: *ref_36 + use_latest_version: + type: boolean + flow_options_by_path: + type: object + additionalProperties: + type: object + properties: + input_transforms: + type: object + additionalProperties: + allOf: *ref_77 + use_latest_version: + type: boolean + responses: + '201': + description: >- + stream of created job uuids separated by \n. Lines may start with + 'Error:' + content: + text/event-stream: + schema: + type: string /w/{workspace}/jobs/restart/f/{id}/from/{step_id}/{branch_or_iteration_n}: post: summary: restart a completed flow at a given step @@ -8088,7 +9449,7 @@ paths: - name: id in: path required: true - schema: &ref_91 + schema: &ref_110 type: string format: uuid - name: step_id @@ -8121,11 +9482,11 @@ paths: The parent job that is at the origin and responsible for the execution of this script if any in: query - schema: *ref_46 + schema: *ref_53 - name: tag description: Override the tag to use in: query - schema: *ref_48 + schema: *ref_55 - name: job_id description: >- The job id to assign to the created job. if missing, job is chosen @@ -8133,7 +9494,7 @@ paths: queue or as a completed job, the request to create one will fail (Bad Request) in: query - schema: *ref_47 + schema: *ref_54 - name: include_header description: > List of headers's keys (separated with ',') whove value are added to @@ -8142,7 +9503,7 @@ paths: Header's key lowercased and '-'' replaced to '_' such that 'Content-Type' becomes the 'content_type' arg key in: query - schema: *ref_50 + schema: *ref_57 - name: invisible_to_owner description: make the run invisible to the the flow owner (default false) in: query @@ -8155,7 +9516,7 @@ paths: application/json: schema: type: object - additionalProperties: *ref_18 + additionalProperties: *ref_21 responses: '201': description: job created @@ -8178,7 +9539,7 @@ paths: - name: hash in: path required: true - schema: *ref_39 + schema: *ref_46 - name: scheduled_for description: when to schedule this job (leave empty for immediate run) in: query @@ -8200,17 +9561,17 @@ paths: The parent job that is at the origin and responsible for the execution of this script if any in: query - schema: *ref_46 + schema: *ref_53 - name: tag description: Override the tag to use in: query - schema: *ref_48 + schema: *ref_55 - 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_49 + schema: *ref_56 - name: job_id description: >- The job id to assign to the created job. if missing, job is chosen @@ -8218,7 +9579,7 @@ paths: queue or as a completed job, the request to create one will fail (Bad Request) in: query - schema: *ref_47 + schema: *ref_54 - name: include_header description: > List of headers's keys (separated with ',') whove value are added to @@ -8227,7 +9588,7 @@ paths: Header's key lowercased and '-'' replaced to '_' such that 'Content-Type' becomes the 'content_type' arg key in: query - schema: *ref_50 + schema: *ref_57 - name: invisible_to_owner description: make the run invisible to the the script owner (default false) in: query @@ -8267,7 +9628,7 @@ paths: Header's key lowercased and '-'' replaced to '_' such that 'Content-Type' becomes the 'content_type' arg key in: query - schema: *ref_50 + schema: *ref_57 - name: invisible_to_owner description: make the run invisible to the the script owner (default false) in: query @@ -8280,7 +9641,7 @@ paths: queue or as a completed job, the request to create one will fail (Bad Request) in: query - schema: *ref_47 + schema: *ref_54 requestBody: description: preview required: true @@ -8288,33 +9649,19 @@ paths: application/json: schema: type: object - properties: &ref_156 + properties: &ref_221 content: type: string path: type: string + script_hash: + type: string args: type: object - additionalProperties: *ref_18 + additionalProperties: *ref_21 language: type: string - enum: - - python3 - - deno - - go - - bash - - powershell - - postgresql - - mysql - - bigquery - - snowflake - - mssql - - graphql - - nativets - - bun - - php - - rust - - ansible + enum: *ref_43 tag: type: string kind: @@ -8327,7 +9674,7 @@ paths: type: boolean lock: type: string - required: &ref_157 + required: &ref_222 - args responses: '201': @@ -8365,11 +9712,11 @@ paths: application/json: schema: type: object - properties: &ref_158 + properties: &ref_223 args: type: object - additionalProperties: *ref_18 - required: &ref_159 + additionalProperties: *ref_21 + required: &ref_224 - args responses: '201': @@ -8402,31 +9749,15 @@ paths: type: array items: type: object - properties: &ref_217 + properties: &ref_312 raw_code: type: string path: type: string language: type: string - enum: - - python3 - - deno - - go - - bash - - powershell - - postgresql - - mysql - - bigquery - - snowflake - - mssql - - graphql - - nativets - - bun - - php - - rust - - ansible - required: &ref_218 + enum: *ref_43 + required: &ref_313 - raw_code - path - language @@ -8466,7 +9797,7 @@ paths: Header's key lowercased and '-'' replaced to '_' such that 'Content-Type' becomes the 'content_type' arg key in: query - schema: *ref_50 + schema: *ref_57 - name: invisible_to_owner description: make the run invisible to the the script owner (default false) in: query @@ -8479,7 +9810,7 @@ paths: queue or as a completed job, the request to create one will fail (Bad Request) in: query - schema: *ref_47 + schema: *ref_54 requestBody: description: preview required: true @@ -8487,21 +9818,21 @@ paths: application/json: schema: type: object - properties: &ref_192 + properties: &ref_287 value: type: object - properties: *ref_66 - required: *ref_67 + properties: *ref_78 + required: *ref_79 path: type: string args: type: object - additionalProperties: *ref_18 + additionalProperties: *ref_21 tag: type: string restarted_from: type: object - properties: &ref_194 + properties: &ref_289 flow_job_id: type: string format: uuid @@ -8509,7 +9840,7 @@ paths: type: string branch_or_iteration_n: type: integer - required: &ref_193 + required: &ref_288 - value - content - args @@ -8535,94 +9866,104 @@ paths: - name: order_desc description: order by desc order (default true) in: query - schema: *ref_52 + schema: *ref_59 - name: created_by description: mask to filter exact matching user creator in: query - schema: *ref_53 + schema: *ref_60 - 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_46 + schema: *ref_53 + - name: worker + description: worker this job was ran on + in: query + schema: &ref_82 + type: string - name: script_path_exact description: mask to filter exact matching path in: query - schema: &ref_70 + schema: &ref_83 type: string - name: script_path_start description: mask to filter matching starting path in: query - schema: &ref_71 + schema: &ref_84 type: string - name: schedule_path description: mask to filter by schedule path in: query - schema: &ref_72 + schema: &ref_85 type: string - name: script_hash description: mask to filter exact matching path in: query - schema: &ref_73 + schema: &ref_86 type: string - name: started_before description: filter on started before (inclusive) timestamp in: query - schema: &ref_74 + schema: &ref_87 type: string format: date-time - name: started_after description: filter on started after (exclusive) timestamp in: query - schema: &ref_75 + schema: &ref_88 type: string format: date-time - name: success description: filter on successful jobs in: query - schema: &ref_76 + schema: &ref_96 type: boolean - name: scheduled_for_before_now description: filter on jobs scheduled_for before now (hence waitinf for a worker) in: query - schema: &ref_77 + schema: &ref_90 type: boolean - name: job_kinds description: >- filter on job kind (values 'preview', 'script', 'dependencies', 'flow') separated by, in: query - schema: &ref_78 + schema: &ref_91 type: string - name: suspended description: filter on suspended jobs in: query - schema: &ref_79 + schema: &ref_92 type: boolean - name: running description: filter on running jobs in: query - schema: &ref_80 + schema: &ref_89 type: boolean - name: args description: >- filter on jobs containing those args as a json subset (@> in postgres) in: query - schema: &ref_81 + schema: &ref_93 type: string - name: result description: >- filter on jobs containing those result as a json subset (@> in postgres) in: query - schema: &ref_82 + schema: &ref_95 type: string + - name: allow_wildcards + description: allow wildcards (*) in the filter of label, tag, worker + in: query + schema: &ref_97 + type: boolean - name: tag description: filter on jobs with a given tag/worker group in: query - schema: &ref_83 + schema: &ref_94 type: string - name: page description: which page to return (start at 1, default 1) @@ -8653,7 +9994,7 @@ paths: type: array items: type: object - properties: &ref_89 + properties: &ref_108 workspace_id: type: string id: @@ -8681,7 +10022,7 @@ paths: type: string args: type: object - additionalProperties: *ref_18 + additionalProperties: *ref_21 logs: type: string raw_code: @@ -8717,20 +10058,20 @@ paths: permissioned_as: type: string description: > - The user (u/userfoo) or group (g/groupfoo) whom + The user (u/userfoo) or group (g/groupfoo) whom the execution of this script will be permissioned_as and by extension its DT_TOKEN. flow_status: type: object - properties: &ref_84 + properties: &ref_99 step: type: integer modules: type: array items: type: object - properties: &ref_68 + properties: &ref_80 type: type: string enum: @@ -8807,20 +10148,20 @@ paths: format: uuid skipped: type: boolean - required: &ref_69 + required: &ref_81 - type user_states: additionalProperties: true preprocessor_module: allOf: - type: object - properties: *ref_68 - required: *ref_69 + properties: *ref_80 + required: *ref_81 failure_module: allOf: - type: object - properties: *ref_68 - required: *ref_69 + properties: *ref_80 + required: *ref_81 - type: object properties: parent_module: @@ -8835,35 +10176,19 @@ paths: items: type: string format: uuid - required: &ref_85 + required: &ref_100 - step - modules - failure_module raw_flow: type: object - properties: *ref_66 - required: *ref_67 + properties: *ref_78 + required: *ref_79 is_flow_step: type: boolean language: type: string - enum: - - python3 - - deno - - go - - bash - - powershell - - postgresql - - mysql - - bigquery - - snowflake - - mssql - - graphql - - nativets - - bun - - php - - rust - - ansible + enum: *ref_43 email: type: string visible_to_owner: @@ -8880,7 +10205,11 @@ paths: type: number suspend: type: number - required: &ref_90 + preprocessed: + type: boolean + worker: + type: string + required: &ref_109 - id - running - canceled @@ -8945,10 +10274,221 @@ paths: type: integer required: - database_length - /w/{workspace}/jobs/queue/list_filtered_uuids: + /w/{workspace}/jobs/completed/count_jobs: + get: + summary: count number of completed jobs with filter + operationId: countCompletedJobs + tags: + - job + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - name: completed_after_s_ago + in: query + schema: + type: integer + - name: success + in: query + schema: + type: boolean + - name: tags + in: query + schema: + type: string + - name: all_workspaces + in: query + schema: + type: boolean + responses: + '200': + description: Count of completed jobs + content: + application/json: + schema: + type: integer + /w/{workspace}/jobs/list_filtered_uuids: get: summary: get the ids of all jobs matching the given filters - operationId: listFilteredUuids + operationId: listFilteredJobsUuids + tags: + - job + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - name: created_by + description: mask to filter exact matching user creator + in: query + schema: *ref_60 + - 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_98 + type: string + - name: worker + description: worker this job was ran on + in: query + schema: *ref_82 + - 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_53 + - name: script_path_exact + description: mask to filter exact matching path + in: query + schema: *ref_83 + - name: script_path_start + description: mask to filter matching starting path + in: query + schema: *ref_84 + - name: schedule_path + description: mask to filter by schedule path + in: query + schema: *ref_85 + - name: script_hash + description: mask to filter exact matching path + in: query + schema: *ref_86 + - name: started_before + description: filter on started before (inclusive) timestamp + in: query + schema: *ref_87 + - name: started_after + description: filter on started after (exclusive) timestamp + in: query + schema: *ref_88 + - name: created_before + description: filter on created before (inclusive) timestamp + in: query + schema: &ref_101 + type: string + format: date-time + - name: created_after + description: filter on created after (exclusive) timestamp + in: query + schema: &ref_102 + 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_103 + type: string + format: date-time + - name: running + description: filter on running jobs + in: query + schema: *ref_89 + - name: scheduled_for_before_now + description: filter on jobs scheduled_for before now (hence waitinf for a worker) + in: query + schema: *ref_90 + - 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_104 + 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_105 + type: string + format: date-time + - name: job_kinds + description: >- + filter on job kind (values 'preview', 'script', 'dependencies', + 'flow') separated by, + in: query + schema: *ref_91 + - name: suspended + description: filter on suspended jobs + in: query + schema: *ref_92 + - name: args + description: >- + filter on jobs containing those args as a json subset (@> in + postgres) + in: query + schema: *ref_93 + - name: tag + description: filter on jobs with a given tag/worker group + in: query + schema: *ref_94 + - name: result + description: >- + filter on jobs containing those result as a json subset (@> in + postgres) + in: query + schema: *ref_95 + - 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: uuids of jobs + content: + application/json: + schema: + type: array + items: + type: string + /w/{workspace}/jobs/queue/list_filtered_uuids: + get: + summary: get the ids of all queued jobs matching the given filters + operationId: listFilteredQueueUuids tags: - job parameters: @@ -8959,79 +10499,83 @@ paths: - name: order_desc description: order by desc order (default true) in: query - schema: *ref_52 + schema: *ref_59 - name: created_by description: mask to filter exact matching user creator in: query - schema: *ref_53 + schema: *ref_60 - 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_46 + schema: *ref_53 - name: script_path_exact description: mask to filter exact matching path in: query - schema: *ref_70 + schema: *ref_83 - name: script_path_start description: mask to filter matching starting path in: query - schema: *ref_71 + schema: *ref_84 - name: schedule_path description: mask to filter by schedule path in: query - schema: *ref_72 + schema: *ref_85 - name: script_hash description: mask to filter exact matching path in: query - schema: *ref_73 + schema: *ref_86 - name: started_before description: filter on started before (inclusive) timestamp in: query - schema: *ref_74 + schema: *ref_87 - name: started_after description: filter on started after (exclusive) timestamp in: query - schema: *ref_75 + schema: *ref_88 - name: success description: filter on successful jobs in: query - schema: *ref_76 + schema: *ref_96 - name: scheduled_for_before_now description: filter on jobs scheduled_for before now (hence waitinf for a worker) in: query - schema: *ref_77 + schema: *ref_90 - name: job_kinds description: >- filter on job kind (values 'preview', 'script', 'dependencies', 'flow') separated by, in: query - schema: *ref_78 + schema: *ref_91 - name: suspended description: filter on suspended jobs in: query - schema: *ref_79 + schema: *ref_92 - name: running description: filter on running jobs in: query - schema: *ref_80 + schema: *ref_89 - name: args description: >- filter on jobs containing those args as a json subset (@> in postgres) in: query - schema: *ref_81 + schema: *ref_93 - name: result description: >- filter on jobs containing those result as a json subset (@> in postgres) in: query - schema: *ref_82 + schema: *ref_95 + - name: allow_wildcards + description: allow wildcards (*) in the filter of label, tag, worker + in: query + schema: *ref_97 - name: tag description: filter on jobs with a given tag/worker group in: query - schema: *ref_83 + schema: *ref_94 - name: page description: which page to return (start at 1, default 1) in: query @@ -9109,75 +10653,82 @@ paths: - name: order_desc description: order by desc order (default true) in: query - schema: *ref_52 + schema: *ref_59 - name: created_by description: mask to filter exact matching user creator in: query - schema: *ref_53 + schema: *ref_60 - 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_86 - type: string + schema: *ref_98 + - name: worker + description: worker this job was ran on + in: query + schema: *ref_82 - 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_46 + schema: *ref_53 - name: script_path_exact description: mask to filter exact matching path in: query - schema: *ref_70 + schema: *ref_83 - name: script_path_start description: mask to filter matching starting path in: query - schema: *ref_71 + schema: *ref_84 - name: schedule_path description: mask to filter by schedule path in: query - schema: *ref_72 + schema: *ref_85 - name: script_hash description: mask to filter exact matching path in: query - schema: *ref_73 + schema: *ref_86 - name: started_before description: filter on started before (inclusive) timestamp in: query - schema: *ref_74 + schema: *ref_87 - name: started_after description: filter on started after (exclusive) timestamp in: query - schema: *ref_75 + schema: *ref_88 - name: success description: filter on successful jobs in: query - schema: *ref_76 + schema: *ref_96 - name: job_kinds description: >- filter on job kind (values 'preview', 'script', 'dependencies', 'flow') separated by, in: query - schema: *ref_78 + schema: *ref_91 - name: args description: >- filter on jobs containing those args as a json subset (@> in postgres) in: query - schema: *ref_81 + schema: *ref_93 - name: result description: >- filter on jobs containing those result as a json subset (@> in postgres) in: query - schema: *ref_82 + schema: *ref_95 + - name: allow_wildcards + description: allow wildcards (*) in the filter of label, tag, worker + in: query + schema: *ref_97 - name: tag description: filter on jobs with a given tag/worker group in: query - schema: *ref_83 + schema: *ref_94 - name: page description: which page to return (start at 1, default 1) in: query @@ -9215,7 +10766,7 @@ paths: type: array items: type: object - properties: &ref_87 + properties: &ref_106 workspace_id: type: string id: @@ -9242,7 +10793,7 @@ paths: type: string args: type: object - additionalProperties: *ref_18 + additionalProperties: *ref_21 result: {} logs: type: string @@ -9278,39 +10829,23 @@ paths: permissioned_as: type: string description: > - The user (u/userfoo) or group (g/groupfoo) whom + The user (u/userfoo) or group (g/groupfoo) whom the execution of this script will be permissioned_as and by extension its DT_TOKEN. flow_status: type: object - properties: *ref_84 - required: *ref_85 + properties: *ref_99 + required: *ref_100 raw_flow: type: object - properties: *ref_66 - required: *ref_67 + properties: *ref_78 + required: *ref_79 is_flow_step: type: boolean language: type: string - enum: - - python3 - - deno - - go - - bash - - powershell - - postgresql - - mysql - - bigquery - - snowflake - - mssql - - graphql - - nativets - - bun - - php - - rust - - ansible + enum: *ref_43 is_skipped: type: boolean email: @@ -9331,7 +10866,11 @@ paths: type: number aggregate_wait_time_ms: type: number - required: &ref_88 + preprocessed: + type: boolean + worker: + type: string + required: &ref_107 - id - created_by - duration_ms @@ -9360,115 +10899,113 @@ paths: - name: created_by description: mask to filter exact matching user creator in: query - schema: *ref_53 + schema: *ref_60 - 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_86 + schema: *ref_98 + - name: worker + description: worker this job was ran on + in: query + schema: *ref_82 - 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_46 + schema: *ref_53 - name: script_path_exact description: mask to filter exact matching path in: query - schema: *ref_70 + schema: *ref_83 - name: script_path_start description: mask to filter matching starting path in: query - schema: *ref_71 + schema: *ref_84 - name: schedule_path description: mask to filter by schedule path in: query - schema: *ref_72 + schema: *ref_85 - name: script_hash description: mask to filter exact matching path in: query - schema: *ref_73 + schema: *ref_86 - name: started_before description: filter on started before (inclusive) timestamp in: query - schema: *ref_74 + schema: *ref_87 - name: started_after description: filter on started after (exclusive) timestamp in: query - schema: *ref_75 + schema: *ref_88 - name: created_before description: filter on created before (inclusive) timestamp in: query - schema: &ref_128 - type: string - format: date-time + schema: *ref_101 - name: created_after description: filter on created after (exclusive) timestamp in: query - schema: &ref_129 - type: string - format: date-time + schema: *ref_102 - 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_122 - type: string - format: date-time + schema: *ref_103 - name: running description: filter on running jobs in: query - schema: *ref_80 + schema: *ref_89 - name: scheduled_for_before_now description: filter on jobs scheduled_for before now (hence waitinf for a worker) in: query - schema: *ref_77 + schema: *ref_90 - 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_123 - type: string - format: date-time + schema: *ref_104 - 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_124 - type: string - format: date-time + schema: *ref_105 - name: job_kinds description: >- filter on job kind (values 'preview', 'script', 'dependencies', 'flow') separated by, in: query - schema: *ref_78 + schema: *ref_91 - name: suspended description: filter on suspended jobs in: query - schema: *ref_79 + schema: *ref_92 - name: args description: >- filter on jobs containing those args as a json subset (@> in postgres) in: query - schema: *ref_81 + schema: *ref_93 - name: tag description: filter on jobs with a given tag/worker group in: query - schema: *ref_83 + schema: *ref_94 - name: result description: >- filter on jobs containing those result as a json subset (@> in postgres) in: query - schema: *ref_82 + schema: *ref_95 + - name: allow_wildcards + description: allow wildcards (*) in the filter of label, tag, worker + in: query + schema: *ref_97 - name: page description: which page to return (start at 1, default 1) in: query @@ -9517,11 +11054,11 @@ paths: schema: type: array items: - oneOf: &ref_92 + oneOf: &ref_111 - allOf: - type: object - properties: *ref_87 - required: *ref_88 + properties: *ref_106 + required: *ref_107 - type: object properties: type: @@ -9530,15 +11067,15 @@ paths: - CompletedJob - allOf: - type: object - properties: *ref_89 - required: *ref_90 + properties: *ref_108 + required: *ref_109 - type: object properties: type: type: string enum: - QueuedJob - discriminator: &ref_93 + discriminator: &ref_112 propertyName: type /jobs/db_clock: get: @@ -9605,7 +11142,7 @@ paths: - name: id in: path required: true - schema: *ref_91 + schema: *ref_110 - name: no_logs in: query schema: @@ -9616,8 +11153,8 @@ paths: content: application/json: schema: - oneOf: *ref_92 - discriminator: *ref_93 + oneOf: *ref_111 + discriminator: *ref_112 /w/{workspace}/jobs_u/get_root_job_id/{id}: get: summary: get root job id @@ -9632,7 +11169,7 @@ paths: - name: id in: path required: true - schema: *ref_91 + schema: *ref_110 responses: '200': description: get root job id @@ -9654,7 +11191,7 @@ paths: - name: id in: path required: true - schema: *ref_91 + schema: *ref_110 responses: '200': description: job details @@ -9676,7 +11213,7 @@ paths: - name: id in: path required: true - schema: *ref_91 + schema: *ref_110 responses: '200': description: job args @@ -9697,7 +11234,7 @@ paths: - name: id in: path required: true - schema: *ref_91 + schema: *ref_110 - name: running in: query schema: @@ -9732,9 +11269,9 @@ paths: type: integer flow_status: type: object - additionalProperties: &ref_160 + additionalProperties: &ref_225 type: object - properties: &ref_161 + properties: &ref_226 scheduled_for: type: string format: date-time @@ -9766,7 +11303,8 @@ paths: description: job log content: text/plain: - type: string + schema: + type: string /w/{workspace}/jobs_u/get_flow_debug_info/{id}: get: summary: get flow debug info @@ -9781,7 +11319,7 @@ paths: - name: id in: path required: true - schema: *ref_91 + schema: *ref_110 responses: '200': description: flow debug info details @@ -9802,7 +11340,7 @@ paths: - name: id in: path required: true - schema: *ref_91 + schema: *ref_110 responses: '200': description: job details @@ -9810,8 +11348,8 @@ paths: application/json: schema: type: object - properties: *ref_87 - required: *ref_88 + properties: *ref_106 + required: *ref_107 /w/{workspace}/jobs_u/completed/get_result/{id}: get: summary: get completed job result @@ -9826,7 +11364,7 @@ paths: - name: id in: path required: true - schema: *ref_91 + schema: *ref_110 - name: suspended_job in: query schema: @@ -9863,10 +11401,10 @@ paths: - name: id in: path required: true - schema: *ref_91 + schema: *ref_110 - name: get_started in: query - schema: &ref_135 + schema: &ref_194 type: boolean responses: '200': @@ -9900,7 +11438,7 @@ paths: - name: id in: path required: true - schema: *ref_91 + schema: *ref_110 responses: '200': description: job details @@ -9908,8 +11446,8 @@ paths: application/json: schema: type: object - properties: *ref_87 - required: *ref_88 + properties: *ref_106 + required: *ref_107 /w/{workspace}/jobs_u/queue/cancel/{id}: post: summary: cancel queued or running job @@ -9924,7 +11462,7 @@ paths: - name: id in: path required: true - schema: *ref_91 + schema: *ref_110 requestBody: description: reason required: true @@ -9956,7 +11494,7 @@ paths: - name: path in: path required: true - schema: *ref_23 + schema: *ref_26 requestBody: description: reason required: true @@ -9988,7 +11526,7 @@ paths: - name: id in: path required: true - schema: *ref_91 + schema: *ref_110 requestBody: description: reason required: true @@ -10020,7 +11558,7 @@ paths: - name: id in: path required: true - schema: *ref_91 + schema: *ref_110 - name: resume_id in: path required: true @@ -10051,7 +11589,7 @@ paths: - name: id in: path required: true - schema: *ref_91 + schema: *ref_110 - name: resume_id in: path required: true @@ -10079,6 +11617,108 @@ paths: - approvalPage - resume - cancel + /w/{workspace}/jobs/slack_approval/{id}: + get: + summary: generate interactive slack approval for suspended job + operationId: getSlackApprovalPayload + tags: + - job + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - name: id + in: path + required: true + schema: *ref_110 + - name: approver + in: query + schema: + type: string + - name: message + in: query + schema: + type: string + - name: slack_resource_path + in: query + required: true + schema: + type: string + - name: channel_id + in: query + required: true + schema: + type: string + - name: flow_step_id + in: query + required: true + schema: + type: string + - name: default_args_json + in: query + required: false + schema: + type: string + - name: dynamic_enums_json + in: query + required: false + schema: + type: string + responses: + '200': + description: Interactive slack approval message sent successfully + /w/{workspace}/jobs/teams_approval/{id}: + get: + summary: generate interactive teams approval for suspended job + operationId: getTeamsApprovalPayload + tags: + - job + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - name: id + in: path + required: true + schema: *ref_110 + - name: approver + in: query + schema: + type: string + - name: message + in: query + schema: + type: string + - name: team_name + in: query + required: true + schema: + type: string + - name: channel_name + in: query + required: true + schema: + type: string + - name: flow_step_id + in: query + required: true + schema: + type: string + - name: default_args_json + in: query + required: false + schema: + type: string + - name: dynamic_enums_json + in: query + required: false + schema: + type: string + responses: + '200': + description: Interactive slack approval message sent successfully /w/{workspace}/jobs_u/resume/{id}/{resume_id}/{signature}: get: summary: resume a job for a suspended flow @@ -10093,7 +11733,7 @@ paths: - name: id in: path required: true - schema: *ref_91 + schema: *ref_110 - name: payload description: > The base64 encoded payload that has been encoded as a JSON. e.g how @@ -10101,7 +11741,7 @@ paths: `encodeURIComponent(btoa(JSON.stringify({a: 2})))` in: query - schema: *ref_94 + schema: *ref_113 - name: resume_id in: path required: true @@ -10136,7 +11776,7 @@ paths: - name: id in: path required: true - schema: *ref_91 + schema: *ref_110 - name: resume_id in: path required: true @@ -10178,7 +11818,7 @@ paths: - name: id in: path required: true - schema: *ref_91 + schema: *ref_110 - name: key in: path required: true @@ -10210,7 +11850,7 @@ paths: - name: id in: path required: true - schema: *ref_91 + schema: *ref_110 - name: key in: path required: true @@ -10236,7 +11876,7 @@ paths: - name: id in: path required: true - schema: *ref_91 + schema: *ref_110 requestBody: required: true content: @@ -10264,7 +11904,7 @@ paths: - name: id in: path required: true - schema: *ref_91 + schema: *ref_110 - name: resume_id in: path required: true @@ -10299,7 +11939,7 @@ paths: - name: id in: path required: true - schema: *ref_91 + schema: *ref_110 - name: resume_id in: path required: true @@ -10341,7 +11981,7 @@ paths: - name: id in: path required: true - schema: *ref_91 + schema: *ref_110 - name: resume_id in: path required: true @@ -10365,8 +12005,8 @@ paths: type: object properties: job: - oneOf: *ref_92 - discriminator: *ref_93 + oneOf: *ref_111 + discriminator: *ref_112 approvers: type: array items: @@ -10400,6 +12040,8 @@ paths: type: string timezone: type: string + cron_version: + type: string required: - schedule - timezone @@ -10431,7 +12073,7 @@ paths: application/json: schema: type: object - properties: &ref_171 + properties: &ref_236 path: type: string schedule: @@ -10444,7 +12086,7 @@ paths: type: boolean args: type: object - additionalProperties: *ref_18 + additionalProperties: *ref_21 enabled: type: boolean on_failure: @@ -10455,34 +12097,38 @@ paths: type: boolean on_failure_extra_args: type: object - additionalProperties: *ref_18 + additionalProperties: *ref_21 on_recovery: type: string on_recovery_times: type: number on_recovery_extra_args: type: object - additionalProperties: *ref_18 + additionalProperties: *ref_21 on_success: type: string on_success_extra_args: type: object - additionalProperties: *ref_18 + additionalProperties: *ref_21 ws_error_handler_muted: type: boolean retry: type: object - properties: *ref_95 + properties: *ref_114 no_flow_overlap: type: boolean summary: type: string + description: + type: string tag: type: string paused_until: type: string format: date-time - required: &ref_172 + cron_version: + type: string + required: &ref_237 - path - schedule - timezone @@ -10510,7 +12156,7 @@ paths: - name: path in: path required: true - schema: *ref_23 + schema: *ref_26 requestBody: description: updated schedule required: true @@ -10518,14 +12164,14 @@ paths: application/json: schema: type: object - properties: &ref_173 + properties: &ref_238 schedule: type: string timezone: type: string args: type: object - additionalProperties: *ref_18 + additionalProperties: *ref_21 on_failure: type: string on_failure_times: @@ -10534,34 +12180,38 @@ paths: type: boolean on_failure_extra_args: type: object - additionalProperties: *ref_18 + additionalProperties: *ref_21 on_recovery: type: string on_recovery_times: type: number on_recovery_extra_args: type: object - additionalProperties: *ref_18 + additionalProperties: *ref_21 on_success: type: string on_success_extra_args: type: object - additionalProperties: *ref_18 + additionalProperties: *ref_21 ws_error_handler_muted: type: boolean retry: type: object - properties: *ref_95 + properties: *ref_114 no_flow_overlap: type: boolean summary: type: string + description: + type: string tag: type: string paused_until: type: string format: date-time - required: &ref_174 + cron_version: + type: string + required: &ref_239 - schedule - timezone - script_path @@ -10588,7 +12238,7 @@ paths: - name: path in: path required: true - schema: *ref_23 + schema: *ref_26 requestBody: description: updated schedule enable required: true @@ -10622,7 +12272,7 @@ paths: - name: path in: path required: true - schema: *ref_23 + schema: *ref_26 responses: '200': description: schedule deleted @@ -10644,7 +12294,7 @@ paths: - name: path in: path required: true - schema: *ref_23 + schema: *ref_26 responses: '200': description: schedule deleted @@ -10652,7 +12302,7 @@ paths: application/json: schema: type: object - properties: &ref_96 + properties: &ref_115 path: type: string edited_by: @@ -10672,7 +12322,7 @@ paths: type: boolean args: type: object - additionalProperties: *ref_18 + additionalProperties: *ref_21 extra_perms: type: object additionalProperties: @@ -10689,26 +12339,28 @@ paths: type: boolean on_failure_extra_args: type: object - additionalProperties: *ref_18 + additionalProperties: *ref_21 on_recovery: type: string on_recovery_times: type: number on_recovery_extra_args: type: object - additionalProperties: *ref_18 + additionalProperties: *ref_21 on_success: type: string on_success_extra_args: type: object - additionalProperties: *ref_18 + additionalProperties: *ref_21 ws_error_handler_muted: type: boolean retry: type: object - properties: *ref_95 + properties: *ref_114 summary: type: string + description: + type: string no_flow_overlap: type: boolean tag: @@ -10716,7 +12368,9 @@ paths: paused_until: type: string format: date-time - required: &ref_97 + cron_version: + type: string + required: &ref_116 - path - edited_by - edited_at @@ -10741,7 +12395,7 @@ paths: - name: path in: path required: true - schema: *ref_23 + schema: *ref_26 responses: '200': description: schedule exists @@ -10773,7 +12427,7 @@ paths: filter on jobs containing those args as a json subset (@> in postgres) in: query - schema: *ref_81 + schema: *ref_93 - name: path description: filter by path in: query @@ -10796,8 +12450,8 @@ paths: type: array items: type: object - properties: *ref_96 - required: *ref_97 + properties: *ref_115 + required: *ref_116 /w/{workspace}/schedules/list_with_jobs: get: summary: list schedules with last 20 jobs @@ -10825,10 +12479,10 @@ paths: schema: type: array items: - allOf: &ref_170 + allOf: &ref_235 - type: object - properties: *ref_96 - required: *ref_97 + properties: *ref_115 + required: *ref_116 - type: object properties: jobs: @@ -10907,13 +12561,15 @@ paths: application/json: schema: type: object - properties: &ref_175 + properties: &ref_240 path: type: string script_path: type: string route_path: type: string + workspaced_route: + type: boolean static_asset_config: type: object properties: @@ -10935,18 +12591,34 @@ paths: - put - delete - patch + authentication_resource_path: + type: string is_async: type: boolean - requires_auth: + authentication_method: + type: string + enum: &ref_117 + - none + - windmill + - api_key + - basic_http + - custom_script + - signature + is_static_website: type: boolean - required: &ref_176 + wrap_body: + type: boolean + raw_string: + type: boolean + required: &ref_241 - path - script_path - route_path - is_flow - is_async - - requires_auth + - authentication_method - http_method + - is_static_website responses: '201': description: http trigger created @@ -10968,7 +12640,7 @@ paths: - name: path in: path required: true - schema: *ref_23 + schema: *ref_26 requestBody: description: updated trigger required: true @@ -10976,13 +12648,15 @@ paths: application/json: schema: type: object - properties: &ref_177 + properties: &ref_242 path: type: string script_path: type: string route_path: type: string + workspaced_route: + type: boolean static_asset_config: type: object properties: @@ -10994,6 +12668,8 @@ paths: type: string required: - s3 + authentication_resource_path: + type: string is_flow: type: boolean http_method: @@ -11006,16 +12682,24 @@ paths: - patch is_async: type: boolean - requires_auth: + authentication_method: + type: string + enum: *ref_117 + is_static_website: type: boolean - required: &ref_178 + wrap_body: + type: boolean + raw_string: + type: boolean + required: &ref_243 - path - script_path - is_flow - kind - is_async - - requires_auth + - authentication_method - http_method + - is_static_website responses: '200': description: http trigger updated @@ -11037,7 +12721,7 @@ paths: - name: path in: path required: true - schema: *ref_23 + schema: *ref_26 responses: '200': description: http trigger deleted @@ -11059,24 +12743,46 @@ paths: - name: path in: path required: true - schema: *ref_23 + schema: *ref_26 responses: '200': description: http trigger deleted content: application/json: schema: + allOf: &ref_118 + - type: object + properties: &ref_122 + path: + type: string + script_path: + type: string + email: + type: string + extra_perms: + type: object + additionalProperties: + type: boolean + workspace_id: + type: string + edited_by: + type: string + edited_at: + type: string + format: date-time + is_flow: + type: boolean + required: &ref_123 + - path + - script_path + - email + - extra_perms + - workspace_id + - edited_by + - edited_at + - is_flow type: object - properties: &ref_98 - path: - type: string - edited_by: - type: string - edited_at: - type: string - format: date-time - script_path: - type: string + properties: &ref_119 route_path: type: string static_asset_config: @@ -11090,16 +12796,6 @@ paths: type: string required: - s3 - is_flow: - type: boolean - extra_perms: - type: object - additionalProperties: - type: boolean - email: - type: string - workspace_id: - type: string http_method: type: string enum: @@ -11108,23 +12804,30 @@ paths: - put - delete - patch + authentication_resource_path: + type: string is_async: type: boolean - requires_auth: + authentication_method: + type: string + enum: *ref_117 + is_static_website: type: boolean - required: &ref_99 - - path - - edited_by - - edited_at - - script_path + workspaced_route: + type: boolean + wrap_body: + type: boolean + raw_string: + type: boolean + required: &ref_120 - route_path - - extra_perms - - is_flow - - email - - workspace_id - is_async - - requires_auth + - authentication_method - http_method + - is_static_website + - workspaced_route + - wrap_body + - raw_string /w/{workspace}/http_triggers/list: get: summary: list http triggers @@ -11165,9 +12868,10 @@ paths: schema: type: array items: + allOf: *ref_118 type: object - properties: *ref_98 - required: *ref_99 + properties: *ref_119 + required: *ref_120 /w/{workspace}/http_triggers/exists/{path}: get: summary: does http trigger exists @@ -11182,7 +12886,7 @@ paths: - name: path in: path required: true - schema: *ref_23 + schema: *ref_26 responses: '200': description: http trigger exists @@ -11219,8 +12923,11 @@ paths: - put - delete - patch + trigger_path: + type: string + workspaced_route: + type: boolean required: - - kind - route_path - http_method responses: @@ -11248,7 +12955,7 @@ paths: application/json: schema: type: object - properties: &ref_179 + properties: &ref_244 path: type: string script_path: @@ -11273,7 +12980,7 @@ paths: initial_messages: type: array items: - anyOf: &ref_100 + anyOf: &ref_121 - type: object properties: raw_message: @@ -11289,7 +12996,7 @@ paths: type: string args: type: object - additionalProperties: *ref_18 + additionalProperties: *ref_21 is_flow: type: boolean required: @@ -11300,15 +13007,16 @@ paths: - runnable_result url_runnable_args: type: object - additionalProperties: *ref_18 - required: &ref_180 + additionalProperties: *ref_21 + can_return_message: + type: boolean + required: &ref_245 - path - script_path - url - is_flow - filters - - initial_messages - - url_runnable_args + - can_return_message responses: '201': description: websocket trigger created @@ -11330,7 +13038,7 @@ paths: - name: path in: path required: true - schema: *ref_23 + schema: *ref_26 requestBody: description: updated trigger required: true @@ -11338,7 +13046,7 @@ paths: application/json: schema: type: object - properties: &ref_181 + properties: &ref_246 url: type: string path: @@ -11361,18 +13069,19 @@ paths: initial_messages: type: array items: - anyOf: *ref_100 + anyOf: *ref_121 url_runnable_args: type: object - additionalProperties: *ref_18 - required: &ref_182 + additionalProperties: *ref_21 + can_return_message: + type: boolean + required: &ref_247 - path - script_path - url - is_flow - filters - - initial_messages - - url_runnable_args + - can_return_message responses: '200': description: websocket trigger updated @@ -11394,7 +13103,7 @@ paths: - name: path in: path required: true - schema: *ref_23 + schema: *ref_26 responses: '200': description: websocket trigger deleted @@ -11416,36 +13125,21 @@ paths: - name: path in: path required: true - schema: *ref_23 + schema: *ref_26 responses: '200': description: websocket trigger deleted content: application/json: schema: + allOf: &ref_124 + - type: object + properties: *ref_122 + required: *ref_123 type: object - properties: &ref_101 - path: - type: string - edited_by: - type: string - edited_at: - type: string - format: date-time - script_path: - type: string + properties: &ref_125 url: type: string - is_flow: - type: boolean - extra_perms: - type: object - additionalProperties: - type: boolean - email: - type: string - workspace_id: - type: string server_id: type: string last_server_ping: @@ -11469,24 +13163,17 @@ paths: initial_messages: type: array items: - anyOf: *ref_100 + anyOf: *ref_121 url_runnable_args: type: object - additionalProperties: *ref_18 - required: &ref_102 - - path - - edited_by - - edited_at - - script_path + additionalProperties: *ref_21 + can_return_message: + type: boolean + required: &ref_126 - url - - extra_perms - - is_flow - - email - - workspace_id - enabled - filters - - initial_messages - - url_runnable_args + - can_return_message /w/{workspace}/websocket_triggers/list: get: summary: list websocket triggers @@ -11527,9 +13214,10 @@ paths: schema: type: array items: + allOf: *ref_124 type: object - properties: *ref_101 - required: *ref_102 + properties: *ref_125 + required: *ref_126 /w/{workspace}/websocket_triggers/exists/{path}: get: summary: does websocket trigger exists @@ -11544,7 +13232,7 @@ paths: - name: path in: path required: true - schema: *ref_23 + schema: *ref_26 responses: '200': description: websocket trigger exists @@ -11566,7 +13254,7 @@ paths: - name: path in: path required: true - schema: *ref_23 + schema: *ref_26 requestBody: description: updated websocket trigger enable required: true @@ -11586,6 +13274,2400 @@ paths: text/plain: schema: type: string + /w/{workspace}/websocket_triggers/test: + post: + summary: test websocket connection + operationId: testWebsocketConnection + tags: + - websocket_trigger + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + requestBody: + description: test websocket connection + required: true + content: + application/json: + schema: + type: object + properties: + url: + type: string + url_runnable_args: + type: object + additionalProperties: *ref_21 + can_return_message: + type: boolean + required: + - url + - can_return_message + responses: + '200': + description: successfuly connected to websocket + content: + text/plain: + schema: + type: string + /w/{workspace}/kafka_triggers/create: + post: + summary: create kafka trigger + operationId: createKafkaTrigger + tags: + - kafka_trigger + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + requestBody: + description: new kafka trigger + required: true + content: + application/json: + schema: + type: object + properties: &ref_270 + path: + type: string + script_path: + type: string + is_flow: + type: boolean + kafka_resource_path: + type: string + group_id: + type: string + topics: + type: array + items: + type: string + enabled: + type: boolean + required: &ref_271 + - path + - script_path + - is_flow + - kafka_resource_path + - group_id + - topics + responses: + '201': + description: kafka trigger created + content: + text/plain: + schema: + type: string + /w/{workspace}/kafka_triggers/update/{path}: + post: + summary: update kafka trigger + operationId: updateKafkaTrigger + tags: + - kafka_trigger + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - name: path + in: path + required: true + schema: *ref_26 + requestBody: + description: updated trigger + required: true + content: + application/json: + schema: + type: object + properties: &ref_272 + kafka_resource_path: + type: string + group_id: + type: string + topics: + type: array + items: + type: string + path: + type: string + script_path: + type: string + is_flow: + type: boolean + required: &ref_273 + - path + - script_path + - kafka_resource_path + - group_id + - topics + - is_flow + responses: + '200': + description: kafka trigger updated + content: + text/plain: + schema: + type: string + /w/{workspace}/kafka_triggers/delete/{path}: + delete: + summary: delete kafka trigger + operationId: deleteKafkaTrigger + tags: + - kafka_trigger + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - name: path + in: path + required: true + schema: *ref_26 + responses: + '200': + description: kafka trigger deleted + content: + text/plain: + schema: + type: string + /w/{workspace}/kafka_triggers/get/{path}: + get: + summary: get kafka trigger + operationId: getKafkaTrigger + tags: + - kafka_trigger + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - name: path + in: path + required: true + schema: *ref_26 + responses: + '200': + description: kafka trigger deleted + content: + application/json: + schema: + allOf: &ref_127 + - type: object + properties: *ref_122 + required: *ref_123 + type: object + properties: &ref_128 + kafka_resource_path: + type: string + group_id: + type: string + topics: + type: array + items: + type: string + server_id: + type: string + last_server_ping: + type: string + format: date-time + error: + type: string + enabled: + type: boolean + required: &ref_129 + - kafka_resource_path + - group_id + - topics + - enabled + /w/{workspace}/kafka_triggers/list: + get: + summary: list kafka triggers + operationId: listKafkaTriggers + tags: + - kafka_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: kafka trigger list + content: + application/json: + schema: + type: array + items: + allOf: *ref_127 + type: object + properties: *ref_128 + required: *ref_129 + /w/{workspace}/kafka_triggers/exists/{path}: + get: + summary: does kafka trigger exists + operationId: existsKafkaTrigger + tags: + - kafka_trigger + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - name: path + in: path + required: true + schema: *ref_26 + responses: + '200': + description: kafka trigger exists + content: + application/json: + schema: + type: boolean + /w/{workspace}/kafka_triggers/setenabled/{path}: + post: + summary: set enabled kafka trigger + operationId: setKafkaTriggerEnabled + tags: + - kafka_trigger + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - name: path + in: path + required: true + schema: *ref_26 + requestBody: + description: updated kafka trigger enable + required: true + content: + application/json: + schema: + type: object + properties: + enabled: + type: boolean + required: + - enabled + responses: + '200': + description: kafka trigger enabled set + content: + text/plain: + schema: + type: string + /w/{workspace}/kafka_triggers/test: + post: + summary: test kafka connection + operationId: testKafkaConnection + tags: + - kafka_trigger + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + requestBody: + description: test kafka connection + required: true + content: + application/json: + schema: + type: object + properties: + connection: + type: object + required: + - connection + responses: + '200': + description: successfuly connected to kafka brokers + content: + text/plain: + schema: + type: string + /w/{workspace}/nats_triggers/create: + post: + summary: create nats trigger + operationId: createNatsTrigger + tags: + - nats_trigger + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + requestBody: + description: new nats trigger + required: true + content: + application/json: + schema: + type: object + properties: &ref_274 + path: + type: string + script_path: + type: string + is_flow: + type: boolean + nats_resource_path: + type: string + use_jetstream: + type: boolean + stream_name: + type: string + consumer_name: + type: string + subjects: + type: array + items: + type: string + enabled: + type: boolean + required: &ref_275 + - path + - script_path + - is_flow + - nats_resource_path + - use_jetstream + - subjects + responses: + '201': + description: nats trigger created + content: + text/plain: + schema: + type: string + /w/{workspace}/nats_triggers/update/{path}: + post: + summary: update nats trigger + operationId: updateNatsTrigger + tags: + - nats_trigger + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - name: path + in: path + required: true + schema: *ref_26 + requestBody: + description: updated trigger + required: true + content: + application/json: + schema: + type: object + properties: &ref_276 + nats_resource_path: + type: string + use_jetstream: + type: boolean + stream_name: + type: string + consumer_name: + type: string + subjects: + type: array + items: + type: string + path: + type: string + script_path: + type: string + is_flow: + type: boolean + required: &ref_277 + - path + - script_path + - nats_resource_path + - use_jetstream + - subjects + - is_flow + responses: + '200': + description: nats trigger updated + content: + text/plain: + schema: + type: string + /w/{workspace}/nats_triggers/delete/{path}: + delete: + summary: delete nats trigger + operationId: deleteNatsTrigger + tags: + - nats_trigger + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - name: path + in: path + required: true + schema: *ref_26 + responses: + '200': + description: nats trigger deleted + content: + text/plain: + schema: + type: string + /w/{workspace}/nats_triggers/get/{path}: + get: + summary: get nats trigger + operationId: getNatsTrigger + tags: + - nats_trigger + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - name: path + in: path + required: true + schema: *ref_26 + responses: + '200': + description: nats trigger deleted + content: + application/json: + schema: + allOf: &ref_130 + - type: object + properties: *ref_122 + required: *ref_123 + type: object + properties: &ref_131 + nats_resource_path: + type: string + use_jetstream: + type: boolean + stream_name: + type: string + consumer_name: + type: string + subjects: + type: array + items: + type: string + server_id: + type: string + last_server_ping: + type: string + format: date-time + error: + type: string + enabled: + type: boolean + required: &ref_132 + - nats_resource_path + - use_jetstream + - subjects + - enabled + /w/{workspace}/nats_triggers/list: + get: + summary: list nats triggers + operationId: listNatsTriggers + tags: + - nats_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: nats trigger list + content: + application/json: + schema: + type: array + items: + allOf: *ref_130 + type: object + properties: *ref_131 + required: *ref_132 + /w/{workspace}/nats_triggers/exists/{path}: + get: + summary: does nats trigger exists + operationId: existsNatsTrigger + tags: + - nats_trigger + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - name: path + in: path + required: true + schema: *ref_26 + responses: + '200': + description: nats trigger exists + content: + application/json: + schema: + type: boolean + /w/{workspace}/nats_triggers/setenabled/{path}: + post: + summary: set enabled nats trigger + operationId: setNatsTriggerEnabled + tags: + - nats_trigger + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - name: path + in: path + required: true + schema: *ref_26 + requestBody: + description: updated nats trigger enable + required: true + content: + application/json: + schema: + type: object + properties: + enabled: + type: boolean + required: + - enabled + responses: + '200': + description: nats trigger enabled set + content: + text/plain: + schema: + type: string + /w/{workspace}/nats_triggers/test: + post: + summary: test NATS connection + operationId: testNatsConnection + tags: + - nats_trigger + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + requestBody: + description: test nats connection + required: true + content: + application/json: + schema: + type: object + properties: + connection: + type: object + required: + - connection + responses: + '200': + description: successfuly connected to NATS servers + content: + text/plain: + schema: + type: string + /w/{workspace}/sqs_triggers/create: + post: + summary: create sqs trigger + operationId: createSqsTrigger + tags: + - sqs_trigger + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + requestBody: + description: new sqs trigger + required: true + content: + application/json: + schema: + type: object + properties: &ref_257 + queue_url: + type: string + aws_auth_resource_type: + type: string + enum: &ref_133 + - oidc + - credentials + aws_resource_path: + type: string + message_attributes: + type: array + items: + type: string + path: + type: string + script_path: + type: string + is_flow: + type: boolean + enabled: + type: boolean + required: &ref_258 + - queue_url + - aws_resource_path + - path + - script_path + - is_flow + - aws_auth_resource_type + responses: + '201': + description: sqs trigger created + content: + text/plain: + schema: + type: string + /w/{workspace}/sqs_triggers/update/{path}: + post: + summary: update sqs trigger + operationId: updateSqsTrigger + tags: + - sqs_trigger + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - name: path + in: path + required: true + schema: *ref_26 + requestBody: + description: updated trigger + required: true + content: + application/json: + schema: + type: object + properties: &ref_259 + queue_url: + type: string + aws_auth_resource_type: + type: string + enum: *ref_133 + aws_resource_path: + type: string + message_attributes: + type: array + items: + type: string + path: + type: string + script_path: + type: string + is_flow: + type: boolean + enabled: + type: boolean + required: &ref_260 + - queue_url + - aws_resource_path + - path + - script_path + - is_flow + - enabled + - aws_auth_resource_type + responses: + '200': + description: sqs trigger updated + content: + text/plain: + schema: + type: string + /w/{workspace}/sqs_triggers/delete/{path}: + delete: + summary: delete sqs trigger + operationId: deleteSqsTrigger + tags: + - sqs_trigger + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - name: path + in: path + required: true + schema: *ref_26 + responses: + '200': + description: sqs trigger deleted + content: + text/plain: + schema: + type: string + /w/{workspace}/sqs_triggers/get/{path}: + get: + summary: get sqs trigger + operationId: getSqsTrigger + tags: + - sqs_trigger + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - name: path + in: path + required: true + schema: *ref_26 + responses: + '200': + description: sqs trigger deleted + content: + application/json: + schema: + allOf: &ref_134 + - type: object + properties: *ref_122 + required: *ref_123 + type: object + properties: &ref_135 + queue_url: + type: string + aws_auth_resource_type: + type: string + enum: *ref_133 + aws_resource_path: + type: string + message_attributes: + type: array + items: + type: string + server_id: + type: string + last_server_ping: + type: string + format: date-time + error: + type: string + enabled: + type: boolean + required: &ref_136 + - queue_url + - aws_resource_path + - enabled + - aws_auth_resource_type + /w/{workspace}/sqs_triggers/list: + get: + summary: list sqs triggers + operationId: listSqsTriggers + tags: + - sqs_trigger + parameters: + - required: true + name: workspace + in: path + schema: *ref_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: sqs trigger list + content: + application/json: + schema: + type: array + items: + allOf: *ref_134 + type: object + properties: *ref_135 + required: *ref_136 + /w/{workspace}/sqs_triggers/exists/{path}: + get: + summary: does sqs trigger exists + operationId: existsSqsTrigger + tags: + - sqs_trigger + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - name: path + in: path + required: true + schema: *ref_26 + responses: + '200': + description: sqs trigger exists + content: + application/json: + schema: + type: boolean + /w/{workspace}/sqs_triggers/setenabled/{path}: + post: + summary: set enabled sqs trigger + operationId: setSqsTriggerEnabled + tags: + - sqs_trigger + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - name: path + in: path + required: true + schema: *ref_26 + requestBody: + description: updated sqs trigger enable + required: true + content: + application/json: + schema: + type: object + properties: + enabled: + type: boolean + required: + - enabled + responses: + '200': + description: sqs trigger enabled set + content: + text/plain: + schema: + type: string + /w/{workspace}/sqs_triggers/test: + post: + summary: test sqs connection + operationId: testSqsConnection + tags: + - sqs_trigger + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + requestBody: + description: test sqs connection + required: true + content: + application/json: + schema: + type: object + properties: + connection: + type: object + required: + - connection + responses: + '200': + description: successfuly connected to sqs + content: + text/plain: + schema: + type: string + /w/{workspace}/mqtt_triggers/create: + post: + summary: create mqtt trigger + operationId: createMqttTrigger + tags: + - mqtt_trigger + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + requestBody: + description: new mqtt trigger + required: true + content: + application/json: + schema: + type: object + properties: &ref_249 + mqtt_resource_path: + type: string + subscribe_topics: + type: array + items: + type: object + properties: &ref_137 + qos: + type: string + enum: &ref_248 + - qos0 + - qos1 + - qos2 + topic: + type: string + required: &ref_138 + - qos + - topic + client_id: + type: string + v3_config: + type: object + properties: &ref_139 + clean_session: + type: boolean + v5_config: + type: object + properties: &ref_140 + clean_start: + type: boolean + topic_alias: + type: number + session_expiry_interval: + type: number + client_version: + type: string + enum: &ref_141 + - v3 + - v5 + path: + type: string + script_path: + type: string + is_flow: + type: boolean + enabled: + type: boolean + required: &ref_250 + - path + - script_path + - is_flow + - subscribe_topics + - mqtt_resource_path + responses: + '201': + description: mqtt trigger created + content: + text/plain: + schema: + type: string + /w/{workspace}/mqtt_triggers/update/{path}: + post: + summary: update mqtt trigger + operationId: updateMqttTrigger + tags: + - mqtt_trigger + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - name: path + in: path + required: true + schema: *ref_26 + requestBody: + description: updated trigger + required: true + content: + application/json: + schema: + type: object + properties: &ref_251 + mqtt_resource_path: + type: string + subscribe_topics: + type: array + items: + type: object + properties: *ref_137 + required: *ref_138 + client_id: + type: string + v3_config: + type: object + properties: *ref_139 + v5_config: + type: object + properties: *ref_140 + client_version: + type: string + enum: *ref_141 + path: + type: string + script_path: + type: string + is_flow: + type: boolean + enabled: + type: boolean + required: &ref_252 + - path + - script_path + - is_flow + - enabled + - subscribe_topics + - mqtt_resource_path + responses: + '200': + description: mqtt trigger updated + content: + text/plain: + schema: + type: string + /w/{workspace}/mqtt_triggers/delete/{path}: + delete: + summary: delete mqtt trigger + operationId: deleteMqttTrigger + tags: + - mqtt_trigger + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - name: path + in: path + required: true + schema: *ref_26 + responses: + '200': + description: mqtt trigger deleted + content: + text/plain: + schema: + type: string + /w/{workspace}/mqtt_triggers/get/{path}: + get: + summary: get mqtt trigger + operationId: getMqttTrigger + tags: + - mqtt_trigger + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - name: path + in: path + required: true + schema: *ref_26 + responses: + '200': + description: mqtt trigger deleted + content: + application/json: + schema: + allOf: &ref_142 + - type: object + properties: *ref_122 + required: *ref_123 + type: object + properties: &ref_143 + mqtt_resource_path: + type: string + subscribe_topics: + type: array + items: + type: object + properties: *ref_137 + required: *ref_138 + v3_config: + type: object + properties: *ref_139 + v5_config: + type: object + properties: *ref_140 + client_id: + type: string + client_version: + type: string + enum: *ref_141 + server_id: + type: string + last_server_ping: + type: string + format: date-time + error: + type: string + enabled: + type: boolean + required: &ref_144 + - enabled + - subscribe_topics + - mqtt_resource_path + /w/{workspace}/mqtt_triggers/list: + get: + summary: list mqtt triggers + operationId: listMqttTriggers + tags: + - mqtt_trigger + parameters: + - required: true + name: workspace + in: path + schema: *ref_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: mqtt trigger list + content: + application/json: + schema: + type: array + items: + allOf: *ref_142 + type: object + properties: *ref_143 + required: *ref_144 + /w/{workspace}/mqtt_triggers/exists/{path}: + get: + summary: does mqtt trigger exists + operationId: existsMqttTrigger + tags: + - mqtt_trigger + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - name: path + in: path + required: true + schema: *ref_26 + responses: + '200': + description: mqtt trigger exists + content: + application/json: + schema: + type: boolean + /w/{workspace}/mqtt_triggers/setenabled/{path}: + post: + summary: set enabled mqtt trigger + operationId: setMqttTriggerEnabled + tags: + - mqtt_trigger + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - name: path + in: path + required: true + schema: *ref_26 + requestBody: + description: updated mqtt trigger enable + required: true + content: + application/json: + schema: + type: object + properties: + enabled: + type: boolean + required: + - enabled + responses: + '200': + description: mqtt trigger enabled set + content: + text/plain: + schema: + type: string + /w/{workspace}/mqtt_triggers/test: + post: + summary: test mqtt connection + operationId: testMqttConnection + tags: + - mqtt_trigger + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + requestBody: + description: test mqtt connection + required: true + content: + application/json: + schema: + type: object + properties: + connection: + type: object + required: + - connection + responses: + '200': + description: successfully connected to mqtt + content: + text/plain: + schema: + type: string + /w/{workspace}/gcp_triggers/create: + post: + summary: create gcp trigger + operationId: createGcpTrigger + tags: + - gcp_trigger + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + requestBody: + description: new gcp trigger + required: true + content: + application/json: + schema: + type: object + properties: &ref_145 + gcp_resource_path: + type: string + subscription_mode: + type: string + enum: &ref_150 + - existing + - create_update + description: >- + The mode of subscription. 'existing' means using an existing + GCP subscription, while 'create_update' involves creating or + updating a new subscription. + topic_id: + type: string + subscription_id: + type: string + base_endpoint: + type: string + delivery_type: + type: string + enum: &ref_147 + - push + - pull + delivery_config: + type: object + properties: &ref_148 + audience: + type: string + authenticate: + type: boolean + required: &ref_149 + - authenticate + - base_endpoint + path: + type: string + script_path: + type: string + is_flow: + type: boolean + enabled: + type: boolean + required: &ref_146 + - path + - script_path + - is_flow + - gcp_resource_path + - topic_id + - subscription_mode + responses: + '201': + description: gcp trigger created + content: + text/plain: + schema: + type: string + /w/{workspace}/gcp_triggers/update/{path}: + post: + summary: update gcp trigger + operationId: updateGcpTrigger + tags: + - gcp_trigger + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - name: path + in: path + required: true + schema: *ref_26 + requestBody: + description: updated trigger + required: true + content: + application/json: + schema: + type: object + properties: *ref_145 + required: *ref_146 + responses: + '200': + description: gcp trigger updated + content: + text/plain: + schema: + type: string + /w/{workspace}/gcp_triggers/delete/{path}: + delete: + summary: delete gcp trigger + operationId: deleteGcpTrigger + tags: + - gcp_trigger + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - name: path + in: path + required: true + schema: *ref_26 + responses: + '200': + description: gcp trigger deleted + content: + text/plain: + schema: + type: string + /w/{workspace}/gcp_triggers/get/{path}: + get: + summary: get gcp trigger + operationId: getGcpTrigger + tags: + - gcp_trigger + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - name: path + in: path + required: true + schema: *ref_26 + responses: + '200': + description: gcp trigger deleted + content: + application/json: + schema: + allOf: &ref_151 + - type: object + properties: *ref_122 + required: *ref_123 + type: object + properties: &ref_152 + gcp_resource_path: + type: string + topic_id: + type: string + subscription_id: + type: string + server_id: + type: string + delivery_type: + type: string + enum: *ref_147 + delivery_config: + type: object + properties: *ref_148 + required: *ref_149 + subscription_mode: + type: string + enum: *ref_150 + description: >- + The mode of subscription. 'existing' means using an + existing GCP subscription, while 'create_update' involves + creating or updating a new subscription. + last_server_ping: + type: string + format: date-time + error: + type: string + enabled: + type: boolean + required: &ref_153 + - gcp_resource_path + - topic_id + - subscription_id + - enabled + - delivery_type + - subscription_mode + /w/{workspace}/gcp_triggers/list: + get: + summary: list gcp triggers + operationId: listGcpTriggers + tags: + - gcp_trigger + parameters: + - required: true + name: workspace + in: path + schema: *ref_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: gcp trigger list + content: + application/json: + schema: + type: array + items: + allOf: *ref_151 + type: object + properties: *ref_152 + required: *ref_153 + /w/{workspace}/gcp_triggers/exists/{path}: + get: + summary: does gcp trigger exists + operationId: existsGcpTrigger + tags: + - gcp_trigger + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - name: path + in: path + required: true + schema: *ref_26 + responses: + '200': + description: gcp trigger exists + content: + application/json: + schema: + type: boolean + /w/{workspace}/gcp_triggers/setenabled/{path}: + post: + summary: set enabled gcp trigger + operationId: setGcpTriggerEnabled + tags: + - gcp_trigger + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - name: path + in: path + required: true + schema: *ref_26 + requestBody: + description: updated gcp trigger enable + required: true + content: + application/json: + schema: + type: object + properties: + enabled: + type: boolean + required: + - enabled + responses: + '200': + description: gcp trigger enabled set + content: + text/plain: + schema: + type: string + /w/{workspace}/gcp_triggers/test: + post: + summary: test gcp connection + operationId: testGcpConnection + tags: + - gcp_trigger + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + requestBody: + description: test gcp connection + required: true + content: + application/json: + schema: + type: object + properties: + connection: + type: object + required: + - connection + responses: + '200': + description: try to connect to a gcp broker + content: + text/plain: + schema: + type: string + /w/{workspace}/gcp_triggers/subscriptions/delete/{path}: + delete: + summary: delete gcp trigger + operationId: deleteGcpSubscription + tags: + - gcp_trigger + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - name: path + in: path + required: true + schema: *ref_26 + requestBody: + description: args to delete subscription from google cloud + required: true + content: + application/json: + schema: + type: object + properties: &ref_255 + subscription_id: + type: string + required: &ref_256 + - subscription_id + responses: + '200': + description: gcp trigger deleted + content: + text/plain: + schema: + type: string + /w/{workspace}/gcp_triggers/topics/list/{path}: + get: + summary: list all topics of google cloud service + operationId: listGoogleTopics + tags: + - gcp_trigger + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - name: path + in: path + required: true + schema: *ref_26 + responses: + '200': + description: get all google topics + content: + application/json: + schema: + type: array + items: + type: string + /w/{workspace}/gcp_triggers/subscriptions/list/{path}: + post: + summary: list all subscription of a give topic from google cloud service + operationId: listAllTGoogleTopicSubscriptions + tags: + - gcp_trigger + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - name: path + in: path + required: true + schema: *ref_26 + requestBody: + description: args to get subscription's topic from google cloud + required: true + content: + application/json: + schema: + type: object + properties: &ref_253 + topic_id: + type: string + required: &ref_254 + - topic_id + responses: + '200': + description: get all google topic subscriptions name + content: + application/json: + schema: + type: array + items: + type: string + /w/{workspace}/postgres_triggers/is_valid_postgres_configuration/{path}: + get: + summary: check if postgres configuration is set to logical + operationId: isValidPostgresConfiguration + tags: + - postgres_trigger + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - name: path + in: path + required: true + schema: *ref_26 + responses: + '200': + description: boolean that indicates if postgres is set to logical level or not + content: + application/json: + schema: + type: boolean + /w/{workspace}/postgres_triggers/create_template_script: + post: + summary: create template script + operationId: createTemplateScript + tags: + - postgres_trigger + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + requestBody: + description: template script + required: true + content: + application/json: + schema: + type: object + properties: &ref_264 + postgres_resource_path: + type: string + relations: + type: array + items: + type: object + properties: &ref_155 + schema_name: + type: string + table_to_track: + type: array + items: &ref_262 + type: object + properties: + table_name: + type: string + columns_name: + type: array + items: + type: string + where_clause: + type: string + required: + - table_name + required: &ref_156 + - schema_name + - table_to_track + language: + type: string + enum: &ref_263 + - Typescript + required: &ref_265 + - postgres_resource_path + - relations + - language + responses: + '200': + description: custom id to retrieve template script + content: + text/plain: + schema: + type: string + /w/{workspace}/postgres_triggers/get_template_script/{id}: + get: + summary: get template script + operationId: getTemplateScript + tags: + - postgres_trigger + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - name: id + in: path + required: true + schema: &ref_185 + type: string + responses: + '200': + description: template script + content: + text/plain: + schema: + type: string + /w/{workspace}/postgres_triggers/slot/list/{path}: + get: + summary: list postgres replication slot + operationId: listPostgresReplicationSlot + tags: + - postgres_trigger + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - name: path + in: path + required: true + schema: *ref_26 + responses: + '200': + description: list postgres slot + content: + application/json: + schema: + type: array + items: + type: object + properties: &ref_261 + slot_name: + type: string + active: + type: boolean + /w/{workspace}/postgres_triggers/slot/create/{path}: + post: + summary: create replication slot for postgres + operationId: createPostgresReplicationSlot + tags: + - postgres_trigger + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - name: path + in: path + required: true + schema: *ref_26 + requestBody: + description: new slot for postgres + required: true + content: + application/json: + schema: + type: object + properties: &ref_154 + name: + type: string + responses: + '201': + description: slot created + content: + text/plain: + schema: + type: string + /w/{workspace}/postgres_triggers/slot/delete/{path}: + delete: + summary: delete postgres replication slot + operationId: deletePostgresReplicationSlot + tags: + - postgres_trigger + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - name: path + in: path + required: true + schema: *ref_26 + requestBody: + description: replication slot of postgres + required: true + content: + application/json: + schema: + type: object + properties: *ref_154 + responses: + '200': + description: postgres replication slot deleted + content: + text/plain: + schema: + type: string + /w/{workspace}/postgres_triggers/publication/list/{path}: + get: + summary: list postgres publication + operationId: listPostgresPublication + tags: + - postgres_trigger + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - name: path + in: path + required: true + schema: *ref_26 + responses: + '200': + description: database publication list + content: + application/json: + schema: + type: array + items: + type: string + /w/{workspace}/postgres_triggers/publication/get/{publication}/{path}: + get: + summary: get postgres publication + operationId: getPostgresPublication + tags: + - postgres_trigger + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - name: path + in: path + required: true + schema: *ref_26 + - name: publication + in: path + required: true + schema: &ref_157 + type: string + responses: + '200': + description: postgres publication get + content: + application/json: + schema: + type: object + properties: &ref_158 + table_to_track: + type: array + items: + type: object + properties: *ref_155 + required: *ref_156 + transaction_to_track: + type: array + items: + type: string + required: &ref_159 + - transaction_to_track + /w/{workspace}/postgres_triggers/publication/create/{publication}/{path}: + post: + summary: create publication for postgres + operationId: createPostgresPublication + tags: + - postgres_trigger + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - name: path + in: path + required: true + schema: *ref_26 + - name: publication + in: path + required: true + schema: *ref_157 + requestBody: + description: new publication for postgres + required: true + content: + application/json: + schema: + type: object + properties: *ref_158 + required: *ref_159 + responses: + '201': + description: publication created + content: + text/plain: + schema: + type: string + /w/{workspace}/postgres_triggers/publication/update/{publication}/{path}: + post: + summary: update publication for postgres + operationId: updatePostgresPublication + tags: + - postgres_trigger + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - name: path + in: path + required: true + schema: *ref_26 + - name: publication + in: path + required: true + schema: *ref_157 + requestBody: + description: update publication for postgres + required: true + content: + application/json: + schema: + type: object + properties: *ref_158 + required: *ref_159 + responses: + '201': + description: publication updated + content: + text/plain: + schema: + type: string + /w/{workspace}/postgres_triggers/publication/delete/{publication}/{path}: + delete: + summary: delete postgres publication + operationId: deletePostgresPublication + tags: + - postgres_trigger + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - name: path + in: path + required: true + schema: *ref_26 + - name: publication + in: path + required: true + schema: *ref_157 + responses: + '200': + description: postgres publication deleted + content: + text/plain: + schema: + type: string + /w/{workspace}/postgres_triggers/create: + post: + summary: create postgres trigger + operationId: createPostgresTrigger + tags: + - postgres_trigger + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + requestBody: + description: new postgres trigger + required: true + content: + application/json: + schema: + type: object + properties: &ref_266 + replication_slot_name: + type: string + publication_name: + type: string + path: + type: string + script_path: + type: string + is_flow: + type: boolean + enabled: + type: boolean + postgres_resource_path: + type: string + publication: + type: object + properties: *ref_158 + required: *ref_159 + required: &ref_267 + - path + - script_path + - is_flow + - enabled + - postgres_resource_path + responses: + '201': + description: postgres trigger created + content: + text/plain: + schema: + type: string + /w/{workspace}/postgres_triggers/update/{path}: + post: + summary: update postgres trigger + operationId: updatePostgresTrigger + tags: + - postgres_trigger + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - name: path + in: path + required: true + schema: *ref_26 + requestBody: + description: updated trigger + required: true + content: + application/json: + schema: + type: object + properties: &ref_268 + replication_slot_name: + type: string + publication_name: + type: string + path: + type: string + script_path: + type: string + is_flow: + type: boolean + enabled: + type: boolean + postgres_resource_path: + type: string + publication: + type: object + properties: *ref_158 + required: *ref_159 + required: &ref_269 + - path + - script_path + - is_flow + - enabled + - postgres_resource_path + - publication_name + - replication_slot_name + responses: + '200': + description: postgres trigger updated + content: + text/plain: + schema: + type: string + /w/{workspace}/postgres_triggers/delete/{path}: + delete: + summary: delete postgres trigger + operationId: deletePostgresTrigger + tags: + - postgres_trigger + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - name: path + in: path + required: true + schema: *ref_26 + responses: + '200': + description: postgres trigger deleted + content: + text/plain: + schema: + type: string + /w/{workspace}/postgres_triggers/get/{path}: + get: + summary: get postgres trigger + operationId: getPostgresTrigger + tags: + - postgres_trigger + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - name: path + in: path + required: true + schema: *ref_26 + responses: + '200': + description: get postgres trigger + content: + application/json: + schema: + allOf: &ref_160 + - type: object + properties: *ref_122 + required: *ref_123 + type: object + properties: &ref_161 + enabled: + type: boolean + postgres_resource_path: + type: string + publication_name: + type: string + server_id: + type: string + replication_slot_name: + type: string + error: + type: string + last_server_ping: + type: string + format: date-time + required: &ref_162 + - enabled + - postgres_resource_path + - replication_slot_name + - publication_name + /w/{workspace}/postgres_triggers/list: + get: + summary: list postgres triggers + operationId: listPostgresTriggers + tags: + - postgres_trigger + parameters: + - required: true + name: workspace + in: path + schema: *ref_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: postgres trigger list + content: + application/json: + schema: + type: array + items: + allOf: *ref_160 + type: object + properties: *ref_161 + required: *ref_162 + /w/{workspace}/postgres_triggers/exists/{path}: + get: + summary: does postgres trigger exists + operationId: existsPostgresTrigger + tags: + - postgres_trigger + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - name: path + in: path + required: true + schema: *ref_26 + responses: + '200': + description: postgres trigger exists + content: + application/json: + schema: + type: boolean + /w/{workspace}/postgres_triggers/setenabled/{path}: + post: + summary: set enabled postgres trigger + operationId: setPostgresTriggerEnabled + tags: + - postgres_trigger + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - name: path + in: path + required: true + schema: *ref_26 + requestBody: + description: updated postgres trigger enable + required: true + content: + application/json: + schema: + type: object + properties: + enabled: + type: boolean + required: + - enabled + responses: + '200': + description: postgres trigger enabled set + content: + text/plain: + schema: + type: string + /w/{workspace}/postgres_triggers/test: + post: + summary: test postgres connection + operationId: testPostgresConnection + tags: + - postgres_trigger + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + requestBody: + description: test postgres connection + required: true + content: + application/json: + schema: + type: object + properties: + database: + type: string + required: + - database + responses: + '200': + description: successfuly connected to postgres + content: + text/plain: + schema: + type: string /groups/list: get: summary: list instance groups @@ -11601,7 +15683,7 @@ paths: type: array items: type: object - properties: &ref_104 + properties: &ref_164 name: type: string summary: @@ -11610,7 +15692,7 @@ paths: type: array items: type: string - required: &ref_105 + required: &ref_165 - name /groups/get/{name}: get: @@ -11622,7 +15704,7 @@ paths: - name: name in: path required: true - schema: *ref_103 + schema: *ref_163 responses: '200': description: instance group @@ -11630,8 +15712,8 @@ paths: application/json: schema: type: object - properties: *ref_104 - required: *ref_105 + properties: *ref_164 + required: *ref_165 /groups/create: post: summary: create instance group @@ -11669,7 +15751,7 @@ paths: - name: name in: path required: true - schema: *ref_103 + schema: *ref_163 requestBody: description: update instance group required: true @@ -11699,7 +15781,7 @@ paths: - name: name in: path required: true - schema: *ref_103 + schema: *ref_163 responses: '200': description: instance group deleted @@ -11717,7 +15799,7 @@ paths: - name: name in: path required: true - schema: *ref_103 + schema: *ref_163 requestBody: description: user to add to instance group required: true @@ -11747,7 +15829,7 @@ paths: - name: name in: path required: true - schema: *ref_103 + schema: *ref_163 requestBody: description: user to remove from instance group required: true @@ -11782,7 +15864,7 @@ paths: type: array items: type: object - properties: &ref_106 + properties: &ref_166 name: type: string summary: @@ -11797,7 +15879,7 @@ paths: type: string external_id: type: string - required: &ref_107 + required: &ref_167 - name /groups/overwrite: post: @@ -11814,8 +15896,8 @@ paths: type: array items: type: object - properties: *ref_106 - required: *ref_107 + properties: *ref_166 + required: *ref_167 responses: '200': description: success message @@ -11851,7 +15933,7 @@ paths: type: array items: type: object - properties: &ref_108 + properties: &ref_168 name: type: string summary: @@ -11864,7 +15946,7 @@ paths: type: object additionalProperties: type: boolean - required: &ref_109 + required: &ref_169 - name /w/{workspace}/groups/listnames: get: @@ -11937,7 +16019,7 @@ paths: - name: name in: path required: true - schema: *ref_103 + schema: *ref_163 requestBody: description: updated group required: true @@ -11969,7 +16051,7 @@ paths: - name: name in: path required: true - schema: *ref_103 + schema: *ref_163 responses: '200': description: group deleted @@ -11991,7 +16073,7 @@ paths: - name: name in: path required: true - schema: *ref_103 + schema: *ref_163 responses: '200': description: group @@ -11999,8 +16081,8 @@ paths: application/json: schema: type: object - properties: *ref_108 - required: *ref_109 + properties: *ref_168 + required: *ref_169 /w/{workspace}/groups/adduser/{name}: post: summary: add user to group @@ -12015,7 +16097,7 @@ paths: - name: name in: path required: true - schema: *ref_103 + schema: *ref_163 requestBody: description: added user to group required: true @@ -12047,7 +16129,7 @@ paths: - name: name in: path required: true - schema: *ref_103 + schema: *ref_163 requestBody: description: added user to group required: true @@ -12093,7 +16175,7 @@ paths: type: array items: type: object - properties: &ref_110 + properties: &ref_170 name: type: string owners: @@ -12111,7 +16193,7 @@ paths: edited_at: type: string format: date-time - required: &ref_111 + required: &ref_171 - name - owners - extra_perms @@ -12193,7 +16275,7 @@ paths: - name: name in: path required: true - schema: *ref_103 + schema: *ref_163 requestBody: description: update folder required: true @@ -12232,7 +16314,7 @@ paths: - name: name in: path required: true - schema: *ref_103 + schema: *ref_163 responses: '200': description: folder deleted @@ -12254,7 +16336,7 @@ paths: - name: name in: path required: true - schema: *ref_103 + schema: *ref_163 responses: '200': description: folder @@ -12262,8 +16344,30 @@ paths: application/json: schema: type: object - properties: *ref_110 - required: *ref_111 + properties: *ref_170 + required: *ref_171 + /w/{workspace}/folders/exists/{name}: + get: + summary: exists folder + operationId: existsFolder + tags: + - folder + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - name: name + in: path + required: true + schema: *ref_163 + responses: + '200': + description: folder exists + content: + application/json: + schema: + type: boolean /w/{workspace}/folders/getusage/{name}: get: summary: get folder usage @@ -12278,7 +16382,7 @@ paths: - name: name in: path required: true - schema: *ref_103 + schema: *ref_163 responses: '200': description: folder @@ -12320,7 +16424,7 @@ paths: - name: name in: path required: true - schema: *ref_103 + schema: *ref_163 requestBody: description: owner user to folder required: true @@ -12354,7 +16458,7 @@ paths: - name: name in: path required: true - schema: *ref_103 + schema: *ref_163 requestBody: description: added owner to folder required: true @@ -12408,7 +16512,7 @@ paths: type: array items: type: object - properties: &ref_183 + properties: &ref_278 worker: type: string worker_instance: @@ -12450,7 +16554,7 @@ paths: type: number wm_memory_usage: type: number - required: &ref_184 + required: &ref_279 - worker - worker_instance - ping_at @@ -12558,13 +16662,39 @@ paths: - name: name in: path required: true - schema: *ref_103 + schema: *ref_163 responses: '200': description: a config content: application/json: - schema: {} + schema: + type: object + nullable: true + properties: &ref_201 + alerts: + type: array + items: + type: object + properties: &ref_199 + name: + type: string + tags_to_monitor: + type: array + items: + type: string + jobs_num_threshold: + type: integer + alert_cooldown_seconds: + type: integer + alert_time_threshold_seconds: + type: integer + required: &ref_200 + - name + - tags_to_monitor + - jobs_num_threshold + - alert_cooldown_seconds + - alert_time_threshold_seconds /configs/update/{name}: post: summary: Update config @@ -12575,7 +16705,7 @@ paths: - name: name in: path required: true - schema: *ref_103 + schema: *ref_163 requestBody: description: worker group required: true @@ -12598,7 +16728,7 @@ paths: - name: name in: path required: true - schema: *ref_103 + schema: *ref_163 responses: '200': description: Delete config @@ -12621,12 +16751,12 @@ paths: type: array items: type: object - properties: &ref_225 + properties: &ref_320 name: type: string config: type: object - required: &ref_226 + required: &ref_321 - name /configs/list_autoscaling_events/{worker_group}: get: @@ -12649,7 +16779,7 @@ paths: type: array items: type: object - properties: &ref_229 + properties: &ref_324 id: type: integer format: int64 @@ -12664,6 +16794,54 @@ paths: applied_at: type: string format: date-time + /configs/list_available_python_versions: + get: + summary: Get currently available python versions provided by UV. + operationId: listAvailablePythonVersions + tags: + - config + responses: + '200': + description: List of python versions + content: + application/json: + schema: + type: array + items: + type: string + /agent_workers/create_agent_token: + post: + summary: create agent token + operationId: createAgentToken + tags: + - agent_workers + requestBody: + description: agent token + required: true + content: + application/json: + schema: + type: object + properties: + worker_group: + type: string + tags: + type: array + items: + type: string + exp: + type: integer + required: + - worker_group + - tags + - exp + responses: + '200': + description: agent token created + content: + application/json: + schema: + type: string /w/{workspace}/acls/get/{kind}/{path}: get: summary: get granular acls @@ -12678,7 +16856,7 @@ paths: - name: path in: path required: true - schema: *ref_23 + schema: *ref_26 - name: kind in: path required: true @@ -12696,6 +16874,12 @@ paths: - raw_app - http_trigger - websocket_trigger + - kafka_trigger + - nats_trigger + - postgres_trigger + - mqtt_trigger + - gcp_trigger + - sqs_trigger responses: '200': description: acls @@ -12719,7 +16903,7 @@ paths: - name: path in: path required: true - schema: *ref_23 + schema: *ref_26 - name: kind in: path required: true @@ -12737,6 +16921,12 @@ paths: - raw_app - http_trigger - websocket_trigger + - kafka_trigger + - nats_trigger + - postgres_trigger + - mqtt_trigger + - gcp_trigger + - sqs_trigger requestBody: description: acl to add required: true @@ -12772,7 +16962,7 @@ paths: - name: path in: path required: true - schema: *ref_23 + schema: *ref_26 - name: kind in: path required: true @@ -12790,6 +16980,12 @@ paths: - raw_app - http_trigger - websocket_trigger + - kafka_trigger + - nats_trigger + - postgres_trigger + - mqtt_trigger + - gcp_trigger + - sqs_trigger requestBody: description: acl to add required: true @@ -12809,10 +17005,10 @@ paths: text/plain: schema: type: string - /w/{workspace}/capture_u/{path}: + /w/{workspace}/capture/set_config: post: - summary: update flow preview capture - operationId: updateCapture + summary: set capture config + operationId: setCaptureConfig tags: - capture parameters: @@ -12820,17 +17016,48 @@ paths: in: path required: true schema: *ref_0 - - name: path - in: path - required: true - schema: *ref_23 + requestBody: + description: capture config + required: true + content: + application/json: + schema: + type: object + properties: + trigger_kind: + type: string + enum: &ref_172 + - webhook + - http + - websocket + - kafka + - email + - nats + - postgres + - sqs + - mqtt + - gcp + path: + type: string + is_flow: + type: boolean + trigger_config: + type: object + required: + - trigger_kind + - path + - is_flow responses: - '204': - description: flow preview captured - /w/{workspace}/capture/{path}: - put: - summary: create flow preview capture - operationId: createCapture + '200': + description: capture config set + content: + application/json: + schema: + type: object + /w/{workspace}/capture/ping_config/{trigger_kind}/{runnable_kind}/{path}: + post: + summary: ping capture config + operationId: pingCaptureConfig tags: - capture parameters: @@ -12838,15 +17065,160 @@ paths: in: path required: true schema: *ref_0 + - name: trigger_kind + in: path + required: true + schema: + type: string + enum: *ref_172 + - name: runnable_kind + in: path + required: true + schema: *ref_73 - name: path in: path required: true - schema: *ref_23 + schema: *ref_26 responses: - '201': - description: flow preview capture created + '200': + description: capture config pinged + /w/{workspace}/capture/get_configs/{runnable_kind}/{path}: get: - summary: get flow preview capture + summary: get capture configs for a script or flow + operationId: getCaptureConfigs + tags: + - capture + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - name: runnable_kind + in: path + required: true + schema: *ref_73 + - name: path + in: path + required: true + schema: *ref_26 + responses: + '200': + description: capture configs for a script or flow + content: + application/json: + schema: + type: array + items: + type: object + properties: &ref_325 + trigger_config: {} + trigger_kind: + type: string + enum: *ref_172 + error: + type: string + last_server_ping: + type: string + format: date-time + required: &ref_326 + - trigger_kind + /w/{workspace}/capture/list/{runnable_kind}/{path}: + get: + summary: list captures for a script or flow + operationId: listCaptures + tags: + - capture + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - name: runnable_kind + in: path + required: true + schema: *ref_73 + - name: path + in: path + required: true + schema: *ref_26 + - name: trigger_kind + in: query + schema: + type: string + enum: *ref_172 + - 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: list of captures for a script or flow + content: + application/json: + schema: + type: array + items: + type: object + properties: &ref_173 + trigger_kind: + type: string + enum: *ref_172 + main_args: {} + preprocessor_args: {} + id: + type: integer + created_at: + type: string + format: date-time + required: &ref_174 + - trigger_kind + - main_args + - preprocessor_args + - id + - created_at + /w/{workspace}/capture/move/{runnable_kind}/{path}: + post: + summary: move captures and configs for a script or flow + operationId: moveCapturesAndConfigs + tags: + - capture + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - name: runnable_kind + in: path + required: true + schema: *ref_73 + - name: path + in: path + required: true + schema: *ref_26 + requestBody: + description: move captures and configs to a new path + required: true + content: + application/json: + schema: + type: object + properties: + new_path: + type: string + responses: + '200': + description: captures and configs moved + content: + text/plain: + schema: + type: string + /w/{workspace}/capture/{id}: + get: + summary: get a capture operationId: getCapture tags: - capture @@ -12855,18 +17227,38 @@ paths: in: path required: true schema: *ref_0 - - name: path + - name: id in: path required: true - schema: *ref_23 + schema: + type: integer responses: '200': - description: captured flow preview + description: capture content: application/json: - schema: {} - '404': - description: capture does not exist for this flow + schema: + type: object + properties: *ref_173 + required: *ref_174 + delete: + summary: delete a capture + operationId: deleteCapture + tags: + - capture + parameters: + - name: workspace + in: path + required: true + schema: *ref_0 + - name: id + in: path + required: true + schema: + type: integer + responses: + '200': + description: capture deleted /w/{workspace}/favorites/star: post: summary: star item @@ -12938,13 +17330,13 @@ paths: schema: *ref_0 - name: runnable_id in: query - schema: &ref_112 + schema: &ref_175 type: string - name: runnable_type in: query - schema: &ref_113 + schema: &ref_176 type: string - enum: &ref_142 + enum: &ref_207 - ScriptHash - ScriptPath - FlowPath @@ -12956,6 +17348,16 @@ paths: description: number of items to return for a given page (default 30, max 100) in: query schema: *ref_6 + - name: args + description: >- + filter on jobs containing those args as a json subset (@> in + postgres) + in: query + schema: *ref_93 + - name: include_preview + in: query + schema: + type: boolean responses: '200': description: Input history for completed jobs @@ -12965,7 +17367,7 @@ paths: type: array items: type: object - properties: &ref_114 + properties: &ref_177 id: type: string name: @@ -12979,7 +17381,7 @@ paths: type: boolean success: type: boolean - required: &ref_115 + required: &ref_178 - id - name - args @@ -13029,10 +17431,10 @@ paths: schema: *ref_0 - name: runnable_id in: query - schema: *ref_112 + schema: *ref_175 - name: runnable_type in: query - schema: *ref_113 + schema: *ref_176 - name: page description: which page to return (start at 1, default 1) in: query @@ -13050,8 +17452,8 @@ paths: type: array items: type: object - properties: *ref_114 - required: *ref_115 + properties: *ref_177 + required: *ref_178 /w/{workspace}/inputs/create: post: summary: Create an Input for future use in a script or flow @@ -13065,10 +17467,10 @@ paths: schema: *ref_0 - name: runnable_id in: query - schema: *ref_112 + schema: *ref_175 - name: runnable_type in: query - schema: *ref_113 + schema: *ref_176 requestBody: description: Input required: true @@ -13076,12 +17478,12 @@ paths: application/json: schema: type: object - properties: &ref_138 + properties: &ref_203 name: type: string args: type: object - required: &ref_139 + required: &ref_204 - name - args - created_by @@ -13111,14 +17513,14 @@ paths: application/json: schema: type: object - properties: &ref_140 + properties: &ref_205 id: type: string name: type: string is_public: type: boolean - required: &ref_141 + required: &ref_206 - id - name - is_public @@ -13144,7 +17546,7 @@ paths: - name: input in: path required: true - schema: &ref_134 + schema: &ref_193 type: string responses: '200': @@ -13177,7 +17579,7 @@ paths: properties: s3_resource: type: object - properties: &ref_116 + properties: &ref_179 bucket: type: string region: @@ -13192,7 +17594,7 @@ paths: type: string pathStyle: type: boolean - required: &ref_117 + required: &ref_180 - bucket - region - endPoint @@ -13243,6 +17645,8 @@ paths: properties: connection_settings_str: type: string + azure_container_path: + type: string required: - connection_settings_str /w/{workspace}/job_helpers/polars_connection_settings: @@ -13268,8 +17672,8 @@ paths: properties: s3_resource: type: object - properties: *ref_116 - required: *ref_117 + properties: *ref_179 + required: *ref_180 responses: '200': description: Connection settings @@ -13290,10 +17694,10 @@ paths: type: boolean client_kwargs: type: object - properties: &ref_118 + properties: &ref_181 region_name: type: string - required: &ref_119 + required: &ref_182 - region_name required: - endpoint_url @@ -13348,8 +17752,8 @@ paths: type: boolean client_kwargs: type: object - properties: *ref_118 - required: *ref_119 + properties: *ref_181 + required: *ref_182 required: - endpoint_url - use_ssl @@ -13407,8 +17811,8 @@ paths: application/json: schema: type: object - properties: *ref_116 - required: *ref_117 + properties: *ref_179 + required: *ref_180 /w/{workspace}/job_helpers/test_connection: get: summary: Test connection to the workspace object storage @@ -13472,10 +17876,10 @@ paths: type: array items: type: object - properties: &ref_202 + properties: &ref_297 s3: type: string - required: &ref_203 + required: &ref_298 - s3 restricted_access: type: boolean @@ -13508,7 +17912,7 @@ paths: application/json: schema: type: object - properties: &ref_204 + properties: &ref_299 mime_type: type: string size_in_bytes: @@ -13572,7 +17976,7 @@ paths: application/json: schema: type: object - properties: &ref_205 + properties: &ref_300 msg: type: string content: @@ -13584,7 +17988,7 @@ paths: - Csv - Parquet - Unknown - required: &ref_206 + required: &ref_301 - content_type /w/{workspace}/job_helpers/load_parquet_preview/{path}: get: @@ -13600,7 +18004,7 @@ paths: - name: path in: path required: true - schema: *ref_23 + schema: *ref_26 - name: offset in: query schema: @@ -13649,7 +18053,7 @@ paths: - name: path in: path required: true - schema: *ref_23 + schema: *ref_26 - name: search_col in: query schema: @@ -13686,7 +18090,7 @@ paths: - name: path in: path required: true - schema: *ref_23 + schema: *ref_26 - name: offset in: query schema: @@ -13847,7 +18251,7 @@ paths: - file_key /w/{workspace}/job_helpers/download_s3_file: get: - summary: Download file to S3 bucket + summary: Download file from S3 bucket operationId: fileDownload tags: - helpers @@ -13930,7 +18334,7 @@ paths: - name: id in: path required: true - schema: *ref_91 + schema: *ref_110 requestBody: description: parameters for statistics retrieval required: true @@ -13959,46 +18363,46 @@ paths: type: array items: type: object - properties: &ref_209 + properties: &ref_304 id: type: string name: type: string - required: &ref_210 + required: &ref_305 - id scalar_metrics: type: array items: type: object - properties: &ref_211 + properties: &ref_306 metric_id: type: string value: type: number - required: &ref_212 + required: &ref_307 - id - value timeseries_metrics: type: array items: type: object - properties: &ref_213 + properties: &ref_308 metric_id: type: string values: type: array items: type: object - properties: &ref_215 + properties: &ref_310 timestamp: type: string format: date-time value: type: number - required: &ref_216 + required: &ref_311 - timestamp - value - required: &ref_214 + required: &ref_309 - id - values /w/{workspace}/job_metrics/set_progress/{id}: @@ -14015,7 +18419,7 @@ paths: - name: id in: path required: true - schema: *ref_91 + schema: *ref_110 requestBody: description: parameters for statistics retrieval required: true @@ -14049,7 +18453,7 @@ paths: - name: id in: path required: true - schema: *ref_91 + schema: *ref_110 responses: '200': description: job progress between 0 and 99 @@ -14067,11 +18471,11 @@ paths: - name: before description: filter on started before (inclusive) timestamp in: query - schema: *ref_120 + schema: *ref_183 - name: after description: filter on created after (exclusive) timestamp in: query - schema: *ref_121 + schema: *ref_184 - name: with_error in: query required: false @@ -14120,7 +18524,7 @@ paths: - name: path in: path required: true - schema: *ref_23 + schema: *ref_26 responses: '200': description: log stream @@ -14143,12 +18547,12 @@ paths: type: array items: type: object - properties: &ref_219 + properties: &ref_314 concurrency_key: type: string total_running: type: number - required: &ref_220 + required: &ref_315 - concurrency_key - total_running /concurrency_groups/prune/{concurrency_id}: @@ -14161,7 +18565,7 @@ paths: - name: concurrency_id in: path required: true - schema: &ref_136 + schema: &ref_195 type: string responses: '200': @@ -14181,7 +18585,7 @@ paths: - name: id in: path required: true - schema: *ref_91 + schema: *ref_110 responses: '200': description: concurrency key for given job @@ -14214,93 +18618,97 @@ paths: - name: created_by description: mask to filter exact matching user creator in: query - schema: *ref_53 + schema: *ref_60 - 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_86 + schema: *ref_98 - 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_46 + schema: *ref_53 - name: script_path_exact description: mask to filter exact matching path in: query - schema: *ref_70 + schema: *ref_83 - name: script_path_start description: mask to filter matching starting path in: query - schema: *ref_71 + schema: *ref_84 - name: schedule_path description: mask to filter by schedule path in: query - schema: *ref_72 + schema: *ref_85 - name: script_hash description: mask to filter exact matching path in: query - schema: *ref_73 + schema: *ref_86 - name: started_before description: filter on started before (inclusive) timestamp in: query - schema: *ref_74 + schema: *ref_87 - name: started_after description: filter on started after (exclusive) timestamp in: query - schema: *ref_75 + schema: *ref_88 - 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_122 + schema: *ref_103 - name: running description: filter on running jobs in: query - schema: *ref_80 + schema: *ref_89 - name: scheduled_for_before_now description: filter on jobs scheduled_for before now (hence waitinf for a worker) in: query - schema: *ref_77 + schema: *ref_90 - 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_123 + schema: *ref_104 - 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_124 + schema: *ref_105 - name: job_kinds description: >- filter on job kind (values 'preview', 'script', 'dependencies', 'flow') separated by, in: query - schema: *ref_78 + schema: *ref_91 - name: args description: >- filter on jobs containing those args as a json subset (@> in postgres) in: query - schema: *ref_81 + schema: *ref_93 - name: tag description: filter on jobs with a given tag/worker group in: query - schema: *ref_83 + schema: *ref_94 - name: result description: >- filter on jobs containing those result as a json subset (@> in postgres) in: query - schema: *ref_82 + schema: *ref_95 + - name: allow_wildcards + description: allow wildcards (*) in the filter of label, tag, worker + in: query + schema: *ref_97 - name: page description: which page to return (start at 1, default 1) in: query @@ -14348,17 +18756,17 @@ paths: application/json: schema: type: object - properties: &ref_221 + properties: &ref_316 jobs: type: array items: - oneOf: *ref_92 - discriminator: *ref_93 + oneOf: *ref_111 + discriminator: *ref_112 obscured_jobs: type: array items: type: object - properties: &ref_143 + properties: &ref_208 typ: type: string started_at: @@ -14371,7 +18779,7 @@ paths: Obscured jobs omitted for security because of too specific filtering type: boolean - required: &ref_222 + required: &ref_317 - jobs - obscured_jobs /srch/w/{workspace}/index/search/job: @@ -14390,6 +18798,11 @@ paths: required: true schema: type: string + - name: pagination_offset + in: query + required: false + schema: + type: integer responses: '200': description: search results @@ -14404,18 +18817,29 @@ paths: ignored) type: array items: - type: object - properties: - dancer: - type: string + type: string hits: description: the jobs that matched the query type: array items: type: object - properties: &ref_227 + properties: &ref_322 dancer: type: string + hit_count: + description: how many jobs matched in total + type: number + index_metadata: + description: Metadata about the index current state + type: object + properties: + indexed_until: + description: Datetime of the most recently indexed job + type: string + format: date-time + lost_lock_ownership: + description: Is the current indexer service being replaced + type: boolean /srch/index/search/service_logs: get: summary: Search through service logs with a string query @@ -14475,7 +18899,7 @@ paths: type: array items: type: object - properties: &ref_228 + properties: &ref_323 dancer: type: string /srch/index/search/count_service_logs: @@ -14490,11 +18914,6 @@ paths: required: true schema: type: string - - name: hosts - in: query - required: true - schema: - type: string - name: min_ts in: query required: false @@ -14525,6 +18944,28 @@ paths: count_per_host: description: count of log lines that matched the query per hostname type: object + /srch/index/delete/{idx_name}: + delete: + summary: Restart container and delete the index to recreate it. + operationId: clearIndex + tags: + - indexSearch + parameters: + - name: idx_name + in: path + required: true + schema: + type: string + enum: + - JobIndex + - ServiceLogIndex + responses: + '200': + description: idx to be deleted and container restarting + content: + text/plain: + schema: + type: string components: securitySchemes: bearerAuth: @@ -14535,6 +18976,11 @@ components: in: cookie name: token parameters: + Id: + name: id + in: path + required: true + schema: *ref_185 Key: name: key in: path @@ -14545,61 +18991,71 @@ components: in: path required: true schema: *ref_0 + PublicationName: + name: publication + in: path + required: true + schema: *ref_157 VersionId: name: version in: path required: true - schema: *ref_125 + schema: *ref_186 Token: name: token in: path required: true - schema: *ref_126 + schema: *ref_187 AccountId: name: id in: path required: true - schema: *ref_27 + schema: *ref_31 ClientName: name: client_name in: path required: true - schema: *ref_26 + schema: *ref_30 ScriptPath: name: path in: path required: true - schema: *ref_35 + schema: *ref_41 ScriptHash: name: hash in: path required: true - schema: *ref_39 + schema: *ref_46 JobId: name: id in: path required: true - schema: *ref_91 + schema: *ref_110 Path: name: path in: path required: true - schema: *ref_23 + schema: *ref_26 + CustomPath: + name: custom_path + in: path + required: true + schema: *ref_74 PathId: name: id in: path required: true - schema: *ref_30 + schema: *ref_34 PathVersion: name: version in: path required: true - schema: *ref_127 + schema: *ref_188 Name: name: name in: path required: true - schema: *ref_103 + schema: *ref_163 Page: name: page description: which page to return (start at 1, default 1) @@ -14614,12 +19070,12 @@ components: name: order_desc description: order by desc order (default true) in: query - schema: *ref_52 + schema: *ref_59 CreatedBy: name: created_by description: mask to filter exact matching user creator in: query - schema: *ref_53 + schema: *ref_60 Label: name: label description: >- @@ -14627,26 +19083,31 @@ components: with as a result an object containing a string in the array at key 'wm_labels') in: query - schema: *ref_86 + schema: *ref_98 + Worker: + name: worker + description: worker this job was ran on + in: query + schema: *ref_82 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_46 + schema: *ref_53 WorkerTag: name: tag description: Override the tag to use in: query - schema: *ref_48 + schema: *ref_55 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_49 + schema: *ref_56 NewJobId: name: job_id description: >- @@ -14654,7 +19115,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_47 + schema: *ref_54 IncludeHeader: name: include_header description: > @@ -14664,14 +19125,14 @@ components: Header's key lowercased and '-'' replaced to '_' such that 'Content-Type' becomes the 'content_type' arg key in: query - schema: *ref_50 + schema: *ref_57 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_51 + schema: *ref_58 Payload: name: payload description: > @@ -14680,253 +19141,283 @@ components: `encodeURIComponent(btoa(JSON.stringify({a: 2})))` in: query - schema: *ref_94 + schema: *ref_113 ScriptStartPath: name: script_path_start description: mask to filter matching starting path in: query - schema: *ref_71 + schema: *ref_84 SchedulePath: name: schedule_path description: mask to filter by schedule path in: query - schema: *ref_72 + schema: *ref_85 ScriptExactPath: name: script_path_exact description: mask to filter exact matching path in: query - schema: *ref_70 + schema: *ref_83 ScriptExactHash: name: script_hash description: mask to filter exact matching path in: query - schema: *ref_73 + schema: *ref_86 CreatedBefore: name: created_before description: filter on created before (inclusive) timestamp in: query - schema: *ref_128 + schema: *ref_101 CreatedAfter: name: created_after description: filter on created after (exclusive) timestamp in: query - schema: *ref_129 + schema: *ref_102 StartedBefore: name: started_before description: filter on started before (inclusive) timestamp in: query - schema: *ref_74 + schema: *ref_87 StartedAfter: name: started_after description: filter on started after (exclusive) timestamp in: query - schema: *ref_75 + schema: *ref_88 Before: name: before description: filter on started before (inclusive) timestamp in: query - schema: *ref_120 + schema: *ref_183 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_123 + schema: *ref_104 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_124 + schema: *ref_105 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_122 + schema: *ref_103 Success: name: success description: filter on successful jobs in: query - schema: *ref_76 + schema: *ref_96 ScheduledForBeforeNow: name: scheduled_for_before_now description: filter on jobs scheduled_for before now (hence waitinf for a worker) in: query - schema: *ref_77 + schema: *ref_90 Suspended: name: suspended description: filter on suspended jobs in: query - schema: *ref_79 + schema: *ref_92 Running: name: running description: filter on running jobs in: query - schema: *ref_80 + schema: *ref_89 + AllowWildcards: + name: allow_wildcards + description: allow wildcards (*) in the filter of label, tag, worker + in: query + schema: *ref_97 ArgsFilter: name: args description: filter on jobs containing those args as a json subset (@> in postgres) in: query - schema: *ref_81 + schema: *ref_93 Tag: name: tag description: filter on jobs with a given tag/worker group in: query - schema: *ref_83 + schema: *ref_94 ResultFilter: name: result description: filter on jobs containing those result as a json subset (@> in postgres) in: query - schema: *ref_82 + schema: *ref_95 After: name: after description: filter on created after (exclusive) timestamp in: query - schema: *ref_121 + schema: *ref_184 Username: name: username description: filter on exact username of user in: query - schema: *ref_130 + schema: *ref_189 Operation: name: operation description: filter on exact or prefix name of operation in: query - schema: *ref_131 + schema: *ref_190 ResourceName: name: resource description: filter on exact or prefix name of resource in: query - schema: *ref_132 + schema: *ref_191 ActionKind: name: action_kind description: filter on type of operation in: query - schema: *ref_133 + schema: *ref_192 JobKinds: name: job_kinds description: >- filter on job kind (values 'preview', 'script', 'dependencies', 'flow') separated by, in: query - schema: *ref_78 + schema: *ref_91 RunnableId: name: runnable_id in: query - schema: *ref_112 + schema: *ref_175 RunnableTypeQuery: name: runnable_type in: query - schema: *ref_113 + schema: *ref_176 InputId: name: input in: path required: true - schema: *ref_134 + schema: *ref_193 GetStarted: name: get_started in: query - schema: *ref_135 + schema: *ref_194 ConcurrencyId: name: concurrency_id in: path required: true - schema: *ref_136 + schema: *ref_195 + RunnableKind: + name: runnable_kind + in: path + required: true + schema: *ref_73 schemas: - AiResource: + InputTransform: + allOf: *ref_77 + AIProvider: + type: string + enum: *ref_196 + AIProviderModel: type: object - properties: *ref_16 - required: *ref_17 + properties: *ref_18 + required: *ref_19 + AIProviderConfig: + type: object + properties: *ref_197 + required: *ref_198 + AIConfig: + type: object + properties: *ref_20 + Alert: + type: object + properties: *ref_199 + required: *ref_200 + Configs: + type: object + nullable: true + properties: *ref_201 Script: - type: object - properties: *ref_37 - required: *ref_38 - NewScript: - type: object - properties: *ref_42 - required: *ref_43 - NewScriptWithDraft: - allOf: *ref_137 - ScriptHistory: type: object properties: *ref_44 required: *ref_45 + NewScript: + type: object + properties: *ref_49 + required: *ref_50 + NewScriptWithDraft: + allOf: *ref_202 + ScriptHistory: + type: object + properties: *ref_51 + required: *ref_52 ScriptArgs: type: object - additionalProperties: *ref_18 + additionalProperties: *ref_21 Input: type: object - properties: *ref_114 - required: *ref_115 + properties: *ref_177 + required: *ref_178 CreateInput: type: object - properties: *ref_138 - required: *ref_139 + properties: *ref_203 + required: *ref_204 UpdateInput: type: object - properties: *ref_140 - required: *ref_141 + properties: *ref_205 + required: *ref_206 RunnableType: type: string - enum: *ref_142 + enum: *ref_207 QueuedJob: type: object - properties: *ref_89 - required: *ref_90 + properties: *ref_108 + required: *ref_109 CompletedJob: type: object - properties: *ref_87 - required: *ref_88 + properties: *ref_106 + required: *ref_107 ObscuredJob: type: object - properties: *ref_143 + properties: *ref_208 Job: - oneOf: *ref_92 - discriminator: *ref_93 + oneOf: *ref_111 + discriminator: *ref_112 User: type: object properties: *ref_10 required: *ref_11 UserUsage: type: object - properties: *ref_144 + properties: *ref_209 Login: type: object - properties: *ref_145 - required: *ref_146 + properties: *ref_210 + required: *ref_211 EditWorkspaceUser: type: object - properties: *ref_147 + properties: *ref_212 TruncatedToken: type: object - properties: *ref_40 - required: *ref_41 + properties: *ref_47 + required: *ref_48 NewToken: type: object - properties: *ref_148 + properties: *ref_213 NewTokenImpersonate: type: object - properties: *ref_149 - required: *ref_150 + properties: *ref_214 + required: *ref_215 ListableVariable: type: object - properties: *ref_24 - required: *ref_25 + properties: *ref_27 + required: *ref_28 ContextualVariable: type: object - properties: *ref_151 - required: *ref_152 + properties: *ref_216 + required: *ref_217 CreateVariable: type: object - properties: *ref_153 - required: *ref_154 + properties: *ref_218 + required: *ref_219 EditVariable: type: object - properties: *ref_155 + properties: *ref_220 AuditLog: type: object properties: *ref_1 @@ -15056,164 +19547,315 @@ components: - error - no_main_func - has_preprocessor + ScriptLang: + type: string + enum: *ref_43 Preview: type: object - properties: *ref_156 - required: *ref_157 + properties: *ref_221 + required: *ref_222 WorkflowTask: + type: object + properties: *ref_223 + required: *ref_224 + WorkflowStatusRecord: + type: object + additionalProperties: *ref_225 + WorkflowStatus: + type: object + properties: *ref_226 + CreateResource: + type: object + properties: *ref_227 + required: *ref_228 + EditResource: + type: object + properties: *ref_229 + Resource: + type: object + properties: *ref_230 + required: *ref_231 + ListableResource: + type: object + properties: *ref_232 + required: *ref_233 + ResourceType: + type: object + properties: *ref_32 + required: *ref_33 + EditResourceType: + type: object + properties: *ref_234 + Schedule: + type: object + properties: *ref_115 + required: *ref_116 + ScheduleWJobs: + allOf: *ref_235 + NewSchedule: + type: object + properties: *ref_236 + required: *ref_237 + EditSchedule: + type: object + properties: *ref_238 + required: *ref_239 + TriggerExtraProperty: + type: object + properties: *ref_122 + required: *ref_123 + AuthenticationMethod: + type: string + enum: *ref_117 + HttpTrigger: + allOf: *ref_118 + type: object + properties: *ref_119 + required: *ref_120 + NewHttpTrigger: + type: object + properties: *ref_240 + required: *ref_241 + EditHttpTrigger: + type: object + properties: *ref_242 + required: *ref_243 + TriggersCount: + type: object + properties: *ref_66 + WebsocketTrigger: + allOf: *ref_124 + type: object + properties: *ref_125 + required: *ref_126 + NewWebsocketTrigger: + type: object + properties: *ref_244 + required: *ref_245 + EditWebsocketTrigger: + type: object + properties: *ref_246 + required: *ref_247 + WebsocketTriggerInitialMessage: + anyOf: *ref_121 + MqttQoS: + type: string + enum: *ref_248 + MqttV3Config: + type: object + properties: *ref_139 + MqttV5Config: + type: object + properties: *ref_140 + MqttSubscribeTopic: + type: object + properties: *ref_137 + required: *ref_138 + MqttClientVersion: + type: string + enum: *ref_141 + MqttTrigger: + allOf: *ref_142 + type: object + properties: *ref_143 + required: *ref_144 + NewMqttTrigger: + type: object + properties: *ref_249 + required: *ref_250 + EditMqttTrigger: + type: object + properties: *ref_251 + required: *ref_252 + DeliveryType: + type: string + enum: *ref_147 + PushConfig: + type: object + properties: *ref_148 + required: *ref_149 + GcpTrigger: + allOf: *ref_151 + type: object + properties: *ref_152 + required: *ref_153 + SubscriptionMode: + type: string + enum: *ref_150 + description: >- + The mode of subscription. 'existing' means using an existing GCP + subscription, while 'create_update' involves creating or updating a new + subscription. + GcpTriggerData: + type: object + properties: *ref_145 + required: *ref_146 + GetAllTopicSubscription: + type: object + properties: *ref_253 + required: *ref_254 + DeleteGcpSubscription: + type: object + properties: *ref_255 + required: *ref_256 + AwsAuthResourceType: + type: string + enum: *ref_133 + SqsTrigger: + allOf: *ref_134 + type: object + properties: *ref_135 + required: *ref_136 + NewSqsTrigger: + type: object + properties: *ref_257 + required: *ref_258 + EditSqsTrigger: + type: object + properties: *ref_259 + required: *ref_260 + Slot: + type: object + properties: *ref_154 + SlotList: + type: object + properties: *ref_261 + PublicationData: type: object properties: *ref_158 required: *ref_159 - WorkflowStatusRecord: + TableToTrack: + type: array + items: *ref_262 + Relations: type: object - additionalProperties: *ref_160 - WorkflowStatus: + properties: *ref_155 + required: *ref_156 + Language: + type: string + enum: *ref_263 + TemplateScript: + type: object + properties: *ref_264 + required: *ref_265 + PostgresTrigger: + allOf: *ref_160 type: object properties: *ref_161 - CreateResource: + required: *ref_162 + NewPostgresTrigger: type: object - properties: *ref_162 - required: *ref_163 - EditResource: + properties: *ref_266 + required: *ref_267 + EditPostgresTrigger: type: object - properties: *ref_164 - Resource: + properties: *ref_268 + required: *ref_269 + KafkaTrigger: + allOf: *ref_127 type: object - properties: *ref_165 - required: *ref_166 - ListableResource: + properties: *ref_128 + required: *ref_129 + NewKafkaTrigger: type: object - properties: *ref_167 - required: *ref_168 - ResourceType: + properties: *ref_270 + required: *ref_271 + EditKafkaTrigger: type: object - properties: *ref_28 - required: *ref_29 - EditResourceType: + properties: *ref_272 + required: *ref_273 + NatsTrigger: + allOf: *ref_130 type: object - properties: *ref_169 - Schedule: + properties: *ref_131 + required: *ref_132 + NewNatsTrigger: type: object - properties: *ref_96 - required: *ref_97 - ScheduleWJobs: - allOf: *ref_170 - NewSchedule: + properties: *ref_274 + required: *ref_275 + EditNatsTrigger: type: object - properties: *ref_171 - required: *ref_172 - EditSchedule: - type: object - properties: *ref_173 - required: *ref_174 - HttpTrigger: - type: object - properties: *ref_98 - required: *ref_99 - NewHttpTrigger: - type: object - properties: *ref_175 - required: *ref_176 - EditHttpTrigger: - type: object - properties: *ref_177 - required: *ref_178 - TriggersCount: - type: object - properties: *ref_59 - WebsocketTrigger: - type: object - properties: *ref_101 - required: *ref_102 - NewWebsocketTrigger: - type: object - properties: *ref_179 - required: *ref_180 - EditWebsocketTrigger: - type: object - properties: *ref_181 - required: *ref_182 - WebsocketTriggerInitialMessage: - anyOf: *ref_100 + properties: *ref_276 + required: *ref_277 Group: type: object - properties: *ref_108 - required: *ref_109 + properties: *ref_168 + required: *ref_169 InstanceGroup: type: object - properties: *ref_104 - required: *ref_105 + properties: *ref_164 + required: *ref_165 Folder: type: object - properties: *ref_110 - required: *ref_111 + properties: *ref_170 + required: *ref_171 WorkerPing: type: object - properties: *ref_183 - required: *ref_184 + properties: *ref_278 + required: *ref_279 UserWorkspaceList: type: object - properties: *ref_185 - required: *ref_186 + properties: *ref_280 + required: *ref_281 CreateWorkspace: type: object - properties: *ref_187 - required: *ref_188 + properties: *ref_282 + required: *ref_283 Workspace: type: object properties: *ref_7 required: *ref_8 WorkspaceInvite: type: object - properties: *ref_14 - required: *ref_15 + properties: *ref_16 + required: *ref_17 GlobalUserInfo: type: object - properties: *ref_12 - required: *ref_13 + properties: *ref_14 + required: *ref_15 Flow: - allOf: *ref_58 + allOf: *ref_65 ExtraPerms: type: object - additionalProperties: *ref_189 + additionalProperties: *ref_284 FlowMetadata: type: object - properties: *ref_190 - required: *ref_191 + properties: *ref_285 + required: *ref_286 OpenFlowWPath: - allOf: *ref_60 + allOf: *ref_67 FlowPreview: type: object - properties: *ref_192 - required: *ref_193 + properties: *ref_287 + required: *ref_288 RestartedFrom: type: object - properties: *ref_194 + properties: *ref_289 Policy: type: object - properties: *ref_61 + properties: *ref_68 ListableApp: type: object - properties: *ref_195 - required: *ref_196 + properties: *ref_290 + required: *ref_291 ListableRawApp: type: object - properties: *ref_197 - required: *ref_198 + properties: *ref_292 + required: *ref_293 AppWithLastVersion: type: object - properties: *ref_62 - required: *ref_63 + properties: *ref_69 + required: *ref_70 AppWithLastVersionWDraft: - allOf: *ref_199 + allOf: *ref_294 AppHistory: type: object - properties: *ref_64 - required: *ref_65 + properties: *ref_71 + required: *ref_72 FlowVersion: type: object - properties: *ref_56 - required: *ref_57 + properties: *ref_63 + required: *ref_64 SlackToken: type: object properties: @@ -15235,46 +19877,46 @@ components: - bot TokenResponse: type: object - properties: *ref_200 - required: *ref_201 + properties: *ref_295 + required: *ref_296 HubScriptKind: - name: kind - schema: *ref_36 + type: string + enum: *ref_42 PolarsClientKwargs: type: object - properties: *ref_118 - required: *ref_119 + properties: *ref_181 + required: *ref_182 LargeFileStorage: type: object - properties: *ref_19 + properties: *ref_22 WindmillLargeFile: type: object - properties: *ref_202 - required: *ref_203 + properties: *ref_297 + required: *ref_298 WindmillFileMetadata: type: object - properties: *ref_204 + properties: *ref_299 WindmillFilePreview: type: object - properties: *ref_205 - required: *ref_206 + properties: *ref_300 + required: *ref_301 S3Resource: type: object - properties: *ref_116 - required: *ref_117 + properties: *ref_179 + required: *ref_180 WorkspaceGitSyncSettings: type: object - properties: *ref_20 + properties: *ref_23 WorkspaceDeployUISettings: type: object - properties: *ref_21 + properties: *ref_24 WorkspaceDefaultScripts: type: object - properties: *ref_22 + properties: *ref_25 GitRepositorySettings: type: object - properties: *ref_207 - required: *ref_208 + properties: *ref_302 + required: *ref_303 UploadFilePart: type: object properties: @@ -15287,126 +19929,195 @@ components: - tag MetricMetadata: type: object - properties: *ref_209 - required: *ref_210 + properties: *ref_304 + required: *ref_305 ScalarMetric: type: object - properties: *ref_211 - required: *ref_212 + properties: *ref_306 + required: *ref_307 TimeseriesMetric: type: object - properties: *ref_213 - required: *ref_214 + properties: *ref_308 + required: *ref_309 MetricDataPoint: type: object - properties: *ref_215 - required: *ref_216 + properties: *ref_310 + required: *ref_311 RawScriptForDependencies: type: object - properties: *ref_217 - required: *ref_218 + properties: *ref_312 + required: *ref_313 ConcurrencyGroup: type: object - properties: *ref_219 - required: *ref_220 + properties: *ref_314 + required: *ref_315 ExtendedJobs: type: object - properties: *ref_221 - required: *ref_222 + properties: *ref_316 + required: *ref_317 ExportedUser: type: object properties: *ref_3 required: *ref_4 GlobalSetting: type: object - properties: *ref_223 - required: *ref_224 + properties: *ref_318 + required: *ref_319 Config: type: object - properties: *ref_225 - required: *ref_226 + properties: *ref_320 + required: *ref_321 ExportedInstanceGroup: type: object - properties: *ref_106 - required: *ref_107 + properties: *ref_166 + required: *ref_167 JobSearchHit: type: object - properties: *ref_227 + properties: *ref_322 LogSearchHit: type: object - properties: *ref_228 + properties: *ref_323 AutoscalingEvent: type: object - properties: *ref_229 + properties: *ref_324 CriticalAlert: type: object - properties: *ref_230 + properties: *ref_29 + CaptureTriggerKind: + type: string + enum: *ref_172 + Capture: + type: object + properties: *ref_173 + required: *ref_174 + CaptureConfig: + type: object + properties: *ref_325 + required: *ref_326 + OperatorSettings: + nullable: true + type: object + required: *ref_12 + properties: *ref_13 + TeamInfo: + type: object + required: *ref_327 + properties: *ref_328 + ChannelInfo: + type: object + required: *ref_329 + properties: *ref_330 + GithubInstallations: + type: array + items: *ref_331 + WorkspaceGithubInstallation: + type: object + properties: + account_id: + type: string + installation_id: + type: number + required: + - account_id + - installation_id + S3Object: + type: object + properties: *ref_75 + required: *ref_76 + TeamsChannel: + type: object + required: + - team_id + - team_name + - channel_id + - channel_name + properties: + team_id: + type: string + description: Microsoft Teams team ID + minLength: 1 + team_name: + type: string + description: Microsoft Teams team name + minLength: 1 + channel_id: + type: string + description: Microsoft Teams channel ID + minLength: 1 + channel_name: + type: string + description: Microsoft Teams channel name + minLength: 1 StaticTransform: type: object - properties: *ref_231 - required: *ref_232 + properties: *ref_332 + required: *ref_333 JavascriptTransform: type: object - properties: *ref_233 - required: *ref_234 - InputTransform: - oneOf: *ref_31 - discriminator: *ref_32 + properties: *ref_334 + required: *ref_335 + schemas-InputTransform: + oneOf: *ref_35 + discriminator: *ref_36 RawScript: type: object - properties: *ref_235 - required: *ref_236 + properties: *ref_336 + required: *ref_337 PathScript: type: object - properties: *ref_237 - required: *ref_238 + properties: *ref_338 + required: *ref_339 PathFlow: type: object - properties: *ref_239 - required: *ref_240 + properties: *ref_340 + required: *ref_341 FlowModule: type: object - properties: *ref_33 - required: *ref_34 + properties: *ref_37 + required: *ref_38 ForloopFlow: type: object - properties: *ref_241 - required: *ref_242 + properties: *ref_342 + required: *ref_343 WhileloopFlow: type: object - properties: *ref_243 - required: *ref_244 + properties: *ref_344 + required: *ref_345 BranchOne: type: object - properties: *ref_245 - required: *ref_246 + properties: *ref_346 + required: *ref_347 BranchAll: type: object - properties: *ref_247 - required: *ref_248 + properties: *ref_348 + required: *ref_349 Identity: type: object - properties: *ref_249 - required: *ref_250 + properties: *ref_350 + required: *ref_351 FlowModuleValue: - oneOf: *ref_251 - discriminator: *ref_252 + oneOf: *ref_352 + discriminator: *ref_353 + StopAfterIf: + type: object + properties: *ref_39 + required: *ref_40 Retry: type: object - properties: *ref_95 + properties: *ref_114 FlowValue: type: object - properties: *ref_66 - required: *ref_67 + properties: *ref_78 + required: *ref_79 OpenFlow: type: object - properties: *ref_54 - required: *ref_55 + properties: *ref_61 + required: *ref_62 FlowStatusModule: type: object - properties: *ref_68 - required: *ref_69 + properties: *ref_80 + required: *ref_81 FlowStatus: type: object - properties: *ref_84 - required: *ref_85 + properties: *ref_99 + required: *ref_100 diff --git a/backend/windmill-api/openapi.yaml b/backend/windmill-api/openapi.yaml index 1b898b3320..3527271aac 100644 --- a/backend/windmill-api/openapi.yaml +++ b/backend/windmill-api/openapi.yaml @@ -4896,8 +4896,6 @@ paths: description: Script version/hash content: application/json: - required: false - schema: $ref: "#/components/schemas/ScriptHistory" @@ -5459,8 +5457,6 @@ paths: description: Flow version content: application/json: - required: false - schema: $ref: "#/components/schemas/FlowVersion" @@ -5490,8 +5486,7 @@ paths: operationId: getFlowVersion parameters: - $ref: "#/components/parameters/WorkspaceId" - - type: string - name: version + - name: version in: path required: true schema: @@ -5513,8 +5508,7 @@ paths: operationId: updateFlowHistory parameters: - $ref: "#/components/parameters/WorkspaceId" - - type: string - name: version + - name: version in: path required: true schema: @@ -6142,10 +6136,8 @@ paths: description: App version content: application/json: - required: false schema: $ref: "#/components/schemas/AppHistory" - /w/{workspace}/apps/list_paths_from_workspace_runnable/{runnable_kind}/{path}: get: summary: list app paths from workspace runnable @@ -6734,11 +6726,6 @@ paths: responses: "201": description: stream of created job uuids separated by \n. Lines may start with 'Error:' - example: | - a1a74c0d-708e-4539-9768-e8b3d37996bd - f0949132-5b30-48fe-bac8-873f047df810 - Error: Could not re-run 0b885808-ae89-4458-af95-c1ca3a13b0a5 - 52b9c01d-1125-4bbb-8bee-d41f26b70066 content: text/event-stream: schema: @@ -7595,7 +7582,8 @@ paths: description: job log content: text/plain: - type: string + schema: + type: string /w/{workspace}/jobs_u/get_flow_debug_info/{id}: get: @@ -12472,7 +12460,6 @@ paths: text/plain: schema: type: string - /concurrency_groups/list: get: summary: List all concurrency groups @@ -13178,7 +13165,47 @@ components: enum: [script, flow] schemas: - $ref: "../../openflow.openapi.yaml#/components/schemas" + # NOTE: Not so many generators and validators support this format: + # $ref: "../../openflow.openapi.yaml#/components/schemas" + # This is why it is better to inline each of schemas for better compat + OpenFlow: + $ref: "../../openflow.openapi.yaml#/components/schemas/OpenFlow" + FlowValue: + $ref: "../../openflow.openapi.yaml#/components/schemas/FlowValue" + Retry: + $ref: "../../openflow.openapi.yaml#/components/schemas/Retry" + StopAfterIf: + $ref: "../../openflow.openapi.yaml#/components/schemas/StopAfterIf" + FlowModule: + $ref: "../../openflow.openapi.yaml#/components/schemas/FlowModule" + InputTransform: + $ref: "../../openflow.openapi.yaml#/components/schemas/InputTransform" + StaticTransform: + $ref: "../../openflow.openapi.yaml#/components/schemas/StaticTransform" + JavascriptTransform: + $ref: "../../openflow.openapi.yaml#/components/schemas/JavascriptTransform" + FlowModuleValue: + $ref: "../../openflow.openapi.yaml#/components/schemas/FlowModuleValue" + RawScript: + $ref: "../../openflow.openapi.yaml#/components/schemas/RawScript" + PathScript: + $ref: "../../openflow.openapi.yaml#/components/schemas/PathScript" + PathFlow: + $ref: "../../openflow.openapi.yaml#/components/schemas/PathFlow" + ForloopFlow: + $ref: "../../openflow.openapi.yaml#/components/schemas/ForloopFlow" + WhileloopFlow: + $ref: "../../openflow.openapi.yaml#/components/schemas/WhileloopFlow" + BranchOne: + $ref: "../../openflow.openapi.yaml#/components/schemas/BranchOne" + BranchAll: + $ref: "../../openflow.openapi.yaml#/components/schemas/BranchAll" + Identity: + $ref: "../../openflow.openapi.yaml#/components/schemas/Identity" + FlowStatus: + $ref: "../../openflow.openapi.yaml#/components/schemas/FlowStatus" + FlowStatusModule: + $ref: "../../openflow.openapi.yaml#/components/schemas/FlowStatusModule" AIProvider: type: string @@ -16228,10 +16255,8 @@ components: - access_token HubScriptKind: - name: kind - schema: - type: string - enum: [script, failure, trigger, approval] + type: string + enum: [script, failure, trigger, approval] PolarsClientKwargs: type: object diff --git a/flake.nix b/flake.nix index f9df73f465..bb193a318f 100644 --- a/flake.nix +++ b/flake.nix @@ -86,6 +86,7 @@ sqlx-cli sccache nsjail + openapi-generator-cli # Python flock diff --git a/frontend/src/lib/components/FlowBuilder.svelte b/frontend/src/lib/components/FlowBuilder.svelte index 4206e4071a..4d2e3fab51 100644 --- a/frontend/src/lib/components/FlowBuilder.svelte +++ b/frontend/src/lib/components/FlowBuilder.svelte @@ -10,7 +10,10 @@ type RawScript, type InputTransform, type TriggersCount, - CaptureService + CaptureService, + + type HubScriptKind + } from '$lib/gen' import { initHistory, push, redo, undo } from '$lib/history' import { @@ -722,7 +725,7 @@ $copilotModulesStore[idx].hubCompletions = scripts as { path: string summary: string - kind: string + kind: HubScriptKind app: string ask_id: number id: number diff --git a/frontend/src/lib/components/copilot/flow.ts b/frontend/src/lib/components/copilot/flow.ts index e34cc94718..02a7afd066 100644 --- a/frontend/src/lib/components/copilot/flow.ts +++ b/frontend/src/lib/components/copilot/flow.ts @@ -1,6 +1,7 @@ import { ScriptService, type FlowModule, + type HubScriptKind, type InputTransform, type PathScript, type RawScript, @@ -22,7 +23,7 @@ export type FlowCopilotModule = { hubCompletions: { path: string summary: string - kind: string + kind: HubScriptKind app: string ask_id: number id: number