使用REST API更新JIRA票证状态

时间:2015-06-12 18:23:04

标签: curl jira jira-rest-api jira-rest-java-api

我可以使用CURL命令在JIRA中创建一个票证,并且可以方便地使用json数据。

  

curl -D- -u:-X POST --data @<文件名> -H" Content-Type:application / json" HTTP://<主机名>:其中端口> /休息/ API / 2 /问题/

我现在正在尝试更新生成的故障单的状态,但收到以下错误。 <!-- top navbar--> <header ng-include="'templates/top-navbar.html'" ng-class="app.theme.topbar"></header> <!-- Sidebar--> <aside ng-include="'templates/sidebar.html'" ng-class="app.theme.sidebar"></aside> <!-- Main--> <section> <!-- Content--> <div ui-view="" autoscroll="false" ng-class="app.views.animation" class="app"></div> </section> <!-- Page footer--> <footer ng-include="'templates/footer.html'"></footer>

卷曲命令:

  

curl -D- -u&lt;使用者名称&gt;:其中PWD&GT; -X PUT --data @ data_update.txt -H   &#34;内容类型:application / json&#34;   HTTP://&LT;主机名&GT;:8100 /休息/ API / 2 /问题/ MTF-3

2 个答案:

答案 0 :(得分:4)

状态不是Jira中的字段,因此无法在飞行中更改相同的字段。 JIRA API没有为此做出规定。

我们必须遵循过渡并相应地改变。

首先,执行'http://localhost:8100/rest/api/latest/issue/MTF -2 / transitions?expand = transitions.fields 并知道转换的id。

对于Eg:“Stop Progress”的转换ID为31,“Done”为41。

知道后,请通过添加与您的环境相关的值来使用以下链接:

curl -D- -u <USER>:<PASS> -X POST --data '{"transition":{"id":"<TRANSITION_ID>"}}' -H "Content-Type: application/json" <JIRA_URL>:<JIRA_PORT>/rest/api/latest/issue/<JIRA_ISSUE>/transitions?expand=transitions.fields

参考:检查 Paul授予答案 - https://answers.atlassian.com/questions/107630/jira-how-to-change-issue-status-via-rest

答案 1 :(得分:0)

这对我来说是可行的,因为长期使用R。类似的方法应该适用于httr库使用的curl。

library(httr)
library(RJSONIO)

x <- list(fields = list(project = c(key = "xxxxxxx"), 
                        status = "Assign",
                        issuetype = c(name = "xxxx"),
                        summary = "xxxxxxx",
                        description = "xxxxxxx",
                        customfield_xxxxxx = c(value = "xxxxxx"),
                        assignee = c(name = "userid"),
                        customfield_xxxxxx = "xxxxxxxx"
            ))

# can add more fields as shown above

response <- POST("https://xxxxxxx.atlassian.net/rest/api/2/issue/",body = toJSON(x), 
                  authenticate(username,passcode, "basic"), 
                  add_headers("Content-Type" = "application/json"), 
                  verbose()
                 )