Tempo Planning REST API

Tempo Planning REST API предназначен для разработчиков, которые хотят интегрироваться с надстройками Tempo. REST API - это стандартный интерфейс для взаимодействия с модулем Tempo Planning API. Используйте браузер API REST, встроенный в JIRA, для просмотра сервисов, предоставляемых API REST для планирования. Примеры в этом руководстве используют curl и предназначены для того, чтобы дать представление о том, как использовать REST API для общих случаев использования.

 

Для получения более подробной информации о REST, см. Документацию по JIRA REST API.

 

Статус страницы:

(!) Предупреждение!

 

REST API находится в стадии разработки и может быть изменен. Обновления продукта могут привести к значительным изменениям в функции без предварительного предупреждения.

Типы данных

Ресурс API планирования имеет несколько различных типов параметров, которые описаны ниже.

(информация) Пользовательский документ в сравнении с терминологией REST API:

  • Пользовательский документ использует термин «Элемент плана» ("Plan Item"), а REST API - термин «Распределение» ("Allocation").
  • Пользовательский документ использует термин «Рабочий элемент» ("Work Item"), а REST API использует термин «Элемент плана» ("Plan Item").

 

Тип назначенного лица

Этот тип данных используется при публикации и обновлении плановых позиций. Тип назначенного лица ("Assignee type") сообщает вам, для кого или для чего предназначен элемент плана ("Plan Item").

Имя параметра: {assigneeType}

Возможные значения типа:

команда ("team") - правопреемник относится к типу команда. Элемент плана ("Plan Item") планируется на командном уровне и отражается на всех в этой команде.

пользователь ("user") - правопреемник имеет тип пользователя.

Элемент плана ("Plan Item") планируется для определенного пользователя.

Тип масштаба

Этот тип данных используется при публикации и обновлении «Элементы плана» ("Plan Items"). Тип масштаба говорит вам, где вы строите планы. Это может быть сделано, например, при планировании команд или планировании проекта.

Имя параметра: {scopeType}

Возможные значения типа:

команда ("team") - масштаб, в котором этот пункт плана планируется через команду.

«проект» ("project") - область, в которой этот элемент плана ("Plan Item") планируется через проект.

Тип рабочего элемента

Этот тип данных используется при публикации и обновлении элементов плана ("Plan Items"). Тип рабочего элемента говорит нам, какой план был составлен. Вы можете планировать многие типы вещей, от планов проекта до более точного планирования задач.

Имя параметра: {planItemType}

Возможные значения типа:

  • КОМПОНЕНТ
  • ЭПИК
  • ЗАДАЧА
  • ПРОЕКТ
  • СПРИНТ
  • ДОСКА
  • ВЕРСИЯ

Рефлексивное и повторяющееся планирование

(информация) Пользовательский документ в сравнении с терминологией REST API:

  • Пользовательский документ использует термин «Элемент плана» ("Plan Item"), а REST API - термин «Распределение» ("Allocation").
  • Пользовательский документ использует термин «Рабочий элемент», а REST API использует термин «Элемент плана» ("Plan Item").

 В планировщике Tempo Planner есть два способа расширения элементов плана для пользователей из одного элемента плана.

Рефлексивное планирование

Когда создается элемент плана  ("Plan Item") команды, также создаются отражающие элементы плана ("Plan Items"), которые распространяются на всех участников этой команды. Эти элементы плана получают те же атрибуты, что и родительский элемент плана ("Plan Item").

Рефлексивные планы учитывают членство для каждого пользователя, на которого они отражены. Поэтому, если член команды активен в команде только в течение некоторого периода времени, он получает только отражение плана на период, в котором он активен.

Повторяющееся планирование

Элементы плана ("Plan Items"), которые необходимо повторять в течение определенного периода времени, могут получать повторяющиеся правила в качестве атрибутов. Повторяющийся родительский элемент плана ("Plan Item") имеет присоединенную к себе сущность «повторение» ("recurrence"), которая содержит «правило» ("rule"), «конечную дату» ("endDate") и «recurCount».

