Полная документация API платформы SmartSchedule (ШКЕД) для управления расписанием занятий.
Development: http://localhost:3000/api
Production: https://your-domain.com/api
Все API endpoints требуют аутентификации через NextAuth.js сессии.
Запросы должны включать cookie с сессией:
Cookie: next-auth.session-token=<token>
admin- Администраторstudent- Студентlector- Преподавательmentor- Ментор/Научный руководительassistant- Ассистентco_lecturer- Со-преподавательeducation_office_head- Начальник учебного отделаdepartment_admin- Администратор кафедры
Получить список пользователей
Права: admin
Параметры запроса:
role- Фильтр по ролиgroupId- Фильтр по группеsearch- Поиск по имени/email
Создать пользователя
Права: admin
Тело запроса:
{
"name": "Имя Фамилия",
"email": "user@example.com",
"password": "password123",
"role": "student",
"status": "ACTIVE"
}Получить список групп
Права: все авторизованные
Создать группу
Права: admin
Тело запроса:
{
"name": "Б05-123",
"year": 2025
}Получить детали группы
Права: все авторизованные
Обновить группу
Права: admin
Удалить группу
Права: admin
Получить список предметов
Права: все авторизованные
Создать предмет
Права: admin
Тело запроса:
{
"name": "Математический анализ",
"description": "Описание предмета"
}Получить детали предмета
Права: все авторизованные
Обновить предмет
Права: admin, lector
Удалить предмет
Права: admin
Получить расписание
Права: все авторизованные
Параметры запроса:
groupId- Фильтр по группеsubjectId- Фильтр по предметуsubgroupId- Фильтр по подгруппеstartDate- Начало периода (ISO 8601)endDate- Конец периода (ISO 8601)
Создать занятие
Права: admin
Тело запроса:
{
"subjectId": "subject_id",
"groupId": "group_id",
"subgroupId": "subgroup_id",
"date": "2025-11-05",
"startTime": "10:00",
"endTime": "11:30",
"location": "Аудитория 305",
"type": "LECTURE"
}Получить детали занятия
Права: все авторизованные
Обновить занятие
Права: admin
Удалить занятие
Права: admin
Получить подгруппы группы
Права: все авторизованные
Параметры запроса:
subjectId- Фильтр по предмету
Создать подгруппу
Права: admin
Тело запроса:
{
"subjectId": "subject_id",
"name": "Подгруппа 1",
"number": 1,
"description": "Описание"
}Получить детали подгруппы
Права: все авторизованные
Обновить подгруппу
Права: admin
Удалить подгруппу
Права: admin
Добавить студентов в подгруппу
Права: admin
Тело запроса:
{
"studentIds": ["user_id_1", "user_id_2"]
}Удалить студента из подгруппы
Права: admin
Параметры запроса:
userId- ID студента
Отметить посещаемость
Права: admin, lector, assistant
Тело запроса:
{
"attendanceList": [
{
"userId": "user_id",
"status": "PRESENT",
"source": "MANUAL",
"notes": "Примечание"
}
]
}Получить посещаемость занятия
Права: admin, lector, student (своя)
Сформировать отчет по посещаемости
Права: admin, lector, education_office_head, department_admin
Параметры запроса:
groupId- Фильтр по группеsubjectId- Фильтр по предметуuserId- Фильтр по студентуstartDate- Начало периода (ISO 8601)endDate- Конец периода (ISO 8601)
Получить список экзаменов
Права: все авторизованные
Параметры запроса:
groupId- Фильтр по группеsubjectId- Фильтр по предмету
Создать экзамен
Права: admin, lector
Тело запроса:
{
"subjectId": "subject_id",
"groupId": "group_id",
"type": "EXAM",
"format": "ORAL",
"date": "2025-12-20T10:00:00Z",
"location": "Аудитория 401"
}Получить детали экзамена
Права: все авторизованные
Обновить экзамен
Права: admin, lector
Удалить экзамен
Права: admin
Внести результат экзамена
Права: admin, lector
Тело запроса:
{
"userId": "user_id",
"grade": "5",
"status": "PASSED",
"notes": "Примечание"
}Получить ведомость экзамена
Права: admin, lector, student (свой результат)
Получить список встреч
Права: admin, mentor (свои), student (свои)
Параметры запроса:
mentorId- Фильтр по менторуstudentId- Фильтр по студентуstatus- Фильтр по статусу
Создать встречу
Права: admin, mentor, student
Тело запроса:
{
"mentorId": "mentor_id",
"studentId": "student_id",
"scheduledAt": "2025-11-15T14:00:00Z",
"duration": 60,
"agenda": "Обсуждение прогресса",
"location": "Офис / Zoom",
"meetingType": "VKR"
}Получить детали встречи
Права: admin, mentor, student (участники)
Обновить встречу
Права: admin, mentor (свои)
Отменить встречу
Права: admin, mentor, student (участники)
См. FORUM_SYSTEM.md
Получить список тем
Права: все авторизованные
Параметры запроса:
groupId- Фильтр по группеsubjectId- Фильтр по предметуtopicType- Фильтр по типу
Создать тему
Права: все авторизованные
Тело запроса:
{
"title": "Заголовок темы",
"content": "Содержание (MDX)",
"topicType": "QUESTION",
"visibility": "SUBJECT",
"groupId": "group_id",
"subjectId": "subject_id"
}Получить детали темы
Права: все авторизованные (с учетом visibility)
Обновить тему
Права: admin, автор, lector (модерация)
Удалить тему
Права: admin, автор
Получить сообщения темы
Права: все авторизованные (с учетом visibility)
Создать сообщение
Права: все авторизованные (если тема не закрыта)
Тело запроса:
{
"content": "Содержание сообщения (MDX)",
"parentPostId": "parent_post_id"
}Получить детали сообщения
Права: все авторизованные
Обновить сообщение
Права: admin, автор
Удалить сообщение
Права: admin, автор
Получить документы предмета
Права: все авторизованные
Параметры запроса:
type- Фильтр по типу документа
Загрузить документ
Права: admin, lector
Content-Type: multipart/form-data
Параметры формы:
file- Файлtype- Тип документа (RPD, ANNOTATION, etc.)description- Описание
Получить детали документа
Права: все авторизованные
Обновить документ
Права: admin, lector (загрузивший)
Удалить документ
Права: admin, lector (загрузивший)
Получить внешние ресурсы предмета
Права: все авторизованные
Параметры запроса:
type- Фильтр по типу ресурса
Добавить внешний ресурс
Права: admin, lector
Тело запроса:
{
"type": "ZOOM",
"title": "Zoom встреча",
"url": "https://zoom.us/j/123456789",
"description": "Описание"
}Получить ресурсы занятия
Права: все авторизованные
Добавить ресурс к занятию
Права: admin, lector
Получить детали ресурса
Права: все авторизованные
Обновить ресурс
Права: admin, lector (создатель)
Удалить ресурс
Права: admin, lector (создатель)
Получить отчеты учебного офиса
Права: education_office_head
Получить общее расписание
Права: education_office_head
Получить отчеты кафедры
Права: department_admin
Получить список преподавателей кафедры
Права: department_admin
Получить список предметов кафедры
Права: department_admin
200 OK- Успешный запрос201 Created- Ресурс создан400 Bad Request- Некорректные данные401 Unauthorized- Не авторизован403 Forbidden- Нет доступа404 Not Found- Ресурс не найден500 Internal Server Error- Ошибка сервера
{
"error": "Описание ошибки"
}В будущих версиях API будет поддерживать пагинацию:
GET /api/endpoint?page=1&limit=20
Ответ:
{
"data": [...],
"pagination": {
"page": 1,
"limit": 20,
"total": 100,
"totalPages": 5
}
}Получить список логов активности с фильтрацией и пагинацией.
Права: admin
Параметры запроса:
userId- Фильтр по ID пользователяaction- Фильтр по типу действия (CREATE, UPDATE, DELETE, SETTINGS_CHANGE)entityType- Фильтр по типу сущности (User, Group, Subject, Schedule, Homework, BotSettings)startDate- Дата начала периода (YYYY-MM-DD)endDate- Дата окончания периода (YYYY-MM-DD)page- Номер страницы (по умолчанию 1)limit- Количество записей на странице (по умолчанию 50)
Пример запроса:
GET /api/activity-logs?action=UPDATE&entityType=User&startDate=2025-11-01&page=1&limit=50Ответ:
{
"logs": [
{
"id": "clx123...",
"userId": "user456",
"action": "UPDATE",
"entityType": "User",
"entityId": "user789",
"ipAddress": "192.168.1.100",
"details": {
"before": {
"id": "user789",
"name": "Иван Иванов",
"role": "student"
},
"after": {
"id": "user789",
"name": "Иван Петров",
"role": "student"
},
"changes": [
{
"field": "name",
"oldValue": "Иван Иванов",
"newValue": "Иван Петров"
}
]
},
"result": "SUCCESS",
"createdAt": "2025-11-03T20:10:57Z",
"user": {
"id": "user456",
"name": "Администратор",
"email": "admin@example.com",
"role": "admin"
}
}
],
"pagination": {
"page": 1,
"limit": 50,
"total": 150,
"pages": 3
}
}Примечание: Логирование действий выполняется автоматически для всех CRUD операций и изменений настроек. Подробнее см. Лог активности.
В production окружении будет применяться rate limiting:
- 100 запросов в минуту для аутентифицированных пользователей
- 10 запросов в минуту для неаутентифицированных запросов
- Роли пользователей
- Лог активности
- Система подгрупп
- Отслеживание посещаемости
- Управление экзаменами
- Менторские встречи
- Форум и обсуждения
- Документы и ресурсы
Документация обновлена: 19 ноября 2025 Версия системы: 0.4.0-alpha