Shortcut API

Project management for software teams

developer.shortcut.com ↗
Version
3.0
OpenAPI
3.0.0
Endpoints
123
Schemas
192
93
Quality
Updated
3 days ago
Project management project-management agile software
Use this API in your AI agent

Query structured spec data via REST or MCP. Get exactly what your agent needs.

Get API Key

Server URLs

https://api.app.shortcut.com

Endpoints

Clear filters

Category 4 endpoints

GET /api/v3/categories

List Categories returns a list of all Categories and their attributes.

operationId: Category_listAll

Responses

200

Resource

400

Schema mismatch

404

Resource does not exist

422

Unprocessable

GET /api/v3/categories
GET /api/v3/categories/{category-public-id}

Get Category returns information about the selected Category.

operationId: Category_getInformation

Parameters

Name In Required Type Description
category-public-id path required integer

The unique ID of the Category.

Responses

200

Resource

400

Schema mismatch

404

Resource does not exist

422

Unprocessable

GET /api/v3/categories/{category-public-id}
GET /api/v3/categories/{category-public-id}/milestones

List Category Milestones returns a list of all Milestones with the Category.

operationId: Category_listMilestones

Parameters

Name In Required Type Description
category-public-id path required integer

The unique ID of the Category.

Responses

200

Resource

400

Schema mismatch

404

Resource does not exist

422

Unprocessable

GET /api/v3/categories/{category-public-id}/milestones
GET /api/v3/categories/{category-public-id}/objectives

Returns a list of all Objectives with the Category.

operationId: Category_listObjectives

Parameters

Name In Required Type Description
category-public-id path required integer

The unique ID of the Category.

Responses

200

Resource

400

Schema mismatch

404

Resource does not exist

422

Unprocessable

GET /api/v3/categories/{category-public-id}/objectives

Customfield 2 endpoints

GET /api/v3/custom-fields
operationId: CustomField_list

Responses

200

Resource

400

Schema mismatch

404

Resource does not exist

422

Unprocessable

GET /api/v3/custom-fields
GET /api/v3/custom-fields/{custom-field-public-id}
operationId: CustomField_getById

Parameters

Name In Required Type Description
custom-field-public-id path required string

The unique ID of the CustomField.

Responses

200

Resource

400

Schema mismatch

404

Resource does not exist

422

Unprocessable

GET /api/v3/custom-fields/{custom-field-public-id}

Epic 10 endpoints

GET /api/v3/epic-workflow

Returns the Epic Workflow for the Workspace.

operationId: Epic_getWorkflow

Responses

200

Resource

400

Schema mismatch

404

Resource does not exist

422

Unprocessable

GET /api/v3/epic-workflow
GET /api/v3/epics

List Epics returns a list of all Epics and their attributes.

operationId: Epic_listAllAttributes

Parameters

Name In Required Type Description
includes_description query optional boolean

A true/false boolean indicating whether to return Epics with their descriptions.

Responses

200

Resource

400

Schema mismatch

404

Resource does not exist

422

Unprocessable

GET /api/v3/epics
GET /api/v3/epics/{epic-public-id}

Get Epic returns information about the selected Epic.

operationId: Epic_getInformation

Parameters

Name In Required Type Description
epic-public-id path required integer

The unique ID of the Epic.

Responses

200

Resource

400

Schema mismatch

404

Resource does not exist

422

Unprocessable

GET /api/v3/epics/{epic-public-id}
GET /api/v3/epics/{epic-public-id}/comments

Get a list of all Comments on an Epic.

operationId: Epic_getAllEpicComments

Parameters

Name In Required Type Description
epic-public-id path required integer

The unique ID of the Epic.

Responses

200

Resource

400

Schema mismatch

404

Resource does not exist

422

Unprocessable

GET /api/v3/epics/{epic-public-id}/comments
GET /api/v3/epics/{epic-public-id}/comments/{comment-public-id}

This endpoint returns information about the selected Epic Comment.

operationId: Epic_getCommentInfo

Parameters

Name In Required Type Description
epic-public-id path required integer

The ID of the associated Epic.

comment-public-id path required integer

The ID of the Comment.

Responses

200

Resource

400

Schema mismatch

404

Resource does not exist

422

Unprocessable

GET /api/v3/epics/{epic-public-id}/comments/{comment-public-id}
GET /api/v3/epics/{epic-public-id}/stories

Get a list of all Stories in an Epic.

operationId: Epic_listStories

Parameters

Name In Required Type Description
epic-public-id path required integer

The unique ID of the Epic.

includes_description query optional boolean

A true/false boolean indicating whether to return Stories with their descriptions.

Responses

200

Resource

400

Schema mismatch

404

Resource does not exist

422

Unprocessable

GET /api/v3/epics/{epic-public-id}/stories
GET /api/v3/labels/{label-public-id}/epics

List all of the Epics with the Label.

operationId: Epic_listEpics

Parameters

Name In Required Type Description
label-public-id path required integer

The unique ID of the Label.

Responses

200

Resource

400

Schema mismatch

404

Resource does not exist

422

Unprocessable

GET /api/v3/labels/{label-public-id}/epics
GET /api/v3/milestones/{milestone-public-id}/epics

List all of the Epics within the Milestone.

operationId: Epic_listMilestoneEpics

Parameters

Name In Required Type Description
milestone-public-id path required integer

The ID of the Milestone.

Responses

200

Resource

400

Schema mismatch

404

Resource does not exist

422

Unprocessable

GET /api/v3/milestones/{milestone-public-id}/epics
GET /api/v3/objectives/{objective-public-id}/epics

List all of the Epics within the Objective.

operationId: Epic_listObjectiveEpics

Parameters

Name In Required Type Description
objective-public-id path required integer

The ID of the Objective.

Responses

200

Resource

400

Schema mismatch

404

Resource does not exist

422

Unprocessable

GET /api/v3/objectives/{objective-public-id}/epics
GET /api/v3/search/epics

Search Epics lets you search Epics based on desired parameters. Since ordering of stories can change over time (due to search ranking decay, new Epics being created), the next value from the previous response can be used as the path and query string for the next page to ensure stable ordering.

operationId: Epic_getEpics

Parameters

Name In Required Type Description
query query required string

See our help center article on search operators

page_size query optional integer

The number of search results to include in a page. Minimum of 1 and maximum of 25.

detail query optional string

The amount of detail included in each result item.
“full” will include all descriptions and comments and more fields on
related items such as pull requests, branches and tasks.
“slim” omits larger fulltext fields such as descriptions and comments
and only references related items by id.
The default is “full”.

next query optional string

The next page token.

entity_types query optional array

A collection of entity_types to search. Defaults to story and epic. Supports: epic, iteration, objective, story.

Responses

200

Resource

400

Either: (1) Schema mismatch or (2) Maximum of 1000 search results exceeded

404

Resource does not exist

422

Unprocessable

GET /api/v3/search/epics

Externallinkstory 1 endpoints

GET /api/v3/external-link/stories

Get Stories which have a given External Link associated with them.

operationId: ExternalLinkStory_getStories

Parameters

Name In Required Type Description
external_link query required string

The external link associated with one or more stories.

Responses

200

Resource

400

Schema mismatch

404

Resource does not exist

422

Unprocessable

GET /api/v3/external-link/stories

File 4 endpoints

GET /api/v3/files

List Files returns a list of all UploadedFiles in the workspace.

operationId: File_listFiles

Responses

200

Resource

400

Schema mismatch

404

Resource does not exist

422

Unprocessable

GET /api/v3/files
GET /api/v3/files/{file-public-id}

Get File returns information about the selected UploadedFile.

operationId: File_getFileInfo

Parameters

Name In Required Type Description
file-public-id path required integer

The File’s unique ID.

Responses

200

Resource

400

Schema mismatch

404

Resource does not exist

422

Unprocessable

GET /api/v3/files/{file-public-id}
GET /api/v3/linked-files

List Linked Files returns a list of all Linked-Files and their attributes.

operationId: File_listLinkedFiles

Responses

200

Resource

400

Schema mismatch

404

Resource does not exist

422

Unprocessable

GET /api/v3/linked-files
GET /api/v3/linked-files/{linked-file-public-id}

Get File returns information about the selected Linked File.

operationId: File_getLinkedFileInfo

Parameters

Name In Required Type Description
linked-file-public-id path required integer

The unique identifier of the linked file.

Responses

200

Resource

400

Schema mismatch

404

Resource does not exist

422

Unprocessable

GET /api/v3/linked-files/{linked-file-public-id}

Group 3 endpoints

GET /api/v3/groups

A group in our API maps to a “Team” within the Shortcut Product. A Team is a collection of Users that can be associated to Stories, Epics, and Iterations within Shortcut.

operationId: Group_listTeams

Responses

200

Resource

400

Schema mismatch

404

Resource does not exist

422

Unprocessable

GET /api/v3/groups
GET /api/v3/groups/{group-public-id}
operationId: Group_getDetails

Parameters

Name In Required Type Description
group-public-id path required string

The unique ID of the Group.

Responses

200

Resource

400

Schema mismatch

404

Resource does not exist

422

Unprocessable

GET /api/v3/groups/{group-public-id}
GET /api/v3/groups/{group-public-id}/stories

List the Stories assigned to the Group. (By default, limited to 1,000).

operationId: Group_listStories

Parameters

Name In Required Type Description
group-public-id path required string

The unique ID of the Group.

limit query optional integer

The maximum number of results to return. (Defaults to 1000, max 1000)

offset query optional integer

The offset at which to begin returning results. (Defaults to 0)

Responses

200

Resource

400

Schema mismatch

404

Resource does not exist

422

Unprocessable

GET /api/v3/groups/{group-public-id}/stories

Iteration 3 endpoints

GET /api/v3/iterations
operationId: Iteration_getAllIterations

Responses

200

Resource

400

Schema mismatch

404

Resource does not exist

422

Unprocessable

GET /api/v3/iterations
GET /api/v3/iterations/{iteration-public-id}
operationId: Iteration_getById

Parameters

Name In Required Type Description
iteration-public-id path required integer

The unique ID of the Iteration.

Responses

200

Resource

400

Schema mismatch

404

Resource does not exist

422

Unprocessable

GET /api/v3/iterations/{iteration-public-id}
GET /api/v3/iterations/{iteration-public-id}/stories

Get a list of all Stories in an Iteration.

operationId: Iteration_listStories

Parameters

Name In Required Type Description
iteration-public-id path required integer

The unique ID of the Iteration.

includes_description query optional boolean

A true/false boolean indicating whether to return Stories with their descriptions.

Responses

200

Resource

400

Schema mismatch

404

Resource does not exist

422

Unprocessable

GET /api/v3/iterations/{iteration-public-id}/stories

Keyresult 1 endpoints

