Skip to content

API Reference

Базовый URL: http://localhost:4000/api

Все эндпоинты (кроме auth, health и pending invitations) требуют Authorization: Bearer <access_token>.

Swagger UI доступен по адресу http://localhost:4000/api/docs.

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

МетодПутьAuthОписание
POST/api/auth/registerНетСоздать аккаунт
POST/api/auth/loginНетВойти
POST/api/auth/refreshНетОбновить access токен
GET/api/auth/profileДаПрофиль текущего пользователя
POST/api/auth/forgot-passwordНетОтправить email для сброса пароля
POST/api/auth/reset-passwordНетСбросить пароль по токену
GET/api/auth/permissionsДаРазрешения текущего пользователя

Social Auth

МетодПутьAuthОписание
GET/api/auth/social/yandexНетВход через Яндекс ID
GET/api/auth/social/yandex/callbackНетCallback Яндекса
GET/api/auth/social/vkНетВход через VK ID
GET/api/auth/social/vk/callbackНетCallback VK

Пользователи

МетодПутьAuthОписание
GET/api/users/meДаПрофиль текущего пользователя
PATCH/api/users/meДаОбновить профиль
POST/api/users/me/avatarДаЗагрузить аватар
GET/api/users/me/quotaДаИнформация о квоте
PATCH/api/users/me/planДаСменить тариф
POST/api/users/me/change-passwordДаСменить пароль
GET/api/usersДаСписок пользователей
GET/api/users/searchДаПоиск пользователей (?q=)

Организации

Все ресурсные эндпоинты используют slug вместо ID.

МетодПутьAuthРазрешения
GET/api/organizationsДа
POST/api/organizationsДа
GET/api/organizations/by-slug/:slugДаorg:view
PATCH/api/organizations/by-slug/:slugДаorg:edit
DELETE/api/organizations/by-slug/:slugДаorg:delete
GET/api/organizations/by-slug/:slug/quotaДаorg:view
PATCH/api/organizations/by-slug/:slug/planДаorg:edit
GET/api/organizations/by-slug/:slug/membersДаorg:members.view
POST/api/organizations/by-slug/:slug/membersДаorg:members.invite
PATCH/api/organizations/by-slug/:slug/members/:userIdДаorg:members.roles
DELETE/api/organizations/by-slug/:slug/members/:userIdДаorg:members.remove

Аватар организации

МетодПутьAuthОписание
POST/api/organizations/by-slug/:slug/avatarДаЗагрузить аватар организации

Команды

Большинство ресурсных эндпоинтов используют slug вместо ID.

МетодПутьAuthРазрешения
GET/api/teamsДа
GET/api/teams/by-org/:slugДа
POST/api/teamsДа
GET/api/teams/by-slug/:teamSlugДаteam:view
PATCH/api/teams/by-slug/:teamSlugДаteam:settings:edit
DELETE/api/teams/by-slug/:teamSlugДаteam:delete
GET/api/teams/by-slug/:teamSlug/membersДаteam:view
POST/api/teams/by-slug/:teamSlug/membersДаteam:member:add
DELETE/api/teams/by-slug/:teamSlug/members/:userIdДаteam:member:remove
GET/api/teams/by-slug/:teamSlug/tasksДаtask:view

Квота и тариф команды

МетодПутьAuthОписание
GET/api/teams/by-slug/:teamSlug/quotaДаКвота команды
PATCH/api/teams/by-slug/:teamSlug/planДаСменить тариф команды

Проекты

МетодПутьAuthРазрешения
GET/api/projectsДа
POST/api/projectsДа
GET/api/projects/:idДаproject:view
PATCH/api/projects/:idДаproject:edit
DELETE/api/projects/:idДаproject:delete
GET/api/projects/:id/membersДаproject:members.view
POST/api/projects/:id/membersДаproject:members.add
DELETE/api/projects/:id/members/:userIdДаproject:members.remove

Задачи

