web-dev-qa-db-fra.com

comment créer un problème dans jira via rest api?

Est-il possible de créer un problème dans jira en utilisant REST api? Je ne l'ai pas trouvé dans la documentation (no POST pour les problèmes), mais je soupçonne c'est possible.

Un exemple wget ou curl serait Nice.

35
ymajoros

Publier sur cette URL

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

Ces données:

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

La réponse reçue sera l'ID et la clé de votre PROBLÈME:

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

N'oubliez pas l'autorisation. J'ai utilisé HTTP-Basic.

32
msangel

L'API REST dans JIRA 5.0 contient des méthodes pour créer des tâches et des sous-tâches.

(Au moment de la rédaction, 5.0 n'est pas encore publié, bien que vous puissiez accéder à 5.0-m4 à partir de la page EAP . Le doco pour create-issue dans 5.0- m4 est ici ).

9
Matt Quail

Depuis la dernière version publiée (4.3.3), il n'est pas possible de le faire en utilisant REST API . Vous pouvez créer des problèmes à distance à l'aide de l'API JIRA SOAP.

Voir cette page pour un exemple Java client.

7
luuuis

Pour répondre à la question plus directement, c'est-à-dire en utilisant cURL.

Pour utiliser cURL pour accéder à JIRA REST lors de la création d'un cas, utilisez

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

Et enregistrez-le dans votre <Nom de fichier> (veuillez modifier le champ selon votre cas Jira) et enregistrez-le dans le dossier que vous appelez la commande cURL ci-dessus.

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

Cela devrait fonctionner. (notez parfois qu'en cas d'erreur, votre contenu dans le nom de fichier est peut-être incorrect).

3
Elye

** mettez ce code (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();
            }




        }
3
Dumithu

Vous pouvez maintenant utiliser REST + JSON pour créer des problèmes.

Pour vérifier quels champs json vous pouvez définir pour créer le problème, utilisez: https://jira.Host.com/rest/api/2/issue/createmeta

Pour plus d'informations, veuillez consulter la documentation de JIRA reste: https://docs.atlassian.com/jira/REST/6.2.4/

2
mateuszb

Je tombe juste dessus et j'ai des problèmes pour créer un problème via l'API REST.

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 renvoie un problème déjà existant et n'en crée pas.

1
JP Hochbaum

Pour envoyer les données du problème avec l'API REST, nous devons construire une chaîne JSON valide comprenant les détails du problème.

Un exemple de base de chaîne JSON:

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

Maintenant, établissez une connexion à JIRA et vérifiez l'authentification de l'utilisateur. Une fois l'authentification établie, nous POST la REST API + chaîne JSON via la méthode XMLHTTP. Traitez la réponse et informez l'utilisateur de la réussite ou de l'échec de la réponse) .

Donc, ici JiraService étant un objet XMLHTTP, quelque chose comme ça va ajouter un problème, où EncodeBase64 est une fonction qui retourne une chaîne cryptée.

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

Vous pouvez consulter un exemple VBA complet ici

1
cyboashu

Afin de créer un problème , définir un estimation du temps et vous attribuer it, utilisez ceci:

  1. Générer un jeton Atlassian

  2. Générez et enregistrez un jeton d'authentification encodé en base64:

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

  3. Faire une demande 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"
     }
   }'

Remarques:

(*) Habituellement, une version courte et en majuscule de la description du projet telle que: ... atlassian.net/projects/ [~ # ~] up [~ # ~] /.

(**) si vous ne connaissez pas votre nom JIRA, cURL GET avec la même autorisation que ci-dessus pour https://<your_jira_Host>.atlassian.net/rest/api/2/search?jql=project=<any_project_name> et recherchez issues.fields.assignee.name.

0
jzzfs