GET /api/v3/key-results/{key-result-public-id}

Get Key Result returns information about a chosen Key Result.

operationId: KeyResult_getInformation

Parameters

Name In Required Type Description
key-result-public-id path required string

The ID of the Key Result.

Responses

200

Resource

400

Schema mismatch

404

Resource does not exist

422

Unprocessable

GET /api/v3/key-results/{key-result-public-id}

Label 3 endpoints

GET /api/v3/labels

List Labels returns a list of all Labels and their attributes.

operationId: Label_list

Parameters

Name In Required Type Description
slim query optional boolean

A true/false boolean indicating if the slim versions of the Label should be returned.

Responses

200

Resource

400

Schema mismatch

404

Resource does not exist

422

Unprocessable

GET /api/v3/labels
GET /api/v3/labels/{label-public-id}

Get Label returns information about the selected Label.

operationId: Label_getInfo

Parameters

Name In Required Type Description
label-public-id path required integer

The unique ID of the Label.

Responses

200

Resource

400

Schema mismatch

404

Resource does not exist

422

Unprocessable

GET /api/v3/labels/{label-public-id}
GET /api/v3/labels/{label-public-id}/stories

List all of the Stories with the Label.

operationId: Label_listStories

Parameters

Name In Required Type Description
label-public-id path required integer

The unique ID of the Label.

includes_description query optional boolean

A true/false boolean indicating whether to return Stories with their descriptions.

Responses

200

Resource

400

Schema mismatch

404

Resource does not exist

422

Unprocessable

GET /api/v3/labels/{label-public-id}/stories

Member 3 endpoints

GET /api/v3/member

Returns information about the authenticated member.

operationId: Member_getCurrentInfo

Responses

200

Resource

400

Schema mismatch

404

Resource does not exist

422

Unprocessable

GET /api/v3/member
GET /api/v3/members

Returns information about members of the Workspace.

operationId: Member_listWorkspaceMembers

Parameters

Name In Required Type Description
org-public-id query optional string

The unique ID of the Organization to limit the list to.

Responses

200

Resource

400

Schema mismatch

404

Resource does not exist

422

Unprocessable

GET /api/v3/members
GET /api/v3/members/{member-public-id}

Returns information about a Member.

operationId: Member_getInfo

Parameters

Name In Required Type Description
member-public-id path required string

The Member’s unique ID.

org-public-id query optional string

The unique ID of the Organization to limit the lookup to.

Responses

200

Resource

400

Schema mismatch

404

Resource does not exist

422

Unprocessable

GET /api/v3/members/{member-public-id}

Milestone 2 endpoints

GET /api/v3/milestones

List Milestones returns a list of all Milestones and their attributes.

operationId: Milestone_listAllAttributes

Responses

200

Resource

400

Schema mismatch

404

Resource does not exist

422

Unprocessable

GET /api/v3/milestones
GET /api/v3/milestones/{milestone-public-id}

Get Milestone returns information about a chosen Milestone.

operationId: Milestone_getInfo

Parameters

Name In Required Type Description
milestone-public-id path required integer

The ID of the Milestone.

Responses

200

Resource

400

Schema mismatch

404

Resource does not exist

422

Unprocessable

GET /api/v3/milestones/{milestone-public-id}

Objective 2 endpoints

GET /api/v3/objectives

List Objectives returns a list of all Objectives and their attributes.

operationId: Objective_listAll

Responses

200

Resource

400

Schema mismatch

404

Resource does not exist

422

Unprocessable

GET /api/v3/objectives
GET /api/v3/objectives/{objective-public-id}

Get Objective returns information about a chosen Objective.

operationId: Objective_getInfo

Parameters

Name In Required Type Description
objective-public-id path required integer

The ID of the Objective.

Responses

200

Resource

400

Schema mismatch

404

Resource does not exist

422

Unprocessable

GET /api/v3/objectives/{objective-public-id}

Project 3 endpoints

GET /api/v3/projects

List Projects returns a list of all Projects and their attributes.

operationId: Project_getAll

Responses

200

Resource

400

Schema mismatch

404

Resource does not exist

422

Unprocessable

GET /api/v3/projects
GET /api/v3/projects/{project-public-id}

Get Project returns information about the selected Project.

operationId: Project_getInformation

Parameters

Name In Required Type Description
project-public-id path required integer

The unique ID of the Project.

Responses

200

Resource

400

Schema mismatch

404

Resource does not exist

422

Unprocessable

GET /api/v3/projects/{project-public-id}
GET /api/v3/projects/{project-public-id}/stories

List Stories returns a list of all Stories in a selected Project and their attributes.

operationId: Project_listStories

Parameters

Name In Required Type Description
project-public-id path required integer

The unique ID of the Project.

includes_description query optional boolean

A true/false boolean indicating whether to return Stories with their descriptions.

Responses

200

Resource

400

Schema mismatch

404

Resource does not exist

422

Unprocessable

GET /api/v3/projects/{project-public-id}/stories

Repository 2 endpoints

GET /api/v3/repositories

List Repositories returns a list of all Repositories and their attributes.

operationId: Repository_listAll

Responses

200

Resource

400

Schema mismatch

404

Resource does not exist

422

Unprocessable

GET /api/v3/repositories
GET /api/v3/repositories/{repo-public-id}

Get Repository returns information about the selected Repository.

operationId: Repository_getInformation

Parameters

Name In Required Type Description
repo-public-id path required integer

The unique ID of the Repository.

Responses

200

Resource

400

Schema mismatch

404

Resource does not exist

422

Unprocessable

GET /api/v3/repositories/{repo-public-id}

Story 6 endpoints

GET /api/v3/stories/{story-public-id}

Get Story returns information about a chosen Story.

operationId: Story_getInformation

Parameters

Name In Required Type Description
story-public-id path required integer

The ID of the Story.

Responses

200

Resource

400

Schema mismatch

404

Resource does not exist

422

Unprocessable

GET /api/v3/stories/{story-public-id}
GET /api/v3/stories/{story-public-id}/comments

Lists Comments associated with a Story

operationId: Story_listComments

Parameters

Name In Required Type Description
story-public-id path required integer

The ID of the Story that the Comment is in.

Responses

200

Resource

400

Schema mismatch

404

Resource does not exist

422

Unprocessable

GET /api/v3/stories/{story-public-id}/comments
GET /api/v3/stories/{story-public-id}/comments/{comment-public-id}

Get Comment is used to get Comment information.

operationId: Story_getComment

Parameters

Name In Required Type Description
story-public-id path required integer

The ID of the Story that the Comment is in.

comment-public-id path required integer

The ID of the Comment.

Responses

200

Resource

400

Schema mismatch

404

Resource does not exist

422

Unprocessable

GET /api/v3/stories/{story-public-id}/comments/{comment-public-id}
GET /api/v3/stories/{story-public-id}/history
operationId: Story_getHistory

Parameters

Name In Required Type Description
story-public-id path required integer

The ID of the Story.

Responses

200

Resource

400

Schema mismatch

404

Resource does not exist

422

Unprocessable

GET /api/v3/stories/{story-public-id}/history
GET /api/v3/stories/{story-public-id}/tasks/{task-public-id}

Returns information about a chosen Task.

operationId: Story_getTaskInformation

Parameters

Name In Required Type Description
story-public-id path required integer

The unique ID of the Story this Task is associated with.

task-public-id path required integer

The unique ID of the Task.

Responses

200

Resource

400

Schema mismatch

404

Resource does not exist

422

Unprocessable

GET /api/v3/stories/{story-public-id}/tasks/{task-public-id}
GET /api/v3/story-links/{story-link-public-id}

Returns the stories and their relationship for the given Story Link.

operationId: Story_getRelationship

Parameters

Name In Required Type Description
story-link-public-id path required integer

The unique ID of the Story Link.

Responses

200

Resource

400

Schema mismatch

404

Resource does not exist

422

Unprocessable

GET /api/v3/story-links/{story-link-public-id}

Template 2 endpoints

GET /api/v3/entity-templates

List all the entity templates for the Workspace.

operationId: Template_listEntityTemplates

Responses

200

Resource

400

Schema mismatch

404

Resource does not exist

422

Unprocessable

GET /api/v3/entity-templates
GET /api/v3/entity-templates/{entity-template-public-id}

Get Entity Template returns information about a given entity template.

operationId: Template_getInformation

Parameters

Name In Required Type Description
entity-template-public-id path required string

The unique ID of the entity template.

Responses

200

Resource

400

Schema mismatch

404

Resource does not exist

422

Unprocessable

GET /api/v3/entity-templates/{entity-template-public-id}

Workflow 2 endpoints

GET /api/v3/workflows

Returns a list of all Workflows in the Workspace.

operationId: Workflow_listAll

Responses

200

Resource

400

Schema mismatch

404

Resource does not exist

422

Unprocessable

GET /api/v3/workflows
GET /api/v3/workflows/{workflow-public-id}

Get Workflow returns information about a chosen Workflow.

operationId: Workflow_getInformation

Parameters

Name In Required Type Description
workflow-public-id path required integer

The ID of the Workflow.

Responses

200

Resource

400

Schema mismatch

404

Resource does not exist

422

Unprocessable

GET /api/v3/workflows/{workflow-public-id}

Schemas