recurrence: rule: повторяющиеся элементы плана могут иметь следующие правила:

  • НИКОГДА
  • ЕЖЕНЕДЕЛЬНО
  • ДВУХНЕДЕЛЬНО
  • ЕЖЕМЕСЯЧНО

recurrence: endDate: выбранная дата окончания для повторения элемента плана.recurrence: recurrence: recurCount: целое число, показывающее количество повторений.

Запрос существующих данных  элемента плана

(информация) Пользовательский документ в сравнении с терминологией REST API:

  • Пользовательский документ использует термин «Элемент плана» "Plan Item", а REST API - термин «Распределение» ("Allocation").
  • Пользовательский документ использует термин «Рабочий элемент» ("Work Item"), а REST API использует термин «Элемент плана» ("Plan Item").

Получить все элементы плана для данного запроса

Все параметры являются необязательными.

Возможные параметры фильтра:

  • assigneeKeys: список assigneeKeys, может быть как именем пользователя, так и идентификатором команды.
  • assigneeType: тип сотрудника, USER или TEAM.
  • planItemId: идентификатор определенного рабочего элемента.
  • planItemType: тип рабочего элемента для поиска startDate: начало периода поиска в формате ANSI.
    • Если startDate не определен, но endDate определен, тогда startDate будет на один месяц назад от endDate.
  • endDate: конец периода поиска в формате ANSI.
    • Если endDate не определен, но startDate определен, тогда endDate будет на один месяц раньше, чем startDate.
  • expandReflections: если true, тогда также включаются все планы пользователей, отраженные в плане команды.
    • По умолчанию = правда ("Default = true").

Если ни endDate, ни startDate не определены, период поиска будет один месяц с текущей даты (сегодня).

В этом примере мы получаем все элементы плана, которые запланированы для правопреемников «admin» и «jessie», «устанавливая их как assigneeKeys», типом которых является «пользователь» ("user"), и мы хотим проверить период с 10.10.2014 по 20 / 11/2014, который мы представляем в виде строки в формате ANSI.

Запрос


curl -D- -u fred:fred -X GET -H "Content-Type: application/json"  
http://localhost:2990/jira/rest/tempo-planning/1/allocation?assigneeKeys=jessie&assigneeKeys=admin&assigneeType=user&startDate=2014-11-10&endDate=2014-11-20

Отклик

Полученный нами ответ содержит всю основную информацию о элементах плана ("Plan Items"), запланированных для этих пользователей на данный период.


[
  {
    "id"1,
    "assignee": {
      "key""admin",
      "type""user"
    },
    "planItem": {
      "key""TO",
      "id"10130,
      "type""PROJECT",
      "name""Tango OnDemand",
      "description""",
      "projectKey""TO",
      "avatarUrls": {
        "16x16""/jira/secure/projectavatar?size=xsmall&pid=10130&avatarId=10011",
        "24x24""/jira/secure/projectavatar?size=small&pid=10130&avatarId=10011",
        "32x32""/jira/secure/projectavatar?size=medium&pid=10130&avatarId=10011",
        "48x48""/jira/secure/projectavatar?pid=10130&avatarId=10011"
      },
      "planItemUrl""browse/TO"
    },
    "scope": {
      "id"5,
      "type""team"
    },
    "commitment"100,
    "start""2014-11-10",
    "end""2014-11-14",
    "seconds"144000,
    "created""2014-11-10",
    "createdBy""john",
    "updated""2014-11-10",
    "updatedBy""john",
    "recurrence": {
      "endDate""2014-11-10",
      "rule""NEVER"
    }
  },
  {
    "id"2,
    "assignee": {
      "key""Jessie",
      "type""user"
    },
    "planItem": {
      "key""TO",
      "id"10130,
      "type""PROJECT",
      "name""Tango OnDemand",
      "description""",
      "projectKey""TO",
      "avatarUrls": {
        "16x16""/jira/secure/projectavatar?size=xsmall&pid=10130&avatarId=10011",
        "24x24""/jira/secure/projectavatar?size=small&pid=10130&avatarId=10011",
        "32x32""/jira/secure/projectavatar?size=medium&pid=10130&avatarId=10011",
        "48x48""/jira/secure/projectavatar?pid=10130&avatarId=10011"
      },
      "planItemUrl""browse/TO"
    },
    "scope": {
      "id"5,
      "type""team"
    },
    "commitment"100,
    "start""2014-11-17",
    "end""2014-11-21",
    "seconds"144000,
    "created""2014-11-10",
    "createdBy""john",
    "updated""2014-11-10",
    "updatedBy""john",
    "recurrence": {
      "endDate""2014-11-10",
      "rule""NEVER"
    }
  }
]

