Getting started
If you have not yet set up Trigger.dev in your project, go to the quick start guide .
Installation
To get started with the Linear integration on Trigger.dev, you need to install the @trigger.dev/linear
package.
You can do this using npm, pnpm, or yarn:
Authentication
To use the Linear API with Trigger.dev, you can either use OAuth or a Personal API Key.
OAuth
import { Linear } from "@trigger.dev/linear" ;
//this will use OAuth
const linear = new Linear ({
id: "linear" ,
});
Personal API Key
You can create a Personal API Key in your Linear API Settings .
import { Linear } from "@trigger.dev/linear" ;
//this will use the passed in API key (defined in your environment variables)
const linear = new Linear ({
id: "linear" ,
apiKey: process . env [ "LINEAR_API_KEY" ],
});
Usage
Include the Linear integration in your Trigger.dev job.
client . defineJob ({
id: "linear-new-issue-autoresponder" ,
name: "Linear - New Issue Autoresponder" ,
version: "0.1.0" ,
integrations: {
//use the linear integration
linear ,
},
//trigger on issue created events
trigger: linear . onIssueCreated (),
run : async ( payload , io , ctx ) => {
//get new issue ID from the event payload
const newIssueId = payload . data . id ;
//comment
await io . linear . createComment ( "create-comment" , {
issueId: newIssueId ,
body: "Thank's for opening this issue!" ,
});
//react
await io . linear . createReaction ( "create-reaction" , {
issueId: newIssueId ,
emoji: "+1" ,
});
//store and display in the job run
return { payload , ctx };
},
});
Serialization helper
Use the serializeLinearOutput
helper instead of returning raw Linear SDK responses:
import { Linear , serializeLinearOutput } from "@trigger.dev/linear" ;
...
client . defineJob ({
id: "linear-sdk" ,
name: "Linear SDK" ,
version: "0.1.0" ,
integrations: {
linear ,
},
trigger: eventTrigger ({
name: "linear.sdk" ,
}),
run : async ( payload , io , ctx ) => {
//the official Linear SDK is exposed as `client`
const issues = await io . linear . runTask ( "first-two" , async ( client ) => {
//these nodes contain values we can't serialize, e.g. functions
const { nodes } = await client . issues ({ first: 2 });
//we remove them with this little helper
return serializeLinearOutput ( nodes );
});
return issues ;
},
});
You can paginate responses two different ways:
Iterating the same integration task with different params
Using the getAll
helper exposed on the integration (recommended! )
When ordering results, make sure to use the PaginationOrderBy
enum.
import { Linear , PaginationOrderBy , serializeLinearOutput } from "@trigger.dev/linear" ;
...
client . defineJob ({
id: "linear-pagination" ,
name: "Linear Pagination" ,
version: "0.1.0" ,
integrations: {
linear ,
},
trigger: eventTrigger ({
name: "linear.paginate" ,
}),
run : async ( payload , io , ctx ) => {
//the same params will be used for all tasks
const params = { first: 5 , orderBy: PaginationOrderBy . UpdatedAt };
//1. Linear integration - no pagination helper
let edges = await io . linear . issues ( "get-issues" , params );
let noHelper = edges . nodes ;
for ( let i = 0 ; edges . pageInfo . hasNextPage ; i ++ ) {
edges = await io . linear . issues ( `get-more-issues- ${ i } ` , {
... params ,
after: edges . pageInfo . endCursor ,
});
noHelper = noHelper . concat ( edges . nodes );
}
//2. Linear integration - with the pagination helper
const withHelper = await io . linear . getAll ( io . linear . issues , "get-all" , params );
return {
issueCounts: {
withSdk: sdkIssues . length ,
noHelper: noHelper . length ,
withHelper: withHelper . length ,
},
};
},
});
Triggers
Attachments
Function Name Description onAttachment
When any action is performed on an attachment. onAttachmentCreated
When an attachment is created. onAttachmentRemoved
When an attachment is removed. onAttachmentUpdated
When an attachment is updated.
Function Name Description onComment
When any action is performed on an comment. onCommentCreated
When an comment is created. onCommentRemoved
When an comment is removed. onCommentUpdated
When an comment is updated.
Cycles
Function Name Description onCycle
When any action is performed on an cycle. onCycleCreated
When an cycle is created. onCycleRemoved
When an cycle is removed. onCycleUpdated
When an cycle is updated.
Issues
Function Name Description onIssue
When any action is performed on an issue. onIssueCreated
When an issue is created. onIssueRemoved
When an issue is removed. onIssueUpdated
When an issue is updated.
Issue Labels
Function Name Description onIssueLabel
When any action is performed on an issue label. onIssueLabelCreated
When an issue label is created. onIssueLabelRemoved
When an issue label is removed. onIssueLabelUpdated
When an issue label is updated.
Issue SLAs
Function Name Description onIssueSLA
When any action is performed on an issue SLA. onIssueSLASet
When an issue SLA is set. onIssueSLABreached
When an issue SLA is breached. onIssueSLAHighRisk
When an issue SLA is high risk.
Projects
Function Name Description onProject
When any action is performed on an project. onProjectCreated
When an project is created. onProjectRemoved
When an project is removed. onProjectUpdated
When an project is updated.
Project Updates
Function Name Description onProjectUpdate
When any action is performed on an project update. onProjectUpdateCreated
When an project update is created. onProjectUpdateRemoved
When an project update is removed. onProjectUpdateUpdated
When an project update is updated.
Reactions
Function Name Description onReaction
When any action is performed on an reaction. onReactionCreated
When an reaction is created. onReactionRemoved
When an reaction is removed. onReactionUpdated
When an reaction is updated.
Tasks
Attachments
Function Name Description attachment
Gets an attachment. attachments
Gets multiple attachments. createAttachment
Creates an attachment. deleteAttachment
Deletes an attachment. updateAttachment
Updates an attachment.
Attachment Links
Function Name Description attachmentLinkFront
Links a Front conversation to an issue. attachmentLinkIntercom
Links a Intercom conversation to an issue. attachmentLinkJiraIssue
Links a Jira issue to an issue. attachmentLinkSlack
Links a Slack message to an issue. attachmentLinkURL
Links any URL to an issue. attachmentLinkZendesk
Links a Zendesk ticket to an issue.
Function Name Description comment
Gets a comment. comments
Gets multiple comments. createComment
Creates a comment. deleteComment
Deletes a comment. updateComment
Updates a comment.
Cycles
Function Name Description archiveCycle
Archives a cycle. createCycle
Creates a cycle. updateCycle
Updates a cycle.
Documents
Function Name Description document
Gets a document. documents
Gets multiple documents. createDocument
Creates a document. searchDocuments
Searches documents.
Favorites
Function Name Description favorite
Gets a favorite. favorites
Gets multiple favorites. createFavorite
Creates a favorite.
Issues
Function Name Description issue
Gets an issue. issues
Gets multiple issues. archiveIssue
Archives an issue. createIssue
Creates an issue. deleteIssue
Deletes an issue. searchIssues
Searches issues. updateIssue
Updates an issue.
Issue Labels
Function Name Description issueLabel
Gets an issue label. issueLabels
Gets multiple issue labels. createIssueLabel
Creates an issue label. deleteIssueLabel
Deletes an issue label. updateIssueLabel
Updates an issue label.
Issue Relations
Function Name Description issueRelation
Gets an issue relation. issueRelations
Gets multiple issue relations. createIssueRelation
Creates an issue relation.
Notifications
Function Name Description notification
Gets a notification. notifications
Gets multiple notifications. archiveNotification
Archives a notification. createNotificationSubscription
Creates a notification subscription.
Organizations
Function Name Description organization
Gets the viewer’s organization. createOrganizationFromOnboarding
Creates an organization. createOrganizationInvite
Creates an organization invite.
Projects
Function Name Description project
Gets a project. projects
Gets multiple projects. archiveProject
Archives a project. createProject
Creates a project. deleteProject
Deletes a project. searchProjects
Searches projects. updateProject
Updates a project.
Project Links
Function Name Description projectLink
Gets a project link. projectLinks
Gets multiple project links. createProjectLink
Creates a project link.
Project Updates
Function Name Description projectUpdate
Gets a project update. projectUpdates
Gets multiple project updates. createProjectUpdate
Creates a project update. deleteProjectUpdate
Deletes a project update. updateProjectUpdate
Updates a project update.
Reactions
Function Name Description createReaction
Creates a reaction. deleteReaction
Deletes a reaction.
Roadmaps
Function Name Description archiveRoadmap
Archives a roadmap. createRoadmap
Creates a roadmap.
Teams
Function Name Description team
Gets a team. teams
Gets multiple teams. createTeam
Creates a team.
Team Memberships
Function Name Description teamMembership
Gets a team membership. teamMemberships
Gets multiple team memberships. createTeamMembership
Creates a team membership.
Templates
Function Name Description template
Gets a template. templates
Gets multiple templates.
Users
Function Name Description user
Gets a user. users
Gets multiple users. updateUser
Updates a user.
Webhooks
Function Name Description webhook
Gets a webhook. webhooks
Gets multiple webhooks. createWebhook
Creates a webhook. deleteWebhook
Deletes a webhook. updateWebhook
Updates a webhook.
Workflow States
Function Name Description workflowState
Gets a workflow state. workflowStates
Gets multiple workflow states. archiveWorkflowState
Archives a workflow state. createWorkflowState
Creates a workflow state.
Misc
Function Name Description createProjectMilestone
Creates a project milestone. issuePriorityValues
Gets issue priority values and labels. viewer
Gets the currently authenticated user.
Example jobs
Code examples Check out pre-built jobs using Linear in our API section.