МетодПутьAuthРазрешения
GET/api/tasks/myДа
GET/api/tasks/my/calendarДа— (?from=&to=)
GET/api/projects/:id/tasksДаtask:view
POST/api/projects/:id/tasksДаtask:create
GET/api/projects/:id/tasks/:taskIdДаtask:view
PATCH/api/projects/:id/tasks/:taskIdДаtask:edit
PATCH/api/projects/:id/tasks/:taskId/statusДаtask:edit
DELETE/api/projects/:id/tasks/:taskIdДаtask:delete

Комментарии к задачам

МетодПутьAuthОписание
GET/api/projects/:id/tasks/:taskId/commentsДаСписок комментариев
POST/api/projects/:id/tasks/:taskId/commentsДаСоздать комментарий
PATCH/api/projects/:id/tasks/:taskId/comments/:commentIdДаРедактировать комментарий
DELETE/api/projects/:id/tasks/:taskId/comments/:commentIdДаУдалить комментарий
POST/api/projects/:id/tasks/:taskId/comments/attachmentsДаЗагрузить вложения

История задач

МетодПутьAuthРазрешения
GET/api/projects/:id/tasks/:taskId/historyДаtask:view

Переупорядочивание и массовые операции

МетодПутьAuthОписание
POST/api/projects/:id/tasks/reorderДаПереупорядочить задачи ({ taskId, position }[])
POST/api/projects/:id/tasks/bulkДаМассовые операции (status/assign/delete/priority)

Вложения задач

МетодПутьAuthОписание
POST/api/projects/:id/tasks/:taskId/attachmentsДаЗагрузить вложения к задаче
POST/api/projects/:id/tasks/:taskId/attachments/removeДаУдалить вложение

Зависимости задач

МетодПутьAuthОписание
GET/api/tasks/:taskId/dependenciesДаСписок зависимостей
POST/api/tasks/:taskId/dependenciesДаСоздать (dependsOnId, type?)
DELETE/api/tasks/:taskId/dependencies/:idДаУдалить зависимость

Теги

МетодПутьAuthОписание
GET/api/orgs/:orgId/tagsДаТеги организации
GET/api/teams/:teamId/tagsДаТеги команды
GET/api/tasks/:taskId/tagsДаТеги задачи
POST/api/tagsДаСоздать тег
PATCH/api/tags/:idДаОбновить тег
DELETE/api/tags/:idДаУдалить тег
POST/api/tasks/:taskId/tagsДаНазначить теги (tagIds: string[])

Чат

МетодПутьAuthОписание
GET/api/chatsДаСписок бесед
POST/api/chatsДаСоздать беседу
POST/api/chats/direct/:userIdДаЛичная беседа
POST/api/chats/task/:taskIdДаБеседа задачи
GET/api/chats/:id/messagesДаСписок сообщений (?before=&limit=)
POST/api/chats/:id/messagesДаОтправить сообщение
POST/api/chats/:id/messages/attachmentsДаЗагрузить вложения (до 10 файлов)
POST/api/chats/:id/readДаОтметить как прочитанное

Уведомления

МетодПутьAuthОписание
GET/api/notificationsДаСписок уведомлений
GET/api/notifications/unread-countДаКоличество непрочитанных
PATCH/api/notifications/:id/readДаОтметить как прочитанное
PATCH/api/notifications/read-allДаОтметить все как прочитанные
DELETE/api/notifications/:idДаУдалить уведомление

Приглашения

МетодПутьAuthОписание
POST/api/invitationsДаСоздать приглашение
GET/api/invitations/myДаСписок моих приглашений
GET/api/invitations/pendingНетНайти ожидающие (?teamSlug=&orgSlug=)
POST/api/invitations/:id/acceptДаПринять приглашение
POST/api/invitations/:id/declineДаОтклонить приглашение
DELETE/api/invitations/:id/cancelДаОтменить приглашение

События (календарь)

МетодПутьAuthОписание
GET/api/eventsДаСписок событий (?from=&to=)
POST/api/eventsДаСоздать событие
GET/api/events/:idДаДетали события
PATCH/api/events/:idДаОбновить событие
DELETE/api/events/:idДаУдалить событие

