Jira Bağlayıcısı
Müşteriye yönelik sorun takibi, destek bileti görünürlüğü ve proje kilometre taşı bildirimleri için Jira Cloud örneğini Tajo aracılığıyla Brevo’ya bağla.
Genel Bakış
| Özellik | Değer |
|---|---|
| Platform | Jira Cloud |
| Kategori | Özel |
| Kurulum Karmaşıklığı | Orta |
| Resmi Entegrasyon | Hayır |
| Senkronize Edilen Veri | Sorunlar, Projeler, Kullanıcılar, Olaylar |
| API Türü | REST API v3 |
| Kimlik Doğrulama | OAuth 2.0 (3LO) / API Token (Basic Auth) |
| Temel URL | https://your-domain.atlassian.net/rest/api/3/ |
Özellikler
- Sorun olayı senkronizasyonu - Sorun oluşturma, güncelleme ve çözme olaylarını Brevo kişi zaman çizelgelerine ilet
- Müşteri bileti takibi - Destek görünürlüğü için Jira sorunlarını Brevo kişilerine bağla
- Proje kilometre taşı uyarıları - Sürüm yayınları ve sprint tamamlamalarında Brevo kampanyalarını tetikle
- Takım kapasitesi verisi - İş yükü metriklerini operasyonel gösterge panoları için senkronize et
- Durum değişikliği olayları - Sorun iş akışı geçişlerini Brevo olayları olarak takip et
- Yorum senkronizasyonu - Müşteriye yönelik yorumları Brevo etkinlik kayıtlarına ilet
Ön Koşullar
Başlamadan önce sahip olman gerekenler:
- Bir Jira Cloud örneği (Jira Software, Jira Service Management veya Jira Work Management)
- OAuth uygulamaları oluşturmak veya API token üretmek için yönetici erişimi
- API token ile ilişkili Atlassian hesabı e-posta adresi
- API erişimi olan bir Brevo hesabı
- Aktif aboneliği olan bir Tajo hesabı
Kimlik Doğrulama
Jira Cloud birden fazla kimlik doğrulama yöntemini destekler.
Seçenek 1: OAuth 2.0 (3LO) - Önerilen
- developer.atlassian.com adresine git
- Create > OAuth 2.0 integration seçeneğine tıkla
- Callback URL’sini yapılandır:
https://app.tajo.io/callbacks/jira - Bu kapsamları ekle:
read:jira-workread:jira-userwrite:jira-workread:meOAuth 2.0 için API URL yapısı:
https://api.atlassian.com/ex/jira/{cloudId}/rest/api/3/{resource}Seçenek 2: API Token (Basic Auth)
- id.atlassian.com/manage/api-tokens adresine git
- Create API token seçeneğine tıkla
- “Tajo Integration” olarak adlandır
# 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 Token Sınırlamaları
API token’lar bireysel kullanıcı hesaplarına bağlıdır. Kullanıcı devre dışı bırakılırsa entegrasyon bozulur. Üretim dağıtımları için OAuth 2.0 kullan.
Tajo’ya Bağlanma
# 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_TOKENYapılandırma
Temel Kurulum
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 RequestAlan Eşlemesi
Jira sorun ve kullanıcı alanlarını Brevo özniteliklerine eşle:
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 Endpoint’leri
Tajo, aşağıdaki Jira Cloud REST API v3 endpoint’leri ile entegre olur:
| Endpoint | Yöntem | Amaç |
|---|---|---|
/rest/api/3/search | POST | JQL kullanarak sorun ara |
/rest/api/3/issue/{issueIdOrKey} | GET | Sorun ayrıntılarını al |
/rest/api/3/issue | POST | Sorun oluştur |
/rest/api/3/project | GET | Tüm projeleri listele |
/rest/api/3/project/{projectIdOrKey} | GET | Proje ayrıntılarını al |
/rest/api/3/user/search | GET | Kullanıcı ara |
/rest/api/3/myself | GET | Mevcut kullanıcıyı al |
/rest/api/3/issue/{issueIdOrKey}/comment | GET | Sorun yorumlarını al |
/rest/api/3/webhook | POST | Webhook kaydet |
/rest/api/3/status | GET | Tüm durumları al |
/rest/api/3/priority | GET | Tüm öncelikleri al |
Kod Örnekleri
Bağlayıcıyı Başlat
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});Destek Sorunlarını Senkronize Et
// 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 Webhook’larını Yönet
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');});Müşteriye Göre Sorun Ara
// Find all issues reported by a specific customerconst issues = await tajo.connectors.query('jira', { maxResults: 20, fields: ['summary', 'status', 'priority', 'created']});Hız Limitleri
Jira Cloud, platform kararlılığını sağlamak için hız limitleri uygular:
| Bağlam | Hız Limiti |
|---|---|
| REST API | Kullanıcı başına 10 saniyede ~100 istek |
| Eş zamanlı istekler | 10 eş zamanlı uzun süreli istek |
| Toplu işlemler | Endpoint’e göre değişir |
Sayfalama
Jira, startAt ve maxResults parametreleri ile ofset tabanlı sayfalama kullanır. Varsayılan sayfa boyutu 50, maksimum 100’dür. Tajo sayfalamayı otomatik olarak yönetir.
Hız limitleri aşıldığında Jira, ne zaman yeniden deneneceğini belirten bir Retry-After başlığı ile 429 Too Many Requests yanıtı döndürür.
Sorun Giderme
Yaygın Sorunlar
| Sorun | Neden | Çözüm |
|---|---|---|
| 401 Unauthorized | Geçersiz token veya süresi dolmuş OAuth | OAuth token’ını yenile veya API token’ını yeniden oluştur |
| 403 Forbidden | Yetersiz izinler | Kullanıcının istenen projeye erişimi olduğunu kontrol et |
| JQL hataları | Geçersiz sorgu sözdizimi | JQL’i önce Jira’nın sorun aramasında doğrula |
| Webhook alınmıyor | Güvenlik duvarı engelliyor | Webhook URL’sinin herkese açık erişilebilir olduğundan emin ol |
| Eksik alanlar | Alan yanıtta yok | Alanı fields parametresine ekle veya expand kullan |
Hata Ayıklama Modu
connectors: jira: debug: true log_level: verbose log_api_calls: trueBağlantıyı Test Et
tajo connectors test jira# ✓ API authentication successful# ✓ Project access verified# ✓ Issue search operational# ✓ User lookup available# ✓ Webhook registration activeEn İyi Uygulamalar
- Üretim için OAuth 2.0 kullan - Bireysel kullanıcı hesaplarına bağımlılığı önler
- JQL ile filtrele - API çağrılarını azaltmak için yalnızca ilgili sorunları senkronize et
- Gerçek zamanlı için webhook kullan - Polling’den kaçın; sorun değişiklikleri için webhook kaydet
- ADF biçimine saygı göster - Jira v3 zengin metin alanları için Atlassian Document Format kullanır
- Projeyi listeye eşle - Her Jira projesi için ayrı Brevo listeleri oluştur
- Sayfalamayı yönet - Tam veri için her zaman tüm sayfaları yinele
Güvenlik
- OAuth 2.0 (3LO) - Yenileme token’ları ile güvenli token tabanlı kimlik doğrulama
- API Token + Basic Auth - HTTPS üzerinden Base64 kodlu kimlik bilgileri
- Yalnızca HTTPS - Tüm API iletişimi TLS 1.2+ ile şifrelenir
- Kapsamlı Erişim - OAuth kapsamları API erişimini gerekli kaynaklarla sınırlar
- Atlassian Cloud Güvenliği - SOC 2 Type II sertifikalı altyapı
- Şifrelenmiş Depolama - Kimlik bilgileri Tajo’da bekleme sırasında şifrelenir