Seqera Labs workspaces API

Workspaces in an organization context

OpenAPI Specification

seqera-labs-workspaces-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  contact:
    email: info@seqera.io
    url: https://seqera.io
  description: Seqera Platform services API
  title: Seqera actions workspaces API
  version: 1.181.0
tags:
- description: Workspaces in an organization context
  name: workspaces
paths:
  /orgs/{orgId}/workspaces:
    get:
      description: Lists the organization workspaces in `orgId` to which the requesting user belongs.
      operationId: ListWorkspaces
      parameters:
      - description: Organization numeric identifier
        in: path
        name: orgId
        required: true
        schema:
          format: int64
          type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListWorkspacesResponse'
          description: OK
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Bad request
        '403':
          description: Operation not allowed
      security:
      - BearerAuth: []
      summary: List organization workspaces
      tags:
      - workspaces
    post:
      description: Creates a new organization workspace.
      operationId: CreateWorkspace
      parameters:
      - description: Organization numeric identifier
        in: path
        name: orgId
        required: true
        schema:
          format: int64
          type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateWorkspaceRequest'
        description: Workspace create request
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateWorkspaceResponse'
          description: OK
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Bad request
        '403':
          description: Operation not allowed
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Duplicate element
      security:
      - BearerAuth: []
      summary: Create workspace
      tags:
      - workspaces
  /orgs/{orgId}/workspaces/validate:
    get:
      description: Confirms the validity of the given workspace name. Append `?name=<your_workspace_name>`.
      operationId: ValidateWorkspaceName
      parameters:
      - description: Organization numeric identifier
        in: path
        name: orgId
        required: true
        schema:
          format: int64
          type: integer
      - description: Workspace name to validate
        in: query
        name: name
        schema:
          type: string
      responses:
        '204':
          description: OK - No content
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Bad request
        '403':
          description: Operation not allowed
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Duplicate element
      security:
      - BearerAuth: []
      summary: Validate workspace name
      tags:
      - workspaces
  /orgs/{orgId}/workspaces/{workspaceId}:
    delete:
      description: Deletes the workspace identified by the given `workspaceId`.
      operationId: DeleteWorkspace
      parameters:
      - description: Organization numeric identifier
        in: path
        name: orgId
        required: true
        schema:
          format: int64
          type: integer
      - description: Workspace numeric identifier
        in: path
        name: workspaceId
        required: true
        schema:
          format: int64
          type: integer
      responses:
        '204':
          description: OK - No content
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Bad request
        '403':
          description: Operation not allowed
      security:
      - BearerAuth: []
      summary: Delete workspace
      tags:
      - workspaces
    get:
      description: Retrieves the details of the workspace identified by the given `workspaceId`.
      operationId: DescribeWorkspace
      parameters:
      - description: Organization numeric identifier
        in: path
        name: orgId
        required: true
        schema:
          format: int64
          type: integer
      - description: Workspace numeric identifier
        in: path
        name: workspaceId
        required: true
        schema:
          format: int64
          type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DescribeWorkspaceResponse'
          description: OK
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Bad request
        '403':
          description: Operation not allowed
      security:
      - BearerAuth: []
      summary: Describe workspace
      tags:
      - workspaces
    put:
      description: Updates the details of the workspace identified by the given `workspaceId`.
      operationId: UpdateWorkspace
      parameters:
      - description: Organization numeric identifier
        in: path
        name: orgId
        required: true
        schema:
          format: int64
          type: integer
      - description: Workspace numeric identifier
        in: path
        name: workspaceId
        required: true
        schema:
          format: int64
          type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateWorkspaceRequest'
        description: Workspace update request
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DescribeWorkspaceResponse'
          description: OK
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Bad request
        '403':
          description: Operation not allowed
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Duplicate name
      security:
      - BearerAuth: []
      summary: Update workspace
      tags:
      - workspaces
  /orgs/{orgId}/workspaces/{workspaceId}/participants:
    delete:
      description: Removes the requesting user from the given workspace.
      operationId: LeaveWorkspaceParticipant
      parameters:
      - description: Organization numeric identifier
        in: path
        name: orgId
        required: true
        schema:
          format: int64
          type: integer
      - description: Workspace numeric identifier
        in: path
        name: workspaceId
        required: true
        schema:
          format: int64
          type: integer
      responses:
        '204':
          description: OK - No content
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Bad request
        '403':
          description: Operation not allowed
      security:
      - BearerAuth: []
      summary: Leave workspace
      tags:
      - workspaces
    get:
      description: Lists the participants of the workspace identified by the given `workspaceId`.
      operationId: ListWorkspaceParticipants
      parameters:
      - description: Organization numeric identifier
        in: path
        name: orgId
        required: true
        schema:
          format: int64
          type: integer
      - description: Workspace numeric identifier
        in: path
        name: workspaceId
        required: true
        schema:
          format: int64
          type: integer
      - description: Pagination max results
        in: query
        name: max
        schema:
          format: int32
          type: integer
      - description: Pagination offset
        in: query
        name: offset
        schema:
          format: int32
          type: integer
      - description: Filter search parameter
        in: query
        name: search
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListParticipantsResponse'
          description: OK
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Bad request
        '403':
          description: Operation not allowed
      security:
      - BearerAuth: []
      summary: List workspace participants
      tags:
      - workspaces
  /orgs/{orgId}/workspaces/{workspaceId}/participants/add:
    put:
      description: Adds a new participant to the workspace identified by the given `workspaceId`.
      operationId: CreateWorkspaceParticipant
      parameters:
      - description: Organization numeric identifier
        in: path
        name: orgId
        required: true
        schema:
          format: int64
          type: integer
      - description: Workspace numeric identifier
        in: path
        name: workspaceId
        required: true
        schema:
          format: int64
          type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddParticipantRequest'
        description: Participant addition request
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AddParticipantResponse'
          description: OK
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Bad request
        '403':
          description: Operation not allowed
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Duplicate element or collaborator not permitted for organization with active SSO
      security:
      - BearerAuth: []
      summary: Create workspace participant
      tags:
      - workspaces
  /orgs/{orgId}/workspaces/{workspaceId}/participants/{participantId}:
    delete:
      description: Deletes the given participant from the given workspace.
      operationId: DeleteWorkspaceParticipant
      parameters:
      - description: Organization numeric identifier
        in: path
        name: orgId
        required: true
        schema:
          format: int64
          type: integer
      - description: Workspace numeric identifier
        in: path
        name: workspaceId
        required: true
        schema:
          format: int64
          type: integer
      - description: Participant numeric identifier
        in: path
        name: participantId
        required: true
        schema:
          format: int64
          type: integer
      responses:
        '204':
          description: OK - No content
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Bad request
        '403':
          description: Operation not allowed
      security:
      - BearerAuth: []
      summary: Delete workspace participant
      tags:
      - workspaces
  /orgs/{orgId}/workspaces/{workspaceId}/participants/{participantId}/role:
    put:
      description: Updates the role of the given participant in the given workspace.
      operationId: UpdateWorkspaceParticipantRole
      parameters:
      - description: Organization numeric identifier
        in: path
        name: orgId
        required: true
        schema:
          format: int64
          type: integer
      - description: Workspace numeric identifier
        in: path
        name: workspaceId
        required: true
        schema:
          format: int64
          type: integer
      - description: Participant numeric identifier
        in: path
        name: participantId
        required: true
        schema:
          format: int64
          type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateParticipantRoleRequest'
        description: Participant role update request
        required: true
      responses:
        '204':
          description: OK - No content
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Bad request
        '403':
          description: Operation not allowed
      security:
      - BearerAuth: []
      summary: Update participant role
      tags:
      - workspaces
  /orgs/{orgId}/workspaces/{workspaceId}/settings/studios:
    get:
      description: Retrieves the Studios settings of the workspace identified by the given `workspaceId`.
      operationId: FindDataStudiosWorkspaceSettings
      parameters:
      - description: Organization numeric identifier
        in: path
        name: orgId
        required: true
        schema:
          format: int64
          type: integer
      - description: Workspace numeric identifier
        in: path
        name: workspaceId
        required: true
        schema:
          format: int64
          type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateWorkspaceRequest'
        description: Workspace update request
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DataStudioWorkspaceSettingsResponse'
          description: OK
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Bad request
        '403':
          description: Operation not allowed
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Duplicate element
      security:
      - BearerAuth: []
      summary: List workspace Studios settings
      tags:
      - workspaces
    put:
      description: Updates the Studios settings of the workspace identified by the given `workspaceId`.
      operationId: UpdateDataStudiosWorkspaceSettings
      parameters:
      - description: Organization numeric identifier
        in: path
        name: orgId
        required: true
        schema:
          format: int64
          type: integer
      - description: Workspace numeric identifier
        in: path
        name: workspaceId
        required: true
        schema:
          format: int64
          type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DataStudioWorkspaceSettingsRequest'
        description: Workspace update request
        required: true
      responses:
        '204':
          description: OK - No content
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Bad request
        '403':
          description: Operation not allowed
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Duplicate element
      security:
      - BearerAuth: []
      summary: Update workspace Studios settings
      tags:
      - workspaces
  /orgs/{orgId}/workspaces/{workspaceId}/users/{userId}:
    delete:
      description: Deletes the given user (member or collaborator) from the given workspace.
      operationId: DeleteWorkspaceUser
      parameters:
      - description: Organization numeric identifier
        in: path
        name: orgId
        required: true
        schema:
          format: int64
          type: integer
      - description: Workspace numeric identifier
        in: path
        name: workspaceId
        required: true
        schema:
          format: int64
          type: integer
      - description: User numeric identifier
        in: path
        name: userId
        required: true
        schema:
          format: int64
          type: integer
      responses:
        '204':
          description: OK - No content
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Bad request
        '403':
          description: Operation not allowed
      security:
      - BearerAuth: []
      summary: Delete workspace user
      tags:
      - workspaces
  /user/{userId}/workspaces:
    get:
      description: Lists the workspaces and organizations to which the user identified by the given `userId` belongs.
      operationId: ListWorkspacesUser
      parameters:
      - description: User numeric identifier
        in: path
        name: userId
        required: true
        schema:
          format: int64
          type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListWorkspacesAndOrgResponse'
          description: OK
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Bad request
        '403':
          description: Operation not allowed
      security:
      - BearerAuth: []
      summary: List user workspaces and organizations
      tags:
      - workspaces
