---
title: "Jira konektor"
description: "Kompletan vodič za Jira Cloud integraciju za sinhronizaciju problema, projekata i podataka o aktivnosti tima sa Brevo putem Tajo."
url: https://tajo.io/sr/docs/connectors/custom/jira/
markdown: https://tajo.io/sr/docs/connectors/custom/jira.md
lang: sr-Latn-RS
robots: noindex
---

Zatražite rani pristup

Unesite ime i poslovnu adresu e-pošte. Poslaćemo vam vezu za potvrdu zahteva za pristup Taju.

# Jira konektor

Status konektora: Planirano Još nije izrađeno. Tajo danas ne pokreće ovaj konektor.

| Izvorno polje | Odredišno polje | Primer vrednosti |
| --- | --- | --- |
| `record.id` | `source_id` | `record_1042` |
| `record.updated_at` | `updated_at` | `2026-10-18T08:00:00Z` |
| `record.value` | `value` | `sample_value` |

Poveži svoju Jira Cloud instancu sa Brevo za praćenje problema okrenuto ka kupcima, vidljivost tiketa podrške i obaveštenja o prekretnicama projekta putem Tajo.

## Pregled

| Svojstvo | Vrednost |
| --- | --- |
| **Platforma** | Jira Cloud |
| **Kategorija** | Prilagođeno |
| **Složenost podešavanja** | Srednje |
| **Zvanična integracija** | Ne |
| **Sinhronizovani podaci** | Problemi, Projekti, Korisnici, Događaji |
| **Tip API-ja** | REST API v3 |
| **Autentifikacija** | OAuth 2.0 (3LO) / API Token (Basic Auth) |
| **Osnovni URL** | `https://your-domain.atlassian.net/rest/api/3/` |

## Karakteristike

- **Sinhronizacija događaja problema** - Prosleđivanje događaja kreiranja, ažuriranja i rešavanja problema na Brevo vremenske linije kontakata
- **Praćenje tiketa kupaca** - Povezivanje Jira problema sa Brevo kontaktima za vidljivost podrške
- **Upozorenja o prekretnicama projekta** - Pokretanje Brevo kampanja pri objavljivanju verzija i završetku sprintova
- **Podaci o kapacitetu tima** - Sinhronizacija metrika radnog opterećenja za operativne dashboard-ove
- **Događaji promena statusa** - Praćenje prelaza toka problema kao Brevo događaja
- **Sinhronizacija komentara** - Prosleđivanje komentara okrenuto ka kupcima u Brevo logove aktivnosti

## Preduslovi

Pre nego što započneš, proveri da imaš:

1. Jira Cloud instancu (Jira Software, Jira Service Management ili Jira Work Management)
2. Admin pristup za kreiranje OAuth aplikacija ili generisanje API tokena
3. Atlassian email naloga povezan sa tvojim API tokenom
4. Brevo nalog sa API pristupom
5. Tajo nalog sa aktivnom pretplatom

## Autentifikacija

Jira Cloud podržava više metoda autentifikacije.

### Opcija 1: OAuth 2.0 (3LO) - Preporučeno

