Linear کنیکٹر
صارفین پر مرکوز مسائل کی ٹریکنگ، پروڈکٹ اپ ڈیٹ اطلاعات، اور ڈیولپمنٹ سنگ میل مہمات کے لیے اپنے Linear ورک اسپیس کو Tajo کے ذریعے Brevo سے منسلک کریں۔
جائزہ
| خاصیت | قدر |
|---|---|
| پلیٹ فارم | Linear |
| زمرہ | حسب ضرورت |
| سیٹ اپ کی پیچیدگی | آسان |
| آفیشل انٹیگریشن | نہیں |
| سنک شدہ ڈیٹا | مسائل، پروجیکٹس، صارفین، ایونٹس |
| API قسم | GraphQL API |
| توثیق | OAuth 2.0 / Personal API Key |
| بنیادی URL | https://api.linear.app/graphql |
خصوصیات
- Issue ایونٹ سنک - issue create، update، اور complete ایونٹس کو Brevo رابطہ ٹائم لائنز کو آگے بھیجیں
- پروجیکٹ سنگ میل ٹریکنگ - جب پروجیکٹس اہم سنگ میل تک پہنچیں تو Brevo مہمات کو متحرک کریں
- کسٹمر issue لنکنگ - سپورٹ مرئیت کے لیے Linear مسائل کو Brevo رابطوں سے جوڑیں
- لیبل پر مبنی سیگمنٹیشن - Linear لیبلز کو Brevo رابطہ خصوصیات سے میپ کریں
- Cycle اینالیٹکس - ٹیم پرفارمنس رپورٹنگ کے لیے sprint/cycle کی تکمیل کا ڈیٹا سنک کریں
- ویب ہک سے چلنے والی آٹومیشن - Linear webhooks کے ذریعے ریئل ٹائم ایونٹ فارورڈنگ
ضروریات
شروع کرنے سے پہلے، یقینی بنائیں کہ آپ کے پاس ہے:
- ایڈمن رسائی کے ساتھ Linear ورک اسپیس
- Personal API key یا OAuth ایپلی کیشن کنفیگر کردہ
- API رسائی کے ساتھ Brevo اکاؤنٹ
- فعال سبسکرپشن کے ساتھ Tajo اکاؤنٹ
توثیق
Linear Personal API keys اور OAuth 2.0 کی حمایت کرتا ہے۔
آپشن 1: Personal API Key
- Linear > Settings > API > Personal API keys پر جائیں
- Create key پر کلک کریں
- اسے “Tajo Integration” نام دیں
- تخلیق شدہ key کاپی کریں (
lin_api_سے شروع ہوتی ہے)
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
متعدد ورک اسپیسز کی خدمت کرنے والے انٹیگریشنز کے لیے:
- linear.app/settings/api/applications پر OAuth ایپلی کیشن بنائیں
- redirect URI کنفیگر کریں:
https://app.tajo.io/callbacks/linear - اسکوپس درخواست کریں:
read،write،issues:create،comments:create
GraphQL API
Linear خصوصی طور پر GraphQL API استعمال کرتا ہے۔ تمام queries اور mutations ایک واحد اینڈ پوائنٹ سے گزرتے ہیں: https://api.linear.app/graphql۔ Tajo تمام GraphQL query تعمیر کو خود بخود سنبھالتا ہے۔
Tajo سے منسلک کرنا
# Personal API Key کا استعمال کرتے ہوئےtajo connectors install linear \ --api-key $LINEAR_API_KEY
# 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 صارف اور issue ڈیٹا کو 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_UPDATEDAPI اینڈ پوائنٹس
Linear ایک واحد GraphQL اینڈ پوائنٹ استعمال کرتا ہے۔ Tajo کی جانب سے استعمال کی جانے والی کلیدی queries اور mutations:
| آپریشن | قسم | مقصد |
|---|---|---|
issues | Query | مسائل کی فہرست اور فلٹر |
issue | Query | ID سے واحد issue حاصل کریں |
projects | Query | تمام پروجیکٹس کی فہرست |
cycles | Query | cycles (sprints) کی فہرست |
teams | Query | ورک اسپیس ٹیموں کی فہرست |
users | Query | ورک اسپیس ممبران کی فہرست |
viewer | Query | توثیق شدہ صارف کی معلومات حاصل کریں |
issueCreate | Mutation | نیا issue بنائیں |
issueUpdate | Mutation | موجودہ issue کو اپ ڈیٹ کریں |
commentCreate | Mutation | issue میں تبصرہ شامل کریں |
webhookCreate | Mutation | ویب ہک رجسٹر کریں |
مثال GraphQL Query
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// }Linear ویب ہکس کو ہینڈل کریں
app.post('/webhooks/linear', async (req, res) => { const event = req.body;
// ویب ہک سگنیچر کی تصدیق کریں 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 ایونٹ سے Issue بنائیں
// جب Brevo رابطہ درخواست جمع کرے تو Linear issue بنائیں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 پر ریٹ کی حدود نافذ کرتا ہے:
| حد کی قسم | قدر |
|---|---|
| درخواست کی شرح | فی API key 1,500 درخواستیں فی گھنٹہ |
| Query پیچیدگی | فی درخواست 10,000 پیچیدگی پوائنٹس |
| پیجینیشن | فی صفحہ زیادہ سے زیادہ 250 nodes (ڈیفالٹ 50) |
| ویب ہکس | لامحدود آنے والے ایونٹس |
پیچیدگی کا بجٹ
Linear پیچیدگی پر مبنی ریٹ محدود کرنے کا نظام استعمال کرتا ہے۔ سادہ queries کم پوائنٹس خرچ کرتے ہیں۔ Tajo صرف ضروری فیلڈز کی درخواست کرکے اور مؤثر پیجینیشن کا استعمال کرکے queries کو بہتر بناتا ہے تاکہ پیچیدگی کم ہو۔
حدوں سے تجاوز ہونے پر Linear Retry-After ہیڈر کے ساتھ 429 Too Many Requests واپس کرتا ہے۔
مسائل کا سراغ
عام مسائل
| مسئلہ | وجہ | حل |
|---|---|---|
| 401 Unauthorized | غیر معتبر یا منسوخ شدہ API key | Linear Settings میں نیا API key تخلیق کریں |
| Query خرابیاں | غیر معتبر GraphQL syntax | Linear کے API explorer کا استعمال کرتے ہوئے queries کی تصدیق کریں |
| غائب مسائل | ٹیم تک رسائی محدود | یقینی بنائیں کہ API key مالک کو ہدف ٹیموں تک رسائی ہے |
| ویب ہک فائر نہیں ہو رہا | غلط URL یا غیر فعال | Linear Settings > API > Webhooks میں ویب ہک کی حالت چیک کریں |
| پیجینیشن نامکمل | غائب after cursor | یقینی بنائیں کہ پیجینیشن hasNextPage false ہونے تک لوپ کرے |
ڈیبگ موڈ
connectors: linear: debug: true log_level: verbose log_queries: trueکنکشن ٹیسٹ کریں
tajo connectors test linear# ✓ GraphQL API connection successful# ✓ Workspace access verified# ✓ Team list readable# ✓ Issue query operational# ✓ Webhook registration availableبہترین طریقے
- ریئل ٹائم کے لیے ویب ہکس استعمال کریں - issue تبدیلیوں کے لیے پولنگ کے بجائے ویب ہکس رجسٹر کریں
- ٹیم کے ذریعے فلٹر کریں - API کے استعمال کو کم کرنے کے لیے صرف متعلقہ ٹیموں سے مسائل سنک کریں
- GraphQL queries کو بہتر بنائیں - پیچیدگی کی حدود میں رہنے کے لیے صرف ضروری فیلڈز کی درخواست کریں
- لیبلز کو سیگمنٹس سے میپ کریں - Brevo رابطہ سیگمنٹیشن کو چلانے کے لیے Linear لیبلز کا استعمال کریں
- پیجینیشن کو ہینڈل کریں - مکمل ڈیٹا کے لیے ہمیشہ
hasNextPageچیک کریں اورendCursorاستعمال کریں - ویب ہک سگنیچرز کی تصدیق کریں - ہمیشہ
Linear-Signatureہیڈر کی توثیق کریں
سیکیورٹی
- API Key توثیق - ورک اسپیس تک محدود Personal keys
- OAuth 2.0 - متعدد ورک اسپیس انٹیگریشنز کے لیے محفوظ تفویض کا فلو
- صرف HTTPS - تمام API مواصلات TLS 1.2+ کے ذریعے خفیہ کردہ
- ویب ہک سگنیچرز - HMAC پر مبنی سگنیچر کی تصدیق
- خفیہ کردہ اسٹوریج - Tajo میں API keys آرام کی حالت میں خفیہ کردہ
- SOC 2 تعمیل - Linear پلیٹ فارم SOC 2 Type II سند یافتہ ہے