Тестовое задание для HardQode для стажировки. Представляет собой простое API для системсы обучения.
В проекте реализованы следущие модели:
- Продукт:
- Название продукта
- Автор продукта
- Дата старта продукта
- Стоимость продукта
- Ученики продукта
- Урок(принадлежит продукту):
- Название урока
- Ссылка на видео
- Продукт, которому принадлежит урок
- Группа(принадлежит продукту):
- Название
- Минимальное кол-во участников
- Максимальное кол-во участников
- Учасники
- Продукт, которому принадлежит группа
Доступ через POST реквест: /api/token
Возвращает токен для доступа и рефреша
Доступ через POST реквест: /api/token/refresh
Обновляет токен
Доступ через POST реквест: /api/token/verify
Верифицирует токен
Возвращает список продуктов, доступных пользователю для покупки в формате
{
"id": "product.id",
"name": "product.name",
"price": "product.price",
"lessons_quantity": "quantity_of_lessons",
"author_id": "product.author_id"
}Доступ через GET реквест: /api/products
Требует аутентификации через JWT токен
Добавляет продукт в базу данных
Доступ через POST реквест: /api/products
Требует аутентификации через JWT токен
Необходимо указать следущии поля в теле запроса:
- product_name - Название продукта
- product_start_time - Время продукта в формате(YYYY-MM_DD hh:mm:ss)
- product_price - Цена продукта
- product_author_id - Id автора из существующих юзеров
Возвращает список уроков по конкретному продукту, к которому пользователь имеет доступ
Доступ через GET реквест: /api/products/lessons
Требует аутентификации через JWT токен
Необходимо указать в параметрах запроса product_id
Урок представлен в формате
{
"id": "lesson.id",
"name": "lesson.name",
"link_to_video": "lesson.link_to_video"
}Возвращает кол-во учеников, принадлежащих проекту
Доступ через GET реквест: /api/products/quantity_of_students
Необходимо указать в параметрах запроса product_id
Возвращает список групп в формате
{
"id": "group.id",
"name": "group.name",
"percent_of_fullness": "group.percent_of_fullness()"
}Где group.percent_of_fullness() это процент заполненности группы.
Доступ через GET реквест: /api/products/buying_rating
Необходимо указать в параметрах запроса product_id
Возвращает процент приобретения продукта в формате
{
"id": "product.id",
"name": "product.name",
"author": "product.author_id",
"price": "product.price",
"product_buying_rating": "product.buying_rating()"
}Доступ через POST реквест: /api/student
Требует аутентификации через JWT токен
Необходимо указать в теле запроса product_id
Доступ через DELETE реквест: /api/student
Требует аутентификации через JWT токен
Необходимо указать в теле запроса product_id