API

UTasks Developer API

Публичный API для интеграции сторонних сервисов с UTasks.


Начало работы

Базовый URL

https://app.utasks.io/utb

Все эндпоинты начинаются с префикса/pub/v1/.

Аутентификация

API использует Bearer-токен. Чтобы получить ключ, отправьте команду/apikey new в @UTasksBot.

Передавайте ключ в заголовке каждого запроса:

Authorization: Bearer utb_xxxxxxxxxxxxxxxx

Проверка подключения

Убедитесь, что ключ работает — запросите профиль:

GET /utb/pub/v1/profile Authorization: Bearer utb_...

Эндпоинты

Профиль

GET /pub/v1/profile

Возвращает профиль владельца API-ключа. Удобно использовать как проверку соединения.

Ответ200— объект PubProfileModel

{ "userId": "abc123", "userName": "ivan", "title": "Иван Петров", "role": "PRO", "roleExpireDate": "2025-12-31T00:00:00Z", "locale": "ru", "timeZone": "Europe/Moscow", "timeZoneId": 3 }

Проекты

GET /pub/v1/projects

Список проектов, в которых состоит текущий пользователь.

Ответ200— массив PubProjectModel


GET /pub/v1/projects/{id}

Получить проект по идентификатору. Доступно только для проектов, в которых пользователь является участником.

Параметры пути

Параметр

Тип

Обязательный

Описание

id

string

Идентификатор проекта

Ответ200— объект PubProjectModel


GET /pub/v1/projects/{id}/users

Список участников проекта с их статусами. Доступно только для проектов, в которых пользователь состоит.

Параметры пути

Параметр

Тип

Обязательный

Описание

id

string

Идентификатор проекта

Ответ200— массив PubProjectUserModel


Задачи

GET /pub/v1/tasks

Список задач текущего пользователя — по области или по проекту.

Параметры запроса

Параметр

Тип

Описание

scope

PubTaskScope

Область задач (по умолчанию All). Игнорируется, если задан projectId

projectId

string

Идентификатор проекта; требует активного членства

completed

boolean

true— вернуть выполненные задачи вместо открытых

q

string

Поисковый запрос (поиск по заголовку)

Ответ200— массив PubTaskModel

Пример

GET /utb/pub/v1/tasks?scope=Today Authorization: Bearer utb_...
GET /utb/pub/v1/tasks?projectId=abc123&completed=false Authorization: Bearer utb_...

POST /pub/v1/tasks

Создать задачу в проекте или в личном инбоксе. Отправляет те же уведомления в мессенджер, что и задачи из приложения.

Тело запросаPubCreateTaskRequest

Ответ200— объект PubTaskModel

Пример

{ "title": "Подготовить отчёт", "description": "Квартальный отчёт по метрикам", "projectId": "abc123", "planDate": "2025-08-01T09:00:00Z", "dueDate": "2025-08-05T18:00:00Z", "priority": "High", "assigneeIds": ["user1", "user2"] }

GET /pub/v1/tasks/{id}

Получить задачу по идентификатору.

Параметры пути

Параметр

Тип

Обязательный

Описание

id

string

Идентификатор задачи

Ответ200— объект PubTaskModel


PATCH /pub/v1/tasks/{id}

Частичное обновление задачи. Обновляются только переданные (неnull) поля. Пустой список assigneeIds удаляет всех исполнителей.

Параметры пути

Параметр

Тип

Обязательный

Описание

id

string

Идентификатор задачи

Тело запросаPubUpdateTaskRequest

Ответ200— объект PubTaskModel

Пример — изменить статус и приоритет

{ "status": "InProgress", "priority": "Highest" }

Пример — очистить плановую дату

{ "clearPlanDate": true }

DELETE /pub/v1/tasks/{id}

Удалить задачу. Разрешено автору задачи и администраторам проекта.

Параметры пути

Параметр

Тип

Обязательный

Описание

id

string

Идентификатор задачи


POST /pub/v1/tasks/{id}/complete

Отметить задачу как выполненную. Автор закрывает задачу целиком; исполнитель отмечает только свою часть — задача закрывается глобально, когда все исполнители выполнили свою часть. Доступно автору и исполнителям.

