---
title: "GitHub konektor"
description: "Kompletný sprievodca integráciou GitHub na synchronizáciu udalostí repozitárov, issues, pull requestov a aktivity vývojárov s Brevo cez Tajo."
url: https://tajo.io/sk/docs/connectors/custom/github/
markdown: https://tajo.io/sk/docs/connectors/custom/github.md
lang: sk-SK
robots: noindex
---

Požiadajte o skorý prístup

Zadajte svoje meno a pracovnú e-mailovú adresu. Pošleme vám odkaz na potvrdenie žiadosti o prístup k Tajo.

# GitHub konektor

Stav konektora: Plánované Zatiaľ nevytvorené. Tajo tento konektor dnes neprevádzkuje.

| Zdrojové pole | Cieľové pole | Ukážková hodnota |
| --- | --- | --- |
| `record.id` | `source_id` | `record_1042` |
| `record.updated_at` | `updated_at` | `2026-10-18T08:00:00Z` |
| `record.value` | `value` | `sample_value` |

Prepoj svoje GitHub repozitáre s Brevo pre sledovanie zapojenia vývojárov, workflowy notifikácií o vydaniach a monitorovanie aktivity komunity cez Tajo.

## Prehľad

| Vlastnosť | Hodnota |
| --- | --- |
| **Platforma** | GitHub |
| **Kategória** | Vlastná |
| **Zložitosť nastavenia** | Stredná |
| **Oficiálna integrácia** | Nie |
| **Synchronizované dáta** | Udalosti, Používatelia, Repozitáre |
| **Typ API** | REST API, GraphQL API |
| **Autentifikácia** | GitHub App / Personal Access Token / OAuth 2.0 |
| **Base URL** | `https://api.github.com` |
| **Verzia API** | `2022-11-28` (verzovanie cez hlavičky) |

## Funkcie

- **Sledovanie issues a PR** - Synchronizuj udalosti issues a pull requestov do časových osí kontaktov v Brevo
- **Notifikácie o vydaniach** - Spúšťaj kampane Brevo pri nových vydaniach repozitárov
- **Synchronizácia prispievateľov** - Namapuj GitHub prispievateľov na kontakty Brevo pre zapojenie komunity
- **Sledovanie hviezdičiek a forkov** - Sleduj metriky obľúbenosti repozitárov
- **Preposielanie webhook udalostí** - Preposielaj GitHub udalosti do automatizácií Brevo
- **Katalóg repozitárov** - Synchronizuj metadáta repozitárov ako položky katalógu Brevo

## Predpoklady

Predtým, než začneš, uisti sa, že máš:

1. GitHub účet s prístupom k cieľovým repozitárom
2. GitHub App alebo Personal Access Token (odporúča sa jemno-zrnitý)
3. Admin prístup k repozitárom pre konfiguráciu webhookov
4. Brevo účet s API prístupom
5. Tajo účet s aktívnym predplatným

## Autentifikácia

GitHub podporuje viacero metód autentifikácie. Tajo odporúča použitie GitHub Apps pre prístup na úrovni organizácie.

### Možnosť 1: GitHub App (odporúčané)

1. Prejdi na **Settings** > **Developer settings** > **GitHub Apps**
2. Klikni na **New GitHub App**
3. Nakonfiguruj aplikáciu s týmito oprávneniami:

```
Repository permissions:
  Issues: Read
  Pull requests: Read
  Contents: Read
  Metadata: Read

Organization permissions:
  Members: Read

Subscribe to events:
  Issues
  Pull request
  Push
  Release
  Star
  Fork
```

### Možnosť 2: Jemno-zrnitý Personal Access Token

1. Choď na **Settings** > **Developer settings** > **Personal access tokens** > **Fine-grained tokens**
2. Klikni na **Generate new token**
3. Vyber cieľové repozitáre
4. Udeľ tieto oprávnenia:

```
Repository access: Selected repositories
Permissions:
  Issues: Read-only
  Pull requests: Read-only
  Contents: Read-only
  Metadata: Read-only
```

Bezpečnosť tokenu