Тарифы

МетодПутьAuthОписание
GET/api/plansДаСписок тарифов

Спринты

МетодПутьAuthОписание
GET/api/projects/:projectId/sprintsДаСписок спринтов проекта
GET/api/projects/:projectId/sprints/velocityДаДанные velocity
GET/api/sprints/:idДаДетали спринта
POST/api/sprintsДаСоздать спринт
PATCH/api/sprints/:idДаОбновить спринт
DELETE/api/sprints/:idДаУдалить спринт
POST/api/sprints/:id/tasksДаДобавить задачи в спринт
DELETE/api/sprints/:sprintId/tasks/:taskIdДаУбрать задачу из спринта

Пользовательские поля

МетодПутьAuthОписание
GET/api/custom-fields/:entityTypeДаСписок полей для типа сущности
POST/api/custom-fieldsДаСоздать определение поля
PATCH/api/custom-fields/:idДаОбновить поле
DELETE/api/custom-fields/:idДаУдалить поле
GET/api/custom-field-values/:entityIdДаПолучить значения полей
POST/api/custom-field-values/:entityIdДаУстановить значения полей

Трекинг времени

МетодПутьAuthОписание
GET/api/tasks/:taskId/time-entriesДаСписок записей времени
GET/api/tasks/:taskId/time-totalДаСуммарное время
POST/api/tasks/:taskId/time-entriesДаДобавить запись времени
DELETE/api/time-entries/:idДаУдалить запись времени

Избранное

МетодПутьAuthОписание
GET/api/favoritesДаСписок избранных
POST/api/favoritesДаДобавить в избранное
DELETE/api/favorites/:entityType/:entityIdДаУдалить из избранного

Шаблоны

МетодПутьAuthОписание
GET/api/orgs/:orgId/templatesДаСписок шаблонов организации
POST/api/templatesДаСоздать шаблон
PATCH/api/templates/:idДаОбновить шаблон
DELETE/api/templates/:idДаУдалить шаблон
POST/api/templates/:templateId/apply/:projectIdДаПрименить шаблон к проекту

Вебхуки

МетодПутьAuthОписание
GET/api/orgs/:orgId/webhooksДаСписок вебхуков организации
POST/api/webhooksДаСоздать вебхук
PATCH/api/webhooks/:idДаОбновить вебхук
DELETE/api/webhooks/:idДаУдалить вебхук
GET/api/webhooks/:id/logsДаЛоги доставки

Корзина

МетодПутьAuthОписание
GET/api/trashДаСписок удалённых элементов
POST/api/trash/:entityType/:entityId/restoreДаВосстановить элемент
DELETE/api/trash/:entityType/:entityIdДаУдалить навсегда

Поиск

МетодПутьAuthОписание
GET/api/searchДаГлобальный поиск (?q=) — возвращает задачи, проекты, команды, организации

Отчёты

МетодПутьAuthОписание
GET/api/projects/:id/reportДаОтчёт по проекту
GET/api/projects/:id/export/csvДаЭкспорт задач в CSV

Двухфакторная аутентификация

МетодПутьAuthОписание
POST/api/auth/2fa/generateДаГенерация секрета 2FA + URL QR-кода
POST/api/auth/2fa/enableДаВключить 2FA (проверка TOTP-кода)
POST/api/auth/2fa/disableДаОтключить 2FA (проверка TOTP-кода)

Видеокомнаты

МетодПутьAuthОписание
GET/api/video-roomsДаСписок комнат
POST/api/video-roomsДаСоздать комнату
GET/api/video-rooms/:idДаДетали комнаты
PATCH/api/video-rooms/:idДаОбновить комнату
DELETE/api/video-rooms/:idДаЗавершить/удалить комнату
POST/api/video-rooms/:id/joinДаПрисоединиться
POST/api/video-rooms/:id/leaveДаПокинуть
GET/api/video-rooms/:id/participantsДаСписок участников
POST/api/video-rooms/:id/tokenДаПолучить LiveKit токен
POST/api/video-rooms/:id/recording/startДаНачать запись
POST/api/video-rooms/:id/recording/stopДаОстановить запись
GET/api/video-rooms/:id/recording/statusДаСтатус записи