Параметры пути

Параметр

Тип

Обязательный

Описание

id

string

Идентификатор задачи


POST /pub/v1/tasks/{id}/uncomplete

Переоткрыть выполненную задачу для всех участников; статус сбрасывается вNew. Доступно автору и исполнителям.

Параметры пути

Параметр

Тип

Обязательный

Описание

id

string

Идентификатор задачи


GET /pub/v1/tasks/{id}/history

История изменений задачи и комментарии, по умолчанию от старых к новым.

Параметры пути

Параметр

Тип

Обязательный

Описание

id

string

Идентификатор задачи

Параметры запроса

Параметр

Тип

Описание

filter

string

Фильтр записей истории

sort

string

Сортировка записей

Ответ200— массив PubTaskHistoryItemModel


POST /pub/v1/tasks/{id}/attachassignee

Добавить текущего пользователя (владельца API-ключа) как исполнителя задачи.

Параметры пути

Параметр

Тип

Обязательный

Описание

id

string

Идентификатор задачи


POST /pub/v1/tasks/{id}/publish

Опубликовать карточку задачи как сообщение в чат проекта (для публичных проектов) или в личный чат автора.

Параметры пути

Параметр

Тип

Обязательный

Описание

id

string

Идентификатор задачи


POST /pub/v1/tasks/{id}/comments

Добавить текстовый комментарий к задаче.

Параметры пути

Параметр

Тип

Обязательный

Описание

id

string

Идентификатор задачи

Тело запросаPubCommentRequest

{ "text": "Готово, проверьте пожалуйста" }

Объекты данных

PubProfileModel

Профиль пользователя — владельца API-ключа.

Поле

Тип

Описание

userId

string

Идентификатор пользователя

userName

string

Логин (username)

title

string

Отображаемое имя

role

string

Тариф / роль

roleExpireDate

string (ISO 8601)

Дата истечения тарифа

locale

string

Язык интерфейса

timeZone

string

Часовой пояс (IANA)

timeZoneId

number

Идентификатор часового пояса


PubProjectModel

Поле

Тип

Описание

id

string

Идентификатор проекта

name

string

Название проекта

description

string

Описание

type

UTProjectType

Тип проекта


PubProjectUserModel

Поле

Тип

Описание

id

string

Идентификатор пользователя

userName

string

Логин

title

string

Отображаемое имя

status

UTUserStatus

Статус участника в проекте


PubUserModel

Краткая информация о пользователе (используется внутри задач).

Поле

Тип

Описание

id

string

Идентификатор пользователя

userName

string

Логин

title

string

Отображаемое имя


PubTaskModel

Поле

Тип

Описание

id

string

Идентификатор задачи

number

string

Человекочитаемый номер задачи, например UT-12

title

string

Заголовок задачи

description

string

Описание

status

UTTaskStatus

Статус

priority

UTTaskPriority

Приоритет

projectId

string | null

Идентификатор проекта; null для задач личного инбокса

projectName

string | null

Название проекта; null для личного инбокса

planDate

string | null

Плановая дата (ISO 8601)

planCron

string | null

Правило повторения плановой даты

dueDate

string | null

Дедлайн (ISO 8601)

isCompleted

boolean

Задача выполнена глобально. Для задач с несколькими исполнителями становится true только после того, как каждый отметил свою часть

completedDate

string | null

Дата завершения

completedUserIds

string[]

Идентификаторы исполнителей, отметивших свою часть как выполненную

personalCompleted

boolean

Задача выполнена для текущего пользователя: либо глобально завершена, либо пользователь отметил свою часть

author

PubUserModel

Автор задачи

assignees

PubUserModel[]

Исполнители


PubCreateTaskRequest

Поле

Тип

Обязательный

Описание

title

string

Заголовок задачи, до 5000 символов

description

string | null

Описание, до 5000 символов

projectId

string | null

Идентификатор проекта; не указывайте для личного инбокса

planDate

string | null

Плановая дата (ISO 8601)

dueDate

string | null

Дедлайн; не может быть раньше плановой даты

planCron

string | null

Правило повторения плановой даты

priority

UTTaskPriority