Получить конкретный элемент плана из идентификатора распределения ("Allocation ID")

Можно добавить необязательный параметр expand = children, чтобы получить также повторяющееся и отраженное распределение для этого распределения.

 

Обязательные параметры:

allocId: Id элемента плана.

Необязательные параметры:

  • "expand" (расширить) : если установлено значение "children" «дочернее», то все отраженные и повторяющиеся выделения для выделения также выбираются.
  • startDate: начальная дата периода желаемых повторяющихся распределений. Требуется только в том случае, если установлен параметр expand = children
  • endDate: дата окончания периода желаемых повторяющихся распределений. Требуется только в том случае, если установлен параметр expand=childern

В этом примере мы получаем распределение с идентификатором 3.

Независимо от необязательных параметров, получаем только элемент плана с идентификатором, который мы ищем.

Запрос


curl -D- -u fred:fred -X GET -H "Content-Type: application/json" http://localhost:2990/jira/rest/tempo-planning/1/allocation/3

Отклик


{
  "id"3,
  "assignee": {
    "key""bob",
    "type""user"
  },
  "planItem": {
    "key""WIKK",
    "id"10023,
    "type""PROJECT",
    "name""Wikkkieea Cloud",
    "description""",
    "projectKey""WIKK",
    "avatarUrls": {
      "16x16""/jira/secure/projectavatar?size=xsmall&pid=10023&avatarId=10001",
      "24x24""/jira/secure/projectavatar?size=small&pid=10023&avatarId=10001",
      "32x32""/jira/secure/projectavatar?size=medium&pid=10023&avatarId=10001",
      "48x48""/jira/secure/projectavatar?pid=10023&avatarId=10001"
    },
    "planItemUrl""browse/WIKK"
  },
  "scope": {
    "id"3,
    "type""team"
  },
  "commitment"100,
  "start""2014-11-10",
  "end""2014-11-11",
  "seconds"57600,
  "created""2014-11-10",
  "createdBy""john",
  "updated""2014-11-10",
  "updatedBy""john",
  "recurrence": {
    "endDate""2014-11-27",
    "rule""WEEKLY"
  }
}

Получить все дочерние элементы плана для родительского элемента плана

Это относится либо к элементу плана с отражающим планированием, либо к элементу плана, который повторяется.

В этом примере мы используем AllocationId = 3, чтобы получить дочерние элементы, которые мы должны сделать, развернуть = дочерние элементы expand=children, и у нас есть период с 10/11/2014 по 20/11/2014, который мы представляем в виде строки в формате ANSI.

 

Все отраженные / повторяющиеся распределения отображаются в виде атрибута списка ("children") («дочерние») в распределении.

Запрос


curl -D- -u fred:fred -X GET -H "Content-Type: application/json"  http://localhost:2990/jira/rest/tempo-planning/1/allocation/3?expand=children&startDate=2014-11-

Отклик