object BaseTaskParams
{
  "type": "object",
  "required": [
    "description"
  ],
  "properties": {
    "complete": {
      "type": "boolean",
      "description": "True/false boolean indicating whether the Task is completed. Defaults to false."
    },
    "owner_ids": {
      "type": "array",
      "items": {
        "type": "string",
        "format": "uuid"
      },
      "description": "An array of UUIDs for any members you want to add as Owners on this new Task."
    },
    "description": {
      "type": "string",
      "maxLength": 2048,
      "minLength": 1,
      "description": "The Task description."
    },
    "external_id": {
      "type": "string",
      "description": "This field can be set to another unique ID. In the case that the Task has been imported from another tool, the ID in the other tool can be indicated here."
    }
  },
  "description": "Request parameters for specifying how to pre-populate a task through a template."
}
object BasicWorkspaceInfo
{
  "type": "object",
  "required": [
    "url_slug",
    "estimate_scale"
  ],
  "properties": {
    "url_slug": {
      "type": "string"
    },
    "estimate_scale": {
      "type": "array",
      "items": {
        "type": "integer",
        "format": "int64"
      }
    }
  }
}
object Branch
{
  "type": "object",
  "required": [
    "entity_type",
    "deleted",
    "name",
    "persistent",
    "updated_at",
    "pull_requests",
    "merged_branch_ids",
    "id",
    "url",
    "repository_id",
    "created_at"
  ],
  "properties": {
    "id": {
      "type": "integer",
      "format": "int64",
      "nullable": true,
      "description": "The unique ID of the Branch."
    },
    "url": {
      "type": "string",
      "description": "The URL of the Branch."
    },
    "name": {
      "type": "string",
      "description": "The name of the Branch."
    },
    "deleted": {
      "type": "boolean",
      "description": "A true/false boolean indicating if the Branch has been deleted."
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "nullable": true,
      "description": "The time/date the Branch was created."
    },
    "persistent": {
      "type": "boolean",
      "description": "A true/false boolean indicating if the Branch is persistent; e.g. master."
    },
    "updated_at": {
      "type": "string",
      "format": "date-time",
      "nullable": true,
      "description": "The time/date the Branch was updated."
    },
    "entity_type": {
      "type": "string",
      "description": "A string description of this resource."
    },
    "pull_requests": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/PullRequest"
      },
      "description": "An array of PullRequests attached to the Branch (there is usually only one)."
    },
    "repository_id": {
      "type": "integer",
      "format": "int64",
      "description": "The ID of the Repository that contains the Branch."
    },
    "merged_branch_ids": {
      "type": "array",
      "items": {
        "type": "integer",
        "format": "int64"
      },
      "description": "The IDs of the Branches the Branch has been merged into."
    }
  },
  "description": "Branch refers to a VCS branch. Branches are feature branches associated with Shortcut Stories."
}
object Category
{
  "type": "object",
  "required": [
    "archived",
    "entity_type",
    "color",
    "name",
    "global_id",
    "type",
    "updated_at",
    "external_id",
    "id",
    "created_at"
  ],
  "properties": {
    "id": {
      "type": "integer",
      "format": "int64",
      "description": "The unique ID of the Category."
    },
    "name": {
      "type": "string",
      "description": "The name of the Category."
    },
    "type": {
      "type": "string",
      "x-doc-skip": true,
      "description": "The type of entity this Category is associated with; currently Milestone or Objective is the only type of Category."
    },
    "color": {
      "type": "string",
      "format": "css-color",
      "pattern": "^#[a-fA-F0-9]{6}$",
      "nullable": true,
      "minLength": 1,
      "description": "The hex color to be displayed with the Category (for example, \"#ff0000\")."
    },
    "archived": {
      "type": "boolean",
      "description": "A true/false boolean indicating if the Category has been archived."
    },
    "global_id": {
      "type": "string",
      "x-doc-skip": true,
      "description": "The Global ID of the Category."
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "description": "The time/date that the Category was created."
    },
    "updated_at": {
      "type": "string",
      "format": "date-time",
      "description": "The time/date that the Category was updated."
    },
    "entity_type": {
      "type": "string",
      "description": "A string description of this resource."
    },
    "external_id": {
      "type": "string",
      "nullable": true,
      "description": "This field can be set to another unique ID. In the case that the Category has been imported from another tool, the ID in the other tool can be indicated here."
    }
  },
  "description": "A Category can be used to associate Objectives."
}
array CategoryListAllResponse
{
  "type": "array",
  "items": {
    "$ref": "#/components/schemas/Category"
  }
}
array CategoryListMilestonesResponse
{
  "type": "array",
  "items": {
    "$ref": "#/components/schemas/Milestone"
  }
}
array CategoryListObjectivesResponse
{
  "type": "array",
  "items": {
    "$ref": "#/components/schemas/Milestone"
  }
}
object Commit
{
  "type": "object",
  "required": [
    "entity_type",
    "author_id",
    "hash",
    "updated_at",
    "id",
    "url",
    "author_email",
    "timestamp",
    "author_identity",
    "repository_id",
    "created_at",
    "message"
  ],
  "properties": {
    "id": {
      "type": "integer",
      "format": "int64",
      "nullable": true,
      "description": "The unique ID of the Commit."
    },
    "url": {
      "type": "string",
      "description": "The URL of the Commit."
    },
    "hash": {
      "type": "string",
      "description": "The Commit hash."
    },
    "message": {
      "type": "string",
      "description": "The Commit message."
    },
    "author_id": {
      "type": "string",
      "format": "uuid",
      "nullable": true,
      "description": "The ID of the Member that authored the Commit, if known."
    },
    "timestamp": {
      "type": "string",
      "format": "date-time",
      "description": "The time/date the Commit was pushed."
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "description": "The time/date the Commit was created."
    },
    "updated_at": {
      "type": "string",
      "format": "date-time",
      "nullable": true,
      "description": "The time/date the Commit was updated."
    },
    "entity_type": {
      "type": "string",
      "description": "A string description of this resource."
    },
    "author_email": {
      "type": "string",
      "description": "The email address of the VCS user that authored the Commit."
    },
    "repository_id": {
      "type": "integer",
      "format": "int64",
      "nullable": true,
      "description": "The ID of the Repository that contains the Commit."
    },
    "author_identity": {
      "$ref": "#/components/schemas/Identity"
    }
  },
  "description": "Commit refers to a VCS commit and all associated details."
}
object CreateCategory
{
  "type": "object",
  "required": [
    "name"
  ],
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "description": "The name of the new Category."
    },
    "type": {
      "x-doc-skip": true,
      "description": "The type of entity this Category is associated with; currently Milestone or Objective is the only type of Category."
    },
    "color": {
      "type": "string",
      "format": "css-color",
      "pattern": "^#[a-fA-F0-9]{6}$",
      "minLength": 1,
      "description": "The hex color to be displayed with the Category (for example, \"#ff0000\")."
    },
    "external_id": {
      "type": "string",
      "minLength": 1,
      "description": "This field can be set to another unique ID. In the case that the Category has been imported from another tool, the ID in the other tool can be indicated here."
    }
  },
  "x-doc-skip": true
}
object CreateCategoryParams
{
  "type": "object",
  "required": [
    "name"
  ],
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "description": "The name of the new Category."
    },
    "color": {
      "type": "string",
      "format": "css-color",
      "pattern": "^#[a-fA-F0-9]{6}$",
      "minLength": 1,
      "description": "The hex color to be displayed with the Category (for example, \"#ff0000\")."
    },
    "external_id": {
      "type": "string",
      "minLength": 1,
      "description": "This field can be set to another unique ID. In the case that the Category has been imported from another tool, the ID in the other tool can be indicated here."
    }
  },
  "description": "Request parameters for creating a Category with a Objective."
}
object CreateCommentComment
{
  "type": "object",
  "required": [
    "text"
  ],
  "properties": {
    "text": {
      "type": "string",
      "maxLength": 100000,
      "minLength": 1,
      "description": "The comment text."
    },
    "author_id": {
      "type": "string",
      "format": "uuid",
      "description": "The Member ID of the Comment's author. Defaults to the user identified by the API token."
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "description": "Defaults to the time/date the comment is created, but can be set to reflect another date."
    },
    "updated_at": {
      "type": "string",
      "format": "date-time",
      "description": "Defaults to the time/date the comment is last updated, but can be set to reflect another date."
    },
    "external_id": {
      "type": "string",
      "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."
    }
  },
  "x-doc-skip": true
}
object CreateEntityTemplate
{
  "type": "object",
  "required": [
    "name",
    "story_contents"
  ],
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "description": "The name of the new entity template"
    },
    "author_id": {
      "type": "string",
      "format": "uuid",
      "description": "The id of the user creating this template."
    },
    "story_contents": {
      "$ref": "#/components/schemas/CreateStoryContents"
    }
  },
  "description": "Request paramaters for creating an entirely new entity template."
}
object CreateEpic
{
  "type": "object",
  "required": [
    "name"
  ],
  "properties": {
    "name": {
      "type": "string",
      "maxLength": 256,
      "minLength": 1,
      "description": "The Epic's name."
    },
    "state": {
      "enum": [
        "in progress",
        "to do",
        "done"
      ],
      "type": "string",
      "description": "`Deprecated` The Epic's state (to do, in progress, or done); will be ignored when `epic_state_id` is set."
    },
    "labels": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/CreateLabelParams"
      },
      "description": "An array of Labels attached to the Epic."
    },
    "deadline": {
      "type": "string",
      "format": "date-time",
      "nullable": true,
      "description": "The Epic's deadline."
    },
    "group_id": {
      "type": "string",
      "format": "uuid",
      "nullable": true,
      "description": "`Deprecated` The ID of the group to associate with the epic. Use `group_ids`."
    },
    "group_ids": {
      "type": "array",
      "items": {
        "type": "string",
        "format": "uuid"
      },
      "description": "An array of UUIDS for Groups to which this Epic is related."
    },
    "owner_ids": {
      "type": "array",
      "items": {
        "type": "string",
        "format": "uuid"
      },
      "description": "An array of UUIDs for any members you want to add as Owners on this new Epic."
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "description": "Defaults to the time/date it is created but can be set to reflect another date."
    },
    "updated_at": {
      "type": "string",
      "format": "date-time",
      "description": "Defaults to the time/date it is created but can be set to reflect another date."
    },
    "description": {
      "type": "string",
      "maxLength": 100000,
      "description": "The Epic's description."
    },
    "external_id": {
      "type": "string",
      "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."
    },
    "follower_ids": {
      "type": "array",
      "items": {
        "type": "string",
        "format": "uuid"
      },
      "description": "An array of UUIDs for any Members you want to add as Followers on this new Epic."
    },
    "milestone_id": {
      "type": "integer",
      "format": "int64",
      "nullable": true,
      "description": "`Deprecated` The ID of the Milestone this Epic is related to. Use `objective_ids`."
    },
    "epic_state_id": {
      "type": "integer",
      "format": "int64",
      "description": "The ID of the Epic State."
    },
    "objective_ids": {
      "type": "array",
      "items": {
        "type": "integer",
        "format": "int64"
      },
      "description": "An array of IDs for Objectives to which this Epic is related."
    },
    "requested_by_id": {
      "type": "string",
      "format": "uuid",
      "description": "The ID of the member that requested the epic."
    },
    "planned_start_date": {
      "type": "string",
      "format": "date-time",
      "nullable": true,
      "description": "The Epic's planned start date."
    },
    "started_at_override": {
      "type": "string",
      "format": "date-time",
      "description": "A manual override for the time/date the Epic was started."
    },
    "completed_at_override": {
      "type": "string",
      "format": "date-time",
      "description": "A manual override for the time/date the Epic was completed."
    }
  },
  "x-doc-skip": true
}
object CreateEpicComment
{
  "type": "object",
  "required": [
    "text"
  ],
  "properties": {
    "text": {
      "type": "string",
      "maxLength": 100000,
      "minLength": 1,
      "description": "The comment text."
    },
    "author_id": {
      "type": "string",
      "format": "uuid",
      "description": "The Member ID of the Comment's author. Defaults to the user identified by the API token."
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "description": "Defaults to the time/date the comment is created, but can be set to reflect another date."
    },
    "updated_at": {
      "type": "string",
      "format": "date-time",
      "description": "Defaults to the time/date the comment is last updated, but can be set to reflect another date."
    },
    "external_id": {
      "type": "string",
      "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."
    }
  },
  "x-doc-skip": true
}
object CreateGroup
{
  "type": "object",
  "required": [
    "name",
    "mention_name"
  ],
  "properties": {
    "name": {
      "type": "string",
      "maxLength": 63,
      "minLength": 1,
      "description": "The name of this Group."
    },
    "color": {
      "type": "string",
      "format": "css-color",
      "pattern": "^#[a-fA-F0-9]{6}$",
      "minLength": 1,
      "description": "The color you wish to use for the Group in the system."
    },
    "color_key": {
      "enum": [
        "blue",
        "purple",
        "midnight-blue",
        "orange",
        "yellow-green",
        "brass",
        "gray",
        "fuchsia",
        "yellow",
        "pink",
        "sky-blue",
        "green",
        "red",
        "black",
        "slate",
        "turquoise"
      ],
      "type": "string",
      "description": "The color key you wish to use for the Group in the system."
    },
    "member_ids": {
      "type": "array",
      "items": {
        "type": "string",
        "format": "uuid"
      },
      "description": "The Member ids to add to this Group.",
      "uniqueItems": true
    },
    "description": {
      "type": "string",
      "description": "The description of the Group."
    },
    "mention_name": {
      "type": "string",
      "maxLength": 63,
      "minLength": 1,
      "description": "The mention name of this Group."
    },
    "workflow_ids": {
      "type": "array",
      "items": {
        "type": "integer",
        "format": "int64"
      },
      "description": "The Workflow ids to add to the Group."
    },
    "display_icon_id": {
      "type": "string",
      "format": "uuid",
      "description": "The Icon id for the avatar of this Group."
    }
  }
}
object CreateIteration
{
  "type": "object",
  "required": [
    "name",
    "start_date",
    "end_date"
  ],
  "properties": {
    "name": {
      "type": "string",
      "maxLength": 256,
      "minLength": 1,
      "description": "The name of this Iteration."
    },
    "labels": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/CreateLabelParams"
      },
      "description": "An array of Labels attached to the Iteration."
    },
    "end_date": {
      "type": "string",
      "minLength": 1,
      "description": "The date this Iteration ends, e.g. 2019-07-01."
    },
    "group_ids": {
      "type": "array",
      "items": {
        "type": "string",
        "format": "uuid"
      },
      "description": "An array of UUIDs for any Groups you want to add as Followers. Currently, only one Group association is presented in our web UI."
    },
    "start_date": {
      "type": "string",
      "minLength": 1,
      "description": "The date this Iteration begins, e.g. 2019-07-01."
    },
    "description": {
      "type": "string",
      "maxLength": 100000,
      "description": "The description of the Iteration."
    },
    "follower_ids": {
      "type": "array",
      "items": {
        "type": "string",
        "format": "uuid"
      },
      "description": "An array of UUIDs for any Members you want to add as Followers."
    }
  }
}
object CreateLabelParams
{
  "type": "object",
  "required": [
    "name"
  ],
  "properties": {
    "name": {
      "type": "string",
      "maxLength": 128,
      "minLength": 1,
      "description": "The name of the new Label."
    },
    "color": {
      "type": "string",
      "format": "css-color",
      "pattern": "^#[a-fA-F0-9]{6}$",
      "minLength": 1,
      "description": "The hex color to be displayed with the Label (for example, \"#ff0000\")."
    },
    "description": {
      "type": "string",
      "description": "The description of the new Label."
    },
    "external_id": {
      "type": "string",
      "minLength": 1,
      "description": "This field can be set to another unique ID. In the case that the Label has been imported from another tool, the ID in the other tool can be indicated here."
    }
  },
  "description": "Request parameters for creating a Label on a Shortcut Story."
}
object CreateLinkedFile
{
  "type": "object",
  "required": [
    "name",
    "type",
    "url"
  ],
  "properties": {
    "url": {
      "type": "string",
      "pattern": "^https?://.+$",
      "maxLength": 2048,
      "description": "The URL of linked file."
    },
    "name": {
      "type": "string",
      "maxLength": 256,
      "minLength": 1,
      "description": "The name of the file."
    },
    "size": {
      "type": "integer",
      "format": "int64",
      "description": "The filesize, if the integration provided it."
    },
    "type": {
      "enum": [
        "google",
        "url",
        "dropbox",
        "box",
        "onedrive"
      ],
      "type": "string",
      "description": "The integration type of the file (e.g. google, dropbox, box)."
    },
    "story_id": {
      "type": "integer",
      "format": "int64",
      "description": "The ID of the linked story."
    },
    "description": {
      "type": "string",
      "description": "The description of the file."
    },
    "uploader_id": {
      "type": "string",
      "format": "uuid",
      "description": "The UUID of the member that uploaded the file."
    },
    "content_type": {
      "type": "string",
      "description": "The content type of the image (e.g. txt/plain)."
    },
    "thumbnail_url": {
      "type": "string",
      "pattern": "^https?://.+$",
      "maxLength": 2048,
      "description": "The URL of the thumbnail, if the integration provided it."
    }
  },
  "x-doc-skip": true
}
object CreateMilestone
{
  "type": "object",
  "required": [
    "name"
  ],
  "properties": {
    "name": {
      "type": "string",
      "maxLength": 256,
      "minLength": 1,
      "description": "The name of the Milestone."
    },
    "state": {
      "enum": [
        "in progress",
        "to do",
        "done"
      ],
      "type": "string",
      "description": "The workflow state that the Milestone is in."
    },
    "categories": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/CreateCategoryParams"
      },
      "description": "An array of IDs of Categories attached to the Milestone."
    },
    "description": {
      "type": "string",
      "maxLength": 100000,
      "description": "The Milestone's description."
    },
    "started_at_override": {
      "type": "string",
      "format": "date-time",
      "description": "A manual override for the time/date the Milestone was started."
    },
    "completed_at_override": {
      "type": "string",
      "format": "date-time",
      "description": "A manual override for the time/date the Milestone was completed."
    }
  },
  "x-doc-skip": true
}
object CreateObjective
{
  "type": "object",
  "required": [
    "name"
  ],
  "properties": {
    "name": {
      "type": "string",
      "maxLength": 256,
      "minLength": 1,
      "description": "The name of the Objective."
    },
    "state": {
      "enum": [
        "in progress",
        "to do",
        "done"
      ],
      "type": "string",
      "description": "The workflow state that the Objective is in."
    },
    "categories": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/CreateCategoryParams"
      },
      "description": "An array of IDs of Categories attached to the Objective."
    },
    "description": {
      "type": "string",
      "maxLength": 100000,
      "description": "The Objective's description."
    },
    "started_at_override": {
      "type": "string",
      "format": "date-time",
      "description": "A manual override for the time/date the Objective was started."
    },
    "completed_at_override": {
      "type": "string",
      "format": "date-time",
      "description": "A manual override for the time/date the Objective was completed."
    }
  },
  "x-doc-skip": true
}
object CreateOrDeleteStoryReaction
{
  "type": "object",
  "required": [
    "emoji"
  ],
  "properties": {
    "emoji": {
      "type": "string",
      "description": "The emoji short-code to add / remove. E.g. `:thumbsup::skin-tone-4:`."
    }
  },
  "x-doc-skip": true
}
object CreateProject
{
  "type": "object",
  "required": [
    "name",
    "team_id"
  ],
  "properties": {
    "name": {
      "type": "string",
      "maxLength": 128,
      "minLength": 1,
      "description": "The name of the Project."
    },
    "color": {
      "type": "string",
      "format": "css-color",
      "pattern": "^#[a-fA-F0-9]{6}$",
      "minLength": 1,
      "description": "The color you wish to use for the Project in the system."
    },
    "team_id": {
      "type": "integer",
      "format": "int64",
      "description": "The ID of the team the project belongs to."
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "description": "Defaults to the time/date it is created but can be set to reflect another date."
    },
    "start_time": {
      "type": "string",
      "format": "date-time",
      "description": "The date at which the Project was started."
    },
    "updated_at": {
      "type": "string",
      "format": "date-time",
      "description": "Defaults to the time/date it is created but can be set to reflect another date."
    },
    "description": {
      "type": "string",
      "maxLength": 100000,
      "description": "The Project description."
    },
    "external_id": {
      "type": "string",
      "description": "This field can be set to another unique ID. In the case that the Project has been imported from another tool, the ID in the other tool can be indicated here."
    },
    "abbreviation": {
      "type": "string",
      "description": "The Project abbreviation used in Story summaries. Should be kept to 3 characters at most."
    },
    "follower_ids": {
      "type": "array",
      "items": {
        "type": "string",
        "format": "uuid"
      },
      "description": "An array of UUIDs for any members you want to add as Owners on this new Epic."
    },
    "iteration_length": {
      "type": "integer",
      "format": "int64",
      "description": "The number of weeks per iteration in this Project."
    }
  },
  "x-doc-skip": true
}
object CreateStories
{
  "type": "object",
  "required": [
    "stories"
  ],
  "properties": {
    "stories": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/CreateStoryParams"
      },
      "description": "An array of stories to be created."
    }
  },
  "x-doc-skip": true
}
object CreateStoryComment
{
  "type": "object",
  "required": [
    "text"
  ],
  "properties": {
    "text": {
      "type": "string",
      "maxLength": 100000,
      "description": "The comment text."
    },
    "author_id": {
      "type": "string",
      "format": "uuid",
      "description": "The Member ID of the Comment's author. Defaults to the user identified by the API token."
    },
    "parent_id": {
      "type": "integer",
      "format": "int64",
      "nullable": true,
      "description": "The ID of the Comment that this comment is threaded under."
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "description": "Defaults to the time/date the comment is created, but can be set to reflect another date."
    },
    "updated_at": {
      "type": "string",
      "format": "date-time",
      "description": "Defaults to the time/date the comment is last updated, but can be set to reflect another date."
    },
    "external_id": {
      "type": "string",
      "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."
    }
  },
  "x-doc-skip": true
}
object CreateStoryCommentParams
{
  "type": "object",
  "required": [
    "text"
  ],
  "properties": {
    "text": {
      "type": "string",
      "maxLength": 100000,
      "description": "The comment text."
    },
    "author_id": {
      "type": "string",
      "format": "uuid",
      "description": "The Member ID of the Comment's author. Defaults to the user identified by the API token."
    },
    "parent_id": {
      "type": "integer",
      "format": "int64",
      "nullable": true,
      "description": "The ID of the Comment that this comment is threaded under."
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "description": "Defaults to the time/date the comment is created, but can be set to reflect another date."
    },
    "updated_at": {
      "type": "string",
      "format": "date-time",
      "description": "Defaults to the time/date the comment is last updated, but can be set to reflect another date."
    },
    "external_id": {
      "type": "string",
      "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."
    }
  },
  "description": "Request parameters for creating a Comment on a Shortcut Story."
}
object CreateStoryContents
{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "description": "The name of the story."
    },
    "tasks": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/BaseTaskParams"
      },
      "description": "An array of tasks to be populated by the template."
    },
    "labels": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/CreateLabelParams"
      },
      "description": "An array of labels to be populated by the template."
    },
    "epic_id": {
      "type": "integer",
      "format": "int64",
      "nullable": true,
      "description": "The ID of the epic the to be populated."
    },
    "deadline": {
      "type": "string",
      "format": "date-time",
      "nullable": true,
      "description": "The due date of the story."
    },
    "estimate": {
      "type": "integer",
      "format": "int64",
      "nullable": true,
      "description": "The numeric point estimate to be populated."
    },
    "file_ids": {
      "type": "array",
      "items": {
        "type": "integer",
        "format": "int64"
      },
      "description": "An array of the attached file IDs to be populated.",
      "uniqueItems": true
    },
    "group_id": {
      "type": "string",
      "format": "uuid",
      "nullable": true,
      "description": "The ID of the group to be populated."
    },
    "owner_ids": {
      "type": "array",
      "items": {
        "type": "string",
        "format": "uuid"
      },
      "description": "An array of UUIDs of the owners of this story."
    },
    "project_id": {
      "type": "integer",
      "format": "int64",
      "description": "The ID of the project the story belongs to."
    },
    "story_type": {
      "type": "string",
      "description": "The type of story (feature, bug, chore)."
    },
    "description": {
      "type": "string",
      "description": "The description of the story."
    },
    "follower_ids": {
      "type": "array",
      "items": {
        "type": "string",
        "format": "uuid"
      },
      "description": "An array of UUIDs for any Members listed as Followers."
    },
    "iteration_id": {
      "type": "integer",
      "format": "int64",
      "nullable": true,
      "description": "The ID of the iteration the to be populated."
    },
    "custom_fields": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/CustomFieldValueParams"
      },
      "description": "An array of maps specifying a CustomField ID and CustomFieldEnumValue ID that represents an assertion of some value for a CustomField."
    },
    "external_links": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "An array of external links to be populated."
    },
    "linked_file_ids": {
      "type": "array",
      "items": {
        "type": "integer",
        "format": "int64"
      },
      "description": "An array of the linked file IDs to be populated.",
      "uniqueItems": true
    },
    "workflow_state_id": {
      "type": "integer",
      "format": "int64",
      "nullable": true,
      "description": "The ID of the workflow state to be populated."
    }
  },
  "description": "A map of story attributes this template populates."
}
object CreateStoryFromTemplateParams
{
  "type": "object",
  "required": [
    "story_template_id"
  ],
  "properties": {
    "name": {
      "type": "string",
      "maxLength": 512,
      "minLength": 1,
      "description": "The name of the story. Must be provided if the template does not provide a name."
    },
    "tasks": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/CreateTaskParams"
      },
      "description": "An array of tasks connected to the story."
    },
    "labels": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/CreateLabelParams"
      },
      "description": "An array of labels attached to the story."
    },
    "epic_id": {
      "type": "integer",
      "format": "int64",
      "nullable": true,
      "description": "The ID of the epic the story belongs to."
    },
    "move_to": {
      "enum": [
        "last",
        "first"
      ],
      "type": "string",
      "description": "One of \"first\" or \"last\". This can be used to move the given story to the first or last position in the workflow state."
    },
    "archived": {
      "type": "boolean",
      "description": "Controls the story's archived state."
    },
    "comments": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/CreateStoryCommentParams"
      },
      "description": "An array of comments to add to the story."
    },
    "deadline": {
      "type": "string",
      "format": "date-time",
      "nullable": true,
      "description": "The due date of the story."
    },
    "estimate": {
      "type": "integer",
      "format": "int64",
      "nullable": true,
      "description": "The numeric point estimate of the story. Can also be null, which means unestimated."
    },
    "file_ids": {
      "type": "array",
      "items": {
        "type": "integer",
        "format": "int64"
      },
      "description": "An array of IDs of files attached to the story.",
      "uniqueItems": true
    },
    "group_id": {
      "type": "string",
      "format": "uuid",
      "nullable": true,
      "description": "The id of the group to associate with this story."
    },
    "owner_ids": {
      "type": "array",
      "items": {
        "type": "string",
        "format": "uuid"
      },
      "description": "An array of UUIDs of the owners of this story.",
      "uniqueItems": true
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "description": "The time/date the Story was created."
    },
    "labels_add": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/CreateLabelParams"
      },
      "description": "An array of labels attached to the story in addition to the labels provided by the template. Cannot be used in conjunction with `labels`.",
      "uniqueItems": true
    },
    "project_id": {
      "type": "integer",
      "format": "int64",
      "nullable": true,
      "description": "The ID of the project the story belongs to."
    },
    "story_type": {
      "enum": [
        "feature",
        "chore",
        "bug"
      ],
      "type": "string",
      "description": "The type of story (feature, bug, chore)."
    },
    "updated_at": {
      "type": "string",
      "format": "date-time",
      "description": "The time/date the Story was updated."
    },
    "description": {
      "type": "string",
      "maxLength": 100000,
      "description": "The description of the story."
    },
    "external_id": {
      "type": "string",
      "description": "This field can be set to another unique ID. In the case that the Story has been imported from another tool, the ID in the other tool can be indicated here."
    },
    "story_links": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/CreateStoryLinkParams"
      },
      "description": "An array of story links attached to the story."
    },
    "file_ids_add": {
      "type": "array",
      "items": {
        "type": "integer",
        "format": "int64"
      },
      "description": "An array of IDs of files attached to the story in addition to files from the template. Cannot be used in conjunction with `file_ids`.",
      "uniqueItems": true
    },
    "follower_ids": {
      "type": "array",
      "items": {
        "type": "string",
        "format": "uuid"
      },
      "description": "An array of UUIDs of the followers of this story.",
      "uniqueItems": true
    },
    "iteration_id": {
      "type": "integer",
      "format": "int64",
      "nullable": true,
      "description": "The ID of the iteration the story belongs to."
    },
    "custom_fields": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/CustomFieldValueParams"
      },
      "description": "A map specifying a CustomField ID and CustomFieldEnumValue ID that represents an assertion of some value for a CustomField."
    },
    "labels_remove": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/RemoveLabelParams"
      },
      "description": "An array of labels to remove from the labels provided by the template. Cannot be used in conjunction with `labels`.",
      "uniqueItems": true
    },
    "owner_ids_add": {
      "type": "array",
      "items": {
        "type": "string",
        "format": "uuid"
      },
      "description": "The UUIDs of the new owners to be added in addition to owners from the template. Cannot be used in conjunction with `owners`.",
      "uniqueItems": true
    },
    "external_links": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "An array of External Links associated with this story."
    },
    "file_ids_remove": {
      "type": "array",
      "items": {
        "type": "integer",
        "format": "int64"
      },
      "description": "An array of IDs of files removed from files from the template. Cannot be used in conjunction with `file_ids`.",
      "uniqueItems": true
    },
    "linked_file_ids": {
      "type": "array",
      "items": {
        "type": "integer",
        "format": "int64"
      },
      "description": "An array of IDs of linked files attached to the story.",
      "uniqueItems": true
    },
    "requested_by_id": {
      "type": "string",
      "format": "uuid",
      "description": "The ID of the member that requested the story."
    },
    "follower_ids_add": {
      "type": "array",
      "items": {
        "type": "string",
        "format": "uuid"
      },
      "description": "The UUIDs of the new followers to be added in addition to followers from the template. Cannot be used in conjunction with `follower_ids.`",
      "uniqueItems": true
    },
    "owner_ids_remove": {
      "type": "array",
      "items": {
        "type": "string",
        "format": "uuid"
      },
      "description": "The UUIDs of the new owners to be removed from owners from the template. Cannot be used in conjunction with `owners`.",
      "uniqueItems": true
    },
    "custom_fields_add": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/CustomFieldValueParams"
      },
      "description": "A map specifying a CustomField ID and CustomFieldEnumValue ID that represents an assertion of some value for a CustomField. These will be added to any fields provided by the template. Cannot be used in conjunction with `custom_fields`.",
      "uniqueItems": true
    },
    "story_template_id": {
      "type": "string",
      "format": "uuid",
      "description": "The id of the story template used to create this story."
    },
    "workflow_state_id": {
      "type": "integer",
      "format": "int64",
      "description": "The ID of the workflow state the story will be in."
    },
    "external_links_add": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "An array of External Links associated with this story. These will be added to any links provided by the template. Cannot be used in conjunction with `external_links`.",
      "uniqueItems": true
    },
    "follower_ids_remove": {
      "type": "array",
      "items": {
        "type": "string",
        "format": "uuid"
      },
      "description": "The UUIDs of the new followers to be removed from followers from the template. Cannot be used in conjunction with `follower_ids`.",
      "uniqueItems": true
    },
    "linked_file_ids_add": {
      "type": "array",
      "items": {
        "type": "integer",
        "format": "int64"
      },
      "description": "An array of IDs of linked files attached to the story in addition to files from the template. Cannot be used in conjunction with `linked_files`.",
      "uniqueItems": true
    },
    "started_at_override": {
      "type": "string",
      "format": "date-time",
      "description": "A manual override for the time/date the Story was started."
    },
    "custom_fields_remove": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/RemoveCustomFieldParams"
      },
      "description": "A map specifying a CustomField ID. These will be removed from any fields provided by the template. Cannot be used in conjunction with `custom_fields`.",
      "uniqueItems": true
    },
    "completed_at_override": {
      "type": "string",
      "format": "date-time",
      "description": "A manual override for the time/date the Story was completed."
    },
    "external_links_remove": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "An array of External Links associated with this story. These will be removed from any links provided by the template. Cannot be used in conjunction with `external_links`.",
      "uniqueItems": true
    },
    "linked_file_ids_remove": {
      "type": "array",
      "items": {
        "type": "integer",
        "format": "int64"
      },
      "description": "An array of IDs of linked files removed from files from the template. Cannot be used in conjunction with `linked_files.`",
      "uniqueItems": true
    }
  },
  "description": "Request parameters for creating a story from a story template. These parameters are merged with the values derived from the template."
}
object CreateStoryLink
{
  "type": "object",
  "required": [
    "verb",
    "subject_id",
    "object_id"
  ],
  "properties": {
    "verb": {
      "enum": [
        "blocks",
        "duplicates",
        "relates to"
      ],
      "type": "string",
      "description": "The type of link."
    },
    "object_id": {
      "type": "integer",
      "format": "int64",
      "description": "The ID of the object Story."
    },
    "subject_id": {
      "type": "integer",
      "format": "int64",
      "description": "The ID of the subject Story."
    }
  },
  "x-doc-skip": true
}
object CreateStoryLinkParams
{
  "type": "object",
  "required": [
    "verb"
  ],
  "properties": {
    "verb": {
      "enum": [
        "blocks",
        "duplicates",
        "relates to"
      ],
      "type": "string",
      "description": "How the subject Story acts on the object Story. This can be \"blocks\", \"duplicates\", or \"relates to\"."
    },
    "object_id": {
      "type": "integer",
      "format": "int64",
      "description": "The unique ID of the Story defined as object."
    },
    "subject_id": {
      "type": "integer",
      "format": "int64",
      "description": "The unique ID of the Story defined as subject."
    }
  },
  "description": "Request parameters for creating a Story Link within a Story."
}
object CreateStoryParams
{
  "type": "object",
  "required": [
    "name"
  ],
  "properties": {
    "name": {
      "type": "string",
      "maxLength": 512,
      "minLength": 1,
      "description": "The name of the story."
    },
    "tasks": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/CreateTaskParams"
      },
      "description": "An array of tasks connected to the story."
    },
    "labels": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/CreateLabelParams"
      },
      "description": "An array of labels attached to the story."
    },
    "epic_id": {
      "type": "integer",
      "format": "int64",
      "nullable": true,
      "description": "The ID of the epic the story belongs to."
    },
    "move_to": {
      "enum": [
        "last",
        "first"
      ],
      "type": "string",
      "description": "One of \"first\" or \"last\". This can be used to move the given story to the first or last position in the workflow state."
    },
    "archived": {
      "type": "boolean",
      "description": "Controls the story's archived state."
    },
    "comments": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/CreateStoryCommentParams"
      },
      "description": "An array of comments to add to the story."
    },
    "deadline": {
      "type": "string",
      "format": "date-time",
      "nullable": true,
      "description": "The due date of the story."
    },
    "estimate": {
      "type": "integer",
      "format": "int64",
      "nullable": true,
      "description": "The numeric point estimate of the story. Can also be null, which means unestimated."
    },
    "file_ids": {
      "type": "array",
      "items": {
        "type": "integer",
        "format": "int64"
      },
      "description": "An array of IDs of files attached to the story.",
      "uniqueItems": true
    },
    "group_id": {
      "type": "string",
      "format": "uuid",
      "nullable": true,
      "description": "The id of the group to associate with this story."
    },
    "owner_ids": {
      "type": "array",
      "items": {
        "type": "string",
        "format": "uuid"
      },
      "description": "An array of UUIDs of the owners of this story.",
      "uniqueItems": true
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "description": "The time/date the Story was created."
    },
    "project_id": {
      "type": "integer",
      "format": "int64",
      "nullable": true,
      "description": "The ID of the project the story belongs to."
    },
    "story_type": {
      "enum": [
        "feature",
        "chore",
        "bug"
      ],
      "type": "string",
      "description": "The type of story (feature, bug, chore)."
    },
    "updated_at": {
      "type": "string",
      "format": "date-time",
      "description": "The time/date the Story was updated."
    },
    "description": {
      "type": "string",
      "maxLength": 100000,
      "description": "The description of the story."
    },
    "external_id": {
      "type": "string",
      "description": "This field can be set to another unique ID. In the case that the Story has been imported from another tool, the ID in the other tool can be indicated here."
    },
    "story_links": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/CreateStoryLinkParams"
      },
      "description": "An array of story links attached to the story."
    },
    "follower_ids": {
      "type": "array",
      "items": {
        "type": "string",
        "format": "uuid"
      },
      "description": "An array of UUIDs of the followers of this story.",
      "uniqueItems": true
    },
    "iteration_id": {
      "type": "integer",
      "format": "int64",
      "nullable": true,
      "description": "The ID of the iteration the story belongs to."
    },
    "custom_fields": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/CustomFieldValueParams"
      },
      "description": "A map specifying a CustomField ID and CustomFieldEnumValue ID that represents an assertion of some value for a CustomField."
    },
    "external_links": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "An array of External Links associated with this story."
    },
    "linked_file_ids": {
      "type": "array",
      "items": {
        "type": "integer",
        "format": "int64"
      },
      "description": "An array of IDs of linked files attached to the story.",
      "uniqueItems": true
    },
    "requested_by_id": {
      "type": "string",
      "format": "uuid",
      "description": "The ID of the member that requested the story."
    },
    "story_template_id": {
      "type": "string",
      "format": "uuid",
      "nullable": true,
      "description": "The id of the story template used to create this story, if applicable. This is just an association; no content from the story template is inherited by the story simply by setting this field."
    },
    "workflow_state_id": {
      "type": "integer",
      "format": "int64",
      "description": "The ID of the workflow state the story will be in."
    },
    "started_at_override": {
      "type": "string",
      "format": "date-time",
      "description": "A manual override for the time/date the Story was started."
    },
    "completed_at_override": {
      "type": "string",
      "format": "date-time",
      "description": "A manual override for the time/date the Story was completed."
    }
  },
  "description": "Request parameters for creating a story."
}
object CreateTask
{
  "type": "object",
  "required": [
    "description"
  ],
  "properties": {
    "complete": {
      "type": "boolean",
      "description": "True/false boolean indicating whether the Task is completed. Defaults to false."
    },
    "owner_ids": {
      "type": "array",
      "items": {
        "type": "string",
        "format": "uuid"
      },
      "description": "An array of UUIDs for any members you want to add as Owners on this new Task."
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "description": "Defaults to the time/date the Task is created but can be set to reflect another creation time/date."
    },
    "updated_at": {
      "type": "string",
      "format": "date-time",
      "description": "Defaults to the time/date the Task is created in Shortcut but can be set to reflect another time/date."
    },
    "description": {
      "type": "string",
      "maxLength": 2048,
      "minLength": 1,
      "description": "The Task description."
    },
    "external_id": {
      "type": "string",
      "description": "This field can be set to another unique ID. In the case that the Task has been imported from another tool, the ID in the other tool can be indicated here."
    }
  },
  "x-doc-skip": true
}
object CreateTaskParams
{
  "type": "object",
  "required": [
    "description"
  ],
  "properties": {
    "complete": {
      "type": "boolean",
      "description": "True/false boolean indicating whether the Task is completed. Defaults to false."
    },
    "owner_ids": {
      "type": "array",
      "items": {
        "type": "string",
        "format": "uuid"
      },
      "description": "An array of UUIDs for any members you want to add as Owners on this new Task."
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "description": "Defaults to the time/date the Task is created but can be set to reflect another creation time/date."
    },
    "updated_at": {
      "type": "string",
      "format": "date-time",
      "description": "Defaults to the time/date the Task is created in Shortcut but can be set to reflect another time/date."
    },
    "description": {
      "type": "string",
      "maxLength": 2048,
      "minLength": 1,
      "description": "The Task description."
    },
    "external_id": {
      "type": "string",
      "description": "This field can be set to another unique ID. In the case that the Task has been imported from another tool, the ID in the other tool can be indicated here."
    }
  },
  "description": "Request parameters for creating a Task on a Story."
}
object CustomField
{
  "type": "object",
  "required": [
    "entity_type",
    "name",
    "updated_at",
    "id",
    "field_type",
    "position",
    "enabled",
    "created_at"
  ],
  "properties": {
    "id": {
      "type": "string",
      "format": "uuid",
      "description": "The unique public ID for the CustomField."
    },
    "name": {
      "type": "string",
      "maxLength": 63,
      "minLength": 1,
      "description": "The name of the Custom Field."
    },
    "values": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/CustomFieldEnumValue"
      },
      "description": "A collection of legal values for a CustomField."
    },
    "enabled": {
      "type": "boolean",
      "description": "When true, the CustomField can be applied to entities in the Workspace."
    },
    "position": {
      "type": "integer",
      "format": "int64",
      "description": "An integer indicating the position of this Custom Field with respect to the other CustomField"
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "description": "The instant when this CustomField was created."
    },
    "field_type": {
      "enum": [
        "enum"
      ],
      "type": "string",
      "description": "The type of Custom Field, eg. 'enum'."
    },
    "updated_at": {
      "type": "string",
      "format": "date-time",
      "description": "The instant when this CustomField was last updated."
    },
    "description": {
      "type": "string",
      "maxLength": 512,
      "minLength": 1,
      "description": "A string description of the CustomField"
    },
    "entity_type": {
      "enum": [
        "custom-field"
      ],
      "type": "string",
      "description": "A string description of this resource."
    },
    "story_types": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "x-doc-skip": true,
      "description": "The types of stories this CustomField is scoped to."
    },
    "canonical_name": {
      "type": "string",
      "description": "The canonical name for a Shortcut-defined field."
    },
    "fixed_position": {
      "type": "boolean",
      "x-doc-skip": true,
      "description": "When true, the CustomFieldEnumValues may not be reordered."
    },
    "icon_set_identifier": {
      "type": "string",
      "maxLength": 63,
      "minLength": 1,
      "description": "A string that represents the icon that corresponds to this custom field."
    }
  }
}
object CustomFieldEnumValue
{
  "type": "object",
  "required": [
    "id",
    "value",
    "position",
    "color_key",
    "entity_type",
    "enabled"
  ],
  "properties": {
    "id": {
      "type": "string",
      "format": "uuid",
      "description": "The unique public ID for the Custom Field."
    },
    "value": {
      "type": "string",
      "maxLength": 63,
      "minLength": 1,
      "description": "A string value within the domain of this Custom Field."
    },
    "enabled": {
      "type": "boolean",
      "x-doc-skip": true,
      "description": "When true, the CustomFieldEnumValue can be selected for the CustomField."
    },
    "position": {
      "type": "integer",
      "format": "int64",
      "description": "An integer indicating the position of this Value with respect to the other CustomFieldEnumValues in the enumeration."
    },
    "color_key": {
      "type": "string",
      "nullable": true,
      "description": "A color key associated with this CustomFieldEnumValue."
    },
    "entity_type": {
      "enum": [
        "custom-field-enum-value"
      ],
      "type": "string",
      "description": "A string description of this resource."
    }
  }
}
array CustomFieldListResponse
{
  "type": "array",
  "items": {
    "$ref": "#/components/schemas/CustomField"
  }
}
object CustomFieldValueParams
{
  "type": "object",
  "required": [
    "field_id",
    "value_id"
  ],
  "properties": {
    "value": {
      "type": "string",
      "description": "A literal value for the CustomField. Currently ignored."
    },
    "field_id": {
      "type": "string",
      "format": "uuid",
      "description": "The unique public ID for the CustomField."
    },
    "value_id": {
      "type": "string",
      "format": "uuid",
      "description": "The unique public ID for the CustomFieldEnumValue."
    }
  }
}
object DataConflictError
{
  "type": "object",
  "required": [
    "error",
    "message"
  ],
  "properties": {
    "error": {
      "enum": [
        "data-conflict-error"
      ],
      "type": "string"
    },
    "message": {
      "type": "string",
      "description": "An explanatory message: \"The update failed due to a data conflict. Please refresh and try again.\""
    }
  },
  "x-doc-skip": true,
  "description": "Error returned when Datomic tx fails due to Datomc :db.error/cas-failed error"
}
object DeleteStories
{
  "type": "object",
  "required": [
    "story_ids"
  ],
  "properties": {
    "story_ids": {
      "type": "array",
      "items": {
        "type": "integer",
        "format": "int64"
      },
      "description": "An array of IDs of Stories to delete.",
      "uniqueItems": true
    }
  },
  "x-doc-skip": true
}
object EntityTemplate
{
  "type": "object",
  "required": [
    "entity_type",
    "id",
    "created_at",
    "updated_at",
    "name",
    "author_id",
    "last_used_at",
    "story_contents"
  ],
  "properties": {
    "id": {
      "type": "string",
      "format": "uuid",
      "description": "The unique identifier for the entity template."
    },
    "name": {
      "type": "string",
      "description": "The template's name."
    },
    "author_id": {
      "type": "string",
      "format": "uuid",
      "description": "The unique ID of the member who created the template."
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "description": "The time/date when the entity template was created."
    },
    "updated_at": {
      "type": "string",
      "format": "date-time",
      "description": "The time/date when the entity template was last updated."
    },
    "entity_type": {
      "type": "string",
      "description": "A string description of this resource."
    },
    "last_used_at": {
      "type": "string",
      "format": "date-time",
      "description": "The last time that someone created an entity using this template."
    },
    "story_contents": {
      "$ref": "#/components/schemas/StoryContents"
    }
  },
  "description": "An entity template can be used to prefill various fields when creating new stories."
}
object Epic
{
  "type": "object",
  "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"
  ],
  "properties": {
    "id": {
      "type": "integer",
      "format": "int64",
      "description": "The unique ID of the Epic."
    },
    "name": {
      "type": "string",
      "description": "The name of the Epic."
    },
    "state": {
      "type": "string",
      "description": "`Deprecated` The workflow state that the Epic is in."
    },
    "stats": {
      "$ref": "#/components/schemas/EpicStats"
    },
    "labels": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/LabelSlim"
      },
      "description": "An array of Labels attached to the Epic."
    },
    "app_url": {
      "type": "string",
      "description": "The Shortcut application url for the Epic."
    },
    "started": {
      "type": "boolean",
      "description": "A true/false boolean indicating if the Epic has been started."
    },
    "archived": {
      "type": "boolean",
      "description": "True/false boolean that indicates whether the Epic is archived or not."
    },
    "comments": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/ThreadedComment"
      },
      "description": "A nested array of threaded comments."
    },
    "deadline": {
      "type": "string",
      "format": "date-time",
      "nullable": true,
      "description": "The Epic's deadline."
    },
    "group_id": {
      "type": "string",
      "format": "uuid",
      "nullable": true,
      "description": "`Deprecated` The ID of the group to associate with the epic. Use `group_ids`."
    },
    "position": {
      "type": "integer",
      "format": "int64",
      "description": "The Epic's relative position in the Epic workflow state."
    },
    "completed": {
      "type": "boolean",
      "description": "A true/false boolean indicating if the Epic has been completed."
    },
    "global_id": {
      "type": "string",
      "x-doc-skip": true
    },
    "group_ids": {
      "type": "array",
      "items": {
        "type": "string",
        "format": "uuid"
      },
      "description": "An array of UUIDS for Groups to which this Epic is related."
    },
    "label_ids": {
      "type": "array",
      "items": {
        "type": "integer",
        "format": "int64"
      },
      "description": "An array of Label ids attached to the Epic."
    },
    "owner_ids": {
      "type": "array",
      "items": {
        "type": "string",
        "format": "uuid"
      },
      "description": "An array of UUIDs for any members you want to add as Owners on this new Epic."
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "nullable": true,
      "description": "The time/date the Epic was created."
    },
    "started_at": {
      "type": "string",
      "format": "date-time",
      "nullable": true,
      "description": "The time/date the Epic was started."
    },
    "updated_at": {
      "type": "string",
      "format": "date-time",
      "nullable": true,
      "description": "The time/date the Epic was updated."
    },
    "description": {
      "type": "string",
      "description": "The Epic's description."
    },
    "entity_type": {
      "type": "string",
      "description": "A string description of this resource."
    },
    "external_id": {
      "type": "string",
      "nullable": true,
      "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."
    },
    "mention_ids": {
      "type": "array",
      "items": {
        "type": "string",
        "format": "uuid"
      },
      "description": "Deprecated: use member_mention_ids."
    },
    "project_ids": {
      "type": "array",
      "items": {
        "type": "integer",
        "format": "int64"
      },
      "description": "The IDs of Projects related to this Epic."
    },
    "completed_at": {
      "type": "string",
      "format": "date-time",
      "nullable": true,
      "description": "The time/date the Epic was completed."
    },
    "follower_ids": {
      "type": "array",
      "items": {
        "type": "string",
        "format": "uuid"
      },
      "description": "An array of UUIDs for any Members you want to add as Followers on this Epic."
    },
    "milestone_id": {
      "type": "integer",
      "format": "int64",
      "nullable": true,
      "description": "`Deprecated` The ID of the Objective this Epic is related to. Use `objective_ids`."
    },
    "epic_state_id": {
      "type": "integer",
      "format": "int64",
      "description": "The ID of the Epic State."
    },
    "objective_ids": {
      "type": "array",
      "items": {
        "type": "integer",
        "format": "int64"
      },
      "description": "An array of IDs for Objectives to which this epic is related."
    },
    "productboard_id": {
      "type": "string",
      "format": "uuid",
      "nullable": true,
      "description": "The ID of the associated productboard feature."
    },
    "requested_by_id": {
      "type": "string",
      "format": "uuid",
      "description": "The ID of the Member that requested the epic."
    },
    "productboard_url": {
      "type": "string",
      "nullable": true,
      "description": "The URL of the associated productboard feature."
    },
    "associated_groups": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/EpicAssociatedGroup"
      },
      "description": "An array containing Group IDs and Group-owned story counts for the Epic's associated groups."
    },
    "group_mention_ids": {
      "type": "array",
      "items": {
        "type": "string",
        "format": "uuid"
      },
      "description": "An array of Group IDs that have been mentioned in the Epic description."
    },
    "productboard_name": {
      "type": "string",
      "nullable": true,
      "description": "The name of the associated productboard feature."
    },
    "member_mention_ids": {
      "type": "array",
      "items": {
        "type": "string",
        "format": "uuid"
      },
      "description": "An array of Member IDs that have been mentioned in the Epic description."
    },
    "planned_start_date": {
      "type": "string",
      "format": "date-time",
      "nullable": true,
      "description": "The Epic's planned start date."
    },
    "started_at_override": {
      "type": "string",
      "format": "date-time",
      "nullable": true,
      "description": "A manual override for the time/date the Epic was started."
    },
    "completed_at_override": {
      "type": "string",
      "format": "date-time",
      "nullable": true,
      "description": "A manual override for the time/date the Epic was completed."
    },
    "productboard_plugin_id": {
      "type": "string",
      "format": "uuid",
      "nullable": true,
      "description": "The ID of the associated productboard integration."
    },
    "stories_without_projects": {
      "type": "integer",
      "format": "int64",
      "description": "The number of stories in this epic which are not associated with a project."
    }
  },
  "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."
}
object EpicAssociatedGroup
{
  "type": "object",
  "required": [
    "group_id"
  ],
  "properties": {
    "group_id": {
      "type": "string",
      "format": "uuid",
      "description": "The Group ID of the associated group."
    },
    "associated_stories_count": {
      "type": "integer",
      "format": "int64",
      "description": "The number of stories this Group owns in the Epic."
    }
  },
  "x-doc-skip": true
}
array EpicGetAllEpicCommentsResponse
{
  "type": "array",
  "items": {
    "$ref": "#/components/schemas/ThreadedComment"
  }
}
array EpicListAllAttributesResponse
{
  "type": "array",
  "items": {
    "$ref": "#/components/schemas/EpicSlim"
  }
}
array EpicListEpicsResponse
{
  "type": "array",
  "items": {
    "$ref": "#/components/schemas/EpicSlim"
  }
}
array EpicListMilestoneEpicsResponse
{
  "type": "array",
  "items": {
    "$ref": "#/components/schemas/EpicSlim"
  }
}
array EpicListObjectiveEpicsResponse
{
  "type": "array",
  "items": {
    "$ref": "#/components/schemas/EpicSlim"
  }
}
array EpicListStoriesResponse
{
  "type": "array",
  "items": {
    "$ref": "#/components/schemas/StorySlim"
  }
}
object EpicSearchResult
{
  "type": "object",
  "required": [
    "app_url",
    "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",
    "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"
  ],
  "properties": {
    "id": {
      "type": "integer",
      "format": "int64",
      "description": "The unique ID of the Epic."
    },
    "name": {
      "type": "string",
      "description": "The name of the Epic."
    },
    "state": {
      "type": "string",
      "description": "`Deprecated` The workflow state that the Epic is in."
    },
    "stats": {
      "$ref": "#/components/schemas/EpicStats"
    },
    "labels": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/LabelSlim"
      },
      "description": "An array of Labels attached to the Epic."
    },
    "app_url": {
      "type": "string",
      "description": "The Shortcut application url for the Epic."
    },
    "started": {
      "type": "boolean",
      "description": "A true/false boolean indicating if the Epic has been started."
    },
    "archived": {
      "type": "boolean",
      "description": "True/false boolean that indicates whether the Epic is archived or not."
    },
    "comments": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/ThreadedComment"
      },
      "description": "A nested array of threaded comments."
    },
    "deadline": {
      "type": "string",
      "format": "date-time",
      "nullable": true,
      "description": "The Epic's deadline."
    },
    "group_id": {
      "type": "string",
      "format": "uuid",
      "nullable": true,
      "description": "`Deprecated` The ID of the group to associate with the epic. Use `group_ids`."
    },
    "position": {
      "type": "integer",
      "format": "int64",
      "description": "The Epic's relative position in the Epic workflow state."
    },
    "completed": {
      "type": "boolean",
      "description": "A true/false boolean indicating if the Epic has been completed."
    },
    "global_id": {
      "type": "string",
      "x-doc-skip": true
    },
    "group_ids": {
      "type": "array",
      "items": {
        "type": "string",
        "format": "uuid"
      },
      "description": "An array of UUIDS for Groups to which this Epic is related."
    },
    "label_ids": {
      "type": "array",
      "items": {
        "type": "integer",
        "format": "int64"
      },
      "description": "An array of Label ids attached to the Epic."
    },
    "owner_ids": {
      "type": "array",
      "items": {
        "type": "string",
        "format": "uuid"
      },
      "description": "An array of UUIDs for any members you want to add as Owners on this new Epic."
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "nullable": true,
      "description": "The time/date the Epic was created."
    },
    "started_at": {
      "type": "string",
      "format": "date-time",
      "nullable": true,
      "description": "The time/date the Epic was started."
    },
    "updated_at": {
      "type": "string",
      "format": "date-time",
      "nullable": true,
      "description": "The time/date the Epic was updated."
    },
    "description": {
      "type": "string",
      "description": "The Epic's description."
    },
    "entity_type": {
      "type": "string",
      "description": "A string description of this resource."
    },
    "external_id": {
      "type": "string",
      "nullable": true,
      "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."
    },
    "mention_ids": {
      "type": "array",
      "items": {
        "type": "string",
        "format": "uuid"
      },
      "description": "Deprecated: use member_mention_ids."
    },
    "project_ids": {
      "type": "array",
      "items": {
        "type": "integer",
        "format": "int64"
      },
      "description": "The IDs of Projects related to this Epic."
    },
    "completed_at": {
      "type": "string",
      "format": "date-time",
      "nullable": true,
      "description": "The time/date the Epic was completed."
    },
    "follower_ids": {
      "type": "array",
      "items": {
        "type": "string",
        "format": "uuid"
      },
      "description": "An array of UUIDs for any Members you want to add as Followers on this Epic."
    },
    "milestone_id": {
      "type": "integer",
      "format": "int64",
      "nullable": true,
      "description": "`Deprecated` The ID of the Objective this Epic is related to. Use `objective_ids`."
    },
    "epic_state_id": {
      "type": "integer",
      "format": "int64",
      "description": "The ID of the Epic State."
    },
    "objective_ids": {
      "type": "array",
      "items": {
        "type": "integer",
        "format": "int64"
      },
      "description": "An array of IDs for Objectives to which this epic is related."
    },
    "productboard_id": {
      "type": "string",
      "format": "uuid",
      "nullable": true,
      "description": "The ID of the associated productboard feature."
    },
    "requested_by_id": {
      "type": "string",
      "format": "uuid",
      "description": "The ID of the Member that requested the epic."
    },
    "productboard_url": {
      "type": "string",
      "nullable": true,
      "description": "The URL of the associated productboard feature."
    },
    "associated_groups": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/EpicAssociatedGroup"
      },
      "description": "An array containing Group IDs and Group-owned story counts for the Epic's associated groups."
    },
    "group_mention_ids": {
      "type": "array",
      "items": {
        "type": "string",
        "format": "uuid"
      },
      "description": "An array of Group IDs that have been mentioned in the Epic description."
    },
    "productboard_name": {
      "type": "string",
      "nullable": true,
      "description": "The name of the associated productboard feature."
    },
    "member_mention_ids": {
      "type": "array",
      "items": {
        "type": "string",
        "format": "uuid"
      },
      "description": "An array of Member IDs that have been mentioned in the Epic description."
    },
    "planned_start_date": {
      "type": "string",
      "format": "date-time",
      "nullable": true,
      "description": "The Epic's planned start date."
    },
    "started_at_override": {
      "type": "string",
      "format": "date-time",
      "nullable": true,
      "description": "A manual override for the time/date the Epic was started."
    },
    "completed_at_override": {
      "type": "string",
      "format": "date-time",
      "nullable": true,
      "description": "A manual override for the time/date the Epic was completed."
    },
    "productboard_plugin_id": {
      "type": "string",
      "format": "uuid",
      "nullable": true,
      "description": "The ID of the associated productboard integration."
    },
    "stories_without_projects": {
      "type": "integer",
      "format": "int64",
      "description": "The number of stories in this epic which are not associated with a project."
    }
  },
  "description": "An Epic in search results. This is typed differently from Epic because the details=slim search argument will omit some fields."
}
object EpicSearchResults
{
  "type": "object",
  "required": [
    "total",
    "data",
    "next"
  ],
  "properties": {
    "data": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/EpicSearchResult"
      },
      "description": "A list of search results."
    },
    "next": {
      "type": "string",
      "nullable": true,
      "description": "The URL path and query string for the next page of search results."
    },
    "total": {
      "type": "integer",
      "format": "int64",
      "description": "The total number of matches for the search query. The first 1000 matches can be paged through via the API."
    }
  },
  "description": "The results of the Epic search query."
}
object EpicSlim
{
  "type": "object",
  "required": [
    "app_url",
    "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",
    "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"
  ],
  "properties": {
    "id": {
      "type": "integer",
      "format": "int64",
      "description": "The unique ID of the Epic."
    },
    "name": {
      "type": "string",
      "description": "The name of the Epic."
    },
    "state": {
      "type": "string",
      "description": "`Deprecated` The workflow state that the Epic is in."
    },
    "stats": {
      "$ref": "#/components/schemas/EpicStats"
    },
    "labels": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/LabelSlim"
      },
      "description": "An array of Labels attached to the Epic."
    },
    "app_url": {
      "type": "string",
      "description": "The Shortcut application url for the Epic."
    },
    "started": {
      "type": "boolean",
      "description": "A true/false boolean indicating if the Epic has been started."
    },
    "archived": {
      "type": "boolean",
      "description": "True/false boolean that indicates whether the Epic is archived or not."
    },
    "deadline": {
      "type": "string",
      "format": "date-time",
      "nullable": true,
      "description": "The Epic's deadline."
    },
    "group_id": {
      "type": "string",
      "format": "uuid",
      "nullable": true,
      "description": "`Deprecated` The ID of the group to associate with the epic. Use `group_ids`."
    },
    "position": {
      "type": "integer",
      "format": "int64",
      "description": "The Epic's relative position in the Epic workflow state."
    },
    "completed": {
      "type": "boolean",
      "description": "A true/false boolean indicating if the Epic has been completed."
    },
    "global_id": {
      "type": "string",
      "x-doc-skip": true
    },
    "group_ids": {
      "type": "array",
      "items": {
        "type": "string",
        "format": "uuid"
      },
      "description": "An array of UUIDS for Groups to which this Epic is related."
    },
    "label_ids": {
      "type": "array",
      "items": {
        "type": "integer",
        "format": "int64"
      },
      "description": "An array of Label ids attached to the Epic."
    },
    "owner_ids": {
      "type": "array",
      "items": {
        "type": "string",
        "format": "uuid"
      },
      "description": "An array of UUIDs for any members you want to add as Owners on this new Epic."
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "nullable": true,
      "description": "The time/date the Epic was created."
    },
    "started_at": {
      "type": "string",
      "format": "date-time",
      "nullable": true,
      "description": "The time/date the Epic was started."
    },
    "updated_at": {
      "type": "string",
      "format": "date-time",
      "nullable": true,
      "description": "The time/date the Epic was updated."
    },
    "description": {
      "type": "string",
      "description": "The Epic's description."
    },
    "entity_type": {
      "type": "string",
      "description": "A string description of this resource."
    },
    "external_id": {
      "type": "string",
      "nullable": true,
      "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."
    },
    "mention_ids": {
      "type": "array",
      "items": {
        "type": "string",
        "format": "uuid"
      },
      "description": "Deprecated: use member_mention_ids."
    },
    "project_ids": {
      "type": "array",
      "items": {
        "type": "integer",
        "format": "int64"
      },
      "description": "The IDs of Projects related to this Epic."
    },
    "completed_at": {
      "type": "string",
      "format": "date-time",
      "nullable": true,
      "description": "The time/date the Epic was completed."
    },
    "follower_ids": {
      "type": "array",
      "items": {
        "type": "string",
        "format": "uuid"
      },
      "description": "An array of UUIDs for any Members you want to add as Followers on this Epic."
    },
    "milestone_id": {
      "type": "integer",
      "format": "int64",
      "nullable": true,
      "description": "`Deprecated` The ID of the Objective this Epic is related to. Use `objective_ids`."
    },
    "epic_state_id": {
      "type": "integer",
      "format": "int64",
      "description": "The ID of the Epic State."
    },
    "objective_ids": {
      "type": "array",
      "items": {
        "type": "integer",
        "format": "int64"
      },
      "description": "An array of IDs for Objectives to which this epic is related."
    },
    "productboard_id": {
      "type": "string",
      "format": "uuid",
      "nullable": true,
      "description": "The ID of the associated productboard feature."
    },
    "requested_by_id": {
      "type": "string",
      "format": "uuid",
      "description": "The ID of the Member that requested the epic."
    },
    "productboard_url": {
      "type": "string",
      "nullable": true,
      "description": "The URL of the associated productboard feature."
    },
    "associated_groups": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/EpicAssociatedGroup"
      },
      "description": "An array containing Group IDs and Group-owned story counts for the Epic's associated groups."
    },
    "group_mention_ids": {
      "type": "array",
      "items": {
        "type": "string",
        "format": "uuid"
      },
      "description": "An array of Group IDs that have been mentioned in the Epic description."
    },
    "productboard_name": {
      "type": "string",
      "nullable": true,
      "description": "The name of the associated productboard feature."
    },
    "member_mention_ids": {
      "type": "array",
      "items": {
        "type": "string",
        "format": "uuid"
      },
      "description": "An array of Member IDs that have been mentioned in the Epic description."
    },
    "planned_start_date": {
      "type": "string",
      "format": "date-time",
      "nullable": true,
      "description": "The Epic's planned start date."
    },
    "started_at_override": {
      "type": "string",
      "format": "date-time",
      "nullable": true,
      "description": "A manual override for the time/date the Epic was started."
    },
    "completed_at_override": {
      "type": "string",
      "format": "date-time",
      "nullable": true,
      "description": "A manual override for the time/date the Epic was completed."
    },
    "productboard_plugin_id": {
      "type": "string",
      "format": "uuid",
      "nullable": true,
      "description": "The ID of the associated productboard integration."
    },
    "stories_without_projects": {
      "type": "integer",
      "format": "int64",
      "description": "The number of stories in this epic which are not associated with a project."
    }
  },
  "description": "EpicSlim represents the same resource as an Epic but is more light-weight, including all Epic fields except the comments array. The description string can be optionally included. Use the [Get Epic](https://developer.shortcut.com) endpoint to fetch the unabridged payload for an Epic."
}

Versions

Version Endpoints Schemas Ingested Status
3.0 123 192 2026-05-11 current
3.0 123 192 2026-04-16