Skip to content

Latest commit

 

History

History
458 lines (314 loc) · 15.4 KB

File metadata and controls

458 lines (314 loc) · 15.4 KB

Техническое задание

Продуктовый помощник "Hell chicken".


Сводное HTTP API

Система должна представлять следующие HTTP-хендлеры:

Список пользователей.

Хендлер: GET /api/users.

Хендлер доступен всем типам пользователей

Query параметры:

  • page - номер страницы.
  • limit - количество объектов на странице.

Возможные коды ответа:

  • 200: Возвращает json-объект в следующем формате:
    {
      "count": 123,
      "next": "https://hellchicken.ru/api/users?page=4",
      "previous": "https://hellchicken.ru/api/users?page=2",
      "results": [
        {
          "id": "8895202b-9900-4e6d-91e0-1320748f6165",
          "email": "admin@hellchicken.ru",
          "username": "admin",
          "first_name": "Василий",
          "last_name": "Пупкин",
          "is_subscribed": false
        }
      ]
    }
  • 400 - неверный формат запроса;
  • 500 - внутренняя ошибка сервера;

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

Хендлер: POST /api/users

Хендлер доступен всем типам пользователей.

Для создания пользователя необходимы следующие данные: email, имя пользователя, имя, фамилия, пароль. Формат запроса:

{
  "email": "vpupkin@yandex.ru",
  "username": "vasya.pupkin",
  "first_name": "Вася",
  "last_name": "Пупкин",
  "password": "Qwerty123"
}

Возможные коды ответа:

  • 201 - профиль создан: Формат ответа:
    {
      "id": "8895202b-9900-4e6d-91e0-1320748f6165",
      "email": "vpupkin@yandex.ru",
      "username": "vasya.pupkin",
      "first_name": "Вася",
      "last_name": "Пупкин",
      "password": "Qwerty123"
    }
  • 400 - неверный формат запроса;
  • 500 - внутренняя ошибка сервера;

Профиль пользователя

Хендлер: GET /api/users/{user_id}

Хендлер доступен без авторизации. Path параметры:

  • user_id - уникальный идентификатор пользователя.

Возможные коды ответа:

  • 200 - пользователь найден: Формат ответа:
    {
      "id": "8895202b-9900-4e6d-91e0-1320748f6165",
      "email": "vpupkin@yandex.ru",
      "username": "vasya.pupkin",
      "first_name": "Вася",
      "last_name": "Пупкин",
      "is_subscribed": false
    }
  • 404 - пользователь не найден;
  • 500 - внутренняя ошибка сервера;

Текущий пользователь

Хендлер: GET /api/users/me

Хендлер доступен только аутентифицированным пользователям.

Возможные коды ответа:

  • 200 - ОК: Формат ответа:
    {
      "id": "8895202b-9900-4e6d-91e0-1320748f6165",
      "email": "vpupkin@yandex.ru",
      "username": "vasya.pupkin",
      "first_name": "Вася",
      "last_name": "Пупкин",
      "is_subscribed": false
    }
  • 401 - пользователь не аутентифицирован;
  • 500 - внутренняя ошибка сервера;

Изменение пароля

Хендлер: POST /api/users/set_password

Хендлер доступен только аутентифицированным пользователям.

Для изменения пароля необходимы следующие данные: старый пароль, новый пароль. Данные необходимо передать в следующем формате:

{
  "new_password": "strong_password",
  "current_password": "Querty123"
}

Возможные коды ответа:

  • 204 - пароль успешно изменен;
  • 400 - неверный формат запроса;
  • 401 - пользователь не аутентифицирован;
  • 500 - внутренняя ошибка сервера;

Получить токен авторизации

Хендлер: POST /api/token/login

Аутентификация происходит по паре почта, пароль. После успешной аутентификации хендлер создает токен, который можно использовать в дальнейшем при запросах.

Формат запроса:

{
  "email": "vpupkin@yandex.ru",
  "password": "strong_password"
}

Возможные коды ответа:

  • 201 - создан токен: Формат ответа:
    {
      "auth_token": "some token string"
    }
  • 401 - пользователь не аутентифицирован;
  • 500 - внутренняя ошибка сервера;

Удаление токена авторизации

Хендлер: POST /api/token/logout

Для удаления, токен

Возможные коды ответа:

  • 200 - ОК
  • 401 - пользователь не аутентифицирован;
  • 500 - внутренняя ошибка сервера;

Список тегов

Хендлер: GET /api/tags

Возможные коды ответа:

  • 200 - ОК
  • 401 - пользователь не аутентифицирован;
  • 500 - внутренняя ошибка сервера;

Получение тега

Хендлер: GET /api/tags/{tag_id}

Возможные коды ответа:

  • 200 - ОК
  • 401 - пользователь не аутентифицирован;
  • 500 - внутренняя ошибка сервера;

Создание тега