{
  "id"3,
  "assignee": {
    "key""bob",
    "type""user"
  },
  "planItem": {
    "key""WIKK",
    "id"10023,
    "type""PROJECT",
    "name""Wikkkieea Cloud",
    "description""",
    "projectKey""WIKK",
    "avatarUrls": {
      "16x16""/jira/secure/projectavatar?size=xsmall&pid=10023&avatarId=10001",
      "24x24""/jira/secure/projectavatar?size=small&pid=10023&avatarId=10001",
      "32x32""/jira/secure/projectavatar?size=medium&pid=10023&avatarId=10001",
      "48x48""/jira/secure/projectavatar?pid=10023&avatarId=10001"
    },
    "planItemUrl""browse/WIKK"
  },
  "scope": {
    "id"3,
    "type""team"
  },
  "commitment"100,
  "start""2014-11-10",
  "end""2014-11-11",
  "seconds"57600,
  "created""2014-11-10",
  "createdBy""john",
  "updated""2014-11-10",
  "updatedBy""john",
  "recurrence": {
    "endDate""2014-11-27",
    "rule""WEEKLY"
  },
  "children": [
    {
      "id"0,
      "assignee": {
        "key""bob",
        "type""user"
      },
      "planItem": {
        "key""WIKK",
        "id"10023,
        "type""PROJECT",
        "name""Wikkkieea Cloud",
        "description""",
        "projectKey""WIKK",
        "avatarUrls": {
          "16x16""/jira/secure/projectavatar?size=xsmall&pid=10023&avatarId=10001",
          "24x24""/jira/secure/projectavatar?size=small&pid=10023&avatarId=10001",
          "32x32""/jira/secure/projectavatar?size=medium&pid=10023&avatarId=10001",
          "48x48""/jira/secure/projectavatar?pid=10023&avatarId=10001"
        },
        "planItemUrl""browse/WIKK"
      },
      "scope": {
        "id"3,
        "type""team"
      },
      "commitment"100,
      "start""2014-11-17",
      "end""2014-11-18",
      "seconds"57600,
      "created""2014-11-10",
      "createdBy""john",
      "updated""2014-11-10",
      "updatedBy""john",
      "recurrence": {
        "parent": {
          "id"3,
          "type""user"
        },
        "endDate""2014-11-19",
        "rule""NEVER"
      }
    }
  ]
}

Создание элементов плана

См. Документацию о Tempo Planning REST API # Типы данных.

(информация) Пользовательский документ в сравнении с терминологией REST API:

  • Пользовательский документ использует термин «Элемент плана» ("Plan Item"), а REST API - термин «Распределение» ("Allocation").
  • Пользовательский документ использует термин «Рабочий элемент» ("Work Item"), а REST API использует термин «Элемент плана» ("Plan Item").

Создать базовый элемент плана

См. данные ниже для получения дополнительной информации о том, что необходимо для создания элементов плана.

Атрибут данных "commitment" «обязательства» является целым числом от 0 до 100 и отражает степень приверженности представителю данному плану.

В  планировщике Tempo Planner это представлено в процентах.

Запрос


curl -D- -u fred:fred -X POST --data '{see below}' -H "Content-Type: application/json"  http://localhost:2990/jira/rest/tempo-planning/1/allocation

Данные


Create a basic Plan Item - Data

Отклик


{
  "id"9,
  "assignee": {
    "key""admin",
    "type""user"
  },
  "planItem": {
    "key""WIKK",
    "id"10023,
    "type""PROJECT",
    "name""Wikkkieea Cloud",
    "description""",
    "projectKey""WIKK",
    "avatarUrls": {
      "16x16""/jira/secure/projectavatar?size=xsmall&pid=10023&avatarId=10001",
      "24x24""/jira/secure/projectavatar?size=small&pid=10023&avatarId=10001",
      "32x32""/jira/secure/projectavatar?size=medium&pid=10023&avatarId=10001",
      "48x48""/jira/secure/projectavatar?pid=10023&avatarId=10001"
    },
    "planItemUrl""browse/WIKK"
  },
  "scope": {
    "id"5,
    "type""team"
  },
  "commitment"100,
  "start""2014-08-27",
  "end""2014-08-31",
  "seconds"86400,
  "created""2014-11-10",
  "createdBy""john",
  "updated""2014-11-10",
  "updatedBy""john",
  "recurrence": {
    "endDate""2014-11-10",
    "rule""NEVER"
  }
}

 

