Σύνδεσμος Linear

Συνδέστε τον χώρο εργασίας Linear σας με το Brevo για παρακολούθηση ζητημάτων που αντιμετωπίζουν πελάτες, ειδοποιήσεις ενημερώσεων προϊόντος και καμπάνιες ορόσημων ανάπτυξης μέσω Tajo.

Επισκόπηση

ΙδιότηταΤιμή
ΠλατφόρμαLinear
ΚατηγορίαΠροσαρμοσμένο
Πολυπλοκότητα ΡύθμισηςΕύκολη
Επίσημη ΕνσωμάτωσηΌχι
Δεδομένα που ΣυγχρονίζονταιΖητήματα, Έργα, Χρήστες, Εκδηλώσεις
Τύπος APIGraphQL API
ΠιστοποίησηOAuth 2.0 / Personal API Key
Βασικό URLhttps://api.linear.app/graphql

Χαρακτηριστικά

  • Συγχρονισμός εκδηλώσεων ζητήματος - Προώθηση εκδηλώσεων δημιουργίας, ενημέρωσης και ολοκλήρωσης ζητημάτων στα χρονοδιαγράμματα επαφών Brevo
  • Παρακολούθηση ορόσημων έργου - Ενεργοποίηση καμπανιών Brevo όταν τα έργα φτάνουν βασικά ορόσημα
  • Σύνδεση ζητημάτων πελάτη - Συσχέτιση ζητημάτων Linear με επαφές Brevo για ορατότητα υποστήριξης
  • Τμηματοποίηση βάσει ετικέτας - Αντιστοίχιση ετικετών Linear σε χαρακτηριστικά επαφών Brevo
  • Αναλυτικά κύκλου - Συγχρονισμός δεδομένων ολοκλήρωσης sprint/κύκλου για αναφορά απόδοσης ομάδας
  • Αυτοματοποίηση βάσει webhook - Προώθηση εκδηλώσεων σε πραγματικό χρόνο μέσω webhooks Linear

Προαπαιτούμενα

Πριν ξεκινήσετε, βεβαιωθείτε ότι διαθέτετε:

  1. Χώρο εργασίας Linear με πρόσβαση διαχειριστή
  2. Ρυθμισμένο Personal API key ή εφαρμογή OAuth
  3. Λογαριασμό Brevo με πρόσβαση API
  4. Λογαριασμό Tajo με ενεργή συνδρομή

Πιστοποίηση

Το Linear υποστηρίζει Personal API keys και OAuth 2.0.

Επιλογή 1: Personal API Key

  1. Μεταβείτε στο Linear > Settings > API > Personal API keys
  2. Κάντε κλικ στο Create key
  3. Ονομάστε το “Tajo Integration”
  4. Αντιγράψτε το παραγόμενο κλειδί (αρχίζει με 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 } }"}'

Επιλογή 2: OAuth 2.0

Για ενσωματώσεις που εξυπηρετούν πολλαπλούς χώρους εργασίας:

  1. Δημιουργήστε εφαρμογή OAuth στο linear.app/settings/api/applications
  2. Ρυθμίστε URI ανακατεύθυνσης: https://app.tajo.io/callbacks/linear
  3. Ζητήστε scopes: read, write, issues:create, comments:create

GraphQL API

Το Linear χρησιμοποιεί αποκλειστικά GraphQL API. Όλα τα ερωτήματα και οι μεταβολές διέρχονται από ένα μόνο endpoint: https://api.linear.app/graphql. Το Tajo χειρίζεται αυτόματα όλη την κατασκευή ερωτημάτων GraphQL.

Σύνδεση με 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

Διαμόρφωση

Βασική Ρύθμιση

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

Αντιστοίχιση Πεδίων

Αντιστοιχίστε δεδομένα χρήστη και ζητήματος Linear σε χαρακτηριστικά 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

Αντιστοίχιση Εκδηλώσεων

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

Endpoints API

Το Linear χρησιμοποιεί ένα μόνο GraphQL endpoint. Βασικά ερωτήματα και μεταβολές που χρησιμοποιεί το Tajo:

ΛειτουργίαΤύποςΣκοπός
issuesΕρώτημαΛίστα και φιλτράρισμα ζητημάτων
issueΕρώτημαΛήψη μεμονωμένου ζητήματος βάσει ID
projectsΕρώτημαΛίστα όλων των έργων
cyclesΕρώτημαΛίστα κύκλων (sprints)
teamsΕρώτημαΛίστα ομάδων χώρου εργασίας
usersΕρώτημαΛίστα μελών χώρου εργασίας
viewerΕρώτημαΛήψη πληροφοριών πιστοποιημένου χρήστη
issueCreateΜεταβολήΔημιουργία νέου ζητήματος
issueUpdateΜεταβολήΕνημέρωση υπάρχοντος ζητήματος
commentCreateΜεταβολήΠροσθήκη σχολίου σε ζήτημα
webhookCreateΜεταβολήΕγγραφή webhook

