Формулировка проблемы: для реализации партнерами внешнего модуля интеграции требуется API для редактирования доп. полей проекта.
Связанные задачи: при реализации данной задачи необходимо учитывать реализацию задачи 2.45.PM3.
Решение: необходимо реализовать три новых
метода API, позволяющих:
возвращать описание существующих доп. полей для проекта/портфеля и список доп. полей, которые можно добавить к текущему проекту/портфелю;
добавлять доп. поля для проекта/портфеля;
удалять доп. поля для проекта/портфеля.
Метод, возвращающий описание существующих доп. полей для проекта/портфеля и список доп. полей, которые можно добавить к текущему проекту/портфелю
URL метода:
rest/api/projects/get_af. Типа запроса:
GET.
Метод принимает следующие параметры:
actionID - UUID
проекта/портфеля (обяз.);
type - тип (обяз., PROJECT
- проект, PORTFOLIO - портфель);
locale - локаль пользователя,
ru/en/kz (не обяз., по умолчанию
ru).
Метод возвращает два массива:
added - доп. поля, которые уже добавлены к
текущему проекту/портфелю;
not_added - доп. поля, которые можно добавить
к текущему проекту/портфелю.
Массивы содержат элементы:
name - название доп. поля;
afID - UUID доп. поля;
type - тип доп. поля
(DICTIONARY - значение из справочника,
TEXT - произвольная строка (только для
проектов), NUMBER - числовое значение)
Альтернативные потоки событий:
если справочник pm_custom_fields не
существует, сервер вернет сообщение «Справочник
pm_custom_fields не найден», список не
возвращается;
если справочник pm_custom_fields пуст, сервер
вернет сообщение «Не найдено элементов в справочнике», список не
возвращается;
если параметр actionID не передан, либо он
пустой, сервер вернет сообщение «Не передан параметр
actionID», список не возвращается;
если параметр type не передан, либо он
пустой, сервер вернет сообщение «Не передан параметр
type», список не возвращается;
если передан некорректный параметр type,
сервер вернет сообщение «Некорректный параметр
type», список не возвращается;
если передан некорректный параметр actionID,
сервер вернет одно из следующих сообщений, список не
возвращается:
для портфеля - «Портфель с таким actionID
не найден»;
для проекта - «Проект с таким actionID не
найден».
Пример возвращаемых массивов:
{
"added": [
{
"name": "Номер итерации",
"afID": "e645ac3f-2707-420a-a1ef-3e5841b22d45",
"type": "NUMBER"
},
{
"name": "Вид поставки",
"afID": "0f93a545-e528-4fac-8f3d-47e607deff77",
"type": "DICTIONARY"
}
],
"not_added": [
{
"name": "Бюджет",
"afID": "de96d6f5-45d4-46ad-9cad-3bbd7d84a423",
"type": "NUMBER"
}
]
}
Метод, позволяющий добавлять доп. поля для проекта/портфеля
URL метода:
rest/api/projects/add_af. Типа запроса:
POST.
Метод принимает следующие параметры:
actionID - UUID
проекта/портфеля (обяз.);
type - тип (обяз., PROJECT
- проект, PORTFOLIO - портфель);
fieldID - UUID доп. полей
проекта/портфеля, которые необходимо добавить (обяз.);
locale - локаль пользователя,
ru/en/kz (не обяз., по умолчанию
ru).
В случае успешного выполнения метода сервер вернет описание доп.
полей для текущего проекта/портфеля (аналогичная строка, как и в
методе rest/api/projects/get_af).
Примечание: необходимо вводить параметр
fieldID даже тех полей, которые уже были
добавлены, причем в нужном для пользователя порядке; иначе
добавленные поля заменят существующие.
Альтернативные потоки событий:
если справочник pm_custom_fields не
существует, сервер вернет сообщение «Справочник
pm_custom_fields не найден», доп. поля не
добавляются;
если справочник pm_custom_fields пуст, сервер
вернет сообщение «Не найдено элементов в справочнике», доп. поля
не добавляются;
если параметр actionID не передан, либо он
пустой, сервер вернет сообщение «Не передан параметр
actionID», доп. поля не добавляются;
если параметр type не передан, либо он
пустой, сервер вернет сообщение «Не передан параметр
type», доп. поля не добавляются;
если передан некорректный параметр type,
сервер вернет сообщение «Некорректный параметр
type», доп. поля не добавляются;
если передан некорректный параметр actionID,
сервер выдает одну из следующих ошибок, доп. поля не
добавляются;
для портфеля - «Портфель с таким actionID
не найден»;
для проекта - «Проект с таким actionID не
найден»;
если пользователь не передал параметр
fieldID, сервер вернет сообщение «Не передан
параметр fieldID», доп. поля не добавляются;
если хотя бы один параметр fieldID передан
некорректно, сервер вернет сообщение «Ошибка выполнения метода.
Переданы невалидные параметры», доп. поля не добавляются;
в случае неуспешного выполнения метода сервер вернет сообщение «Ошибка выполнения метода».
Метод, позволяющий удалять доп. поля для проекта/портфеля
URL метода:
rest/api/projects/remove_af. Типа запроса:
POST.
Метод принимает следующие параметры:
actionID - UUID
проекта/портфеля (обяз.);
type - тип (обяз., PROJECT
- проект, PORTFOLIO - портфель);
fieldID - UUID доп. полей,
которые необходимо удалить (обяз.);
locale - локаль пользователя,
ru/en/kz (не обяз., по умолчанию
ru).
В случае успешного выполнения метода сервер вернет описание доп.
полей для текущего проекта/портфеля (аналогичная строка, как и в
методе rest/api/projects/get_af).
Альтернативные потоки событий:
если справочник pm_custom_fields не
существует, сервер вернет сообщение «Справочник
pm_custom_fields не найден», доп. поля не
удаляются;
если справочник pm_custom_fields пуст, сервер
вернет сообщение «Не найдено элементов в справочнике», доп. поля
не удаляются;
если параметр actionID не передан, либо он
пустой, сервер вернет сообщение «Не передан параметр
actionID», доп. поля не удаляются;
если параметр type не передан, либо он
пустой, сервер вернет сообщение «Не передан параметр
type», доп. поля не удаляются;
если передан некорректный параметр type,
сервер вернет сообщение «Некорректный параметр
type», доп. поля не удаляются;
если передан некорректный параметр actionID,
сервер выдает одну из следующих ошибок, доп. поля не удаляются;
для портфеля - «Портфель с таким actionID
не найден»;
для проекта - «Проект с таким actionID не
найден»;
если пользователь не передал параметр
fieldID, сервер вернет сообщение «Не передан
параметр fieldID», доп. поля не удаляются;
если хотя бы один параметр fieldID передан
некорректно, сервер вернет сообщение «Ошибка выполнения метода.
Переданы невалидные параметры», доп. поля не удаляются;
в случае неуспешного выполнения метода сервер вернет сообщение «Ошибка выполнения метода».