Linear Connector

Poveži svoje delovno okolje Linear z Brevo za sledenje težavam, ki so vidne strankam, obvestila o posodobitvah produkta in kampanje ob razvojnih mejnikih prek Tajo.

Pregled

LastnostVrednost
PlatformaLinear
KategorijaPo meri
Zahtevnost nastavitveEnostavna
Uradna integracijaNe
Sinhronizirani podatkiTežave, projekti, uporabniki, dogodki
Tip APIGraphQL API
AvtentikacijaOAuth 2.0 / Osebni API ključ
Osnovni URLhttps://api.linear.app/graphql

Funkcionalnosti

  • Sinhronizacija событий težav – posreduj události ustvarjanja, posodabljanja in zaključevanja težav na časovnice stikov Brevo
  • Sledenje mejnikom projektov – sproži kampanje Brevo, ko projekti dosežejo ključne mejnike
  • Povezovanje težav s strankami – poveži težave Linear s stiki Brevo za pregled podpore
  • Segmentacija na osnovi oznak – preslikaj oznake Linear v atribute stikov Brevo
  • Analitika ciklov – sinhronizacija podatkov o zaključitvi sprintov/ciklov za poročanje o uspešnosti ekipe
  • Avtomatizacija na osnovi webhookov – posredovanje событij v realnem času prek webhookov Linear

Predpogoji

Preden začneš, se prepričaj, da imaš:

  1. Delovno okolje Linear z administratorskim dostopom
  2. Konfiguriran osebni API ključ ali OAuth aplikacijo
  3. Brevo račun z dostopom do API
  4. Tajo račun z aktivno naročnino

Avtentikacija

Linear podpira osebne API ključe in OAuth 2.0.

Možnost 1: Osebni API ključ

  1. Pojdi na Linear > Settings > API > Personal API keys
  2. Klikni Create key
  3. Poimenuj ga “Tajo Integration”
  4. Kopiraj generirani ključ (začne se z 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žnost 2: OAuth 2.0

Za integracije, ki pokrivajo več delovnih okolij:

  1. Ustvari OAuth aplikacijo na linear.app/settings/api/applications
  2. Nastavi URI za preusmeritev: https://app.tajo.io/callbacks/linear
  3. Zahtevaj obsege: read, write, issues:create, comments:create

GraphQL API

Linear izključno uporablja GraphQL API. Vse poizvedbe in mutacije gredo skozi eno samo končno točko: https://api.linear.app/graphql. Tajo samodejno gradi vse GraphQL poizvedbe.

Povezava s 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

Konfiguracija

Osnovna nastavitev

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

Preslikava polj

Preslikaj podatke o uporabnikih in težavah Linear v atribute 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

Preslikava событij

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

Končne točke API

Linear uporablja eno samo GraphQL končno točko. Ključne poizvedbe in mutacije, ki jih uporablja Tajo:

OperacijaTipNamen
issuesPoizvedbaSeznam in filtriranje težav
issuePoizvedbaPridobi posamezno težavo po ID
projectsPoizvedbaSeznam vseh projektov
cyclesPoizvedbaSeznam ciklov (sprintov)
teamsPoizvedbaSeznam ekip delovnega okolja
usersPoizvedbaSeznam članov delovnega okolja
viewerPoizvedbaPridobi informacije o avtenticiranem uporabniku
issueCreateMutacijaUstvari novo težavo
issueUpdateMutacijaPosodobi obstoječo težavo
commentCreateMutacijaDodaj komentar k težavi
webhookCreateMutacijaRegistriraj webhook

Primer poizvedbe GraphQL

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
}
}
}

Primeri kode

Inicializacija konektorja

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
});

Sinhronizacija težav

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
// }

Obravnava webhookov Linear

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');
});

Ustvarjanje težave iz события 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']
});
}
});

Omejitve hitrosti

Linear uveljavi omejitve hitrosti na svojem GraphQL API:

Vrsta omejitveVrednost
Hitrost zahtevkov1.500 zahtevkov na uro na API ključ
Kompleksnost poizvedbe10.000 točk kompleksnosti na zahtevek
PaginacijaNajveč 250 vozlišč na stran (privzeto 50)
WebhooksNeomejeni dohodne dogodki

Proračun kompleksnosti

Linear uporablja sistem omejevanja hitrosti na osnovi kompleksnosti. Enostavne poizvedbe stanejo manj točk. Tajo optimizira poizvedbe za minimizacijo kompleksnosti z zahtevanjem samo potrebnih polj in učinkovito paginacijo.

Linear vrne 429 Too Many Requests z glavo Retry-After, ko so omejitve prekoračene.

Odpravljanje težav

Pogoste težave

TežavaVzrokRešitev
401 UnauthorizedNeveljaven ali preklican API ključUstvari nov API ključ v Linear Settings
Napake poizvedbeNapačna sintaksa GraphQLPotrdi poizvedbe z API Explorer Linear
Manjkajo težaveDostop do ekipe je omejenZagotovi, da ima lastnik API ključa dostop do ciljnih ekip
Webhook se ne sprožiNapačen URL ali onemogočenPreveri status webhookov v Linear Settings > API > Webhooks
Nepopolna paginacijaManjkajoči kazalec afterZagotovi, da zanke paginacije trajajo do hasNextPage = false

Način odpravljanja napak

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

Preizkus povezave

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

Najboljše prakse

  1. Za posodobitve v realnem času uporabi webhooks – registriraj webhooks namesto anketiranja za spremembe težav
  2. Filtriraj po ekipi – sinhronizacija samo težav iz ustreznih ekip za zmanjšanje porabe API
  3. Optimiziraj poizvedbe GraphQL – zahtevaj samo potrebna polja za ostajanje znotraj omejitev kompleksnosti
  4. Preslikaj oznake na segmente – oznake Linear uporabi za pogon segmentacije stikov Brevo
  5. Obravnavaj paginacijo – vedno preverjaj hasNextPage in za popolne podatke uporabi endCursor
  6. Preverjaj podpise webhookov – vedno potrdi glavo Linear-Signature

Varnost

  • Avtentikacija z API ključem – osebni ključi, omejeni na delovno okolje
  • OAuth 2.0 – varen tok avtorizacije za integracije z več delovnimi okolji
  • Samo HTTPS – vsa komunikacija API šifrirana prek TLS 1.2+
  • Podpisi webhookov – preverjanje podpisa na osnovi HMAC
  • Šifrirano shranjevanje – API ključi šifrirani v mirovanju v Tajo
  • Skladnost SOC 2 – platforma Linear je certificirana po SOC 2 Type II

Povezani viri

Subscribe to updates

developer-docs

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

auto-detect
AI pomočnik

Živjo! Vprašajte me o dokumentaciji.