jira rest api 不支持直接上传 xml 格式 issue 数据,仅接受 application/json;xml 仅能通过 server/data center 的 project import 或 backup restore 流程处理,且需符合内部格式、管理员权限及 multipart 表单提交;cloud 完全不支持 xml 导入;正确做法是将 xml 解析为 json 后调用 rest api,并注意 adf 描述格式、自定义字段 id 差异、速率限制等约束。

Jira REST API 不支持直接上传 XML 格式 issue 数据
Jira 官方 REST API(包括 Cloud 和 Server/Data Center 8.0+)只接受 application/json 请求体,不接收、不解析、不处理 XML 格式的 issue 创建或导入请求。如果你尝试用 POST /rest/api/3/issue 发送 XML,会收到 415 Unsupported Media Type 错误,或更常见的 400 Bad Request 并提示 “Invalid JSON”。
XML 数据只能通过 Jira 的专用导入工具处理
真正能消费 XML 的路径是 Jira 自带的 Project Import 或 Backup Restore 流程,但它们有严格前提:
- XML 必须符合 Jira 内部导出格式(如
entities.xml+activeobjects.xml),不是任意结构的自定义 XML - 仅限管理员操作,需通过 Web UI(
/secure/admin/ProjectImportSummary.jspa)或jira-importers-plugin后台任务触发 - 不能用普通 API Token 或 Basic Auth 调用;必须登录后以 session 方式提交 multipart 表单(含
importFile文件字段) - Server/Data Center 才支持完整 XML 导入;Jira Cloud 完全移除了 XML 导入能力,仅保留 CSV/JSON 导入
正确做法:把 XML 转成 JSON 再调用 REST API
这是最可控、可自动化、兼容 Cloud 和 Server 的方案。关键步骤如下:
网奇.NET网络商城系统是基于.Net平台开发的免费商城系统。功能强大,操作方便,设置简便。无需任何设置,上传到支持asp.net的主机空间即可使用。系统特色功能:1、同时支持Access和SqlServer数据库;2、支持多语言、多模板3、可定制缺货处理功能4、支持附件销售功能5、支持会员组批发功能6、提供页面设计API函数7、支持预付款功能8、配送价格分地区按数学公式计算9、商品支持多类别,可
- 用 Python、Node.js 等解析原始 XML(例如用
xml.etree.ElementTree或fast-xml-parser) - 按 Jira REST API 的
issue创建规范映射字段:
—summary→<summary></summary>
—description→<description></description>
— 自定义字段需用customfield_10052这类 ID,不能用字段名 - 注意必填字段:
project.key和issuetype.name必须存在且有效(建议先查GET /rest/api/3/project/{key}/issuetypes) - 附件需单独调用
POST /rest/api/3/issue/{issueIdOrKey}/attachments,不能塞进 issue body
import xml.etree.ElementTree as ET
import requests
root = ET.parse("issues.xml").getroot()
for item in root.findall("issue"):
summary = item.find("summary").text
desc = item.find("description").text or ""
payload = {
"fields": {
"project": {"key": "PROJ"},
"summary": summary,
"description": {"type": "doc", "version": 1, "content": [{"type": "paragraph", "content": [{"type": "text", "text": desc}]}]},
"issuetype": {"name": "Bug"}
}
}
resp = requests.post(
"https://your-domain.atlassian.net/rest/api/3/issue",
json=payload,
headers={"Authorization": "Bearer YOUR_API_TOKEN", "Content-Type": "application/json"}
)
容易被忽略的关键限制
即使 XML 转 JSON 成功,仍有几个硬性约束常导致失败:
-
description字段在 Cloud 上强制要求使用 Atlassian Document Format(ADF),纯字符串会报错Field 'description' cannot be set. - 自定义字段 ID 在不同实例间不通用;Server 实例的
customfield_10100到 Cloud 可能变成customfield_10062,必须动态查 Schema - 批量导入时,Jira Cloud 对速率有限制(默认 1000 req/hour),且无事务回滚 —— 某条失败不影响其余成功项
- XML 中的时间戳(如
<created>2023-01-01T12:00:00Z</created>)要转成 ISO 8601 字符串再填入created字段,但该字段仅对管理员在创建时覆盖时间有效,普通用户无法设置
实际落地时,别试图绕过 JSON 协议去“骗过” API —— 解析 XML 是一次性成本,而适配 XML 导入流程反而要维护两套环境逻辑。









