Windmill workspace API

The workspace API from Windmill — 96 operation(s) for workspace.

OpenAPI Specification

windmill-workspace-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  version: 1.694.0
  title: Windmill admin workspace API
  contact:
    name: Windmill Team
    email: contact@windmill.dev
    url: https://windmill.dev
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0.html
  x-logo:
    url: https://windmill.dev/img/windmill.svg
servers:
- url: /api
security:
- bearerAuth: []
- cookieAuth: []
tags:
- name: workspace
paths:
  /workspaces/list:
    get:
      summary: List All Workspaces Visible to Me
      operationId: listWorkspaces
      tags:
      - workspace
      responses:
        '200':
          description: all workspaces
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Workspace'
  /workspaces/allowed_domain_auto_invite:
    get:
      summary: Is Domain Allowed for Auto Invi
      operationId: isDomainAllowed
      tags:
      - workspace
      responses:
        '200':
          description: domain allowed or not
          content:
            application/json:
              schema:
                type: boolean
  /workspaces/users:
    get:
      summary: List All Workspaces Visible to Me with User Info
      operationId: listUserWorkspaces
      tags:
      - workspace
      responses:
        '200':
          description: workspace with associated username
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserWorkspaceList'
  /w/{workspace}/workspaces/get_as_superadmin:
    get:
      summary: Get Workspace as Super Admin (require to be Super Admin)
      operationId: getWorkspaceAsSuperAdmin
      tags:
      - workspace
      parameters:
      - $ref: '#/components/parameters/WorkspaceId'
      responses:
        '200':
          description: workspace
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Workspace'
  /workspaces/list_as_superadmin:
    get:
      summary: List All Workspaces as Super Admin (require to be Super Admin)
      operationId: listWorkspacesAsSuperAdmin
      tags:
      - workspace
      parameters:
      - $ref: '#/components/parameters/Page'
      - $ref: '#/components/parameters/PerPage'
      responses:
        '200':
          description: workspaces
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Workspace'
  /workspaces/create:
    post:
      summary: Create Workspace
      operationId: createWorkspace
      tags:
      - workspace
      requestBody:
        description: new token
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateWorkspace'
      responses:
        '201':
          description: token created
          content:
            text/plain:
              schema:
                type: string
  /w/{workspace}/workspaces/create_workspace_fork_branch:
    post:
      summary: Create Forked Workspace Branch with Git Sync
      operationId: createWorkspaceForkGitBranch
      tags:
      - workspace
      parameters:
      - $ref: '#/components/parameters/WorkspaceId'
      requestBody:
        description: new forked workspace
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateWorkspaceFork'
      responses:
        '201':
          description: forked workspace branch created
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
                  format: uuid
  /w/{workspace}/workspaces/create_fork:
    post:
      summary: Create Forked Workspace
      operationId: createWorkspaceFork
      tags:
      - workspace
      parameters:
      - $ref: '#/components/parameters/WorkspaceId'
      requestBody:
        description: new forked workspace
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateWorkspaceFork'
      responses:
        '201':
          description: forked workspace created
          content:
            text/plain:
              schema:
                type: string
  /workspaces/exists:
    post:
      summary: Exists Workspace
      operationId: existsWorkspace
      tags:
      - workspace
      requestBody:
        description: id of workspace
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
              required:
              - id
      responses:
        '200':
          description: status
          content:
            text/plain:
              schema:
                type: boolean
  /workspaces/exists_username:
    post:
      summary: Exists Username
      operationId: existsUsername
      tags:
      - workspace
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                username:
                  type: string
              required:
              - id
              - username
      responses:
        '200':
          description: status
          content:
            text/plain:
              schema:
                type: boolean
  /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}/workspaces/invite_user:
    post:
      summary: Invite User to Workspace
      operationId: inviteUser
      tags:
      - workspace
      parameters:
      - $ref: '#/components/parameters/WorkspaceId'
      requestBody:
        description: WorkspaceInvite
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                email:
                  type: string
                is_admin:
                  type: boolean
                operator:
                  type: boolean
                parent_workspace_id:
                  type: string
                  nullable: true
              required:
              - email
              - is_admin
              - operator
      responses:
        '200':
          description: status
          content:
            text/plain:
              schema:
                type: string
  /w/{workspace}/workspaces/add_user:
    post:
      summary: Add User to Workspace
      operationId: addUser
      tags:
      - workspace
      parameters:
      - $ref: '#/components/parameters/WorkspaceId'
      requestBody:
        description: WorkspaceInvite
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                email:
                  type: string
                is_admin:
                  type: boolean
                username:
                  type: string
                operator:
                  type: boolean
              required:
              - email
              - is_admin
              - operator
      responses:
        '200':
          description: status
          content:
            text/plain:
              schema:
                type: string
  /w/{workspace}/workspaces/create_service_account:
    post:
      summary: Create a Service Account
      operationId: createServiceAccount
      tags:
      - workspace
      parameters:
      - $ref: '#/components/parameters/WorkspaceId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                username:
                  type: string
              required:
              - username
      responses:
        '201':
          description: service account created
          content:
            text/plain:
              schema:
                type: string
  /w/{workspace}/workspaces/delete_invite:
    post:
      summary: Delete User Invite
      operationId: delete invite
      tags:
      - workspace
      parameters:
      - $ref: '#/components/parameters/WorkspaceId'
      requestBody:
        description: WorkspaceInvite
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                email:
                  type: string
                is_admin:
                  type: boolean
                operator:
                  type: boolean
              required:
              - email
              - is_admin
              - operator
      responses:
        '200':
          description: status
          content:
            text/plain:
              schema:
                type: string
  /w/{workspace}/workspaces/archive:
    post:
      summary: Archive Workspace
      operationId: archiveWorkspace
      tags:
      - workspace
      parameters:
      - $ref: '#/components/parameters/WorkspaceId'
      responses:
        '200':
          description: status
          content:
            text/plain:
              schema:
                type: string
  /workspaces/unarchive/{workspace}:
    post:
      summary: Unarchive Workspace
      operationId: unarchiveWorkspace
      tags:
      - workspace
      parameters:
      - $ref: '#/components/parameters/WorkspaceId'
      responses:
        '200':
          description: status
          content:
            text/plain:
              schema:
                type: string
  /workspaces/delete/{workspace}:
    delete:
      summary: Delete Workspace (require Super Admin)
      operationId: deleteWorkspace
      tags:
      - workspace
      parameters:
      - $ref: '#/components/parameters/WorkspaceId'
      - name: only_delete_forks
        in: query
        required: false
        schema:
          type: boolean
      responses:
        '200':
          description: status
          content:
            text/plain:
              schema:
                type: string
  /w/{workspace}/workspaces/leave:
    post:
      summary: Leave Workspace
      operationId: leaveWorkspace
      tags:
      - workspace
      parameters:
      - $ref: '#/components/parameters/WorkspaceId'
      responses:
        '200':
          description: status
          content:
            text/plain:
              schema:
                type: string
  /w/{workspace}/workspaces/get_workspace_name:
    get:
      summary: Get Workspace Name
      operationId: getWorkspaceName
      tags:
      - workspace
      parameters:
      - $ref: '#/components/parameters/WorkspaceId'
      responses:
        '200':
          description: status
          content:
            text/plain:
              schema:
                type: string
  /w/{workspace}/workspaces/change_workspace_name:
    post:
      summary: Change Workspace Name
      operationId: changeWorkspaceName
      tags:
      - workspace
      parameters:
      - $ref: '#/components/parameters/WorkspaceId'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                new_name:
                  type: string
              required:
              - username
      responses:
        '200':
          description: status
          content:
            text/plain:
              schema:
                type: string
  /w/{workspace}/workspaces/change_workspace_id:
    post:
      summary: Change Workspace Id
      operationId: changeWorkspaceId
      tags:
      - workspace
      parameters:
      - $ref: '#/components/parameters/WorkspaceId'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                new_id:
                  type: string
                new_name:
                  type: string
              required:
              - username
      responses:
        '200':
          description: status
          content:
            text/plain:
              schema:
                type: string
  /w/{workspace}/workspaces/change_workspace_color:
    post:
      summary: Change Workspace Id
      operationId: changeWorkspaceColor
      tags:
      - workspace
      parameters:
      - $ref: '#/components/parameters/WorkspaceId'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                color:
                  type: string
      responses:
        '200':
          description: status
          content:
            text/plain:
              schema:
                type: string
  /w/{workspace}/workspaces/operator_settings:
    post:
      operationId: updateOperatorSettings
      summary: Update Operator Settings for a Workspace
      description: Updates the operator settings for a specific workspace. Requires workspace admin privileges.
      tags:
      - workspace
      parameters:
      - $ref: '#/components/parameters/WorkspaceId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OperatorSettings'
      responses:
        '200':
          description: Operator settings updated successfully
          content:
            text/plain:
              schema:
                type: string
  /w/{workspace}/workspaces/compare/{target_workspace_id}:
    get:
      operationId: compareWorkspaces
      summary: Compare Two Workspaces
      description: Compares the current workspace with a target workspace to find differences in scripts, flows, apps, resources, and variables. Returns information about items that are ahead, behind, or in conflict.
      tags:
      - workspace
      parameters:
      - $ref: '#/components/parameters/WorkspaceId'
      - name: target_workspace_id
        in: path
        required: true
        schema:
          type: string
        description: The ID of the workspace to compare with
      responses:
        '200':
          description: Workspace comparison results
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkspaceComparison'
  /w/{workspace}/workspaces/reset_diff_tally/{fork_workspace_id}:
    post:
      operationId: resetDiffTally
      summary: Resets the Ahead and Behind Deployement Counter After a Deployement
      description: This endpoint should be called after a fork deployement
      tags:
      - workspace
      parameters:
      - $ref: '#/components/parameters/WorkspaceId'
      - name: fork_workspace_id
        in: path
        required: true
        schema:
          type: string
        description: The ID of the workspace to compare with
      responses:
        '200':
          description: status
          content:
            application/json:
              schema: {}
  /w/{workspace}/workspaces/list_pending_invites:
    get:
      summary: List Pending Invites for a Workspace
      operationId: listPendingInvites
      tags:
      - workspace
      parameters:
      - $ref: '#/components/parameters/WorkspaceId'
      responses:
        '200':
          description: user
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/WorkspaceInvite'
  /w/{workspace}/workspaces/get_public_settings:
    get:
      summary: Get Public Settings
      description: Returns the subset of workspace settings safe to expose to any workspace member. The full settings struct is admin-only via `getSettings`.
      operationId: getPublicSettings
      tags:
      - workspace
      parameters:
      - $ref: '#/components/parameters/WorkspaceId'
      responses:
        '200':
          description: status
          content:
            application/json:
              schema:
                type: object
                properties:
                  workspace_id:
                    type: string
                  slack_name:
                    type: string
                  slack_team_id:
                    type: string
                  teams_team_id:
                    type: string
                  teams_team_name:
                    type: string
                  teams_team_guid:
                    type: string
                  large_file_storage:
                    $ref: '#/components/schemas/LargeFileStorage'
                  datatable:
                    $ref: '#/components/schemas/DataTableSettings'
                  deploy_ui:
                    $ref: '#/components/schemas/WorkspaceDeployUISettings'
                  mute_critical_alerts:
                    type: boolean
                required:
                - workspace_id
  /w/{workspace}/workspaces/get_settings:
    get:
      summary: Get Settings (admin Only)
      description: Returns the full workspace settings including admin-managed integration credentials. Admin-only — non-admin callers should use `getPublicSettings`.
      operationId: getSettings
      tags:
      - workspace
      parameters:
      - $ref: '#/components/parameters/WorkspaceId'
      responses:
        '200':
          description: status
          content:
            application/json:
              schema:
                type: object
                properties:
                  workspace_id:
                    type: string
                  slack_name:
                    type: string
                  slack_team_id:
                    type: string
                  slack_command_script:
                    type: string
                  slack_oauth_client_id:
                    type: string
                  slack_oauth_client_secret:
                    type: string
                  teams_team_id:
                    type: string
                  teams_command_script:
                    type: string
                  teams_team_name:
                    type: string
                  teams_team_guid:
                    type: string
                  auto_invite:
                    $ref: '#/components/schemas/AutoInviteConfig'
                  plan:
                    type: string
                  customer_id:
                    type: string
                  webhook:
                    type: string
                  deploy_to:
                    type: string
                  ai_config:
                    $ref: '#/components/schemas/AIConfig'
                  error_handler:
                    $ref: '#/components/schemas/ErrorHandlerConfig'
                  success_handler:
                    $ref: '#/components/schemas/SuccessHandlerConfig'
                  large_file_storage:
                    $ref: '#/components/schemas/LargeFileStorage'
                  ducklake:
                    $ref: '#/components/schemas/DucklakeSettings'
                  datatable:
                    $ref: '#/components/schemas/DataTableSettings'
                  git_sync:
                    $ref: '#/components/schemas/WorkspaceGitSyncSettings'
                  deploy_ui:
                    $ref: '#/components/schemas/WorkspaceDeployUISettings'
                  default_app:
                    type: string
                  default_scripts:
                    $ref: '#/components/schemas/WorkspaceDefaultScripts'
                  mute_critical_alerts:
                    type: boolean
                  color:
                    type: string
                  operator_settings:
                    $ref: '#/components/schemas/OperatorSettings'
                  public_app_execution_limit_per_minute:
                    type: integer
                    description: Rate limit for public app executions per minute per server. NULL or 0 means disabled.
  /w/{workspace}/workspaces/get_deploy_to:
    get:
      summary: Get Deploy to
      operationId: getDeployTo
      tags:
      - workspace
      parameters:
      - $ref: '#/components/parameters/WorkspaceId'
      responses:
        '200':
          description: status
          content:
            application/json:
              schema:
                type: object
                properties:
                  deploy_to:
                    type: string
  /w/{workspace}/workspaces/is_premium:
    get:
      summary: Get if Workspace is Premium
      operationId: getIsPremium
      tags:
      - workspace
      parameters:
      - $ref: '#/components/parameters/WorkspaceId'
      responses:
        '200':
          description: status
          content:
            application/json:
              schema:
                type: boolean
  /w/{workspace}/workspaces/premium_info:
    get:
      summary: Get Premium Info
      operationId: getPremiumInfo
      tags:
      - workspace
      parameters:
      - $ref: '#/components/parameters/WorkspaceId'
      - name: skip_subscription_fetch
        in: query
        description: skip fetching subscription status from stripe
        schema:
          type: boolean
      responses:
        '200':
          description: status
          content:
            application/json:
              schema:
                type: object
                properties:
                  premium:
                    type: boolean
                  usage:
                    type: number
                  owner:
                    type: string
                  status:
                    type: string
                  is_past_due:
                    type: boolean
                  max_tolerated_executions:
                    type: number
                required:
                - premium
                - owner
                - is_past_due
  /w/{workspace}/workspaces/threshold_alert:
    get:
      summary: Get Threshold Alert Info
      operationId: getThresholdAlert
      tags:
      - workspace
      parameters:
      - $ref: '#/components/parameters/WorkspaceId'
      responses:
        '200':
          description: status
          content:
            application/json:
              schema:
                type: object
                properties:
                  threshold_alert_amount:
                    type: number
                  last_alert_sent:
                    type: string
                    format: date-time
    post:
      summary: Set Threshold Alert Info
      operationId: setThresholdAlert
      tags:
      - workspace
      parameters:
      - $ref: '#/components/parameters/WorkspaceId'
      requestBody:
        description: threshold alert info
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                threshold_alert_amount:
                  type: number
      responses:
        '200':
          description: status
          content:
            text/plain:
              schema:
                type: string
  /w/{workspace}/workspaces/rebuild_dependency_map:
    post:
      summary: Rebuild Dependency Map
      operationId: rebuildDependencyMap
      tags:
      - workspace
      parameters:
      - $ref: '#/components/parameters/WorkspaceId'
      responses:
        '200':
          description: status
          content:
            text/plain:
              schema:
                type: string
  /w/{workspace}/workspaces/get_dependents/{imported_path}:
    get:
      summary: Get Dependents of an Imported Path
      operationId: getDependents
      tags:
      - workspace
      parameters:
      - $ref: '#/components/parameters/WorkspaceId'
      - name: imported_path
        in: path
        required: true
        schema:
          type: string
        description: The imported path to get dependents for
      responses:
        '200':
          description: list of dependents
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/DependencyDependent'
  /w/{workspace}/workspaces/get_imports/{importer_path}:
    get:
      summary: Get Script Imports for an Importer Path
      operationId: getImports
      tags:
      - workspace
      parameters:
      - $ref: '#/components/parameters/WorkspaceId'
      - name: importer_path
        in: path
        required: true
        schema:
          type: string
        description: The script path to get imports for
      responses:
        '200':
          description: list of imported script paths
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
  /w/{workspace}/workspaces/get_dependents_amounts:
    post:
      summary: Get Dependents Amounts for Multiple Imported Paths
      operationId: getDependentsAmounts
      tags:
      - workspace
      parameters:
      - $ref: '#/components/parameters/WorkspaceId'
      requestBody:
        description: List of imported paths to get dependents counts for
        required: true
        content:
          application/json:
            schema:
              type: array
              items:
                type: string
      responses:
        '200':
          description: list of dependents amounts
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/DependentsAmount'
  /w/{workspace}/workspaces/get_dependency_map:
    get:
      summary: Get Dependency Map
      operationId: getDependencyMap
      tags:
      - workspace
      parameters:
      - $ref: '#/components/parameters/WorkspaceId'
      responses:
        '200':
          description: dmap
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/DependencyMap'
  /w/{workspace}/workspaces/edit_slack_command:
    post:
      summary: Edit Slack Command
      operationId: editSlackCommand
      tags:
      - workspace
      parameters:
      - $ref: '#/components/parameters/WorkspaceId'
      requestBody:
        description: WorkspaceInvite
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                slack_command_script:
                  type: string
      responses:
        '200':
          description: status
          content:
            text/plain:
              schema:
                type: string
  /w/{workspace}/workspaces/slack_oauth_config:
    get:
      summary: Get Workspace Slack Oauth Config
      operationId: getWorkspaceSlackOauthConfig
      tags:
      - workspace
      parameters:
      - $ref: '#/components/parameters/WorkspaceId'
      responses:
        '200':
          description: slack oauth config
          content:
            application/json:
              schema:
                type: object
                properties:
                  slack_oauth_client_id:
                    type: string
                    nullable: true
                  slack_oauth_client_secret:
                    type: string
                    nullable: true
                    description: Masked with *** if set
    post:
      summary: Set Workspace Slack Oauth Config
      operationId: setWorkspaceSlackOauthConfig
      tags:
      - workspace
      parameters:
      - $ref: '#/components/parameters/WorkspaceId'
      requestBody:
        description: Slack OAuth Configuration
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - slack_oauth_client_id
              - slack_oauth_client_secret
              properties:
                slack_oauth_client_id:
                  type: string
                slack_oauth_client_secret:
                  type: string
      responses:
        '200':
          description: status
          content:
            text/plain:
              schema:
                type: string
    delete:
      summary: Delete Workspace Slack Oauth Config
      operationId: deleteWorkspaceSlackOauthConfig
      tags:
      - workspace
      parameters:
      - $ref: '#/components/parameters/WorkspaceId'
      responses:
        '200':
          description: status
          content:
            text/plain:
              schema:
                type: string
  /w/{workspace}/workspaces/edit_teams_command:
    post:
      summary: Edit Teams Command
      operationId: editTeamsCommand
      tags:
      - workspace
      parameters:
      - $ref: '#/components/parameters/WorkspaceId'
      requestBody:
        description: WorkspaceInvite
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                slack_command_script:
                  type: string
      responses:
        '200':
          description: status
          content:
            text/plain:
              schema:
                type: string
  /w/{workspace}/workspaces/available_teams_ids:
    get:
      summary: List Available Teams Ids
      operationId: listAvailableTeamsIds
      tags:
      - workspace
      parameters:
      - $ref: '#/components/parameters/WorkspaceId'
      - name: search
        in: query
        description: Search teams by name. If omitted, returns first page of all teams.
        required: false
        schema:
          type: string
      - name: next_link
        in: query
        description: Pagination cursor URL from previous response. Pass this to fetch the next page of results.
        required: false
        schema:
          type: string
      responses:
        '200':
          description: status
          content:
            application/json:
              schema:
                type: object
                properties:
                  teams:
                    type: array
                    items:
                      type: object
                      properties:
                        team_name:
                          type: string
                        team_id:
                          type: string
                  total_count:
                    type: integer
                    description: Total number of teams across all pages
                  per_page:
                    type: integer
                    description: Number of teams per page (configurable via TEAMS_PER_PAGE env var)
                  next_link:
                    type: string
                    nullable: true
                    description: URL to fetch next page of results. Null if no more pages.
  /w/{workspace}/workspaces/available_teams_channels:
    get:
      summary: List Available Channels for a Specific Team
      operationId: listAvailableTeamsChannels
      tags:
      - workspace
      parameters:
      - $ref: '#/components/parameters/WorkspaceId'
      - name: team_id
        in: query
        description: Microsoft Teams team ID
        required: true
        schema:
          type: string
      responses:
        '200':
          description: List of channels for the specified team
          content:
            application/json:
              schema:
                type: object
                properties:
                  channels:
                    type: array
                    items:
                      type: object
                      properties:
                        channel_name:
                          type: string
                        channel_id:
                

# --- truncated at 32 KB (102 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/windmill/refs/heads/main/openapi/windmill-workspace-api-openapi.yml