---
title: "Linear Bağlayıcısı"
description: "Sorunları, projeleri ve takım aktivite verilerini Tajo aracılığıyla Brevo ile senkronize etmek için eksiksiz Linear entegrasyon kılavuzu."
url: https://tajo.io/tr/docs/connectors/custom/linear/
markdown: https://tajo.io/tr/docs/connectors/custom/linear.md
lang: tr-TR
robots: noindex
---

Erken erişim talep edin

Adınızı ve iş e-posta adresinizi girin. Tajo erişim talebinizi onaylamanız için size bir bağlantı göndereceğiz.

# Linear Bağlayıcısı

Bağlayıcı durumu: Planlandı Henüz oluşturulmadı. Tajo bu bağlayıcıyı bugün çalıştırmıyor.

| Kaynak alanı | Hedef alanı | Örnek değer |
| --- | --- | --- |
| `record.id` | `source_id` | `record_1042` |
| `record.updated_at` | `updated_at` | `2026-10-18T08:00:00Z` |
| `record.value` | `value` | `sample_value` |

Müşteriye yönelik sorun takibi, ürün güncelleme bildirimleri ve geliştirme kilometre taşı kampanyaları için Linear çalışma alanınızı Tajo üzerinden Brevo’ya bağlayın.

## Genel Bakış

| Özellik | Değer |
| --- | --- |
| **Platform** | Linear |
| **Kategori** | Özel |
| **Kurulum Karmaşıklığı** | Kolay |
| **Resmi Entegrasyon** | Hayır |
| **Senkronize Edilen Veri** | Sorunlar, Projeler, Kullanıcılar, Olaylar |
| **API Türü** | GraphQL API |
| **Kimlik Doğrulama** | OAuth 2.0 / Kişisel API Anahtarı |
| **Temel URL** | `https://api.linear.app/graphql` |

## Özellikler

- **Sorun olayı senkronizasyonu** - Sorun oluşturma, güncelleme ve tamamlama olaylarını Brevo kişi zaman çizelgelerine iletin
- **Proje kilometre taşı takibi** - Projeler önemli kilometre taşlarına ulaştığında Brevo kampanyalarını tetikleyin
- **Müşteri sorun bağlantısı** - Destek görünürlüğü için Linear sorunlarını Brevo kişileriyle ilişkilendirin
- **Etiket tabanlı segmentasyon** - Linear etiketlerini Brevo kişi özniteliklerine eşleyin
- **Döngü analitiği** - Takım performans raporlaması için sprint/döngü tamamlama verilerini senkronize edin
- **Webhook tabanlı otomasyon** - Linear webhook’ları aracılığıyla gerçek zamanlı olay yönlendirme

## Ön Koşullar

Başlamadan önce şunlara sahip olduğunuzdan emin olun:

1. Yönetici erişimi olan bir Linear çalışma alanı
2. Yapılandırılmış bir Kişisel API anahtarı veya OAuth uygulaması
3. API erişimi olan bir Brevo hesabı
4. Etkin aboneliği olan bir Tajo hesabı

## Kimlik Doğrulama

Linear, Kişisel API anahtarlarını ve OAuth 2.0’ı destekler.

### Seçenek 1: Kişisel API Anahtarı

1. **Linear** > **Settings** > **API** > **Personal API keys** bölümüne gidin
2. **Create key** öğesine tıklayın
3. Adını “Tajo Integration” olarak belirleyin
4. Oluşturulan anahtarı kopyalayın (`lin_api_` ile başlar)

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

### Seçenek 2: OAuth 2.0

Birden fazla çalışma alanına hizmet veren entegrasyonlar için:

