API: Пример работы с проектом

Создание проекта

Минимальный запрос на создание проекта должен включать три свойства:

[POST] https://api.workpoint.app/odata/Projects
Body: 
{
  "name": "Project name", // Обязательный параметр. Наименование проекта (должно быть уникально).
  "billingTypeId": "e87e0e6b-c034-45ac-8b74-bd0256f3f535", // Обязательный параметр. ИД типа биллинга.
  "managerId": "545e4a32-31ee-436c-ac09-258d2063b613" // Обязательный параметр. ИД менеджера проекта.
}

Response: created entity

Получение и обновление задач проекта

Задачи обновляются пакетом, т.е. не допускается удаление/обновление отдельной задачи. При этом у каждой задачи есть свойство rowVersion и при обновлении коллекции задач у передаваемых объектов должны быть актуальные rowVersion. Рекомендуемый сценарий работы:

Получить коллекцию задач по проекту:

[GET] https://api.workpoint.app/odata/Projects(cc5d38dd-844b-4b04-b6e5-e40a9f486294)/ProjectTasks?$expand=projectTaskAssignments($select=id,isAllTeamRole,projectTeamMemberId)&$select=id,name,startDate,endDate,number,description,leadTaskId,structNumber,estimatedDuration,isActive,rowVersion

Response:
{
    "value": [
        {
            "name": "Наименование проекта", // Наименование задачи
            "rowVersion": "AAAAAAAACoo=", // Версия задачи
            "id": "3e49743e-aa45-4044-b506-d4be7cd48768", // ИД задачи
            "isActive": true, // Признак активности (false - задача закрыта)
            "startDate": null, // Дата начала
            "endDate": null, // Дата окончания
            "description": null, // Описание
            "estimatedDuration": null, // Оценка (часов)
            "number": 0, // Порядковый номер в ветке иерархии
            "structNumber": null, // Структурный номер (1.1.1)
            "leadTaskId": null, // ИД ведущей задачи (null - значит главная задача)
            "projectTaskAssignments": [ // Список назначений на задачу
                {
                    "projectTeamMemberId": null, // ИД члена команды (допускается null если isAllTeamRole = true)
                    "isAllTeamRole": true, // Признак опции "Вся команда" (т.е. назначение на всю команду)
                    "id": "e44d60ad-ffa6-48c8-bc18-f58d208568de" // ИД назначения
                }
            ]
        },
	***
    ]
}

Далее скорректировать полученный список задач — добавить, удалить или изменить задачи и назначения. Важно соблюсти целостность структуры:

  1. Должна быть только одна главная задача (с leadTaskId = null).
  2. Иерархия должна быть корректной — не допускается цикличность подчиненности задач.
  3. Нумерация (number) в каждой ветке должна быт строго последовательна и начинаться с 0.

Обновить коллекцию задач проекта:

Необходимо выполнить метод сущности WP.UpdateProjectTasks для обновления списка задач :

[POST] https://api.workpoint.app/odata/Projects(cc5d38dd-844b-4b04-b6e5-e40a9f486294)/WP.UpdateProjectTasks
Body:
{    
    "projectTasks": [
        {
            "startDate": "2020-01-01",
            "endDate": null,
            "description": null,
            "estimatedDuration": null,
            "number": 0,
            "structNumber": null,
            "leadTaskId": null,
            "name": "Наименование проекта",
            "rowVersion": "AAAAAAAACoo=",
            "id": "3e49743e-aa45-4044-b506-d4be7cd48768",
            "isActive": true,
            "projectTaskAssignments": [
                {
                    "projectTeamMemberId": null,
                    "isAllTeamRole": true,
                    "id": "e44d60ad-ffa6-48c8-bc18-f58d208568de"
                }
            ]
        },
    ]
}