Подтверждение этапа
Endpoint
POST /bot/tasks/{task_id}/confirm
Подтверждает текущий этап маршрута таска. Когда все assignments текущего этапа подтверждены, таск переходит на следующий этап, а если следующего этапа нет - завершается. Это bot-аналог действия Подтвердить в карточке таска.
Auth
Authorization: Bearer <bot_token>
Content-Type: application/jsonУ бота должны быть полные (update) права на форму таска. Если подтверждение завершает таск, боту дополнительно нужно право закрывать задачи, как для Завершения задач.
Path params
task_id- ID таска
Request body
Тело запроса необязательно.
{
"assignment_id": 123
}- С
assignment_idподтверждается только этот assignment. Он должен принадлежать текущему этапу таска. Это соответствует подтверждению пользователем своего назначения. - Без тела (или с
{}) подтверждаются все неподтвержденные assignments текущего этапа.
Как получить assignment_id
Вызовите GET /bot/tasks/{task_id} и проверьте data.step_assignments. Выберите assignment, у которого step_id совпадает с текущим step_id таска. Assignment предыдущего или следующего этапа будет отклонен.
Полная схема назначения описана на странице Чтение таска.
Примеры
Подтвердить весь текущий этап:
curl -X POST \
-H "Authorization: Bearer <bot_token>" \
-H "Content-Type: application/json" \
-d '{}' \
https://public-api.hcapp.ee/bot/tasks/5001/confirmПодтвердить один assignment текущего этапа:
curl -X POST \
-H "Authorization: Bearer <bot_token>" \
-H "Content-Type: application/json" \
-d '{"assignment_id": 123}' \
https://public-api.hcapp.ee/bot/tasks/5001/confirmResponse body
{
"success": true,
"error_message": null,
"data": {
"task_id": 5001,
"form_id": 12,
"confirmed_assignment_ids": [123],
"step_changed": true,
"previous_step_id": 5,
"step_id": 8,
"responsible_id": 45,
"is_finished": false
}
}confirmed_assignment_ids- assignments, подтвержденные этим вызовом. Пустой список, если все уже было подтверждено.step_changed-true, если таск перешел на другой этап.previous_step_id- этап таска до вызова.step_id- этап таска после вызова.responsible_id- ответственный таска после вызова. Для группового assignment -null.is_finished-true, если подтверждение завершило таск.
Поведение
- Отмечает выбранные assignments как подтвержденные и создает системный комментарий
CONFIRMдля каждого из них. - Если хотя бы один assignment текущего этапа остается неподтвержденным, таск остается на текущем этапе (
step_changed: false). - Когда все assignments текущего этапа подтверждены, таск переходит на следующий этап, у которого есть неподтвержденные assignments или еще нет assignments. Этапы, где все assignments уже подтверждены (например, после возврата на этап), пропускаются.
- Если у следующего этапа нет assignments, они создаются из настроек маршрута (default assignees), и ответственный таска обновляется. Если assignments уже есть, ответственным становится пользователь из assignment с ролью
RESPONSIBLE. - Создает системный комментарий
STEP_CHANGED, выдает доступ к таску назначенным пользователям нового этапа и создает для них внутренние нотификации. Внешняя доставка ставится в очередь по включенным каналам нотификаций каждого получателя. - Если следующего этапа нет, таск завершается:
is_finishedравноtrue, создается системный комментарийFINISHи выполняется стандартная обработка после завершения. - Вызов на этапе, где все assignments уже подтверждены, переводит таск дальше без нового подтверждения (
confirmed_assignment_ids: []). - Обновляет время активности таска.
Чтобы вернуть таск назад, используйте Возврат таска на этап.
Ошибки
422 assignment_idдолжен быть больше0.400 Task is already finished.400 Task is not in a workflow step.400 Assignment does not belong to the current step.403 Form access not found- у бота нет полных прав на форму.403 No close rights for this form- подтверждение завершило бы таск, но бот не может закрывать задачи в этой форме.404 Task not found.404 Assignment with id {id} not found for this task.
Для endpoint действует стандартный bot update rate limit.