1. [linear.app/settings/api/applications](https://linear.app/settings/api/applications) adresinde bir OAuth uygulaması oluşturun
2. Yönlendirme URI’sini yapılandırın: `https://app.tajo.io/callbacks/linear`
3. Kapsamları isteyin: `read`, `write`, `issues:create`, `comments:create`

GraphQL API

Linear yalnızca bir GraphQL API kullanır. Tüm sorgular ve mutasyonlar tek bir uç nokta üzerinden geçer: `https://api.linear.app/graphql`. Tajo, tüm GraphQL sorgu oluşturmayı otomatik olarak halleder.

### Tajo’ya Bağlanma

```bash
# Kişisel API Anahtarı kullanarak
tajo connectors install linear \
  --api-key $LINEAR_API_KEY

# OAuth kullanarak
tajo connectors install linear \
  --client-id $LINEAR_CLIENT_ID \
  --client-secret $LINEAR_CLIENT_SECRET
```

## Yapılandırma

### Temel Kurulum

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

### Alan Eşleştirme

Linear kullanıcı ve sorun verilerini Brevo özniteliklerine eşleyin:

```yaml
field_mapping:
  # Kullanıcı alanları
  id: LINEAR_USER_ID
  email: email
  name: FIRSTNAME

  # Kişi olaylarına eşlenen sorun metrikleri
  last_issue_identifier: LAST_LINEAR_ISSUE
  last_issue_state: LAST_ISSUE_STATUS
  last_issue_priority: LAST_ISSUE_PRIORITY
  total_issues: LINEAR_ISSUE_COUNT

  # Proje verileri
  current_project: ACTIVE_PROJECT
  team_key: LINEAR_TEAM
```

### Olay Eşleştirme

```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 Uç Noktaları

Linear tek bir GraphQL uç noktası kullanır. Tajo tarafından kullanılan temel sorgular ve mutasyonlar:

| İşlem | Tür | Amaç |
| --- | --- | --- |
| `issues` | Query | Sorunları listele ve filtrele |
| `issue` | Query | Kimliğe göre tek sorun al |
| `projects` | Query | Tüm projeleri listele |
| `cycles` | Query | Döngüleri (sprintleri) listele |
| `teams` | Query | Çalışma alanı takımlarını listele |
| `users` | Query | Çalışma alanı üyelerini listele |
| `viewer` | Query | Kimliği doğrulanmış kullanıcı bilgisi al |
| `issueCreate` | Mutation | Yeni bir sorun oluştur |
| `issueUpdate` | Mutation | Mevcut sorunu güncelle |
| `commentCreate` | Mutation | Soruna yorum ekle |
| `webhookCreate` | Mutation | Webhook kaydet |

### Örnek GraphQL Sorgusu

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

## Kod Örnekleri

### Bağlayıcıyı Başlatma

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

### Sorunları Senkronize Etme

```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 Webhook’larını İşleme

```javascript
app.post('/webhooks/linear', async (req, res) => {
  const event = req.body;

  // Webhook imzasını doğrula
  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 Olayından Sorun Oluşturma

```javascript
// Bir Brevo kişisi istek gönderdiğinde Linear sorunu oluştur
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']
    });
  }
});
```

## Hız Sınırları

Linear, GraphQL API’sinde hız sınırları uygular:

| Sınır Türü | Değer |
| --- | --- |
| **İstek oranı** | API anahtarı başına saatte 1.500 istek |
| **Sorgu karmaşıklığı** | İstek başına 10.000 karmaşıklık puanı |
| **Sayfalama** | Sayfa başına en fazla 250 düğüm (varsayılan 50) |
| **Webhook’lar** | Sınırsız gelen olay |

Karmaşıklık Bütçesi

Linear, karmaşıklık tabanlı bir hız sınırlama sistemi kullanır. Basit sorgular daha az puan maliyetlidir. Tajo, yalnızca gerekli alanları isteyerek ve verimli sayfalama kullanarak karmaşıklığı en aza indirir.

Sınırlar aşıldığında Linear, `Retry-After` başlığıyla birlikte `429 Too Many Requests` döndürür.

## Sorun Giderme

### Yaygın Sorunlar

| Sorun | Neden | Çözüm |
| --- | --- | --- |
| 401 Unauthorized | Geçersiz veya iptal edilmiş API anahtarı | Linear Ayarlarında yeni bir API anahtarı oluşturun |
| Sorgu hataları | Geçersiz GraphQL söz dizimi | Sorguları Linear’ın API gezgininde doğrulayın |
| Eksik sorunlar | Takım erişimi kısıtlı | API anahtarı sahibinin hedef takımlara erişimi olduğundan emin olun |
| Webhook tetiklenmiyor | Yanlış URL veya devre dışı | Webhook durumunu Linear Settings > API > Webhooks’tan kontrol edin |
| Sayfalama eksik | `after` imleci eksik | Sayfalama döngüsünün `hasNextPage` false olana kadar çalıştığından emin olun |

### Hata Ayıklama Modu

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

### Bağlantı Testi

```bash
tajo connectors test linear
# ✓ GraphQL API bağlantısı başarılı
# ✓ Çalışma alanı erişimi doğrulandı
# ✓ Takım listesi okunabilir
# ✓ Sorun sorgusu çalışır durumda
# ✓ Webhook kaydı kullanılabilir
```

## En İyi Uygulamalar

1. **Gerçek zamanlı için webhook kullanın** - Sorun değişiklikleri için yoklama yerine webhook’ları kaydedin
2. **Takıma göre filtreleyin** - API kullanımını azaltmak için yalnızca ilgili takımların sorunlarını senkronize edin
3. **GraphQL sorgularını optimize edin** - Karmaşıklık sınırları içinde kalmak için yalnızca gerekli alanları isteyin
4. **Etiketleri segmentlere eşleyin** - Brevo kişi segmentasyonunu yönlendirmek için Linear etiketlerini kullanın
5. **Sayfalamayı yönetin** - Eksiksiz veri için her zaman `hasNextPage` değerini kontrol edin ve `endCursor` kullanın
6. **Webhook imzalarını doğrulayın** - `Linear-Signature` başlığını her zaman doğrulayın

## Güvenlik

- **API Anahtarı Kimlik Doğrulaması** - Çalışma alanına kapsamlandırılmış kişisel anahtarlar
- **OAuth 2.0** - Çoklu çalışma alanı entegrasyonları için güvenli yetkilendirme akışı
- **Yalnızca HTTPS** - Tüm API iletişimi TLS 1.2+ ile şifrelenir
- **Webhook İmzaları** - HMAC tabanlı imza doğrulama
- **Şifreli Depolama** - API anahtarları Tajo’da şifreli olarak saklanır
- **SOC 2 Uyumluluğu** - Linear platformu SOC 2 Type II sertifikalıdır

## İlgili Kaynaklar

- [GitHub Bağlayıcısı](https://tajo.io/tr/docs/connectors/custom/github)
- [Jira Bağlayıcısı](https://tajo.io/tr/docs/connectors/custom/jira)
- [Notion Bağlayıcısı](https://tajo.io/tr/docs/connectors/custom/notion)
- [Brevo Kişiler API](https://tajo.io/tr/docs/contact-management)