1. Idi na [developer.atlassian.com](https://developer.atlassian.com/console/myapps/)
2. Klikni **Create** > **OAuth 2.0 integration**
3. Konfiguriši callback URL: `https://app.tajo.io/callbacks/jira`
4. Dodaj ove skopove:

```
read:jira-work
read:jira-user
write:jira-work
read:me
```

Struktura API URL-a za OAuth 2.0:

```
https://api.atlassian.com/ex/jira/{cloudId}/rest/api/3/{resource}
```

### Opcija 2: API Token (Basic Auth)

1. Idi na [id.atlassian.com/manage/api-tokens](https://id.atlassian.com/manage/api-tokens)
2. Klikni **Create API token**
3. Nazovi ga “Tajo Integration”

```bash
# Basic Auth: email as username, API token as password
curl -X GET "https://your-domain.atlassian.net/rest/api/3/myself" \
  -u "email@example.com:$JIRA_API_TOKEN" \
  -H "Accept: application/json"
```

Ograničenja API tokena

API tokeni su vezani za individualne korisničke naloge. Ako se korisnik deaktivira, integracija se prekida. Koristi OAuth 2.0 za produkciona postavljanja.

### Povezivanje sa Tajo

```bash
# Using OAuth 2.0
tajo connectors install jira \
  --client-id $JIRA_CLIENT_ID \
  --client-secret $JIRA_CLIENT_SECRET \
  --cloud-id $JIRA_CLOUD_ID

# Using API Token
tajo connectors install jira \
  --site-url your-domain.atlassian.net \
  --email admin@example.com \
  --api-token $JIRA_API_TOKEN
```

## Konfiguracija

### Osnovno podešavanje

```yaml
connectors:
  jira:
    enabled: true
    site_url: "your-domain.atlassian.net"
    auth_type: "oauth2"  # or "basic"

    sync:
      issues: true
      projects: true
      users: true
      comments: true
      worklogs: false

    projects:
      - key: "SUPPORT"
        sync_to_list: 22
      - key: "PRODUCT"
        sync_to_list: 23

    issue_types:
      - Bug
      - Story
      - Task
      - Support Request
```

### Mapiranje polja

Mapiranje Jira polja problema i korisnika na Brevo atribute:

```yaml
field_mapping:
  # User fields
  accountId: JIRA_ACCOUNT_ID
  emailAddress: email
  displayName: FIRSTNAME

  # Issue fields mapped to contact events
  issue_key: LAST_TICKET_KEY
  issue_status: LAST_TICKET_STATUS
  issue_priority: LAST_TICKET_PRIORITY
  issue_created: LAST_TICKET_DATE
  resolution: LAST_TICKET_RESOLUTION
```

## API endpointi

Tajo se integriše sa sledećim Jira Cloud REST API v3 endpointima:

| Endpoint | Metoda | Svrha |
| --- | --- | --- |
| `/rest/api/3/search` | POST | Pretraga problema korišćenjem JQL |
| `/rest/api/3/issue/{issueIdOrKey}` | GET | Dohvatanje detalja problema |
| `/rest/api/3/issue` | POST | Kreiranje problema |
| `/rest/api/3/project` | GET | Listanje svih projekata |
| `/rest/api/3/project/{projectIdOrKey}` | GET | Dohvatanje detalja projekta |
| `/rest/api/3/user/search` | GET | Pretraga korisnika |
| `/rest/api/3/myself` | GET | Dohvatanje trenutnog korisnika |
| `/rest/api/3/issue/{issueIdOrKey}/comment` | GET | Dohvatanje komentara problema |
| `/rest/api/3/webhook` | POST | Registracija webhook-ova |
| `/rest/api/3/status` | GET | Dohvatanje svih statusa |
| `/rest/api/3/priority` | GET | Dohvatanje svih prioriteta |

## Primeri koda

### Inicijalizacija 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('jira', {
  clientId: process.env.JIRA_CLIENT_ID,
  clientSecret: process.env.JIRA_CLIENT_SECRET,
  cloudId: process.env.JIRA_CLOUD_ID
});
```

### Sinhronizacija tiketa podrške

```javascript
// Sync Jira support issues to Brevo contacts
await tajo.connectors.sync('jira', {
  type: 'incremental',
  resources: ['issues'],
  jql: 'project = SUPPORT AND updated >= -24h',
  batchSize: 50
});

