Shortcut Software Epics API

The Epics API from Shortcut Software — 9 operation(s) for epics.

OpenAPI Specification

shortcut-software-epics-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  title: Shortcut Categories Epics API
  version: '3.0'
  description: Shortcut API
servers:
- url: https://api.app.shortcut.com
security:
- api_token: []
tags:
- name: Epics
paths:
  /api/v3/epics:
    get:
      parameters:
      - in: query
        name: includes_description
        description: A true/false boolean indicating whether to return Epics with their descriptions.
        required: false
        schema:
          type: boolean
      responses:
        '200':
          description: Resource
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/EpicSlim'
        '400':
          description: Schema mismatch
        '404':
          description: Resource does not exist
        '422':
          description: Unprocessable
      operationId: listEpics
      description: List Epics returns a list of all Epics and their attributes.
      summary: List Epics
      tags:
      - Epics
    post:
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateEpic'
        required: true
      responses:
        '201':
          description: Resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Epic'
        '400':
          description: Schema mismatch
        '404':
          description: Resource does not exist
        '422':
          description: Unprocessable
      operationId: createEpic
      description: Create Epic allows you to create a new Epic in Shortcut.
      summary: Create Epic
      tags:
      - Epics
  /api/v3/epics/paginated:
    get:
      parameters:
      - in: query
        name: includes_description
        description: A true/false boolean indicating whether to return Epics with their descriptions.
        required: false
        schema:
          type: boolean
      - in: query
        name: page
        description: The page number to return, starting with 1. Defaults to 1.
        required: false
        schema:
          type: integer
          format: int64
      - in: query
        name: page_size
        description: The number of Epics to return per page. Minimum 1, maximum 250, default 10.
        required: false
        schema:
          type: integer
          format: int64
      responses:
        '200':
          description: Resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EpicPaginatedResults'
        '400':
          description: Schema mismatch
        '404':
          description: Resource does not exist
        '422':
          description: Unprocessable
      operationId: listEpicsPaginated
      description: List Epics with pagination returns a paginated list of Epics and their attributes.
      summary: List Epics Paginated
      tags:
      - Epics
  /api/v3/epics/{epic-public-id}:
    get:
      parameters:
      - in: path
        name: epic-public-id
        description: The unique ID of the Epic.
        required: true
        schema:
          type: integer
          format: int64
      responses:
        '200':
          description: Resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Epic'
        '400':
          description: Schema mismatch
        '404':
          description: Resource does not exist
        '422':
          description: Unprocessable
      operationId: getEpic
      description: Get Epic returns information about the selected Epic.
      summary: Get Epic
      tags:
      - Epics
    put:
      parameters:
      - in: path
        name: epic-public-id
        description: The unique ID of the Epic.
        required: true
        schema:
          type: integer
          format: int64
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateEpic'
        required: true
      responses:
        '200':
          description: Resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Epic'
        '400':
          description: Schema mismatch
        '404':
          description: Resource does not exist
        '422':
          description: Unprocessable
      operationId: updateEpic
      description: Update Epic can be used to update numerous fields in the Epic. The only required parameter is Epic ID, which can be found in the Shortcut UI.
      summary: Update Epic
      tags:
      - Epics
    delete:
      parameters:
      - in: path
        name: epic-public-id
        description: The unique ID of the Epic.
        required: true
        schema:
          type: integer
          format: int64
      responses:
        '204':
          description: No Content
        '400':
          description: Schema mismatch
        '404':
          description: Resource does not exist
        '422':
          description: Unprocessable
      operationId: deleteEpic
      description: Delete Epic can be used to delete the Epic. The only required parameter is Epic ID.
      summary: Delete Epic
      tags:
      - Epics
  /api/v3/epics/{epic-public-id}/comments:
    get:
      parameters:
      - in: path
        name: epic-public-id
        description: The unique ID of the Epic.
        required: true
        schema:
          type: integer
          format: int64
      responses:
        '200':
          description: Resource
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ThreadedComment'
        '400':
          description: Schema mismatch
        '404':
          description: Resource does not exist
        '422':
          description: Unprocessable
      operationId: listEpicComments
      description: Get a list of all Comments on an Epic.
      summary: List Epic Comments
      tags:
      - Epics
    post:
      parameters:
      - in: path
        name: epic-public-id
        description: The ID of the associated Epic.
        required: true
        schema:
          type: integer
          format: int64
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateEpicComment'
        required: true
      responses:
        '201':
          description: Resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ThreadedComment'
        '400':
          description: Schema mismatch
        '404':
          description: Resource does not exist
        '422':
          description: Unprocessable
      operationId: createEpicComment
      description: This endpoint allows you to create a threaded Comment on an Epic.
      summary: Create Epic Comment
      tags:
      - Epics
  /api/v3/epics/{epic-public-id}/comments/{comment-public-id}:
    post:
      parameters:
      - in: path
        name: epic-public-id
        description: The ID of the associated Epic.
        required: true
        schema:
          type: integer
          format: int64
      - in: path
        name: comment-public-id
        description: The ID of the parent Epic Comment.
        required: true
        schema:
          type: integer
          format: int64
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateCommentComment'
        required: true
      responses:
        '201':
          description: Resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ThreadedComment'
        '400':
          description: Schema mismatch
        '404':
          description: Resource does not exist
        '422':
          description: Unprocessable
      operationId: createEpicCommentComment
      description: This endpoint allows you to create a nested Comment reply to an existing Epic Comment.
      summary: Create Epic Comment Comment
      tags:
      - Epics
    get:
      parameters:
      - in: path
        name: epic-public-id
        description: The ID of the associated Epic.
        required: true
        schema:
          type: integer
          format: int64
      - in: path
        name: comment-public-id
        description: The ID of the Comment.
        required: true
        schema:
          type: integer
          format: int64
      responses:
        '200':
          description: Resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ThreadedComment'
        '400':
          description: Schema mismatch
        '404':
          description: Resource does not exist
        '422':
          description: Unprocessable
      operationId: getEpicComment
      description: This endpoint returns information about the selected Epic Comment.
      summary: Get Epic Comment
      tags:
      - Epics
    put:
      parameters:
      - in: path
        name: epic-public-id
        description: The ID of the associated Epic.
        required: true
        schema:
          type: integer
          format: int64
      - in: path
        name: comment-public-id
        description: The ID of the Comment.
        required: true
        schema:
          type: integer
          format: int64
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateComment'
        required: true
      responses:
        '200':
          description: Resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ThreadedComment'
        '400':
          description: Schema mismatch
        '404':
          description: Resource does not exist
        '422':
          description: Unprocessable
      operationId: updateEpicComment
      description: This endpoint allows you to update a threaded Comment on an Epic.
      summary: Update Epic Comment
      tags:
      - Epics
    delete:
      parameters:
      - in: path
        name: epic-public-id
        description: The ID of the associated Epic.
        required: true
        schema:
          type: integer
          format: int64
      - in: path
        name: comment-public-id
        description: The ID of the Comment.
        required: true
        schema:
          type: integer
          format: int64
      responses:
        '204':
          description: No Content
        '400':
          description: Schema mismatch
        '404':
          description: Resource does not exist
        '422':
          description: Unprocessable
      operationId: deleteEpicComment
      description: This endpoint allows you to delete a Comment from an Epic.
      summary: Delete Epic Comment
      tags:
      - Epics
  /api/v3/epics/{epic-public-id}/documents:
    get:
      parameters:
      - in: path
        name: epic-public-id
        description: The unique ID of the Epic.
        required: true
        schema:
          type: integer
          format: int64
      responses:
        '200':
          description: Resource
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/DocSlim'
        '400':
          description: Schema mismatch
        '404':
          description: Resource does not exist
        '422':
          description: Unprocessable
      operationId: listEpicDocuments
      description: Get a list of all Documents related to this Epic.
      summary: List Epic Documents
      tags:
      - Epics
  /api/v3/epics/{epic-public-id}/health:
    get:
      parameters:
      - in: path
        name: epic-public-id
        description: The unique ID of the Epic.
        required: true
        schema:
          type: integer
          format: int64
      responses:
        '200':
          description: Resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Health'
        '400':
          description: Schema mismatch
        '404':
          description: Resource does not exist
        '422':
          description: Unprocessable
      operationId: getEpicHealth
      description: Get the current health for the specified Epic.
      summary: Get Epic Health
      tags:
      - Epics
    post:
      parameters:
      - in: path
        name: epic-public-id
        description: The unique ID of the Epic.
        required: true
        schema:
          type: integer
          format: int64
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateEpicHealth'
        required: true
      responses:
        '201':
          description: Resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Health'
        '400':
          description: Schema mismatch
        '404':
          description: Resource does not exist
        '422':
          description: Unprocessable
      operationId: createEpicHealth
      description: Create a new health status for the specified Epic.
      summary: Create Epic Health
      tags:
      - Epics
  /api/v3/epics/{epic-public-id}/health-history:
    get:
      parameters:
      - in: path
        name: epic-public-id
        description: The unique ID of the Epic.
        required: true
        schema:
          type: integer
          format: int64
      responses:
        '200':
          description: Resource
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Health'
        '400':
          description: Schema mismatch
        '404':
          description: Resource does not exist
        '422':
          description: Unprocessable
      operationId: listEpicHealths
      description: List the history of health statuses for the specified Epic, most recent first.
      summary: List Epic Healths
      tags:
      - Epics
  /api/v3/epics/{epic-public-id}/stories:
    get:
      parameters:
      - in: path
        name: epic-public-id
        description: The unique ID of the Epic.
        required: true
        schema:
          type: integer
          format: int64
      - in: query
        name: includes_description
        description: A true/false boolean indicating whether to return Stories with their descriptions.
        required: false
        schema:
          type: boolean
      responses:
        '200':
          description: Resource
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/StorySlim'
        '400':
          description: Schema mismatch
        '404':
          description: Resource does not exist
        '422':
          description: Unprocessable
      operationId: listEpicStories
      description: Get a list of all Stories in an Epic.
      summary: List Epic Stories
      tags:
      - Epics
