Формулировка проблемы: для реализации партнерами внешнего модуля интеграции требуется 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
передан
некорректно, сервер вернет сообщение «Ошибка выполнения метода.
Переданы невалидные параметры», доп. поля не удаляются;
в случае неуспешного выполнения метода сервер вернет сообщение «Ошибка выполнения метода».