Παράδειγμα Ερωτήματος 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
}
}
}

Παραδείγματα Κώδικα

Αρχικοποίηση Συνδέσμου

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

Συγχρονισμός Ζητημάτων

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

Χειρισμός Webhooks 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');
});

Δημιουργία Ζητήματος από Εκδήλωση 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']
});
}
});

Όρια Ρυθμού

Το Linear επιβάλλει όρια ρυθμού στο GraphQL API του:

Τύπος ΟρίουΤιμή
Ρυθμός αιτήματος1.500 αιτήματα ανά ώρα ανά API key
Πολυπλοκότητα ερωτήματος10.000 πόντοι πολυπλοκότητας ανά αίτημα
Σελιδοποίηση250 κόμβοι μέγ. ανά σελίδα (προεπιλογή 50)
WebhooksΑπεριόριστες εισερχόμενες εκδηλώσεις

Προϋπολογισμός Πολυπλοκότητας

Το Linear χρησιμοποιεί σύστημα περιορισμού ρυθμού βάσει πολυπλοκότητας. Τα απλά ερωτήματα κοστίζουν λιγότερους πόντους. Το Tajo βελτιστοποιεί τα ερωτήματα για ελαχιστοποίηση πολυπλοκότητας ζητώντας μόνο τα απαιτούμενα πεδία και χρησιμοποιώντας αποδοτική σελιδοποίηση.

Το Linear επιστρέφει 429 Too Many Requests με header Retry-After όταν υπερβαίνονται τα όρια.

Αντιμετώπιση Προβλημάτων

Συνηθισμένα Προβλήματα

ΠρόβλημαΑιτίαΛύση
401 UnauthorizedΜη έγκυρο ή ανακληθέν API keyΔημιουργήστε νέο API key στο Linear Settings
Σφάλματα ερωτήματοςΜη έγκυρη σύνταξη GraphQLΕπικυρώστε ερωτήματα χρησιμοποιώντας τον εξερευνητή API του Linear
Λείπουν ζητήματαΠεριορισμένη πρόσβαση ομάδαςΒεβαιωθείτε ότι ο ιδιοκτήτης API key έχει πρόσβαση στις στοχευόμενες ομάδες
Δεν ενεργοποιείται webhookΛάθος URL ή απενεργοποιημένοΕλέγξτε κατάσταση webhook στο Linear Settings > API > Webhooks
Ατελής σελιδοποίησηΛείπει cursor afterΒεβαιωθείτε ότι οι επαναλήψεις συνεχίζονται μέχρι να γίνει hasNextPage false

Λειτουργία Εντοπισμού Σφαλμάτων

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

Δοκιμή Σύνδεσης

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

Βέλτιστες Πρακτικές

  1. Χρησιμοποιήστε webhooks για πραγματικό χρόνο - Εγγράψτε webhooks αντί polling για αλλαγές ζητημάτων
  2. Φιλτράρετε ανά ομάδα - Συγχρονίστε μόνο ζητήματα από σχετικές ομάδες για μείωση χρήσης API
  3. Βελτιστοποιήστε ερωτήματα GraphQL - Ζητήστε μόνο τα απαιτούμενα πεδία για παραμονή εντός ορίων πολυπλοκότητας
  4. Αντιστοιχίστε ετικέτες σε τμήματα - Χρησιμοποιήστε ετικέτες Linear για τμηματοποίηση επαφών Brevo
  5. Χειριστείτε σελιδοποίηση - Ελέγχετε πάντα hasNextPage και χρησιμοποιείτε endCursor για πλήρη δεδομένα
  6. Επαληθεύστε υπογραφές webhook - Επαληθεύετε πάντα το header Linear-Signature

Ασφάλεια

  • Πιστοποίηση με API Key - Προσωπικά κλειδιά περιορισμένα στον χώρο εργασίας
  • OAuth 2.0 - Ασφαλής ροή εξουσιοδότησης για ενσωματώσεις πολλαπλών χώρων εργασίας
  • Μόνο HTTPS - Όλη η επικοινωνία API κρυπτογραφημένη μέσω TLS 1.2+
  • Υπογραφές Webhook - Επαλήθευση υπογραφής βάσει HMAC
  • Κρυπτογραφημένη Αποθήκευση - Τα API keys κρυπτογραφούνται σε ηρεμία στο Tajo
  • Συμμόρφωση SOC 2 - Η πλατφόρμα Linear είναι πιστοποιημένη SOC 2 Type II

Σχετικοί Πόροι

Subscribe to updates

developer-docs

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

auto-detect
AI Βοηθός

Γεια! Ρωτήστε με οτιδήποτε για την τεκμηρίωση.