components:
  schemas:
    CreateCommentComment:
      x-doc-skip: true
      type: object
      properties:
        text:
          maxLength: 100000
          description: The comment text.
          minLength: 1
          type: string
        author_id:
          description: The Member ID of the Comment's author. Defaults to the user identified by the API token.
          type: string
          format: uuid
        created_at:
          description: Defaults to the time/date the comment is created, but can be set to reflect another date.
          type: string
          format: date-time
        updated_at:
          description: Defaults to the time/date the comment is last updated, but can be set to reflect another date.
          type: string
          format: date-time
        external_id:
          maxLength: 128
          description: This field can be set to another unique ID. In the case that the comment has been imported from another tool, the ID in the other tool can be indicated here.
          type: string
      additionalProperties: false
      required:
      - text
    SyncedItem:
      x-doc-skip: true
      description: The synced item for the story.
      type: object
      properties:
        external_id:
          description: The id used to reference an external entity.
          type: string
        url:
          description: The url to the external entity.
          type: string
      additionalProperties: false
      required:
      - external_id
      - url
    Epic:
      description: An Epic is a collection of stories that together might make up a release, a objective, or some other large initiative that you are working on.
      type: object
      properties:
        app_url:
          description: The Shortcut application url for the Epic.
          type: string
        description:
          description: The Epic's description.
          type: string
        archived:
          description: True/false boolean that indicates whether the Epic is archived or not.
          type: boolean
        started:
          description: A true/false boolean indicating if the Epic has been started.
          type: boolean
        entity_type:
          description: A string description of this resource.
          type: string
        labels:
          description: An array of Labels attached to the Epic.
          type: array
          items:
            $ref: '#/components/schemas/LabelSlim'
        mention_ids:
          description: '`Deprecated:` use `member_mention_ids`.'
          type: array
          items:
            type: string
            format: uuid
        member_mention_ids:
          description: An array of Member IDs that have been mentioned in the Epic description.
          type: array
          items:
            type: string
            format: uuid
        associated_groups:
          description: An array containing Group IDs and Group-owned story counts for the Epic's associated groups.
          type: array
          items:
            $ref: '#/components/schemas/EpicAssociatedGroup'
        project_ids:
          description: The IDs of Projects related to this Epic.
          type: array
          items:
            type: integer
            format: int64
        stories_without_projects:
          description: The number of stories in this epic which are not associated with a project.
          type: integer
          format: int64
        completed_at_override:
          description: A manual override for the time/date the Epic was completed.
          type: string
          format: date-time
          nullable: true
        productboard_plugin_id:
          description: The ID of the associated productboard integration.
          type: string
          format: uuid
          nullable: true
        started_at:
          description: The time/date the Epic was started.
          type: string
          format: date-time
          nullable: true
        completed_at:
          description: The time/date the Epic was completed.
          type: string
          format: date-time
          nullable: true
        objective_ids:
          description: An array of IDs for Objectives to which this epic is related.
          type: array
          items:
            type: integer
            format: int64
        name:
          description: The name of the Epic.
          type: string
        global_id:
          x-doc-skip: true
          type: string
        completed:
          description: A true/false boolean indicating if the Epic has been completed.
          type: boolean
        comments:
          description: A nested array of threaded comments.
          type: array
          items:
            $ref: '#/components/schemas/ThreadedComment'
        productboard_url:
          description: The URL of the associated productboard feature.
          type: string
          nullable: true
        planned_start_date:
          description: The Epic's planned start date.
          type: string
          format: date-time
          nullable: true
        state:
          description: '`Deprecated` The workflow state that the Epic is in.'
          type: string
        milestone_id:
          description: '`Deprecated` The ID of the Objective this Epic is related to. Use `objective_ids`.'
          type: integer
          format: int64
          nullable: true
        requested_by_id:
          description: The ID of the Member that requested the epic.
          type: string
          format: uuid
        epic_state_id:
          description: The ID of the Epic State.
          type: integer
          format: int64
        label_ids:
          description: An array of Label ids attached to the Epic.
          type: array
          items:
            type: integer
            format: int64
        started_at_override:
          description: A manual override for the time/date the Epic was started.
          type: string
          format: date-time
          nullable: true
        group_id:
          description: '`Deprecated` The ID of the group to associate with the epic. Use `group_ids`.'
          type: string
          format: uuid
          nullable: true
        updated_at:
          description: The time/date the Epic was updated.
          type: string
          format: date-time
          nullable: true
        group_mention_ids:
          description: An array of Group IDs that have been mentioned in the Epic description.
          type: array
          items:
            type: string
            format: uuid
        productboard_id:
          description: The ID of the associated productboard feature.
          type: string
          format: uuid
          nullable: true
        follower_ids:
          description: An array of UUIDs for any Members you want to add as Followers on this Epic.
          type: array
          items:
            type: string
            format: uuid
        group_ids:
          description: An array of UUIDS for Groups to which this Epic is related.
          type: array
          items:
            type: string
            format: uuid
        owner_ids:
          description: An array of UUIDs for any members you want to add as Owners on this new Epic.
          type: array
          items:
            type: string
            format: uuid
        external_id:
          description: This field can be set to another unique ID. In the case that the Epic has been imported from another tool, the ID in the other tool can be indicated here.
          type: string
          nullable: true
        id:
          description: The unique ID of the Epic.
          type: integer
          format: int64
        health:
          $ref: '#/components/schemas/Health'
        position:
          description: The Epic's relative position in the Epic workflow state.
          type: integer
          format: int64
        productboard_name:
          description: The name of the associated productboard feature.
          type: string
          nullable: true
        deadline:
          description: The Epic's deadline.
          type: string
          format: date-time
          nullable: true
        stats:
          $ref: '#/components/schemas/EpicStats'
        created_at:
          description: The time/date the Epic was created.
          type: string
          format: date-time
          nullable: true
      additionalProperties: false
      required:
      - app_url
      - description
      - archived
      - started
      - entity_type
      - labels
      - mention_ids
      - member_mention_ids
      - associated_groups
      - project_ids
      - stories_without_projects
      - completed_at_override
      - productboard_plugin_id
      - started_at
      - completed_at
      - objective_ids
      - name
      - global_id
      - completed
      - comments
      - productboard_url
      - planned_start_date
      - state
      - milestone_id
      - requested_by_id
      - epic_state_id
      - label_ids
      - started_at_override
      - group_id
      - updated_at
      - group_mention_ids
      - productboard_id
      - follower_ids
      - group_ids
      - owner_ids
      - external_id
      - id
      - position
      - productboard_name
      - deadline
      - stats
      - created_at
    StoryCustomField:
      type: object
      properties:
        field_id:
          description: The unique public ID for a CustomField.
          type: string
          format: uuid
        value_id:
          description: The unique public ID for a CustomFieldEnumValue.
          type: string
          format: uuid
        value:
          description: A string representation of the value, if applicable.
          type: string
      additionalProperties: false
      required:
      - field_id
      - value_id
      - value
    CreateEpicComment:
      x-doc-skip: true
      type: object
      properties:
        text:
          maxLength: 100000
          description: The comment text.
          minLength: 1
          type: string
        author_id:
          description: The Member ID of the Comment's author. Defaults to the user identified by the API token.
          type: string
          format: uuid
        created_at:
          description: Defaults to the time/date the comment is created, but can be set to reflect another date.
          type: string
          format: date-time
        updated_at:
          description: Defaults to the time/date the comment is last updated, but can be set to reflect another date.
          type: string
          format: date-time
        external_id:
          maxLength: 128
          description: This field can be set to another unique ID. In the case that the comment has been imported from another tool, the ID in the other tool can be indicated here.
          type: string
      additionalProperties: false
      required:
      - text
    CreateEpic:
      x-doc-skip: true
      type: object
      properties:
        description:
          maxLength: 100000
          description: The Epic's description.
          type: string
        labels:
          description: An array of Labels attached to the Epic.
          type: array
          items:
            $ref: '#/components/schemas/CreateLabelParams'
        completed_at_override:
          description: A manual override for the time/date the Epic was completed.
          type: string
          format: date-time
        objective_ids:
          description: An array of IDs for Objectives to which this Epic is related.
          type: array
          items:
            type: integer
            format: int64
        name:
          maxLength: 256
          minLength: 1
          description: The Epic's name.
          type: string
        planned_start_date:
          description: The Epic's planned start date.
          type: string
          format: date-time
          nullable: true
        state:
          description: '`Deprecated` The Epic''s state (to do, in progress, or done); will be ignored when `epic_state_id` is set.'
          type: string
          enum:
          - in progress
          - to do
          - done
        milestone_id:
          description: '`Deprecated` The ID of the Milestone this Epic is related to. Use `objective_ids`.'
          type: integer
          format: int64
          nullable: true
        requested_by_id:
          description: The ID of the member that requested the epic.
          type: string
          format: uuid
        epic_state_id:
          description: The ID of the Epic State.
          type: integer
          format: int64
        started_at_override:
          description: A manual override for the time/date the Epic was started.
          type: string
          format: date-time
        group_id:
          description: '`Deprecated` The ID of the group to associate with the epic. Use `group_ids`.'
          type: string
          format: uuid
          nullable: true
        updated_at:
          description: Defaults to the time/date it is created but can be set to reflect another date.
          type: string
          format: date-time
        follower_ids:
          description: An array of UUIDs for any Members you want to add as Followers on this new Epic.
          type: array
          items:
            type: string
            format: uuid
        group_ids:
          description: An array of UUIDS for Groups to which this Epic is related.
          type: array
          items:
            type: string
            format: uuid
        converted_from_story_id:
          description: The ID of the Story that was converted to an Epic.
          type: integer
          format: int64
          nullable: true
        owner_ids:
          description: An array of UUIDs for any members you want to add as Owners on this new Epic.
          type: array
          items:
            type: string
            format: uuid
        external_id:
          maxLength: 128
          description: This field can be set to another unique ID. In the case that the Epic has been imported from another tool, the ID in the other tool can be indicated here.
          type: string
        deadline:
          description: The Epic's deadline.
          type: string
          format: date-time
          nullable: true
        created_at:
          description: Defaults to the time/date it is created but can be set to reflect another date.
          type: string
          format: date-time
      additionalProperties: false
      required:
      - name
    EpicAssociatedGroup:
      type: object
      properties:
        group_id:
          description: The Group ID of the associated group.
          type: string
          format: uuid
        associated_stories_count:
          description: The number of stories this Group owns in the Epic.
          type: integer
          format: int64
      additionalProperties: false
      required:
      - group_id
    UpdateComment:
      x-doc-skip: true
      type: object
      properties:
        text:
          description: The updated comment text.
          type: string
      additionalProperties: false
      required:
      - text
    EpicStats:
      description: A group of calculated values for this Epic.
      type: object
      properties:
        num_points_done:
          description: The total number of completed points in this Epic.
          type: integer
          format: int64
        num_related_documents:
          description: The total number of documents associated with this Epic.
          type: integer
          format: int64
        num_stories_unstarted:
          description: The total number of unstarted Stories in this Epic.
          type: integer
          format: int64
        num_stories_total:
          description: The total number of Stories in this Epic.
          type: integer
          format: int64
        last_story_update:
          description: The date of the last update of a Story in this Epic.
          type: string
          format: date-time
          nullable: true
        num_points_started:
          description: The total number of started points in this Epic.
          type: integer
          format: int64
        num_points_unstarted:
          description: The total number of unstarted points in this Epic.
          type: integer
          format: int64
        num_stories_started:
          description: The total number of started Stories in this Epic.
          type: integer
          format: int64
        num_stories_unestimated:
          description: The total number of Stories with no point estimate.
          type: integer
          format: int64
        num_stories_backlog:
          description: The total number of backlog Stories in this Epic.
          type: integer
          format: int64
        num_points_backlog:
          description: The total number of backlog points in this Epic.
          type: integer
          format: int64
        num_points:
          description: The total number of points in this Epic.
          type: integer
          format: int64
        num_stories_done:
          description:

# --- truncated at 32 KB (63 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/shortcut-software/refs/heads/main/openapi/shortcut-software-epics-api-openapi.yml