Konektor Jira
Połącz swoją instancję Jira Cloud z Brevo, aby śledzić zgłoszenia skierowane do klientów, zapewnić widoczność zgłoszeń pomocy technicznej i wysyłać powiadomienia o kamieniach milowych projektu przez Tajo.
Przegląd
| Właściwość | Wartość |
|---|---|
| Platforma | Jira Cloud |
| Kategoria | Niestandardowa |
| Poziom konfiguracji | Średni |
| Integracja oficjalna | Nie |
| Synchronizowane dane | Zgłoszenia, Projekty, Użytkownicy, Zdarzenia |
| Typ API | REST API v3 |
| Uwierzytelnianie | OAuth 2.0 (3LO) / Token API (Basic Auth) |
| Bazowy URL | https://your-domain.atlassian.net/rest/api/3/ |
Funkcje
- Synchronizacja zdarzeń zgłoszeń - Przekazuj zdarzenia tworzenia, aktualizacji i rozwiązywania zgłoszeń do osi czasu kontaktów Brevo
- Śledzenie zgłoszeń klientów - Łącz zgłoszenia Jira z kontaktami Brevo dla widoczności wsparcia
- Alerty o kamieniach milowych projektu - Wyzwalaj kampanie Brevo przy wydaniach wersji i zakończeniach sprintów
- Dane wydajności zespołu - Synchronizuj metryki obciążenia dla operacyjnych dashboardów
- Zdarzenia zmiany statusu - Śledź przejścia workflow zgłoszeń jako zdarzenia Brevo
- Synchronizacja komentarzy - Przekazuj komentarze skierowane do klientów do logów aktywności Brevo
Wymagania wstępne
Zanim zaczniesz, upewnij się, że masz:
- Instancję Jira Cloud (Jira Software, Jira Service Management lub Jira Work Management)
- Dostęp administratora do tworzenia aplikacji OAuth lub generowania tokenów API
- Adres e-mail konta Atlassian powiązany z tokenem API
- Konto Brevo z dostępem do API
- Konto Tajo z aktywną subskrypcją
Uwierzytelnianie
Jira Cloud obsługuje wiele metod uwierzytelniania.
Opcja 1: OAuth 2.0 (3LO) - zalecane
- Przejdź do developer.atlassian.com
- Kliknij Create > OAuth 2.0 integration
- Skonfiguruj URL zwrotny:
https://app.tajo.io/callbacks/jira - Dodaj te zakresy:
read:jira-workread:jira-userwrite:jira-workread:meStruktura URL API dla OAuth 2.0:
https://api.atlassian.com/ex/jira/{cloudId}/rest/api/3/{resource}Opcja 2: Token API (Basic Auth)
- Przejdź do id.atlassian.com/manage/api-tokens
- Kliknij Create API token
- Nazwij go „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"Ograniczenia tokenu API
Tokeny API są powiązane z indywidualnymi kontami użytkowników. Jeśli użytkownik zostanie dezaktywowany, integracja przestanie działać. Używaj OAuth 2.0 dla wdrożeń produkcyjnych.
Połączenie z 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_TOKENKonfiguracja
Podstawowa konfiguracja
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 RequestMapowanie pól
Mapuj pola zgłoszeń i użytkowników Jira na atrybuty Brevo:
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_RESOLUTIONEndpointy API
Tajo integruje się z następującymi endpointami Jira Cloud REST API v3:
| Endpoint | Metoda | Cel |
|---|---|---|
/rest/api/3/search | POST | Wyszukaj zgłoszenia używając JQL |
/rest/api/3/issue/{issueIdOrKey} | GET | Pobierz szczegóły zgłoszenia |
/rest/api/3/issue | POST | Utwórz zgłoszenie |
/rest/api/3/project | GET | Lista wszystkich projektów |
/rest/api/3/project/{projectIdOrKey} | GET | Pobierz szczegóły projektu |
/rest/api/3/user/search | GET | Wyszukaj użytkowników |
/rest/api/3/myself | GET | Pobierz bieżącego użytkownika |
/rest/api/3/issue/{issueIdOrKey}/comment | GET | Pobierz komentarze do zgłoszenia |
/rest/api/3/webhook | POST | Zarejestruj webhooki |
/rest/api/3/status | GET | Pobierz wszystkie statusy |
/rest/api/3/priority | GET | Pobierz wszystkie priorytety |
Przykłady kodu
Inicjalizacja 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});Synchronizuj zgłoszenia pomocy technicznej
// 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// }Obsługa webhooków Jira
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');});Wyszukiwanie zgłoszeń według klienta
// Find all issues reported by a specific customerconst issues = await tajo.connectors.query('jira', { maxResults: 20, fields: ['summary', 'status', 'priority', 'created']});Limity API
Jira Cloud stosuje limity szybkości dla zapewnienia stabilności platformy:
| Kontekst | Limit |
|---|---|
| REST API | ~100 żądań na 10 sekund na użytkownika |
| Równoczesne żądania | 10 długotrwałych żądań równocześnie |
| Operacje zbiorcze | Różne w zależności od endpointu |
Paginacja
Jira używa paginacji opartej na przesunięciu z parametrami startAt i maxResults. Domyślny rozmiar strony to 50, maksymalny to 100. Tajo obsługuje paginację automatycznie.
Jira zwraca odpowiedź 429 Too Many Requests po przekroczeniu limitów szybkości, z nagłówkiem Retry-After wskazującym, kiedy ponowić próbę.
Rozwiązywanie problemów
Typowe problemy
| Problem | Przyczyna | Rozwiązanie |
|---|---|---|
| 401 Unauthorized | Nieprawidłowy token lub wygasły OAuth | Odśwież token OAuth lub wygeneruj ponownie token API |
| 403 Forbidden | Niewystarczające uprawnienia | Sprawdź, czy użytkownik ma dostęp do żądanego projektu |
| Błędy JQL | Nieprawidłowa składnia zapytania | Najpierw zweryfikuj JQL w wyszukiwarce zgłoszeń Jira |
| Webhook nie odebrany | Zapora blokuje | Upewnij się, że URL webhooka jest publicznie dostępny |
| Brakujące pola | Pole nie w odpowiedzi | Dodaj pole do parametru fields lub używaj expand |
Tryb debug
connectors: jira: debug: true log_level: verbose log_api_calls: trueTest połączenia
tajo connectors test jira# ✓ API authentication successful# ✓ Project access verified# ✓ Issue search operational# ✓ User lookup available# ✓ Webhook registration activeNajlepsze praktyki
- Używaj OAuth 2.0 dla produkcji - Unikaj zależności od indywidualnych kont użytkowników
- Filtruj z JQL - Synchronizuj tylko istotne zgłoszenia, aby zmniejszyć wywołania API
- Używaj webhooków w czasie rzeczywistym - Unikaj odpytywania; rejestruj webhooki dla zmian zgłoszeń
- Respektuj format ADF - Jira v3 używa Atlassian Document Format dla pól z bogatym tekstem
- Mapuj projekt na listę - Twórz oddzielne listy Brevo dla każdego projektu Jira
- Obsługuj paginację - Zawsze iteruj przez wszystkie strony dla kompletnych danych
Bezpieczeństwo
- OAuth 2.0 (3LO) - Bezpieczne uwierzytelnianie oparte na tokenach z tokenami odświeżania
- Token API + Basic Auth - Poświadczenia zakodowane w Base64 przez HTTPS
- Tylko HTTPS - Cała komunikacja API zaszyfrowana przez TLS 1.2+
- Ograniczony dostęp - Zakresy OAuth ograniczają dostęp API do wymaganych zasobów
- Bezpieczeństwo Atlassian Cloud - Infrastruktura certyfikowana SOC 2 Type II
- Szyfrowane przechowywanie - Poświadczenia szyfrowane w spoczynku w Tajo