Приоритет

assigneeIds

string[] | null

Идентификаторы исполнителей. Должны быть участниками проекта


PubUpdateTaskRequest

Все поля опциональны. Передавайте только те, которые нужно изменить.

Поле

Тип

Описание

title

string | null

Новый заголовок, до 5000 символов

description

string | null

Новое описание, до 5000 символов

planDate

string | null

Новая плановая дата

dueDate

string | null

Новый дедлайн; не может быть раньше плановой даты

clearPlanDate

boolean

Очистить плановую дату (имеет приоритет надplanDate)

clearDueDate

boolean

Очистить дедлайн (имеет приоритет надdueDate)

planCron

string | null

Новое правило повторения

priority

UTTaskPriority

Новый приоритет

status

UTTaskStatus

Новый статус

assigneeIds

string[] | null

Новый полный список исполнителей (пустой массив удаляет всех)


PubCommentRequest

Поле

Тип

Обязательный

Описание

text

string

Текст комментария


PubCommentModel

Поле

Тип

Описание

text

string

Текст комментария

createDate

string (ISO 8601)

Дата создания


PubTaskHistoryItemModel

Запись истории изменений задачи.

Поле

Тип

Описание

date

string (ISO 8601)

Дата события

author

PubUserModel

Автор изменения

comment

string

Текст комментария (если это комментарий)

change

PubTaskHistoryChangeModel

Данные об изменении поля


PubTaskHistoryChangeModel

Поле

Тип

Описание

field

string

Название изменённого поля

oldValue

string

Старое значение

newValue

string

Новое значение


Перечисления

UTTaskStatus

Статус задачи.

Значение

Описание

New

Новая

ToDo

К выполнению

InProgress

В работе

Resolved

Решена

Review

На проверке

Approved

Согласована

Closed

Закрыта


UTTaskPriority

Приоритет задачи.

Значение

Описание

None

Не задан

Lowest

Наинизший

Low

Низкий

Medium

Средний

High

Высокий

Highest

Наивысший


UTProjectType

Тип проекта.

Значение

Описание

Private

Приватный

Public

Публичный

Dynamic

Динамический


UTUserStatus

Роль участника в проекте.

Значение

Описание

None

Без роли

Creator

Создатель

Administrator

Администратор

Member

Участник


PubTaskScope

Область фильтрации задач.

Значение

Описание

All

Все задачи

Inbox

Входящие

Today

На сегодня

Tomorrow

На завтра

Week

На неделю

Completed

Выполненные


Примеры сценариев

Получить задачи на сегодня

GET /utb/pub/v1/tasks?scope=Today Authorization: Bearer utb_...

Создать задачу в личном инбоксе

POST /utb/pub/v1/tasks Authorization: Bearer utb_... Content-Type: application/json { "title": "Позвонить клиенту", "planDate": "2025-08-01T10:00:00Z", "priority": "High" }

Создать задачу в проекте с исполнителями

POST /utb/pub/v1/tasks Authorization: Bearer utb_... Content-Type: application/json { "title": "Ревью PR #42", "projectId": "proj_abc", "assigneeIds": ["user_1", "user_2"], "dueDate": "2025-08-03T18:00:00Z", "priority": "Medium" }

Перевести задачу в статус «В работе»

PATCH /utb/pub/v1/tasks/task_xyz Authorization: Bearer utb_... Content-Type: application/json { "status": "InProgress" }

Завершить задачу

POST /utb/pub/v1/tasks/task_xyz/complete Authorization: Bearer utb_...

Добавить комментарий

POST /utb/pub/v1/tasks/task_xyz/comments Authorization: Bearer utb_... Content-Type: application/json { "text": "Готово, жду вашего ревью" }

Коды ошибок

Код

Описание

400

Некорректный запрос — проверьте тело запроса

401

Не авторизован — проверьте API-ключ

403

Нет доступа — недостаточно прав для действия

404

Объект не найден

500

Внутренняя ошибка сервера

Тело ошибки возвращается в формате ProblemDetails:

{ "type": "https://tools.ietf.org/html/rfc9110#section-15.5.1", "title": "Bad Request", "status": 400, "detail": "Title is required" }