---
title: "Linear کنیکٹر"
description: "Tajo کے ذریعے Brevo کے ساتھ مسائل، پروجیکٹس، اور ٹیم سرگرمی کے ڈیٹا کو سنک کرنے کے لیے مکمل Linear انٹیگریشن گائیڈ۔"
url: https://tajo.io/ur/docs/connectors/custom/linear/
markdown: https://tajo.io/ur/docs/connectors/custom/linear.md
lang: ur-PK
robots: noindex
---

ابتدائی رسائی کی درخواست کریں

اپنا پہلا نام اور دفتری ای میل پتہ درج کریں۔ ہم Tajo تک رسائی کی درخواست کی تصدیق کے لیے ایک لنک ای میل کریں گے۔

# Linear کنیکٹر

کنیکٹر کی حیثیت: منصوبہ بند ابھی تیار نہیں ہوا۔ Tajo آج یہ کنیکٹر نہیں چلاتا۔

| ماخذ فیلڈ | منزل فیلڈ | نمونہ قدر |
| --- | --- | --- |
| `record.id` | `source_id` | `record_1042` |
| `record.updated_at` | `updated_at` | `2026-10-18T08:00:00Z` |
| `record.value` | `value` | `sample_value` |

صارفین پر مرکوز مسائل کی ٹریکنگ، پروڈکٹ اپ ڈیٹ اطلاعات، اور ڈیولپمنٹ سنگ میل مہمات کے لیے اپنے 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 کے ذریعے ریئل ٹائم ایونٹ فارورڈنگ

## ضروریات

شروع کرنے سے پہلے، یقینی بنائیں کہ آپ کے پاس ہے:

1. ایڈمن رسائی کے ساتھ Linear ورک اسپیس
2. Personal API key یا OAuth ایپلی کیشن کنفیگر کردہ
3. API رسائی کے ساتھ Brevo اکاؤنٹ
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. تخلیق شدہ key کاپی کریں (`lin_api_` سے شروع ہوتی ہے)

```bash
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. [linear.app/settings/api/applications](https://linear.app/settings/api/applications) پر OAuth ایپلی کیشن بنائیں
2. redirect URI کنفیگر کریں: `https://app.tajo.io/callbacks/linear`
3. اسکوپس درخواست کریں: `read`، `write`، `issues:create`، `comments:create`

GraphQL API

Linear خصوصی طور پر GraphQL API استعمال کرتا ہے۔ تمام queries اور mutations ایک واحد اینڈ پوائنٹ سے گزرتے ہیں: `https://api.linear.app/graphql`۔ Tajo تمام GraphQL query تعمیر کو خود بخود سنبھالتا ہے۔

### Tajo سے منسلک کرنا

```bash
# 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
```

## کنفیگریشن

### بنیادی سیٹ اپ

```yaml
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 خصوصیات سے میپ کریں:

```yaml
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
```

### ایونٹ میپنگ

```yaml
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 اینڈ پوائنٹس

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

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

## کوڈ مثالیں

### کنیکٹر کو شروع کریں

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

### مسائل کو سنک کریں

```javascript
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 ویب ہکس کو ہینڈل کریں

```javascript
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 بنائیں

```javascript
// جب 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 ہونے تک لوپ کرے |

### ڈیبگ موڈ

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

### کنکشن ٹیسٹ کریں

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

## بہترین طریقے

1. **ریئل ٹائم کے لیے ویب ہکس استعمال کریں** - issue تبدیلیوں کے لیے پولنگ کے بجائے ویب ہکس رجسٹر کریں
2. **ٹیم کے ذریعے فلٹر کریں** - API کے استعمال کو کم کرنے کے لیے صرف متعلقہ ٹیموں سے مسائل سنک کریں
3. **GraphQL queries کو بہتر بنائیں** - پیچیدگی کی حدود میں رہنے کے لیے صرف ضروری فیلڈز کی درخواست کریں
4. **لیبلز کو سیگمنٹس سے میپ کریں** - Brevo رابطہ سیگمنٹیشن کو چلانے کے لیے Linear لیبلز کا استعمال کریں
5. **پیجینیشن کو ہینڈل کریں** - مکمل ڈیٹا کے لیے ہمیشہ `hasNextPage` چیک کریں اور `endCursor` استعمال کریں
6. **ویب ہک سگنیچرز کی تصدیق کریں** - ہمیشہ `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 سند یافتہ ہے

## متعلقہ وسائل

- [GitHub کنیکٹر](https://tajo.io/ur/docs/connectors/custom/github)
- [Jira کنیکٹر](https://tajo.io/ur/docs/connectors/custom/jira)
- [Notion کنیکٹر](https://tajo.io/ur/docs/connectors/custom/notion)
- [Brevo Contacts API](https://tajo.io/ur/docs/contact-management)