Jemno-zrnitý tokeny majú dátum vypršania. Nastav rotáciu tokenov pred vypršaním. Inštalačné tokeny GitHub App sa automaticky obnovujú a sú preferované pre produkčné použitie.

### Pripojenie k Tajo

```bash
# Using GitHub App
tajo connectors install github \
  --app-id $GITHUB_APP_ID \
  --private-key-path ./github-app-key.pem \
  --installation-id $GITHUB_INSTALLATION_ID

# Using Personal Access Token
tajo connectors install github \
  --token $GITHUB_TOKEN
```

## Konfigurácia

### Základné nastavenie

```yaml
connectors:
  github:
    enabled: true
    auth_type: "github_app"  # or "token"

    repositories:
      - owner/repo-1
      - owner/repo-2

    sync:
      issues: true
      pull_requests: true
      releases: true
      contributors: true
      stars: true

    lists:
      contributors: 20
      stargazers: 21
```

### Mapovanie polí

Namapuj dáta používateľov GitHub na atribúty kontaktov v Brevo:

```yaml
field_mapping:
  # Standard fields
  login: GITHUB_USERNAME
  email: email
  name: FIRSTNAME

  # Developer metrics
  contributions: GITHUB_CONTRIBUTIONS
  repositories_count: GITHUB_REPOS
  followers: GITHUB_FOLLOWERS
  created_at: GITHUB_JOINED

  # Custom attributes
  company: COMPANY
  location: LOCATION
  bio: GITHUB_BIO
```

## API endpointy

Tajo sa integruje s nasledujúcimi endpointmi GitHub REST API:

| Endpoint | Metóda | Účel |
| --- | --- | --- |
| `/repos/{owner}/{repo}/issues` | GET | Zoznam issues repozitára |
| `/repos/{owner}/{repo}/pulls` | GET | Zoznam pull requestov |
| `/repos/{owner}/{repo}/releases` | GET | Zoznam vydaní |
| `/repos/{owner}/{repo}/contributors` | GET | Zoznam prispievateľov |
| `/repos/{owner}/{repo}/stargazers` | GET | Zoznam používateľov hviezdičiek |
| `/repos/{owner}/{repo}/forks` | GET | Zoznam forkov |
| `/repos/{owner}/{repo}/events` | GET | Zoznam udalostí repozitára |
| `/users/{username}` | GET | Profil používateľa |
| `/orgs/{org}/members` | GET | Zoznam členov organizácie |
| `/repos/{owner}/{repo}/hooks` | POST | Vytvorenie webhooku |

## Ukážky kódu

### Inicializácia konektora

```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('github', {
  appId: process.env.GITHUB_APP_ID,
  privateKey: process.env.GITHUB_PRIVATE_KEY,
  installationId: process.env.GITHUB_INSTALLATION_ID
});
```

### Synchronizácia prispievateľov do Brevo

```javascript
await tajo.connectors.sync('github', {
  type: 'full',
  resources: ['contributors'],
  repositories: ['owner/repo-1', 'owner/repo-2']
});

const status = await tajo.connectors.status('github');
console.log(status);
// {
//   connected: true,
//   lastSync: '2024-03-15T11:00:00Z',
//   contributorsCount: 245,
//   issuesTracked: 1890,
//   releasesTracked: 34
// }
```

### Spracovanie webhook udalostí

```javascript
app.post('/webhooks/github', async (req, res) => {
  const signature = req.get('X-Hub-Signature-256');
  const event = req.get('X-GitHub-Event');

  // Verify webhook signature
  if (!verifyGitHubSignature(req.body, signature)) {
    return res.status(401).send('Unauthorized');
  }

  await tajo.connectors.handleWebhook('github', {
    event,
    payload: req.body
  });

  res.status(200).send('OK');
});
```

### Spustenie kampane pri vydaní

```javascript
// Listen for new releases and trigger Brevo campaign
tajo.connectors.on('github', 'release.published', async (event) => {
  await tajo.campaigns.trigger('release-announcement', {
    listId: 21,
    params: {
      version: event.release.tag_name,
      release_notes: event.release.body,
      download_url: event.release.html_url
    }
  });
});
```

## Obmedzenia rýchlosti

GitHub uplatňuje obmedzenia rýchlosti podľa metódy autentifikácie:

