---
title: "Σύνδεσμος Linear"
description: "Πλήρης οδηγός ενσωμάτωσης Linear για συγχρονισμό ζητημάτων, έργων και δεδομένων δραστηριότητας ομάδας με το Brevo μέσω Tajo."
url: https://tajo.io/gr/docs/connectors/custom/linear/
markdown: https://tajo.io/gr/docs/connectors/custom/linear.md
lang: el-GR
robots: noindex
---

Ζητήστε πρώιμη πρόσβαση

Συμπληρώστε το μικρό σας όνομα και την επαγγελματική διεύθυνση email. Θα σας στείλουμε σύνδεσμο για να επιβεβαιώσετε το αίτημα πρόσβασης στο 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 σας με το Brevo για παρακολούθηση ζητημάτων που αντιμετωπίζουν πελάτες, ειδοποιήσεις ενημερώσεων προϊόντος και καμπάνιες ορόσημων ανάπτυξης μέσω Tajo.

## Επισκόπηση

| Ιδιότητα | Τιμή |
| --- | --- |
| **Πλατφόρμα** | Linear |
| **Κατηγορία** | Προσαρμοσμένο |
| **Πολυπλοκότητα Ρύθμισης** | Εύκολη |
| **Επίσημη Ενσωμάτωση** | Όχι |
| **Δεδομένα που Συγχρονίζονται** | Ζητήματα, Έργα, Χρήστες, Εκδηλώσεις |
| **Τύπος API** | GraphQL API |
| **Πιστοποίηση** | OAuth 2.0 / Personal API Key |
| **Βασικό URL** | `https://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_`)

```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. Δημιουργήστε εφαρμογή OAuth στο [linear.app/settings/api/applications](https://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

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

## Διαμόρφωση

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

```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 σε χαρακτηριστικά 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
```

## Endpoints API

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

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

### Παράδειγμα Ερωτήματος GraphQL

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

### Χειρισμός Webhooks Linear

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

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

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

```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. **Χρησιμοποιήστε 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

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

- [Σύνδεσμος GitHub](https://tajo.io/gr/docs/connectors/custom/github)
- [Σύνδεσμος Jira](https://tajo.io/gr/docs/connectors/custom/jira)
- [Σύνδεσμος Notion](https://tajo.io/gr/docs/connectors/custom/notion)
- [API Επαφών Brevo](https://tajo.io/gr/docs/contact-management)
