RunWhen workspaces API

The workspaces API from RunWhen — 72 operation(s) for workspaces.

Operations 80

GET /api/v1/workspaces List workspaces for the current user #
POST /api/v1/workspaces Create a new workspace #
GET /api/v1/workspaces/{workspace_short_name} Get a workspace by name #
GET /api/v1/workspaces/provisioning-status/{workspace_name} Get workspace provisioning progress #
PATCH /api/v1/workspaces/{workspace_name} Update a workspace #
DELETE /api/v1/workspaces/{workspace_name} Delete a workspace #
GET /api/v1/workspaces/{workspace_name}/workspace-configuration-index Get workspace configuration index #
GET /api/v1/workspaces/{workspace_name}/metadata Get workspace metadata from sobow #
GET /api/v1/workspaces/{workspace_name}/entities Get workspace entities #
GET /api/v1/workspaces/{workspace_name}/index-health Get workspace index health #
GET /api/v1/workspaces/{workspace_name}/status Get workspace creation status #
GET /api/v1/workspaces/{workspace_name}/my-permissions Get current user's permissions on workspace #
GET /api/v1/workspaces/{workspace_name}/sync-status Get workspace sync status from WorkSync CRD #
GET /api/v1/workspaces/{workspace_name}/secrets-keys List workspace secret keys #
POST /api/v1/workspaces/{workspace_name}/secrets Create or update workspace secrets #
DELETE /api/v1/workspaces/{workspace_name}/secrets/{secret_key} Delete a single workspace secret #
GET /api/v1/workspaces/{workspace_name}/secrets/{secret_key}/usage List where a workspace secret is used #
POST /api/v1/workspaces/{workspace_name}/reset-service-account Reset or create workspace service account #
GET /api/v1/workspaces/{workspace_name}/sa-token Get workspace service account token #
GET /api/v1/workspaces/{workspace_name}/get-gitlab-sas Get GitLab service accounts for workspace #
POST /api/v1/workspaces/{workspace_name}/task-search Search workspace tasks #
POST /api/v1/workspaces/{workspace_name}/autocomplete Autocomplete for task search #
GET /api/v1/workspaces/{workspace_name}/runners Get runners #
GET /api/v1/workspaces/{workspace_name}/generate-workspace-builder-config [DEPRECATED] Generate workspace builder config #
GET /api/v1/workspaces/{workspace_name}/search-scope Get search scope options #
GET /api/v1/workspaces/{workspace_name}/upload-config Generate upload config for a location #
GET /api/v1/workspaces/{workspace_name}/internal/upload-config Generate upload config (internal) #
GET /api/v1/workspaces/{workspace_name}/runner-token Get runner registration token #
GET /api/v1/workspaces/{workspace_name}/anonymous-mode Get anonymous mode status #
POST /api/v1/workspaces/{workspace_name}/anonymous-mode Toggle anonymous mode #
GET /api/v1/workspaces/{workspace_short_name}/workspace-stats Get workspace statistics #
GET /api/v1/workspaces/{workspace_short_name}/top-issue-resources Get top resources by issue count #
GET /api/v1/workspaces/{workspace_name}/agentfarm-params Get AgentFarm parameters for a workspace #
GET /api/v1/workspaces/{workspace_name}/activities Get workspace activity feed #
DELETE /api/v1/workspaces/{workspace_name}/runners/{runner_id} Delete a runner #
GET /api/v1/workspaces/{workspace_name}/layout Get workspace layout #
POST /api/v1/workspaces/{workspace_name}/layout Save workspace layout #
POST /api/v1/workspaces/{workspace_name}/reprovision-workspace-infra Reprovision workspace runner infrastructure (staff only) #
POST /api/v1/workspaces/{workspace_short_name}/upload Upload workspace archive #
GET /api/v1/workspaces/upload-status/{task_id} Check upload task status #
POST /api/v3/workspaces/{workspace_short_name}/upload Upload workspace archive #
GET /api/v3/workspaces/upload-status/{task_id} Check upload task status #
GET /api/v3/workspaces List workspaces for the current user #
POST /api/v3/workspaces Create a new workspace #
GET /api/v3/workspaces/{workspace_short_name} Get a workspace by name #
GET /api/v3/workspaces/provisioning-status/{workspace_name} Get workspace provisioning progress #
PATCH /api/v3/workspaces/{workspace_name} Update a workspace #
DELETE /api/v3/workspaces/{workspace_name} Delete a workspace #
GET /api/v3/workspaces/{workspace_name}/workspace-configuration-index Get workspace configuration index #
GET /api/v3/workspaces/{workspace_name}/metadata Get workspace metadata from sobow #
GET /api/v3/workspaces/{workspace_name}/entities Get workspace entities #
GET /api/v3/workspaces/{workspace_name}/index-health Get workspace index health #
GET /api/v3/workspaces/{workspace_name}/status Get workspace creation status #
GET /api/v3/workspaces/{workspace_name}/my-permissions Get current user's permissions on workspace #
GET /api/v3/workspaces/{workspace_name}/sync-status Get workspace sync status from WorkSync CRD #
GET /api/v3/workspaces/{workspace_name}/secrets-keys List workspace secret keys #
POST /api/v3/workspaces/{workspace_name}/secrets Create or update workspace secrets #
DELETE /api/v3/workspaces/{workspace_name}/secrets/{secret_key} Delete a single workspace secret #
GET /api/v3/workspaces/{workspace_name}/secrets/{secret_key}/usage List where a workspace secret is used #
POST /api/v3/workspaces/{workspace_name}/reset-service-account Reset or create workspace service account #
GET /api/v3/workspaces/{workspace_name}/sa-token Get workspace service account token #
GET /api/v3/workspaces/{workspace_name}/get-gitlab-sas Get GitLab service accounts for workspace #
POST /api/v3/workspaces/{workspace_name}/task-search Search workspace tasks #
POST /api/v3/workspaces/{workspace_name}/autocomplete Autocomplete for task search #
GET /api/v3/workspaces/{workspace_name}/runners Get runners #
GET /api/v3/workspaces/{workspace_name}/generate-workspace-builder-config [DEPRECATED] Generate workspace builder config #
GET /api/v3/workspaces/{workspace_name}/search-scope Get search scope options #
GET /api/v3/workspaces/{workspace_name}/upload-config Generate upload config for a location #
GET /api/v3/workspaces/{workspace_name}/internal/upload-config Generate upload config (internal) #
GET /api/v3/workspaces/{workspace_name}/runner-token Get runner registration token #
GET /api/v3/workspaces/{workspace_name}/anonymous-mode Get anonymous mode status #
POST /api/v3/workspaces/{workspace_name}/anonymous-mode Toggle anonymous mode #
GET /api/v3/workspaces/{workspace_short_name}/workspace-stats Get workspace statistics #
GET /api/v3/workspaces/{workspace_short_name}/top-issue-resources Get top resources by issue count #
GET /api/v3/workspaces/{workspace_name}/agentfarm-params Get AgentFarm parameters for a workspace #
GET /api/v3/workspaces/{workspace_name}/activities Get workspace activity feed #
DELETE /api/v3/workspaces/{workspace_name}/runners/{runner_id} Delete a runner #
GET /api/v3/workspaces/{workspace_name}/layout Get workspace layout #
POST /api/v3/workspaces/{workspace_name}/layout Save workspace layout #
POST /api/v3/workspaces/{workspace_name}/reprovision-workspace-infra Reprovision workspace runner infrastructure (staff only) #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/runwhen-workspaces-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

