Программное закрытие задачи в JIRA с использованием REST API

Я пишу программу, которая опрашивает нашу систему JIRA с помощью вызовов REST для задач, которые были помечены как ответственность другого отдела.

Затем моя программа приступает к созданию рабочих мест в системе отслеживания заданий, принадлежащей этому другому отделу, и обновляет нашу задачу JIRA с новым идентификатором задания в системе другого отдела.

Теперь я хочу обновить задачу JIRA в нашей собственной системе как Закрытую. Однако, хотя мне удалось использовать остальные вызовы (вместе с небольшим количеством json) для извлечения полей и обновления как стандартных, так и настраиваемых полей в JIRA, одно поле, которое я не могу обновить, это [либо] поле «status», либо поле «разрешение».

Строка REST http, которую я использую, чтобы попытаться сделать это (в C #), выглядит следующим образом:

"http: [my-jira-server] / rest / api / 2 / issue /" + task.key + "/ editmeta";

а затем со следующей строкой json:

        string theJson =
                  "{" +
                  "    \"fields\": " +
                  "    {" +    
                  "       \"resolution\": \"Done\"" +
                  "    }" +
                  "}";

Я также пробовал

        string theJson =
                  "{" +
                  "    \"fields\": " +
                  "    {" +
                  "        \"status\": Done "
                  "    }" +
                  "}";

а также:

        string theJson =
                  "{" +
                  "    \"fields\": " +
                  "    {" +
                  "        \"status\": \"Done\" "
                  "    }" +
                  "}";

Но в каждом случае я получаю ошибку WebException:

«Удаленный сервер возвратил ошибку: (405) Метод не разрешен»

Можно ли закрыть задание JIRA с помощью REST API?


person David Buddrige    schedule 11.02.2015    source источник
comment
Я также пробовал запустить прямой HTTP GET по следующему URL-адресу: http: // [my-jira-server] / rest / api / 2 / issue / + jiraTaskId + / editmeta   -  person David Buddrige    schedule 12.02.2015
comment
Я также попытался запустить прямой http GET для следующего URL-адреса: http: // [my-jira-server] / rest / api / 2 / issue / + jiraTaskId + / editmeta, который создал список редактируемых полей (которые, по-видимому, редактируемые и не включают поле состояния или поле разрешения) - но действительно ли вы не можете редактировать поле состояния (или устанавливать его каким-либо образом программно)?   -  person David Buddrige    schedule 12.02.2015
comment
Я нашел решение: во-первых, для перехода в режим open / closed / done и т. Д. Мне нужно было использовать вызов перехода rest rest (как POST), который (в C #): http: // [my-jira -сервер] / rest / api / 2 / issue / + task.key + / transitions; во-вторых, json для перехода к выполнению: string theJson = {+ \ transition \: + {+ \ id \: \ 21 \ +} +};   -  person David Buddrige    schedule 12.02.2015
comment
Чтобы найти доступные переходы, я отправил следующий вызов GET (из C #) string url = http: // [my-jira-server] / rest / api / 2 / issue / + jiraTaskId + / transitions? Expand = transitions. поля;   -  person David Buddrige    schedule 12.02.2015
comment
если вы можете поместить полный ответ с кодом, это будет действительно полезно для других .. :)   -  person Nuwan    schedule 10.08.2015


Ответы (1)


У вас та же проблема, что и у этого парня (Обновление проблемы jira с остальным api. НЕ мылом), editmeta не для редактирования, а только для ПОЛУЧЕНИЯ метаинформации (я полагаю, что Atlassian выбрал не -так-доброе имя). Вместо этого вы должны использовать issue.

person tcbrazil    schedule 30.08.2017