Jira问题状态未获得更新

时间:2017-04-14 06:41:51

标签: asp.net-mvc jira-rest-api

我正在尝试通过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);

1 个答案:

答案 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中找到更多信息。