You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python Jira API转换工单状态时遇HTTP 400错误求助

问题:Python Jira API修改工单状态为Resolved并标记Declined时触发HTTP 400错误

手动在Web端可正常将Jira工单状态改为Resolved并标记Declined,但通过Python Jira API执行对应操作时触发HTTP 400错误,提示“无法移动工单(VUESS-765)。您可能没有权限,或者工单缺少必要信息。若问题持续,请联系Jira管理员”,尝试多种resolution参数形式仍未解决。

提供的代码

def decline_issue_status(self, firing_issue: Issue, resolved_issue: Issue):
    status: Status = firing_issue.get_field("status")

    if status.id in ('10004','10019','10008'):
        self.add_label_for_grafana(firing_issue,resolved_issue)
        self.client.transition_issue(firing_issue,transition='71',resolution = {"id": "6","name": "Done"}, comment="Done")  #resolution = {"id": "5","name": "Обработано"}
        print(status)

报错信息

File "/home/fife/app/python/to_move_project/epm-sdl1/apps/schedule/jira_job_processing.py", line 105, in decline_issue_status
self.client.transition_issue(firing_issue,transition='71',resolution = {"id": "6","name": "Done"}, comment="Done") #resolution = {"id": "5","name": "Обработано"}
File "/home/fife/app/python/project/epmc-acm30-ticket-triage-engine/venv/lib/python3.10/site-packages/jira/client.py", line 123, in wrapper
result = func(*arg_list, **kwargs)
File "/home/fife/app/python/project/epmc-acm30-ticket-triage-engine/venv/lib/python3.10/site-packages/jira/client.py", line 2217, in transition_issue
r = self._session.post(url, data=json.dumps(data))
File "/home/fife/app/python/project/epmc-acm30-ticket-triage-engine/venv/lib/python3.10/site-packages/requests/sessions.py", line 637, in post
return self.request("POST", url, data=data, json=json, **kwargs)
File "/home/fife/app/python/project/epmc-acm30-ticket-triage-engine/venv/lib/python3.10/site-packages/jira/resilientsession.py", line 246, in request
elif raise_on_error(response, **processed_kwargs):
File "/home/fife/app/python/project/epmc-acm30-ticket-triage-engine/venv/lib/python3.10/site-packages/jira/resilientsession.py", line 71, in raise_on_error
raise JIRAError(
jira.exceptions.JIRAError: JiraError HTTP 400 url: https://epamservicedesk-sandbox-161.atlassian.net/rest/api/2/issue/VUESS-765/transitions
text: 无法移动工单(VUESS-765)。您可能没有权限,或者工单缺少必要信息。若问题持续,请联系Jira管理员。

response headers = {'Date': 'Tue, 23 Jan 2024 10:16:43 GMT', 'Content-Type': 'application/json;charset=UTF-8', 'Server': 'AtlassianEdge', 'Timing-Allow-Origin': '*', 'X-Arequestid': '32a3e2ead7a8048cf9e9e40927080c61', 'X-Aaccountid': '712020%3A34dba71e-5d38-450a-ab31-af25a7bbe9d0', 'Cache-Control': 'no-store, no-cache', 'X-Content-Type-Options': 'nosniff', 'X-Xss-Protection': '1; mode=block', 'Atl-Traceid': 'e1e41298def640af86b37a8a42056bad', 'Report-To': '{"endpoints": [{"url": "https://dz8aopenkvv6s.cloudfront.net"}], "group": "endpoint-1", "include_subdomains": true, "max_age": 600}', 'Nel': '{"failure_fraction": 0.001, "include_subdomains": true, "max_age": 600, "report_to": "endpoint-1"}', 'Strict-Transport-Security': 'max-age=63072000; includeSubDomains; preload', 'Vary': 'Accept-Encoding', 'Content-Encoding': 'gzip', 'Transfer-Encoding': 'chunked'}
response text = {"errorMessages":["无法移动工单(VUESS-765)。您可能没有权限,或者工单缺少必要信息。若问题持续,请联系Jira管理员。"],"errors":{}}

请求JSON

{"transition": {"id": 71}, "update": {"comment": [{"add": {"body": "Done"}}]}, "fields": {"resolution": {"id": "6", "name": "Done"}}}

解决方法

  • 核对Resolution参数:你要标记的是Declined,但当前代码传递的是Done的resolution id(6),注释里的{"id": "5","name": "Обработано"}才是对应Declined的选项,替换这个参数试试。
  • 检查Transition ID的类型:Jira的Transition ID通常是字符串类型,请求中当前是数字71,尝试将代码中的transition='71'保持字符串,或者确认该Transition ID是否正确(可通过Web端查看状态转换的URL获取正确ID)。
  • 确认Transition的必填字段:有些状态转换需要填写特定字段,Web端可能自动填充,但API调用时需要手动传入。调用GET /rest/api/2/issue/VUESS-765/transitions?expand=transitions.fields接口,查看ID为71的Transition需要哪些必填字段,在API请求中补充这些字段。
  • 调整参数传递方式:Python Jira库的transition_issue方法中,resolution参数可能需要放在fields字典中传递,而不是单独作为参数。尝试修改调用方式:
    self.client.transition_issue(
        firing_issue,
        transition='71',
        fields={"resolution": {"id": "5"}},  # 使用Declined对应的ID
        comment="Done"
    )
    
  • 验证权限一致性:确保API使用的账号和你手动操作的账号权限完全一致,包括项目权限、状态转换权限等。

内容的提问来源于stack exchange,提问作者Sasha Corn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 12:22:47