2017-04-14 21 views
0

我想通过REST Api更新Jira问题字段,我能够更新摘要,描述,优先级,记者字段,但状态。Jira问题状态没有得到更新

这里是我试图运行的代码:

string jSonContent = (@" 
    { 
     ""fields"": { 
      ""summary"": ""data"", 
      ""description"": ""modified."", 
      ""priority"": {""name"": ""val""}, 
      ""reporter"": {""name"": ""[email protected]""}, 
      ""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

你不能改变问题的状态这样的方式。

要确定是什么类型的字段可以用一个简单的PUT请求更改元数据做一个GET:

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上的一个按钮,你就不会获得额外的过渡屏幕。 (例如,您可以设置一个转换,如:只有在向其添加注释时才能解决问题。)幸运的是,先前返回的转换列表包含可以或必须与转换标识一起提供的所有字段。

你可以在官方Jira documentation找到更多的信息。