{"openapi":"3.1.0","info":{"title":"PinTrack API","description":"Pinstore Taiwan Pop-Up 駐點庫存與銷售可視化系統","version":"1.0"},"paths":{"/auth/users":{"get":{"tags":["auth"],"summary":"List Users","operationId":"list_users_auth_users_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/UserOut"},"type":"array","title":"Response List Users Auth Users Get"}}}}},"security":[{"OAuth2PasswordBearer":[]}]},"post":{"tags":["auth"],"summary":"Create User","description":"建立帳號(僅管理員)。品牌角色需綁定 brand_id。","operationId":"create_user_auth_users_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserCreate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/auth/users/{user_id}":{"patch":{"tags":["auth"],"summary":"Update User","operationId":"update_user_auth_users__user_id__patch","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","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/UserOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/users/{user_id}/password":{"post":{"tags":["auth"],"summary":"Reset Password","operationId":"reset_password_auth_users__user_id__password_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PasswordReset"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/login":{"post":{"tags":["auth"],"summary":"Login","operationId":"login_auth_login_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_login_auth_login_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Token"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/me":{"get":{"tags":["auth"],"summary":"Me","operationId":"me_auth_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserOut"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/auth/change-password":{"post":{"tags":["auth"],"summary":"Change Password","operationId":"change_password_auth_change_password_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PasswordChange"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/brands":{"get":{"tags":["master"],"summary":"List Brands","operationId":"list_brands_brands_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/BrandOut"},"type":"array","title":"Response List Brands Brands Get"}}}}},"security":[{"OAuth2PasswordBearer":[]}]},"post":{"tags":["master"],"summary":"Create Brand","operationId":"create_brand_brands_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/brands/{brand_id}":{"patch":{"tags":["master"],"summary":"Update Brand","operationId":"update_brand_brands__brand_id__patch","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"brand_id","in":"path","required":true,"schema":{"type":"string","title":"Brand Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/products":{"post":{"tags":["master"],"summary":"Create Product","operationId":"create_product_products_post","security":[{"OAuth2PasswordBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductIn"}}}},"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"}}}}}},"get":{"tags":["master"],"summary":"List Products","operationId":"list_products_products_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"brand_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Brand Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ProductOut"},"title":"Response List Products Products Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/products/{sku_id}":{"patch":{"tags":["master"],"summary":"Update Product","operationId":"update_product_products__sku_id__patch","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"sku_id","in":"path","required":true,"schema":{"type":"string","title":"Sku 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"}}}}}}},"/locations":{"get":{"tags":["master"],"summary":"List Locations","operationId":"list_locations_locations_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/LocationOut"},"type":"array","title":"Response List Locations Locations Get"}}}}},"security":[{"OAuth2PasswordBearer":[]}]},"post":{"tags":["master"],"summary":"Create Location","operationId":"create_location_locations_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LocationIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LocationOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/locations/{location_id}":{"patch":{"tags":["master"],"summary":"Update Location","operationId":"update_location_locations__location_id__patch","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"location_id","in":"path","required":true,"schema":{"type":"string","title":"Location Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LocationUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LocationOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/campaigns":{"get":{"tags":["master"],"summary":"List Campaigns","operationId":"list_campaigns_campaigns_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"OAuth2PasswordBearer":[]}]},"post":{"tags":["master"],"summary":"Create Campaign","operationId":"create_campaign_campaigns_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CampaignIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/inbounds":{"get":{"tags":["inbound"],"summary":"List Inbounds","operationId":"list_inbounds_inbounds_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"brand_id","in":"query","required":false,"schema":{"type":"string","title":"Brand Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["inbound"],"summary":"Create Inbound","description":"登錄進貨:建立進貨單 + 各批次,並對收貨地(預設主倉)產生 inbound 異動。","operationId":"create_inbound_inbounds_post","security":[{"OAuth2PasswordBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InboundIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/transfers":{"post":{"tags":["transfer"],"summary":"Create Transfer","description":"發起調貨單(狀態 requested)。未指定批次則 FEFO 預選。","operationId":"create_transfer_transfers_post","security":[{"OAuth2PasswordBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransferIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["transfer"],"summary":"List Transfers","operationId":"list_transfers_transfers_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"status","in":"query","required":false,"schema":{"type":"string","title":"Status"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/transfers/{transfer_id}/approve":{"post":{"tags":["transfer"],"summary":"Approve","operationId":"approve_transfers__transfer_id__approve_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"transfer_id","in":"path","required":true,"schema":{"type":"string","title":"Transfer Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/transfers/{transfer_id}/receive":{"post":{"tags":["transfer"],"summary":"Receive","operationId":"receive_transfers__transfer_id__receive_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"transfer_id","in":"path","required":true,"schema":{"type":"string","title":"Transfer Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/sales/import-template.csv":{"get":{"tags":["sales"],"summary":"Import Template","operationId":"import_template_sales_import_template_csv_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/sales/import/validate":{"post":{"tags":["sales"],"summary":"Validate Import","operationId":"validate_import_sales_import_validate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SalesImport"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/sales":{"post":{"tags":["sales"],"summary":"Record Sale","operationId":"record_sale_sales_post","security":[{"OAuth2PasswordBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SaleIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["sales"],"summary":"List Sales","operationId":"list_sales_sales_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"period","in":"query","required":false,"schema":{"type":"string","title":"Period"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/sales/import":{"post":{"tags":["sales"],"summary":"Import Sales","description":"行政月度批次匯入。任一列失敗整批回滾,確保資料一致。","operationId":"import_sales_sales_import_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SalesImport"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/adjustments":{"post":{"tags":["stock"],"summary":"Adjust","operationId":"adjust_adjustments_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdjustmentIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/disposals":{"post":{"tags":["stock"],"summary":"Dispose","operationId":"dispose_disposals_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DisposalIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/disposals/expired":{"post":{"tags":["stock"],"summary":"Dispose Expired","operationId":"dispose_expired_disposals_expired_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExpiredDisposalIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/inventory/by-location":{"get":{"tags":["inventory"],"summary":"By Location","description":"痛點1/5:各駐點有什麼貨、各多少。品牌角色只見自己。","operationId":"by_location_inventory_by_location_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"location_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Location Id"}},{"name":"brand_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Brand Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/InventoryRow"},"title":"Response By Location Inventory By Location Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/inventory/by-brand":{"get":{"tags":["inventory"],"summary":"By Brand","description":"痛點2/6:總庫存(品牌彙總)。品牌角色只見自己。","operationId":"by_brand_inventory_by_brand_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"brand_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Brand Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/InventoryRow"},"title":"Response By Brand Inventory By Brand Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/inventory/available":{"get":{"tags":["inventory"],"summary":"Available","description":"痛點4:BD 可售庫存(排除主倉)。","operationId":"available_inventory_available_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/InventoryRow"},"type":"array","title":"Response Available Inventory Available Get"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/inventory/low-stock":{"get":{"tags":["inventory"],"summary":"Low Stock","operationId":"low_stock_inventory_low_stock_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"location_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Location Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/LowStockRow"},"title":"Response Low Stock Inventory Low Stock Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/inventory/batches":{"get":{"tags":["inventory"],"summary":"Batches","description":"批次 + 駐點庫存,供盤點/報廢與追溯選批。品牌角色只見自己。","operationId":"batches_inventory_batches_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"location_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Location Id"}},{"name":"sku_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sku Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/BatchInventoryRow"},"title":"Response Batches Inventory Batches Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/inventory/expiry":{"get":{"tags":["inventory"],"summary":"Expiry","description":"痛點3:效期紅黃綠燈。light 可篩 expired/red/yellow/green。","operationId":"expiry_inventory_expiry_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"light","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Light"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ExpiryRow"},"title":"Response Expiry Inventory Expiry Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/inventory/trace/{batch_id}":{"get":{"tags":["inventory"],"summary":"Trace","description":"痛點8:單一批次完整流向(進→配→售→調→廢)。","operationId":"trace_inventory_trace__batch_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"batch_id","in":"path","required":true,"schema":{"type":"string","title":"Batch Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/MovementRow"},"title":"Response Trace Inventory Trace  Batch Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/settlements/generate":{"post":{"tags":["settlement"],"summary":"Generate","description":"產出某品牌某月結算(進價價差)。fx_rate = 月底匯率(每 1 進價幣別 = 多少 MYR)。","operationId":"generate_settlements_generate_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"brand_id","in":"query","required":true,"schema":{"type":"string","title":"Brand Id"}},{"name":"period","in":"query","required":true,"schema":{"type":"string","title":"Period"}},{"name":"fx_rate","in":"query","required":false,"schema":{"type":"number","default":1.0,"title":"Fx Rate"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/settlements":{"get":{"tags":["settlement"],"summary":"List Settlements","operationId":"list_settlements_settlements_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"period","in":"query","required":false,"schema":{"type":"string","title":"Period"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/reports/inventory.csv":{"get":{"tags":["reports"],"summary":"Inventory Csv","operationId":"inventory_csv_reports_inventory_csv_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"view","in":"query","required":false,"schema":{"type":"string","default":"location","title":"View"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/reports/expiry.csv":{"get":{"tags":["reports"],"summary":"Expiry Csv","operationId":"expiry_csv_reports_expiry_csv_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"light","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Light"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/reports/low-stock.csv":{"get":{"tags":["reports"],"summary":"Low Stock Csv","operationId":"low_stock_csv_reports_low_stock_csv_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/reports/sales.csv":{"get":{"tags":["reports"],"summary":"Sales Csv","operationId":"sales_csv_reports_sales_csv_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"period","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Period"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/reports/brand-monthly.csv":{"get":{"tags":["reports"],"summary":"Brand Monthly Csv","operationId":"brand_monthly_csv_reports_brand_monthly_csv_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"period","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Period"}},{"name":"brand_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Brand Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/reports/settlements.csv":{"get":{"tags":["reports"],"summary":"Settlements Csv","operationId":"settlements_csv_reports_settlements_csv_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"period","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Period"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/demo/seed":{"post":{"tags":["demo"],"summary":"Seed Demo","operationId":"seed_demo_demo_seed_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/health":{"get":{"tags":["health"],"summary":"Health","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}}},"components":{"schemas":{"AdjustmentIn":{"properties":{"location_id":{"type":"string","title":"Location Id"},"sku_id":{"type":"string","title":"Sku Id"},"batch_id":{"type":"string","title":"Batch Id"},"qty_change":{"type":"integer","title":"Qty Change"},"reason":{"type":"string","title":"Reason"},"adjustment_date":{"type":"string","format":"date","title":"Adjustment Date"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"}},"type":"object","required":["location_id","sku_id","batch_id","qty_change","reason","adjustment_date"],"title":"AdjustmentIn"},"BatchIn":{"properties":{"sku_id":{"type":"string","title":"Sku Id"},"lot_no":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Lot No"},"mfg_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Mfg Date"},"expiry_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Expiry Date"},"qty_received":{"type":"integer","title":"Qty Received"},"unit_cost":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Unit Cost"},"cost_currency":{"type":"string","title":"Cost Currency","default":"TWD"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"}},"type":"object","required":["sku_id","qty_received"],"title":"BatchIn"},"BatchInventoryRow":{"properties":{"location_id":{"type":"string","title":"Location Id"},"location_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Location Name"},"brand_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Brand Id"},"sku_id":{"type":"string","title":"Sku Id"},"product_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Product Name"},"batch_id":{"type":"string","title":"Batch Id"},"expiry_date":{"type":"string","format":"date","title":"Expiry Date"},"qty_on_hand":{"type":"integer","title":"Qty On Hand"}},"type":"object","required":["location_id","sku_id","batch_id","expiry_date","qty_on_hand"],"title":"BatchInventoryRow"},"Body_login_auth_login_post":{"properties":{"grant_type":{"anyOf":[{"type":"string","pattern":"^password$"},{"type":"null"}],"title":"Grant Type"},"username":{"type":"string","title":"Username"},"password":{"type":"string","format":"password","title":"Password"},"scope":{"type":"string","title":"Scope","default":""},"client_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Id"},"client_secret":{"anyOf":[{"type":"string"},{"type":"null"}],"format":"password","title":"Client Secret"}},"type":"object","required":["username","password"],"title":"Body_login_auth_login_post"},"BrandIn":{"properties":{"brand_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Brand Id"},"name_zh":{"type":"string","title":"Name Zh"},"name_en":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name En"},"contact_person":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Contact Person"},"contact_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Contact Email"},"contact_phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Contact Phone"},"mit_cert_no":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mit Cert No"},"mit_cert_expiry":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Mit Cert Expiry"},"consignment_rate":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Consignment Rate","default":0},"settlement_currency":{"type":"string","title":"Settlement Currency","default":"TWD"},"payment_terms":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Payment Terms"},"status":{"type":"string","title":"Status","default":"active"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"}},"type":"object","required":["name_zh"],"title":"BrandIn"},"BrandOut":{"properties":{"brand_id":{"type":"string","title":"Brand Id"},"name_zh":{"type":"string","title":"Name Zh"},"name_en":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name En"},"consignment_rate":{"anyOf":[{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Consignment Rate"},"settlement_currency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Settlement Currency"},"status":{"type":"string","title":"Status"}},"type":"object","required":["brand_id","name_zh","status"],"title":"BrandOut"},"BrandUpdate":{"properties":{"name_zh":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name Zh"},"name_en":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name En"},"contact_person":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Contact Person"},"contact_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Contact Email"},"contact_phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Contact Phone"},"mit_cert_no":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mit Cert No"},"mit_cert_expiry":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Mit Cert Expiry"},"consignment_rate":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Consignment Rate"},"settlement_currency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Settlement Currency"},"payment_terms":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Payment Terms"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"}},"type":"object","title":"BrandUpdate"},"CampaignIn":{"properties":{"name":{"type":"string","title":"Name"},"type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type"},"start_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Start Date"},"end_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"End Date"},"location_ids":{"items":{"type":"string"},"type":"array","title":"Location Ids","default":[]},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"}},"type":"object","required":["name"],"title":"CampaignIn"},"DisposalIn":{"properties":{"location_id":{"type":"string","title":"Location Id"},"sku_id":{"type":"string","title":"Sku Id"},"batch_id":{"type":"string","title":"Batch Id"},"qty":{"type":"integer","title":"Qty"},"reason":{"type":"string","title":"Reason","default":"expired"},"disposal_date":{"type":"string","format":"date","title":"Disposal Date"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"}},"type":"object","required":["location_id","sku_id","batch_id","qty","disposal_date"],"title":"DisposalIn"},"ExpiredDisposalIn":{"properties":{"disposal_date":{"type":"string","format":"date","title":"Disposal Date"},"location_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Location Id"},"brand_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Brand Id"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"}},"type":"object","required":["disposal_date"],"title":"ExpiredDisposalIn"},"ExpiryRow":{"properties":{"batch_id":{"type":"string","title":"Batch Id"},"sku_id":{"type":"string","title":"Sku Id"},"product_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Product Name"},"brand_id":{"type":"string","title":"Brand Id"},"expiry_date":{"type":"string","format":"date","title":"Expiry Date"},"days_to_expiry":{"type":"integer","title":"Days To Expiry"},"qty_on_hand":{"type":"integer","title":"Qty On Hand"},"expiry_light":{"type":"string","title":"Expiry Light"}},"type":"object","required":["batch_id","sku_id","brand_id","expiry_date","days_to_expiry","qty_on_hand","expiry_light"],"title":"ExpiryRow"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"InboundIn":{"properties":{"brand_id":{"type":"string","title":"Brand Id"},"source_ref":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Ref"},"to_location":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"To Location"},"arrival_date":{"type":"string","format":"date","title":"Arrival Date"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"},"batches":{"items":{"$ref":"#/components/schemas/BatchIn"},"type":"array","title":"Batches"}},"type":"object","required":["brand_id","arrival_date","batches"],"title":"InboundIn"},"InventoryRow":{"properties":{"location_id":{"type":"string","title":"Location Id"},"location_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Location Name"},"brand_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Brand Id"},"sku_id":{"type":"string","title":"Sku Id"},"product_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Product Name"},"qty_on_hand":{"type":"integer","title":"Qty On Hand"}},"type":"object","required":["location_id","sku_id","qty_on_hand"],"title":"InventoryRow"},"LocationIn":{"properties":{"location_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Location Id"},"name":{"type":"string","title":"Name"},"type":{"type":"string","title":"Type"},"partner_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Partner Name"},"address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Address"},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City"},"state":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"},"contact_person":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Contact Person"},"contact_phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Contact Phone"},"status":{"type":"string","title":"Status","default":"active"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"}},"type":"object","required":["name","type"],"title":"LocationIn"},"LocationOut":{"properties":{"location_id":{"type":"string","title":"Location Id"},"name":{"type":"string","title":"Name"},"type":{"type":"string","title":"Type"},"partner_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Partner Name"},"status":{"type":"string","title":"Status"}},"type":"object","required":["location_id","name","type","status"],"title":"LocationOut"},"LocationUpdate":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type"},"partner_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Partner Name"},"address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Address"},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City"},"state":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"},"contact_person":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Contact Person"},"contact_phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Contact Phone"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"}},"type":"object","title":"LocationUpdate"},"LowStockRow":{"properties":{"location_id":{"type":"string","title":"Location Id"},"location_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Location Name"},"brand_id":{"type":"string","title":"Brand Id"},"sku_id":{"type":"string","title":"Sku Id"},"product_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Product Name"},"qty_on_hand":{"type":"integer","title":"Qty On Hand"},"safety_stock":{"type":"integer","title":"Safety Stock"},"shortage":{"type":"integer","title":"Shortage"}},"type":"object","required":["location_id","brand_id","sku_id","qty_on_hand","safety_stock","shortage"],"title":"LowStockRow"},"MovementRow":{"properties":{"movement_id":{"type":"string","title":"Movement Id"},"movement_type":{"type":"string","title":"Movement Type"},"sku_id":{"type":"string","title":"Sku Id"},"batch_id":{"type":"string","title":"Batch Id"},"location_id":{"type":"string","title":"Location Id"},"qty_change":{"type":"integer","title":"Qty Change"},"ref_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ref Type"},"ref_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ref Id"},"movement_date":{"type":"string","format":"date","title":"Movement Date"}},"type":"object","required":["movement_id","movement_type","sku_id","batch_id","location_id","qty_change","movement_date"],"title":"MovementRow"},"PasswordChange":{"properties":{"current_password":{"type":"string","title":"Current Password"},"new_password":{"type":"string","title":"New Password"}},"type":"object","required":["current_password","new_password"],"title":"PasswordChange"},"PasswordReset":{"properties":{"new_password":{"type":"string","title":"New Password"}},"type":"object","required":["new_password"],"title":"PasswordReset"},"ProductIn":{"properties":{"sku_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sku Id"},"brand_id":{"type":"string","title":"Brand Id"},"name_zh":{"type":"string","title":"Name Zh"},"name_en":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name En"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"},"unit":{"type":"string","title":"Unit","default":"件"},"barcode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Barcode"},"shelf_life_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Shelf Life Days"},"cost_price":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Cost Price","default":0},"cost_currency":{"type":"string","title":"Cost Currency","default":"TWD"},"retail_price":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Retail Price","default":0},"retail_currency":{"type":"string","title":"Retail Currency","default":"MYR"},"safety_stock":{"type":"integer","title":"Safety Stock","default":0},"expiry_warn_yellow":{"type":"integer","title":"Expiry Warn Yellow","default":90},"expiry_warn_red":{"type":"integer","title":"Expiry Warn Red","default":60},"image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Url"},"status":{"type":"string","title":"Status","default":"active"}},"type":"object","required":["brand_id","name_zh"],"title":"ProductIn"},"ProductOut":{"properties":{"sku_id":{"type":"string","title":"Sku Id"},"brand_id":{"type":"string","title":"Brand Id"},"name_zh":{"type":"string","title":"Name Zh"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"},"unit":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Unit"},"retail_price":{"anyOf":[{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Retail Price"},"safety_stock":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Safety Stock"},"status":{"type":"string","title":"Status"}},"type":"object","required":["sku_id","brand_id","name_zh","status"],"title":"ProductOut"},"ProductUpdate":{"properties":{"brand_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Brand Id"},"name_zh":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name Zh"},"name_en":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name En"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"},"unit":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Unit"},"barcode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Barcode"},"shelf_life_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Shelf Life Days"},"cost_price":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Cost Price"},"cost_currency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cost Currency"},"retail_price":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Retail Price"},"retail_currency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Retail Currency"},"safety_stock":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Safety Stock"},"expiry_warn_yellow":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Expiry Warn Yellow"},"expiry_warn_red":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Expiry Warn Red"},"image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Url"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},"type":"object","title":"ProductUpdate"},"SaleIn":{"properties":{"sale_period":{"type":"string","title":"Sale Period"},"location_id":{"type":"string","title":"Location Id"},"sku_id":{"type":"string","title":"Sku Id"},"batch_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Batch Id"},"qty":{"type":"integer","title":"Qty"},"unit_price":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Unit Price"},"currency":{"type":"string","title":"Currency","default":"MYR"},"channel":{"type":"string","title":"Channel","default":"popup"},"campaign_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Campaign Id"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"}},"type":"object","required":["sale_period","location_id","sku_id","qty"],"title":"SaleIn"},"SalesImport":{"properties":{"sale_period":{"type":"string","title":"Sale Period"},"import_ref":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Import Ref"},"rows":{"items":{"$ref":"#/components/schemas/SaleIn"},"type":"array","title":"Rows"}},"type":"object","required":["sale_period","rows"],"title":"SalesImport"},"Token":{"properties":{"access_token":{"type":"string","title":"Access Token"},"token_type":{"type":"string","title":"Token Type","default":"bearer"},"user":{"$ref":"#/components/schemas/UserOut"}},"type":"object","required":["access_token","user"],"title":"Token"},"TransferIn":{"properties":{"from_location":{"type":"string","title":"From Location"},"to_location":{"type":"string","title":"To Location"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"},"lines":{"items":{"$ref":"#/components/schemas/TransferLineIn"},"type":"array","title":"Lines"}},"type":"object","required":["from_location","to_location","lines"],"title":"TransferIn"},"TransferLineIn":{"properties":{"sku_id":{"type":"string","title":"Sku Id"},"batch_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Batch Id"},"qty":{"type":"integer","title":"Qty"}},"type":"object","required":["sku_id","qty"],"title":"TransferLineIn"},"UserCreate":{"properties":{"name":{"type":"string","title":"Name"},"email":{"type":"string","format":"email","title":"Email"},"password":{"type":"string","title":"Password"},"role":{"type":"string","title":"Role"},"brand_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Brand Id"},"location_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Location Id"}},"type":"object","required":["name","email","password","role"],"title":"UserCreate"},"UserOut":{"properties":{"user_id":{"type":"string","title":"User Id"},"name":{"type":"string","title":"Name"},"email":{"type":"string","format":"email","title":"Email"},"role":{"type":"string","title":"Role"},"brand_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Brand Id"},"status":{"type":"string","title":"Status"}},"type":"object","required":["user_id","name","email","role","status"],"title":"UserOut"},"UserUpdate":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"email":{"anyOf":[{"type":"string","format":"email"},{"type":"null"}],"title":"Email"},"role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Role"},"brand_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Brand Id"},"location_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Location Id"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},"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":{"OAuth2PasswordBearer":{"type":"oauth2","flows":{"password":{"scopes":{},"tokenUrl":"/auth/login"}}}}}}