Setu Recipes: reusable workflows across every app.Browse templates
Setuसेतु

Integrations / Linear

Linear

Issue tracking for product teams (GraphQL API).

6 actions OAuth 2 3 read3 write Calls api.linear.app

Connect

TypeScript
const conn = await setu.connections.initiate({ userId: "user_1", toolkit: "linear" });
console.log(conn.connectUrl); // show this to your user
await conn.waitUntilActive();

Permissions requested

ScopeWhy it is requested
readRead your issues, projects and teams
writeCreate and update issues
comments:createAdd comments to issues

Actions

Add commentwritelinear.add_commentAdd a comment to an issue.

Needs scope: comments:create

InputTypeDescription
issue_idstringRequired
bodystringRequiredMarkdown comment text
TypeScript
await setu.execute({
  userId: "user_1",
  action: "linear.add_comment",
  input: {
    "issue_id": "<issue_id>",
    "body": "<body>"
  },
});
Create issuewritelinear.create_issueCreate an issue in a team.

Needs scope: write

InputTypeDescription
team_idstringRequiredTeam ID from list_teams
titlestringRequired
descriptionstringOptionalMarkdown description
priorityintegerOptional0-4
TypeScript
await setu.execute({
  userId: "user_1",
  action: "linear.create_issue",
  input: {
    "team_id": "<team_id>",
    "title": "<title>"
  },
});
List issuesreadlinear.list_issuesList recent issues, newest first.

Needs scope: read

InputTypeDescription
firstintegerOptional
TypeScript
await setu.execute({
  userId: "user_1",
  action: "linear.list_issues",
  input: {},
});
List teamsreadlinear.list_teamsList the teams in the workspace.

Needs scope: read

No input.

TypeScript
await setu.execute({
  userId: "user_1",
  action: "linear.list_teams",
  input: {},
});
Search issuesreadlinear.search_issuesSearch issues by text.

Needs scope: read

InputTypeDescription
termstringRequired
firstintegerOptional
TypeScript
await setu.execute({
  userId: "user_1",
  action: "linear.search_issues",
  input: {
    "term": "<term>"
  },
});
Update issuewritelinear.update_issueUpdate the title, description or priority of an issue.

Needs scope: write

InputTypeDescription
issue_idstringRequired
titlestringOptional
descriptionstringOptional
priorityintegerOptional
TypeScript
await setu.execute({
  userId: "user_1",
  action: "linear.update_issue",
  input: {
    "issue_id": "<issue_id>"
  },
});