Здоровье

МетодПутьAuthОписание
GET/api/healthНетПроверка здоровья сервиса
GET/api/docsНетSwagger UI (интерактивная документация API)
GET/uploads/*НетСтатические файлы (локальные загрузки)

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

Статистика

МетодПутьAuthОписание
GET/api/admin/statsДаАгрегированная статистика

Пользователи

МетодПутьAuthОписание
GET/api/admin/usersДаСписок пользователей (?page=&limit=)
GET/api/admin/users/:idДаДетали пользователя с ролями
POST/api/admin/usersДаСоздать пользователя
PATCH/api/admin/users/:idДаОбновить пользователя
DELETE/api/admin/users/:idДаУдалить пользователя
POST/api/admin/users/:id/rolesДаНазначить роль
DELETE/api/admin/users/:id/roles/:roleIdДаУдалить роль
POST/api/admin/users/:id/resend-verificationДаПовторно отправить подтверждение email
POST/api/admin/users/:id/send-password-resetДаОтправить email для сброса пароля

Организации

МетодПутьAuthОписание
GET/api/admin/organizationsДаСписок организаций (?page=&limit=)
DELETE/api/admin/organizations/:idДаУдалить организацию

Команды

МетодПутьAuthОписание
GET/api/admin/teamsДаСписок команд (?page=&limit=)
DELETE/api/admin/teams/:idДаУдалить команду

Роли

МетодПутьAuthОписание
GET/api/admin/rolesДаСписок ролей (?scope=)
GET/api/admin/roles/:idДаДетали роли
POST/api/admin/rolesДаСоздать роль
PATCH/api/admin/roles/:idДаОбновить роль
DELETE/api/admin/roles/:idДаУдалить роль

Группы

МетодПутьAuthОписание
GET/api/admin/groupsДаСписок групп (?scope=&organizationId=)
POST/api/admin/groupsДаСоздать группу
PATCH/api/admin/groups/:idДаОбновить группу
DELETE/api/admin/groups/:idДаУдалить группу
GET/api/admin/groups/:id/membersДаУчастники группы
POST/api/admin/groups/:id/membersДаДобавить участника
DELETE/api/admin/groups/:id/members/:userIdДаУдалить участника
GET/api/admin/groups/:id/rolesДаРоли группы
POST/api/admin/groups/:id/rolesДаНазначить роль группе
DELETE/api/admin/groups/:id/roles/:roleIdДаУдалить роль у группы

Тарифы

МетодПутьAuthОписание
GET/api/admin/plansДаСписок всех тарифов
PATCH/api/admin/plans/:idДаОбновить тариф

Файлы

МетодПутьAuthОписание
GET/api/admin/filesДаСписок файлов (?page=&limit=)
DELETE/api/admin/files/:idДаУдалить файл

Разрешения

МетодПутьAuthОписание
GET/api/admin/permissionsДаСписок всех разрешений

Ответы об ошибках

Все ошибки возвращают единую JSON-структуру:

json
{
  "statusCode": 400,
  "message": "Описание ошибки",
  "error": "Bad Request"
}

Распространённые коды статуса:

  • 200 — Успех
  • 201 — Создано
  • 400 — Неверный запрос (ошибка валидации)
  • 401 — Не авторизован
  • 403 — Доступ запрещён
  • 404 — Не найдено
  • 409 — Конфликт
  • 500 — Внутренняя ошибка сервера

Пагинация

Эндпоинты со списками поддерживают пагинацию через параметры запроса:

ПараметрТипПо умолчаниюОписание
pagenumber1Номер страницы
limitnumber20Элементов на странице
json
{
  "data": [...],
  "total": 50,
  "page": 1,
  "limit": 20
}