Как получить все спринты в проекте с помощью JIRA REST API

Есть ли что-нибудь вроде "http://www.example.com/jira/rest/agile/1.0/sprint?project=XYZ ", чтобы получить все спринты в проекте.

API платформы JIRA может получать информацию о проектах, а API программного обеспечения JIRA может получать спринты для данной платы. Но мне нужны спринты для любого данного проекта (комбинации) или, по крайней мере, доски для данного проекта, чтобы я мог позже получить спринты на этих досках.


person lch    schedule 14.06.2016    source источник
comment
Опубликованный мной скрипт можно настроить, чтобы получить эту информацию, если GET SPRINT rest api содержит все необходимые поля. stackoverflow.com/a/60378905/1499296   -  person AKS    schedule 24.02.2020


Ответы (3)


Вы можете сделать это, но с двумя ресурсами:

  • Сначала вы можете получить все скрам-доски проекта с помощью этого:

https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/board-getAllBoards

  • Используйте параметры запроса projectKeyOrId и type для их фильтрации.

  • Итерируйте все элементы и используйте приведенный ниже URL-адрес с идентификатором каждой доски, чтобы получить ее спринты:

https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/board/%7BboardId%7D/sprint-getAllSprints.

person Carlos    schedule 04.08.2016

Это приносит вам какие-то результаты?

http://jira-domain.com/rest/greenhopper/latest/rapidviews/list

Если да, найдите идентификатор представления, содержащего этот проект, а затем попробуйте этот URL:

http://jira-domain.com/rest/greenhopper/latest/sprintquery/{view-id}?includeHistoricSprints=true&includeFutureSprints=true
person Somaiah Kumbera    schedule 15.06.2016

Сделаем некоторые предположения перед написанием кода:

  1. Название платы совпадает с названием проекта
  2. Будет только одна доска с таким названием
  3. У нас есть модель Sprint

Здесь я использую клиент Джерси для получения данных из JIRA.

private Client jerseyClient = Client.create();
jerseyClient.addFilter(new HTTPBasicAuthFilter("username", "password"));
private Gson gson = new Gson();

Вспомогательные методы

   /**
     * This method will a GET request to the URL supplied
     * @param url to request
     * @return String response from the GET request
     */
    public String makeGetRequest(String url){
        ClientResponse response = jerseyClient.resource(url).accept("application/json").get(ClientResponse.class);
        return response.getEntity(String.class);
    }


    /**
     * This method helps in extracting an array from a JSON string
     * @param response from which Array need to be extracted
     * @param arrayName
     * @return JsonArray extracted Array
     */
    public JsonArray extractArrayFromResponse(String response, String arrayName){
        JsonObject jsonObject = gson.fromJson(response, JsonObject.class);
        return jsonObject.get(arrayName).getAsJsonArray();
    }

Код для получения спринтов

    /**
     * This method will retrieve list of sprints in a given project
     * @param project for which we are requesting sprints 
     * @return List of sprints
     */
     public List<Sprint> getSprints(String project) {
        List<Sprint> sprintList = new ArrayList<>();

        try {
            //get board URL for the given 
            String boardUrl = "https://jira.company.com/rest/agile/1.0/board?name=" + URLEncoder.encode(project, "UTF-8");  //assumption 1
            String boardResponse = makeGetRequest(boardUrl);
            JsonArray boards = extractArrayFromResponse(boardResponse, "values");
            if(boards.size() > 0){
               JsonObject board = boards.get(0).getAsJsonObject(); //assumption 2

            //get all sprints for above obtained board
            String sprintUrl = jsonHandler.extractString(board, "self")+"/sprint";
            String sprintsResponse = makeGetRequest(sprintUrl);
            JsonArray sprints = extractArrayFromResponse(sprintsResponse, "values");

                //loop through all sprints
                for (int i = 0; i < sprints.size(); i++) {
                    JsonElement sprint = sprints.get(i);
                    JsonObject sprintObj = sprint.getAsJsonObject();

                    String sprintName = sprintObj.get("name").getAsString();
                    Sprint sprint = new Sprint(sprintName);
                    sprintList.add(sprint);
                }//end of for loop

            }

        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }

        return sprintList;

    }
person lch    schedule 09.08.2016