Linear konektor

Prepoj svoj Linear workspace s Brevo pre sledovanie issues zákazníkov, notifikácie o aktualizáciách produktu a kampane pri vývojových míľnikoch cez Tajo.

Prehľad

VlastnosťHodnota
PlatformaLinear
KategóriaVlastná
Zložitosť nastaveniaĽahké
Oficiálna integráciaNie
Synchronizované dátaIssues, Projekty, Používatelia, Udalosti
Typ APIGraphQL API
AutentifikáciaOAuth 2.0 / Personal API Key
Base URLhttps://api.linear.app/graphql

Funkcie

  • Synchronizácia udalostí issues - Preposielaj udalosti vytvorenia, aktualizácie a dokončenia issues do časových osí kontaktov v Brevo
  • Sledovanie míľnikov projektov - Spúšťaj kampane Brevo, keď projekty dosiahnu kľúčové míľniky
  • Prepojenie issues zákazníkov - Priraď Linear issues k kontaktom Brevo pre viditeľnosť podpory
  • Segmentácia podľa labelov - Namapuj lineárne labels na atribúty kontaktov v Brevo
  • Analytika cyklov - Synchronizuj dáta o dokončení sprintov/cyklov pre reportovanie výkonu tímu
  • Webhook automatizácia - Preposielanie udalostí v reálnom čase cez Linear webhooky

Predpoklady

Predtým, než začneš, uisti sa, že máš:

  1. Linear workspace s admin prístupom
  2. Nakonfigurovaný Personal API kľúč alebo OAuth aplikáciu
  3. Brevo účet s API prístupom
  4. Tajo účet s aktívnym predplatným

Autentifikácia

Linear podporuje Personal API kľúče a OAuth 2.0.

Možnosť 1: Personal API Key

  1. Choď na Linear > Settings > API > Personal API keys
  2. Klikni na Create key
  3. Pomenuj ho “Tajo Integration”
  4. Skopíruj vygenerovaný kľúč (začína sa lin_api_)
Terminal window
curl -X POST https://api.linear.app/graphql \
-H "Authorization: $LINEAR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query": "{ viewer { id name email } }"}'

Možnosť 2: OAuth 2.0

Pre integrácie obsluhujúce viacero workspace:

  1. Vytvor OAuth aplikáciu na linear.app/settings/api/applications
  2. Nakonfiguruj redirect URI: https://app.tajo.io/callbacks/linear
  3. Požiadaj o scopes: read, write, issues:create, comments:create

GraphQL API

Linear výhradne používa GraphQL API. Všetky dopyty a mutácie prechádzajú jediným endpointom: https://api.linear.app/graphql. Tajo spravuje všetky konštrukcie GraphQL dopytov automaticky.

Pripojenie k Tajo

Terminal window
# Using Personal API Key
tajo connectors install linear \
--api-key $LINEAR_API_KEY
# Using OAuth
tajo connectors install linear \
--client-id $LINEAR_CLIENT_ID \
--client-secret $LINEAR_CLIENT_SECRET

Konfigurácia

Základné nastavenie

connectors:
linear:
enabled: true
sync:
issues: true
projects: true
cycles: true
users: true
teams:
- key: "ENG"
sync_to_list: 38
- key: "SUPPORT"
sync_to_list: 39
issue_states:
- Backlog
- Todo
- "In Progress"
- Done
- Canceled

Mapovanie polí

Namapuj dáta používateľov a issues Linear na atribúty Brevo:

field_mapping:
# User fields
id: LINEAR_USER_ID
email: email
name: FIRSTNAME
# Issue metrics mapped to contact events
last_issue_identifier: LAST_LINEAR_ISSUE
last_issue_state: LAST_ISSUE_STATUS
last_issue_priority: LAST_ISSUE_PRIORITY
total_issues: LINEAR_ISSUE_COUNT
# Project data
current_project: ACTIVE_PROJECT
team_key: LINEAR_TEAM

Mapovanie udalostí

event_mapping:
Issue.create: ISSUE_CREATED
Issue.update: ISSUE_UPDATED
Issue.remove: ISSUE_DELETED
Comment.create: COMMENT_ADDED
Project.update: PROJECT_UPDATED
Cycle.update: CYCLE_UPDATED

API endpointy

Linear používa jeden GraphQL endpoint. Kľúčové dopyty a mutácie používané v Tajo:

OperáciaTypÚčel
issuesDopytZoznam a filtrovanie issues
issueDopytJedna issue podľa ID
projectsDopytZoznam všetkých projektov
cyclesDopytZoznam cyklov (sprintov)
teamsDopytZoznam tímov workspace
usersDopytZoznam členov workspace
viewerDopytInformácie o autentifikovanom používateľovi
issueCreateMutáciaVytvorenie novej issue
issueUpdateMutáciaAktualizácia existujúcej issue
commentCreateMutáciaPridanie komentára k issue
webhookCreateMutáciaRegistrácia webhooku

Príklad GraphQL dopytu

query GetIssues($filter: IssueFilter, $first: Int, $after: String) {
issues(filter: $filter, first: $first, after: $after) {
nodes {
id
identifier
title
state { name }
priority
assignee { email name }
labels { nodes { name } }
createdAt
updatedAt
}
pageInfo {
hasNextPage
endCursor
}
}
}

