Skip to main content
Every linear.api.* operation is listed below with parameter shapes and return types from the plugin Zod schemas.
New to Corsair? See API access, authentication, and error handling.

Comments

create

comments.create Post a comment on an issue Risk: write
await corsair.linear.api.comments.create({});
Input
NameTypeRequiredDescription
issueIdstringYes
bodystringYes
parentIdstringNo
Output
NameTypeRequiredDescription
idstringYes
bodystringYes
issueobjectYes
userobjectYes
parentobjectNo
editedAtdateNo
createdAtdateNo
updatedAtdateNo
archivedAtdateNo
{
  id: string
}
{
  id: string,
  name: string,
  displayName: string,
  email?: string | null
}
{
  id: string
}

delete

comments.delete Delete a comment [DESTRUCTIVE] Risk: destructive · Irreversible
await corsair.linear.api.comments.delete({});
Input
NameTypeRequiredDescription
idstringYes
Output: boolean

list

comments.list List comments on an issue Risk: read
await corsair.linear.api.comments.list({});
Input
NameTypeRequiredDescription
issueIdstringYes
firstnumberNo
afterstringNo
Output
NameTypeRequiredDescription
nodesobject[]Yes
pageInfoobjectYes
{
  id: string,
  body: string,
  issue: {
    id: string,
    title: string,
    description?: string | null,
    priority: 0 | 1 | 2 | 3 | 4,
    estimate?: number | null,
    sortOrder: number,
    number: number,
    identifier: string,
    url: string,
    state: {
      id: string,
      name: string,
      type: backlog | unstarted | started | completed | canceled,
      color: string,
      position: number,
      description?: string | null,
      team: {
        id: string,
        name: string,
        key: string,
        description?: string | null,
        icon?: string | null,
        color?: string | null,
        private: boolean,
        createdAt?: date | null,
        updatedAt?: date | null,
        archivedAt?: date | null
      },
      createdAt?: date | null,
      updatedAt?: date | null
    },
    team: {
      id: string,
      name: string,
      key: string,
      description?: string | null,
      icon?: string | null,
      color?: string | null,
      private: boolean,
      createdAt?: date | null,
      updatedAt?: date | null,
      archivedAt?: date | null
    },
    assignee?: {
      id: string,
      name: string,
      email?: string | null,
      displayName: string,
      avatarUrl?: string | null,
      active: boolean,
      admin: boolean,
      createdAt?: date | null,
      updatedAt?: date | null
    } | null,
    creator: {
      id: string,
      name: string,
      email?: string | null,
      displayName: string,
      avatarUrl?: string | null,
      active: boolean,
      admin: boolean,
      createdAt?: date | null,
      updatedAt?: date | null
    },
    project?: {
      id: string,
      name: string,
      description?: string | null,
      icon?: string | null,
      color?: string | null,
      state: backlog | planned | started | paused | completed | canceled,
      priority: number,
      sortOrder: number,
      startDate?: date | null,
      targetDate?: date | null,
      completedAt?: date | null,
      canceledAt?: date | null,
      lead?: {
        id: string,
        name: string,
        email?: string | null,
        displayName: string,
        avatarUrl?: string | null,
        active: boolean,
        admin: boolean,
        createdAt?: date | null,
        updatedAt?: date | null
      } | null,
      teams: {
        id: string,
        name: string,
        key: string,
        description?: string | null,
        icon?: string | null,
        color?: string | null,
        private: boolean,
        createdAt?: date | null,
        updatedAt?: date | null,
        archivedAt?: date | null
      }[],
      createdAt?: date | null,
      updatedAt?: date | null,
      archivedAt?: date | null
    } | null,
    cycle?: {
      id: string,
      number: number,
      name?: string | null,
      description?: string | null,
      startsAt?: date | null,
      endsAt?: date | null,
      completedAt?: date | null,
      team: {
        id: string,
        name: string,
        key: string,
        description?: string | null,
        icon?: string | null,
        color?: string | null,
        private: boolean,
        createdAt?: date | null,
        updatedAt?: date | null,
        archivedAt?: date | null
      },
      createdAt?: date | null,
      updatedAt?: date | null,
      archivedAt?: date | null
    } | null,
    labels: {
      id: string,
      name: string,
      description?: string | null,
      color: string,
      team?: {
        id: string,
        name: string,
        key: string,
        description?: string | null,
        icon?: string | null,
        color?: string | null,
        private: boolean,
        createdAt?: date | null,
        updatedAt?: date | null,
        archivedAt?: date | null
      } | null,
      createdAt?: date | null,
      updatedAt?: date | null,
      parent: lazy
    }[],
    subscribers: {
      id: string,
      name: string,
      email?: string | null,
      displayName: string,
      avatarUrl?: string | null,
      active: boolean,
      admin: boolean,
      createdAt?: date | null,
      updatedAt?: date | null
    }[],
    dueDate?: date | null,
    startedAt?: date | null,
    completedAt?: date | null,
    canceledAt?: date | null,
    triagedAt?: date | null,
    snoozedUntilAt?: date | null,
    createdAt?: date | null,
    updatedAt?: date | null,
    archivedAt?: date | null,
    parent: lazy
  },
  user: {
    id: string,
    name: string,
    email?: string | null,
    displayName: string,
    avatarUrl?: string | null,
    active: boolean,
    admin: boolean,
    createdAt?: date | null,
    updatedAt?: date | null
  },
  editedAt?: date | null,
  createdAt?: date | null,
  updatedAt?: date | null,
  archivedAt?: date | null,
  parent: lazy
}[]
{
  hasNextPage: boolean,
  hasPreviousPage: boolean,
  startCursor?: string | null,
  endCursor?: string | null
}

