Skip to content

Endpoints

Alexander Nekrasov edited this page Jun 21, 2024 · 17 revisions

Описание конечных точек приложения

Конечные точки пользователей

Вход и авторизация

Регистрация пользователя

  • Путь: /api/auth/register
  • Метод: POST
  • Параметры тела запроса:
    • login – логин.
    • password – пароль.
  • Пример:
    {
        "login": "[email protected]",
        "password": "admin123",
    }
  • Ответы:
    • JWT-токен в куки в заголовке ответа Set-Cookie, код ответа – 200.
    • Сообщение о том, что логин-почта занят, код ответа – 409.
    • Сообщение о том, что пароль слишком простой, код ответа – 400.
    • Объект с ошибками валидации (логина-почты), код ответа – 422.

Вход в аккаунт

  • Путь: /api/auth/login
  • Метод: POST
  • Параметры тела запроса:
    • login – логин.
    • password – пароль.
  • Пример:
    {
        "login": "[email protected]",
        "password": "admin123"
    }
  • Ответы:
    • JWT-токен в куки в заголовке ответа Set-Cookie, код ответа – 200.
    • Сообщение о неудачной попытке входа, код ответа – 400.

Выход из аккаунта

  • Путь: /api/auth/logout
  • Метод: POST
  • Ответы:
    • Удаляет сессию и куки из браузера пользователя, код ответа – 200.
    • Сообщение о необходимости авторизованного доступа, код ответа – 403.

Управление аккаунтом

Получение информации о пользователе

  • Путь: /api/users/{user_id}
  • Метод: GET
  • Ответы:
    • Структура объекта пользователя, код ответа – 200.
    • Сообщение о том, что пользователь не найден, код ответа – 404.
    • Сообщение о том, что ID не валидно, код ответа – 422.
    • Сообщение о необходимости авторизованного доступа, код ответа – 403.

Обновление информации о пользователе

  • Путь: /api/users/{user_id}
  • Метод: PUT
  • Параметры тела запроса:
    • login – новый логин (mail) пользователя.
    • role – новая роль пользователя (enum: ['admin', 'moder', 'student', 'teacher']).
    • name – новое имя пользователя.
    • password – новый пароль пользователя.
  • Пример:
    {
        "login": "[email protected]",
        "role": "admin",
        "name": "User User",
        "password": "admin123",
    }
  • Ответы:
    • Обновленная структура объекта пользователя, код ответа – 200.
    • Сообщение о том, что пользователь не найден, код ответа – 404.
    • Сообщение о том, что ID или тело не валидно, код ответа – 422.
    • Сообщение о необходимости авторизованного доступа, код ответа – 403.

Удаление аккаунта пользователя

  • Путь: /api/users/{user_id}
  • Метод: DELETE
  • Ответы:
    • Код ответа – 204.
    • Сообщение о том, что пользователь не найден, код ответа – 404.
    • Сообщение о том, что ID не валидно, код ответа – 422.
    • Сообщение о необходимости авторизованного доступа, код ответа – 403.

Конечные точки платформы


Конечные точки курсов

Управление курсами

Создание курса

  • Путь: /api/courses
  • Метод: POST
  • Параметры тела запроса:
    • title (string) – наименование курса
    • description (string) – описание курса
    • author_id (string) – ID автора курса
  • Тело запроса:
    {
      "title": "Интенсивный курс HIIT",
      "description": "Курс с высокоинтенсивными интервальными тренировками",
      "author_id": "26bda06d-bb5e-4b4b-91cb-6b05e4cfac2c"
    }
  • Ответы:
    • JSON-документ с ID (в формате UUID) созданного курса, код ответа - 201:
      {
          "course_id": "26bda06d-bb5e-4b4b-91cb-6b05e4cfac2c"
      }
    • Объект с ошибками валидации, код ответа – 422.
    • Сообщение о том, что курс с таким названием у автора уже существует, код ответа – 409.
    • Сообщение о необходимости авторизованного доступа, код ответа – 403.

Удаление курса

  • Путь: /api/courses/{course_id}
  • Метод: DELETE
  • Параметры пути:
    • course_id (string,uuid) – ID курса
  • Ответы:
    • Код ответа - 204.
    • Сообщение о том, что ID не валидно, код ответа – 422.
    • Сообщение о необходимости авторизованного доступа, код ответа – 403.
    • Сообщение о том, что курс не найден, код ответа – 404.

Управление заявками на курсы

Получение информации о заявках на запись на курс

  • Путь: /api/courses/{course_id}/requests?status={status}
  • Метод: GET
  • Параметры пути запроса:
    • course_id (string,uuid) – ID курса
    • status (string) – выбранный статус заявок, если пусто – все возможные.
  • Ответы:
    • Список ID пользователей, подписавшихся на курс со статусом заявки (approved – принята, declined – отклонена, pending – ожидает принятия решения), код ответа – 200.
    [
      {
        "user_id": "26bda06d-bb5e-4b4b-91cb-6b05e4cfac2c",
        "status": "declined"
      }
    ]
    • Объект с ошибками валидации ID/статуса, код ответа – 422.
    • Сообщение о необходимости авторизованного доступа, код ответа – 403.
    • Сообщение о том, что курс не найден, код ответа – 404.

