如何通过rest api在jira中创建一个问题?

时间:2011-05-04 14:25:41

标签: rest jira

是否可以使用REST api在jira中创建问题?我没有在文档中找到这个(没有POST问题),但我怀疑它是可能的。

wget或curl示例会很好。

9 个答案:

答案 0 :(得分:32)

发布到此网址

https://<JIRA_HOST>/rest/api/2/issue/

此数据:

{
"fields": {
   "project":
   { 
      "key": "<PROJECT_KEY>"
   },
   "summary": "REST EXAMPLE",
   "description": "Creating an issue via REST API",
   "issuetype": {
      "name": "Bug"
   }
  }
}

收到的答案将是您的问题的ID和密钥:

{"id":"83336","key":"PROJECT_KEY-4","self":"https://<JIRA_HOST>/rest/api/2/issue/83336"}

不要忘记授权。我使用了HTTP-Basic。

答案 1 :(得分:9)

JIRA 5.0中的REST API包含用于创建任务和子任务的方法。

(在撰写本文时,5.0尚未发布,但您可以从EAP页面访问5.0-m4。5.0-m4中的create-issue的doco是here)。< / p>

答案 2 :(得分:7)

从最新发布的版本(4.3.3)开始,无法使用REST API。您可以使用JIRA SOAP API远程创建问题。

有关示例Java客户端,请参阅this page

答案 3 :(得分:3)

**把这段代码(C#)**

        string postUrl = "https://netstarter.jira.com/rest/api/latest/issue";

        var httpWebRequest = (HttpWebRequest)WebRequest.Create(postUrl);
        httpWebRequest.ContentType = "application/json";
        httpWebRequest.Method = "POST";
        httpWebRequest.Headers["Authorization"] = "Basic " + Convert.ToBase64String(Encoding.Default.GetBytes("JIRAMMS:JIRAMMS"));

        using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
        {
            string json = @"{""fields"":{""project"":{""key"": ""JAPI""},""summary"": ""REST EXAMPLE"",""description"": ""Creating an issue via REST API 2"",""issuetype"": {""name"": ""Bug""}}}";

            streamWriter.Write(json);
            streamWriter.Flush();
            streamWriter.Close();

            var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
            using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
            {
                var result = streamReader.ReadToEnd();
            }




        }

答案 4 :(得分:3)

更直接地回答这个问题,即使用cURL。

要在创建案例时使用cURL访问JIRA REST API,请使用

curl -D- -u <username>:<password> -X POST --data-binary "@<filename>"  -H "Content-Type: application/json" http://<jira-host>/rest/api/2/issue/

并将此保存在&lt;文件名&GT; (请根据您的Jira案例编辑字段)并保存在您调用上述cURL命令的文件夹中。

{
    "fields": {
       "project":
       { 
           "key": "<PROJECT_KEY>"
       },
       "summary": "REST EXAMPLE",
       "description": "Creating an issue via REST API",
       "issuetype": {
           "name": "Bug"
       }
   }
}

这应该有效。 (请注意,如果错误,可能是您的文件名中的内容不正确)。

答案 5 :(得分:2)

现在您可以使用REST + JSON来创建问题。

要检查您可以设置哪些json字段来创建问题,请使用: https://jira.host.com/rest/api/2/issue/createmeta

有关详细信息,请参阅JIRA休息文档: https://docs.atlassian.com/jira/REST/6.2.4/

答案 6 :(得分:1)

要使用REST API发送问题数据,我们需要构建一个包含问题详细信息的有效JSON字符串。

JSON字符串的基本示例:

 {“fields” : { “project” : { “key” : “@KEY@” } , “issuetype” : { “name” : “@IssueType@” } } }

现在,建立与JIRA的连接并检查用户身份验证。 建立身份验证后,我们通过XMLHTTP方法POST REST API + JSON字符串。 处理响应和亲密用户关于响应成功或失败的信息。

所以这里JiraService是一个XMLHTTP对象,这样会增加一个问题,其中EncodeBase64是一个返回加密字符串的函数。

Public Function addJIRAIssue() as String
With JiraService
    .Open "POST", <YOUR_JIRA_URL> & "/rest/api/2/issue/", False
    .setRequestHeader "Content-Type", "application/json"
    .setRequestHeader "Accept", "application/json"
    .setRequestHeader "Authorization", "Basic " & EncodeBase64
    .send YOUR_JSON_STRING

    If .Status <> 401 Then
        addJIRAIssue = .responseText
    Else
        addJIRAIssue = "Error: Invalid Credentials!"
    End If

End With

Set JiraService = Nothing
End Sub

您可以查看complete VBA example here

答案 7 :(得分:1)

对此一不振,并遇到了通过REST API创建问题的问题。

issue_dict = {
    'project': {'key': "<Key>"},
    'summary': 'New issue from jira-python',
    'description': 'Look into this one',
    'issuetype': {'name': 'Test'},
}
new_issue = jira.create_issue(issue_dict)

new_issue返回一个已经存在的问题,并且不会创建一个问题。

答案 8 :(得分:0)

创建问题,请设置时间估算分配给自己,使用此方法:

  1. 生成一个Atlassian token

  2. 生成并保存以base64编码的身份验证令牌:

    export b64token="$(echo "<your_email>:<generated_token>" | openssl base64)"

  3. 发出POST请求:

curl -X POST \
  https://<your_jira_host>.atlassian.net/rest/api/2/issue/ \
     -H 'Accept: */*' \
     -H 'Authorization: Basic $b64token \
     -d '{
       "fields":{
         "project":{
           "key":"<your_project_key (*)>"
         },
         "issuetype":{
           "name":"Task"
         },
         "timetracking":{
           "remainingEstimate":"24h"
        },
         "assignee":{
           "name":"<your_name (**)>"
       },
       "summary":"Endpoint Development"
     }
   }'

备注:

(*)通常是项目描述的简短大写版本,例如:... atlassian.net/projects/ /。

(**),如果您不知道自己的JIRA名称,请对https://<your_jira_host>.atlassian.net/rest/api/2/search?jql=project=<any_project_name>使用与上面相同的授权进行cURL GET,然后寻找issues.fields.assignee.name