2024-02-09 02:57:34 +03:00
{
"openapi" : "3.1.0" ,
"info" : {
"title" : "Fastfood-API" ,
"description" : "\n# 🔥🔥🔥Fastfood-API поможет тебе подкрепиться 🔥🔥🔥\n\n### У нас есть Menu. Ты можеш выбрать блюда из кухни, которая тебе нравится\n\n## Menu\n\nТ ы можешь **add menu**.\n\nТ ы можешь **read menu**.\n\nТ ы можешь **patch menu**.\n\nТ ы можешь **delete menu**.\n\n### У нас есть в SubMenu, где ты сможешь найти\nде с е р ты/напитки/супчики/прочие вкусности\n\n# SubMenu\n\nТ ы можешь **add submenu into menu**.\n\nТ ы можешь **read submenu**.\n\nТ ы можешь **patch submenu**.\n\nТ ы можешь **delete menu**.\n\n### У нас есть в Dish, где ты сможешь найти блюдо по вкусу\n\n# Dish\n\nТ ы можешь **add dish into submenu**.\n\nТ ы можешь **read dish**.\n\nТ ы можешь **patch dish**.\n\nТ ы можешь **delete dish**.\n\n# Summary\n\nМ о же ш посмотреть все меню целиком\n\n## Приятного аппетита\n" ,
"contact" : {
"name" : "Sergey Vanyushkin" ,
"url" : "http://pi3c.ru/" ,
"email" : "pi3c@yandex.ru"
} ,
"license" : {
"name" : "MIT license" ,
"url" : "https://mit-license.org/"
} ,
"version" : "0.0.3"
} ,
"paths" : {
"/api/v1/menus/" : {
"get" : {
"tags" : [
"menu"
] ,
"summary" : "Получить список меню" ,
"description" : "Этот метод позволяет получить все меню." ,
"operationId" : "get_menus_api_v1_menus__get" ,
"responses" : {
"200" : {
"description" : "Successful Response" ,
"content" : {
"application/json" : {
"schema" : {
"items" : {
"$ref" : "#/components/schemas/MenuRead"
} ,
"type" : "array" ,
"title" : "Response Get Menus Api V1 Menus Get"
}
}
}
}
}
} ,
"post" : {
"tags" : [
"menu"
] ,
"summary" : "Создать меню" ,
"description" : "Этот метод позволяет создать меню" ,
"operationId" : "add_menu_api_v1_menus__post" ,
"requestBody" : {
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/MenuBase"
}
}
} ,
"required" : true
} ,
"responses" : {
"201" : {
"description" : "Successful Response" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/MenuRead"
}
}
}
} ,
"422" : {
"description" : "Validation Error" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/HTTPValidationError"
}
}
}
}
}
}
} ,
"/api/v1/menus/{menu_id}" : {
"get" : {
"tags" : [
"menu"
] ,
"summary" : "Получить меню" ,
"description" : "Этот метод позволяет получить меню по е г о UUID" ,
"operationId" : "get_menu_api_v1_menus__menu_id__get" ,
"parameters" : [
{
"name" : "menu_id" ,
"in" : "path" ,
"required" : true ,
"schema" : {
"type" : "string" ,
"format" : "uuid" ,
"title" : "Menu Id"
}
}
] ,
"responses" : {
"200" : {
"description" : "Successful Response" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/MenuRead"
}
}
}
} ,
"404" : {
"description" : "Menu not found" ,
"content" : {
"application/json" : {
"example" : {
"detail" : "sting"
}
}
}
} ,
"422" : {
"description" : "Validation Error" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/HTTPValidationError"
}
}
}
}
}
} ,
"patch" : {
"tags" : [
"menu"
] ,
"summary" : "Обновить меню" ,
"description" : "Этот метод позволяет изменить меню по е г о UUID" ,
"operationId" : "update_menu_api_v1_menus__menu_id__patch" ,
"parameters" : [
{
"name" : "menu_id" ,
"in" : "path" ,
"required" : true ,
"schema" : {
"type" : "string" ,
"format" : "uuid" ,
"title" : "Menu Id"
}
}
] ,
"requestBody" : {
"required" : true ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/MenuBase"
}
}
}
} ,
"responses" : {
"200" : {
"description" : "Successful Response" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/MenuRead"
}
}
}
} ,
"404" : {
"description" : "Menu not found" ,
"content" : {
"application/json" : {
"example" : {
"detail" : "string"
}
}
}
} ,
"422" : {
"description" : "Validation Error" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/HTTPValidationError"
}
}
}
}
}
} ,
"delete" : {
"tags" : [
"menu"
] ,
"summary" : "Удалить меню" ,
"description" : "Этот метод позволяет удалить меню по е г о UUID" ,
"operationId" : "delete_menu_api_v1_menus__menu_id__delete" ,
"parameters" : [
{
"name" : "menu_id" ,
"in" : "path" ,
"required" : true ,
"schema" : {
"type" : "string" ,
"format" : "uuid" ,
"title" : "Menu Id"
}
}
] ,
"responses" : {
"200" : {
"description" : "Successful Response" ,
"content" : {
"application/json" : {
"schema" : { }
}
}
} ,
"422" : {
"description" : "Validation Error" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/HTTPValidationError"
}
}
}
}
}
}
} ,
"/api/v1/menus/{menu_id}/submenus/" : {
"get" : {
"tags" : [
"submenu"
] ,
"summary" : "Получить список подменю" ,
"description" : "Этот метод позволяет получить список подменю основного меню по UUID меню" ,
"operationId" : "get_submenus_api_v1_menus__menu_id__submenus__get" ,
"parameters" : [
{
"name" : "menu_id" ,
"in" : "path" ,
"required" : true ,
"schema" : {
"type" : "string" ,
"format" : "uuid" ,
"title" : "Menu Id"
}
}
] ,
"responses" : {
"200" : {
"description" : "Successful Response" ,
"content" : {
"application/json" : {
"schema" : {
"type" : "array" ,
"items" : {
"$ref" : "#/components/schemas/SubMenuRead"
} ,
"title" : "Response Get Submenus Api V1 Menus Menu Id Submenus Get"
}
}
}
} ,
"422" : {
"description" : "Validation Error" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/HTTPValidationError"
}
}
}
}
}
} ,
"post" : {
"tags" : [
"submenu"
] ,
"summary" : "Создать подменю" ,
"description" : "Этот метод позволяет создать подменю по UUID родителского меню" ,
"operationId" : "create_submenu_item_api_v1_menus__menu_id__submenus__post" ,
"parameters" : [
{
"name" : "menu_id" ,
"in" : "path" ,
"required" : true ,
"schema" : {
"type" : "string" ,
"format" : "uuid" ,
"title" : "Menu Id"
}
}
] ,
"requestBody" : {
"required" : true ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/MenuBase"
}
}
}
} ,
"responses" : {
"201" : {
"description" : "Successful Response" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/SubMenuRead"
}
}
}
} ,
"422" : {
"description" : "Validation Error" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/HTTPValidationError"
}
}
}
}
}
}
} ,
"/api/v1/menus/{menu_id}/submenus/{submenu_id}" : {
"get" : {
"tags" : [
"submenu"
] ,
"summary" : "Получить подменю" ,
"description" : "Этот метод позволяет получить подменю по е г о UUID и UUID родительского меню" ,
"operationId" : "get_submenu_api_v1_menus__menu_id__submenus__submenu_id__get" ,
"parameters" : [
{
"name" : "menu_id" ,
"in" : "path" ,
"required" : true ,
"schema" : {
"type" : "string" ,
"format" : "uuid" ,
"title" : "Menu Id"
}
} ,
{
"name" : "submenu_id" ,
"in" : "path" ,
"required" : true ,
"schema" : {
"type" : "string" ,
"format" : "uuid" ,
"title" : "Submenu Id"
}
}
] ,
"responses" : {
"200" : {
"description" : "Successful Response" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/SubMenuRead"
}
}
}
} ,
"404" : {
"description" : "Submenu not found" ,
"content" : {
"application/json" : {
"example" : {
"detail" : "string"
}
}
}
} ,
"422" : {
"description" : "Validation Error" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/HTTPValidationError"
}
}
}
}
}
} ,
"patch" : {
"tags" : [
"submenu"
] ,
"summary" : "Обновить подменю" ,
"description" : "Этот метод позволяет обновить подменю по е г о UUID и UUID родительского меню" ,
"operationId" : "update_submenu_api_v1_menus__menu_id__submenus__submenu_id__patch" ,
"parameters" : [
{
"name" : "menu_id" ,
"in" : "path" ,
"required" : true ,
"schema" : {
"type" : "string" ,
"format" : "uuid" ,
"title" : "Menu Id"
}
} ,
{
"name" : "submenu_id" ,
"in" : "path" ,
"required" : true ,
"schema" : {
"type" : "string" ,
"format" : "uuid" ,
"title" : "Submenu Id"
}
}
] ,
"requestBody" : {
"required" : true ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/MenuBase"
}
}
}
} ,
"responses" : {
"200" : {
"description" : "Successful Response" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/SubMenuRead"
}
}
}
} ,
"404" : {
"description" : "Submenu not found" ,
"content" : {
"application/json" : {
"example" : {
"detail" : "string"
}
}
}
} ,
"422" : {
"description" : "Validation Error" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/HTTPValidationError"
}
}
}
}
}
} ,
"delete" : {
"tags" : [
"submenu"
] ,
"summary" : "Удалить подменю" ,
"description" : "Этот метод позволяет удалить подменю по е г о UUID" ,
"operationId" : "delete_submenu_api_v1_menus__menu_id__submenus__submenu_id__delete" ,
"parameters" : [
{
"name" : "menu_id" ,
"in" : "path" ,
"required" : true ,
"schema" : {
"type" : "string" ,
"format" : "uuid" ,
"title" : "Menu Id"
}
} ,
{
"name" : "submenu_id" ,
"in" : "path" ,
"required" : true ,
"schema" : {
"type" : "string" ,
"format" : "uuid" ,
"title" : "Submenu Id"
}
}
] ,
"responses" : {
"200" : {
"description" : "Successful Response" ,
"content" : {
"application/json" : {
"schema" : { }
}
}
} ,
"422" : {
"description" : "Validation Error" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/HTTPValidationError"
}
}
}
}
}
}
} ,
"/api/v1/menus/{menu_id}/submenus/{submenu_id}/dishes/" : {
"get" : {
"tags" : [
"dish"
] ,
"summary" : "Получить список блюд" ,
"description" : "Этот метод позволяет получить список всех блюда по UUID родительских меню и подменю" ,
"operationId" : "get_dishes_api_v1_menus__menu_id__submenus__submenu_id__dishes__get" ,
"parameters" : [
{
"name" : "menu_id" ,
"in" : "path" ,
"required" : true ,
"schema" : {
"type" : "string" ,
"format" : "uuid" ,
"title" : "Menu Id"
}
} ,
{
"name" : "submenu_id" ,
"in" : "path" ,
"required" : true ,
"schema" : {
"type" : "string" ,
"format" : "uuid" ,
"title" : "Submenu Id"
}
}
] ,
"responses" : {
"200" : {
"description" : "Successful Response" ,
"content" : {
"application/json" : {
"schema" : {
"type" : "array" ,
"items" : {
"$ref" : "#/components/schemas/Dish"
} ,
"title" : "Response Get Dishes Api V1 Menus Menu Id Submenus Submenu Id Dishes Get"
}
}
}
} ,
"422" : {
"description" : "Validation Error" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/HTTPValidationError"
}
}
}
}
}
} ,
"post" : {
"tags" : [
"dish"
] ,
"summary" : "Создать блюдо" ,
"description" : "Этот метод позволяет создать блюдо по UUIDе г о родительских меню и подменю" ,
"operationId" : "create_dish_api_v1_menus__menu_id__submenus__submenu_id__dishes__post" ,
"parameters" : [
{
"name" : "menu_id" ,
"in" : "path" ,
"required" : true ,
"schema" : {
"type" : "string" ,
"format" : "uuid" ,
"title" : "Menu Id"
}
} ,
{
"name" : "submenu_id" ,
"in" : "path" ,
"required" : true ,
"schema" : {
"type" : "string" ,
"format" : "uuid" ,
"title" : "Submenu Id"
}
}
] ,
"requestBody" : {
"required" : true ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/DishBase"
}
}
}
} ,
"responses" : {
"201" : {
"description" : "Successful Response" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Dish"
}
}
}
} ,
"422" : {
"description" : "Validation Error" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/HTTPValidationError"
}
}
}
}
}
}
} ,
"/api/v1/menus/{menu_id}/submenus/{submenu_id}/dishes/{dish_id}" : {
"get" : {
"tags" : [
"dish"
] ,
"summary" : "Получить блюдо" ,
"description" : "Этот метод позволяет получить блюдо по е г о UUID и UUID е г о родительских меню" ,
"operationId" : "get_dish_api_v1_menus__menu_id__submenus__submenu_id__dishes__dish_id__get" ,
"parameters" : [
{
"name" : "menu_id" ,
"in" : "path" ,
"required" : true ,
"schema" : {
"type" : "string" ,
"format" : "uuid" ,
"title" : "Menu Id"
}
} ,
{
"name" : "submenu_id" ,
"in" : "path" ,
"required" : true ,
"schema" : {
"type" : "string" ,
"format" : "uuid" ,
"title" : "Submenu Id"
}
} ,
{
"name" : "dish_id" ,
"in" : "path" ,
"required" : true ,
"schema" : {
"type" : "string" ,
"format" : "uuid" ,
"title" : "Dish Id"
}
}
] ,
"responses" : {
"200" : {
"description" : "Successful Response" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Dish"
}
}
}
} ,
"404" : {
"description" : "Dish not found" ,
"content" : {
"application/json" : {
"example" : {
"detail" : "string"
}
}
}
} ,
"422" : {
"description" : "Validation Error" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/HTTPValidationError"
}
}
}
}
}
} ,
"patch" : {
"tags" : [
"dish"
] ,
"summary" : "Обновить блюдо" ,
"description" : "Этот метод позволяет обновить блюдо по е г о UUID и UUID родительских меню" ,
"operationId" : "update_dish_api_v1_menus__menu_id__submenus__submenu_id__dishes__dish_id__patch" ,
"parameters" : [
{
"name" : "menu_id" ,
"in" : "path" ,
"required" : true ,
"schema" : {
"type" : "string" ,
"format" : "uuid" ,
"title" : "Menu Id"
}
} ,
{
"name" : "submenu_id" ,
"in" : "path" ,
"required" : true ,
"schema" : {
"type" : "string" ,
"format" : "uuid" ,
"title" : "Submenu Id"
}
} ,
{
"name" : "dish_id" ,
"in" : "path" ,
"required" : true ,
"schema" : {
"type" : "string" ,
"format" : "uuid" ,
"title" : "Dish Id"
}
}
] ,
"requestBody" : {
"required" : true ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/DishBase"
}
}
}
} ,
"responses" : {
"200" : {
"description" : "Successful Response" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/Dish"
}
}
}
} ,
"404" : {
"description" : "Dish not found" ,
"content" : {
"application/json" : {
"example" : {
"detail" : "string"
}
}
}
} ,
"422" : {
"description" : "Validation Error" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/HTTPValidationError"
}
}
}
}
}
} ,
"delete" : {
"tags" : [
"dish"
] ,
"summary" : "Удалить блюдо" ,
"description" : "Этот метод позволяет удалить блюдо по е г о UUID и UUID родительских меню" ,
"operationId" : "delete_dish_api_v1_menus__menu_id__submenus__submenu_id__dishes__dish_id__delete" ,
"parameters" : [
{
"name" : "menu_id" ,
"in" : "path" ,
"required" : true ,
"schema" : {
"type" : "string" ,
"format" : "uuid" ,
"title" : "Menu Id"
}
} ,
{
"name" : "submenu_id" ,
"in" : "path" ,
"required" : true ,
"schema" : {
"type" : "string" ,
"format" : "uuid" ,
"title" : "Submenu Id"
}
} ,
{
"name" : "dish_id" ,
"in" : "path" ,
"required" : true ,
"schema" : {
"type" : "string" ,
"format" : "uuid" ,
"title" : "Dish Id"
}
}
] ,
"responses" : {
"200" : {
"description" : "Successful Response" ,
"content" : {
"application/json" : {
"schema" : { }
}
}
} ,
"422" : {
"description" : "Validation Error" ,
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/HTTPValidationError"
}
}
}
}
}
}
} ,
"/api/v1/summary/" : {
"get" : {
"tags" : [
"summary"
] ,
"summary" : "Получить все меню" ,
"description" : "Этот метод позволяет получить полную структуру меню состоящую из меню, подменю и блюд" ,
"operationId" : "get_summary_api_v1_summary__get" ,
"responses" : {
"200" : {
"description" : "Successful Response" ,
"content" : {
"application/json" : {
"schema" : {
"items" : {
"$ref" : "#/components/schemas/MenuSummary"
} ,
"type" : "array" ,
"title" : "Response Get Summary Api V1 Summary Get"
}
}
}
}
}
}
}
} ,
"components" : {
"schemas" : {
"Dish" : {
"properties" : {
"title" : {
"type" : "string" ,
"title" : "Title"
} ,
"description" : {
"anyOf" : [
{
"type" : "string"
} ,
{
"type" : "null"
}
] ,
"title" : "Description"
} ,
"id" : {
"type" : "string" ,
"format" : "uuid" ,
"title" : "Id"
} ,
"price" : {
"type" : "string" ,
"title" : "Price"
}
} ,
"type" : "object" ,
"required" : [
"title" ,
"description" ,
"id" ,
"price"
] ,
"title" : "Dish"
} ,
"DishBase" : {
"properties" : {
"title" : {
"type" : "string" ,
"title" : "Title"
} ,
"description" : {
"anyOf" : [
{
"type" : "string"
} ,
{
"type" : "null"
}
] ,
"title" : "Description"
} ,
"price" : {
"type" : "string" ,
"title" : "Price"
}
} ,
"type" : "object" ,
"required" : [
"title" ,
"description" ,
"price"
] ,
"title" : "DishBase"
} ,
"HTTPValidationError" : {
"properties" : {
"detail" : {
"items" : {
"$ref" : "#/components/schemas/ValidationError"
} ,
"type" : "array" ,
"title" : "Detail"
}
} ,
"type" : "object" ,
"title" : "HTTPValidationError"
} ,
"MenuBase" : {
"properties" : {
"title" : {
"type" : "string" ,
"title" : "Title"
} ,
"description" : {
"anyOf" : [
{
"type" : "string"
} ,
{
"type" : "null"
}
] ,
"title" : "Description"
}
} ,
"type" : "object" ,
"required" : [
"title" ,
"description"
] ,
"title" : "MenuBase"
} ,
"MenuRead" : {
"properties" : {
"title" : {
"type" : "string" ,
"title" : "Title"
} ,
"description" : {
"anyOf" : [
{
"type" : "string"
} ,
{
"type" : "null"
}
] ,
"title" : "Description"
} ,
"id" : {
"type" : "string" ,
"format" : "uuid" ,
"title" : "Id"
} ,
"submenus_count" : {
"type" : "integer" ,
"title" : "Submenus Count"
} ,
"dishes_count" : {
"type" : "integer" ,
"title" : "Dishes Count"
}
} ,
"type" : "object" ,
"required" : [
"title" ,
"description" ,
"id" ,
"submenus_count" ,
"dishes_count"
] ,
"title" : "MenuRead"
} ,
"SubMenuRead" : {
"properties" : {
"title" : {
"type" : "string" ,
"title" : "Title"
} ,
"description" : {
"anyOf" : [
{
"type" : "string"
} ,
{
"type" : "null"
}
] ,
"title" : "Description"
} ,
"id" : {
"type" : "string" ,
"format" : "uuid" ,
"title" : "Id"
} ,
"dishes_count" : {
"type" : "integer" ,
"title" : "Dishes Count"
}
} ,
"type" : "object" ,
"required" : [
"title" ,
"description" ,
"id" ,
"dishes_count"
] ,
"title" : "SubMenuRead"
} ,
"ValidationError" : {
"properties" : {
"loc" : {
"items" : {
"anyOf" : [
{
"type" : "string"
} ,
{
"type" : "integer"
}
]
} ,
"type" : "array" ,
"title" : "Location"
} ,
"msg" : {
"type" : "string" ,
"title" : "Message"
} ,
"type" : {
"type" : "string" ,
"title" : "Error Type"
}
} ,
"type" : "object" ,
"required" : [
"loc" ,
"msg" ,
"type"
] ,
"title" : "ValidationError"
} ,
"MenuSummary" : {
"properties" : {
"title" : {
"type" : "string" ,
"title" : "Title"
} ,
"description" : {
"anyOf" : [
{
"type" : "string"
} ,
{
"type" : "null"
}
] ,
"title" : "Description"
} ,
"id" : {
"type" : "string" ,
"format" : "uuid" ,
"title" : "Id"
} ,
"submenus" : {
"items" : {
"$ref" : "#/components/schemas/SubMenuSummary"
} ,
"type" : "array" ,
"title" : "Submenus"
}
} ,
"type" : "object" ,
"required" : [
"title" ,
"description" ,
"id" ,
"submenus"
] ,
"title" : "MenuSummary"
} ,
"SubMenuSummary" : {
"properties" : {
"title" : {
"type" : "string" ,
"title" : "Title"
} ,
"description" : {
"anyOf" : [
{
"type" : "string"
} ,
{
"type" : "null"
}
] ,
"title" : "Description"
} ,
"id" : {
"type" : "string" ,
"format" : "uuid" ,
"title" : "Id"
} ,
"dishes" : {
"items" : {
"$ref" : "#/components/schemas/DishBase"
} ,
"type" : "array" ,
"title" : "Dishes"
}
} ,
"type" : "object" ,
"required" : [
"title" ,
"description" ,
"id" ,
"dishes"
] ,
"title" : "SubMenuSummary"
}
}
} ,
"tags" : [
{
"name" : "menu" ,
"description" : "Операции с меню."
} ,
{
"name" : "submenu" ,
"description" : "Подменю и работа с ним"
} ,
{
"name" : "dish" ,
"description" : "Блюда и работа с ними"
} ,
{
"name" : "summary" ,
"description" : "Вывод всей структуры меню"
}
]
}