Ukážky kódu

Inicializácia konektora

import { TajoClient } from '@tajo/sdk';
const tajo = new TajoClient({
apiKey: process.env.TAJO_API_KEY,
brevoApiKey: process.env.BREVO_API_KEY
});
await tajo.connectors.connect('linear', {
apiKey: process.env.LINEAR_API_KEY
});

Synchronizácia issues

await tajo.connectors.sync('linear', {
type: 'incremental',
resources: ['issues'],
teams: ['ENG', 'SUPPORT'],
since: '2024-01-01'
});
const status = await tajo.connectors.status('linear');
console.log(status);
// {
// connected: true,
// lastSync: '2024-03-15T18:00:00Z',
// issuesTracked: 3200,
// projectsMonitored: 8,
// usersLinked: 45
// }

Spracovanie Linear webhookov

app.post('/webhooks/linear', async (req, res) => {
const event = req.body;
// Verify webhook signature
const signature = req.get('Linear-Signature');
if (!verifyLinearSignature(req.body, signature)) {
return res.status(401).send('Unauthorized');
}
await tajo.connectors.handleWebhook('linear', {
type: event.type,
action: event.action,
payload: {
issueId: event.data?.id,
identifier: event.data?.identifier,
title: event.data?.title,
state: event.data?.state?.name,
assigneeEmail: event.data?.assignee?.email
}
});
res.status(200).send('OK');
});

Vytvorenie issue z udalosti Brevo

// Create a Linear issue when a Brevo contact submits a request
tajo.events.on('contact.event', async (event) => {
if (event.name === 'FEATURE_REQUEST') {
await tajo.connectors.create('linear', {
teamId: 'ENG',
title: `Feature Request: ${event.data.subject}`,
description: event.data.description,
priority: 3,
labelIds: ['feature-request']
});
}
});

Obmedzenia rýchlosti

Linear uplatňuje obmedzenia rýchlosti na svojom GraphQL API:

Typ limituHodnota
Frekvencia požiadaviek1 500 požiadaviek za hodinu na API kľúč
Komplexnosť dopytu10 000 bodov komplexnosti na požiadavku
StránkovanieMax 250 uzlov na stránku (predvolene 50)
WebhookyNeobmedzené prichádzajúce udalosti

Rozpočet komplexnosti

Linear používa systém obmedzovania rýchlosti na základe komplexnosti. Jednoduché dopyty stoja menej bodov. Tajo optimalizuje dopyty na minimalizáciu komplexnosti požadovaním iba potrebných polí a efektívnym stránkovaním.

Linear vracia 429 Too Many Requests s hlavičkou Retry-After pri prekročení limitov.

Riešenie problémov

Bežné problémy

ProblémPríčinaRiešenie
401 UnauthorizedNeplatný alebo zrušený API kľúčVygeneruj nový API kľúč v Linear Settings
Chyby dopytuNeplatná GraphQL syntaxValiduj dopyty pomocou Linear API exploreru
Chýbajúce issuesObmedzený prístup k tímuUisti sa, že vlastník API kľúča má prístup k cieľovým tímom
Webhook sa nespúšťaNesprávna URL alebo zakázanáSkontroluj stav webhooku v Linear Settings > API > Webhooks
Stránkovanie je neúplnéChýbajúci kurzor afterUisti sa, že slučky stránkovania pokračujú, kým hasNextPage nie je false

Debug režim

connectors:
linear:
debug: true
log_level: verbose
log_queries: true

Test pripojenia

Terminal window
tajo connectors test linear
# ✓ GraphQL API connection successful
# ✓ Workspace access verified
# ✓ Team list readable
# ✓ Issue query operational
# ✓ Webhook registration available

Odporúčané postupy

  1. Použi webhooky pre real-time - Zaregistruj webhooky namiesto pollingu zmien issues
  2. Filtruj podľa tímu - Synchronizuj iba issues z relevantných tímov na zníženie využitia API
  3. Optimalizuj GraphQL dopyty - Požaduj iba potrebné polia, aby si zostal v limitoch komplexnosti
  4. Namapuj labels na segmenty - Použi Linear labels na riadenie segmentácie kontaktov v Brevo
  5. Spravuj stránkovanie - Vždy skontroluj hasNextPage a použi endCursor pre kompletné dáta
  6. Overuj podpisy webhookov - Vždy validuj hlavičku Linear-Signature

Bezpečnosť

  • Autentifikácia API kľúčom - Osobné kľúče obmedzené na workspace
  • OAuth 2.0 - Bezpečný autorizačný flow pre integrácie s viacerými workspace
  • Iba HTTPS - Všetka API komunikácia šifrovaná cez TLS 1.2+
  • Podpisy webhookov - Overenie podpisu na základe HMAC
  • Šifrované úložisko - API kľúče šifrované v pokoji v Tajo
  • SOC 2 súlad - Platforma Linear je certifikovaná podľa SOC 2 Type II

Súvisiace zdroje

Subscribe to updates

developer-docs

Drop your email or phone number — we'll send you what matters next.

auto-detect
AI asistent

Ahoj! Opýtajte sa ma na dokumentáciu.