runwhen-workspaces-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: papi alert-query-proxy Workspaces API
  description: RunWhen Platform API
  version: 2.0.0
servers:
- url: https://papi.beta.runwhen.com
  description: Base URL declared by the provider in apis.yml (roadmap#122).
tags:
- name: workspaces
paths:
  /api/v1/workspaces:
    get:
      tags:
      - workspaces
      summary: List workspaces for the current user
      description: "List all workspaces the current user has access to.\n\nReturns workspaces where the user is either the owner or has\nexplicit permissions.\n\nArgs:\n    limit: Maximum number of results to return.\n    offset: Number of results to skip.\n    session: Database session.\n    current_user: The authenticated user.\n\nReturns:\n    Paginated list of workspaces."
      operationId: list_workspaces_api_v1_workspaces_get
      parameters:
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          maximum: 1000
          minimum: 1
          description: Maximum number of results
          default: 100
          title: Limit
        description: Maximum number of results
      - name: offset
        in: query
        required: false
        schema:
          type: integer
          minimum: 0
          description: Number of results to skip
          default: 0
          title: Offset
        description: Number of results to skip
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkspaceListResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - BearerAuth: []
    post:
      tags:
      - workspaces
      summary: Create a new workspace
      description: "Create a new workspace (synchronous, DB-direct).\n\nThis endpoint:\n1. Auto-suffixes the name if it collides with an existing workspace,\n   tombstone, repository, or K8s CRD (e.g. ``myws`` -> ``myws-2``).\n2. Creates the workspace DB record and provisions runner infrastructure.\n3. Returns with status=\"ready\" on success.\n\nCreation is synchronous — no polling required after a 201 response."
      operationId: create_workspace_api_v1_workspaces_post
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WorkspaceGitCreate'
      responses:
        '201':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkspaceCreateResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - BearerAuth: []
  /api/v1/workspaces/{workspace_short_name}:
    get:
      tags:
      - workspaces
      summary: Get a workspace by name
      description: "Get a workspace by its short name.\n\nArgs:\n    workspace_short_name: The workspace short name (e.g., 'pp-04').\n    detail: If true, include additional details (SLXs, alerts, spec). Defaults to false.\n    session: Database session.\n    current_user: The authenticated user.\n\nReturns:\n    The workspace details.\n\nRaises:\n    HTTPException: 404 if workspace not found or user has no access."
      operationId: get_workspace_api_v1_workspaces__workspace_short_name__get
      parameters:
      - name: workspace_short_name
        in: path
        required: true
        schema:
          type: string
          title: Workspace Short Name
      - name: detail
        in: query
        required: false
        schema:
          type: boolean
          description: 'If true, load SLXs and firing alerts. Default false: fast metadata-only response.'
          default: false
          title: Detail
        description: 'If true, load SLXs and firing alerts. Default false: fast metadata-only response.'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkspaceResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - BearerAuth: []
  /api/v1/workspaces/provisioning-status/{workspace_name}:
    get:
      tags:
      - workspaces
      summary: Get workspace provisioning progress
      description: 'Get workspace provisioning progress without requiring a DB workspace record.


        Non-detail endpoint — bypasses workspace permission checks.

        Only requires authentication. Returns boolean stage flags and sync status.

        Used by the UI wizard to poll until all provisioning stages complete.


        CRD-less mode: workspace creation is synchronous — all stages are

        complete if the workspace exists in the database.'
      operationId: provisioning_status_api_v1_workspaces_provisioning_status__workspace_name__get
      parameters:
      - name: workspace_name
        in: path
        required: true
        schema:
          type: string
          title: Workspace Name
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/_ProvisioningStatusResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - BearerAuth: []
  /api/v1/workspaces/{workspace_name}:
    patch:
      tags:
      - workspaces
      summary: Update a workspace
      description: "Update a workspace (partial update).\n\nAccepts workspace name (slug) as the path parameter. All body fields are\noptional; only non-None values are applied.\n\nSupports updating: alias, description, scrubber_config, enabled_locations,\nconfig_provided, permissions (full replacement), slx_groups, slx_relationships.\n\nRequires admin permission on the workspace.\n\nArgs:\n    workspace_name: The workspace short name (slug, e.g. 'my-workspace').\n    data: The workspace update data.\n    session: Database session.\n    current_user: The authenticated user.\n\nReturns:\n    The updated workspace (detail view with spec populated).\n\nRaises:\n    HTTPException: 404 if workspace not found.\n    HTTPException: 403 if user lacks admin permission."
      operationId: update_workspace_api_v1_workspaces__workspace_name__patch
      parameters:
      - name: workspace_name
        in: path
        required: true
        schema:
          type: string
          title: Workspace Name
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WorkspaceUpdate'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkspaceResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - BearerAuth: []
    delete:
      tags:
      - workspaces
      summary: Delete a workspace
      description: 'Delete a workspace with full multi-system cleanup.


        Phase 1 (sync): Vault secrets, Slack, K8s CRDs, git repo, DB + tombstone.

        Phase 2 (async): Sobow, USearch, GCS files, email notification.


        Returns step-by-step status for each cleanup operation.

        Requires admin permission on the workspace.'
      operationId: delete_workspace_api_v1_workspaces__workspace_name__delete
      parameters:
      - name: workspace_name
        in: path
        required: true
        schema:
          type: string
          title: Workspace Name
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkspaceDeletionResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - BearerAuth: []
  /api/v1/workspaces/{workspace_name}/workspace-configuration-index:
    get:
      tags:
      - workspaces
      summary: Get workspace configuration index
      description: "Get the workspace configuration index from sobow.\n\nThe configuration index contains cached workspace data including:\n- SLX metadata and task information\n- Entity index (Kubernetes resources, cloud resources, etc.)\n- Workspace relationships and hierarchies\n\nThis endpoint proxies to the sobow service which owns the canonical\nworkspace configuration index cached in Redis.\n\nArgs:\n    workspace_name: The workspace name (not ID).\n    session: Database session.\n    current_user: The authenticated user.\n    sobow: Sobow client for fetching configuration.\n\nReturns:\n    The workspace configuration index as a dictionary.\n\nRaises:\n    HTTPException: 404 if workspace not found.\n    HTTPException: 503 if sobow service is unavailable."
      operationId: get_workspace_configuration_index_api_v1_workspaces__workspace_name__workspace_configuration_index_get
      parameters:
      - name: workspace_name
        in: path
        required: true
        schema:
          type: string
          title: Workspace Name
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
                title: Response Get Workspace Configuration Index Api V1 Workspaces  Workspace Name  Workspace Configuration Index Get
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - BearerAuth: []
  /api/v1/workspaces/{workspace_name}/metadata:
    get:
      tags:
      - workspaces
      summary: Get workspace metadata from sobow
      description: "Get workspace metadata from sobow service.\n\nReturns metadata about the workspace including index status,\ntask counts, and other operational information.\n\nArgs:\n    workspace_name: The workspace name (not ID).\n    session: Database session.\n    current_user: The authenticated user.\n    sobow: Sobow client for fetching metadata.\n\nReturns:\n    The workspace metadata as a dictionary, or None if not available.\n\nRaises:\n    HTTPException: 404 if workspace not found.\n    HTTPException: 503 if sobow service is unavailable."
      operationId: get_workspace_metadata_api_v1_workspaces__workspace_name__metadata_get
      parameters:
      - name: workspace_name
        in: path
        required: true
        schema:
          type: string
          title: Workspace Name
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                anyOf:
                - type: object
                  additionalProperties: true
                - type: 'null'
                title: Response Get Workspace Metadata Api V1 Workspaces  Workspace Name  Metadata Get
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - BearerAuth: []
  /api/v1/workspaces/{workspace_name}/entities:
    get:
      tags:
      - workspaces
      summary: Get workspace entities
      description: "Get entities (Kubernetes resources, cloud resources, etc.) for a workspace.\n\nEntities are extracted from the workspace configuration and represent\nthe discoverable resources that can be referenced in tasks.\n\nArgs:\n    workspace_name: The workspace name (not ID).\n    session: Database session.\n    current_user: The authenticated user.\n    sobow: Sobow client for fetching entities.\n\nReturns:\n    Dictionary containing workspace entities organized by type.\n\nRaises:\n    HTTPException: 404 if workspace not found.\n    HTTPException: 503 if sobow service is unavailable."
      operationId: get_workspace_entities_api_v1_workspaces__workspace_name__entities_get
      parameters:
      - name: workspace_name
        in: path
        required: true
        schema:
          type: string
          title: Workspace Name
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
                title: Response Get Workspace Entities Api V1 Workspaces  Workspace Name  Entities Get
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - BearerAuth: []
  /api/v1/workspaces/{workspace_name}/index-health:
    get:
      tags:
      - workspaces
      summary: Get workspace index health
      description: "Get the health status of the workspace task index.\n\nReturns information about the index's current state, including\nlast update time, task counts, and any indexing errors.\n\nArgs:\n    workspace_name: The workspace name (not ID).\n    session: Database session.\n    current_user: The authenticated user.\n    sobow: Sobow client for fetching health status.\n\nReturns:\n    Dictionary containing index health information.\n\nRaises:\n    HTTPException: 404 if workspace not found.\n    HTTPException: 503 if sobow service is unavailable."
      operationId: get_workspace_index_health_api_v1_workspaces__workspace_name__index_health_get
      parameters:
      - name: workspace_name
        in: path
        required: true
        schema:
          type: string
          title: Workspace Name
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
                title: Response Get Workspace Index Health Api V1 Workspaces  Workspace Name  Index Health Get
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - BearerAuth: []
  /api/v1/workspaces/{workspace_name}/status:
    get:
      tags:
      - workspaces
      summary: Get workspace creation status
      description: "Get the status of a workspace creation.\n\nThis endpoint is used to poll for workspace creation completion.\nIt checks:\n1. Whether the workspace exists in the database\n2. Whether the WorkSync has successfully reconciled\n\nArgs:\n    workspace_name: The workspace name.\n    session: Database session.\n    current_user: The authenticated user.\n\nReturns:\n    WorkspaceStatusResponse with workspace and sync booleans."
      operationId: get_workspace_status_api_v1_workspaces__workspace_name__status_get
      parameters:
      - name: workspace_name
        in: path
        required: true
        schema:
          type: string
          title: Workspace Name
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkspaceStatusResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - BearerAuth: []
  /api/v1/workspaces/{workspace_name}/my-permissions:
    get:
      tags:
      - workspaces
      summary: Get current user's permissions on workspace
      description: 'Get the current user''s permissions (roles) on a workspace.


        Returns a list of role strings the user has on this workspace.

        This matches the Django implementation which returns a set of roles.'
      operationId: get_my_permissions_api_v1_workspaces__workspace_name__my_permissions_get
      parameters:
      - name: workspace_name
        in: path
        required: true
        schema:
          type: string
          title: Workspace Name
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
                title: Response Get My Permissions Api V1 Workspaces  Workspace Name  My Permissions Get
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - BearerAuth: []
  /api/v1/workspaces/{workspace_name}/sync-status:
    get:
      tags:
      - workspaces
      summary: Get workspace sync status from WorkSync CRD
      description: "Get the sync status for a workspace from the WorkSync Kubernetes CRD.\n\nReturns information about the workspace's GitOps sync status including\nconditions, last applied revision, and related Kubernetes events.\n\nArgs:\n    workspace_name: The workspace name (not ID).\n    session: Database session.\n    current_user: The authenticated user.\n\nReturns:\n    Dictionary containing WorkSync status and events.\n\nRaises:\n    HTTPException: 404 if workspace not found or no WorkSync CRD exists."
      operationId: get_workspace_sync_status_api_v1_workspaces__workspace_name__sync_status_get
      parameters:
      - name: workspace_name
        in: path
        required: true
        schema:
          type: string
          title: Workspace Name
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
                title: Response Get Workspace Sync Status Api V1 Workspaces  Workspace Name  Sync Status Get
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - BearerAuth: []
  /api/v1/workspaces/{workspace_name}/secrets-keys:
    get:
      tags:
      - workspaces
      summary: List workspace secret keys
      description: 'Get list of secret key names for a workspace.


        Returns only the key names, not the secret values.

        Requires read access to the workspace.'
      operationId: get_workspace_secret_keys_api_v1_workspaces__workspace_name__secrets_keys_get
      parameters:
      - name: workspace_name
        in: path
        required: true
        schema:
          type: string
          title: Workspace Name
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SecretsKeysResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - BearerAuth: []
  /api/v1/workspaces/{workspace_name}/secrets:
    post:
      tags:
      - workspaces
      summary: Create or update workspace secrets
      description: 'Create or update workspace secrets in Vault.


        Requires admin access to the workspace.'
      operationId: create_workspace_secrets_api_v1_workspaces__workspace_name__secrets_post
      parameters:
      - name: workspace_name
        in: path
        required: true
        schema:
          type: string
          title: Workspace Name
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SecretsCreateRequest'
      responses:
        '201':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SecretsCreateResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - BearerAuth: []
  /api/v1/workspaces/{workspace_name}/secrets/{secret_key}:
    delete:
      tags:
      - workspaces
      summary: Delete a single workspace secret
      description: 'Permanently delete a single workspace secret by key.


        Requires admin access to the workspace. Mirrors Django''s

        ``WorkspaceViewSet.delete_workspace_secret``.'
      operationId: delete_workspace_secret_api_v1_workspaces__workspace_name__secrets__secret_key__delete
      parameters:
      - name: workspace_name
        in: path
        required: true
        schema:
          type: string
          title: Workspace Name
      - name: secret_key
        in: path
        required: true
        schema:
          type: string
          title: Secret Key
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SecretDeleteResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - BearerAuth: []
  /api/v1/workspaces/{workspace_name}/secrets/{secret_key}/usage:
    get:
      tags:
      - workspaces
      summary: List where a workspace secret is used
      description: 'Return the SLIs and Runbooks that reference this workspace secret.


        Used by the UI to warn before deleting a secret that is still in use.

        Requires read access to the workspace. Mirrors Django''s

        ``WorkspaceViewSet.get_secret_usage``.'
      operationId: get_workspace_secret_usage_api_v1_workspaces__workspace_name__secrets__secret_key__usage_get
      parameters:
      - name: workspace_name
        in: path
        required: true
        schema:
          type: string
          title: Workspace Name
      - name: secret_key
        in: path
        required: true
        schema:
          type: string
          title: Secret Key
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SecretUsageResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - BearerAuth: []
  /api/v1/workspaces/{workspace_name}/reset-service-account:
    post:
      tags:
      - workspaces
      summary: Reset or create workspace service account
      description: 'Reset or create the service account for a workspace.


        If a service account exists for this workspace, updates its password.

        If no service account exists, creates a new one.


        Also writes the credentials to Vault for use by SLI/Runbook containers.


        Requires admin access to the workspace.'
      operationId: reset_workspace_service_account_api_v1_workspaces__workspace_name__reset_service_account_post
      parameters:
      - name: workspace_name
        in: path
        required: true
        schema:
          type: string
          title: Workspace Name
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ResetServiceAccountRequest'
      responses:
        '201':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResetServiceAccountResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - BearerAuth: []
  /api/v1/workspaces/{workspace_name}/sa-token:
    get:
      tags:
      - workspaces
      summary: Get workspace service account token
      description: 'Get the workspace service account token.


        Trades an existing valid token for a workspace service account token.

        This is used by runners and SLI containers to authenticate with PAPI.


        Valid tokenTypes:

        - LOCATION_WORKSPACE_SA_TOKEN: Token from location namespace'
      operationId: get_workspace_sa_token_api_v1_workspaces__workspace_name__sa_token_get
      parameters:
      - name: workspace_name
        in: path
        required: true
        schema:
          type: string
          title: Workspace Name
      - name: token
        in: query
        required: true
        schema:
          type: string
          description: Token to trade for SA token
          title: Token
        description: Token to trade for SA token
      - name: tokenType
        in: query
        required: true
        schema:
          type: string
          description: Type of token being traded
          title: Tokentype
        description: Type of token being traded
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SATokenResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - BearerAuth: []
  /api/v1/workspaces/{workspace_name}/get-gitlab-sas:
    get:
      tags:
      - workspaces
      summary: Get GitLab service accounts for workspace
      description: 'Get GitLab service accounts for the workspace repository.


        Returns service accounts filtered by the user''s access level:

        - Admin/readwrite users get both read and write service accounts

        - Read-only users get only read service accounts


        Returns empty list for non-GitLab (e.g. Gitea) environments.'
      operationId: get_gitlab_service_accounts_api_v1_workspaces__workspace_name__get_gitlab_sas_get
      parameters:
      - name: workspace_name
        in: path
        required: true
        schema:
          type: string
          title: Workspace Name
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
                title: Response Get Gitlab Service Accounts Api V1 Workspaces  Workspace Name  Get Gitlab Sas Get
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - BearerAuth: []
  /api/v1/workspaces/{workspace_name}/task-search:
    post:
      tags:
      - workspaces
      summary: Search workspace tasks
      description: 'Search for tasks in a workspace.


        Supports scoping to specific SLXs and persona-based query interpretation.'
      operationId: search_workspace_tasks_api_v1_workspaces__workspace_name__task_search_post
      parameters:
      - name: workspace_name
        in: path
        required: true
        schema:
          type: string
          title: Workspace Name
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TaskSearchRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
                title: Response Search Workspace Tasks Api V1 Workspaces  Workspace Name  Task Search Post
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - BearerAuth: []
  /api/v1/workspaces/{workspace_name}/autocomplete:
    post:
      tags:
      - workspaces
      summary: Autocomplete for task search
      description: Get autocomplete suggestions for task search.
      operationId: autocomplete_workspace_search_api_v1_workspaces__workspace_name__autocomplete_post
      parameters:
      - name: workspace_name
        in: path
        required: true
        schema:
          type: string
          title: Workspace Name
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AutocompleteRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
                title: Response Autocomplete Workspace Search Api V1 Workspaces  Workspace Name  Autocomplete Post
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - BearerAuth: []
  /api/v1/workspaces/{workspace_name}/runners:
    get:
      tags:
      - workspaces
      summary: Get runners
      description: Returns runners registered for this workspace.
      operationId: get_runners_api_v1_workspaces__workspace_name__runners_get
      parameters:
      - name: workspace_name
        in: path
        required: true
        schema:
          type: string
          title: Workspace Name
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/AuthorizedRunner'
                title: Response Get Runners Api V1 Workspaces  Workspace Name  Runners Get
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - BearerAuth: []
  /api/v1/workspaces/{workspace_name}/generate-workspace-builder-config:
    get:
      tags:
      - workspaces
      summary: '[DEPRECATED] Generate workspace builder config'
      description: 'Deprecated: use GET /{workspace_name}/upload-config instead. Returns 410 Gone.'
      operationId: generate_workspace_builder_config_api_v1_workspaces__workspace_name__generate_workspace_builder_config_get
      deprecated: true
      parameters:
      - name: workspace_name
        in: path
        required: true
        schema:
          type: string
          title: Workspace Name
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - BearerAuth: []
  /api/v1/workspaces/{workspace_name}/search-scope:
    get:
      tags:
      - workspaces
      summary: Get search scope options
      description: 'Return search scope options for the workspace.


        Returns SLX groups, subgroups, and individual SLXs with firing alert status.

        Used by the workspace chat page to build the scope selector.'
 

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