Jira-connector
Verbind je Jira Cloud-instantie met Brevo voor klantgerichte issue-tracking, zichtbaarheid van supporttickets en notificaties over projectmijlpalen via Tajo.
Overzicht
| Eigenschap | Waarde |
|---|---|
| Platform | Jira Cloud |
| Categorie | Custom |
| Setupcomplexiteit | Gemiddeld |
| Officiële integratie | Nee |
| Gesynchroniseerde data | Issues, Projecten, Gebruikers, Events |
| API-type | REST API v3 |
| Authenticatie | OAuth 2.0 (3LO) / API Token (Basic Auth) |
| Base URL | https://your-domain.atlassian.net/rest/api/3/ |
Functies
- Issue-event-sync - Stuur events voor issue creation, updates en resolves door naar Brevo-contacttimelines
- Klantticket-tracking - Koppel Jira-issues aan Brevo-contacten voor supportzichtbaarheid
- Projectmijlpaal-alerts - Trigger Brevo-campagnes bij versiereleases en sprintafrondingen
- Teamcapaciteitsdata - Synchroniseer workloadmetrics voor operationele dashboards
- Statuswijziging-events - Track issue-workflowovergangen als Brevo-events
- Commentsynchronisatie - Stuur klantgerichte comments door naar Brevo-activiteitslogs
Vereisten
Voordat je begint, zorg dat je beschikt over:
- Een Jira Cloud-instantie (Jira Software, Jira Service Management of Jira Work Management)
- Admin-toegang om OAuth-apps aan te maken of API-tokens te genereren
- Het Atlassian-accountemailadres dat is gekoppeld aan je API-token
- Een Brevo-account met API-toegang
- Een Tajo-account met een actief abonnement
Authenticatie
Jira Cloud ondersteunt meerdere authenticatiemethoden.
Optie 1: OAuth 2.0 (3LO) - aanbevolen
- Ga naar developer.atlassian.com
- Klik op Create > OAuth 2.0 integration
- Configureer de callback-URL:
https://app.tajo.io/callbacks/jira - Voeg deze scopes toe:
read:jira-workread:jira-userwrite:jira-workread:meDe API-URL-structuur voor OAuth 2.0:
https://api.atlassian.com/ex/jira/{cloudId}/rest/api/3/{resource}Optie 2: API Token (Basic Auth)
- Ga naar id.atlassian.com/manage/api-tokens
- Klik op Create API token
- Noem het “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"API-tokenbeperkingen
API-tokens zijn gekoppeld aan individuele gebruikersaccounts. Als de gebruiker wordt gedeactiveerd, breekt de integratie. Gebruik OAuth 2.0 voor productiedeployments.
Verbinden met 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_TOKENConfiguratie
Basisinstelling
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 RequestVeldmapping
Map Jira-issue- en gebruikersvelden naar Brevo-attributen:
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 integreert met de volgende Jira Cloud REST API v3-endpoints:
| Endpoint | Method | Doel |
|---|---|---|
/rest/api/3/search | POST | Zoek issues met JQL |
/rest/api/3/issue/{issueIdOrKey} | GET | Haal issuedetails op |
/rest/api/3/issue | POST | Maak een issue aan |
/rest/api/3/project | GET | Lijst alle projecten |
/rest/api/3/project/{projectIdOrKey} | GET | Haal projectdetails op |
/rest/api/3/user/search | GET | Zoek gebruikers |
/rest/api/3/myself | GET | Haal huidige gebruiker op |
/rest/api/3/issue/{issueIdOrKey}/comment | GET | Haal issue-comments op |
/rest/api/3/webhook | POST | Registreer webhooks |
/rest/api/3/status | GET | Haal alle statussen op |
/rest/api/3/priority | GET | Haal alle prioriteiten op |
Codevoorbeelden
Connector initialiseren
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});Support-issues synchroniseren
// 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// }Jira-webhooks afhandelen
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');});Issues zoeken per klant
// 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 hanteert rate limits om platformstabiliteit te waarborgen:
| Context | Rate limit |
|---|---|
| REST API | ~100 requests per 10 seconden per gebruiker |
| Gelijktijdige requests | 10 gelijktijdige long-running requests |
| Bulkoperaties | Varieert per endpoint |
Paginering
Jira gebruikt offset-gebaseerde paginering met de parameters startAt en maxResults. De default pagegrootte is 50, maximum is 100. Tajo handelt paginering automatisch af.
Jira retourneert een 429 Too Many Requests-response wanneer rate limits worden overschreden, met een Retry-After-header die aangeeft wanneer je opnieuw mag proberen.
Probleemoplossing
Veelvoorkomende problemen
| Probleem | Oorzaak | Oplossing |
|---|---|---|
| 401 Unauthorized | Ongeldig token of verlopen OAuth | Ververs OAuth-token of regenereer API-token |
| 403 Forbidden | Onvoldoende rechten | Controleer of de gebruiker toegang heeft tot het project |
| JQL-fouten | Ongeldige querysyntax | Valideer JQL eerst in de issue-zoekopdracht van Jira |
| Webhook niet ontvangen | Firewall blokkeert | Zorg dat de webhook-URL publiek bereikbaar is |
| Ontbrekende velden | Veld niet in response | Voeg veld toe aan de fields-parameter of gebruik expand |
Debugmodus
connectors: jira: debug: true log_level: verbose log_api_calls: trueVerbinding testen
tajo connectors test jira# ✓ API authentication successful# ✓ Project access verified# ✓ Issue search operational# ✓ User lookup available# ✓ Webhook registration activeBest practices
- Gebruik OAuth 2.0 voor productie - Vermijdt afhankelijkheid van individuele gebruikersaccounts
- Filter met JQL - Synchroniseer alleen relevante issues om API-calls te beperken
- Gebruik webhooks voor realtime - Vermijd polling; registreer webhooks voor issuewijzigingen
- Respecteer ADF-format - Jira v3 gebruikt Atlassian Document Format voor rich text-velden
- Map project-naar-lijst - Maak aparte Brevo-lijsten per Jira-project
- Handel paginering af - Doorloop altijd alle pagina’s voor volledige data
Beveiliging
- OAuth 2.0 (3LO) - Veilige token-gebaseerde authenticatie met refresh tokens
- API Token + Basic Auth - Base64-gecodeerde credentials over HTTPS
- Alleen HTTPS - Alle API-communicatie is versleuteld via TLS 1.2+
- Scoped Access - OAuth-scopes beperken API-toegang tot benodigde resources
- Atlassian Cloud Security - SOC 2 Type II-gecertificeerde infrastructuur
- Encrypted storage - Credentials versleuteld opgeslagen bij Tajo