update

comments.update Update a comment Risk: write
await corsair.linear.api.comments.update({});
Input
NameTypeRequiredDescription
idstringYes
inputobjectYes
{
  body?: string
}
Output
NameTypeRequiredDescription
idstringYes
bodystringYes
issueobjectYes
userobjectYes
parentobjectNo
editedAtdateNo
createdAtdateNo
updatedAtdateNo
archivedAtdateNo
{
  id: string
}
{
  id: string,
  name: string,
  displayName: string,
  email?: string | null
}
{
  id: string
}

Issues

create

issues.create Create a new issue Risk: write
await corsair.linear.api.issues.create({});
Input
NameTypeRequiredDescription
titlestringYes
descriptionstringNo
teamIdstringYes
assigneeIdstringNo
priority0 | 1 | 2 | 3 | 4No
estimatenumberNo
stateIdstringNo
projectIdstringNo
cycleIdstringNo
parentIdstringNo
labelIdsstring[]No
subscriberIdsstring[]No
dueDatestringNo
Output
NameTypeRequiredDescription
idstringYes
titlestringNo
descriptionstringNo
priority0 | 1 | 2 | 3 | 4No
estimatenumberNo
sortOrdernumberNo
numbernumberNo
identifierstringNo
urlstringNo
stateobjectNo
teamobjectNo
assigneeobjectNo
creatorobjectNo
createdAtdateNo
updatedAtdateNo
{
  id: string,
  name: string,
  type: backlog | unstarted | started | completed | canceled,
  color?: string,
  position?: number
}
{
  id: string,
  name: string,
  key: string
}
{
  id: string,
  name: string,
  displayName: string,
  email?: string | null
}
{
  id: string,
  name: string,
  displayName: string,
  email?: string | null
}

delete

issues.delete Permanently delete an issue [DESTRUCTIVE · IRREVERSIBLE] Risk: destructive · Irreversible
await corsair.linear.api.issues.delete({});
Input
NameTypeRequiredDescription
idstringYes
Output: boolean

get

issues.get Get a specific issue Risk: read
await corsair.linear.api.issues.get({});
Input
NameTypeRequiredDescription
idstringYes
Output
NameTypeRequiredDescription
idstringYes
titlestringYes
descriptionstringNo
priority0 | 1 | 2 | 3 | 4Yes
estimatenumberNo
sortOrdernumberYes
numbernumberYes
identifierstringYes
urlstringYes
stateobjectYes
teamobjectYes
assigneeobjectNo
creatorobjectYes
projectobjectNo
cycleobjectNo
labelsobjectNo
subscribersobjectNo
dueDatedateNo
startedAtdateNo
completedAtdateNo
canceledAtdateNo
triagedAtdateNo
snoozedUntilAtdateNo
createdAtdateNo
updatedAtdateNo
archivedAtdateNo
parentlazyYes
{
  id: string,
  name: string,
  type: backlog | unstarted | started | completed | canceled,
  color?: string,
  position?: number
}
{
  id: string,
  name: string,
  key: string
}
{
  id: string,
  name: string,
  displayName: string,
  email?: string | null
}
{
  id: string,
  name: string,
  displayName: string,
  email?: string | null
}
{
  id: string,
  name: string,
  state: backlog | planned | started | paused | completed | canceled
}
{
  id: string,
  number: number,
  name?: string | null
}
{
  nodes: {
    id: string,
    name: string,
    color: string
  }[]
}
{
  nodes: {
    id: string,
    name: string,
    displayName: string,
    email?: string | null
  }[]
}

