2017-04-14 23 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找到更多的信息。