Справочник API
Учётная запись и безопасность
Регистрация, подтверждение почты, профиль, смена пароля и управление персональными настройками.
Маршруты раздела
| Метод | Маршрут | Доступ | Назначение |
|---|---|---|---|
POST |
/api/auth/register |
Без входа | Создать учётную запись и отправить код подтверждения. |
POST |
/api/auth/verify-email |
Без входа | Подтвердить адрес электронной почты шестизначным кодом. |
POST |
/api/auth/resend-verification |
Без входа | Повторно отправить код подтверждения. |
POST |
/api/auth/forgot-password |
Без входа | Запросить код восстановления пароля. |
POST |
/api/auth/reset-password |
Без входа | Установить новый пароль по коду. |
GET |
/api/profile |
Нужна сессия | Получить профиль текущего пользователя. |
PATCH |
/api/profile |
Нужна сессия | Изменить имя, описание и аватар. |
POST |
/api/account/instructor/activate |
Нужна сессия | Включить преподавательский кабинет для своей учётной записи. |
POST |
/api/account/security/password |
Нужна сессия | Сменить пароль после проверки текущего. |
POST |
/api/account/security/email/request |
Нужна сессия | Запросить смену электронной почты. |
POST |
/api/account/security/email/confirm |
Нужна сессия | Подтвердить новый адрес кодом. |
DELETE |
/api/account/privacy/marketing |
Нужна сессия | Отозвать согласие на информационные рассылки. |
POST |
/api/account/privacy/deletion-request |
Нужна сессия | Создать запрос на удаление данных. |
POST |
/api/uploads/avatar |
Нужна сессия | Загрузить локальный файл аватара. |
Регистрация
POST /api/auth/register принимает JSON:
{
"email": "student@example.com",
"name": "Анна",
"password": "надёжный-пароль",
"acceptedLegal": true,
"acceptedMarketing": false
}
После ответа 201 пользователь подтверждает почту через POST /api/auth/verify-email:
{
"email": "student@example.com",
"code": "123456"
}
Коды регистрации, повторной отправки и восстановления защищены ограничением частоты запросов. Обрабатывайте 429 RATE_LIMITED как временную ошибку и не запускайте автоматический цикл повторов.
Профиль
GET /api/profile возвращает данные текущего пользователя. Для изменения передайте только нужные поля:
{
"name": "Анна Петрова",
"bio": "Изучаю Python и анализ данных",
"image": "/uploads/avatars/avatar.webp"
}
В поле image разрешён пустой текст или путь, полученный от POST /api/uploads/avatar. Произвольные внешние адреса не принимаются.
Подключение преподавательского кабинета
POST /api/account/instructor/activate не требует тела запроса и работает только с текущей учётной записью. Для роли STUDENT он включает роль INSTRUCTOR; повторный вызов для INSTRUCTOR безопасен и возвращает уже активное состояние. Более привилегированную системную роль маршрут не понижает.
Подключение кабинета не меняет зачисления, прогресс, покупки и доступ пользователя к уже приобретённым курсам.
Смена электронной почты
Процесс состоит из двух запросов:
POST /api/account/security/email/requestс новым адресом и текущим паролем.POST /api/account/security/email/confirmс новым адресом и кодом из письма.
Изменение не вступает в силу до подтверждения кода.
