Можно ли создать проблему в jira, используя REST api? Я не нашел это в документации (нет POST для проблем), но я подозреваю, что это возможно.
Пример wget или curl был бы приятным.
Можно ли создать проблему в jira, используя REST api? Я не нашел это в документации (нет POST для проблем), но я подозреваю, что это возможно.
Пример wget или curl был бы приятным.
POST для этого URL
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.
API REST в JIRA 5.0 содержит методы создания задач и подзадач.
(В момент написания 5.0 еще не выпущен, хотя вы можете получить доступ к 5.0-м4 на странице EAP. для создания-выпуска в 5.0-м4 здесь).
Начиная с последней версии (4.3.3), это невозможно сделать с помощью REST API. Вы можете создавать проблемы удаленно, используя API-интерфейс JIRA SOAP.
См. эту страницу для примера Java-клиента.
Это код С#:
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();
}
}
Чтобы ответить на вопрос более прямым, то есть с помощью cURL.
Чтобы использовать cURL для доступа к API JIRA REST при создании примера, используйте
curl -D- -u <username>:<password> -X POST --data-binary "@<filename>" -H "Content-Type: application/json" http://<jira-host>/rest/api/2/issue/
И сохраните это в своем <Filename> (пожалуйста, отредактируйте поле на ваш случай с Jira) и сохраните в папке, которую вы вызываете вышеприведенной командой cURL.
{
"fields": {
"project":
{
"key": "<PROJECT_KEY>"
},
"summary": "REST EXAMPLE",
"description": "Creating an issue via REST API",
"issuetype": {
"name": "Bug"
}
}
}
Это должно сработать. (обратите внимание, если это ошибка, возможно, ваш контент в имени файла неверен).
Теперь вы можете использовать REST + JSON для создания проблем.
Чтобы проверить, какие json-поля вы можете установить для создания проблемы, используйте: https://jira.host.com/rest/api/2/issue/createmeta
Для получения дополнительной информации см. документацию о пребывании JIRA: https://docs.atlassian.com/jira/REST/6.2.4/
Чтобы отправить данные проблемы с помощью REST API, нам нужно построить допустимую строку JSON, содержащую сведения о проблеме.
Основной пример строки JSON:
{"fields" : { "project" : { "key" : "@[email protected]" } , "issuetype" : { "name" : "@[email protected]" } } }
Теперь установите соединение с JIRA и проверьте подлинность пользователя. После установления подлинности мы отправляем строку REST API + JSON через метод XMLHTTP. Откажитесь от ответа и интимного пользователя об успехе или неудаче ответа.
Итак, здесь 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
Вы можете проверить полный пример VBA здесь
Просто спотыкаюсь об этом, и у меня возникают проблемы с созданием проблемы через 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 возвращает уже существующую проблему и не создает ее.
Чтобы создать проблему, установить оценку времени и назначить ее себе, используйте это:
Создать токен Atlassian
Сгенерируйте и сохраните токен с кодировкой base64:
export b64token="$(echo "<your_email>:<generated_token>" | openssl base64)"
Сделать запрос 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/UP/.
(**) если вы не знаете своего имени JIRA, cURL GET с той же авторизацией, что и выше, для https://<your_jira_host>.atlassian.net/rest/api/2/search?jql=project=<any_project_name>
и искать issues.fields.assignee.name
.