Создание элемента плана с отражающим планированием

См. данные ниже для получения дополнительной информации о том, что необходимо для создания элементов плана с отражающим планированием. Если назначенный сотрудник относится к типу команда, план будет отражать всех пользователей, которые доступны в это время в команде.

Атрибут данных обязательства является целым числом от 0 до 100 и отражает степень обязательства представителя данному плану.

В планировщике Tempo Planner это представлено в процентах.

Запрос


curl -D- -u fred:fred -X POST --data '{see below}' -H "Content-Type: application/json"  http://localhost:2990/jira/rest/tempo-planning/1/allocation

Данные


{
  "planItem": {
    "id"10023,
    "type""PROJECT"
  },
  "scope": {
    "id"5,
    "type""team"
  },
  "assignee": {
    "key""5",
    "type""team"
  },
  "commitment"100,
  "start""2014-08-27",
  "end""2014-08-31",
    "recurrence": {
    "rule""NEVER"
  }
}

Отклик


{
  "id"10,
  "assignee": {
    "key""5",
    "type""team"
  },
  "planItem": {
    "key""WIKK",
    "id"10023,
    "type""PROJECT",
    "name""Wikkkieea Cloud",
    "description""",
    "projectKey""WIKK",
    "avatarUrls": {
      "16x16""/jira/secure/projectavatar?size=xsmall&pid=10023&avatarId=10001",
      "24x24""/jira/secure/projectavatar?size=small&pid=10023&avatarId=10001",
      "32x32""/jira/secure/projectavatar?size=medium&pid=10023&avatarId=10001",
      "48x48""/jira/secure/projectavatar?pid=10023&avatarId=10001"
    },
    "planItemUrl""browse/WIKK"
  },
  "scope": {
    "id"5,
    "type""team"
  },
  "commitment"100,
  "start""2014-08-27",
  "end""2014-08-31",
  "seconds"0,
  "created""2014-11-10",
  "createdBy""john",
  "updated""2014-11-10",
  "updatedBy""john",
  "recurrence": {
    "endDate""2014-11-10",
    "rule""NEVER"
  }
}

 

Обновление элементов плана

