{ "schema": 1, "id": "linear", "name": "Linear", "category": "development", "auth": { "kind": "both", "base": "https://api.linear.app", "authorization": "none", "pat_help": "https://linear.app/settings/account/security — create a personal API key under Security & access; the key acts as your Linear account, so keep the connection read-only unless you want issue creation", "oauth": { "authorize_url": "https://linear.app/oauth/authorize", "token_url": "https://api.linear.app/oauth/token", "scopes": ["read"], "scopes_write": ["read", "issues:create"] } }, "ops": [ { "id": "viewer", "label": "Check who the key belongs to", "access": "read", "method": "POST", "path": "/graphql", "body_json": { "query": "query { viewer { name displayName email url } }" }, "pick": { "root": "data.viewer", "fields": [ "name", "displayName", "email", "url" ] } }, { "id": "teams.list", "label": "List your teams", "access": "read", "method": "POST", "path": "/graphql", "body_json": { "query": "query { teams(first: 50) { nodes { id key name } } }" }, "pick": { "root": "data.teams.nodes", "fields": [ "id", "key", "name" ] } }, { "id": "issues.list", "label": "List a team's active issues", "access": "read", "method": "POST", "path": "/graphql", "args": { "team": { "required": true } }, "body_json": { "query": "query($team: String!) { issues(first: 50, filter: { team: { key: { eq: $team } }, state: { type: { nin: [\"completed\", \"canceled\"] } } }, orderBy: updatedAt) { nodes { identifier title url priorityLabel updatedAt state { name } assignee { displayName } } } }", "variables": { "team": "{team}" } }, "pick": { "root": "data.issues.nodes", "fields": [ "identifier", "title", "url", "priorityLabel", "updatedAt", "state.name", "assignee.displayName" ] } }, { "id": "issue.create", "label": "Create an issue", "access": "write", "method": "POST", "path": "/graphql", "args": { "team_id": { "required": true }, "title": { "required": true }, "description": {} }, "body_json": { "query": "mutation($teamId: String!, $title: String!, $description: String) { issueCreate(input: { teamId: $teamId, title: $title, description: $description }) { issue { identifier title url } } }", "variables": { "teamId": "{team_id}", "title": "{title}", "description": "{description}" } }, "pick": { "root": "data.issueCreate.issue", "fields": [ "identifier", "title", "url" ] }, "confirm": "Create the Linear issue “{title}” in the team with id {team_id}?" } ] }