Jira konektor
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š:
- Jira Cloud instancu (Jira Software, Jira Service Management ili Jira Work Management)
- Admin pristup za kreiranje OAuth aplikacija ili generisanje API tokena
- Atlassian email naloga povezan sa tvojim API tokenom
- Brevo nalog sa API pristupom
- Tajo nalog sa aktivnom pretplatom
Autentifikacija
Jira Cloud podržava više metoda autentifikacije.
Opcija 1: OAuth 2.0 (3LO) - Preporučeno
- Idi na developer.atlassian.com
- Klikni Create > OAuth 2.0 integration
- Konfiguriši callback URL:
https://app.tajo.io/callbacks/jira - Dodaj ove skopove:
read:jira-workread:jira-userwrite:jira-workread:meStruktura API URL-a za OAuth 2.0:
https://api.atlassian.com/ex/jira/{cloudId}/rest/api/3/{resource}Opcija 2: API Token (Basic Auth)
- Idi na id.atlassian.com/manage/api-tokens
- Klikni Create API token
- Nazovi ga “Tajo Integration”
# Basic Auth: email as username, API token as passwordcurl -X GET "https://your-domain.atlassian.net/rest/api/3/myself" \ -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
# Using OAuth 2.0tajo connectors install jira \ --client-id $JIRA_CLIENT_ID \ --client-secret $JIRA_CLIENT_SECRET \ --cloud-id $JIRA_CLOUD_ID
# Using API Tokentajo connectors install jira \ --site-url your-domain.atlassian.net \ --api-token $JIRA_API_TOKENKonfiguracija
Osnovno podešavanje
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 RequestMapiranje polja
Mapiranje Jira polja problema i korisnika na Brevo atribute:
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_RESOLUTIONAPI 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
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
// Sync Jira support issues to Brevo contactsawait 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
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
// Find all issues reported by a specific customerconst issues = await tajo.connectors.query('jira', { 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
connectors: jira: debug: true log_level: verbose log_api_calls: trueTestiraj vezu
tajo connectors test jira# ✓ API authentication successful# ✓ Project access verified# ✓ Issue search operational# ✓ User lookup available# ✓ Webhook registration activeNajbolje prakse
- Koristi OAuth 2.0 za produkciju - Izbegava zavisnost od individualnih korisničkih naloga
- Filtriraj sa JQL - Sinhronizuj samo relevantne probleme da smanjiš API pozive
- Koristi webhook-ove za real-time - Izbegavaj ispitivanje; registruj webhook-ove za promene problema
- Poštuj ADF format - Jira v3 koristi Atlassian Document Format za polja sa bogatim tekstom
- Mapiraj projekat na listu - Kreiraj posebne Brevo liste po Jira projektu
- 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