{"openapi":"3.1.0","info":{"title":"GoodFood","version":"1.0.0"},"paths":{"/":{"get":{"summary":"Root","operationId":"root__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/admin/analytics/overview":{"get":{"tags":["Admin: Аналитика"],"summary":"Overview","operationId":"overview_api_v1_admin_analytics_overview_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"period","in":"query","required":false,"schema":{"type":"string","pattern":"^(today|yesterday|week|month|custom)$","default":"week","title":"Period"}},{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Date To"}},{"name":"location_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Location Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/analytics/revenue-chart":{"get":{"tags":["Admin: Аналитика"],"summary":"Revenue Chart","operationId":"revenue_chart_api_v1_admin_analytics_revenue_chart_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"period","in":"query","required":false,"schema":{"type":"string","pattern":"^(today|yesterday|week|month|custom)$","default":"week","title":"Period"}},{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Date To"}},{"name":"location_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Location Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/analytics/products/ranking":{"get":{"tags":["Admin: Аналитика"],"summary":"Products Ranking","operationId":"products_ranking_api_v1_admin_analytics_products_ranking_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"period","in":"query","required":false,"schema":{"type":"string","pattern":"^(today|yesterday|week|month|custom)$","default":"week","title":"Period"}},{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Date To"}},{"name":"location_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Location Id"}},{"name":"category_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Category Id"}},{"name":"sort_by","in":"query","required":false,"schema":{"type":"string","pattern":"^(revenue|quantity)$","default":"revenue","title":"Sort By"}},{"name":"order","in":"query","required":false,"schema":{"type":"string","pattern":"^(desc|asc)$","default":"desc","title":"Order"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/analytics/products/{product_id}":{"get":{"tags":["Admin: Аналитика"],"summary":"Product Detail","operationId":"product_detail_api_v1_admin_analytics_products__product_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"product_id","in":"path","required":true,"schema":{"type":"integer","title":"Product Id"}},{"name":"period","in":"query","required":false,"schema":{"type":"string","pattern":"^(today|yesterday|week|month|custom)$","default":"week","title":"Period"}},{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Date To"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/analytics/categories/{category_id}":{"get":{"tags":["Admin: Аналитика"],"summary":"Category Detail","operationId":"category_detail_api_v1_admin_analytics_categories__category_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"category_id","in":"path","required":true,"schema":{"type":"integer","title":"Category Id"}},{"name":"period","in":"query","required":false,"schema":{"type":"string","pattern":"^(today|yesterday|week|month|custom)$","default":"week","title":"Period"}},{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Date To"}},{"name":"location_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Location Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/analytics/categories":{"get":{"tags":["Admin: Аналитика"],"summary":"Categories","operationId":"categories_api_v1_admin_analytics_categories_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"period","in":"query","required":false,"schema":{"type":"string","pattern":"^(today|yesterday|week|month|custom)$","default":"week","title":"Period"}},{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Date To"}},{"name":"location_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Location Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/analytics/locations":{"get":{"tags":["Admin: Аналитика"],"summary":"Locations","operationId":"locations_api_v1_admin_analytics_locations_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"period","in":"query","required":false,"schema":{"type":"string","pattern":"^(today|yesterday|week|month|custom)$","default":"week","title":"Period"}},{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Date To"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/analytics/payment-methods":{"get":{"tags":["Admin: Аналитика"],"summary":"Payment Methods","operationId":"payment_methods_api_v1_admin_analytics_payment_methods_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"period","in":"query","required":false,"schema":{"type":"string","pattern":"^(today|yesterday|week|month|custom)$","default":"week","title":"Period"}},{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Date To"}},{"name":"location_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Location Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/analytics/peak-hours":{"get":{"tags":["Admin: Аналитика"],"summary":"Peak Hours","operationId":"peak_hours_api_v1_admin_analytics_peak_hours_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"period","in":"query","required":false,"schema":{"type":"string","pattern":"^(today|yesterday|week|month|custom)$","default":"week","title":"Period"}},{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Date To"}},{"name":"location_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Location Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/order-analytics/overview":{"get":{"tags":["Admin: Аналитика заказов"],"summary":"Overview","operationId":"overview_api_v1_admin_order_analytics_overview_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Date To"}},{"name":"location_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Location Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/order-analytics/dishes":{"get":{"tags":["Admin: Аналитика заказов"],"summary":"Dishes","operationId":"dishes_api_v1_admin_order_analytics_dishes_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Date To"}},{"name":"location_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Location Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/order-analytics/dishes/{product_id}":{"get":{"tags":["Admin: Аналитика заказов"],"summary":"Dish Detail","operationId":"dish_detail_api_v1_admin_order_analytics_dishes__product_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"product_id","in":"path","required":true,"schema":{"type":"integer","title":"Product Id"}},{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Date To"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/order-analytics/locations":{"get":{"tags":["Admin: Аналитика заказов"],"summary":"Locations","operationId":"locations_api_v1_admin_order_analytics_locations_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Date To"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/order-analytics/locations/{location_id}":{"get":{"tags":["Admin: Аналитика заказов"],"summary":"Location Detail","operationId":"location_detail_api_v1_admin_order_analytics_locations__location_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"location_id","in":"path","required":true,"schema":{"type":"integer","title":"Location Id"}},{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Date To"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/order-analytics/weekdays":{"get":{"tags":["Admin: Аналитика заказов"],"summary":"Weekdays","operationId":"weekdays_api_v1_admin_order_analytics_weekdays_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Date To"}},{"name":"location_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Location Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/order-analytics/recommendations":{"get":{"tags":["Admin: Аналитика заказов"],"summary":"Recommendations","operationId":"recommendations_api_v1_admin_order_analytics_recommendations_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"location_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Location Id"}},{"name":"kind","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^(increase|regular|try|decrease|drop)$"},{"type":"null"}],"title":"Kind"}},{"name":"reliability","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^(high|medium|hypothesis)$"},{"type":"null"}],"title":"Reliability"}},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/order-analytics/recommendations/results":{"get":{"tags":["Admin: Аналитика заказов"],"summary":"Recommendation Results","operationId":"recommendation_results_api_v1_admin_order_analytics_recommendations_results_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Date To"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/order-analytics/model":{"get":{"tags":["Admin: Аналитика заказов"],"summary":"Model Info","operationId":"model_info_api_v1_admin_order_analytics_model_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/admin/order-analytics/opportunities":{"get":{"tags":["Admin: Аналитика заказов"],"summary":"Opportunities","description":"Возможности меню на дату поставки (по умолчанию — сегодня).","operationId":"opportunities_api_v1_admin_order_analytics_opportunities_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"menu_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Menu Date"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/order-analytics/menus/preview":{"post":{"tags":["Admin: Аналитика заказов"],"summary":"Preview Menu","description":"Разобрать текст меню и показать, какие блюда нашлись в каталоге. Ничего не сохраняет.","operationId":"preview_menu_api_v1_admin_order_analytics_menus_preview_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupplierMenuText"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/admin/order-analytics/menus":{"put":{"tags":["Admin: Аналитика заказов"],"summary":"Save Menu","description":"Сохранить меню поставщика на дату (заменяет прежнее) и зафиксировать советы на эту дату.","operationId":"save_menu_api_v1_admin_order_analytics_menus_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupplierMenuSave"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/admin/order-analytics/menus/{menu_id}":{"delete":{"tags":["Admin: Аналитика заказов"],"summary":"Delete Menu","operationId":"delete_menu_api_v1_admin_order_analytics_menus__menu_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"menu_id","in":"path","required":true,"schema":{"type":"integer","title":"Menu Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/order-analytics/menus/history":{"get":{"tags":["Admin: Аналитика заказов"],"summary":"Menu History","operationId":"menu_history_api_v1_admin_order_analytics_menus_history_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"brand_id","in":"query","required":true,"schema":{"type":"integer","title":"Brand Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/banners/":{"get":{"tags":["Admin: Баннеры"],"summary":"List Banners","operationId":"list_banners_api_v1_admin_banners__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"location_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Location Id"}},{"name":"placement","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"popup | menu_inline","title":"Placement"},"description":"popup | menu_inline"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/BannerRead"},"title":"Response List Banners Api V1 Admin Banners  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Admin: Баннеры"],"summary":"Create Banner","operationId":"create_banner_api_v1_admin_banners__post","security":[{"OAuth2PasswordBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BannerCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BannerRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/banners/{banner_id}":{"get":{"tags":["Admin: Баннеры"],"summary":"Get Banner","operationId":"get_banner_api_v1_admin_banners__banner_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"banner_id","in":"path","required":true,"schema":{"type":"integer","title":"Banner Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BannerRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Admin: Баннеры"],"summary":"Update Banner","operationId":"update_banner_api_v1_admin_banners__banner_id__patch","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"banner_id","in":"path","required":true,"schema":{"type":"integer","title":"Banner Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BannerUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BannerRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Admin: Баннеры"],"summary":"Delete Banner","operationId":"delete_banner_api_v1_admin_banners__banner_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"banner_id","in":"path","required":true,"schema":{"type":"integer","title":"Banner Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/banners/{banner_id}/image":{"post":{"tags":["Admin: Баннеры"],"summary":"Upload Image","operationId":"upload_image_api_v1_admin_banners__banner_id__image_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"banner_id","in":"path","required":true,"schema":{"type":"integer","title":"Banner Id"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_image_api_v1_admin_banners__banner_id__image_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BannerRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/banners/{banner_id}/stats":{"get":{"tags":["Admin: Баннеры"],"summary":"Get Stats","operationId":"get_stats_api_v1_admin_banners__banner_id__stats_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"banner_id","in":"path","required":true,"schema":{"type":"integer","title":"Banner Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/products/next-sku":{"get":{"tags":["Admin: Товары"],"summary":"Get Next Sku","operationId":"get_next_sku_api_v1_admin_products_next_sku_get","responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/admin/products/":{"get":{"tags":["Admin: Товары"],"summary":"List Products","operationId":"list_products_api_v1_admin_products__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"skip","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Skip"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":1000,"title":"Limit"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Поиск по имени или SKU","title":"Q"},"description":"Поиск по имени или SKU"},{"name":"category_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Фильтр по category_id","title":"Category Id"},"description":"Фильтр по category_id"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ProductRead"},"title":"Response List Products Api V1 Admin Products  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Admin: Товары"],"summary":"Create Product","operationId":"create_product_api_v1_admin_products__post","security":[{"OAuth2PasswordBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/products/reorder":{"put":{"tags":["Admin: Товары"],"summary":"Reorder Products","description":"Закрепить ручные позиции товаров в категории (админка). sort_order = null снимает закрепление.","operationId":"reorder_products_api_v1_admin_products_reorder_put","requestBody":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ProductPosition"},"type":"array","title":"Positions"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/admin/products/import-template":{"get":{"tags":["Admin: Товары"],"summary":"Download Import Template","description":"Скачать пустой Excel шаблон для импорта товаров.","operationId":"download_import_template_api_v1_admin_products_import_template_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/admin/products/import-preview":{"post":{"tags":["Admin: Товары"],"summary":"Preview Import Products","description":"Preview импорта — без сохранения в БД.","operationId":"preview_import_products_api_v1_admin_products_import_preview_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_preview_import_products_api_v1_admin_products_import_preview_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/admin/products/{product_id}":{"get":{"tags":["Admin: Товары"],"summary":"Get Product","operationId":"get_product_api_v1_admin_products__product_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"product_id","in":"path","required":true,"schema":{"type":"integer","title":"Product Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["Admin: Товары"],"summary":"Update Product","operationId":"update_product_api_v1_admin_products__product_id__put","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"product_id","in":"path","required":true,"schema":{"type":"integer","title":"Product Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Admin: Товары"],"summary":"Delete Product","operationId":"delete_product_api_v1_admin_products__product_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"product_id","in":"path","required":true,"schema":{"type":"integer","title":"Product Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/products/{product_id}/image":{"post":{"tags":["Admin: Товары"],"summary":"Upload Product Image","operationId":"upload_product_image_api_v1_admin_products__product_id__image_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"product_id","in":"path","required":true,"schema":{"type":"integer","title":"Product Id"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_product_image_api_v1_admin_products__product_id__image_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Admin: Товары"],"summary":"Delete Product Image","operationId":"delete_product_image_api_v1_admin_products__product_id__image_delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"product_id","in":"path","required":true,"schema":{"type":"integer","title":"Product Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/products/import":{"post":{"tags":["Admin: Товары"],"summary":"Import Products","operationId":"import_products_api_v1_admin_products_import_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_import_products_api_v1_admin_products_import_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/admin/categories/":{"get":{"tags":["Admin: Товары"],"summary":"List Categories","operationId":"list_categories_api_v1_admin_categories__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"active","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Active"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CategoryRead"},"title":"Response List Categories Api V1 Admin Categories  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Admin: Товары"],"summary":"Create Category","operationId":"create_category_api_v1_admin_categories__post","security":[{"OAuth2PasswordBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CategoryCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CategoryRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/categories/reorder":{"put":{"tags":["Admin: Товары"],"summary":"Reorder Categories","operationId":"reorder_categories_api_v1_admin_categories_reorder_put","requestBody":{"content":{"application/json":{"schema":{"items":{"type":"integer"},"type":"array","title":"Ids"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/admin/categories/{category_id}":{"put":{"tags":["Admin: Товары"],"summary":"Update Category","operationId":"update_category_api_v1_admin_categories__category_id__put","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"category_id","in":"path","required":true,"schema":{"type":"integer","title":"Category Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CategoryUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CategoryRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Admin: Товары"],"summary":"Delete Category","operationId":"delete_category_api_v1_admin_categories__category_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"category_id","in":"path","required":true,"schema":{"type":"integer","title":"Category Id"}},{"name":"cascade","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Cascade"}},{"name":"confirm","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Confirm"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/brands/":{"get":{"tags":["Admin: Бренды"],"summary":"List Brands","operationId":"list_brands_api_v1_admin_brands__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/BrandRead"},"type":"array","title":"Response List Brands Api V1 Admin Brands  Get"}}}}},"security":[{"OAuth2PasswordBearer":[]}]},"post":{"tags":["Admin: Бренды"],"summary":"Create Brand","operationId":"create_brand_api_v1_admin_brands__post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandCreate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/admin/brands/{brand_id}":{"put":{"tags":["Admin: Бренды"],"summary":"Update Brand","operationId":"update_brand_api_v1_admin_brands__brand_id__put","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"brand_id","in":"path","required":true,"schema":{"type":"integer","title":"Brand Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Admin: Бренды"],"summary":"Delete Brand","operationId":"delete_brand_api_v1_admin_brands__brand_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"brand_id","in":"path","required":true,"schema":{"type":"integer","title":"Brand Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/locations/import-menu/preview":{"post":{"tags":["Admin: Локации"],"summary":"Preview Menu Import","operationId":"preview_menu_import_api_v1_admin_locations_import_menu_preview_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_preview_menu_import_api_v1_admin_locations_import_menu_preview_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/admin/locations/import-menu/apply":{"post":{"tags":["Admin: Локации"],"summary":"Apply Menu Import","operationId":"apply_menu_import_api_v1_admin_locations_import_menu_apply_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Data"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/admin/locations/export-food":{"get":{"tags":["Admin: Локации"],"summary":"Export Food Inventory","operationId":"export_food_inventory_api_v1_admin_locations_export_food_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/admin/locations/":{"get":{"tags":["Admin: Локации"],"summary":"List Locations","operationId":"list_locations_api_v1_admin_locations__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/LocationRead"},"type":"array","title":"Response List Locations Api V1 Admin Locations  Get"}}}}},"security":[{"OAuth2PasswordBearer":[]}]},"post":{"tags":["Admin: Локации"],"summary":"Create Location","operationId":"create_location_api_v1_admin_locations__post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LocationCreate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LocationRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/admin/locations/reorder":{"put":{"tags":["Admin: Локации"],"summary":"Reorder Locations","operationId":"reorder_locations_api_v1_admin_locations_reorder_put","requestBody":{"content":{"application/json":{"schema":{"items":{"type":"integer"},"type":"array","title":"Ordered Ids"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/LocationRead"},"type":"array","title":"Response Reorder Locations Api V1 Admin Locations Reorder Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/admin/locations/{location_id}":{"put":{"tags":["Admin: Локации"],"summary":"Update Location","operationId":"update_location_api_v1_admin_locations__location_id__put","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"location_id","in":"path","required":true,"schema":{"type":"integer","title":"Location Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LocationUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LocationRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Admin: Локации"],"summary":"Delete Location","operationId":"delete_location_api_v1_admin_locations__location_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"location_id","in":"path","required":true,"schema":{"type":"integer","title":"Location Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/locations/{location_id}/inventory":{"get":{"tags":["Admin: Локации"],"summary":"List Inventory","operationId":"list_inventory_api_v1_admin_locations__location_id__inventory_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"location_id","in":"path","required":true,"schema":{"type":"integer","title":"Location Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/InventoryItemRead"},"title":"Response List Inventory Api V1 Admin Locations  Location Id  Inventory Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Admin: Локации"],"summary":"Add Inventory Item","operationId":"add_inventory_item_api_v1_admin_locations__location_id__inventory_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"location_id","in":"path","required":true,"schema":{"type":"integer","title":"Location Id"}},{"name":"product_id","in":"query","required":true,"schema":{"type":"integer","title":"Product Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InventoryItemRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/locations/{location_id}/inventory/import":{"post":{"tags":["Admin: Локации"],"summary":"Import Inventory","operationId":"import_inventory_api_v1_admin_locations__location_id__inventory_import_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"location_id","in":"path","required":true,"schema":{"type":"integer","title":"Location Id"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_import_inventory_api_v1_admin_locations__location_id__inventory_import_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/locations/{location_id}/inventory/{item_id}":{"delete":{"tags":["Admin: Локации"],"summary":"Delete Inventory Item","operationId":"delete_inventory_item_api_v1_admin_locations__location_id__inventory__item_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"location_id","in":"path","required":true,"schema":{"type":"integer","title":"Location Id"}},{"name":"item_id","in":"path","required":true,"schema":{"type":"integer","title":"Item Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["Admin: Локации"],"summary":"Update Inventory Quantity","operationId":"update_inventory_quantity_api_v1_admin_locations__location_id__inventory__item_id__put","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"location_id","in":"path","required":true,"schema":{"type":"integer","title":"Location Id"}},{"name":"item_id","in":"path","required":true,"schema":{"type":"integer","title":"Item Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InventoryItemUpdateQuantity"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InventoryItemRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/locations/{location_id}/inventory/{item_id}/toggle":{"post":{"tags":["Admin: Локации"],"summary":"Toggle Inventory Visibility","operationId":"toggle_inventory_visibility_api_v1_admin_locations__location_id__inventory__item_id__toggle_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"location_id","in":"path","required":true,"schema":{"type":"integer","title":"Location Id"}},{"name":"item_id","in":"path","required":true,"schema":{"type":"integer","title":"Item Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InventoryItemRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/locations/{location_id}/inventory/{item_id}/activate":{"post":{"tags":["Admin: Локации"],"summary":"Activate Inventory Item","description":"Возвращает товар в меню с указанием реального времени размещения —\nчтобы таймер свежести (часики/просрочка) считал от правильного момента.","operationId":"activate_inventory_item_api_v1_admin_locations__location_id__inventory__item_id__activate_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"location_id","in":"path","required":true,"schema":{"type":"integer","title":"Location Id"}},{"name":"item_id","in":"path","required":true,"schema":{"type":"integer","title":"Item Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InventoryItemActivate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InventoryItemRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/transactions":{"get":{"tags":["Admin: Транзакции"],"summary":"List Transactions","operationId":"list_transactions_api_v1_admin_transactions_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"location_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Location Id"}},{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Date To"}},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Номер страницы","default":1,"title":"Page"},"description":"Номер страницы"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"description":"Количество на странице","default":50,"title":"Size"},"description":"Количество на странице"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedResponse_TransactionDetail_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/transactions/export":{"get":{"tags":["Admin: Транзакции"],"summary":"Export Transactions","operationId":"export_transactions_api_v1_admin_transactions_export_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"location_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"ID локации или 'all'","title":"Location Id"},"description":"ID локации или 'all'"},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Date To"}},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/transactions/{order_id}":{"get":{"tags":["Admin: Транзакции"],"summary":"Get Transaction","operationId":"get_transaction_api_v1_admin_transactions__order_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"order_id","in":"path","required":true,"schema":{"type":"string","title":"Order Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransactionDetail"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/sales/":{"get":{"tags":["Admin: Продажи"],"summary":"List Sales","operationId":"list_sales_api_v1_admin_sales__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"location_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Location Id"}},{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Date To"}},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Номер страницы","default":1,"title":"Page"},"description":"Номер страницы"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"description":"Количество на странице","default":50,"title":"Size"},"description":"Количество на странице"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/sales/export":{"get":{"tags":["Admin: Продажи"],"summary":"Export Sales","operationId":"export_sales_api_v1_admin_sales_export_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Date To"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/sales/export-snacks":{"get":{"tags":["Admin: Продажи"],"summary":"Export Snack Sales","operationId":"export_snack_sales_api_v1_admin_sales_export_snacks_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Date To"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/expeditors":{"get":{"tags":["Admin: Экспедиторы"],"summary":"List Expeditors","operationId":"list_expeditors_api_v1_admin_expeditors_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"is_active","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Фильтр по активности","title":"Is Active"},"description":"Фильтр по активности"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ExpeditorWithLocations"},"title":"Response List Expeditors Api V1 Admin Expeditors Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Admin: Экспедиторы"],"summary":"Create Expeditor","operationId":"create_expeditor_api_v1_admin_expeditors_post","security":[{"OAuth2PasswordBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExpeditorCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExpeditorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/expeditors/all/writeoffs":{"get":{"tags":["Admin: Экспедиторы"],"summary":"Get All Writeoffs","operationId":"get_all_writeoffs_api_v1_admin_expeditors_all_writeoffs_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"expeditor_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Фильтр по экспедитору","title":"Expeditor Id"},"description":"Фильтр по экспедитору"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Номер страницы","default":1,"title":"Page"},"description":"Номер страницы"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"description":"Количество на странице","default":50,"title":"Size"},"description":"Количество на странице"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/expeditors/all/movements":{"get":{"tags":["Admin: Экспедиторы"],"summary":"Get All Movements","operationId":"get_all_movements_api_v1_admin_expeditors_all_movements_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"expeditor_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Фильтр по экспедитору","title":"Expeditor Id"},"description":"Фильтр по экспедитору"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Номер страницы","default":1,"title":"Page"},"description":"Номер страницы"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"description":"Количество на странице","default":50,"title":"Size"},"description":"Количество на странице"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/expeditors/writeoff/{writeoff_id}/items":{"get":{"tags":["Admin: Экспедиторы"],"summary":"Get Writeoff Items","operationId":"get_writeoff_items_api_v1_admin_expeditors_writeoff__writeoff_id__items_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"writeoff_id","in":"path","required":true,"schema":{"type":"integer","title":"Writeoff Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/expeditors/movement/{movement_id}/items":{"get":{"tags":["Admin: Экспедиторы"],"summary":"Get Movement Items","operationId":"get_movement_items_api_v1_admin_expeditors_movement__movement_id__items_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"movement_id","in":"path","required":true,"schema":{"type":"integer","title":"Movement Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/expeditors/{expeditor_id}":{"get":{"tags":["Admin: Экспедиторы"],"summary":"Get Expeditor","operationId":"get_expeditor_api_v1_admin_expeditors__expeditor_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"expeditor_id","in":"path","required":true,"schema":{"type":"integer","title":"Expeditor Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExpeditorWithLocations"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["Admin: Экспедиторы"],"summary":"Update Expeditor","operationId":"update_expeditor_api_v1_admin_expeditors__expeditor_id__put","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"expeditor_id","in":"path","required":true,"schema":{"type":"integer","title":"Expeditor Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExpeditorUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExpeditorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Admin: Экспедиторы"],"summary":"Delete Expeditor","operationId":"delete_expeditor_api_v1_admin_expeditors__expeditor_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"expeditor_id","in":"path","required":true,"schema":{"type":"integer","title":"Expeditor Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/expeditors/{expeditor_id}/locations":{"get":{"tags":["Admin: Экспедиторы"],"summary":"Get Expeditor Locations","operationId":"get_expeditor_locations_api_v1_admin_expeditors__expeditor_id__locations_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"expeditor_id","in":"path","required":true,"schema":{"type":"integer","title":"Expeditor Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/LocationRead"},"title":"Response Get Expeditor Locations Api V1 Admin Expeditors  Expeditor Id  Locations Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Admin: Экспедиторы"],"summary":"Assign Locations","operationId":"assign_locations_api_v1_admin_expeditors__expeditor_id__locations_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"expeditor_id","in":"path","required":true,"schema":{"type":"integer","title":"Expeditor Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssignLocations"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/expeditors/{expeditor_id}/history/movements":{"get":{"tags":["Admin: Экспедиторы"],"summary":"Get Expeditor Movements","operationId":"get_expeditor_movements_api_v1_admin_expeditors__expeditor_id__history_movements_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"expeditor_id","in":"path","required":true,"schema":{"type":"integer","title":"Expeditor Id"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Номер страницы","default":1,"title":"Page"},"description":"Номер страницы"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"description":"Количество на странице","default":50,"title":"Size"},"description":"Количество на странице"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/expeditors/{expeditor_id}/history/writeoffs":{"get":{"tags":["Admin: Экспедиторы"],"summary":"Get Expeditor Writeoffs","operationId":"get_expeditor_writeoffs_api_v1_admin_expeditors__expeditor_id__history_writeoffs_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"expeditor_id","in":"path","required":true,"schema":{"type":"integer","title":"Expeditor Id"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Номер страницы","default":1,"title":"Page"},"description":"Номер страницы"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"description":"Количество на странице","default":50,"title":"Size"},"description":"Количество на странице"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/logistics/movements":{"get":{"tags":["Admin: Логистика"],"summary":"List Movements","operationId":"list_movements_api_v1_admin_logistics_movements_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"location_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Фильтр по локации (откуда или куда)","title":"Location Id"},"description":"Фильтр по локации (откуда или куда)"},{"name":"expeditor_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Фильтр по экспедитору","title":"Expeditor Id"},"description":"Фильтр по экспедитору"},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Фильтр по статусу","title":"Status"},"description":"Фильтр по статусу"},{"name":"start_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"description":"Начальная дата","title":"Start Date"},"description":"Начальная дата"},{"name":"end_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"description":"Конечная дата","title":"End Date"},"description":"Конечная дата"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Номер страницы","default":1,"title":"Page"},"description":"Номер страницы"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"description":"Количество на странице","default":50,"title":"Size"},"description":"Количество на странице"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/logistics/movements/{movement_id}":{"get":{"tags":["Admin: Логистика"],"summary":"Get Movement","operationId":"get_movement_api_v1_admin_logistics_movements__movement_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"movement_id","in":"path","required":true,"schema":{"type":"integer","title":"Movement Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/logistics/writeoffs":{"get":{"tags":["Admin: Логистика"],"summary":"List Writeoffs","operationId":"list_writeoffs_api_v1_admin_logistics_writeoffs_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"location_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Фильтр по локации","title":"Location Id"},"description":"Фильтр по локации"},{"name":"expeditor_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Фильтр по экспедитору","title":"Expeditor Id"},"description":"Фильтр по экспедитору"},{"name":"reason","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Фильтр по причине списания","title":"Reason"},"description":"Фильтр по причине списания"},{"name":"start_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"description":"Начальная дата","title":"Start Date"},"description":"Начальная дата"},{"name":"end_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"description":"Конечная дата","title":"End Date"},"description":"Конечная дата"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Номер страницы","default":1,"title":"Page"},"description":"Номер страницы"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"description":"Количество на странице","default":50,"title":"Size"},"description":"Количество на странице"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/logistics/writeoffs/{writeoff_id}":{"get":{"tags":["Admin: Логистика"],"summary":"Get Writeoff","operationId":"get_writeoff_api_v1_admin_logistics_writeoffs__writeoff_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"writeoff_id","in":"path","required":true,"schema":{"type":"integer","title":"Writeoff Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/logistics/analytics/writeoffs-summary":{"get":{"tags":["Admin: Логистика"],"summary":"Get Writeoffs Analytics","operationId":"get_writeoffs_analytics_api_v1_admin_logistics_analytics_writeoffs_summary_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"location_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Фильтр по локации","title":"Location Id"},"description":"Фильтр по локации"},{"name":"start_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"description":"Начальная дата","title":"Start Date"},"description":"Начальная дата"},{"name":"end_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"description":"Конечная дата","title":"End Date"},"description":"Конечная дата"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/inventory-losses":{"get":{"tags":["Admin: Списания/Недостачи"],"summary":"List Losses","operationId":"list_losses_api_v1_admin_inventory_losses_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"location_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Фильтр по локации","title":"Location Id"},"description":"Фильтр по локации"},{"name":"loss_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^(writeoff|shortage)$"},{"type":"null"}],"description":"Тип потери","title":"Loss Type"},"description":"Тип потери"},{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Date To"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Номер страницы","default":1,"title":"Page"},"description":"Номер страницы"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"description":"Количество на странице","default":50,"title":"Size"},"description":"Количество на странице"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/inventory-losses/summary":{"get":{"tags":["Admin: Списания/Недостачи"],"summary":"Get Summary","operationId":"get_summary_api_v1_admin_inventory_losses_summary_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"location_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Фильтр по локации","title":"Location Id"},"description":"Фильтр по локации"},{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Date To"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/import-inventory":{"get":{"tags":["Admin: Импорт блюд"],"summary":"List Imports","operationId":"list_imports_api_v1_admin_import_inventory_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"date_from","in":"query","required":true,"schema":{"type":"string","format":"date","title":"Date From"}},{"name":"date_to","in":"query","required":true,"schema":{"type":"string","format":"date","title":"Date To"}},{"name":"location_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Location Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/import-inventory/summary":{"get":{"tags":["Admin: Импорт блюд"],"summary":"Get Summary","operationId":"get_summary_api_v1_admin_import_inventory_summary_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"date_from","in":"query","required":true,"schema":{"type":"string","format":"date","title":"Date From"}},{"name":"date_to","in":"query","required":true,"schema":{"type":"string","format":"date","title":"Date To"}},{"name":"location_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Location Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/import-inventory/{record_id}":{"patch":{"tags":["Admin: Импорт блюд"],"summary":"Mark Loss","operationId":"mark_loss_api_v1_admin_import_inventory__record_id__patch","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"record_id","in":"path","required":true,"schema":{"type":"integer","title":"Record Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MarkLossPayload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/marketing/campaigns":{"get":{"tags":["Admin: Маркетинг"],"summary":"List Campaigns","operationId":"list_campaigns_api_v1_admin_marketing_campaigns_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"location_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Location Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Admin: Маркетинг"],"summary":"Create Campaign","operationId":"create_campaign_api_v1_admin_marketing_campaigns_post","security":[{"OAuth2PasswordBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiscountCampaignCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/marketing/campaigns/{campaign_id}":{"get":{"tags":["Admin: Маркетинг"],"summary":"Get Campaign","operationId":"get_campaign_api_v1_admin_marketing_campaigns__campaign_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"integer","title":"Campaign Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["Admin: Маркетинг"],"summary":"Update Campaign","operationId":"update_campaign_api_v1_admin_marketing_campaigns__campaign_id__put","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"integer","title":"Campaign Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiscountCampaignUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Admin: Маркетинг"],"summary":"Delete Campaign","operationId":"delete_campaign_api_v1_admin_marketing_campaigns__campaign_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"integer","title":"Campaign Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/marketing/campaigns/{campaign_id}/toggle":{"post":{"tags":["Admin: Маркетинг"],"summary":"Toggle Campaign","operationId":"toggle_campaign_api_v1_admin_marketing_campaigns__campaign_id__toggle_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"integer","title":"Campaign Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/marketing/payment-notifications":{"get":{"tags":["Admin: Маркетинг"],"summary":"List Payment Notifications","operationId":"list_payment_notifications_api_v1_admin_marketing_payment_notifications_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"OAuth2PasswordBearer":[]}]},"post":{"tags":["Admin: Маркетинг"],"summary":"Create Payment Notification","operationId":"create_payment_notification_api_v1_admin_marketing_payment_notifications_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentNotificationCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/admin/marketing/payment-notifications/{notification_id}":{"put":{"tags":["Admin: Маркетинг"],"summary":"Update Payment Notification","operationId":"update_payment_notification_api_v1_admin_marketing_payment_notifications__notification_id__put","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"notification_id","in":"path","required":true,"schema":{"type":"integer","title":"Notification Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentNotificationUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Admin: Маркетинг"],"summary":"Delete Payment Notification","operationId":"delete_payment_notification_api_v1_admin_marketing_payment_notifications__notification_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"notification_id","in":"path","required":true,"schema":{"type":"integer","title":"Notification Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/marketing/payment-notifications/{notification_id}/toggle":{"post":{"tags":["Admin: Маркетинг"],"summary":"Toggle Payment Notification","operationId":"toggle_payment_notification_api_v1_admin_marketing_payment_notifications__notification_id__toggle_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"notification_id","in":"path","required":true,"schema":{"type":"integer","title":"Notification Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/marketing/payment-notifications/{notification_id}/sound":{"post":{"tags":["Admin: Маркетинг"],"summary":"Upload Payment Notification Sound","operationId":"upload_payment_notification_sound_api_v1_admin_marketing_payment_notifications__notification_id__sound_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"notification_id","in":"path","required":true,"schema":{"type":"integer","title":"Notification Id"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_payment_notification_sound_api_v1_admin_marketing_payment_notifications__notification_id__sound_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/customers/":{"get":{"tags":["Admin: Клиенты"],"summary":"List Customers","operationId":"list_customers_api_v1_admin_customers__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Size"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Поиск по имени или телефону","title":"Q"},"description":"Поиск по имени или телефону"},{"name":"sort_by","in":"query","required":false,"schema":{"type":"string","description":"Поле сортировки: id, order_count, total_spent","default":"id","title":"Sort By"},"description":"Поле сортировки: id, order_count, total_spent"},{"name":"sort_order","in":"query","required":false,"schema":{"type":"string","description":"Направление: asc или desc","default":"desc","title":"Sort Order"},"description":"Направление: asc или desc"},{"name":"location_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Фильтр по локации","title":"Location Id"},"description":"Фильтр по локации"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/customer-blocks/":{"get":{"tags":["Admin: Блокировка"],"summary":"List Blocks","operationId":"list_blocks_api_v1_admin_customer_blocks__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Size"}},{"name":"phone","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"}},{"name":"is_active","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Admin: Блокировка"],"summary":"Create Block","operationId":"create_block_api_v1_admin_customer_blocks__post","security":[{"OAuth2PasswordBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerBlockCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/customer-blocks/{block_id}":{"patch":{"tags":["Admin: Блокировка"],"summary":"Update Block","operationId":"update_block_api_v1_admin_customer_blocks__block_id__patch","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"block_id","in":"path","required":true,"schema":{"type":"integer","title":"Block Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerBlockUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Admin: Блокировка"],"summary":"Delete Block","operationId":"delete_block_api_v1_admin_customer_blocks__block_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"block_id","in":"path","required":true,"schema":{"type":"integer","title":"Block Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/sms-logs/stats":{"get":{"tags":["Admin: СМС логи"],"summary":"Get Sms Stats","operationId":"get_sms_stats_api_v1_admin_sms_logs_stats_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Date To"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/sms-logs/top-senders":{"get":{"tags":["Admin: СМС логи"],"summary":"Get Top Senders","operationId":"get_top_senders_api_v1_admin_sms_logs_top_senders_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}},{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Date To"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/sms-logs/":{"get":{"tags":["Admin: СМС логи"],"summary":"List Sms Logs","operationId":"list_sms_logs_api_v1_admin_sms_logs__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Size"}},{"name":"phone","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"}},{"name":"success","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Success"}},{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Date To"}},{"name":"sort_by","in":"query","required":false,"schema":{"type":"string","pattern":"^(created_at|phone)$","default":"created_at","title":"Sort By"}},{"name":"sort_order","in":"query","required":false,"schema":{"type":"string","pattern":"^(asc|desc)$","default":"desc","title":"Sort Order"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/support/templates":{"get":{"tags":["Admin: Поддержка"],"summary":"List Templates","operationId":"list_templates_api_v1_admin_support_templates_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/SupportTemplateRead"},"type":"array","title":"Response List Templates Api V1 Admin Support Templates Get"}}}}},"security":[{"OAuth2PasswordBearer":[]}]},"post":{"tags":["Admin: Поддержка"],"summary":"Create Template","operationId":"create_template_api_v1_admin_support_templates_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupportTemplateCreate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupportTemplateRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/admin/support/templates/{template_id}":{"patch":{"tags":["Admin: Поддержка"],"summary":"Update Template","operationId":"update_template_api_v1_admin_support_templates__template_id__patch","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"template_id","in":"path","required":true,"schema":{"type":"integer","title":"Template Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupportTemplateUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupportTemplateRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Admin: Поддержка"],"summary":"Delete Template","operationId":"delete_template_api_v1_admin_support_templates__template_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"template_id","in":"path","required":true,"schema":{"type":"integer","title":"Template Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/auth/login":{"post":{"tags":["auth"],"summary":"Login Endpoint","operationId":"login_endpoint_api_v1_auth_login_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_login_endpoint_api_v1_auth_login_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Token"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/banners/next":{"get":{"tags":["banners"],"summary":"Get Next Banner","description":"Возвращает следующий поп-ап баннер для показа покупателю или null.","operationId":"get_next_banner_api_v1_banners_next_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"location_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Location Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/BannerRead"},{"type":"null"}],"title":"Response Get Next Banner Api V1 Banners Next Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/banners/menu":{"get":{"tags":["banners"],"summary":"Get Menu Banners","description":"Публично: активные inline-баннеры для ленты меню (в т.ч. для анонимов).","operationId":"get_menu_banners_api_v1_banners_menu_get","parameters":[{"name":"location_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Location Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/BannerMenuRead"},"title":"Response Get Menu Banners Api V1 Banners Menu Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/banners/{banner_id}/event":{"post":{"tags":["banners"],"summary":"Record Event","description":"Публично: событие по inline-баннеру (shown | click_details | click_link).","operationId":"record_event_api_v1_banners__banner_id__event_post","parameters":[{"name":"banner_id","in":"path","required":true,"schema":{"type":"integer","title":"Banner Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BannerEventCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BannerViewRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/banners/{banner_id}/view":{"post":{"tags":["banners"],"summary":"Record View","description":"Записывает факт просмотра баннера покупателем.","operationId":"record_view_api_v1_banners__banner_id__view_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"banner_id","in":"path","required":true,"schema":{"type":"integer","title":"Banner Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BannerViewCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BannerViewRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/categories/public":{"get":{"tags":["categories"],"summary":"Public Categories","description":"Публичный список активных категорий (отсортированных по sort_order).","operationId":"public_categories_api_v1_categories_public_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/CategoryRead"},"type":"array","title":"Response Public Categories Api V1 Categories Public Get"}}}}}}},"/api/v1/categories/":{"get":{"tags":["categories"],"summary":"List Categories","operationId":"list_categories_api_v1_categories__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"active","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Active"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CategoryRead"},"title":"Response List Categories Api V1 Categories  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/categories/{category_id}":{"get":{"tags":["categories"],"summary":"Get Category","operationId":"get_category_api_v1_categories__category_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"category_id","in":"path","required":true,"schema":{"type":"integer","title":"Category Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CategoryRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/expeditor/public/list":{"get":{"tags":["expeditor"],"summary":"Get Public Expeditor List","description":"Публичный список активных экспедиторов (имя + username).","operationId":"get_public_expeditor_list_api_v1_expeditor_public_list_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/expeditor/public/{username}/sales-summary":{"get":{"tags":["expeditor"],"summary":"Get Public Sales Summary","description":"Публичные продажи экспедитора по username.","operationId":"get_public_sales_summary_api_v1_expeditor_public__username__sales_summary_get","parameters":[{"name":"username","in":"path","required":true,"schema":{"type":"string","title":"Username"}},{"name":"date_from","in":"query","required":false,"schema":{"type":"string","format":"date","title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"type":"string","format":"date","title":"Date To"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/expeditor/public/{username}/locations":{"get":{"tags":["expeditor"],"summary":"Get Public Expeditor Locations","description":"Публичный список локаций экспедитора по username.","operationId":"get_public_expeditor_locations_api_v1_expeditor_public__username__locations_get","parameters":[{"name":"username","in":"path","required":true,"schema":{"type":"string","title":"Username"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/expeditor/locations":{"get":{"tags":["expeditor"],"summary":"Get Locations","description":"Получить список локаций экспедитора","operationId":"get_locations_api_v1_expeditor_locations_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/LocationRead"},"type":"array","title":"Response Get Locations Api V1 Expeditor Locations Get"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/expeditor/products":{"get":{"tags":["expeditor"],"summary":"Get Products","description":"Получить все продукты локации с текущим количеством.","operationId":"get_products_api_v1_expeditor_products_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"location_id","in":"query","required":true,"schema":{"type":"integer","description":"ID локации","title":"Location Id"},"description":"ID локации"},{"name":"query","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Поиск по названию","title":"Query"},"description":"Поиск по названию"},{"name":"include_zero","in":"query","required":false,"schema":{"type":"boolean","description":"Включить товары с нулевым количеством","default":false,"title":"Include Zero"},"description":"Включить товары с нулевым количеством"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/expeditor/movements":{"post":{"tags":["expeditor"],"summary":"Create Movement","description":"Создать перемещение товаров между локациями.","operationId":"create_movement_api_v1_expeditor_movements_post","security":[{"OAuth2PasswordBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MovementLogCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MovementLogResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["expeditor"],"summary":"Get Movements","description":"Получить список перемещений экспедитора с пагинацией.","operationId":"get_movements_api_v1_expeditor_movements_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Page Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MovementLogListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/expeditor/writeoffs":{"post":{"tags":["expeditor"],"summary":"Create Writeoff","description":"Создать списание товаров.","operationId":"create_writeoff_api_v1_expeditor_writeoffs_post","security":[{"OAuth2PasswordBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WriteOffLogCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WriteOffLogResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["expeditor"],"summary":"Get Writeoffs","description":"Получить список списаний экспедитора с пагинацией.","operationId":"get_writeoffs_api_v1_expeditor_writeoffs_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Page Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WriteOffLogListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/expeditor/sales-summary":{"get":{"tags":["expeditor"],"summary":"Get Sales Summary","description":"Продажи напитков и шоколада по локациям экспедитора за период.","operationId":"get_sales_summary_api_v1_expeditor_sales_summary_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"date_from","in":"query","required":false,"schema":{"type":"string","format":"date","title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"type":"string","format":"date","title":"Date To"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/inventory/public/{public_id}":{"get":{"tags":["inventory"],"summary":"Public inventory by location public UUID","operationId":"public_inventory_api_v1_inventory_public__public_id__get","parameters":[{"name":"public_id","in":"path","required":true,"schema":{"type":"string","title":"Public Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/InventoryItemRead"},"title":"Response Public Inventory Api V1 Inventory Public  Public Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/kaspi-refunds/":{"post":{"tags":["kaspi-refunds"],"summary":"Create Refund","operationId":"create_refund_api_v1_kaspi_refunds__post","security":[{"OAuth2PasswordBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RefundCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RefundInfo"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["kaspi-refunds"],"summary":"List Refunds","operationId":"list_refunds_api_v1_kaspi_refunds__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"skip","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Skip"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"payment_id","in":"query","required":false,"schema":{"type":"integer","title":"Payment Id"}},{"name":"status_filter","in":"query","required":false,"schema":{"type":"string","title":"Status Filter"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/RefundInfo"},"title":"Response List Refunds Api V1 Kaspi Refunds  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/kaspi-refunds/by-order/{order_id}":{"get":{"tags":["kaspi-refunds"],"summary":"Get Refunds By Order","operationId":"get_refunds_by_order_api_v1_kaspi_refunds_by_order__order_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"order_id","in":"path","required":true,"schema":{"type":"string","title":"Order Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/RefundInfo"},"title":"Response Get Refunds By Order Api V1 Kaspi Refunds By Order  Order Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/kaspi-refunds/{refund_id}":{"get":{"tags":["kaspi-refunds"],"summary":"Get Refund","operationId":"get_refund_api_v1_kaspi_refunds__refund_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"refund_id","in":"path","required":true,"schema":{"type":"integer","title":"Refund Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RefundInfo"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/kaspi-refunds/{refund_id}/check-status":{"post":{"tags":["kaspi-refunds"],"summary":"Check Refund Status","operationId":"check_refund_status_api_v1_kaspi_refunds__refund_id__check_status_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"refund_id","in":"path","required":true,"schema":{"type":"integer","title":"Refund Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RefundInfo"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/kaspi-refunds/by-payment/{payment_id}":{"get":{"tags":["kaspi-refunds"],"summary":"Get Refunds By Payment","operationId":"get_refunds_by_payment_api_v1_kaspi_refunds_by_payment__payment_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"payment_id","in":"path","required":true,"schema":{"type":"integer","title":"Payment Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/RefundInfo"},"title":"Response Get Refunds By Payment Api V1 Kaspi Refunds By Payment  Payment Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/kaspi-refunds/check-all-pending":{"post":{"tags":["kaspi-refunds"],"summary":"Check All Pending Refunds","operationId":"check_all_pending_refunds_api_v1_kaspi_refunds_check_all_pending_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/locations/":{"get":{"tags":["locations"],"summary":"List Locations","operationId":"list_locations_api_v1_locations__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"skip","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Skip"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/LocationRead"},"title":"Response List Locations Api V1 Locations  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/locations/public/{public_id}":{"get":{"tags":["locations"],"summary":"Get location by public UUID","operationId":"get_location_by_public_id_api_v1_locations_public__public_id__get","parameters":[{"name":"public_id","in":"path","required":true,"schema":{"type":"string","title":"Public Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LocationRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/locations/public/{public_id}/payment-notice":{"get":{"tags":["locations"],"summary":"Окно и голосовое сообщение по кнопке «Оплатить» в меню точки","operationId":"get_payment_notice_api_v1_locations_public__public_id__payment_notice_get","parameters":[{"name":"public_id","in":"path","required":true,"schema":{"type":"string","title":"Public Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/locations/{location_id}":{"get":{"tags":["locations"],"summary":"Get Location","operationId":"get_location_api_v1_locations__location_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"location_id","in":"path","required":true,"schema":{"type":"integer","title":"Location Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LocationRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/products/":{"get":{"tags":["products"],"summary":"List Products","operationId":"list_products_api_v1_products__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"skip","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Skip"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":1000,"title":"Limit"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Поиск по имени или SKU","title":"Q"},"description":"Поиск по имени или SKU"},{"name":"category_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Фильтр по category_id","title":"Category Id"},"description":"Фильтр по category_id"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ProductRead"},"title":"Response List Products Api V1 Products  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/products/{product_id}":{"get":{"tags":["products"],"summary":"Get Product","operationId":"get_product_api_v1_products__product_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"product_id","in":"path","required":true,"schema":{"type":"integer","title":"Product Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/users/me":{"get":{"tags":["users"],"summary":"Read Me","operationId":"read_me_api_v1_users_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserRead"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/sms/send-code":{"post":{"tags":["sms"],"summary":"Send Code","operationId":"send_code_api_v1_sms_send_code_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SendCodePayload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/sms/verify-code":{"post":{"tags":["sms"],"summary":"Verify Code","operationId":"verify_code_api_v1_sms_verify_code_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyCodePayload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerSession"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/sms/refresh":{"post":{"tags":["sms"],"summary":"Refresh","description":"Обновляет сессию по refresh-cookie и ротирует сам refresh-токен.","operationId":"refresh_api_v1_sms_refresh_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerSession"}}}}}}},"/api/v1/sms/exchange":{"post":{"tags":["sms"],"summary":"Exchange","description":"Меняет вечный токен старой схемы на пару access/refresh.\n\nНужен на время перехода: у клиентов, которые авторизовались до релиза,\nв localStorage лежит токен со сроком жизни 100 лет и без возможности отзыва.","operationId":"exchange_api_v1_sms_exchange_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerSession"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/sms/logout":{"post":{"tags":["sms"],"summary":"Logout","operationId":"logout_api_v1_sms_logout_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/sms/me":{"get":{"tags":["sms"],"summary":"Get Me","description":"Legacy: восстановление сессии по вечному токену. Заменён на POST /refresh.","operationId":"get_me_api_v1_sms_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/paylink/invoice":{"post":{"tags":["paylink"],"summary":"Create Paylink Invoice","description":"Создать инвойс PayLink и вернуть ссылку на оплату.\nВызывается фронтендом при нажатии «Оплатить».","operationId":"create_paylink_invoice_api_v1_paylink_invoice_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateInvoiceRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateInvoiceResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/paylink/order":{"post":{"tags":["paylink"],"summary":"Register Paylink Order","description":"Зарегистрировать заказ до оплаты через JS SDK PayLink.\nВ SDK-флоу инвойс создаёт сам виджет (по публичному токену), поэтому\ninvoice uid на этом этапе неизвестен — Payment создаётся с txn_id=order_id,\nа callback привяжет invoiceUid по trackingId.","operationId":"register_paylink_order_api_v1_paylink_order_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateInvoiceRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ru/order/kaspi-success":{"get":{"summary":"Kaspi Success","operationId":"kaspi_success_ru_order_kaspi_success_get","parameters":[{"name":"id","in":"query","required":false,"schema":{"type":"string","default":"","title":"Id"}},{"name":"next","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next"}},{"name":"txn_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Txn Id"}},{"name":"account","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Account"}},{"name":"sum","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sum"}},{"name":"txn_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Txn Date"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ru/order/kaspi-success-old":{"get":{"summary":"Kaspi Success Old","operationId":"kaspi_success_old_ru_order_kaspi_success_old_get","parameters":[{"name":"id","in":"query","required":false,"schema":{"type":"string","default":"","title":"Id"}},{"name":"next","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next"}},{"name":"txn_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Txn Id"}},{"name":"account","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Account"}},{"name":"sum","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sum"}},{"name":"txn_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Txn Date"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"AssignLocations":{"properties":{"location_ids":{"items":{"type":"integer"},"type":"array","title":"Location Ids","description":"ID локаций для назначения экспедитору"}},"type":"object","required":["location_ids"],"title":"AssignLocations"},"BannerCreate":{"properties":{"title":{"type":"string","title":"Title"},"placement":{"type":"string","title":"Placement","default":"popup"},"location_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Location Id"},"is_active":{"type":"boolean","title":"Is Active","default":true},"sort_order":{"type":"integer","title":"Sort Order","default":0},"duration_seconds":{"type":"integer","title":"Duration Seconds","default":7},"show_limit":{"type":"integer","title":"Show Limit","default":1},"show_period":{"type":"string","title":"Show Period","default":"day"},"starts_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Starts At"},"ends_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Ends At"},"details":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Details"},"feed_position":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Feed Position"},"link_type":{"type":"string","title":"Link Type","default":"none"},"link_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Link Url"},"category_ids":{"items":{"type":"integer"},"type":"array","title":"Category Ids","default":[]}},"type":"object","required":["title"],"title":"BannerCreate"},"BannerEventCreate":{"properties":{"event":{"type":"string","title":"Event"},"visitor_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Visitor Id"},"location_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Location Id"}},"type":"object","required":["event"],"title":"BannerEventCreate","description":"Событие по inline-баннеру (публичное, поддерживает анонимов)."},"BannerMenuRead":{"properties":{"id":{"type":"integer","title":"Id"},"title":{"type":"string","title":"Title"},"image_url":{"type":"string","title":"Image Url"},"feed_position":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Feed Position"},"link_type":{"type":"string","title":"Link Type"},"link_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Link Url"},"details":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Details"},"category_names":{"items":{"type":"string"},"type":"array","title":"Category Names","default":[]}},"type":"object","required":["id","title","image_url","link_type"],"title":"BannerMenuRead","description":"Публичное представление inline-баннера для ленты меню."},"BannerRead":{"properties":{"id":{"type":"integer","title":"Id"},"title":{"type":"string","title":"Title"},"image_url":{"type":"string","title":"Image Url"},"placement":{"type":"string","title":"Placement"},"location_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Location Id"},"is_active":{"type":"boolean","title":"Is Active"},"sort_order":{"type":"integer","title":"Sort Order"},"duration_seconds":{"type":"integer","title":"Duration Seconds"},"show_limit":{"type":"integer","title":"Show Limit"},"show_period":{"type":"string","title":"Show Period"},"starts_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Starts At"},"ends_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Ends At"},"details":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Details"},"feed_position":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Feed Position"},"link_type":{"type":"string","title":"Link Type"},"link_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Link Url"},"categories":{"items":{"$ref":"#/components/schemas/CategoryRef"},"type":"array","title":"Categories","default":[]},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","title","image_url","placement","is_active","sort_order","duration_seconds","show_limit","show_period","link_type","created_at"],"title":"BannerRead"},"BannerUpdate":{"properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"placement":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Placement"},"location_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Location Id"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"},"sort_order":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sort Order"},"duration_seconds":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Duration Seconds"},"show_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Show Limit"},"show_period":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Show Period"},"starts_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Starts At"},"ends_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Ends At"},"details":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Details"},"feed_position":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Feed Position"},"link_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Link Type"},"link_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Link Url"},"category_ids":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Category Ids"}},"type":"object","title":"BannerUpdate"},"BannerViewCreate":{"properties":{"status":{"type":"string","title":"Status"},"view_duration_seconds":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"View Duration Seconds"},"location_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Location Id"}},"type":"object","required":["status"],"title":"BannerViewCreate"},"BannerViewRead":{"properties":{"id":{"type":"integer","title":"Id"},"banner_id":{"type":"integer","title":"Banner Id"},"customer_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Customer Id"},"visitor_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Visitor Id"},"location_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Location Id"},"status":{"type":"string","title":"Status"},"view_duration_seconds":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"View Duration Seconds"},"viewed_at":{"type":"string","format":"date-time","title":"Viewed At"}},"type":"object","required":["id","banner_id","status","viewed_at"],"title":"BannerViewRead"},"Body_import_inventory_api_v1_admin_locations__location_id__inventory_import_post":{"properties":{"file":{"type":"string","format":"binary","title":"File","description":"CSV или Excel файл с товарами"}},"type":"object","required":["file"],"title":"Body_import_inventory_api_v1_admin_locations__location_id__inventory_import_post"},"Body_import_products_api_v1_admin_products_import_post":{"properties":{"file":{"type":"string","format":"binary","title":"File","description":"CSV или Excel (xlsx) с товарами"},"images":{"anyOf":[{"type":"string","format":"binary"},{"type":"null"}],"title":"Images","description":"ZIP с картинками"},"location_images_dir":{"type":"string","title":"Location Images Dir","default":"media/products"}},"type":"object","required":["file"],"title":"Body_import_products_api_v1_admin_products_import_post"},"Body_login_endpoint_api_v1_auth_login_post":{"properties":{"grant_type":{"anyOf":[{"type":"string","pattern":"^password$"},{"type":"null"}],"title":"Grant Type"},"username":{"type":"string","title":"Username"},"password":{"type":"string","format":"password","title":"Password"},"scope":{"type":"string","title":"Scope","default":""},"client_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Id"},"client_secret":{"anyOf":[{"type":"string"},{"type":"null"}],"format":"password","title":"Client Secret"}},"type":"object","required":["username","password"],"title":"Body_login_endpoint_api_v1_auth_login_post"},"Body_preview_import_products_api_v1_admin_products_import_preview_post":{"properties":{"file":{"type":"string","format":"binary","title":"File","description":"Excel файл с товарами"}},"type":"object","required":["file"],"title":"Body_preview_import_products_api_v1_admin_products_import_preview_post"},"Body_preview_menu_import_api_v1_admin_locations_import_menu_preview_post":{"properties":{"file":{"type":"string","format":"binary","title":"File","description":"Excel файл меню (.xlsm/.xlsx)"},"brand_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Brand Id","description":"ID бренда поставщика"}},"type":"object","required":["file"],"title":"Body_preview_menu_import_api_v1_admin_locations_import_menu_preview_post"},"Body_upload_image_api_v1_admin_banners__banner_id__image_post":{"properties":{"file":{"type":"string","format":"binary","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_image_api_v1_admin_banners__banner_id__image_post"},"Body_upload_payment_notification_sound_api_v1_admin_marketing_payment_notifications__notification_id__sound_post":{"properties":{"file":{"type":"string","format":"binary","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_payment_notification_sound_api_v1_admin_marketing_payment_notifications__notification_id__sound_post"},"Body_upload_product_image_api_v1_admin_products__product_id__image_post":{"properties":{"file":{"type":"string","format":"binary","title":"File","description":"Файл изображения"}},"type":"object","required":["file"],"title":"Body_upload_product_image_api_v1_admin_products__product_id__image_post"},"BrandCreate":{"properties":{"name":{"type":"string","title":"Name"},"active":{"type":"boolean","title":"Active","default":true},"sort_order":{"type":"integer","title":"Sort Order","default":0}},"type":"object","required":["name"],"title":"BrandCreate"},"BrandRead":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"active":{"type":"boolean","title":"Active"},"sort_order":{"type":"integer","title":"Sort Order"}},"type":"object","required":["id","name","active","sort_order"],"title":"BrandRead"},"BrandUpdate":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Active"},"sort_order":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sort Order"}},"type":"object","title":"BrandUpdate"},"CampaignOverride":{"properties":{"discount_pct":{"type":"number","title":"Discount Pct"},"price_with_discount":{"type":"number","title":"Price With Discount"},"badge":{"type":"string","title":"Badge"},"badge_bg":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Badge Bg"},"badge_color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Badge Color"}},"type":"object","required":["discount_pct","price_with_discount","badge"],"title":"CampaignOverride","description":"Оверрайд цены и бейджа от активной маркетинговой кампании.\nИмеет приоритет над полями product.discount / product.price_with_discount."},"CategoryCreate":{"properties":{"name":{"type":"string","title":"Name"},"slug":{"type":"string","title":"Slug"},"active":{"type":"boolean","title":"Active","default":true},"sort_order":{"type":"integer","title":"Sort Order","default":0}},"type":"object","required":["name","slug"],"title":"CategoryCreate"},"CategoryRead":{"properties":{"name":{"type":"string","title":"Name"},"slug":{"type":"string","title":"Slug"},"active":{"type":"boolean","title":"Active","default":true},"sort_order":{"type":"integer","title":"Sort Order","default":0},"id":{"type":"integer","title":"Id"},"product_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Product Count","default":0}},"type":"object","required":["name","slug","id"],"title":"CategoryRead"},"CategoryRef":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"}},"type":"object","required":["id","name"],"title":"CategoryRef"},"CategoryUpdate":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Slug"},"active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Active"},"sort_order":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sort Order"}},"type":"object","title":"CategoryUpdate"},"CreateInvoiceRequest":{"properties":{"order_id":{"type":"string","title":"Order Id"},"amount":{"type":"integer","title":"Amount"},"description":{"type":"string","title":"Description","default":""},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"customer_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Customer Id"},"location_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Location Id"},"success_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Success Url"},"failure_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Failure Url"},"items":{"items":{"$ref":"#/components/schemas/InvoiceItem"},"type":"array","title":"Items","default":[]}},"type":"object","required":["order_id","amount"],"title":"CreateInvoiceRequest"},"CreateInvoiceResponse":{"properties":{"payment_url":{"type":"string","title":"Payment Url"},"invoice_uid":{"type":"string","title":"Invoice Uid"}},"type":"object","required":["payment_url","invoice_uid"],"title":"CreateInvoiceResponse"},"CustomerBlockCreate":{"properties":{"phone":{"type":"string","title":"Phone"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"}},"type":"object","required":["phone"],"title":"CustomerBlockCreate"},"CustomerBlockUpdate":{"properties":{"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"}},"type":"object","title":"CustomerBlockUpdate"},"CustomerSession":{"properties":{"ok":{"type":"boolean","title":"Ok","default":true},"token":{"type":"string","title":"Token"},"phone":{"type":"string","title":"Phone"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"customer_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Customer Id"},"expires_in":{"type":"integer","title":"Expires In"},"is_blocked":{"type":"boolean","title":"Is Blocked","default":false}},"type":"object","required":["token","phone","expires_in"],"title":"CustomerSession","description":"Ответ на вход, обновление и обмен токена. Refresh уходит отдельно, в cookie."},"DiscountCampaignCreate":{"properties":{"name":{"type":"string","title":"Name"},"location_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Location Id"},"discount_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Discount Pct"},"round_down":{"type":"boolean","title":"Round Down","default":false},"time_from":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Time From"},"time_to":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Time To"},"is_active":{"type":"boolean","title":"Is Active","default":true},"category_ids":{"items":{"type":"integer"},"type":"array","title":"Category Ids","default":[]},"badge_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Badge Text"},"badge_bg":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Badge Bg"},"badge_color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Badge Color"}},"type":"object","required":["name"],"title":"DiscountCampaignCreate"},"DiscountCampaignUpdate":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"location_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Location Id"},"discount_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Discount Pct"},"round_down":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Round Down"},"time_from":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Time From"},"time_to":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Time To"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"},"category_ids":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Category Ids"},"badge_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Badge Text"},"badge_bg":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Badge Bg"},"badge_color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Badge Color"}},"type":"object","title":"DiscountCampaignUpdate"},"ExpeditorCreate":{"properties":{"username":{"type":"string","title":"Username","description":"Имя пользователя для входа"},"password":{"type":"string","minLength":4,"title":"Password","description":"Пароль"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email","description":"Email"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Полное имя экспедитора"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone","description":"Телефон экспедитора"}},"type":"object","required":["username","password"],"title":"ExpeditorCreate"},"ExpeditorResponse":{"properties":{"id":{"type":"integer","title":"Id"},"username":{"type":"string","title":"Username"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"is_active":{"type":"boolean","title":"Is Active"},"is_expeditor":{"type":"boolean","title":"Is Expeditor"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","username","is_active","is_expeditor","created_at"],"title":"ExpeditorResponse"},"ExpeditorUpdate":{"properties":{"username":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Username"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"},"password":{"anyOf":[{"type":"string","minLength":4},{"type":"null"}],"title":"Password","description":"Новый пароль (если нужно сменить)"}},"type":"object","title":"ExpeditorUpdate"},"ExpeditorWithLocations":{"properties":{"id":{"type":"integer","title":"Id"},"username":{"type":"string","title":"Username"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"is_active":{"type":"boolean","title":"Is Active"},"is_expeditor":{"type":"boolean","title":"Is Expeditor"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"location_ids":{"items":{"type":"integer"},"type":"array","title":"Location Ids","default":[]}},"type":"object","required":["id","username","is_active","is_expeditor","created_at"],"title":"ExpeditorWithLocations","description":"Экспедитор с его локациями"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"InventoryItemActivate":{"properties":{"activated_date":{"type":"string","format":"date","title":"Activated Date"}},"type":"object","required":["activated_date"],"title":"InventoryItemActivate"},"InventoryItemRead":{"properties":{"location_id":{"type":"integer","title":"Location Id"},"product_id":{"type":"integer","title":"Product Id"},"id":{"type":"integer","title":"Id"},"added_at":{"type":"string","format":"date-time","title":"Added At"},"show_in_menu":{"type":"boolean","title":"Show In Menu","default":true},"quantity":{"type":"integer","title":"Quantity","default":1},"product":{"anyOf":[{"$ref":"#/components/schemas/ProductRead"},{"type":"null"}]},"campaign":{"anyOf":[{"$ref":"#/components/schemas/CampaignOverride"},{"type":"null"}]},"expiry_status":{"anyOf":[{"type":"string","enum":["ok","expiring","expired","duplicate","mixed_batch"]},{"type":"null"}],"title":"Expiry Status"}},"type":"object","required":["location_id","product_id","id","added_at"],"title":"InventoryItemRead"},"InventoryItemUpdateQuantity":{"properties":{"quantity":{"type":"integer","title":"Quantity"},"show_in_menu":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Show In Menu"},"loss_type":{"anyOf":[{"type":"string","enum":["writeoff","shortage"]},{"type":"null"}],"title":"Loss Type"}},"type":"object","required":["quantity"],"title":"InventoryItemUpdateQuantity"},"InvoiceItem":{"properties":{"product_id":{"type":"integer","title":"Product Id"},"product_name":{"type":"string","title":"Product Name"},"product_sku":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Product Sku"},"quantity":{"type":"integer","title":"Quantity"},"price":{"type":"number","title":"Price"}},"type":"object","required":["product_id","product_name","quantity","price"],"title":"InvoiceItem","description":"Товар в корзине при создании инвойса."},"LocationCreate":{"properties":{"name":{"type":"string","title":"Name"},"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name"},"address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Address"},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City"},"timezone":{"type":"string","title":"Timezone","default":"Asia/Almaty"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"fridge_count":{"type":"integer","title":"Fridge Count","default":1},"is_active":{"type":"boolean","title":"Is Active","default":true},"show_in_menu":{"type":"boolean","title":"Show In Menu","default":true},"online_payment_enabled":{"type":"boolean","title":"Online Payment Enabled","default":false},"sort_order":{"type":"integer","title":"Sort Order","default":0}},"type":"object","required":["name"],"title":"LocationCreate"},"LocationRead":{"properties":{"name":{"type":"string","title":"Name"},"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name"},"address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Address"},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City"},"timezone":{"type":"string","title":"Timezone","default":"Asia/Almaty"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"fridge_count":{"type":"integer","title":"Fridge Count","default":1},"is_active":{"type":"boolean","title":"Is Active","default":true},"show_in_menu":{"type":"boolean","title":"Show In Menu","default":true},"online_payment_enabled":{"type":"boolean","title":"Online Payment Enabled","default":false},"sort_order":{"type":"integer","title":"Sort Order","default":0},"id":{"type":"integer","title":"Id"},"public_id":{"type":"string","title":"Public Id"},"slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Slug"},"total_stock":{"type":"integer","title":"Total Stock","default":0},"unique_products_count":{"type":"integer","title":"Unique Products Count","default":0}},"type":"object","required":["name","id","public_id"],"title":"LocationRead"},"LocationUpdate":{"properties":{"name":{"type":"string","title":"Name"},"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name"},"address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Address"},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City"},"timezone":{"type":"string","title":"Timezone","default":"Asia/Almaty"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"fridge_count":{"type":"integer","title":"Fridge Count","default":1},"is_active":{"type":"boolean","title":"Is Active","default":true},"show_in_menu":{"type":"boolean","title":"Show In Menu","default":true},"online_payment_enabled":{"type":"boolean","title":"Online Payment Enabled","default":false},"sort_order":{"type":"integer","title":"Sort Order","default":0}},"type":"object","required":["name"],"title":"LocationUpdate"},"MarkLossPayload":{"properties":{"writeoff_quantity":{"type":"integer","title":"Writeoff Quantity","default":0},"shortage_quantity":{"type":"integer","title":"Shortage Quantity","default":0}},"type":"object","title":"MarkLossPayload"},"MovementItemCreate":{"properties":{"product_id":{"type":"integer","title":"Product Id","description":"ID товара"},"quantity":{"type":"integer","exclusiveMinimum":0.0,"title":"Quantity","description":"Количество товара"}},"type":"object","required":["product_id","quantity"],"title":"MovementItemCreate"},"MovementItemResponse":{"properties":{"product_id":{"type":"integer","title":"Product Id","description":"ID товара"},"quantity":{"type":"integer","exclusiveMinimum":0.0,"title":"Quantity","description":"Количество товара"},"id":{"type":"integer","title":"Id"},"product_name":{"type":"string","title":"Product Name"}},"type":"object","required":["product_id","quantity","id","product_name"],"title":"MovementItemResponse"},"MovementLogCreate":{"properties":{"from_location_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"From Location Id","description":"ID локации откуда (NULL = загрузка товара)"},"to_location_id":{"type":"integer","title":"To Location Id","description":"ID локации куда"},"movement_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Movement Date","description":"Дата перемещения (опционально, используется текущая дата)"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes","description":"Примечания"},"items":{"items":{"$ref":"#/components/schemas/MovementItemCreate"},"type":"array","minItems":1,"title":"Items","description":"Список товаров для перемещения"},"photo_base64":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Photo Base64","description":"Фото в base64 (опционально)"}},"type":"object","required":["to_location_id","items"],"title":"MovementLogCreate"},"MovementLogListResponse":{"properties":{"movements":{"items":{"$ref":"#/components/schemas/MovementLogResponse"},"type":"array","title":"Movements"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"page_size":{"type":"integer","title":"Page Size"}},"type":"object","required":["movements","total","page","page_size"],"title":"MovementLogListResponse"},"MovementLogResponse":{"properties":{"from_location_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"From Location Id","description":"ID локации откуда (NULL = загрузка товара)"},"to_location_id":{"type":"integer","title":"To Location Id","description":"ID локации куда"},"movement_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Movement Date","description":"Дата перемещения (опционально, используется текущая дата)"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes","description":"Примечания"},"id":{"type":"integer","title":"Id"},"expeditor_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Expeditor Id"},"expeditor_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Expeditor Name"},"from_location_name":{"type":"string","title":"From Location Name"},"to_location_name":{"type":"string","title":"To Location Name"},"status":{"type":"string","title":"Status"},"photo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Photo Url"},"items":{"items":{"$ref":"#/components/schemas/MovementItemResponse"},"type":"array","title":"Items"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["to_location_id","id","expeditor_id","expeditor_name","from_location_name","to_location_name","status","photo_url","items","created_at"],"title":"MovementLogResponse"},"OrderItemDetail":{"properties":{"id":{"type":"integer","title":"Id"},"product_name":{"type":"string","title":"Product Name"},"product_sku":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Product Sku"},"brand_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Brand Name"},"quantity":{"type":"integer","title":"Quantity"},"price":{"type":"number","title":"Price"},"total":{"type":"number","title":"Total"}},"type":"object","required":["id","product_name","quantity","price","total"],"title":"OrderItemDetail","description":"Детали товара в заказе"},"PaginatedResponse_TransactionDetail_":{"properties":{"total":{"type":"integer","title":"Total","description":"Общее количество элементов"},"page":{"type":"integer","title":"Page","description":"Текущая страница"},"size":{"type":"integer","title":"Size","description":"Размер страницы"},"pages":{"type":"integer","title":"Pages","description":"Общее количество страниц"},"items":{"items":{"$ref":"#/components/schemas/TransactionDetail"},"type":"array","title":"Items","description":"Список элементов"}},"type":"object","required":["total","page","size","pages","items"],"title":"PaginatedResponse[TransactionDetail]"},"PaymentNotificationCreate":{"properties":{"name":{"type":"string","maxLength":120,"minLength":1,"title":"Name"},"kind":{"type":"string","enum":["modal","voice"],"title":"Kind"},"title":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"title":"Title"},"text":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}],"title":"Text"},"all_locations":{"type":"boolean","title":"All Locations","default":true},"location_ids":{"items":{"type":"integer"},"type":"array","title":"Location Ids","default":[]},"is_active":{"type":"boolean","title":"Is Active","default":true}},"type":"object","required":["name","kind"],"title":"PaymentNotificationCreate"},"PaymentNotificationUpdate":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":120,"minLength":1},{"type":"null"}],"title":"Name"},"title":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"title":"Title"},"text":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}],"title":"Text"},"all_locations":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"All Locations"},"location_ids":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Location Ids"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"}},"type":"object","title":"PaymentNotificationUpdate"},"ProductCreate":{"properties":{"name":{"type":"string","title":"Name"},"sku":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sku"},"category_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Category Id"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"},"subcategory":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subcategory"},"brand_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Brand Id"},"price":{"type":"number","title":"Price"},"cost":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cost"},"discount":{"type":"number","title":"Discount","default":0},"price_with_discount":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Price With Discount"},"unit":{"type":"string","title":"Unit","default":"шт"},"weight":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Weight"},"tags":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tags"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"visible":{"type":"boolean","title":"Visible","default":true},"is_new":{"type":"boolean","title":"Is New","default":false},"recommended":{"type":"boolean","title":"Recommended","default":false},"limited":{"type":"boolean","title":"Limited","default":false},"badge":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Badge"},"image":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image"}},"type":"object","required":["name","price"],"title":"ProductCreate"},"ProductPosition":{"properties":{"id":{"type":"integer","title":"Id"},"sort_order":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sort Order"}},"type":"object","required":["id"],"title":"ProductPosition","description":"Закреплённая позиция товара в списке категории; None снимает закрепление."},"ProductRead":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"sku":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sku"},"category_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Category Id"},"category_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category Name"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"},"subcategory":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subcategory"},"brand_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Brand Id"},"brand_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Brand Name"},"price":{"type":"number","title":"Price"},"cost":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cost"},"discount":{"type":"number","title":"Discount","default":0},"price_with_discount":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Price With Discount"},"unit":{"type":"string","title":"Unit","default":"шт"},"weight":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Weight"},"tags":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tags"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"visible":{"type":"boolean","title":"Visible"},"is_new":{"type":"boolean","title":"Is New"},"recommended":{"type":"boolean","title":"Recommended"},"limited":{"type":"boolean","title":"Limited"},"badge":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Badge"},"image":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image"},"sort_order":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sort Order"}},"type":"object","required":["id","name","price","visible","is_new","recommended","limited"],"title":"ProductRead"},"ProductUpdate":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"sku":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sku"},"category_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Category Id"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"},"subcategory":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subcategory"},"brand_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Brand Id"},"price":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Price"},"cost":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cost"},"discount":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Discount"},"price_with_discount":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Price With Discount"},"unit":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Unit"},"weight":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Weight"},"tags":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tags"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"visible":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Visible"},"is_new":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is New"},"recommended":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Recommended"},"limited":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Limited"},"badge":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Badge"},"image":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image"}},"type":"object","title":"ProductUpdate"},"RefundCreate":{"properties":{"order_id":{"type":"string","title":"Order Id","description":"Номер заказа (OrderId)"},"return_amount":{"type":"integer","exclusiveMinimum":0.0,"title":"Return Amount","description":"Сумма возврата в тыйинах"},"reason":{"type":"string","maxLength":500,"minLength":1,"title":"Reason","description":"Причина возврата"}},"type":"object","required":["order_id","return_amount","reason"],"title":"RefundCreate"},"RefundInfo":{"properties":{"id":{"type":"integer","title":"Id"},"payment_id":{"type":"integer","title":"Payment Id"},"original_payment_txn_id":{"type":"string","title":"Original Payment Txn Id"},"return_amount":{"type":"integer","title":"Return Amount"},"refund_uid":{"type":"string","title":"Refund Uid"},"reason":{"type":"string","title":"Reason"},"kaspi_request_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Kaspi Request Id"},"status_code":{"type":"string","title":"Status Code"},"error_code":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Error Code"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"},"created_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"last_status_check":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Status Check"}},"type":"object","required":["id","payment_id","original_payment_txn_id","return_amount","refund_uid","reason","kaspi_request_id","status_code","error_code","error_message","created_by","created_at","updated_at","last_status_check"],"title":"RefundInfo"},"SendCodePayload":{"properties":{"phone":{"type":"string","title":"Phone"}},"type":"object","required":["phone"],"title":"SendCodePayload"},"SupplierMenuSave":{"properties":{"brand_id":{"type":"integer","title":"Brand Id"},"text":{"type":"string","maxLength":20000,"minLength":1,"title":"Text"},"menu_date":{"type":"string","format":"date","title":"Menu Date"}},"type":"object","required":["brand_id","text","menu_date"],"title":"SupplierMenuSave"},"SupplierMenuText":{"properties":{"brand_id":{"type":"integer","title":"Brand Id"},"text":{"type":"string","maxLength":20000,"minLength":1,"title":"Text"}},"type":"object","required":["brand_id","text"],"title":"SupplierMenuText","description":"Текст меню поставщика как прислали (WhatsApp), для разбора."},"SupportTemplateCreate":{"properties":{"name":{"type":"string","title":"Name"},"text":{"type":"string","title":"Text"},"sort_order":{"type":"integer","title":"Sort Order","default":0}},"type":"object","required":["name","text"],"title":"SupportTemplateCreate"},"SupportTemplateRead":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"text":{"type":"string","title":"Text"},"sort_order":{"type":"integer","title":"Sort Order"},"is_default":{"type":"boolean","title":"Is Default"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","name","text","sort_order","is_default","created_at"],"title":"SupportTemplateRead"},"SupportTemplateUpdate":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Text"},"sort_order":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sort Order"}},"type":"object","title":"SupportTemplateUpdate"},"Token":{"properties":{"access_token":{"type":"string","title":"Access Token"},"token_type":{"type":"string","title":"Token Type","default":"bearer"}},"type":"object","required":["access_token"],"title":"Token"},"TransactionDetail":{"properties":{"id":{"type":"integer","title":"Id"},"order_id":{"type":"string","title":"Order Id"},"tran_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tran Id"},"amount":{"type":"integer","title":"Amount"},"customer_phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Customer Phone"},"customer_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Customer Name","description":"Имя клиента из пользователей"},"location_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Location Id"},"location_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Location Name"},"location_address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Location Address"},"status":{"type":"string","title":"Status"},"prv_txn":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prv Txn"},"provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"items":{"items":{"$ref":"#/components/schemas/OrderItemDetail"},"type":"array","title":"Items","default":[]},"has_refund":{"type":"boolean","title":"Has Refund","default":false}},"type":"object","required":["id","order_id","amount","status","created_at","updated_at"],"title":"TransactionDetail","description":"Детальная информация о транзакции"},"UserRead":{"properties":{"username":{"type":"string","title":"Username"},"email":{"anyOf":[{"type":"string","format":"email"},{"type":"null"}],"title":"Email"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active","default":true},"is_admin":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Admin","default":false},"is_expeditor":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Expeditor","default":false},"id":{"type":"integer","title":"Id"}},"type":"object","required":["username","id"],"title":"UserRead"},"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"},"VerifyCodePayload":{"properties":{"phone":{"type":"string","title":"Phone"},"code":{"type":"string","title":"Code"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"location_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Location Id"}},"type":"object","required":["phone","code"],"title":"VerifyCodePayload"},"WriteOffItemCreate":{"properties":{"product_id":{"type":"integer","title":"Product Id","description":"ID товара"},"quantity":{"type":"integer","exclusiveMinimum":0.0,"title":"Quantity","description":"Количество товара"}},"type":"object","required":["product_id","quantity"],"title":"WriteOffItemCreate"},"WriteOffItemResponse":{"properties":{"product_id":{"type":"integer","title":"Product Id","description":"ID товара"},"quantity":{"type":"integer","exclusiveMinimum":0.0,"title":"Quantity","description":"Количество товара"},"id":{"type":"integer","title":"Id"},"product_name":{"type":"string","title":"Product Name"},"cost_price":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Cost Price"},"total_cost":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Total Cost"}},"type":"object","required":["product_id","quantity","id","product_name","cost_price","total_cost"],"title":"WriteOffItemResponse"},"WriteOffLogCreate":{"properties":{"location_id":{"type":"integer","title":"Location Id","description":"ID локации"},"writeoff_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Writeoff Date","description":"Дата списания (опционально, используется текущая дата)"},"reason":{"type":"string","title":"Reason","description":"Причина: expired, damaged, other","default":"other"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes","description":"Примечания"},"items":{"items":{"$ref":"#/components/schemas/WriteOffItemCreate"},"type":"array","minItems":1,"title":"Items","description":"Список товаров для списания"},"photo_base64":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Photo Base64","description":"Фото в base64 (опционально)"}},"type":"object","required":["location_id","items"],"title":"WriteOffLogCreate"},"WriteOffLogListResponse":{"properties":{"writeoffs":{"items":{"$ref":"#/components/schemas/WriteOffLogResponse"},"type":"array","title":"Writeoffs"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"page_size":{"type":"integer","title":"Page Size"}},"type":"object","required":["writeoffs","total","page","page_size"],"title":"WriteOffLogListResponse"},"WriteOffLogResponse":{"properties":{"location_id":{"type":"integer","title":"Location Id","description":"ID локации"},"writeoff_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Writeoff Date","description":"Дата списания (опционально, используется текущая дата)"},"reason":{"type":"string","title":"Reason","description":"Причина: expired, damaged, other","default":"other"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes","description":"Примечания"},"id":{"type":"integer","title":"Id"},"expeditor_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Expeditor Id"},"expeditor_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Expeditor Name"},"location_name":{"type":"string","title":"Location Name"},"photo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Photo Url"},"total_cost":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Total Cost"},"items":{"items":{"$ref":"#/components/schemas/WriteOffItemResponse"},"type":"array","title":"Items"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["location_id","id","expeditor_id","expeditor_name","location_name","photo_url","total_cost","items","created_at"],"title":"WriteOffLogResponse"}},"securitySchemes":{"OAuth2PasswordBearer":{"type":"oauth2","flows":{"password":{"scopes":{},"tokenUrl":"/api/v1/auth/login"}}}}}}