我正在尝试通过REST Api更新Jira问题字段,我能够更新摘要,描述,优先级,记者字段但状态。
以下是我尝试运行的代码:
string jSonContent = (@"
{
""fields"": {
""summary"": ""data"",
""description"": ""modified."",
""priority"": {""name"": ""val""},
""reporter"": {""name"": ""abcdef@gmail.com""},
""status"": {""name"": ""WORK IN PROGRESS""}
}
}").Replace("data", summ).Replace("modified.", desc).Replace("val", pri);
request.AddParameter("application/json", jSonContent, ParameterType.RequestBody);
var response = Execute(request);
答案 0 :(得分:3)
您不能以这种方式更改问题的状态。
要确定可以使用简单的PUT请求更改哪种类型的字段,请执行GET for metadata:
https://{your-jira-url}/rest/api/2/issue/{issueIdOrKey}/editmeta
此查询将依次为您提供可以修改的所有字段。您将无法在返回的JSON对象中找到状态字段。
回到你的问题:问题的状态如何变化?在Jira中,您有一个工作流程,可以保存状态之间的可能转换。为了改变状态,您需要进行转换。 (与在UI上执行的方式完全相同。)
首先做一个像这样的GET请求:
https://{your-jira-url}/rest/api/2/issue/{issueIdOrKey}/transitions?expand=transitions.fields
此请求将返回您的问题当前状态的所有可能转换。检查您要执行的转换并记下它的ID(在我的情况下,希望的ID是11)。使用此转换ID,您可以使用JSON有效内容执行POST请求:
https://{your-jira-url}/rest/api/2/issue/{issueIdOrKey}/transitions
{
"transition": {
"id": "11"
}
}
还有一点需要注意:如果您的转换不是一个简单的过渡,那么您必须提供更多数据。我的意思是一个简单的过渡,你只需点击UI上的一个按钮就可以获得额外的转换屏幕。 (例如,您可以设置一个转换:如果您向其添加注释,则只能解决问题。)幸运的是,先前返回的转换列表包含可以或必须与转换ID一起提供的所有字段。
您可以在官方Jira documentation中找到更多信息。