components:
  schemas:
    OrgAndWorkspaceDto:
      properties:
        orgId:
          format: int64
          type: integer
        orgLogoUrl:
          type: string
        orgName:
          type: string
        orgType:
          $ref: '#/components/schemas/OrgType'
        roles:
          items:
            type: string
          type: array
        visibility:
          $ref: '#/components/schemas/Visibility'
        workspaceFullName:
          type: string
        workspaceId:
          format: int64
          type: integer
        workspaceName:
          type: string
      type: object
    CreateWorkspaceResponse:
      properties:
        workspace:
          $ref: '#/components/schemas/Workspace'
      type: object
    Workspace:
      properties:
        dateCreated:
          format: date-time
          type: string
        description:
          maxLength: 1000
          type: string
        fullName:
          maxLength: 100
          type: string
        id:
          format: int64
          nullable: true
          type: integer
        lastUpdated:
          format: date-time
          type: string
        name:
          maxLength: 40
          pattern: ^[a-zA-Z\d](?:[a-zA-Z\d]|[-_](?=[a-zA-Z\d])){1,38}$
          type: string
        visibility:
          $ref: '#/components/schemas/Visibility'
      required:
      - fullName
      - name
      - visibility
      type: object
    DataStudioWorkspaceSettingsResponse:
      properties:
        containerRepository:
          nullable: true
          type: string
        lifespanHours:
          format: int32
          type: integer
        nameStrategy:
          nullable: true
          type: string
        orgId:
          format: int64
          type: integer
        privateStudioByDefault:
          type: boolean
        wspId:
          format: int64
          type: integer
      type: object
    ParticipantResponseDto:
      properties:
        email:
          type: string
        firstName:
          type: string
        lastName:
          type: string
        memberId:
          format: int64
          type: integer
        orgRole:
          $ref: '#/components/schemas/OrgRole'
        participantId:
          format: int64
          type: integer
        teamAvatarUrl:
          type: string
        teamId:
          format: int64
          type: integer
        teamName:
          type: string
        type:
          $ref: '#/components/schemas/ParticipantType'
        userAvatarUrl:
          type: string
        userName:
          type: string
        wspRole:
          type: string
      type: object
    AddParticipantResponse:
      properties:
        participant:
          $ref: '#/components/schemas/ParticipantResponseDto'
      type: object
    ListWorkspacesResponse:
      properties:
        workspaces:
          items:
            $ref: '#/components/schemas/WorkspaceDbDto'
          type: array
      type: object
    UpdateParticipantRoleRequest:
      properties:
        role:
          type: string
      type: object
    ErrorResponse:
      properties:
        message:
          type: string
      required:
      - message
      type: object
    ParticipantType:
      enum:
      - MEMBER
      - TEAM
      - COLLABORATOR
      type: string
    Visibility:
      enum:
      - PRIVATE
      - SHARED
      type: string
    OrgRole:
      enum:
      - owner
      - member
      - collaborator
      type: string
      x-enum-varnames:
      - owner
      - member
      - collaborator
    ListParticipantsResponse:
      properties:
        participants:
          items:
            $ref: '#/components/schemas/ParticipantResponseDto'
          type: array
        totalSize:
          format: int64
          type: integer
      type: object
    AddParticipantRequest:
      properties:
        memberId:
          format: int64
          type: integer
        teamId:
          format: int64
          type: integer
        userNameOrEmail:
          type: string
      type: object
    ListWorkspacesAndOrgResponse:
      properties:
        orgsAndWorkspaces:
          items:
            $ref: '#/components/schemas/OrgAndWorkspaceDto'
          type: array
      type: object
    CreateWorkspaceRequest:
      properties:
        workspace:
          $ref: '#/components/schemas/Workspace'
      type: object
    OrgType:
      enum:
      - academic
      - evaluating
      - pro
      - basic
      - internal
      type: string
      x-enum-varnames:
      - academic
      - evaluating
      - pro
      - basic
      - internal
    DescribeWorkspaceResponse:
      properties:
        workspace:
          $ref: '#/components/schemas/Workspace'
      type: object
    WorkspaceDbDto:
      properties:
        description:
          type: string
        fullName:
          type: string
        id:
          format: int64
          type: integer
        name:
          type: string
        visibility:
          $ref: '#/components/schemas/Visibility'
      type: object
    DataStudioWorkspaceSettingsRequest:
      properties:
        containerRepository:
          description: Container repository where Wave pushes images built for Studios in this workspace (e.g. 'cr.seqera.io/my-org/studios'). When null, the platform default is used.
          nullable: true
          type: string
        lifespanHours:
          description: Maximum number of hours a Studio session may run before it is automatically stopped. Use 0 for unlimited lifespan.
          format: int32
          type: integer
        nameStrategy:
          description: Wave image naming strategy applied to container images built for Studios in this workspace. When null, the platform default strategy is used.
          enum:
          - none
          - tagPrefix
          - imageSuffix
          nullable: true
          type: string
        privateStudioByDefault:
          description: When true, newly created Studio sessions are private by default and only accessible to their creator.
          type: boolean
      type: object
    UpdateWorkspaceRequest:
      properties:
        description:
          type: string
        fullName:
          type: string
        name:
          type: string
        visibility:
          $ref: '#/components/schemas/Visibility'
      type: object
  securitySchemes:
    BearerAuth:
      bearerFormat: jwt
      scheme: bearer
      type: http