list

issues.list List issues in a team Risk: read
await corsair.linear.api.issues.list({});
Input
NameTypeRequiredDescription
teamIdstringNo
firstnumberNo
afterstringNo
Output
NameTypeRequiredDescription
nodesobject[]Yes
pageInfoobjectYes
{
  id: string,
  title: string,
  description?: string | null,
  priority: 0 | 1 | 2 | 3 | 4,
  estimate?: number | null,
  sortOrder: number,
  number: number,
  identifier: string,
  url: string,
  state: {
    id: string,
    name: string,
    type: backlog | unstarted | started | completed | canceled,
    color?: string,
    position?: number
  },
  team: {
    id: string,
    name: string,
    key: string
  },
  assignee?: {
    id: string,
    name: string,
    displayName: string,
    email?: string | null
  } | null,
  creator: {
    id: string,
    name: string,
    displayName: string,
    email?: string | null
  },
  project?: {
    id: string,
    name: string,
    state: backlog | planned | started | paused | completed | canceled
  } | null,
  cycle?: {
    id: string,
    number: number,
    name?: string | null
  } | null,
  labels?: {
    nodes: {
      id: string,
      name: string,
      color: string
    }[]
  } | null,
  subscribers?: {
    nodes: {
      id: string,
      name: string,
      displayName: string,
      email?: string | null
    }[]
  } | null,
  dueDate?: date | null,
  startedAt?: date | null,
  completedAt?: date | null,
  canceledAt?: date | null,
  triagedAt?: date | null,
  snoozedUntilAt?: date | null,
  createdAt?: date | null,
  updatedAt?: date | null,
  archivedAt?: date | null,
  parent: lazy
}[]
{
  hasNextPage: boolean,
  hasPreviousPage: boolean,
  startCursor?: string | null,
  endCursor?: string | null
}

update

issues.update Update an existing issue Risk: write
await corsair.linear.api.issues.update({});
Input
NameTypeRequiredDescription
idstringYes
inputobjectYes
{
  title?: string,
  description?: string,
  assigneeId?: string,
  priority?: 0 | 1 | 2 | 3 | 4,
  estimate?: number,
  stateId?: string,
  projectId?: string,
  cycleId?: string,
  parentId?: string,
  labelIds?: string[],
  subscriberIds?: string[],
  dueDate?: string
}
Output
NameTypeRequiredDescription
idstringYes
titlestringNo
descriptionstringNo
priority0 | 1 | 2 | 3 | 4No
estimatenumberNo
sortOrdernumberNo
numbernumberNo
identifierstringNo
urlstringNo
stateobjectNo
teamobjectNo
assigneeobjectNo
creatorobjectNo
createdAtdateNo
updatedAtdateNo
{
  id: string,
  name: string,
  type: backlog | unstarted | started | completed | canceled,
  color?: string,
  position?: number
}
{
  id: string,
  name: string,
  key: string
}
{
  id: string,
  name: string,
  displayName: string,
  email?: string | null
}
{
  id: string,
  name: string,
  displayName: string,
  email?: string | null
}

Projects

create

projects.create Create a new project Risk: write
await corsair.linear.api.projects.create({});
Input
NameTypeRequiredDescription
namestringYes
descriptionstringNo
iconstringNo
colorstringNo
teamIdsstring[]Yes
leadIdstringNo
stateplanned | started | paused | completed | canceledNo
prioritynumberNo
startDatestringNo
targetDatestringNo
Output
NameTypeRequiredDescription
idstringYes
namestringYes
descriptionstringNo
iconstringNo
colorstringNo
statebacklog | planned | started | paused | completed | canceledYes
prioritynumberYes
sortOrdernumberNo
startDatedateNo
targetDatedateNo
completedAtdateNo
canceledAtdateNo
leadobjectNo
teamsobjectYes
createdAtdateNo
updatedAtdateNo
archivedAtdateNo
{
  id: string,
  name: string,
  displayName: string,
  email?: string | null
}
{
  nodes: {
    id: string,
    name: string,
    key: string
  }[]
}

delete

projects.delete Permanently delete a project [DESTRUCTIVE · IRREVERSIBLE] Risk: destructive · Irreversible
await corsair.linear.api.projects.delete({});
Input
NameTypeRequiredDescription
idstringYes
Output: boolean

get

