Использование REST API Планировщика
API Планировщика в Microsoft Graph можно использовать для создания задач и назначения их пользователям в группе Microsoft 365.
Перед началом работы с API Планировщика изучите, как основные объекты связаны друг с другом и группами Microsoft 365.
Контейнеры плана
В Планировщике (Майкрософт) планы всегда содержатся в другом ресурсе. Содержащий их ресурс определяет правила авторизации плана и все задачи в нем, а также жизненный цикл плана. Например, для планов, содержащихся в группах Microsoft 365, участники группы смогут создавать, изменять, разрешать и удалять задачи в плане, а также изменять некоторые свойства на уровне плана, такие как имя плана и названия меток. Кроме того, при удалении группы автоматически удаляются все планы из нее, а если группа восстанавливается, все планы будут автоматически восстановлены.
Самый распространенный тип контейнера — группа Microsoft 365.
Тип контейнера: группы Microsoft 365
Планы обычно содержатся в группах Microsoft 365 в API Планировщика. Чтобы получить планы, принадлежащие группе, выполните HTTP-запрос, описанный ниже.
GET /groups/{group-id}/planner/plans
При создании плана настройте свойство container объекта плана, чтобы сделать группу его контейнером. Планы должны содержаться в поддерживаемом ресурсе.
Примечание. Пользователь, создающий план, должен быть участником группы, в которой будет содержаться план. При создании группы с помощью средства создания группы вы не становитесь ее участником. После создания группы добавьте себя в качестве участника с помощью операции добавления участников группы.
Планы
Планы представляют собой контейнеры задач. Чтобы создать задачу в плане, при ее создании укажите идентификатор плана в качестве свойства planId объекта задачи. В настоящее время невозможно создавать задачи без планов. Чтобы получить задачи в плане, выполните HTTP-запрос, описанный ниже.
GET /planner/plans/{plan-id}/tasks
Задачи
Каждую задачу можно назначить пользователю, добавив назначение в свойство assignments объекта задачи. Идентификатор пользователя, назначаемого задаче, — это имя открытого свойства в назначениях, а свойство orderHint в назначении должно быть указано.
Данные задач и плана
Ресурсы планировщика упорядочены по базовым объектам и объектам сведений. Базовые объекты предоставляют доступ к общим свойствам ресурсов, подходящим для представлений списка, а объекты подробных сведений предоставляют доступ к большим свойствам ресурсов, подходящим для представлений детализации.
Визуализация
Помимо данных задач и плана, API Планировщика предоставляет ресурсы для создания общей визуализации данных по клиентам. Для задач доступны несколько типов визуализации данных, как представлено в таблице ниже.
Способ представления задач | Источник информации для упорядочивания задач |
---|---|
Простой список (задачи в плане) | Свойство orderHint задач |
Простой список (задачи, назначенные пользователю) | Свойство assigneePriority задач |
Доска со столбцами для исполнителей (доска задач "Кому назначено") | Объект assignedToTaskBoardTaskFormat |
Доска со столбцами для хода выполнения задачи (доска задач "Ход выполнения") | Объект progressTaskBoardTaskFormat |
Доска с настраиваемыми столбцами задач (доска задач "Сегменты"): | Объект bucketTaskBoardTaskFormat |
Настраиваемые столбцы на доске задач "Сегменты" представлены объектами bucket, а их порядок — свойством orderHint объекта.
Принципы упорядочивания описаны в статье Использование указаний по упорядочиванию в Планировщике.
Версии ресурсов в Планировщике
Планировщик управляет версиями ресурсов с помощью тегов etag. Эти теги etag возвращаются со свойством @odata.etag для каждого ресурса. Для запросов PATCH
и DELETE
требуется последний тег etag, известный клиенту, чтобы указать его в заголовке If-Match
.
Планировщик позволяет изменять старые версии ресурсов, если планируемое изменение не конфликтует с более новыми изменениями, принятыми службой Планировщика в том же ресурсе. Клиенты могут определить, какой тег etag ресурса новее, вычислив большее значение тега etag при сравнении порядкового номера строки.
У каждого ресурса есть уникальный тег etag. Невозможно сравнить значения тегов etag для разных ресурсов, в том числе с отношениями вложения.
Клиентские приложения должны обрабатывать коды409
ошибок, связанных с управлением версиями, считывая 412
последнюю версию элемента и устраняя конфликтующие изменения.
Основные ошибки Планировщика
В дополнение к общим ошибкам Microsoft Graph, некоторые ошибки относятся только к API Планировщика.
400 (неправильный запрос)
В некоторых типовых сценариях на запросы POST
и PATCH
может быть получен код состояния 400. Ниже приведено несколько распространенных причин.
- Свойства Open Type не относятся к правильным типам, тип не указан или не содержит никаких свойств. Например, свойства plannerAssignment со сложными значениями должны объявлять свойство @odata.type со значением
microsoft.graph.plannerAssignment
. - Значения указаний порядка имеют неправильный формат. Например, значение подсказки заказа задается непосредственно для значения, возвращаемого клиенту.
- Данные логически несогласованны. Например, дата начала задачи позже даты выполнения задачи.
403 (доступ запрещен)
Помимо общих ошибок, API Планировщика возвращает код состояния 403
, если превышено ограничение, определенное в службе. Тип ограничения, превышенного в запросе, будет указан в свойстве code типа ресурса с ошибкой. Дополнительные сведения об ограничениях см. в разделе Ограничения Планировщика .
Ниже перечислены возможные значения для типов ограничений.
Значение | Описание |
---|---|
MaximumProjectsOwnedByUser | Превышено максимальное количество планов, содержащихся в группе. Это ограничение применяется к планам, содержащимся в группе, на основе свойства container ресурса plannerPlan. |
MaximumProjectsSharedWithUser | Превышено максимальное количество планов, совместно используемых с ограничением пользователей. Это ограничение основано на свойстве sharedWith ресурса plannerPlanDetails . |
MaximumTasksCreatedByUser | Превышено максимальное число задач, созданных в результате ограничения пользователей. Это ограничение основано на свойстве createdBy ресурса plannerTask . |
MaximumTasksAssignedToUser | Превышено максимальное число задач, назначенных пользователю. Это ограничение основано на свойстве assignments ресурса plannerTask . |
MaximumTasksInProject | Превышено максимальное число задач в пределах плана. Это ограничение основано на свойстве planId ресурса plannerTask . |
MaximumActiveTasksInProject | Превышено максимальное число задач, не выполненных в рамках плана. Это ограничение основано на свойствах planId и percentComplete ресурса plannerTask . |
MaximumBucketsInProject | Превышено максимальное количество контейнеров в рамках плана. Это ограничение основано на свойстве planId ресурса plannerBucket . |
MaximumUsersSharedWithProject | Свойство sharedWith ресурса plannerPlanDetails содержит слишком много значений. |
MaximumReferencesOnTask | Свойство references ресурса plannerTaskDetails содержит слишком много значений. |
MaximumChecklistItemsOnTask | Свойство checklist ресурса plannerTaskDetails содержит слишком много значений. |
MaximumAssigneesInTasks | Свойство assignments ресурса plannerTask содержит слишком много значений. |
MaximumPlannerPlans | Группа уже содержит максимальное количество планов, принадлежащих пользователю, которое в настоящее время составляет 200. Дополнительные сведения об ограничениях см. в разделе Ограничения Планировщика. |
412 (необходимое условие не выполнено)
Во всех запросах POST
, PATCH
и DELETE
API Планировщика заголовок If-Match
необходимо указывать с последним известным значением тега etag ресурса.
Код состояния 412 также может быть возвращен, если значение тега etag, указанное в запросе, больше не соответствует версии ресурса в службе. В этом случае клиентам следует прочитать ресурс еще раз и получить новый тег etag.