| Autentifikácia | Primárny limit | Search API |
| --- | --- | --- |
| **Bez autentifikácie** | 60 požiadaviek/hodinu | 10 požiadaviek/minútu |
| **Personal Access Token** | 5 000 požiadaviek/hodinu | 30 požiadaviek/minútu |
| **GitHub App (inštalácia)** | 5 000 požiadaviek/hodinu | 30 požiadaviek/minútu |
| **GitHub App (user-to-server)** | 5 000 požiadaviek/hodinu | 30 požiadaviek/minútu |

Podmienené požiadavky

Tajo používa podmienené požiadavky (hlavičky `If-None-Match` / `If-Modified-Since`) na zníženie spotreby API. Odpovede s `304 Not Modified` sa nepočítajú do limitov.

Ďalšie limity:

- **Sekundárne rate limity**: Nie viac ako 100 súbežných požiadaviek. Nie viac ako 900 bodov za minútu pre REST API endpointy.
- **GraphQL**: 5 000 bodov za hodinu (cena dopytu sa líši podľa zložitosti).

## Riešenie problémov

### Bežné problémy

| Problém | Príčina | Riešenie |
| --- | --- | --- |
| 401 Unauthorized | Vypršaný token alebo nesprávne prihlasovacie údaje | Znovu vygeneruj token alebo preinštaluj GitHub App |
| 403 Forbidden | Nedostatočné oprávnenia | Skontroluj scopes tokenu alebo oprávnenia App |
| 404 Not Found | Súkromný repozitár bez prístupu | Udeľ prístup k repozitáru tokenu alebo App |
| Prekročenie limitu | Príliš veľa API volaní | Povol podmienené požiadavky a zredukuj frekvenciu synchronizácie |
| Webhooky nie sú prijímané | Nesprávna URL alebo firewall | Overte, že URL webhookov je verejne dostupná |

### Debug režim

```yaml
connectors:
  github:
    debug: true
    log_level: verbose
    log_webhooks: true
```

### Test pripojenia

```bash
tajo connectors test github
# ✓ API authentication successful
# ✓ Repository access verified
# ✓ Issue data readable
# ✓ Webhook delivery active
# ✓ Rate limit healthy (4,850/5,000 remaining)
```

## Odporúčané postupy

1. **Použi GitHub Apps namiesto PAT** - GitHub Apps poskytujú jemné oprávnenia a automaticky sa obnovujúce tokeny
2. **Povol tajomstvá webhookov** - Vždy overuj podpisy webhookov pomocou HMAC-SHA256
3. **Použi podmienené požiadavky** - Využi ETags na vyhnutie sa plytvania kvótou rate limitu
4. **Stránkuj veľké odpovede** - GitHub vracia max 100 položiek na stránku; iteruj pomocou hlavičiek `Link`
5. **Synchronizuj v čase nízkej aktivity** - Plánuj plné synchronizácie mimo špičkových hodín vývoja
6. **Sleduj hlavičky rate limitu** - Kontroluj `X-RateLimit-Remaining` na proaktívne throttlovanie

## Bezpečnosť

- **GitHub App autentifikácia** - JWT na základe RSA kľúčov s krátkodobo platiacimi inštalačnými tokenmi
- **Podpisy webhookov** - Overenie podpisu HMAC-SHA256 na všetkých webhook payloadoch
- **Jemno-zrnitý tokeny** - Obmedzené na konkrétne repozitáre a oprávnenia
- **Iba HTTPS** - Všetka API komunikácia šifrovaná cez TLS 1.2+
- **Šifrované úložisko** - Súkromné kľúče a tokeny šifrované v pokoji v Tajo
- **Vypršanie tokenov** - Jemno-zrnitý tokeny automaticky vypršavajú; nastav upozornenia na rotáciu

## Súvisiace zdroje

- [Jira konektor](https://tajo.io/sk/docs/connectors/custom/jira)
- [Linear konektor](https://tajo.io/sk/docs/connectors/custom/linear)
- [Notion konektor](https://tajo.io/sk/docs/connectors/custom/notion)
- [Brevo Contacts API](https://tajo.io/sk/docs/contact-management)
