how to create an issue in jira via rest api?

后端 未结 9 2273
北恋
北恋 2020-12-08 19:24

Is it possible to create an issue in jira using REST api? I didn\'t find this in the documentation (no POST for issues), but I suspect it\'s possible.

A wget or curl

相关标签:
9条回答
  • 2020-12-08 19:46

    This is C# code:

    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();
        }
    }
    
    0 讨论(0)
  • 2020-12-08 19:48

    In order to create an issue, set a time estimate and assign it to yourself, use this:

    1. Generate an Atlassian token

    2. Generate & save a base64-encoded auth token:

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

    3. Make a POST request:

    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"
         }
       }'
    

    Remarks:

    (*) Usually a short, capitalized version of the project description such as: ...atlassian.net/projects/UP/.

    (**) if you don't know your JIRA name, cURL GET with the same Authorization as above to https://<your_jira_host>.atlassian.net/rest/api/2/search?jql=project=<any_project_name> and look for issues.fields.assignee.name.

    0 讨论(0)
  • 2020-12-08 19:51

    To send the issue data with REST API we need to construct a valid JSON string comprising of issue details.

    A basic example of JSON string:

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

    Now, establish connection to JIRA and check for the user authentication. Once authentication is established, we POST the REST API + JSON string via XMLHTTP method. Process back the response and intimate user about the success or failure of the response.

    So here JiraService being an XMLHTTP object, something like this will add an issue, where EncodeBase64 is a function which returns encrypted string.

    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
    

    You can check out a complete VBA example here

    0 讨论(0)
提交回复
热议问题