Хендлер: POST /api/tags

Возможные коды ответа:

  • 200 - ОК
  • 401 - пользователь не аутентифицирован;
  • 500 - внутренняя ошибка сервера;

Изменение тега

Хендлер: PATCH /api/tags/{tag_id}

Возможные коды ответа:

  • 200 - ОК
  • 401 - пользователь не аутентифицирован;
  • 500 - внутренняя ошибка сервера;

Удаление тега

Хендлер: DELETE /api/tags/{tag_id}

Возможные коды ответа:

  • 200 - ОК
  • 401 - пользователь не аутентифицирован;
  • 500 - внутренняя ошибка сервера;

Список рецептов

Хендлер: GET /api/recipes

Возможные коды ответа:

  • 200 - ОК
  • 401 - пользователь не аутентифицирован;
  • 500 - внутренняя ошибка сервера;

Создание рецепта

Хендлер: POST /api/recipes

Возможные коды ответа:

  • 200 - ОК
  • 401 - пользователь не аутентифицирован;
  • 500 - внутренняя ошибка сервера;

Получение рецепта

Хендлер: GET /api/recipes/{recipe_id}

Возможные коды ответа:

  • 200 - ОК
  • 401 - пользователь не аутентифицирован;
  • 500 - внутренняя ошибка сервера;

Обновление рецепта

Хендлер: PATCH /api/recipes/{recipe_id}

Возможные коды ответа:

  • 200 - ОК
  • 401 - пользователь не аутентифицирован;
  • 500 - внутренняя ошибка сервера;

Удаление рецепта

Хендлер: DELETE /api/recipes/{recipe_id}

Возможные коды ответа:

  • 200 - ОК
  • 401 - пользователь не аутентифицирован;
  • 500 - внутренняя ошибка сервера;

Скачать список покупок

Хендлер: GET /api/recipes/download_shopping_cart

Возможные коды ответа:

  • 200 - ОК
  • 401 - пользователь не аутентифицирован;
  • 500 - внутренняя ошибка сервера;

Добавить рецепт в избранное

Хендлер: POST /api/recipes/{recipe_id}/favorite

Возможные коды ответа:

  • 200 - ОК
  • 401 - пользователь не аутентифицирован;
  • 500 - внутренняя ошибка сервера;

Добавить рецепт в список покупок

Хендлер: POST /api/recipes/{recipe_id}/shopping_cart

Возможные коды ответа:

  • 200 - ОК
  • 401 - пользователь не аутентифицирован;
  • 500 - внутренняя ошибка сервера;

Удалить рецепт из избранного

Хендлер: DELETE /api/recipes/{recipe_id}/favorite

Возможные коды ответа:

  • 200 - ОК
  • 401 - пользователь не аутентифицирован;
  • 500 - внутренняя ошибка сервера;

Удалить рецепт из списка покупок

Хендлер: DELETE /api/recipes/{recipe_id}/shopping_cart

Возможные коды ответа:

  • 200 - ОК
  • 401 - пользователь не аутентифицирован;
  • 500 - внутренняя ошибка сервера;

Мои подписки

Хендлер: GET /api/users/subscriptions

Возможные коды ответа:

  • 200 - ОК
  • 401 - пользователь не аутентифицирован;
  • 500 - внутренняя ошибка сервера;

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

Хендлер: POST /api/users/{user_id}/subscribe

Возможные коды ответа:

  • 200 - ОК
  • 401 - пользователь не аутентифицирован;
  • 500 - внутренняя ошибка сервера;

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

Хендлер: DELETE /api/users/{user_id}/subscribe

Возможные коды ответа:

  • 200 - ОК
  • 401 - пользователь не аутентифицирован;
  • 500 - внутренняя ошибка сервера;

Список ингредиентов

Хендлер: GET /api/ingredients

Возможные коды ответа:

  • 200 - ОК
  • 401 - пользователь не аутентифицирован;
  • 500 - внутренняя ошибка сервера;

Создание ингредиента

Хендлер: POST /api/ingredients

Возможные коды ответа:

  • 200 - ОК
  • 401 - пользователь не аутентифицирован;
  • 500 - внутренняя ошибка сервера;

Получение ингредиента

Хендлер: GET /api/ingredients/{ingredient_id}

Возможные коды ответа:

  • 200 - ОК
  • 401 - пользователь не аутентифицирован;
  • 500 - внутренняя ошибка сервера;

Обновление ингредиента

Хендлер: PATCH /api/ingredients/{ingredient_id}

Возможные коды ответа:

  • 200 - ОК
  • 401 - пользователь не аутентифицирован;
  • 500 - внутренняя ошибка сервера;

Удаление ингредиента

Хендлер: DELETE /api/ingredients/{ingredients_id}

Возможные коды ответа:

  • 200 - ОК
  • 401 - пользователь не аутентифицирован;
  • 500 - внутренняя ошибка сервера;