Linear konnektor
Csatlakoztasd a Linear munkaterületedet a Brevóhoz ügyfél-oldali hibajegy-követéshez, termékfrissítési értesítésekhez és fejlesztési mérföldkő-kampányokhoz a Tajo segítségével.
Áttekintés
| Tulajdonság | Érték |
|---|---|
| Platform | Linear |
| Kategória | Egyéni |
| Telepítés bonyolultsága | Könnyű |
| Hivatalos integráció | Nem |
| Szinkronizált adatok | Hibajegyek, Projektek, Felhasználók, Események |
| API típus | GraphQL API |
| Hitelesítés | OAuth 2.0 / Személyes API kulcs |
| Alap URL | https://api.linear.app/graphql |
Funkciók
- Hibajegy-esemény szinkronizáció – Hibajegy létrehozási, frissítési és befejezési események továbbítása Brevo kapcsolati idővonalakra
- Projekt mérföldkő-követés – Brevo kampányok indítása, amikor a projektek kulcsfontosságú mérföldköveket érnek el
- Ügyfél hibajegy-összekapcsolás – Linear hibajegyek összekapcsolása Brevo kapcsolatokkal support láthatóságért
- Cimke alapú szegmentálás – Linear cimkék leképezése Brevo kapcsolat-attribútumokhoz
- Ciklus-analitika – Sprint/ciklus befejezési adatok szinkronizálása csapatteljesítmény-riportoláshoz
- Webhook vezérelt automatizálás – Valós idejű esemény-továbbítás Linear webhookok segítségével
Előfeltételek
Mielőtt elkezdenéd, győződj meg róla, hogy rendelkezel:
- Egy Linear munkaterülettel adminisztrátori hozzáféréssel
- Egy konfigurált személyes API kulccsal vagy OAuth alkalmazással
- Egy Brevo fiókkal API-hozzáféréssel
- Egy Tajo fiókkal aktív előfizetéssel
Hitelesítés
A Linear személyes API kulcsokat és OAuth 2.0-t támogat.
1. lehetőség: Személyes API kulcs
- Menj a Linear > Settings > API > Personal API keys menüpontra
- Kattints a Create key gombra
- Nevezd el „Tajo Integration”-nek
- Másold ki a generált kulcsot (lin_api_-val kezdődik)
curl -X POST https://api.linear.app/graphql \ -H "Authorization: $LINEAR_API_KEY" \ -H "Content-Type: application/json" \ -d '{"query": "{ viewer { id name email } }"}'2. lehetőség: OAuth 2.0
Több munkaterületet kiszolgáló integrációkhoz:
- Hozz létre egy OAuth alkalmazást a linear.app/settings/api/applications oldalon
- Konfiguráld az átirányítási URI-t:
https://app.tajo.io/callbacks/linear - Kérd a hatóköröket:
read,write,issues:create,comments:create
GraphQL API
A Linear kizárólag GraphQL API-t használ. Az összes lekérdezés és mutáció egyetlen végponton megy keresztül: https://api.linear.app/graphql. A Tajo az összes GraphQL lekérdezés-összeállítást automatikusan kezeli.
Csatlakozás a Tajóhoz
# Using Personal API Keytajo connectors install linear \ --api-key $LINEAR_API_KEY
# Using OAuthtajo connectors install linear \ --client-id $LINEAR_CLIENT_ID \ --client-secret $LINEAR_CLIENT_SECRETKonfiguráció
Alapbeállítás
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 - CanceledMezőleképezés
Képezd le a Linear felhasználói és hibajegy-adatokat Brevo attribútumokhoz:
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_TEAMEsemény-leképezés
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_UPDATEDAPI végpontok
A Linear egyetlen GraphQL végpontot használ. A Tajo által használt főbb lekérdezések és mutációk:
| Művelet | Típus | Cél |
|---|---|---|
issues | Lekérdezés | Hibajegyek listázása és szűrése |
issue | Lekérdezés | Egyetlen hibajegy lekérése azonosító alapján |
projects | Lekérdezés | Az összes projekt listázása |
cycles | Lekérdezés | Ciklusok (sprints) listázása |
teams | Lekérdezés | Munkaterület csapatok listázása |
users | Lekérdezés | Munkaterület tagok listázása |
viewer | Lekérdezés | Hitelesített felhasználói információk lekérése |
issueCreate | Mutáció | Új hibajegy létrehozása |
issueUpdate | Mutáció | Meglévő hibajegy frissítése |
commentCreate | Mutáció | Megjegyzés hozzáadása hibajegyhez |
webhookCreate | Mutáció | Webhook regisztrálása |
GraphQL lekérdezési példa
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 } }}Kódpéldák
A konnektor inicializálása
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});Hibajegyek szinkronizálása
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// }Linear webhookok kezelése
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');});Hibajegy létrehozása Brevo eseményből
// Create a Linear issue when a Brevo contact submits a requesttajo.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'] }); }});Ráta-korlátok
A Linear ráta-korlátokat alkalmaz a GraphQL API-jára:
| Korlát típusa | Érték |
|---|---|
| Kérési ráta | 1 500 kérés/óra API kulcsonként |
| Lekérdezési komplexitás | 10 000 komplexitási pont kérésenként |
| Oldalazás | Max. 250 csomópont oldalanként (alapértelmezett 50) |
| Webhookok | Korlátlan bejövő esemény |
Komplexitási keret
A Linear komplexitás alapú ráta-korlátozási rendszert használ. Az egyszerűbb lekérdezések kevesebb pontot igényelnek. A Tajo optimalizálja a lekérdezéseket a komplexitás minimalizálásához csak a szükséges mezők kérésével és hatékony oldalazással.
A Linear 429 Too Many Requests választ ad vissza a Retry-After fejléccel a korlátok túllépésekor.
Hibaelhárítás
Gyakori problémák
| Probléma | Ok | Megoldás |
|---|---|---|
| 401 Unauthorized | Érvénytelen vagy visszavont API kulcs | Generálj új API kulcsot a Linear Beállításokban |
| Lekérdezési hibák | Érvénytelen GraphQL szintaxis | Érvényesítsd a lekérdezéseket a Linear API explorerével |
| Hiányzó hibajegyek | Csapat-hozzáférés korlátozott | Győződj meg róla, hogy az API kulcs tulajdonosa hozzáfér a célcsapatokhoz |
| Webhook nem tüzel | Helytelen URL vagy letiltva | Ellenőrizd a webhook státuszát a Linear Beállítások > API > Webhooks menüpontban |
| Oldalazás befejezetlen | Hiányzó after kurzor | Győződj meg róla, hogy az oldalazási ciklus addig fut, amíg a hasNextPage hamis |
Hibakeresési mód
connectors: linear: debug: true log_level: verbose log_queries: trueKapcsolat tesztelése
tajo connectors test linear# ✓ GraphQL API connection successful# ✓ Workspace access verified# ✓ Team list readable# ✓ Issue query operational# ✓ Webhook registration availableLegjobb gyakorlatok
- Valós idejűséghez használj webhookokat – Regisztrálj webhookokat a hibajegy-változásokhoz lekérdezés helyett
- Szűrj csapat szerint – Csak a releváns csapatok hibajegyeit szinkronizáld az API-használat csökkentéséhez
- Optimalizáld a GraphQL lekérdezéseket – Csak a szükséges mezőket kérd a komplexitási korlátokon belül maradva
- Képezd le a cimkéket szegmensekre – Használd a Linear cimkéket a Brevo kapcsolat-szegmentálás vezérléséhez
- Kezelj oldalazást – Mindig ellenőrizd a
hasNextPageértékét és használd azendCursorértéket az adatok teljességéhez - Ellenőrizd a webhook aláírásokat – Mindig validáld a
Linear-Signaturefejlécet
Biztonság
- API kulcs hitelesítés – Munkaterületre korlátozott személyes kulcsok
- OAuth 2.0 – Biztonságos engedélyezési folyam több munkaterületes integrációkhoz
- Csak HTTPS – Minden API kommunikáció TLS 1.2+-on keresztül titkosítva
- Webhook aláírások – HMAC alapú aláírás-ellenőrzés
- Titkosított tárolás – Az API kulcsok titkosítva tárolódnak a Tajóban
- SOC 2 megfelelőség – A Linear platform SOC 2 Type II tanúsítvánnyal rendelkezik