const status = await tajo.connectors.status('jira');
console.log(status);
// {
//   connected: true,
//   lastSync: '2024-03-15T12:00:00Z',
//   issuesTracked: 4560,
//   projectsMonitored: 3,
//   usersLinked: 890
// }
```

### Obrada Jira webhook-ova

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

  await tajo.connectors.handleWebhook('jira', {
    event: event.webhookEvent,
    payload: {
      issueKey: event.issue?.key,
      issueType: event.issue?.fields?.issuetype?.name,
      status: event.issue?.fields?.status?.name,
      reporter: event.issue?.fields?.reporter?.emailAddress,
      assignee: event.issue?.fields?.assignee?.emailAddress
    }
  });

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

### Pretraga problema po kupcu

```javascript
// Find all issues reported by a specific customer
const issues = await tajo.connectors.query('jira', {
  jql: 'reporter = "customer@example.com" ORDER BY created DESC',
  maxResults: 20,
  fields: ['summary', 'status', 'priority', 'created']
});
```

## Ograničenja brzine

Jira Cloud primenjuje ograničenja brzine za osiguranje stabilnosti platforme:

| Kontekst | Ograničenje brzine |
| --- | --- |
| **REST API** | ~100 zahteva na 10 sekundi po korisniku |
| **Istovremeni zahtevi** | 10 dugotrajnih istovremenih zahteva |
| **Bulk operacije** | Zavisi od endpointa |

Paginacija

Jira koristi paginaciju zasnovanu na offsetu sa parametrima `startAt` i `maxResults`. Podrazumevana veličina stranice je 50, maksimum je 100. Tajo automatski obrađuje paginaciju.

Jira vraća `429 Too Many Requests` odgovor kada se prekorače limiti brzine, sa `Retry-After` headerom koji označava kada pokušati ponovo.

## Rešavanje problema

### Česti problemi

| Problem | Uzrok | Rešenje |
| --- | --- | --- |
| 401 Unauthorized | Nevažeći token ili istekao OAuth | Osvježi OAuth token ili regeneriši API token |
| 403 Forbidden | Nedovoljne dozvole | Proveri da korisnik ima pristup traženom projektu |
| JQL greške | Nevažeća sintaksa upita | Validiraj JQL u Jira pretrazi problema prvo |
| Webhook nije primljen | Firewall blokira | Proveri da je URL webhook-a javno dostupan |
| Nedostaju polja | Polje nije u odgovoru | Dodaj polje u parametar `fields` ili koristi `expand` |

### Debug režim

```yaml
connectors:
  jira:
    debug: true
    log_level: verbose
    log_api_calls: true
```

### Testiraj vezu

```bash
tajo connectors test jira
# ✓ API authentication successful
# ✓ Project access verified
# ✓ Issue search operational
# ✓ User lookup available
# ✓ Webhook registration active
```

## Najbolje prakse

1. **Koristi OAuth 2.0 za produkciju** - Izbegava zavisnost od individualnih korisničkih naloga
2. **Filtriraj sa JQL** - Sinhronizuj samo relevantne probleme da smanjiš API pozive
3. **Koristi webhook-ove za real-time** - Izbegavaj ispitivanje; registruj webhook-ove za promene problema
4. **Poštuj ADF format** - Jira v3 koristi Atlassian Document Format za polja sa bogatim tekstom
5. **Mapiraj projekat na listu** - Kreiraj posebne Brevo liste po Jira projektu
6. **Obradi paginaciju** - Uvek iteriraj kroz sve stranice za kompletne podatke

## Bezbednost

- **OAuth 2.0 (3LO)** - Bezbedna autentifikacija zasnovana na tokenu sa refresh tokenima
- **API Token + Basic Auth** - Base64-kodovani akreditivi putem HTTPS
- **Samo HTTPS** - Sva API komunikacija enkriptovana putem TLS 1.2+
- **Skopovani pristup** - OAuth skopovi ograničavaju API pristup potrebnim resursima
- **Atlassian Cloud bezbednost** - SOC 2 Type II sertifikovana infrastruktura
- **Enkriptovano skladištenje** - Akreditivi enkriptovani u mirovanju u Tajo

## Povezani resursi

- [GitHub konektor](https://tajo.io/sr/docs/connectors/custom/github)
- [Linear konektor](https://tajo.io/sr/docs/connectors/custom/linear)
- [Gorgias konektor](https://tajo.io/sr/docs/connectors/support/gorgias)
- [Brevo Contacts API](https://tajo.io/sr/docs/contact-management)