Получение информации о заявке на запись на курс

  • Путь: /api/courses/{course_id}/requests/{request_id}
  • Метод: GET
  • Параметры пути запроса:
    • course_id (string,uuid) – ID курса
    • request_id – ID заявки (пользователя)
  • Ответы:
    • Структура объекта, описывающая пользователя, подписавшегося на курс со статусом заявки (approved – принята, declined – отклонена, pending – ожидает принятия решения), код ответа – 200.
    {
      "user_id": "26bda06d-bb5e-4b4b-91cb-6b05e4cfac2c",
      "status": "declined"
    }
    • Объект с ошибками валидации ID, код ответа – 422.
    • Сообщение о необходимости авторизованного доступа, код ответа – 403.
    • Сообщение о том, что курс/заявка не найдена, код ответа – 404.

Отправка заявки на запись на курс

  • Путь: /api/courses/{course_id}/requests/{request_id}
  • Метод: POST
  • Параметры пути запроса:
    • course_id (string,uuid) – ID курса
    • request_id – ID pfzdrb (пользователя) для отправки заявки
  • Ответы:
    • Сообщение об успешном добавлении пользователя в очередь ожидания, код ответа – 200.
    • Объект с ошибками валидации ID, код ответа – 422.
    • Сообщение о том, что пользователь уже подписан на курс, код ответа – 409.
    • Сообщение о том, что пользователь/курс не найден, код ответа – 404.
    • Сообщение о необходимости авторизованного доступа, код ответа – 403.

Отмена заявки на запись на курс

  • Путь: /api/courses/{course_id}/requests/{request_id}
  • Метод: DELETE
  • Параметры пути запроса:
    • course_id (string,uuid) – ID курса
    • request_id – ID заявки для отмены
  • Ответы:
    • Сообщение об успешной отмене заявки, код ответа – 200.
    • Объект с ошибками валидации ID, код ответа – 422.
    • Сообщение о том, что заявка/курс не найден, код ответа – 404.
    • Сообщение о необходимости авторизованного доступа, код ответа – 403.

Обновление статуса заявки на запись на курс

  • Путь: /api/courses/{course_id}/requests/{request_id}

  • Метод: PUT

  • Параметры тела запроса:

    • status (string) – новый статус заявки (approved, declined, pending)
  • Тело запроса:

    {
      "status": "declined"
    }
  • Параметры пути запроса:

    • course_id (string,uuid) – ID курса
    • request_id – ID заявки для обновления
  • Ответы:

    • Сообщение об успешном обновлении статуса заявки, код ответа – 200.
    • Объект с ошибками валидации ID, код ответа – 422.
    • Сообщение о том, что заявка/курс не найден, код ответа – 404.
    • Сообщение о необходимости авторизованного доступа, код ответа – 403.

Конечные точки модулей

Добавление модуля

  • Путь: /api/courses/{course_id}/modules
  • Метод: POST
  • Параметры пути:
    • course_id (string) – идентификатор курса, к которому будет добавлен модуль
  • Параметры тела запроса:
    • title (string) – наименование модуля
  • Тело запроса:
    {
    "title": "Введение в HIIT"
    }
  • Ответы:
    • JSON-документ с информацией о добавленном модуле, код ответа - 201:
      {
          "module_id": "26bda06d-bb5e-4b4b-91cb-6b05e4caac4c",
          "title": "Введение в HIIT",
          "course_id": "26bda06d-bb5e-4b4b-91cb-6b05e4cfac2c"
      }
    • Сообщение о том, что ID не валидно, код ответа – 422.
    • Сообщение о необходимости авторизованного доступа, код ответа – 403.
    • Сообщение о том, что курс не найден, код ответа – 404.

Удаление модуля

  • Путь: /api/courses/{course_id}/modules/{module_id}

  • Метод: DELETE

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

    • course_id (string) – идентификатор курса, к которому будет добавлен модуль
    • module_id (string) – идентификатор удаляемого модуля
  • Пример запроса DELETE /api/courses/26bda06d-bb5e-4b4b-91cb-6b05e4cfac2c/modules/26bda06d-bb5e-4b4b-91cb-6b05e4caac4c

  • Ответы:

    • Код ответа - 204.
    • Сообщение о том, что ID курса и/или модуля не валидно, код ответа – 422.
    • Сообщение о необходимости авторизованного доступа, код ответа – 403.
    • Сообщение о том, что курс/модуль не найден, код ответа – 404.