Jira Connector
Forbind din Jira Cloud-instans med Brevo for kundevendt issue-sporing, synlighed af supporttickets og notifikationer om projektmilepæle gennem Tajo.
Oversigt
| Egenskab | Værdi |
|---|---|
| Platform | Jira Cloud |
| Kategori | Brugerdefineret |
| Opsætningskompleksitet | Moderat |
| Officiel integration | Nej |
| Synkroniserede data | Issues, projekter, brugere, hændelser |
| API-type | REST API v3 |
| Autentifikation | OAuth 2.0 (3LO) / API-token (Basic Auth) |
| Base-URL | https://your-domain.atlassian.net/rest/api/3/ |
Funktioner
- Synkronisering af issue-hændelser - Videresend issue-oprettelses-, opdaterings- og løsningshændelser til Brevo-kontakttidslinjer
- Sporing af kundetickets - Forbind Jira-issues med Brevo-kontakter for support-synlighed
- Alarmer ved projektmilepæle - Udløs Brevo-kampagner ved versionsudgivelser og sprint-afslutninger
- Team-kapacitetsdata - Synkronisér arbejdsbelastningsmetrikker til driftsdashboards
- Statusændringshændelser - Spor issue-workflow-overgange som Brevo-hændelser
- Kommentar-synkronisering - Videresend kundevendte kommentarer til Brevo-aktivitetslogs
Forudsætninger
Før du begynder, skal du sikre dig, at du har:
- En Jira Cloud-instans (Jira Software, Jira Service Management eller Jira Work Management)
- Admin-adgang til at oprette OAuth-apps eller generere API-tokens
- Atlassian-konto-e-mailen knyttet til dit API-token
- En Brevo-konto med API-adgang
- En Tajo-konto med aktivt abonnement
Autentifikation
Jira Cloud understøtter flere autentifikationsmetoder.
Mulighed 1: OAuth 2.0 (3LO) - anbefalet
- Gå til developer.atlassian.com
- Klik på Create > OAuth 2.0 integration
- Konfigurér callback-URL:
https://app.tajo.io/callbacks/jira - Tilføj disse scopes:
read:jira-workread:jira-userwrite:jira-workread:meAPI-URL-strukturen for OAuth 2.0:
https://api.atlassian.com/ex/jira/{cloudId}/rest/api/3/{resource}Mulighed 2: API-token (Basic Auth)
- Gå til id.atlassian.com/manage/api-tokens
- Klik på Create API token
- Navngiv det “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"Begrænsninger for API-tokens
API-tokens er knyttet til individuelle brugerkonti. Hvis brugeren deaktiveres, går integrationen i stykker. Brug OAuth 2.0 til produktionsudrulninger.
Forbind til 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_TOKENKonfiguration
Grundlæggende opsætning
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 RequestFeltmapping
Kortlæg Jira-issue- og brugerfelter til Brevo-attributter:
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-endpoints
Tajo integrerer med følgende Jira Cloud REST API v3-endpoints:
| Endpoint | Metode | Formål |
|---|---|---|
/rest/api/3/search | POST | Søg i issues med JQL |
/rest/api/3/issue/{issueIdOrKey} | GET | Hent issue-detaljer |
/rest/api/3/issue | POST | Opret et issue |
/rest/api/3/project | GET | Vis alle projekter |
/rest/api/3/project/{projectIdOrKey} | GET | Hent projektdetaljer |
/rest/api/3/user/search | GET | Søg brugere |
/rest/api/3/myself | GET | Hent aktuel bruger |
/rest/api/3/issue/{issueIdOrKey}/comment | GET | Hent issue-kommentarer |
/rest/api/3/webhook | POST | Registrér webhooks |
/rest/api/3/status | GET | Hent alle statusser |
/rest/api/3/priority | GET | Hent alle prioriteter |
Kodeeksempler
Initialisér connector
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});Synkronisér support-issues
// 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// }Håndtér Jira-webhooks
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');});Søg issues efter kunde
// Find all issues reported by a specific customerconst issues = await tajo.connectors.query('jira', { maxResults: 20, fields: ['summary', 'status', 'priority', 'created']});Rate limits
Jira Cloud håndhæver rate limits for at sikre platformens stabilitet:
| Kontekst | Rate limit |
|---|---|
| REST API | ~100 anmodninger pr. 10 sekunder pr. bruger |
| Samtidige anmodninger | 10 samtidige langtkørende anmodninger |
| Bulk-operationer | Varierer efter endpoint |
Paginering
Jira bruger offset-baseret paginering med parametrene startAt og maxResults. Standardsidestørrelsen er 50, maksimalt 100. Tajo håndterer paginering automatisk.
Jira returnerer et 429 Too Many Requests-svar, når rate limits overskrides, med en Retry-After-header, der angiver, hvornår der skal forsøges igen.
Fejlfinding
Almindelige problemer
| Problem | Årsag | Løsning |
|---|---|---|
| 401 Unauthorized | Ugyldigt token eller udløbet OAuth | Opdatér OAuth-token eller regenerér API-token |
| 403 Forbidden | Utilstrækkelige tilladelser | Tjek, om brugeren har adgang til det ønskede projekt |
| JQL-fejl | Ugyldig forespørgselssyntaks | Validér JQL først i Jiras issue-søgning |
| Webhook ikke modtaget | Firewall blokerer | Sørg for, at webhook-URL er offentligt tilgængelig |
| Manglende felter | Felt ikke i svar | Tilføj felt til fields-parameter, eller brug expand |
Debug-tilstand
connectors: jira: debug: true log_level: verbose log_api_calls: trueTestforbindelse
tajo connectors test jira# ✓ API authentication successful# ✓ Project access verified# ✓ Issue search operational# ✓ User lookup available# ✓ Webhook registration activeBedste praksis
- Brug OAuth 2.0 til produktion - Undgår afhængighed af individuelle brugerkonti
- Filtrér med JQL - Synkronisér kun relevante issues for at reducere API-kald
- Brug webhooks til realtid - Undgå polling; registrér webhooks til issue-ændringer
- Respektér ADF-format - Jira v3 bruger Atlassian Document Format til rig tekst-felter
- Kortlæg projekt-til-liste - Opret separate Brevo-lister pr. Jira-projekt
- Håndtér paginering - Itérér altid gennem alle sider for komplette data
Sikkerhed
- OAuth 2.0 (3LO) - Sikker token-baseret autentifikation med refresh-tokens
- API-token + Basic Auth - Base64-kodede legitimationsoplysninger over HTTPS
- Kun HTTPS - Al API-kommunikation krypteres via TLS 1.2+
- Scopes adgang - OAuth-scopes begrænser API-adgang til nødvendige ressourcer
- Atlassian Cloud-sikkerhed - SOC 2 Type II-certificeret infrastruktur
- Krypteret opbevaring - Legitimationsoplysninger krypteres i hvile i Tajo