projects.get Get a specific project Risk: read
await corsair.linear.api.projects.get({});
Input
NameTypeRequiredDescription
idstringYes
Output
NameTypeRequiredDescription
idstringYes
namestringYes
descriptionstringNo
iconstringNo
colorstringNo
statebacklog | planned | started | paused | completed | canceledYes
prioritynumberYes
sortOrdernumberYes
startDatedateNo
targetDatedateNo
completedAtdateNo
canceledAtdateNo
leadobjectNo
teamsobjectYes
createdAtdateNo
updatedAtdateNo
{
  id: string,
  name: string,
  displayName: string,
  email?: string | null
}
{
  nodes: {
    id: string,
    name: string,
    key: string
  }[]
}

list

projects.list List projects in a team Risk: read
await corsair.linear.api.projects.list({});
Input
NameTypeRequiredDescription
firstnumberNo
afterstringNo
Output
NameTypeRequiredDescription
nodesobject[]Yes
pageInfoobjectYes
{
  id: string,
  name: string,
  description?: string | null,
  icon?: string | null,
  color?: string | null,
  state: backlog | planned | started | paused | completed | canceled,
  priority: number,
  sortOrder: number,
  startDate?: date | null,
  targetDate?: date | null,
  completedAt?: date | null,
  canceledAt?: date | null,
  lead?: {
    id: string,
    name: string,
    displayName: string,
    email?: string | null
  } | null,
  teams: {
    nodes: {
      id: string,
      name: string,
      key: string
    }[]
  },
  createdAt?: date | null,
  updatedAt?: date | null
}[]
{
  hasNextPage: boolean,
  hasPreviousPage: boolean,
  startCursor?: string | null,
  endCursor?: string | null
}

update

projects.update Update an existing project Risk: write
await corsair.linear.api.projects.update({});
Input
NameTypeRequiredDescription
idstringYes
inputobjectYes
{
  name?: string,
  description?: string,
  icon?: string,
  color?: string,
  teamIds?: string[],
  leadId?: string,
  state?: planned | started | paused | completed | canceled,
  priority?: number,
  startDate?: string,
  targetDate?: string
}
Output
NameTypeRequiredDescription
idstringYes
namestringYes
descriptionstringNo
iconstringNo
colorstringNo
statebacklog | planned | started | paused | completed | canceledYes
prioritynumberYes
sortOrdernumberNo
startDatedateNo
targetDatedateNo
completedAtdateNo
canceledAtdateNo
leadobjectNo
teamsobjectNo
createdAtdateNo
updatedAtdateNo
archivedAtdateNo
{
  id: string,
  name: string,
  displayName: string,
  email?: string | null
}
{
  nodes: {
    id: string,
    name: string,
    key: string
  }[]
}

Teams

get

teams.get Get a specific team Risk: read
await corsair.linear.api.teams.get({});
Input
NameTypeRequiredDescription
idstringYes
Output
NameTypeRequiredDescription
idstringYes
namestringYes
keystringYes
descriptionstringNo
iconstringNo
colorstringNo
privatebooleanYes
createdAtdateNo
updatedAtdateNo
archivedAtdateNo

list

teams.list List teams in the workspace Risk: read
await corsair.linear.api.teams.list({});
Input
NameTypeRequiredDescription
firstnumberNo
afterstringNo
Output
NameTypeRequiredDescription
nodesobject[]Yes
pageInfoobjectYes
{
  id: string,
  name: string,
  key: string,
  description?: string | null,
  icon?: string | null,
  color?: string | null,
  private: boolean,
  createdAt?: date | null,
  updatedAt?: date | null,
  archivedAt?: date | null
}[]
{
  hasNextPage: boolean,
  hasPreviousPage: boolean,
  startCursor?: string | null,
  endCursor?: string | null
}

Users

get

users.get Get a specific user Risk: read
await corsair.linear.api.users.get({});
Input
NameTypeRequiredDescription
idstringYes
Output
NameTypeRequiredDescription
idstringYes
namestringYes
emailstringNo
displayNamestringYes
avatarUrlstringNo
activebooleanYes
adminbooleanYes
createdAtdateNo
updatedAtdateNo

list

users.list List users in the workspace Risk: read
await corsair.linear.api.users.list({});
Input
NameTypeRequiredDescription
firstnumberNo
afterstringNo
Output
NameTypeRequiredDescription
nodesobject[]Yes
pageInfoobjectYes
{
  id: string,
  name: string,
  email?: string | null,
  displayName: string,
  avatarUrl?: string | null,
  active: boolean,
  admin: boolean,
  createdAt?: date | null,
  updatedAt?: date | null
}[]
{
  hasNextPage: boolean,
  hasPreviousPage: boolean,
  startCursor?: string | null,
  endCursor?: string | null
}