{"openapi":"3.1.0","info":{"title":"TechZone POS Central","version":"0.2.0"},"paths":{"/api/v1/auth/login":{"post":{"tags":["auth"],"summary":"Login","operationId":"login_api_v1_auth_login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/auth/refresh":{"post":{"tags":["auth"],"summary":"Refresh","operationId":"refresh_api_v1_auth_refresh_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RefreshRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/activation/issue":{"post":{"tags":["activation"],"summary":"Issue","operationId":"issue_api_v1_activation_issue_post","parameters":[{"name":"X-Activation-Issuer-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Activation-Issuer-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivationIssueRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Issue Api V1 Activation Issue Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/activation/register":{"post":{"tags":["activation"],"summary":"Register","operationId":"register_api_v1_activation_register_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivationRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Register Api V1 Activation Register Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/support/activations":{"get":{"tags":["support"],"summary":"List Activations","operationId":"list_activations_api_v1_support_activations_get","parameters":[{"name":"X-Activation-Issuer-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Activation-Issuer-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response List Activations Api V1 Support Activations Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/support/activations/batch":{"post":{"tags":["support"],"summary":"Issue Batch","operationId":"issue_batch_api_v1_support_activations_batch_post","parameters":[{"name":"X-Activation-Issuer-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Activation-Issuer-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivationBatchRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Issue Batch Api V1 Support Activations Batch Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/support/activations/{activation_id}/summary":{"get":{"tags":["support"],"summary":"Activation Summary","operationId":"activation_summary_api_v1_support_activations__activation_id__summary_get","parameters":[{"name":"activation_id","in":"path","required":true,"schema":{"type":"integer","title":"Activation Id"}},{"name":"X-Activation-Issuer-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Activation-Issuer-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Activation Summary Api V1 Support Activations  Activation Id  Summary Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/users/":{"get":{"tags":["users"],"summary":"List Users","operationId":"list_users_api_v1_users__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/UserSummary"},"type":"array","title":"Response List Users Api V1 Users  Get"}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["users"],"summary":"Create User","operationId":"create_user_api_v1_users__post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSummary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/users/me":{"get":{"tags":["users"],"summary":"Me","operationId":"me_api_v1_users_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSummary"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/users/me/permissions":{"get":{"tags":["users"],"summary":"My Permissions","description":"Codigos de permiso efectivos del usuario (fuente de verdad para las apps).\n\nLos administradores (subrol is_admin) reciben todos los codigos.","operationId":"my_permissions_api_v1_users_me_permissions_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"type":"string"},"type":"array","title":"Response My Permissions Api V1 Users Me Permissions Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/users/{user_id}":{"patch":{"tags":["users"],"summary":"Update User","operationId":"update_user_api_v1_users__user_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSummary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["users"],"summary":"Delete User","operationId":"delete_user_api_v1_users__user_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/roles/profiles":{"get":{"tags":["roles"],"summary":"List Profiles","operationId":"list_profiles_api_v1_roles_profiles_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ProfileOut"},"type":"array","title":"Response List Profiles Api V1 Roles Profiles Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/products/images/{filename}":{"get":{"tags":["products"],"summary":"Get Product Image","operationId":"get_product_image_api_v1_products_images__filename__get","parameters":[{"name":"filename","in":"path","required":true,"schema":{"type":"string","title":"Filename"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"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":[{"HTTPBearer":[]}],"parameters":[{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}},{"name":"category_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Category Id"}},{"name":"barcode","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Barcode"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ProductOut"},"title":"Response List Products Api V1 Products  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["products"],"summary":"Create Product","operationId":"create_product_api_v1_products__post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/products/categories":{"get":{"tags":["products"],"summary":"List Categories","operationId":"list_categories_api_v1_products_categories_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/CategoryOut"},"type":"array","title":"Response List Categories Api V1 Products Categories Get"}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["products"],"summary":"Create Category","operationId":"create_category_api_v1_products_categories_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CategoryCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CategoryOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/products/categories/{category_id}":{"patch":{"tags":["products"],"summary":"Update Category","operationId":"update_category_api_v1_products_categories__category_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"category_id","in":"path","required":true,"schema":{"type":"integer","title":"Category Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CategoryCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CategoryOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["products"],"summary":"Delete Category","operationId":"delete_category_api_v1_products_categories__category_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"category_id","in":"path","required":true,"schema":{"type":"integer","title":"Category Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/products/{product_id}":{"patch":{"tags":["products"],"summary":"Update Product","operationId":"update_product_api_v1_products__product_id__patch","security":[{"HTTPBearer":[]}],"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/ProductOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["products"],"summary":"Delete Product","operationId":"delete_product_api_v1_products__product_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"product_id","in":"path","required":true,"schema":{"type":"integer","title":"Product Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/products/{product_id}/image":{"post":{"tags":["products"],"summary":"Upload Product Image","operationId":"upload_product_image_api_v1_products__product_id__image_post","security":[{"HTTPBearer":[]}],"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_products__product_id__image_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/taxes/":{"get":{"tags":["taxes"],"summary":"List Taxes","operationId":"list_taxes_api_v1_taxes__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/TaxOut"},"type":"array","title":"Response List Taxes Api V1 Taxes  Get"}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["taxes"],"summary":"Create Tax","operationId":"create_tax_api_v1_taxes__post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaxCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaxOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/taxes/{tax_id}":{"patch":{"tags":["taxes"],"summary":"Update Tax","operationId":"update_tax_api_v1_taxes__tax_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tax_id","in":"path","required":true,"schema":{"type":"integer","title":"Tax Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaxUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaxOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["taxes"],"summary":"Delete Tax","operationId":"delete_tax_api_v1_taxes__tax_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tax_id","in":"path","required":true,"schema":{"type":"integer","title":"Tax Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/prescriptions/":{"get":{"tags":["prescriptions"],"summary":"List Prescriptions","operationId":"list_prescriptions_api_v1_prescriptions__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"status_filter","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Filter"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PrescriptionOut"},"title":"Response List Prescriptions Api V1 Prescriptions  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["prescriptions"],"summary":"Create Prescription","operationId":"create_prescription_api_v1_prescriptions__post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PrescriptionCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PrescriptionOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/prescriptions/{rx_id}/dispense":{"post":{"tags":["prescriptions"],"summary":"Dispense Prescription","operationId":"dispense_prescription_api_v1_prescriptions__rx_id__dispense_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"rx_id","in":"path","required":true,"schema":{"type":"integer","title":"Rx Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PrescriptionDispense"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PrescriptionOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/prescriptions/{rx_id}/cancel":{"post":{"tags":["prescriptions"],"summary":"Cancel Prescription","operationId":"cancel_prescription_api_v1_prescriptions__rx_id__cancel_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"rx_id","in":"path","required":true,"schema":{"type":"integer","title":"Rx Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PrescriptionOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/inventory/":{"get":{"tags":["inventory"],"summary":"Inventory","operationId":"inventory_api_v1_inventory__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"low_stock","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Low Stock"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ProductOut"},"title":"Response Inventory Api V1 Inventory  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/inventory/lots/receive":{"post":{"tags":["inventory"],"summary":"Receive Lot","description":"Entrada de mercancia a lote (suma al lote si el codigo ya existe).","operationId":"receive_lot_api_v1_inventory_lots_receive_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LotIn"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LotOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/inventory/lots":{"get":{"tags":["inventory"],"summary":"List Lots","operationId":"list_lots_api_v1_inventory_lots_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"product_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Product Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/LotOut"},"title":"Response List Lots Api V1 Inventory Lots Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/inventory/lots/expiring":{"get":{"tags":["inventory"],"summary":"Expiring Lots","description":"Lotes con existencias que caducan dentro de `days` dias.","operationId":"expiring_lots_api_v1_inventory_lots_expiring_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/LotOut"},"title":"Response Expiring Lots Api V1 Inventory Lots Expiring Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/inventory/adjust/{product_id}":{"post":{"tags":["inventory"],"summary":"Adjust Stock","operationId":"adjust_stock_api_v1_inventory_adjust__product_id__post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"product_id","in":"path","required":true,"schema":{"type":"integer","title":"Product Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StockAdjust"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/invoices/requests":{"get":{"tags":["invoices"],"summary":"List Invoice Requests","operationId":"list_invoice_requests_api_v1_invoices_requests_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/InvoiceRequestOut"},"type":"array","title":"Response List Invoice Requests Api V1 Invoices Requests Get"}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["invoices"],"summary":"Create Invoice Request","operationId":"create_invoice_request_api_v1_invoices_requests_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvoiceRequestCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvoiceRequestOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/invoices/requests/{request_id}":{"patch":{"tags":["invoices"],"summary":"Update Invoice Request","operationId":"update_invoice_request_api_v1_invoices_requests__request_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"request_id","in":"path","required":true,"schema":{"type":"integer","title":"Request Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvoiceRequestStatusUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvoiceRequestOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/recipes/":{"get":{"tags":["recipes"],"summary":"List Recipes","operationId":"list_recipes_api_v1_recipes__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/RecipeOut"},"type":"array","title":"Response List Recipes Api V1 Recipes  Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/recipes/{product_id}":{"put":{"tags":["recipes"],"summary":"Save Recipe","operationId":"save_recipe_api_v1_recipes__product_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"product_id","in":"path","required":true,"schema":{"type":"integer","title":"Product Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecipeUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecipeOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["recipes"],"summary":"Delete Recipe","operationId":"delete_recipe_api_v1_recipes__product_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"product_id","in":"path","required":true,"schema":{"type":"integer","title":"Product Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/recipes/{product_id}/variants":{"put":{"tags":["recipes"],"summary":"Save Recipe Variants","operationId":"save_recipe_variants_api_v1_recipes__product_id__variants_put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"product_id","in":"path","required":true,"schema":{"type":"integer","title":"Product Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecipeVariantUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecipeOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/sales/":{"post":{"tags":["sales"],"summary":"Create Sale","operationId":"create_sale_api_v1_sales__post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SaleCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SaleOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["sales"],"summary":"List Sales","operationId":"list_sales_api_v1_sales__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"shift_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Shift Id"}},{"name":"customer_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Customer Id"}},{"name":"status_filter","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Filter"}},{"name":"payment_method","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Payment Method"}},{"name":"table_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Table Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SaleOut"},"title":"Response List Sales Api V1 Sales  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/sales/refunds":{"get":{"tags":["sales"],"summary":"List Refunds","operationId":"list_refunds_api_v1_sales_refunds_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/RefundOut"},"title":"Response List Refunds Api V1 Sales Refunds Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/sales/{sale_id}/refund":{"post":{"tags":["sales"],"summary":"Refund Sale","operationId":"refund_sale_api_v1_sales__sale_id__refund_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"sale_id","in":"path","required":true,"schema":{"type":"integer","title":"Sale Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RefundCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RefundOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/sales/{sale_id}":{"get":{"tags":["sales"],"summary":"Get Sale","operationId":"get_sale_api_v1_sales__sale_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"sale_id","in":"path","required":true,"schema":{"type":"integer","title":"Sale Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SaleOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/sales/{sale_id}/items/{item_id}":{"patch":{"tags":["sales"],"summary":"Update Item Status","operationId":"update_item_status_api_v1_sales__sale_id__items__item_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"sale_id","in":"path","required":true,"schema":{"type":"integer","title":"Sale Id"}},{"name":"item_id","in":"path","required":true,"schema":{"type":"integer","title":"Item Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrderStatusIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SaleItemOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/sales/{sale_id}/kitchen/ready":{"post":{"tags":["sales"],"summary":"Mark All Ready","operationId":"mark_all_ready_api_v1_sales__sale_id__kitchen_ready_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"sale_id","in":"path","required":true,"schema":{"type":"integer","title":"Sale Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SaleOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/orders/{order_id}/items/{item_id}":{"delete":{"tags":["orders"],"summary":"Remove Order Item","operationId":"remove_order_item_api_v1_orders__order_id__items__item_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"order_id","in":"path","required":true,"schema":{"type":"integer","title":"Order 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/SaleOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/orders/":{"get":{"tags":["orders"],"summary":"List Orders","operationId":"list_orders_api_v1_orders__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/SaleOut"},"type":"array","title":"Response List Orders Api V1 Orders  Get"}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["orders"],"summary":"Create Order","operationId":"create_order_api_v1_orders__post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrderCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SaleOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/orders/kitchen":{"get":{"tags":["orders"],"summary":"List Kitchen Orders","operationId":"list_kitchen_orders_api_v1_orders_kitchen_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/SaleOut"},"type":"array","title":"Response List Kitchen Orders Api V1 Orders Kitchen Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/orders/kitchen/recipes":{"get":{"tags":["orders"],"summary":"List Kitchen Recipes","operationId":"list_kitchen_recipes_api_v1_orders_kitchen_recipes_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/KitchenRecipeOut"},"type":"array","title":"Response List Kitchen Recipes Api V1 Orders Kitchen Recipes Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/orders/table/{table_id}":{"get":{"tags":["orders"],"summary":"Get Table Order","operationId":"get_table_order_api_v1_orders_table__table_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"table_id","in":"path","required":true,"schema":{"type":"integer","title":"Table Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SaleOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/orders/delivery":{"post":{"tags":["orders"],"summary":"Create Delivery Order","operationId":"create_delivery_order_api_v1_orders_delivery_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeliveryOrderCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SaleOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/orders/{order_id}/items":{"post":{"tags":["orders"],"summary":"Add Items","operationId":"add_items_api_v1_orders__order_id__items_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"order_id","in":"path","required":true,"schema":{"type":"integer","title":"Order Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrderCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SaleOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/orders/{order_id}/items/{item_id}/move":{"post":{"tags":["orders"],"summary":"Move Item","operationId":"move_item_api_v1_orders__order_id__items__item_id__move_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"order_id","in":"path","required":true,"schema":{"type":"integer","title":"Order Id"}},{"name":"item_id","in":"path","required":true,"schema":{"type":"integer","title":"Item Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrderMoveIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SaleOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/orders/{order_id}/split":{"post":{"tags":["orders"],"summary":"Split Order","operationId":"split_order_api_v1_orders__order_id__split_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"order_id","in":"path","required":true,"schema":{"type":"integer","title":"Order Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrderSplitIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SaleOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/orders/{order_id}/close":{"post":{"tags":["orders"],"summary":"Close Order","operationId":"close_order_api_v1_orders__order_id__close_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"order_id","in":"path","required":true,"schema":{"type":"integer","title":"Order Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SaleOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/orders/{order_id}/settle":{"post":{"tags":["orders"],"summary":"Settle Order","operationId":"settle_order_api_v1_orders__order_id__settle_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"order_id","in":"path","required":true,"schema":{"type":"integer","title":"Order Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrderSettleIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SaleOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/orders/{order_id}/cancel":{"post":{"tags":["orders"],"summary":"Cancel Order","operationId":"cancel_order_api_v1_orders__order_id__cancel_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"order_id","in":"path","required":true,"schema":{"type":"integer","title":"Order Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SaleOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/customers/":{"get":{"tags":["customers"],"summary":"List Customers","operationId":"list_customers_api_v1_customers__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}},{"name":"active_only","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Active Only"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CustomerOut"},"title":"Response List Customers Api V1 Customers  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["customers"],"summary":"Create Customer","operationId":"create_customer_api_v1_customers__post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/customers/{customer_id}":{"get":{"tags":["customers"],"summary":"Get Customer","operationId":"get_customer_api_v1_customers__customer_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"customer_id","in":"path","required":true,"schema":{"type":"integer","title":"Customer Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["customers"],"summary":"Update Customer","operationId":"update_customer_api_v1_customers__customer_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"customer_id","in":"path","required":true,"schema":{"type":"integer","title":"Customer Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/customers/{customer_id}/payments":{"post":{"tags":["customers"],"summary":"Add Payment","operationId":"add_payment_api_v1_customers__customer_id__payments_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"customer_id","in":"path","required":true,"schema":{"type":"integer","title":"Customer Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerPaymentIn"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerPaymentOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["customers"],"summary":"List Payments","operationId":"list_payments_api_v1_customers__customer_id__payments_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"customer_id","in":"path","required":true,"schema":{"type":"integer","title":"Customer Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CustomerPaymentOut"},"title":"Response List Payments Api V1 Customers  Customer Id  Payments Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/shifts/open":{"post":{"tags":["shifts"],"summary":"Open Shift","operationId":"open_shift_api_v1_shifts_open_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShiftOpenIn"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShiftOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/shifts/current":{"get":{"tags":["shifts"],"summary":"Current Shift","operationId":"current_shift_api_v1_shifts_current_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"device_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Device Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShiftOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/shifts/{shift_id}/close":{"post":{"tags":["shifts"],"summary":"Close Shift","operationId":"close_shift_api_v1_shifts__shift_id__close_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"shift_id","in":"path","required":true,"schema":{"type":"integer","title":"Shift Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShiftCloseIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShiftOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/shifts/":{"get":{"tags":["shifts"],"summary":"List Shifts","operationId":"list_shifts_api_v1_shifts__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ShiftOut"},"title":"Response List Shifts Api V1 Shifts  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tables/":{"get":{"tags":["tables"],"summary":"List Tables","operationId":"list_tables_api_v1_tables__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/TableOut"},"type":"array","title":"Response List Tables Api V1 Tables  Get"}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["tables"],"summary":"Create Table","operationId":"create_table_api_v1_tables__post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TableCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TableOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/tables/{table_id}":{"patch":{"tags":["tables"],"summary":"Update Table","operationId":"update_table_api_v1_tables__table_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"table_id","in":"path","required":true,"schema":{"type":"integer","title":"Table Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TableUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TableOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["tables"],"summary":"Delete Table","operationId":"delete_table_api_v1_tables__table_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"table_id","in":"path","required":true,"schema":{"type":"integer","title":"Table Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/modifiers/":{"get":{"tags":["modifiers"],"summary":"List Groups","operationId":"list_groups_api_v1_modifiers__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ModifierGroupOut"},"type":"array","title":"Response List Groups Api V1 Modifiers  Get"}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["modifiers"],"summary":"Create Group","operationId":"create_group_api_v1_modifiers__post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModifierGroupIn"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModifierGroupOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/modifiers/product/{product_id}":{"get":{"tags":["modifiers"],"summary":"List Product Groups","operationId":"list_product_groups_api_v1_modifiers_product__product_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"product_id","in":"path","required":true,"schema":{"type":"integer","title":"Product Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ModifierGroupOut"},"title":"Response List Product Groups Api V1 Modifiers Product  Product Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/modifiers/{group_id}":{"patch":{"tags":["modifiers"],"summary":"Update Group","operationId":"update_group_api_v1_modifiers__group_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"integer","title":"Group Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModifierGroupIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModifierGroupOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["modifiers"],"summary":"Delete Group","operationId":"delete_group_api_v1_modifiers__group_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"integer","title":"Group Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/promotions/":{"get":{"tags":["promotions"],"summary":"List Promotions","operationId":"list_promotions_api_v1_promotions__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"active_only","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Active Only"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PromotionOut"},"title":"Response List Promotions Api V1 Promotions  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["promotions"],"summary":"Create Promotion","operationId":"create_promotion_api_v1_promotions__post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromotionCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromotionOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/promotions/{promotion_id}":{"patch":{"tags":["promotions"],"summary":"Update Promotion","operationId":"update_promotion_api_v1_promotions__promotion_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"promotion_id","in":"path","required":true,"schema":{"type":"integer","title":"Promotion Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromotionUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromotionOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["promotions"],"summary":"Delete Promotion","operationId":"delete_promotion_api_v1_promotions__promotion_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"promotion_id","in":"path","required":true,"schema":{"type":"integer","title":"Promotion Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/audit/":{"get":{"tags":["audit"],"summary":"List Audit","operationId":"list_audit_api_v1_audit__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"action","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Action"}},{"name":"user_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"User Id"}},{"name":"from_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"From Date"}},{"name":"to_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"To Date"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AuditLogOut"},"title":"Response List Audit Api V1 Audit  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/audit/actions":{"get":{"tags":["audit"],"summary":"List Actions","operationId":"list_actions_api_v1_audit_actions_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"type":"string"},"type":"array","title":"Response List Actions Api V1 Audit Actions Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/reports/dashboard":{"get":{"tags":["reports"],"summary":"Dashboard","operationId":"dashboard_api_v1_reports_dashboard_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Dashboard Api V1 Reports Dashboard Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/reports/sales":{"get":{"tags":["reports"],"summary":"Sales Report","operationId":"sales_report_api_v1_reports_sales_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"from_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"From Date"}},{"name":"to_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"To Date"}},{"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":{"type":"object","additionalProperties":true},"title":"Response Sales Report Api V1 Reports Sales Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/reports/top-products":{"get":{"tags":["reports"],"summary":"Top Products","operationId":"top_products_api_v1_reports_top_products_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10,"title":"Limit"}},{"name":"from_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"From Date"}},{"name":"to_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"To Date"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Top Products Api V1 Reports Top Products Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/reports/inventory":{"get":{"tags":["reports"],"summary":"Inventory Report","operationId":"inventory_report_api_v1_reports_inventory_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Inventory Report Api V1 Reports Inventory Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/reports/sales.csv":{"get":{"tags":["reports"],"summary":"Sales Csv","operationId":"sales_csv_api_v1_reports_sales_csv_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"from_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"From Date"}},{"name":"to_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"To Date"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":500,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/reports/sales.pdf":{"get":{"tags":["reports"],"summary":"Sales Pdf","operationId":"sales_pdf_api_v1_reports_sales_pdf_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"from_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"From Date"}},{"name":"to_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"To Date"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":500,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/devices/":{"get":{"tags":["devices"],"summary":"List Devices","operationId":"list_devices_api_v1_devices__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/DeviceOut"},"type":"array","title":"Response List Devices Api V1 Devices  Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/devices/register":{"post":{"tags":["devices"],"summary":"Register Device","description":"Registro de dispositivo tras escanear el QR (emparejamiento inicial).\n\nSi el QR incluye ``instance_id``, el dispositivo se atribuye al tenant\ndueno de esa fila de configuracion; si no, queda en ambito legacy.","operationId":"register_device_api_v1_devices_register_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceRegister"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/devices/codes":{"get":{"tags":["devices"],"summary":"List Device Codes","operationId":"list_device_codes_api_v1_devices_codes_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/DeviceCodeOut"},"type":"array","title":"Response List Device Codes Api V1 Devices Codes Get"}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["devices"],"summary":"Issue Device Code","description":"Emite una clave de un solo uso para vincular una instalacion.\n\nEl codigo se revela solo en esta respuesta; el listado posterior lo oculta.","operationId":"issue_device_code_api_v1_devices_codes_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceCodeIn"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceCodeOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/devices/codes/{code_id}":{"delete":{"tags":["devices"],"summary":"Revoke Device Code","operationId":"revoke_device_code_api_v1_devices_codes__code_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"code_id","in":"path","required":true,"schema":{"type":"integer","title":"Code Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/devices/claim":{"post":{"tags":["devices"],"summary":"Claim Device Code","description":"Canjea una clave de dispositivo (primer arranque, sin autenticar).\n\nCrea el dispositivo atribuido al tenant de la clave y la marca como usada.","operationId":"claim_device_code_api_v1_devices_claim_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceClaim"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/setup/qr":{"get":{"tags":["setup"],"summary":"Qr Payload","description":"Devuelve el payload de conexion que se codifica en el QR.","operationId":"qr_payload_api_v1_setup_qr_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Qr Payload Api V1 Setup Qr Get"}}}}}}},"/api/v1/setup/qr.png":{"get":{"tags":["setup"],"summary":"Qr Image","description":"Imagen PNG del QR de vinculacion (para clientes Comanda/Cocina/Gestion).","operationId":"qr_image_api_v1_setup_qr_png_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/setup/settings":{"get":{"tags":["setup"],"summary":"Get Settings Info","operationId":"get_settings_info_api_v1_setup_settings_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Get Settings Info Api V1 Setup Settings Get"}}}}},"security":[{"HTTPBearer":[]}]},"patch":{"tags":["setup"],"summary":"Update Settings","operationId":"update_settings_api_v1_setup_settings_patch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SettingsUpdate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Update Settings Api V1 Setup Settings Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/setup/slm/ask":{"post":{"tags":["setup"],"summary":"Slm Ask","operationId":"slm_ask_api_v1_setup_slm_ask_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SLMRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SLMResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/health":{"get":{"summary":"Health","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Health Health Get"}}}}}}},"/healthz":{"get":{"summary":"Healthz","description":"Liveness/readiness detallado: base de datos y Redis.","operationId":"healthz_healthz_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Healthz Healthz Get"}}}}}}}},"components":{"schemas":{"ActivationBatchRequest":{"properties":{"count":{"type":"integer","maximum":500.0,"minimum":1.0,"title":"Count"},"email":{"type":"string","maxLength":120,"minLength":5,"title":"Email"},"phone":{"anyOf":[{"type":"string","maxLength":32},{"type":"null"}],"title":"Phone"},"profile_slug":{"type":"string","maxLength":32,"minLength":3,"title":"Profile Slug"},"store_name":{"type":"string","maxLength":120,"minLength":1,"title":"Store Name"}},"type":"object","required":["count","email","profile_slug","store_name"],"title":"ActivationBatchRequest"},"ActivationIssueRequest":{"properties":{"email":{"type":"string","maxLength":120,"minLength":5,"title":"Email"},"phone":{"anyOf":[{"type":"string","maxLength":32},{"type":"null"}],"title":"Phone"},"profile_slug":{"type":"string","maxLength":32,"minLength":3,"title":"Profile Slug"},"store_name":{"type":"string","maxLength":120,"minLength":1,"title":"Store Name"}},"type":"object","required":["email","profile_slug","store_name"],"title":"ActivationIssueRequest"},"ActivationRequest":{"properties":{"code":{"type":"string","maxLength":64,"minLength":8,"title":"Code"},"email":{"type":"string","maxLength":120,"minLength":5,"title":"Email"},"phone":{"anyOf":[{"type":"string","maxLength":32},{"type":"null"}],"title":"Phone"},"username":{"type":"string","maxLength":50,"minLength":3,"title":"Username"},"password":{"type":"string","maxLength":128,"minLength":8,"title":"Password"},"full_name":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"title":"Full Name"},"store_name":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"title":"Store Name"},"profile_slug":{"type":"string","maxLength":32,"minLength":3,"title":"Profile Slug"}},"type":"object","required":["code","email","username","password","profile_slug"],"title":"ActivationRequest"},"AuditLogOut":{"properties":{"id":{"type":"integer","title":"Id"},"user_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"User Id"},"username":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Username"},"profile_slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Profile Slug"},"subrole_slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subrole Slug"},"action":{"type":"string","title":"Action"},"resource":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resource"},"ip":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ip"},"result":{"type":"string","title":"Result"},"timestamp":{"type":"string","format":"date-time","title":"Timestamp"}},"type":"object","required":["id","action","result","timestamp"],"title":"AuditLogOut"},"Body_upload_product_image_api_v1_products__product_id__image_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_product_image_api_v1_products__product_id__image_post"},"CategoryCreate":{"properties":{"name":{"type":"string","title":"Name"},"profile_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Profile Id"}},"type":"object","required":["name"],"title":"CategoryCreate"},"CategoryOut":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"product_count":{"type":"integer","title":"Product Count","default":0}},"type":"object","required":["id","name"],"title":"CategoryOut"},"CustomerCreate":{"properties":{"name":{"type":"string","maxLength":160,"minLength":1,"title":"Name"},"code":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}],"title":"Code"},"phone":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}],"title":"Phone"},"email":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"title":"Email"},"address":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Address"},"credit_limit":{"type":"number","minimum":0.0,"title":"Credit Limit","default":0.0},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},"type":"object","required":["name"],"title":"CustomerCreate"},"CustomerOut":{"properties":{"id":{"type":"integer","title":"Id"},"code":{"type":"string","title":"Code"},"name":{"type":"string","title":"Name"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Address"},"credit_limit":{"type":"number","title":"Credit Limit"},"balance":{"type":"number","title":"Balance"},"active":{"type":"boolean","title":"Active"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","code","name","credit_limit","balance","active","created_at"],"title":"CustomerOut"},"CustomerPaymentIn":{"properties":{"amount":{"type":"number","exclusiveMinimum":0.0,"title":"Amount"},"method":{"type":"string","maxLength":24,"title":"Method","default":"cash"},"reference":{"anyOf":[{"type":"string","maxLength":80},{"type":"null"}],"title":"Reference"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"sale_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sale Id"}},"type":"object","required":["amount"],"title":"CustomerPaymentIn"},"CustomerPaymentOut":{"properties":{"id":{"type":"integer","title":"Id"},"sale_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sale Id"},"method":{"type":"string","title":"Method"},"amount":{"type":"number","title":"Amount"},"reference":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reference"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","method","amount","created_at"],"title":"CustomerPaymentOut"},"CustomerUpdate":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":160,"minLength":1},{"type":"null"}],"title":"Name"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Address"},"credit_limit":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Credit Limit"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Active"}},"type":"object","title":"CustomerUpdate"},"DeliveryOrderCreate":{"properties":{"platform":{"type":"string","enum":["own","uber_eats","didi_food","rappi","other"],"title":"Platform"},"items":{"items":{"$ref":"#/components/schemas/OrderItemIn"},"type":"array","minItems":1,"title":"Items"},"customer_name":{"type":"string","maxLength":160,"minLength":1,"title":"Customer Name"},"phone":{"type":"string","maxLength":40,"minLength":1,"title":"Phone"},"address":{"type":"string","maxLength":240,"minLength":1,"title":"Address"},"order_number":{"anyOf":[{"type":"string","maxLength":80},{"type":"null"}],"title":"Order Number"},"instructions":{"anyOf":[{"type":"string","maxLength":240},{"type":"null"}],"title":"Instructions"},"payment_status":{"type":"string","enum":["collect","platform_paid"],"title":"Payment Status","default":"collect"},"device_id":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}],"title":"Device Id"}},"type":"object","required":["platform","items","customer_name","phone","address"],"title":"DeliveryOrderCreate"},"DeviceClaim":{"properties":{"code":{"type":"string","maxLength":64,"minLength":4,"title":"Code"},"name":{"type":"string","maxLength":120,"minLength":1,"title":"Name"},"platform":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Platform"}},"type":"object","required":["code","name"],"title":"DeviceClaim"},"DeviceCodeIn":{"properties":{"device_type":{"type":"string","pattern":"^(pos|comanda|cocina|gestion)$","title":"Device Type","default":"pos"},"label":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"title":"Label"}},"type":"object","title":"DeviceCodeIn"},"DeviceCodeOut":{"properties":{"id":{"type":"integer","title":"Id"},"code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code"},"device_type":{"type":"string","title":"Device Type"},"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"},"used":{"type":"boolean","title":"Used","default":false},"device_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Device Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","device_type","created_at"],"title":"DeviceCodeOut","description":"Se construye manualmente (usado/dispositivo no son columnas directas)."},"DeviceOut":{"properties":{"device_id":{"type":"string","title":"Device Id"},"device_type":{"type":"string","title":"Device Type"},"name":{"type":"string","title":"Name"},"platform":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Platform"},"status":{"type":"string","title":"Status"},"last_seen":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Seen"},"linked_at":{"type":"string","format":"date-time","title":"Linked At"}},"type":"object","required":["device_id","device_type","name","status","linked_at"],"title":"DeviceOut"},"DeviceRegister":{"properties":{"device_type":{"type":"string","pattern":"^(pos|comanda|cocina|gestion)$","title":"Device Type"},"name":{"type":"string","maxLength":120,"minLength":1,"title":"Name"},"platform":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Platform"},"instance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Instance Id","description":"instance_id del QR escaneado; atribuye el tenant"}},"type":"object","required":["device_type","name"],"title":"DeviceRegister"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"InvoiceRequestCreate":{"properties":{"sale_id":{"type":"integer","exclusiveMinimum":0.0,"title":"Sale Id"},"ticket_number":{"type":"string","maxLength":24,"minLength":1,"title":"Ticket Number"},"masked_rfc":{"type":"string","maxLength":11,"minLength":10,"pattern":"^[A-Z0-9Ñ&]{3,4}••••[A-Z0-9]{3}$","title":"Masked Rfc"},"masked_email":{"type":"string","maxLength":120,"minLength":8,"pattern":"^[^@\\s]•••@[^@\\s]+\\.[^@\\s]+$","title":"Masked Email"}},"type":"object","required":["sale_id","ticket_number","masked_rfc","masked_email"],"title":"InvoiceRequestCreate"},"InvoiceRequestOut":{"properties":{"id":{"type":"integer","title":"Id"},"sale_id":{"type":"integer","title":"Sale Id"},"ticket_number":{"type":"string","title":"Ticket Number"},"sale_total":{"type":"number","title":"Sale Total"},"payment_method":{"type":"string","title":"Payment Method"},"payments":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Payments"},"masked_rfc":{"type":"string","title":"Masked Rfc"},"masked_email":{"type":"string","title":"Masked Email"},"status":{"type":"string","enum":["received","review","ready","cancelled"],"title":"Status"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","sale_id","ticket_number","sale_total","payment_method","payments","masked_rfc","masked_email","status","created_at"],"title":"InvoiceRequestOut"},"InvoiceRequestStatusUpdate":{"properties":{"status":{"type":"string","enum":["received","review","ready","cancelled"],"title":"Status"}},"type":"object","required":["status"],"title":"InvoiceRequestStatusUpdate"},"KitchenRecipeComponentOut":{"properties":{"ingredient_product_id":{"type":"integer","title":"Ingredient Product Id"},"ingredient_name":{"type":"string","title":"Ingredient Name"},"quantity":{"type":"number","title":"Quantity"},"unit":{"type":"string","title":"Unit"}},"type":"object","required":["ingredient_product_id","ingredient_name","quantity","unit"],"title":"KitchenRecipeComponentOut"},"KitchenRecipeOut":{"properties":{"product_id":{"type":"integer","title":"Product Id"},"product_name":{"type":"string","title":"Product Name"},"components":{"items":{"$ref":"#/components/schemas/KitchenRecipeComponentOut"},"type":"array","title":"Components"},"variants":{"items":{"$ref":"#/components/schemas/KitchenRecipeVariantOut"},"type":"array","title":"Variants"}},"type":"object","required":["product_id","product_name"],"title":"KitchenRecipeOut"},"KitchenRecipeVariantOut":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"components":{"items":{"$ref":"#/components/schemas/KitchenRecipeComponentOut"},"type":"array","title":"Components"}},"type":"object","required":["id","name"],"title":"KitchenRecipeVariantOut"},"LoginRequest":{"properties":{"username":{"type":"string","title":"Username"},"password":{"type":"string","title":"Password"},"profile_slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Profile Slug"}},"type":"object","required":["username","password"],"title":"LoginRequest"},"LotIn":{"properties":{"product_id":{"type":"integer","title":"Product Id"},"lot_code":{"type":"string","maxLength":40,"minLength":1,"title":"Lot Code"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At"},"qty":{"type":"number","exclusiveMinimum":0.0,"title":"Qty"}},"type":"object","required":["product_id","lot_code","qty"],"title":"LotIn"},"LotOut":{"properties":{"id":{"type":"integer","title":"Id"},"product_id":{"type":"integer","title":"Product Id"},"product_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Product Name"},"lot_code":{"type":"string","title":"Lot Code"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At"},"qty":{"type":"number","title":"Qty"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","product_id","lot_code","qty","created_at"],"title":"LotOut"},"ModifierGroupIn":{"properties":{"name":{"type":"string","maxLength":60,"title":"Name"},"multi":{"type":"boolean","title":"Multi","default":false},"required":{"type":"boolean","title":"Required","default":false},"min_choices":{"type":"integer","title":"Min Choices","default":0},"max_choices":{"type":"integer","title":"Max Choices","default":0},"modifiers":{"items":{"$ref":"#/components/schemas/ModifierIn"},"type":"array","title":"Modifiers","default":[]},"product_ids":{"items":{"type":"integer"},"type":"array","title":"Product Ids","default":[]}},"type":"object","required":["name"],"title":"ModifierGroupIn"},"ModifierGroupOut":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"multi":{"type":"boolean","title":"Multi"},"required":{"type":"boolean","title":"Required"},"min_choices":{"type":"integer","title":"Min Choices"},"max_choices":{"type":"integer","title":"Max Choices"},"modifiers":{"items":{"$ref":"#/components/schemas/ModifierOut"},"type":"array","title":"Modifiers","default":[]},"product_ids":{"items":{"type":"integer"},"type":"array","title":"Product Ids","default":[]}},"type":"object","required":["id","name","multi","required","min_choices","max_choices"],"title":"ModifierGroupOut"},"ModifierIn":{"properties":{"name":{"type":"string","maxLength":60,"title":"Name"},"price_delta":{"type":"number","title":"Price Delta","default":0.0},"is_default":{"type":"boolean","title":"Is Default","default":false},"active":{"type":"boolean","title":"Active","default":true}},"type":"object","required":["name"],"title":"ModifierIn"},"ModifierOut":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"price_delta":{"type":"number","title":"Price Delta"},"is_default":{"type":"boolean","title":"Is Default"},"active":{"type":"boolean","title":"Active"}},"type":"object","required":["id","name","price_delta","is_default","active"],"title":"ModifierOut"},"OrderCreate":{"properties":{"table_id":{"type":"integer","title":"Table Id"},"items":{"items":{"$ref":"#/components/schemas/OrderItemIn"},"type":"array","minItems":1,"title":"Items"},"device_id":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}],"title":"Device Id"},"notes":{"anyOf":[{"type":"string","maxLength":240},{"type":"null"}],"title":"Notes"}},"type":"object","required":["table_id","items"],"title":"OrderCreate"},"OrderItemIn":{"properties":{"product_id":{"type":"integer","title":"Product Id"},"qty":{"type":"number","exclusiveMinimum":0.0,"title":"Qty","default":1.0},"variant_id":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Variant Id"},"modifiers":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Modifiers"}},"type":"object","required":["product_id"],"title":"OrderItemIn"},"OrderItemMove":{"properties":{"sale_item_id":{"type":"integer","title":"Sale Item Id"},"qty":{"type":"number","exclusiveMinimum":0.0,"title":"Qty","default":1.0}},"type":"object","required":["sale_item_id"],"title":"OrderItemMove","description":"Mueve qty de una linea de orden a otra mesa."},"OrderMoveIn":{"properties":{"target_table_id":{"type":"integer","title":"Target Table Id"},"qty":{"type":"number","exclusiveMinimum":0.0,"title":"Qty","default":1.0}},"type":"object","required":["target_table_id"],"title":"OrderMoveIn"},"OrderSettleIn":{"properties":{"payments":{"items":{"$ref":"#/components/schemas/PaymentIn"},"type":"array","minItems":1,"title":"Payments"},"customer_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Customer Id"},"shift_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Shift Id"}},"type":"object","required":["payments"],"title":"OrderSettleIn"},"OrderSplitIn":{"properties":{"target_table_id":{"type":"integer","title":"Target Table Id"},"items":{"items":{"$ref":"#/components/schemas/OrderItemMove"},"type":"array","minItems":1,"title":"Items"}},"type":"object","required":["target_table_id","items"],"title":"OrderSplitIn"},"OrderStatusIn":{"properties":{"status":{"type":"string","pattern":"^(pending|preparing|ready|served)$","title":"Status"}},"type":"object","required":["status"],"title":"OrderStatusIn"},"PaymentIn":{"properties":{"method":{"type":"string","maxLength":24,"title":"Method"},"amount":{"type":"number","exclusiveMinimum":0.0,"title":"Amount"},"reference":{"anyOf":[{"type":"string","maxLength":80},{"type":"null"}],"title":"Reference"}},"type":"object","required":["method","amount"],"title":"PaymentIn"},"PaymentOut":{"properties":{"id":{"type":"integer","title":"Id"},"method":{"type":"string","title":"Method"},"amount":{"type":"number","title":"Amount"},"reference":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reference"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","method","amount","created_at"],"title":"PaymentOut"},"PermissionOut":{"properties":{"code":{"type":"string","title":"Code"},"name":{"type":"string","title":"Name"}},"type":"object","required":["code","name"],"title":"PermissionOut"},"PrescriptionCreate":{"properties":{"customer_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Customer Id"},"doctor_name":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"title":"Doctor Name"},"patient_name":{"anyOf":[{"type":"string","maxLength":160},{"type":"null"}],"title":"Patient Name"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"items":{"items":{"$ref":"#/components/schemas/PrescriptionItemIn"},"type":"array","minItems":1,"title":"Items"}},"type":"object","required":["items"],"title":"PrescriptionCreate"},"PrescriptionDispense":{"properties":{"payment_method":{"type":"string","maxLength":24,"title":"Payment Method","default":"cash"}},"type":"object","title":"PrescriptionDispense"},"PrescriptionItemIn":{"properties":{"product_id":{"type":"integer","title":"Product Id"},"qty":{"type":"number","exclusiveMinimum":0.0,"title":"Qty"}},"type":"object","required":["product_id","qty"],"title":"PrescriptionItemIn"},"PrescriptionOut":{"properties":{"id":{"type":"integer","title":"Id"},"customer_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Customer Id"},"doctor_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Doctor Name"},"patient_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Patient Name"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"items":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Items"},"status":{"type":"string","title":"Status"},"sale_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sale Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"dispensed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Dispensed At"}},"type":"object","required":["id","status","created_at"],"title":"PrescriptionOut"},"ProductCreate":{"properties":{"code":{"type":"string","maxLength":40,"minLength":1,"title":"Code"},"barcode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Barcode"},"name":{"type":"string","maxLength":160,"minLength":1,"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"price":{"type":"number","title":"Price","default":0.0},"cost":{"type":"number","title":"Cost","default":0.0},"purchase_tax_cost":{"type":"number","minimum":0.0,"title":"Purchase Tax Cost","default":0.0},"stock":{"type":"number","title":"Stock","default":0.0},"min_stock":{"type":"number","title":"Min Stock","default":0.0},"unit":{"type":"string","title":"Unit","default":"pza"},"attributes":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Attributes"},"profile_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Profile Id"},"category_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Category Id"},"image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Url"},"tax_ids":{"items":{"type":"integer"},"type":"array","title":"Tax Ids"}},"type":"object","required":["code","name"],"title":"ProductCreate"},"ProductOut":{"properties":{"id":{"type":"integer","title":"Id"},"code":{"type":"string","title":"Code"},"barcode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Barcode"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"price":{"type":"number","title":"Price"},"cost":{"type":"number","title":"Cost"},"purchase_tax_cost":{"type":"number","title":"Purchase Tax Cost"},"stock":{"type":"number","title":"Stock"},"min_stock":{"type":"number","title":"Min Stock"},"unit":{"type":"string","title":"Unit"},"attributes":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Attributes"},"category_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Category Id"},"image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Url"},"taxes":{"items":{"$ref":"#/components/schemas/TaxOut"},"type":"array","title":"Taxes"},"active":{"type":"boolean","title":"Active"},"has_recipe":{"type":"boolean","title":"Has Recipe","default":false},"recipe_variants":{"items":{"$ref":"#/components/schemas/RecipeVariantOut"},"type":"array","title":"Recipe Variants"}},"type":"object","required":["id","code","name","price","cost","purchase_tax_cost","stock","min_stock","unit","active"],"title":"ProductOut"},"ProductUpdate":{"properties":{"code":{"anyOf":[{"type":"string","maxLength":40,"minLength":1},{"type":"null"}],"title":"Code"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"barcode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Barcode"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"price":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Price"},"cost":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cost"},"purchase_tax_cost":{"type":"number","minimum":0.0,"title":"Purchase Tax Cost","default":0.0},"min_stock":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min Stock"},"unit":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Unit"},"attributes":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Attributes"},"category_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Category Id"},"image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Url"},"tax_ids":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Tax Ids"},"active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Active"}},"type":"object","title":"ProductUpdate"},"ProfileOut":{"properties":{"id":{"type":"integer","title":"Id"},"slug":{"type":"string","title":"Slug"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"subroles":{"items":{"$ref":"#/components/schemas/SubroleOut"},"type":"array","title":"Subroles","default":[]}},"type":"object","required":["id","slug","name"],"title":"ProfileOut"},"PromotionCreate":{"properties":{"name":{"type":"string","maxLength":120,"minLength":1,"title":"Name"},"type":{"type":"string","enum":["percentage","fixed"],"title":"Type","default":"percentage"},"value":{"type":"number","exclusiveMinimum":0.0,"title":"Value"},"min_purchase":{"type":"number","minimum":0.0,"title":"Min Purchase","default":0},"start_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Start Date"},"end_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"End Date"},"start_time":{"anyOf":[{"type":"string","pattern":"^(?:[01]\\d|2[0-3]):[0-5]\\d$"},{"type":"null"}],"title":"Start Time"},"end_time":{"anyOf":[{"type":"string","pattern":"^(?:[01]\\d|2[0-3]):[0-5]\\d$"},{"type":"null"}],"title":"End Time"},"weekdays":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Weekdays"},"active":{"type":"boolean","title":"Active","default":true},"product_ids":{"items":{"type":"integer"},"type":"array","title":"Product Ids"}},"type":"object","required":["name","value"],"title":"PromotionCreate"},"PromotionOut":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"type":{"type":"string","title":"Type"},"value":{"type":"number","title":"Value"},"min_purchase":{"type":"number","title":"Min Purchase","default":0.0},"start_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Start Date"},"end_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"End Date"},"start_time":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Start Time"},"end_time":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"End Time"},"weekdays":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Weekdays"},"active":{"type":"boolean","title":"Active"},"product_ids":{"items":{"type":"integer"},"type":"array","title":"Product Ids"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","name","type","value","active","created_at"],"title":"PromotionOut"},"PromotionUpdate":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":120,"minLength":1},{"type":"null"}],"title":"Name"},"type":{"anyOf":[{"type":"string","enum":["percentage","fixed"]},{"type":"null"}],"title":"Type"},"value":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"null"}],"title":"Value"},"min_purchase":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Min Purchase"},"start_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Start Date"},"end_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"End Date"},"start_time":{"anyOf":[{"type":"string","pattern":"^(?:[01]\\d|2[0-3]):[0-5]\\d$"},{"type":"null"}],"title":"Start Time"},"end_time":{"anyOf":[{"type":"string","pattern":"^(?:[01]\\d|2[0-3]):[0-5]\\d$"},{"type":"null"}],"title":"End Time"},"weekdays":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Weekdays"},"active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Active"},"product_ids":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Product Ids"}},"type":"object","title":"PromotionUpdate"},"RecipeComponentIn":{"properties":{"ingredient_product_id":{"type":"integer","exclusiveMinimum":0.0,"title":"Ingredient Product Id"},"quantity":{"type":"number","maximum":100000.0,"exclusiveMinimum":0.0,"title":"Quantity"}},"type":"object","required":["ingredient_product_id","quantity"],"title":"RecipeComponentIn"},"RecipeComponentOut":{"properties":{"ingredient_product_id":{"type":"integer","title":"Ingredient Product Id"},"ingredient_name":{"type":"string","title":"Ingredient Name"},"quantity":{"type":"number","title":"Quantity"},"unit":{"type":"string","title":"Unit"},"unit_cost":{"type":"number","title":"Unit Cost"}},"type":"object","required":["ingredient_product_id","ingredient_name","quantity","unit","unit_cost"],"title":"RecipeComponentOut"},"RecipeOut":{"properties":{"product_id":{"type":"integer","title":"Product Id"},"product_name":{"type":"string","title":"Product Name"},"unit_cost":{"type":"number","title":"Unit Cost"},"components":{"items":{"$ref":"#/components/schemas/RecipeComponentOut"},"type":"array","title":"Components"},"variants":{"items":{"$ref":"#/components/schemas/RecipeVariantOut"},"type":"array","title":"Variants"}},"type":"object","required":["product_id","product_name","unit_cost","components"],"title":"RecipeOut"},"RecipeUpdate":{"properties":{"components":{"items":{"$ref":"#/components/schemas/RecipeComponentIn"},"type":"array","maxItems":100,"minItems":1,"title":"Components"}},"type":"object","required":["components"],"title":"RecipeUpdate"},"RecipeVariantComponentIn":{"properties":{"ingredient_product_id":{"type":"integer","exclusiveMinimum":0.0,"title":"Ingredient Product Id"},"quantity":{"type":"number","maximum":100000.0,"exclusiveMinimum":0.0,"title":"Quantity"}},"type":"object","required":["ingredient_product_id","quantity"],"title":"RecipeVariantComponentIn"},"RecipeVariantComponentOut":{"properties":{"ingredient_product_id":{"type":"integer","title":"Ingredient Product Id"},"ingredient_name":{"type":"string","title":"Ingredient Name"},"quantity":{"type":"number","title":"Quantity"},"unit":{"type":"string","title":"Unit"},"unit_cost":{"type":"number","title":"Unit Cost"},"stock":{"type":"number","title":"Stock"}},"type":"object","required":["ingredient_product_id","ingredient_name","quantity","unit","unit_cost","stock"],"title":"RecipeVariantComponentOut"},"RecipeVariantIn":{"properties":{"name":{"type":"string","maxLength":80,"minLength":1,"title":"Name"},"price":{"type":"number","maximum":100000000.0,"minimum":0.0,"title":"Price"},"components":{"items":{"$ref":"#/components/schemas/RecipeVariantComponentIn"},"type":"array","maxItems":100,"minItems":1,"title":"Components"}},"type":"object","required":["name","price","components"],"title":"RecipeVariantIn"},"RecipeVariantOut":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"price":{"type":"number","title":"Price"},"unit_cost":{"type":"number","title":"Unit Cost"},"available_quantity":{"type":"integer","title":"Available Quantity"},"components":{"items":{"$ref":"#/components/schemas/RecipeVariantComponentOut"},"type":"array","title":"Components"}},"type":"object","required":["id","name","price","unit_cost","available_quantity","components"],"title":"RecipeVariantOut"},"RecipeVariantUpdate":{"properties":{"variants":{"items":{"$ref":"#/components/schemas/RecipeVariantIn"},"type":"array","maxItems":50,"minItems":1,"title":"Variants"}},"type":"object","required":["variants"],"title":"RecipeVariantUpdate"},"RefreshRequest":{"properties":{"refresh_token":{"type":"string","title":"Refresh Token"}},"type":"object","required":["refresh_token"],"title":"RefreshRequest"},"RefundCreate":{"properties":{"reason":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Reason"},"payment_method":{"type":"string","maxLength":24,"title":"Payment Method","default":"cash"},"items":{"anyOf":[{"items":{"$ref":"#/components/schemas/RefundItemIn"},"type":"array"},{"type":"null"}],"title":"Items"}},"type":"object","title":"RefundCreate"},"RefundItemIn":{"properties":{"sale_item_id":{"type":"integer","title":"Sale Item Id"},"qty":{"type":"number","exclusiveMinimum":0.0,"title":"Qty","default":1.0}},"type":"object","required":["sale_item_id"],"title":"RefundItemIn"},"RefundItemOut":{"properties":{"id":{"type":"integer","title":"Id"},"product_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Product Id"},"name":{"type":"string","title":"Name"},"qty":{"type":"number","title":"Qty"},"unit_price":{"type":"number","title":"Unit Price"},"total":{"type":"number","title":"Total"}},"type":"object","required":["id","name","qty","unit_price","total"],"title":"RefundItemOut"},"RefundOut":{"properties":{"id":{"type":"integer","title":"Id"},"sale_id":{"type":"integer","title":"Sale Id"},"payment_method":{"type":"string","title":"Payment Method"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"},"total":{"type":"number","title":"Total"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"items":{"items":{"$ref":"#/components/schemas/RefundItemOut"},"type":"array","title":"Items","default":[]}},"type":"object","required":["id","sale_id","payment_method","total","created_at"],"title":"RefundOut"},"SLMRequest":{"properties":{"prompt":{"type":"string","title":"Prompt"}},"type":"object","required":["prompt"],"title":"SLMRequest"},"SLMResponse":{"properties":{"reply":{"type":"string","title":"Reply"}},"type":"object","required":["reply"],"title":"SLMResponse"},"SaleCreate":{"properties":{"items":{"items":{"$ref":"#/components/schemas/SaleItemIn"},"type":"array","minItems":1,"title":"Items"},"payment_method":{"type":"string","title":"Payment Method","default":"cash"},"payments":{"items":{"$ref":"#/components/schemas/PaymentIn"},"type":"array","title":"Payments","default":[]},"discount":{"type":"number","title":"Discount","default":0.0},"device_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Device Id"},"customer_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Customer Id"},"shift_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Shift Id"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},"type":"object","required":["items"],"title":"SaleCreate"},"SaleItemIn":{"properties":{"product_id":{"type":"integer","title":"Product Id"},"qty":{"type":"number","exclusiveMinimum":0.0,"title":"Qty","default":1.0},"variant_id":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Variant Id"},"modifiers":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Modifiers"}},"type":"object","required":["product_id"],"title":"SaleItemIn"},"SaleItemOut":{"properties":{"id":{"type":"integer","title":"Id"},"product_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Product Id"},"name":{"type":"string","title":"Name"},"qty":{"type":"number","title":"Qty"},"unit_price":{"type":"number","title":"Unit Price"},"total":{"type":"number","title":"Total"},"discount_amount":{"type":"number","title":"Discount Amount","default":0.0},"tax_amount":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Tax Amount"},"tax_breakdown":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Tax Breakdown"},"qty_refunded":{"type":"number","title":"Qty Refunded","default":0.0},"modifiers":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Modifiers"},"lot_info":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Lot Info"},"status":{"type":"string","title":"Status","default":"pending"},"kitchen_started_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Kitchen Started At"},"sla_due_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Sla Due At"},"recipe_components":{"anyOf":[{"items":{"$ref":"#/components/schemas/KitchenRecipeComponentOut"},"type":"array"},{"type":"null"}],"title":"Recipe Components"}},"type":"object","required":["id","name","qty","unit_price","total"],"title":"SaleItemOut"},"SaleOut":{"properties":{"id":{"type":"integer","title":"Id"},"ticket_number":{"type":"string","title":"Ticket Number"},"subtotal":{"type":"number","title":"Subtotal"},"tax":{"type":"number","title":"Tax"},"discount":{"type":"number","title":"Discount"},"total":{"type":"number","title":"Total"},"payment_method":{"type":"string","title":"Payment Method"},"status":{"type":"string","title":"Status"},"customer_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Customer Id"},"table_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Table Id"},"table_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Table Number"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"delivery_platform":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Delivery Platform"},"delivery_order_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Delivery Order Number"},"delivery_customer_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Delivery Customer Name"},"delivery_phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Delivery Phone"},"delivery_address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Delivery Address"},"delivery_instructions":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Delivery Instructions"},"delivery_payment_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Delivery Payment Status"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"items":{"items":{"$ref":"#/components/schemas/SaleItemOut"},"type":"array","title":"Items","default":[]},"payments":{"items":{"$ref":"#/components/schemas/PaymentOut"},"type":"array","title":"Payments","default":[]}},"type":"object","required":["id","ticket_number","subtotal","tax","discount","total","payment_method","status","created_at"],"title":"SaleOut"},"SettingsUpdate":{"properties":{"store_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Store Name"},"timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timezone"},"currency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Currency"},"tax_rate":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Tax Rate"},"ticket_config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Ticket Config"},"require_shift_close":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Require Shift Close"},"shift_close_time":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Shift Close Time"}},"type":"object","title":"SettingsUpdate"},"ShiftCloseIn":{"properties":{"counted_cash":{"type":"number","minimum":0.0,"title":"Counted Cash"},"notes":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Notes"}},"type":"object","required":["counted_cash"],"title":"ShiftCloseIn"},"ShiftOpenIn":{"properties":{"device_id":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}],"title":"Device Id"},"opening_amount":{"type":"number","minimum":0.0,"title":"Opening Amount","default":0.0}},"type":"object","title":"ShiftOpenIn"},"ShiftOut":{"properties":{"id":{"type":"integer","title":"Id"},"user_id":{"type":"integer","title":"User Id"},"device_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Device Id"},"opening_amount":{"type":"number","title":"Opening Amount"},"opened_at":{"type":"string","format":"date-time","title":"Opened At"},"closed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Closed At"},"expected_cash":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Expected Cash"},"counted_cash":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Counted Cash"},"variance":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Variance"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"status":{"type":"string","title":"Status"},"sales_count":{"type":"integer","title":"Sales Count","default":0},"total_sales":{"type":"number","title":"Total Sales","default":0.0},"cash_sales":{"type":"number","title":"Cash Sales","default":0.0},"card_sales":{"type":"number","title":"Card Sales","default":0.0},"transfer_sales":{"type":"number","title":"Transfer Sales","default":0.0},"credit_sales":{"type":"number","title":"Credit Sales","default":0.0},"refunds_total":{"type":"number","title":"Refunds Total","default":0.0},"user_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Name"}},"type":"object","required":["id","user_id","opening_amount","opened_at","status"],"title":"ShiftOut"},"StockAdjust":{"properties":{"delta":{"type":"number","title":"Delta","description":"Cantidad (positiva o negativa)"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"}},"type":"object","required":["delta"],"title":"StockAdjust"},"SubroleOut":{"properties":{"id":{"type":"integer","title":"Id"},"slug":{"type":"string","title":"Slug"},"name":{"type":"string","title":"Name"},"is_admin":{"type":"boolean","title":"Is Admin"},"permissions":{"items":{"$ref":"#/components/schemas/PermissionOut"},"type":"array","title":"Permissions","default":[]}},"type":"object","required":["id","slug","name","is_admin"],"title":"SubroleOut"},"SubroleRef":{"properties":{"id":{"type":"integer","title":"Id"},"slug":{"type":"string","title":"Slug"},"name":{"type":"string","title":"Name"},"profile_slug":{"type":"string","title":"Profile Slug"}},"type":"object","required":["id","slug","name","profile_slug"],"title":"SubroleRef"},"TableCreate":{"properties":{"code":{"type":"string","maxLength":16,"title":"Code"},"name":{"type":"string","maxLength":40,"title":"Name"},"area":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}],"title":"Area"},"x":{"type":"integer","title":"X","default":0},"y":{"type":"integer","title":"Y","default":0},"shape":{"type":"string","title":"Shape","default":"square"},"capacity":{"type":"integer","minimum":1.0,"title":"Capacity","default":4}},"type":"object","required":["code","name"],"title":"TableCreate"},"TableOut":{"properties":{"id":{"type":"integer","title":"Id"},"code":{"type":"string","title":"Code"},"name":{"type":"string","title":"Name"},"area":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Area"},"x":{"type":"integer","title":"X"},"y":{"type":"integer","title":"Y"},"shape":{"type":"string","title":"Shape"},"capacity":{"type":"integer","title":"Capacity"},"status":{"type":"string","title":"Status"},"open_order_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Open Order Id"},"open_order_total":{"type":"number","title":"Open Order Total","default":0.0},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","code","name","x","y","shape","capacity","status","created_at"],"title":"TableOut"},"TableUpdate":{"properties":{"code":{"anyOf":[{"type":"string","maxLength":16},{"type":"null"}],"title":"Code"},"name":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}],"title":"Name"},"area":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}],"title":"Area"},"x":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"X"},"y":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Y"},"shape":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Shape"},"capacity":{"anyOf":[{"type":"integer","minimum":1.0},{"type":"null"}],"title":"Capacity"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},"type":"object","title":"TableUpdate"},"TaxCreate":{"properties":{"name":{"type":"string","maxLength":80,"minLength":1,"title":"Name"},"kind":{"type":"string","enum":["iva","ieps","custom"],"title":"Kind"},"rate":{"type":"number","maximum":1000.0,"minimum":0.0,"title":"Rate"}},"type":"object","required":["name","kind","rate"],"title":"TaxCreate"},"TaxOut":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"kind":{"type":"string","enum":["iva","ieps","custom"],"title":"Kind"},"rate":{"type":"number","title":"Rate"},"active":{"type":"boolean","title":"Active"}},"type":"object","required":["id","name","kind","rate","active"],"title":"TaxOut"},"TaxUpdate":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":80,"minLength":1},{"type":"null"}],"title":"Name"},"kind":{"anyOf":[{"type":"string","enum":["iva","ieps","custom"]},{"type":"null"}],"title":"Kind"},"rate":{"anyOf":[{"type":"number","maximum":1000.0,"minimum":0.0},{"type":"null"}],"title":"Rate"},"active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Active"}},"type":"object","title":"TaxUpdate"},"TokenResponse":{"properties":{"access_token":{"type":"string","title":"Access Token"},"refresh_token":{"type":"string","title":"Refresh Token"},"token_type":{"type":"string","title":"Token Type","default":"bearer"},"user":{"$ref":"#/components/schemas/UserSummary"}},"type":"object","required":["access_token","refresh_token","user"],"title":"TokenResponse"},"UserCreate":{"properties":{"username":{"type":"string","maxLength":50,"minLength":3,"title":"Username"},"password":{"type":"string","maxLength":128,"minLength":6,"title":"Password"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"full_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Full Name"},"subrole_ids":{"items":{"type":"integer"},"type":"array","title":"Subrole Ids","default":[]}},"type":"object","required":["username","password"],"title":"UserCreate"},"UserSummary":{"properties":{"id":{"type":"integer","title":"Id"},"username":{"type":"string","title":"Username"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"full_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Full Name"},"is_active":{"type":"boolean","title":"Is Active"},"profile_slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Profile Slug"},"subroles":{"items":{"$ref":"#/components/schemas/SubroleRef"},"type":"array","title":"Subroles","default":[]}},"type":"object","required":["id","username","is_active"],"title":"UserSummary"},"UserUpdate":{"properties":{"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"full_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Full Name"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"},"subrole_ids":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Subrole Ids"}},"type":"object","title":"UserUpdate"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}},"securitySchemes":{"HTTPBearer":{"type":"http","scheme":"bearer"}}}}