申请抢先体验

请输入您的名字和公司电子邮箱地址。我们会发送确认 Tajo 访问申请的链接。

Jira 连接器

连接器状态: 计划中 尚未构建。Tajo 目前不运行此连接器。

示意图 · 示例数据

同步示例

检查一条记录

来源

Jira

连接器状态: 计划中

目标

您的另一款工具

连接器状态: 自定义工具

来源字段目标字段示例值
record.id source_id record_1042
record.updated_at updated_at 2026-10-18T08:00:00Z
record.value value sample_value
  1. 起草
  2. 检查一条记录
  3. 批准此版本

状态仅针对各个连接器,不保证此同步已就绪。 字段仅供示意。运行同步前,请检查实际架构和权限。

通过 Tajo 将您的 Jira Cloud 实例连接到 Brevo,实现面向客户的 Issue 跟踪、支持工单可见性和项目里程碑通知。

概览

属性值
平台Jira Cloud
类别自定义
设置复杂度中等
官方集成否
同步数据Issue、项目、用户、事件
API 类型REST API v3
认证方式OAuth 2.0 (3LO) / API 令牌(基本认证)
基础 URLhttps://your-domain.atlassian.net/rest/api/3/

功能

  • Issue 事件同步 - 将 Issue 创建、更新和解决事件转发到 Brevo 联系人时间线
  • 客户工单跟踪 - 将 Jira Issue 与 Brevo 联系人关联,提供支持可见性
  • 项目里程碑提醒 - 在版本发布和冲刺完成时触发 Brevo 活动
  • 团队容量数据 - 同步工作负载指标,用于运营仪表板
  • 状态变更事件 - 将 Issue 工作流转换跟踪为 Brevo 事件
  • 评论同步 - 将面向客户的评论转发到 Brevo 活动日志

前提条件

开始之前,请确保您已具备:

  1. Jira Cloud 实例(Jira Software、Jira Service Management 或 Jira Work Management)
  2. 创建 OAuth 应用或生成 API 令牌的管理员权限
  3. 与 API 令牌关联的 Atlassian 账户邮箱
  4. 具有 API 访问权限的 Brevo 账户
  5. 具有有效订阅的 Tajo 账户

认证

Jira Cloud 支持多种认证方式。

选项 1:OAuth 2.0 (3LO) - 推荐

  1. 前往 developer.atlassian.com
  2. 点击创建 > OAuth 2.0 集成
  3. 配置回调 URL:https://app.tajo.io/callbacks/jira
  4. 添加以下范围:
read:jira-work
read:jira-user
write:jira-work
read:me

OAuth 2.0 的 API URL 结构:

https://api.atlassian.com/ex/jira/{cloudId}/rest/api/3/{resource}

选项 2:API 令牌(基本认证)

  1. 前往 id.atlassian.com/manage/api-tokens
  2. 点击创建 API 令牌
  3. 命名为”Tajo Integration”
Terminal window
# Basic Auth: email as username, API token as password
curl -X GET "https://your-domain.atlassian.net/rest/api/3/myself" \
-u "[email protected]:$JIRA_API_TOKEN" \
-H "Accept: application/json"

API 令牌限制

API 令牌绑定到个人用户账户。如果该用户被停用,集成将中断。生产环境请使用 OAuth 2.0。

连接到 Tajo

Terminal window
# Using OAuth 2.0
tajo connectors install jira \
--client-id $JIRA_CLIENT_ID \
--client-secret $JIRA_CLIENT_SECRET \
--cloud-id $JIRA_CLOUD_ID
# Using API Token
tajo connectors install jira \
--site-url your-domain.atlassian.net \
--api-token $JIRA_API_TOKEN

配置

基础设置

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 Request

字段映射

将 Jira Issue 和用户字段映射到 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_RESOLUTION

API 端点

Tajo 集成以下 Jira Cloud REST API v3 端点:

端点方法用途
/rest/api/3/searchPOST使用 JQL 搜索 Issue
/rest/api/3/issue/{issueIdOrKey}GET获取 Issue 详情
/rest/api/3/issuePOST创建 Issue
/rest/api/3/projectGET列出所有项目
/rest/api/3/project/{projectIdOrKey}GET获取项目详情
/rest/api/3/user/searchGET搜索用户
/rest/api/3/myselfGET获取当前用户
/rest/api/3/issue/{issueIdOrKey}/commentGET获取 Issue 评论
/rest/api/3/webhookPOST注册 Webhook
/rest/api/3/statusGET获取所有状态
/rest/api/3/priorityGET获取所有优先级

代码示例

初始化连接器

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
});

同步支持 Issue

// Sync Jira support issues to Brevo contacts
await 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

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');
});

按客户搜索 Issue

// Find all issues reported by a specific customer
const issues = await tajo.connectors.query('jira', {
jql: 'reporter = "[email protected]" ORDER BY created DESC',
maxResults: 20,
fields: ['summary', 'status', 'priority', 'created']
});

速率限制

Jira Cloud 实施速率限制以确保平台稳定性:

上下文速率限制
REST API每用户每 10 秒约 100 个请求
并发请求10 个并发长时请求
批量操作因端点而异

分页

Jira 使用基于偏移量的分页,通过 startAt 和 maxResults 参数实现。默认页面大小为 50,最大为 100。Tajo 自动处理分页。

超出速率限制时,Jira 返回 429 Too Many Requests 响应,并附带 Retry-After 头部,指示何时可以重试。

故障排除

常见问题

问题原因解决方案
401 Unauthorized令牌无效或 OAuth 过期刷新 OAuth 令牌或重新生成 API 令牌
403 Forbidden权限不足检查用户是否有访问所请求项目的权限
JQL 错误查询语法无效先在 Jira 的 Issue 搜索中验证 JQL
未收到 Webhook防火墙拦截确保 Webhook URL 可公开访问
字段缺失字段未在响应中将字段添加到 fields 参数或使用 expand

调试模式

connectors:
jira:
debug: true
log_level: verbose
log_api_calls: true

测试连接

Terminal window
tajo connectors test jira
# ✓ API authentication successful
# ✓ Project access verified
# ✓ Issue search operational
# ✓ User lookup available
# ✓ Webhook registration active

最佳实践

  1. 生产环境使用 OAuth 2.0 - 避免依赖个人用户账户
  2. 使用 JQL 过滤 - 只同步相关 Issue 以减少 API 调用
  3. 使用 Webhook 实现实时 - 避免轮询;注册 Webhook 监听 Issue 变更
  4. 遵守 ADF 格式 - Jira v3 对富文本字段使用 Atlassian 文档格式
  5. 项目到列表的映射 - 为每个 Jira 项目创建独立的 Brevo 列表
  6. 处理分页 - 始终迭代所有页面以获取完整数据

安全

  • OAuth 2.0 (3LO) - 带刷新令牌的安全基于令牌的认证
  • API 令牌 + 基本认证 - Base64 编码的 HTTPS 凭据
  • 仅 HTTPS - 所有 API 通信通过 TLS 1.2+ 加密
  • 范围访问 - OAuth 范围将 API 访问限制到所需资源
  • Atlassian Cloud 安全 - SOC 2 Type II 认证基础设施
  • 加密存储 - 凭据在 Tajo 中静态加密

相关资源

申请抢先体验

请输入您的名字和公司电子邮箱地址。我们会发送确认 Tajo 访问申请的链接。

AI 助手

你好!关于文档有任何问题都可以问我。

本页的 Markdown: jira.md

正在加载 Markdown…