我想更改 Jira 上项目问题的状态。状态是Open,我想将其设为固定。我的网址是 PUT https://jiradbg-sandbox.deutsche-boerse.de/rest/api/latest/issue/PID-XX
{
"update": {
"fields":{
"status": [
{
"set": "Fixed"
}
]
}
}
}
Run Code Online (Sandbox Code Playgroud)
响应是:
{
"errorMessages": ["Can not deserialize instance of java.util.ArrayList out of START_OBJECT token\n at [Source: org.apache.catalina.connector.CoyoteInputStream@5de98556; line: 3, column: 9]
(through reference chain: com.atlassian.jira.rest.v2.issue.IssueUpdateBean[\"update\"])"]
}
Run Code Online (Sandbox Code Playgroud)
您在这里遇到两个问题。
第一个问题是update或者fields应该单独提供给 Jira 的编辑问题 API,而不是一个在另一个中。它们具有相同的功能,因此通常只使用其中之一。例如,要更新摘要字段,请提供update:
{
"update": {
"summary": [
{
"set": "Updated by update"
}
]
}
}
Run Code Online (Sandbox Code Playgroud)
或者fields:
{
"fields": {
"summary": "Summary set by fields"
}
}
Run Code Online (Sandbox Code Playgroud)
然而状态字段是一种特殊情况,不能直接更新,这是这里的第二个问题。在 Jira 中更改状态称为过渡。您需要触发转换以将问题转变为您想要的状态。
首先通过调用获取转换 API来识别可用的转换:
GET https://example.net/rest/api/latest/issue/PID-XX/transitions
Run Code Online (Sandbox Code Playgroud)
这会告诉您当前可用的转换,如下所示:
{
"expand": "transitions",
"transitions": [
{
"id": "21",
"name": "Fixed",
"to": {
"self": "https://example.net/rest/api/2/status/10001",
"description": "",
"iconUrl": "https://example.net/images/icons/status_generic.gif",
"name": "Fixed",
"id": "10001",
"statusCategory": {
"self": "https://example.net/rest/api/2/statuscategory/3",
"id": 3,
"key": "done",
"colorName": "green",
"name": "Done"
}
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
获取id您想要的转换(在本例中为 21),然后将其发布到问题转换 API:
POST https://example.net/rest/api/latest/issue/PID-XX/transitions
Run Code Online (Sandbox Code Playgroud)
使用这样的请求主体:
{
"transition": {
"id": 21
}
}
Run Code Online (Sandbox Code Playgroud)
您应该从 Jira 收到 204 HTTP 响应,这表明转换成功。
| 归档时间: |
|
| 查看次数: |
4002 次 |
| 最近记录: |