Plane Issues API

Manage work items (issues) and their nested comments and links - create, list, retrieve, update, and delete issues, attach threaded comments, and associate external links.

OpenAPI Specification

plane-so-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: Plane API
  description: >-
    REST API for Plane, the open-source project and product management tool.
    The API is organized around REST with predictable, resource-oriented URLs,
    accepts JSON request bodies, returns JSON responses, and uses standard HTTP
    response codes and verbs. Resources are scoped to a workspace and project:
    workspaces contain projects, and projects contain work items (issues),
    cycles, modules, states, labels, and members. Authentication uses an
    X-API-Key header. This document covers Plane Cloud (https://api.plane.so);
    self-hosted Community Edition instances expose the same API under their own
    domain.
  termsOfService: https://plane.so/legals/terms-and-conditions
  contact:
    name: Plane Support
    url: https://plane.so/contact
  license:
    name: AGPL-3.0 (Community Edition)
    url: https://github.com/makeplane/plane/blob/master/LICENSE.txt
  version: v1
servers:
  - url: https://api.plane.so/api/v1
    description: Plane Cloud
security:
  - ApiKeyAuth: []
tags:
  - name: Projects
  - name: Work Items
  - name: Work Item Comments
  - name: Work Item Links
  - name: Cycles
  - name: Cycle Work Items
  - name: Modules
  - name: Module Work Items
  - name: States
  - name: Labels
  - name: Members
paths:
  /workspaces/{workspace_slug}/projects/:
    get:
      operationId: listProjects
      tags:
        - Projects
      summary: List all projects in a workspace.
      parameters:
        - $ref: '#/components/parameters/WorkspaceSlug'
        - $ref: '#/components/parameters/Cursor'
        - $ref: '#/components/parameters/PerPage'
      responses:
        '200':
          description: A paginated list of projects.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedProjects'
        '401':
          $ref: '#/components/responses/Unauthorized'
    post:
      operationId: createProject
      tags:
        - Projects
      summary: Create a project in a workspace.
      parameters:
        - $ref: '#/components/parameters/WorkspaceSlug'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProjectCreate'
      responses:
        '201':
          description: The created project.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Project'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /workspaces/{workspace_slug}/projects/{project_id}/:
    get:
      operationId: getProject
      tags:
        - Projects
      summary: Retrieve a project.
      parameters:
        - $ref: '#/components/parameters/WorkspaceSlug'
        - $ref: '#/components/parameters/ProjectId'
      responses:
        '200':
          description: The requested project.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Project'
        '404':
          $ref: '#/components/responses/NotFound'
    patch:
      operationId: updateProject
      tags:
        - Projects
      summary: Update a project.
      parameters:
        - $ref: '#/components/parameters/WorkspaceSlug'
        - $ref: '#/components/parameters/ProjectId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProjectCreate'
      responses:
        '200':
          description: The updated project.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Project'
    delete:
      operationId: deleteProject
      tags:
        - Projects
      summary: Delete a project.
      parameters:
        - $ref: '#/components/parameters/WorkspaceSlug'
        - $ref: '#/components/parameters/ProjectId'
      responses:
        '204':
          description: The project was deleted.
  /workspaces/{workspace_slug}/projects/{project_id}/work-items/:
    get:
      operationId: listWorkItems
      tags:
        - Work Items
      summary: List all work items in a project.
      parameters:
        - $ref: '#/components/parameters/WorkspaceSlug'
        - $ref: '#/components/parameters/ProjectId'
        - $ref: '#/components/parameters/Cursor'
        - $ref: '#/components/parameters/PerPage'
      responses:
        '200':
          description: A paginated list of work items.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedWorkItems'
    post:
      operationId: createWorkItem
      tags:
        - Work Items
      summary: Create a work item in a project.
      parameters:
        - $ref: '#/components/parameters/WorkspaceSlug'
        - $ref: '#/components/parameters/ProjectId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WorkItemCreate'
      responses:
        '201':
          description: The created work item.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkItem'
  /workspaces/{workspace_slug}/projects/{project_id}/work-items/{work_item_id}/:
    get:
      operationId: getWorkItem
      tags:
        - Work Items
      summary: Retrieve a work item.
      parameters:
        - $ref: '#/components/parameters/WorkspaceSlug'
        - $ref: '#/components/parameters/ProjectId'
        - $ref: '#/components/parameters/WorkItemId'
      responses:
        '200':
          description: The requested work item.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkItem'
    patch:
      operationId: updateWorkItem
      tags:
        - Work Items
      summary: Update a work item.
      parameters:
        - $ref: '#/components/parameters/WorkspaceSlug'
        - $ref: '#/components/parameters/ProjectId'
        - $ref: '#/components/parameters/WorkItemId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WorkItemCreate'
      responses:
        '200':
          description: The updated work item.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkItem'
    delete:
      operationId: deleteWorkItem
      tags:
        - Work Items
      summary: Delete a work item.
      parameters:
        - $ref: '#/components/parameters/WorkspaceSlug'
        - $ref: '#/components/parameters/ProjectId'
        - $ref: '#/components/parameters/WorkItemId'
      responses:
        '204':
          description: The work item was deleted.
  /workspaces/{workspace_slug}/projects/{project_id}/work-items/{work_item_id}/comments/:
    get:
      operationId: listWorkItemComments
      tags:
        - Work Item Comments
      summary: List comments on a work item.
      parameters:
        - $ref: '#/components/parameters/WorkspaceSlug'
        - $ref: '#/components/parameters/ProjectId'
        - $ref: '#/components/parameters/WorkItemId'
      responses:
        '200':
          description: A paginated list of comments.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Comment'
    post:
      operationId: createWorkItemComment
      tags:
        - Work Item Comments
      summary: Add a comment to a work item.
      parameters:
        - $ref: '#/components/parameters/WorkspaceSlug'
        - $ref: '#/components/parameters/ProjectId'
        - $ref: '#/components/parameters/WorkItemId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CommentCreate'
      responses:
        '201':
          description: The created comment.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Comment'
  /workspaces/{workspace_slug}/projects/{project_id}/work-items/{work_item_id}/comments/{comment_id}/:
    get:
      operationId: getWorkItemComment
      tags:
        - Work Item Comments
      summary: Retrieve a work item comment.
      parameters:
        - $ref: '#/components/parameters/WorkspaceSlug'
        - $ref: '#/components/parameters/ProjectId'
        - $ref: '#/components/parameters/WorkItemId'
        - $ref: '#/components/parameters/CommentId'
      responses:
        '200':
          description: The requested comment.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Comment'
    patch:
      operationId: updateWorkItemComment
      tags:
        - Work Item Comments
      summary: Update a work item comment.
      parameters:
        - $ref: '#/components/parameters/WorkspaceSlug'
        - $ref: '#/components/parameters/ProjectId'
        - $ref: '#/components/parameters/WorkItemId'
        - $ref: '#/components/parameters/CommentId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CommentCreate'
      responses:
        '200':
          description: The updated comment.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Comment'
    delete:
      operationId: deleteWorkItemComment
      tags:
        - Work Item Comments
      summary: Delete a work item comment.
      parameters:
        - $ref: '#/components/parameters/WorkspaceSlug'
        - $ref: '#/components/parameters/ProjectId'
        - $ref: '#/components/parameters/WorkItemId'
        - $ref: '#/components/parameters/CommentId'
      responses:
        '204':
          description: The comment was deleted.
  /workspaces/{workspace_slug}/projects/{project_id}/work-items/{work_item_id}/links/:
    get:
      operationId: listWorkItemLinks
      tags:
        - Work Item Links
      summary: List links on a work item.
      parameters:
        - $ref: '#/components/parameters/WorkspaceSlug'
        - $ref: '#/components/parameters/ProjectId'
        - $ref: '#/components/parameters/WorkItemId'
      responses:
        '200':
          description: A list of links.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Link'
    post:
      operationId: createWorkItemLink
      tags:
        - Work Item Links
      summary: Add a link to a work item.
      parameters:
        - $ref: '#/components/parameters/WorkspaceSlug'
        - $ref: '#/components/parameters/ProjectId'
        - $ref: '#/components/parameters/WorkItemId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LinkCreate'
      responses:
        '201':
          description: The created link.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Link'
  /workspaces/{workspace_slug}/projects/{project_id}/work-items/{work_item_id}/links/{link_id}/:
    get:
      operationId: getWorkItemLink
      tags:
        - Work Item Links
      summary: Retrieve a work item link.
      parameters:
        - $ref: '#/components/parameters/WorkspaceSlug'
        - $ref: '#/components/parameters/ProjectId'
        - $ref: '#/components/parameters/WorkItemId'
        - $ref: '#/components/parameters/LinkId'
      responses:
        '200':
          description: The requested link.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Link'
    patch:
      operationId: updateWorkItemLink
      tags:
        - Work Item Links
      summary: Update a work item link.
      parameters:
        - $ref: '#/components/parameters/WorkspaceSlug'
        - $ref: '#/components/parameters/ProjectId'
        - $ref: '#/components/parameters/WorkItemId'
        - $ref: '#/components/parameters/LinkId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LinkCreate'
      responses:
        '200':
          description: The updated link.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Link'
    delete:
      operationId: deleteWorkItemLink
      tags:
        - Work Item Links
      summary: Delete a work item link.
      parameters:
        - $ref: '#/components/parameters/WorkspaceSlug'
        - $ref: '#/components/parameters/ProjectId'
        - $ref: '#/components/parameters/WorkItemId'
        - $ref: '#/components/parameters/LinkId'
      responses:
        '204':
          description: The link was deleted.
  /workspaces/{workspace_slug}/projects/{project_id}/cycles/:
    get:
      operationId: listCycles
      tags:
        - Cycles
      summary: List all cycles in a project.
      parameters:
        - $ref: '#/components/parameters/WorkspaceSlug'
        - $ref: '#/components/parameters/ProjectId'
      responses:
        '200':
          description: A list of cycles.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Cycle'
    post:
      operationId: createCycle
      tags:
        - Cycles
      summary: Create a cycle in a project.
      parameters:
        - $ref: '#/components/parameters/WorkspaceSlug'
        - $ref: '#/components/parameters/ProjectId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CycleCreate'
      responses:
        '201':
          description: The created cycle.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Cycle'
  /workspaces/{workspace_slug}/projects/{project_id}/cycles/{cycle_id}/:
    get:
      operationId: getCycle
      tags:
        - Cycles
      summary: Retrieve a cycle.
      parameters:
        - $ref: '#/components/parameters/WorkspaceSlug'
        - $ref: '#/components/parameters/ProjectId'
        - $ref: '#/components/parameters/CycleId'
      responses:
        '200':
          description: The requested cycle.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Cycle'
    patch:
      operationId: updateCycle
      tags:
        - Cycles
      summary: Update a cycle.
      parameters:
        - $ref: '#/components/parameters/WorkspaceSlug'
        - $ref: '#/components/parameters/ProjectId'
        - $ref: '#/components/parameters/CycleId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CycleCreate'
      responses:
        '200':
          description: The updated cycle.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Cycle'
    delete:
      operationId: deleteCycle
      tags:
        - Cycles
      summary: Delete a cycle.
      parameters:
        - $ref: '#/components/parameters/WorkspaceSlug'
        - $ref: '#/components/parameters/ProjectId'
        - $ref: '#/components/parameters/CycleId'
      responses:
        '204':
          description: The cycle was deleted.
  /workspaces/{workspace_slug}/projects/{project_id}/cycles/{cycle_id}/work-items/:
    get:
      operationId: listCycleWorkItems
      tags:
        - Cycle Work Items
      summary: List the work items in a cycle.
      parameters:
        - $ref: '#/components/parameters/WorkspaceSlug'
        - $ref: '#/components/parameters/ProjectId'
        - $ref: '#/components/parameters/CycleId'
      responses:
        '200':
          description: A list of cycle work items.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/WorkItem'
    post:
      operationId: addCycleWorkItems
      tags:
        - Cycle Work Items
      summary: Add work items to a cycle.
      parameters:
        - $ref: '#/components/parameters/WorkspaceSlug'
        - $ref: '#/components/parameters/ProjectId'
        - $ref: '#/components/parameters/CycleId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                issues:
                  type: array
                  items:
                    type: string
                    format: uuid
      responses:
        '201':
          description: The work items were added to the cycle.
  /workspaces/{workspace_slug}/projects/{project_id}/cycles/{cycle_id}/work-items/{work_item_id}/:
    delete:
      operationId: removeCycleWorkItem
      tags:
        - Cycle Work Items
      summary: Remove a work item from a cycle.
      parameters:
        - $ref: '#/components/parameters/WorkspaceSlug'
        - $ref: '#/components/parameters/ProjectId'
        - $ref: '#/components/parameters/CycleId'
        - $ref: '#/components/parameters/WorkItemId'
      responses:
        '204':
          description: The work item was removed from the cycle.
  /workspaces/{workspace_slug}/projects/{project_id}/cycles/{cycle_id}/transfer-work-items/:
    post:
      operationId: transferCycleWorkItems
      tags:
        - Cycle Work Items
      summary: Transfer incomplete work items to another cycle.
      parameters:
        - $ref: '#/components/parameters/WorkspaceSlug'
        - $ref: '#/components/parameters/ProjectId'
        - $ref: '#/components/parameters/CycleId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                new_cycle_id:
                  type: string
                  format: uuid
      responses:
        '200':
          description: The work items were transferred.
  /workspaces/{workspace_slug}/projects/{project_id}/modules/:
    get:
      operationId: listModules
      tags:
        - Modules
      summary: List all modules in a project.
      parameters:
        - $ref: '#/components/parameters/WorkspaceSlug'
        - $ref: '#/components/parameters/ProjectId'
      responses:
        '200':
          description: A list of modules.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Module'
    post:
      operationId: createModule
      tags:
        - Modules
      summary: Create a module in a project.
      parameters:
        - $ref: '#/components/parameters/WorkspaceSlug'
        - $ref: '#/components/parameters/ProjectId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ModuleCreate'
      responses:
        '201':
          description: The created module.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Module'
  /workspaces/{workspace_slug}/projects/{project_id}/modules/{module_id}/:
    get:
      operationId: getModule
      tags:
        - Modules
      summary: Retrieve a module.
      parameters:
        - $ref: '#/components/parameters/WorkspaceSlug'
        - $ref: '#/components/parameters/ProjectId'
        - $ref: '#/components/parameters/ModuleId'
      responses:
        '200':
          description: The requested module.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Module'
    patch:
      operationId: updateModule
      tags:
        - Modules
      summary: Update a module.
      parameters:
        - $ref: '#/components/parameters/WorkspaceSlug'
        - $ref: '#/components/parameters/ProjectId'
        - $ref: '#/components/parameters/ModuleId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ModuleCreate'
      responses:
        '200':
          description: The updated module.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Module'
    delete:
      operationId: deleteModule
      tags:
        - Modules
      summary: Delete a module.
      parameters:
        - $ref: '#/components/parameters/WorkspaceSlug'
        - $ref: '#/components/parameters/ProjectId'
        - $ref: '#/components/parameters/ModuleId'
      responses:
        '204':
          description: The module was deleted.
  /workspaces/{workspace_slug}/projects/{project_id}/modules/{module_id}/issues/:
    get:
      operationId: listModuleWorkItems
      tags:
        - Module Work Items
      summary: List the work items in a module.
      parameters:
        - $ref: '#/components/parameters/WorkspaceSlug'
        - $ref: '#/components/parameters/ProjectId'
        - $ref: '#/components/parameters/ModuleId'
      responses:
        '200':
          description: A list of module work items.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/WorkItem'
    post:
      operationId: addModuleWorkItems
      tags:
        - Module Work Items
      summary: Add work items to a module.
      parameters:
        - $ref: '#/components/parameters/WorkspaceSlug'
        - $ref: '#/components/parameters/ProjectId'
        - $ref: '#/components/parameters/ModuleId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                issues:
                  type: array
                  items:
                    type: string
                    format: uuid
      responses:
        '201':
          description: The work items were added to the module.
  /workspaces/{workspace_slug}/projects/{project_id}/modules/{module_id}/issues/{work_item_id}/:
    delete:
      operationId: removeModuleWorkItem
      tags:
        - Module Work Items
      summary: Remove a work item from a module.
      parameters:
        - $ref: '#/components/parameters/WorkspaceSlug'
        - $ref: '#/components/parameters/ProjectId'
        - $ref: '#/components/parameters/ModuleId'
        - $ref: '#/components/parameters/WorkItemId'
      responses:
        '204':
          description: The work item was removed from the module.
  /workspaces/{workspace_slug}/projects/{project_id}/states/:
    get:
      operationId: listStates
      tags:
        - States
      summary: List all states in a project.
      parameters:
        - $ref: '#/components/parameters/WorkspaceSlug'
        - $ref: '#/components/parameters/ProjectId'
      responses:
        '200':
          description: A list of states.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/State'
    post:
      operationId: createState
      tags:
        - States
      summary: Create a state in a project.
      parameters:
        - $ref: '#/components/parameters/WorkspaceSlug'
        - $ref: '#/components/parameters/ProjectId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StateCreate'
      responses:
        '201':
          description: The created state.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/State'
  /workspaces/{workspace_slug}/projects/{project_id}/states/{state_id}/:
    get:
      operationId: getState
      tags:
        - States
      summary: Retrieve a state.
      parameters:
        - $ref: '#/components/parameters/WorkspaceSlug'
        - $ref: '#/components/parameters/ProjectId'
        - $ref: '#/components/parameters/StateId'
      responses:
        '200':
          description: The requested state.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/State'
    patch:
      operationId: updateState
      tags:
        - States
      summary: Update a state.
      parameters:
        - $ref: '#/components/parameters/WorkspaceSlug'
        - $ref: '#/components/parameters/ProjectId'
        - $ref: '#/components/parameters/StateId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StateCreate'
      responses:
        '200':
          description: The updated state.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/State'
    delete:
      operationId: deleteState
      tags:
        - States
      summary: Delete a state.
      parameters:
        - $ref: '#/components/parameters/WorkspaceSlug'
        - $ref: '#/components/parameters/ProjectId'
        - $ref: '#/components/parameters/StateId'
      responses:
        '204':
          description: The state was deleted.
  /workspaces/{workspace_slug}/projects/{project_id}/labels/:
    get:
      operationId: listLabels
      tags:
        - Labels
      summary: List all labels in a project.
      parameters:
        - $ref: '#/components/parameters/WorkspaceSlug'
        - $ref: '#/components/parameters/ProjectId'
      responses:
        '200':
          description: A list of labels.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Label'
    post:
      operationId: createLabel
      tags:
        - Labels
      summary: Create a label in a project.
      parameters:
        - $ref: '#/components/parameters/WorkspaceSlug'
        - $ref: '#/components/parameters/ProjectId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LabelCreate'
      responses:
        '201':
          description: The created label.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Label'
  /workspaces/{workspace_slug}/projects/{project_id}/labels/{label_id}/:
    get:
      operationId: getLabel
      tags:
        - Labels
      summary: Retrieve a label.
      parameters:
        - $ref: '#/components/parameters/WorkspaceSlug'
        - $ref: '#/components/parameters/ProjectId'
        - $ref: '#/components/parameters/LabelId'
      responses:
        '200':
          description: The requested label.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Label'
    patch:
      operationId: updateLabel
      tags:
        - Labels
      summary: Update a label.
      parameters:
        - $ref: '#/components/parameters/WorkspaceSlug'
        - $ref: '#/components/parameters/ProjectId'
        - $ref: '#/components/parameters/LabelId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LabelCreate'
      responses:
        '200':
          description: The updated label.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Label'
    delete:
      operationId: deleteLabel
      tags:
        - Labels
      summary: Delete a label.
      parameters:
        - $ref: '#/components/parameters/WorkspaceSlug'
        - $ref: '#/components/parameters/ProjectId'
        - $ref: '#/components/parameters/LabelId'
      responses:
        '204':
          description: The label was deleted.
  /workspaces/{workspace_slug}/projects/{project_id}/members/:
    get:
      operationId: listProjectMembers
      tags:
        - Members
      summary: List the members of a project.
      parameters:
        - $ref: '#/components/parameters/WorkspaceSlug'
        - $ref: '#/components/parameters/ProjectId'
      responses:
        '200':
          description: A list of project members.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Member'
        '401':
          $ref: '#/components/responses/Unauthorized'
components:
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-API-Key
      description: >-
        API key generated from your Plane workspace settings. Pass it in the
        X-API-Key header on every request.
  parameters:
    WorkspaceSlug:
      name: workspace_slug
      in: path
      required: true
      description: The unique slug of the workspace.
      schema:
        type: string
    ProjectId:
      name: project_id
      in: path
      required: true
      description: The UUID of the project.
      schema:
        type: string
        format: uuid
    WorkItemId:
      name: work_item_id
      in: path
      required: true
      description: The UUID of the work item (issue).
      schema:
        type: string
        format: uuid
    CommentId:
      name: comment_id
      in: path
      required: true
      schema:
        type: string
        format: uuid
    LinkId:
      name: link_id
      in: path
      required: true
      schema:
        type: string
        format: uuid
    CycleId:
      name: cycle_id
      in: path
      required: true
      schema:
        type: string
        format: uuid
    ModuleId:
      name: module_id
      in: path
      required: true
      schema:
        type: string
        format: uuid
    StateId:
      name: state_id
      in: path
      required: true
      schema:
        type: string
        format: uuid
    LabelId:
      name: label_id
      in: path
      required: true
      schema:
        type: string
        format: uuid
    Cursor:
      name: cursor
      in: query
      required: false
      description: Cursor for cursor-based pagination, in the form value:offset:page.
      schema:
        type: string
    PerPage:
      name: per_page
      in: query
      required: false
      description: Number of results to return per page (default 20, max 100).
      schema:
        type: integer
  responses:
    Unauthorized:
      description: The API key is missing or invalid.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    NotFound:
      description: The requested resource was not found.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  schemas:
    Error:
      type: object
      properties:
        error:
          type: string
        status_code:
          type: integer
    Pagination:
      type: object
      properties:
        next_cursor:
          type: string
        prev_cursor:
          type: string
        next_page_results:
          type: boolean
        prev_page_results:
          type: boolean
        total_results:
          type: integer
        total_pages:
          type: integer
        per_page:
          type: integer
    PaginatedProjects:
      allOf:
        - $ref: '#/components/schemas/Pagination'
        - type: object
          properties:
            results:
              type: array
              items:
                $ref: '#/components/schemas/Project'
    PaginatedWorkItems:
      allOf:
        - $ref: '#/components/schemas/Pagination'
        - type: object
          properties:
            results:
              type: array
              items:
                $ref: '#/components/schemas/WorkItem'
    Project:
      type: object
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string
        identifier:
          type: string
          description: Short prefix used in work 

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