(информация) Пользовательский документ в сравнении с терминологией REST API:

  • Пользовательский документ использует термин «Элемент плана» ("Plan Item"), а REST API - термин «Распределение» ("Allocation").
  • Пользовательский документ использует термин «Рабочий элемент» ("Work Item"), а REST API использует термин «Элемент плана» ("Plan Item"").

Обновить базовый элемент плана ("Plan Item")

В этом случае мы изменяем обязательство элемента плана с 100 на 50. Идентификатор элемента плана, который должен быть изменен, должен быть в URL.

Запрос


curl -D- -u fred:fred -X PUT --data {see below} -H "Content-Type: application/json"  http://localhost:2990/jira/rest/tempo-planning/1/allocation/3

Данные


{
  "planItem": {
    "id"10023,
    "type""PROJECT"
  },
  "scope": {
    "id"5,
    "type""team"
  },
  "assignee": {
    "key""5",
    "type""team"
  },
  "commitment"50,
  "start""2014-08-27",
  "end""2014-08-31",
    "recurrence": {
    "rule""NEVER"
  }
}

Отклик


{
  "id"3,
  "assignee": {
    "key""5",
    "type""team"
  },
  "planItem": {
    "key""WIKK",
    "id"10023,
    "type""PROJECT",
    "name""Wikkkieea Cloud",
    "description""",
    "projectKey""WIKK",
    "avatarUrls": {
      "16x16""/jira/secure/projectavatar?size=xsmall&pid=10023&avatarId=10001",
      "24x24""/jira/secure/projectavatar?size=small&pid=10023&avatarId=10001",
      "32x32""/jira/secure/projectavatar?size=medium&pid=10023&avatarId=10001",
      "48x48""/jira/secure/projectavatar?pid=10023&avatarId=10001"
    },
    "planItemUrl""browse/WIKK"
  },
  "scope": {
    "id"5,
    "type""team"
  },
  "commitment"50,
  "start""2014-08-27",
  "end""2014-08-31",
  "seconds"0,
  "created""2014-11-10",
  "createdBy""john",
  "updated""2014-11-10",
  "updatedBy""john",
  "recurrence": {
    "endDate""2014-11-10",
    "rule""NEVER"
  }
}

Обновление элемента плана с повторяющимися дочерними

Только два атрибута необходимы для повторения элемента плана ("Plan Item"). Базовая информация в элементе плана ("Plan Item") плюс повторяющаяся дата окончания ("EndDate") и правило ("Rule").

  • "RecurrenceEndDate": - выбранная дата для повторения до конца. Представлено как строка в формате ANSI. ех. 2014-03-26
  • «Правило» ("Rule"): -выбранное правило для повторяющегося события.

ЕЖЕНЕДЕЛЬНО, ДВУХНЕДЕЛЬНО, ЕЖЕМЕСЯЧНО и НИКОГДА.

Запрос


curl -D- -u fred:fred -X PUT --data {see below} -H "Content-Type: application/json"  http://localhost:2990/jira/rest/tempo-planning/1/allocation/3

Данные


{
  "planItem": {
    "id"10023,
    "type""PROJECT"
  },
  "scope": {
    "id"5,
    "type""team"
  },
  "assignee": {
    "key""5",
    "type""team"
  },
  "commitment"50,
  "start""2014-08-27",
  "end""2014-08-31",
  "recurrence": {
    "endDate""2014-12-06",
    "rule""WEEKLY"
   }
}

Отклик


{
  "id"3,
  "assignee": {
    "key""5",
    "type""team"
  },
  "planItem": {
    "key""WIKK",
    "id"10023,
    "type""PROJECT",
    "name""Wikkkieea Cloud",
    "description""",
    "projectKey""WIKK",
    "avatarUrls": {
      "16x16""/jira/secure/projectavatar?size=xsmall&pid=10023&avatarId=10001",
      "24x24""/jira/secure/projectavatar?size=small&pid=10023&avatarId=10001",
      "32x32""/jira/secure/projectavatar?size=medium&pid=10023&avatarId=10001",
      "48x48""/jira/secure/projectavatar?pid=10023&avatarId=10001"
    },
    "planItemUrl""browse/WIKK"
  },
  "scope": {
    "id"5,
    "type""team"
  },
  "commitment"50,
  "start""2014-08-27",
  "end""2014-08-31",
  "seconds"0,
  "created""2014-11-10",
  "createdBy""john",
  "updated""2014-11-10",
  "updatedBy""john",
  "recurrence": {
    "endDate""2014-12-06",
    "rule""WEEKLY"
  }
}

Удаление элементов плана

(информация) Пользовательский документ в сравнении с терминологией REST API:

  • Пользовательский документ использует термин «Элемент плана» ("Plan Item"), а REST API - термин «Распределение» ("Allocation").
  • Пользовательский документ использует термин «Рабочий элемент» ("Work Item"), а REST API использует термин «Элемент плана» ("Plan Item").

Удалить элемент плана, который планируется для пользователя. В этом примере мы решили удалить элемент плана с идентификатором распределения = 3 ("Allocation Id = 3")

Запрос


curl -D- -u fred:fred -X DELETE -H "Content-Type: application/json"  http://localhost:2990/jira/rest/tempo-planning/1/allocation/3

Ответ


null

По материалам Tempo Server: Tempo Planning REST API