{"openapi":"3.1.0","info":{"title":"Vencart API","version":"0.1.0"},"paths":{"/":{"get":{"tags":["healthcheck","root"],"summary":"Read Root","operationId":"read_root__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Read Root  Get"}}}}}}},"/diag/sysinfo":{"get":{"tags":["diagnostics"],"summary":"Get Sysinfo","operationId":"get_sysinfo_diag_sysinfo_get","parameters":[{"name":"with_settings","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"With Settings"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SysInfoResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/diag/celery":{"get":{"tags":["diagnostics"],"summary":"Get Celery Data","operationId":"get_celery_data_diag_celery_get","parameters":[{"name":"with_tasks","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"With Tasks"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CeleryWorkerResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/diag/logs/list":{"get":{"tags":["diagnostics","logs"],"summary":"List Dir","operationId":"list_dir_diag_logs_list_get","parameters":[{"name":"path","in":"query","required":false,"schema":{"type":"string","default":".","title":"Path"}},{"name":"order","in":"query","required":false,"schema":{"type":"string","default":"date","title":"Order"}},{"name":"reverse","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Reverse"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/diag/logs/view":{"get":{"tags":["diagnostics","logs"],"summary":"View Logs","operationId":"view_logs_diag_logs_view_get","parameters":[{"name":"lines","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Lines"}},{"name":"file","in":"query","required":false,"schema":{"type":"string","title":"File"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/diag/logs/stream":{"get":{"tags":["diagnostics","logs"],"summary":"View Logs Stream","operationId":"view_logs_stream_diag_logs_stream_get","parameters":[{"name":"file","in":"query","required":false,"schema":{"type":"string","title":"File"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/diag/logs/monitor":{"get":{"tags":["diagnostics","logs"],"summary":"Monitor Logs","operationId":"monitor_logs_diag_logs_monitor_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/diag/bg_tasks/bestsellers":{"get":{"tags":["diagnostics","bg_tasks"],"summary":"Recalculate Bestsellers","operationId":"recalculate_bestsellers_diag_bg_tasks_bestsellers_get","parameters":[{"name":"sync_mode","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Sync Mode"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BgTaskResponse"}}}},"202":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BgTaskResponse"}}},"description":"Accepted"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/diag/bg_tasks/update-timed-out-orders":{"get":{"tags":["diagnostics","bg_tasks"],"summary":"Update Timed Out Orders","operationId":"update_timed_out_orders_diag_bg_tasks_update_timed_out_orders_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BgTaskResponse"}}}}}}},"/diag/bg_tasks/delete_expired_orders":{"get":{"tags":["diagnostics","bg_tasks"],"summary":"Delete Expired Orders","operationId":"delete_expired_orders_diag_bg_tasks_delete_expired_orders_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BgTaskResponse"}}}}}}},"/diag/bg_tasks/notify-about-expiring-orders":{"get":{"tags":["diagnostics","bg_tasks"],"summary":"Notify About Expiring Order","operationId":"notify_about_expiring_order_diag_bg_tasks_notify_about_expiring_orders_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BgTaskResponse"}}}}}}},"/diag/bg_tasks/update-unclaimed-orders-to-failed":{"get":{"tags":["diagnostics","bg_tasks"],"summary":"Update Unclaimed Orders To Failed","operationId":"update_unclaimed_orders_to_failed_diag_bg_tasks_update_unclaimed_orders_to_failed_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BgTaskResponse"}}}}}}},"/diag/bg_tasks/notify-about-unclaimed-orders":{"get":{"tags":["diagnostics","bg_tasks"],"summary":"Notify About Unclaimed Orders","operationId":"notify_about_unclaimed_orders_diag_bg_tasks_notify_about_unclaimed_orders_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BgTaskResponse"}}}}}}},"/users/{user_id}/orders":{"get":{"tags":["orders"],"summary":"List User Orders","operationId":"list_user_orders_users__user_id__orders_get","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}},{"name":"order_processing_statuses","in":"query","required":false,"schema":{"type":"array","items":{"$ref":"#/components/schemas/OrderProcessingStatus"},"title":"Order Processing Statuses"}},{"name":"order_by","in":"query","required":false,"schema":{"$ref":"#/components/schemas/OrderOrderingField","default":"created_at"}},{"name":"is_desc","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Is Desc"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["orders"],"summary":"Create User Order","operationId":"create_user_order_users__user_id__orders_post","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}},{"name":"hub_id","in":"query","required":true,"schema":{"type":"integer","title":"Hub Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/users/{user_id}/orders/{order_id}":{"get":{"tags":["orders"],"summary":"Get User Order By Id","operationId":"get_user_order_by_id_users__user_id__orders__order_id__get","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}},{"name":"order_id","in":"path","required":true,"schema":{"type":"integer","title":"Order Id"}},{"name":"hub_id","in":"query","required":true,"schema":{"type":"integer","title":"Hub Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["orders"],"summary":"Delete User Order By Id","operationId":"delete_user_order_by_id_users__user_id__orders__order_id__delete","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}},{"name":"order_id","in":"path","required":true,"schema":{"type":"integer","title":"Order Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/users/{user_id}/orders/{order_id}/open-delivery":{"post":{"tags":["orders"],"summary":"Order Bin For Order","operationId":"order_bin_for_order_users__user_id__orders__order_id__open_delivery_post","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}},{"name":"order_id","in":"path","required":true,"schema":{"type":"integer","title":"Order Id"}},{"name":"hub_id","in":"query","required":true,"schema":{"type":"integer","title":"Hub Id"}},{"name":"bin_nums","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bin Nums"}},{"name":"bin_num","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Bin Num"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/users/{user_id}/orders/order-items/count":{"get":{"tags":["orders"],"summary":"Get User Order Item Count","operationId":"get_user_order_item_count_users__user_id__orders_order_items_count_get","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}},{"name":"hub_id","in":"query","required":true,"schema":{"type":"integer","title":"Hub Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/users/{user_id}/orders/{order_id}/order_item":{"put":{"tags":["orders"],"summary":"Update User Order Item","operationId":"update_user_order_item_users__user_id__orders__order_id__order_item_put","parameters":[{"name":"order_id","in":"path","required":true,"schema":{"type":"integer","title":"Order Id"}},{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}},{"name":"hub_id","in":"query","required":true,"schema":{"type":"integer","title":"Hub Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateOrderItemSchema"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/users/{user_id}/orders/{order_id}/checkout-available":{"get":{"tags":["orders"],"summary":"Check User Order Available To Checkout","operationId":"check_user_order_available_to_checkout_users__user_id__orders__order_id__checkout_available_get","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}},{"name":"order_id","in":"path","required":true,"schema":{"type":"integer","title":"Order Id"}},{"name":"hub_id","in":"query","required":true,"schema":{"type":"integer","title":"Hub Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/users/{user_id}/orders/{source_order_id}/reorder":{"post":{"tags":["orders"],"summary":"Reorder","operationId":"reorder_users__user_id__orders__source_order_id__reorder_post","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}},{"name":"source_order_id","in":"path","required":true,"schema":{"type":"integer","title":"Source Order Id"}},{"name":"target_hub_id","in":"query","required":true,"schema":{"type":"integer","title":"Target Hub Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/users/{user_id}/orders/{order_id}/queue-position":{"get":{"tags":["orders"],"summary":"Get Order Queue Position View","operationId":"get_order_queue_position_view_users__user_id__orders__order_id__queue_position_get","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}},{"name":"order_id","in":"path","required":true,"schema":{"type":"integer","title":"Order Id"}},{"name":"hub_id","in":"query","required":true,"schema":{"type":"integer","title":"Hub Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/users/user":{"get":{"tags":["user"],"summary":"Get User Data With Hub","operationId":"get_user_data_with_hub_users_user_get","responses":{"200":{"description":"user data exists and delivered","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserDataRetrieve"}}}}}},"post":{"tags":["user"],"summary":"Create User","operationId":"create_user_users_user_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserCreate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"201":{"description":"user successfully created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserCreateRetrieve"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"deprecated":true},"delete":{"tags":["user"],"summary":"Delete User","operationId":"delete_user_users_user_delete","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"204":{"description":"user successfully deleted"}}}},"/users/user/bootstrap":{"post":{"tags":["user"],"summary":"Bootstrap User","operationId":"bootstrap_user_users_user_bootstrap_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserBootstrap"}}},"required":true},"responses":{"201":{"description":"User bootstrapped (or returned if already existed)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserBootstrapResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/users/user/bootstrap/guest":{"post":{"tags":["user"],"summary":"Bootstrap Guest User","operationId":"bootstrap_guest_user_users_user_bootstrap_guest_post","responses":{"201":{"description":"Anonymous guest user bootstrapped (or returned if already existed)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserBootstrapResponse"}}}}}}},"/users/user/exists":{"get":{"tags":["user"],"summary":"Check User Exists","operationId":"check_user_exists_users_user_exists_get","parameters":[{"name":"phone_number","in":"query","required":true,"schema":{"type":"string","title":"Phone Number"}}],"responses":{"200":{"description":"user exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserExists"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/users/user/exists/phone":{"get":{"tags":["user"],"summary":"Check User Exists Unauthenticated","operationId":"check_user_exists_unauthenticated_users_user_exists_phone_get","parameters":[{"name":"phone_number","in":"query","required":true,"schema":{"type":"string","title":"Phone Number"}}],"responses":{"200":{"description":"user exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserExists"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/users/user/exists/email":{"get":{"tags":["user"],"summary":"Check User Exists By Email Unauthenticated","operationId":"check_user_exists_by_email_unauthenticated_users_user_exists_email_get","parameters":[{"name":"email","in":"query","required":true,"schema":{"type":"string","title":"Email"}}],"responses":{"200":{"description":"user exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserExists"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/users/user/profile":{"get":{"tags":["user","user profile"],"summary":"Get User Profile","operationId":"get_user_profile_users_user_profile_get","responses":{"200":{"description":"user profile successfully retrieved","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserProfileRetrieve"}}}}}},"patch":{"tags":["user","user profile"],"summary":"Update User Profile","operationId":"update_user_profile_users_user_profile_patch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserProfileUpdate"}}},"required":true},"responses":{"200":{"description":"user profile successfully updated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserProfileRetrieve"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/users/user/me/profile":{"patch":{"tags":["user","user profile"],"summary":"Patch User Me Profile","operationId":"patch_user_me_profile_users_user_me_profile_patch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserProfilePatch"}}},"required":true},"responses":{"200":{"description":"Profile patched","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserProfileMeResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/users/user/profile/image":{"delete":{"tags":["user","user profile"],"summary":"Delete User Profile Image","operationId":"delete_user_profile_image_users_user_profile_image_delete","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"204":{"description":"user profile image successfully deleted"}}},"patch":{"tags":["user","user profile"],"summary":"Update User Profile Image","operationId":"update_user_profile_image_users_user_profile_image_patch","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_update_user_profile_image_users_user_profile_image_patch"}}},"required":true},"responses":{"200":{"description":"user profile image successfully updated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserProfileImage"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/users/user/hub/{hub_id}":{"post":{"tags":["user","selected hub"],"summary":"Select User Hub","operationId":"select_user_hub_users_user_hub__hub_id__post","parameters":[{"name":"hub_id","in":"path","required":true,"schema":{"type":"integer","title":"Hub Id"}}],"responses":{"200":{"description":"User selected hub","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HubUserCurrentResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["user","selected hub"],"summary":"Unselect User Hub","operationId":"unselect_user_hub_users_user_hub__hub_id__delete","parameters":[{"name":"hub_id","in":"path","required":true,"schema":{"type":"integer","title":"Hub Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"204":{"description":"User deleted selected hub"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/users/user/default-hub":{"post":{"tags":["user","selected hub"],"summary":"Select User Default Hub","operationId":"select_user_default_hub_users_user_default_hub_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HubDefaultRequest"}}},"required":true},"responses":{"200":{"description":"Set default hub for user","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HubUserCurrentResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/users/user/fcm-configs":{"post":{"tags":["user"],"summary":"Create Fcm Config","operationId":"create_fcm_config_users_user_fcm_configs_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserFCMConfigCreateSchema"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["user"],"summary":"Delete Fcm Config","operationId":"delete_fcm_config_users_user_fcm_configs_delete","parameters":[{"name":"device_id","in":"query","required":true,"schema":{"type":"string","title":"Device Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/users/user/firebase-id":{"put":{"tags":["user"],"summary":"Update User Firebase Id","description":"Update a user's Firebase ID by phone number or email.\n\nThis endpoint verifies the Firebase token and updates the user's Firebase ID\nin the database based on their phone number or email.\n\nThe authenticated user must be the same as the user being updated.","operationId":"update_user_firebase_id_users_user_firebase_id_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserFirebaseIdUpdate"}}},"required":true},"responses":{"200":{"description":"Successfully updated Firebase user ID","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Update User Firebase Id Users User Firebase Id Put"},"example":{"message":"Firebase user ID successfully updated"}}}},"401":{"description":"Invalid or expired token"},"403":{"description":"Not authorized to update this user's Firebase ID"},"404":{"description":"User not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/users/user/transfer-anon-order":{"post":{"tags":["user"],"summary":"Transfer Anon Order","description":"Transfer a NEW (unpaid) order from an anonymous backend user to the authenticated user.\n\nCalled immediately after a guest logs into (or creates) an account via checkout OTP,\nwhen Firebase UID linking replaced the anonymous session with a real account and the\npre-auth backend user ID differs from the post-auth backend user ID.\n\nReturns 404 if the order is not found on the anonymous user.\nIf the authenticated user already has an active order with items at the same\nhub, merges the anonymous order into it and returns that existing order.\nReturns 409 if the order is already paid.","operationId":"transfer_anon_order_users_user_transfer_anon_order_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransferAnonOrderRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransferAnonOrderResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/users/payments/setup-intent":{"post":{"tags":["user-payment"],"summary":"Get Setup Intent","operationId":"get_setup_intent_users_payments_setup_intent_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClientSecretSchema"}}}}}}},"/users/payments/save-payment-method":{"post":{"tags":["user-payment"],"summary":"Attach Payment Method","operationId":"attach_payment_method_users_payments_save_payment_method_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentMethodAttachRequestSchema"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/users/payments/methods":{"get":{"tags":["user-payment"],"summary":"Get User Payment Methods","operationId":"get_user_payment_methods_users_payments_methods_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/users/payments/pay":{"post":{"tags":["user-payment"],"summary":"Pay With Card","operationId":"pay_with_card_users_payments_pay_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CardPaymentRequestSchema"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/users/payments/apple-pay":{"post":{"tags":["user-payment"],"summary":"Pay With Apple Pay","operationId":"pay_with_apple_pay_users_payments_apple_pay_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplePayRequestSchema"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/users/payments/google-pay":{"post":{"tags":["user-payment"],"summary":"Pay With Google Pay","operationId":"pay_with_google_pay_users_payments_google_pay_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GooglePayRequestSchema"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/users/payments/confirm-payment":{"post":{"tags":["user-payment"],"summary":"Confirm Payment","operationId":"confirm_payment_users_payments_confirm_payment_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfirmPaymentSchema"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/users/payments/methods/{payment_method_id}":{"delete":{"tags":["user-payment"],"summary":"Remove User Payment Method","operationId":"remove_user_payment_method_users_payments_methods__payment_method_id__delete","parameters":[{"name":"payment_method_id","in":"path","required":true,"schema":{"type":"string","title":"Payment Method Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/users/loyalty/balance":{"get":{"tags":["loyalty-points"],"summary":"Get Loyalty Balance","description":"Get the current VenBucks balance for the authenticated user.\n\nReturns:\n    - loyalty_points: Current VenBucks balance\n    - points_value_in_cents: Monetary value of points in cents","operationId":"get_loyalty_balance_users_loyalty_balance_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoyaltyPointsBalanceSchema"}}}}}}},"/users/loyalty/calculate-earnings":{"post":{"tags":["loyalty-points"],"summary":"Calculate Potential Earnings","description":"Calculate how many VenBucks will be earned for a given order subtotal.\n\nThis endpoint helps the frontend display potential earnings before checkout.\nVenBucks are earned based on the order subtotal (after deal discounts, before tax).\n\nArgs:\n    order_total_cents: The order subtotal in cents (after deal discounts, before tax)\n\nReturns:\n    - order_total: The input order subtotal\n    - points_to_earn: VenBucks that will be earned\n    - points_value: Monetary value of the points","operationId":"calculate_potential_earnings_users_loyalty_calculate_earnings_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_calculate_potential_earnings_users_loyalty_calculate_earnings_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoyaltyPointsCalculationSchema"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/users/wallet/balance":{"get":{"tags":["user-wallet"],"summary":"Get Wallet Balance","description":"Get the current wallet balance for the authenticated user.","operationId":"get_wallet_balance_users_wallet_balance_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WalletBalanceResponse"}}}}}}},"/users/wallet/deposit":{"post":{"tags":["user-wallet"],"summary":"Create Wallet Deposit","description":"Create a Stripe PaymentIntent for wallet deposit.\nThe actual wallet credit happens in the webhook handler after payment succeeds.","operationId":"create_wallet_deposit_users_wallet_deposit_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WalletDepositRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WalletDepositResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/users/wallet/transactions":{"get":{"tags":["user-wallet"],"summary":"Get Wallet Transactions","description":"Get paginated transaction history for the authenticated user.","operationId":"get_wallet_transactions_users_wallet_transactions_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/WalletTransactionResponse"},"title":"Response Get Wallet Transactions Users Wallet Transactions Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/users/wallet/debit":{"post":{"tags":["user-wallet"],"summary":"Debit Wallet","description":"Pay for an order using VenCart wallet balance.\nThis debits the wallet and sends the order to VenSmart (same flow as card/Apple/Google Pay).","operationId":"debit_wallet_users_wallet_debit_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WalletDebitRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/hubs/{hub_id}/products":{"get":{"tags":["products"],"summary":"List products in a hub for user search","description":"Endpoint to retrieve products based on the passed string and hub ID.\n\nArgs:\n    hub_id (int): Hub identifier.\n    product_name: Product name to filter by. Defaults to Query(..., min_length=1, description=\"Search text\").\n    subcategory_id: Subcategory ID to filter by.\n    params (Params, optional): Pagination parameters. Defaults to Depends().\n    session (AsyncSession, optional): Database session. Defaults to Depends(async_get_session).\n    product_controller (ProductController, optional): Product controller instance.\n    Defaults to Depends(get_product_controller).\n    hub_controller (HubController, optional): Hub controller instance. Defaults to Depends(get_hub_controller).\n    user (User, optional): Authenticated user. Defaults to Depends(try_get_user_by_firebase_user).\n\nReturns:\n    List[ProductRetrieveSchema]: contains the products retrieved for the given hub_id and product_name,\n                                    formatted according to the ProductRetrieveSchema Pydantic model","operationId":"get_products_for_user_by_hub_id_hubs__hub_id__products_get","parameters":[{"name":"hub_id","in":"path","required":true,"schema":{"type":"integer","title":"Hub Id"}},{"name":"subcategory_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Filter by subcategory","title":"Subcategory Id"},"description":"Filter by subcategory"},{"name":"category_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Filter by category","title":"Category Id"},"description":"Filter by category"},{"name":"product_name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Search text","title":"Product Name"},"description":"Search text"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ProductRetrieveSchema"},"title":"Response Get Products For User By Hub Id Hubs  Hub Id  Products Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/hubs/{hub_id}/products/{product_id}":{"get":{"tags":["products"],"summary":"Get Product Detail For User By Hub Id","operationId":"get_product_detail_for_user_by_hub_id_hubs__hub_id__products__product_id__get","parameters":[{"name":"hub_id","in":"path","required":true,"schema":{"type":"integer","title":"Hub Id"}},{"name":"product_id","in":"path","required":true,"schema":{"type":"integer","title":"Product Id"}}],"responses":{"200":{"description":"product detail successfully retrieved","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductRetrieveSchema"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/hubs/{hub_id}/products/{product_id}/also-like":{"get":{"tags":["products"],"summary":"Products frequently purchased together with this product at this hub","operationId":"get_also_like_products_for_user_hubs__hub_id__products__product_id__also_like_get","parameters":[{"name":"hub_id","in":"path","required":true,"schema":{"type":"integer","title":"Hub Id"}},{"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/ProductRetrieveSchema"},"title":"Response Get Also Like Products For User Hubs  Hub Id  Products  Product Id  Also Like Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/hubs/{hub_id}/bestsellers":{"get":{"tags":["products"],"summary":"Get Bestsellers For User By Hub Id","operationId":"get_bestsellers_for_user_by_hub_id_hubs__hub_id__bestsellers_get","parameters":[{"name":"hub_id","in":"path","required":true,"schema":{"type":"integer","title":"Hub Id"}},{"name":"category_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Category Id"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/hubs/{hub_id}/discounted":{"get":{"tags":["products"],"summary":"Get Discounted Products For User By Hub Id","operationId":"get_discounted_products_for_user_by_hub_id_hubs__hub_id__discounted_get","parameters":[{"name":"hub_id","in":"path","required":true,"schema":{"type":"integer","title":"Hub Id"}},{"name":"category_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Category Id"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/hubs/{hub_id}/promotions":{"get":{"tags":["products"],"summary":"Get Promotion Products For User By Hub Id","operationId":"get_promotion_products_for_user_by_hub_id_hubs__hub_id__promotions_get","parameters":[{"name":"hub_id","in":"path","required":true,"schema":{"type":"integer","title":"Hub Id"}},{"name":"category_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Category Id"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/hubs/{hub_id}/favorite-products":{"get":{"tags":["user-favorites"],"summary":"Get User Favorites","operationId":"get_user_favorites_hubs__hub_id__favorite_products_get","parameters":[{"name":"hub_id","in":"path","required":true,"schema":{"type":"integer","title":"Hub Id"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Size"}}],"responses":{"200":{"description":"List of products successfully retrieved","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ProductRetrieveSchema"},"title":"Response 200 Get User Favorites Hubs  Hub Id  Favorite Products Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["user-favorites"],"summary":"Add User Favorite","operationId":"add_user_favorite_hubs__hub_id__favorite_products_post","parameters":[{"name":"hub_id","in":"path","required":true,"schema":{"type":"integer","title":"Hub Id"}},{"name":"product_id","in":"query","required":true,"schema":{"type":"integer","title":"Product Id"}}],"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/hubs/{hub_id}/favorite-products/{product_id}":{"delete":{"tags":["user-favorites"],"summary":"Delete User Favorite","operationId":"delete_user_favorite_hubs__hub_id__favorite_products__product_id__delete","parameters":[{"name":"hub_id","in":"path","required":true,"schema":{"type":"integer","title":"Hub Id"}},{"name":"product_id","in":"path","required":true,"schema":{"type":"integer","title":"Product Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/hub-categories":{"get":{"tags":["categories"],"summary":"Get Categories By Hub","operationId":"get_categories_by_hub_hub_categories_get","parameters":[{"name":"hub_id","in":"query","required":true,"schema":{"type":"integer","title":"Hub Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/hub-categories/{category_id}/subcategories":{"get":{"tags":["categories"],"summary":"Get Subcategories Of Category","operationId":"get_subcategories_of_category_hub_categories__category_id__subcategories_get","parameters":[{"name":"category_id","in":"path","required":true,"schema":{"type":"integer","title":"Category Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/hubs/lookup":{"post":{"tags":["hubs","hubs"],"summary":"Hub Lookup","operationId":"hub_lookup_hubs_lookup_post","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":20,"minimum":0,"default":20,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HubNameLookupRequest"}}}},"responses":{"200":{"description":"Hub lookup successful","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/HubUserCurrentResponse"},"title":"Response 200 Hub Lookup Hubs Lookup Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/hubs/banners":{"get":{"tags":["hubs","hubs"],"summary":"List Hub Banners","operationId":"list_hub_banners_hubs_banners_get","parameters":[{"name":"hub_id","in":"query","required":true,"schema":{"type":"integer","title":"Hub Id"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/hubs/{hub_id}/status":{"get":{"tags":["hubs","hubs"],"summary":"Get Hub Status","description":"Get the status of a hub by its ID.\n\nThe status can be one of: 'active', 'maintenance', or 'restocking'.","operationId":"get_hub_status_hubs__hub_id__status_get","parameters":[{"name":"hub_id","in":"path","required":true,"schema":{"type":"integer","title":"Hub Id"}}],"responses":{"200":{"description":"Hub status retrieved successfully","content":{"application/json":{"schema":{"type":"string","title":"Response Get Hub Status Hubs  Hub Id  Status Get"},"example":"active"}}},"404":{"description":"Hub not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["hubs","hubs"],"summary":"Update Hub Status","description":"Update the status of a hub by its ID.\n\nThe status can be one of: 'active', 'maintenance', or 'restocking'.","operationId":"update_hub_status_hubs__hub_id__status_put","parameters":[{"name":"hub_id","in":"path","required":true,"schema":{"type":"integer","title":"Hub Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HubStatusUpdateRequest"}}}},"responses":{"200":{"description":"Hub status updated successfully","content":{"application/json":{"schema":{},"example":{"message":"Hub status updated to 'maintenance'"}}}},"404":{"description":"Hub not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/hubs/{hub_id}/status/internal":{"get":{"tags":["hubs","hubs"],"summary":"Get Hub Status Internal","description":"Get the status of a hub by its ID (internal endpoint with IP whitelisting).\n\nThis endpoint uses IP-based authentication instead of token authentication.\nAccess is only allowed from whitelisted IP addresses (internal network).\n\nThe status can be one of: 'active', 'maintenance', or 'restocking'.","operationId":"get_hub_status_internal_hubs__hub_id__status_internal_get","parameters":[{"name":"hub_id","in":"path","required":true,"schema":{"type":"integer","title":"Hub Id"}}],"responses":{"200":{"description":"Hub status retrieved successfully","content":{"application/json":{"schema":{"type":"string","title":"Response Get Hub Status Internal Hubs  Hub Id  Status Internal Get"},"example":"active"}}},"404":{"description":"Hub not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["hubs","hubs"],"summary":"Update Hub Status Internal","description":"Update the status of a hub by its ID (internal endpoint with IP whitelisting).\n\nThis endpoint uses IP-based authentication instead of token authentication.\nAccess is only allowed from whitelisted IP addresses (internal network).\n\nThe status can be one of: 'active', 'maintenance', or 'restocking'.","operationId":"update_hub_status_internal_hubs__hub_id__status_internal_put","parameters":[{"name":"hub_id","in":"path","required":true,"schema":{"type":"integer","title":"Hub Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HubStatusUpdateRequest"}}}},"responses":{"200":{"description":"Hub status updated successfully","content":{"application/json":{"schema":{},"example":{"message":"Hub status updated to 'maintenance'"}}}},"404":{"description":"Hub not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/hubs/owner/banners":{"get":{"tags":["hubs","banners"],"summary":"List Hub Banners","operationId":"list_hub_banners_hubs_owner_banners_get","parameters":[{"name":"hub_id","in":"query","required":true,"schema":{"type":"integer","title":"Hub Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["hubs","banners"],"summary":"Create Hub Banner","operationId":"create_hub_banner_hubs_owner_banners_post","parameters":[{"name":"hub_id","in":"query","required":true,"schema":{"type":"integer","title":"Hub Id"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_create_hub_banner_hubs_owner_banners_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/hubs/owner/banners/{banner_id}":{"delete":{"tags":["hubs","banners"],"summary":"Delete Hub Banner","operationId":"delete_hub_banner_hubs_owner_banners__banner_id__delete","parameters":[{"name":"banner_id","in":"path","required":true,"schema":{"type":"integer","title":"Banner Id"}},{"name":"hub_id","in":"query","required":true,"schema":{"type":"integer","title":"Hub Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/webhooks/zendesk":{"post":{"tags":["zendesk-webhook"],"summary":"Zendesk Webhook","operationId":"zendesk_webhook_webhooks_zendesk_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZendeskWebhookRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/webhooks/vensmart/orders":{"post":{"tags":["vensmart"],"summary":"Handle Hub Event","operationId":"handle_hub_event_webhooks_vensmart_orders_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HubEvent"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/user-notifications":{"get":{"tags":["user-notifications"],"summary":"List User Notifications","operationId":"list_user_notifications_user_notifications_get","parameters":[{"name":"is_read","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Read"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/user-notifications/{notification_id}/read-unread":{"patch":{"tags":["user-notifications"],"summary":"Update Notification Read Status","operationId":"update_notification_read_status_user_notifications__notification_id__read_unread_patch","parameters":[{"name":"notification_id","in":"path","required":true,"schema":{"type":"integer","title":"Notification Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateNotificationReadStatusSchema"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/user-notifications/read-all":{"post":{"tags":["user-notifications"],"summary":"Mark All As Read","operationId":"mark_all_as_read_user_notifications_read_all_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/user-notifications/unread-count":{"get":{"tags":["user-notifications"],"summary":"Get Unread Count","operationId":"get_unread_count_user_notifications_unread_count_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/jobs/{job_id}":{"get":{"tags":["jobs"],"summary":"Get Job Status","operationId":"get_job_status_jobs__job_id__get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobStatusResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/jobs/find":{"post":{"tags":["jobs"],"summary":"Find Jobs","operationId":"find_jobs_jobs_find_post","parameters":[{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Limit"}},{"name":"reverse","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Reverse"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobStatusFindRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/JobStatusResponse"},"title":"Response 200 Find Jobs Jobs Find Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/cameras/stream/{hub_id}/{camera}/index.m3u8":{"get":{"tags":["HLS"],"summary":"Get Playlist","operationId":"get_playlist_cameras_stream__hub_id___camera__index_m3u8_get","parameters":[{"name":"hub_id","in":"path","required":true,"schema":{"type":"string","title":"Hub Id"}},{"name":"camera","in":"path","required":true,"schema":{"type":"string","title":"Camera"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/cameras/stream/{hub_id}/{camera}/{tail_path}":{"get":{"tags":["HLS"],"summary":"Get Segment","operationId":"get_segment_cameras_stream__hub_id___camera___tail_path__get","parameters":[{"name":"hub_id","in":"path","required":true,"schema":{"type":"string","title":"Hub Id"}},{"name":"camera","in":"path","required":true,"schema":{"type":"string","title":"Camera"}},{"name":"tail_path","in":"path","required":true,"schema":{"type":"string","title":"Tail Path"}},{"name":"Range","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Range"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"head":{"tags":["HLS"],"summary":"Head Segment","operationId":"head_segment_cameras_stream__hub_id___camera___tail_path__head","parameters":[{"name":"hub_id","in":"path","required":true,"schema":{"type":"string","title":"Hub Id"}},{"name":"camera","in":"path","required":true,"schema":{"type":"string","title":"Camera"}},{"name":"tail_path","in":"path","required":true,"schema":{"type":"string","title":"Tail Path"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/cameras/stream/streams":{"get":{"tags":["HLS"],"summary":"List Streams","description":"Return the camera inventory for the given hub_id (from HUB_TO_ENDPOINTS_MAP).","operationId":"list_streams_cameras_stream_streams_get","parameters":[{"name":"hub_id","in":"query","required":true,"schema":{"type":"string","description":"Hub id key from HUB_TO_ENDPOINTS_MAP","title":"Hub Id"},"description":"Hub id key from HUB_TO_ENDPOINTS_MAP"},{"name":"include_offline","in":"query","required":false,"schema":{"type":"boolean","description":"Include offline streams","default":true,"title":"Include Offline"},"description":"Include offline streams"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/deals/active/{hub_id}":{"get":{"tags":["deals"],"summary":"Get Active Deals For Display","description":"Get active deals for banner display in the frontend.\nReturns deals that are currently active and have display text/images.","operationId":"get_active_deals_for_display_deals_active__hub_id__get","parameters":[{"name":"hub_id","in":"path","required":true,"schema":{"type":"integer","description":"Hub ID to get deals for","title":"Hub Id"},"description":"Hub ID to get deals for"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ActiveDealDisplaySchema"},"title":"Response Get Active Deals For Display Deals Active  Hub Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/deals/check-eligibility":{"post":{"tags":["deals"],"summary":"Check Deal Eligibility","description":"Check which deals the current cart is eligible for.\nThis endpoint is called at checkout to determine available deals.\nUser ID is automatically populated from the authenticated user if not provided.","operationId":"check_deal_eligibility_deals_check_eligibility_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckEligibilityRequestSchema"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckEligibilityResponseSchema"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/deals/apply-reward":{"post":{"tags":["deals"],"summary":"Apply Deal Reward","description":"Apply a deal reward to the cart.\nThis modifies cart item prices or total based on the deal reward type.","operationId":"apply_deal_reward_deals_apply_reward_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplyRewardRequestSchema"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplyRewardResponseSchema"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/deals/{deal_id}":{"get":{"tags":["deals"],"summary":"Get Deal By Id","description":"Get detailed information about a specific deal.\nIncludes all triggers, rewards, and constraints.","operationId":"get_deal_by_id_deals__deal_id__get","parameters":[{"name":"deal_id","in":"path","required":true,"schema":{"type":"integer","description":"Deal ID","title":"Deal Id"},"description":"Deal ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DealRetrieveSchema"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["deals"],"summary":"Update Deal","description":"Update an existing deal.\nAdmin endpoint - requires authenticated user.\nNote: This only updates the main deal fields, not nested triggers/rewards/constraints.","operationId":"update_deal_deals__deal_id__put","parameters":[{"name":"deal_id","in":"path","required":true,"schema":{"type":"integer","description":"Deal ID to update","title":"Deal Id"},"description":"Deal ID to update"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DealUpdateSchema"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DealRetrieveSchema"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["deals"],"summary":"Delete Deal","description":"Delete a deal and all its associated triggers, rewards, and constraints.\nAdmin endpoint - requires authenticated user.","operationId":"delete_deal_deals__deal_id__delete","parameters":[{"name":"deal_id","in":"path","required":true,"schema":{"type":"integer","description":"Deal ID to delete","title":"Deal Id"},"description":"Deal ID to delete"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/deals/{deal_id}/redemption-status":{"get":{"tags":["deals"],"summary":"Get Deal Redemption Status","description":"Get redemption status for a deal (owners app).\nReturns total number of redemptions and redemption limit if SALEAMT constraint exists.\n\nResponse includes:\n- total_redemptions: Total number of successful orders with this deal\n- redemption_limit: Maximum redemptions allowed (from SALEAMT constraint, null if not set)\n- limit_reached: Whether the deal has reached its redemption limit\n- is_active: Whether the deal is currently active","operationId":"get_deal_redemption_status_deals__deal_id__redemption_status_get","parameters":[{"name":"deal_id","in":"path","required":true,"schema":{"type":"integer","description":"Deal ID","title":"Deal Id"},"description":"Deal ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DealRedemptionStatusSchema"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/deals/hub/{hub_id}":{"get":{"tags":["deals"],"summary":"Get Deals By Hub","description":"Get all deals for a specific hub (admin endpoint).\nRequires authenticated user.","operationId":"get_deals_by_hub_deals_hub__hub_id__get","parameters":[{"name":"hub_id","in":"path","required":true,"schema":{"type":"integer","description":"Hub ID","title":"Hub Id"},"description":"Hub ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DealRetrieveSchema"},"title":"Response Get Deals By Hub Deals Hub  Hub Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/deals/":{"post":{"tags":["deals"],"summary":"Create Deal","description":"Create a new deal with triggers, rewards, and constraints.\nAdmin endpoint - requires authenticated user.","operationId":"create_deal_deals__post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DealCreateSchema"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DealRetrieveSchema"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/deals/create-from-owner":{"post":{"tags":["deals"],"summary":"Create Deal From Owner","description":"Create a new deal from frontend format.\nAccepts single reward and trigger with category/subcategory names.\nAdmin endpoint - requires authenticated user.","operationId":"create_deal_from_owner_deals_create_from_owner_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_create_deal_from_owner_deals_create_from_owner_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DealRetrieveSchema"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/deals/promo-products/{hub_id}":{"get":{"tags":["deals"],"summary":"Get Promo Product Ids","description":"Get all product IDs that are eligible for promotions at a given hub.\nReturns a list of product IDs from active deals (both rewards and triggers).","operationId":"get_promo_product_ids_deals_promo_products__hub_id__get","parameters":[{"name":"hub_id","in":"path","required":true,"schema":{"type":"integer","description":"Hub ID to get promo products for","title":"Hub Id"},"description":"Hub ID to get promo products for"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"integer"},"title":"Response Get Promo Product Ids Deals Promo Products  Hub Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/guests/session":{"post":{"tags":["guest-checkout"],"summary":"Create Guest Session","description":"Start a guest checkout session.\n\nCreates an ephemeral user, a Stripe customer, and an empty cart order for\nthe given hub. Returns a guest_token the client uses in the X-Guest-Token\nheader for all subsequent guest requests.\n\nOptionally accepts FCM fields (fcm_token, device_id, device_type) to\nregister the device for push notifications in the same request.","operationId":"create_guest_session_guests_session_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GuestSessionCreateSchema"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GuestSessionResponseSchema"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/guests/contact":{"post":{"tags":["guest-checkout"],"summary":"Set Guest Contact","description":"Set the guest's contact info (email and/or phone) at checkout.\n\nUpdates the guest's user row and Stripe customer so that Stripe-generated\nreceipts reach the right address. Returns 409 if the email/phone already\nbelongs to a registered account — the client should redirect to login.\n\nAlso saves the promotional email opt-in preference.","operationId":"set_guest_contact_guests_contact_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GuestContactSchema"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/guests/fcm-configs":{"post":{"tags":["guest-checkout"],"summary":"Register Guest Fcm Token","description":"Register a device FCM token for the guest user.\n\nEnables push notifications for order status updates without requiring a\nFirebase account. Can alternatively be done inline in POST /guests/session.","operationId":"register_guest_fcm_token_guests_fcm_configs_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserFCMConfigCreateSchema"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/guests/payments/apple-pay":{"post":{"tags":["guest-checkout"],"summary":"Guest Apple Pay","description":"Initialize Apple Pay for a guest order.\n\nReturns client_secret, ephemeral_key, and customer_id for the Stripe\nmobile SDK to display the Apple Pay sheet.","operationId":"guest_apple_pay_guests_payments_apple_pay_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplePayRequestSchema"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/guests/payments/google-pay":{"post":{"tags":["guest-checkout"],"summary":"Guest Google Pay","description":"Initialize Google Pay for a guest order.\n\nReturns client_secret, ephemeral_key, and customer_id for the Stripe\nmobile SDK to display the Google Pay sheet.","operationId":"guest_google_pay_guests_payments_google_pay_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GooglePayRequestSchema"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/guests/payments/confirm-payment":{"post":{"tags":["guest-checkout"],"summary":"Guest Confirm Payment","description":"Confirm a wallet payment (Apple/Google Pay) after the user authorizes it.\n\nOn success, marks the guest session as converted so the expiry cleanup\ntask leaves it (and the associated order history) intact.","operationId":"guest_confirm_payment_guests_payments_confirm_payment_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfirmPaymentSchema"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/guests/payments/card":{"post":{"tags":["guest-checkout"],"summary":"Guest Pay With Card","description":"One-time card payment for guests using a freshly tokenized Stripe card.\n\nThe client tokenizes the card via Stripe Elements / the mobile SDK and\npasses the resulting pm_xxx ID. Unlike the saved-card flow, the card does\nnot need to be pre-attached to the Stripe customer.\n\nOn success, marks the guest session as converted.","operationId":"guest_pay_with_card_guests_payments_card_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GuestCardPaymentSchema"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/guests/orders":{"get":{"tags":["guest-checkout"],"summary":"List Guest Orders","description":"List orders for a guest user with pagination and filtering.\n\nRequires X-Guest-Token header for authentication.\nSupports filtering by order processing statuses.","operationId":"list_guest_orders_guests_orders_get","parameters":[{"name":"size","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Size"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Page"}},{"name":"order_by","in":"query","required":false,"schema":{"type":"string","default":"created_at","title":"Order By"}},{"name":"is_desc","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Is Desc"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"type":"array","items":{"type":"integer"}},{"type":"null"}],"title":"Order Processing Statuses"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/guests/claim-order":{"post":{"tags":["guest-checkout"],"summary":"Claim Guest Order","description":"Transfer a guest order to the authenticated user after login.\n\nCalled immediately after a guest logs into an existing account mid-checkout.\nValidates the guest session, checks for order conflicts at the hub, and\nreassigns the order to the authenticated user's account.\n\nReturns 404 if the guest session or order is not found.\nReturns 409 if the order is already paid, or if the user has an existing\norder with items at the same hub.","operationId":"claim_guest_order_guests_claim_order_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GuestClaimOrderSchema"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GuestClaimOrderResponseSchema"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/guests/orders/{order_id}":{"get":{"tags":["guest-checkout"],"summary":"Get Guest Order","description":"Get order details for a guest user.\n\nRequires X-Guest-Token header for authentication.\nReturns the order with all items and product details.","operationId":"get_guest_order_guests_orders__order_id__get","parameters":[{"name":"order_id","in":"path","required":true,"schema":{"type":"integer","title":"Order Id"}},{"name":"hub_id","in":"query","required":true,"schema":{"type":"integer","title":"Hub Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/zendesk/token":{"get":{"tags":["zendesk"],"summary":"Get Zendesk Token","operationId":"get_zendesk_token_zendesk_token_get","parameters":[{"name":"hub_id","in":"query","required":true,"schema":{"type":"integer","title":"Hub Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"ActiveDealDisplaySchema":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"display_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Text"},"display_image":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Image"},"priority":{"type":"integer","title":"Priority"}},"type":"object","required":["id","name","priority"],"title":"ActiveDealDisplaySchema","description":"Schema for displaying active deals in the banner"},"ApplePayRequestSchema":{"properties":{"order_id":{"type":"integer","title":"Order Id"},"deal_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Deal Id"},"venbucks_to_redeem":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Venbucks To Redeem"}},"type":"object","required":["order_id"],"title":"ApplePayRequestSchema"},"ApplyRewardRequestSchema":{"properties":{"deal_ids":{"items":{"type":"integer"},"type":"array","title":"Deal Ids"},"hub_id":{"type":"integer","title":"Hub Id"},"user_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"User Id"},"cart_items":{"items":{"$ref":"#/components/schemas/CartItemSchema"},"type":"array","title":"Cart Items"},"device_uuid":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Device Uuid"}},"type":"object","required":["deal_ids","hub_id","cart_items"],"title":"ApplyRewardRequestSchema","description":"Schema for applying a reward to the cart"},"ApplyRewardResponseSchema":{"properties":{"success":{"type":"boolean","title":"Success"},"deal_applied":{"type":"string","title":"Deal Applied"},"modified_cart_items":{"items":{"$ref":"#/components/schemas/ModifiedCartItemSchema"},"type":"array","title":"Modified Cart Items"},"original_cart_total":{"type":"integer","title":"Original Cart Total"},"discounted_cart_total":{"type":"integer","title":"Discounted Cart Total"},"total_savings":{"type":"integer","title":"Total Savings"},"message":{"type":"string","title":"Message"}},"type":"object","required":["success","deal_applied","modified_cart_items","original_cart_total","discounted_cart_total","total_savings","message"],"title":"ApplyRewardResponseSchema","description":"Response schema for applying rewards"},"BgTaskResponse":{"properties":{"job_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Job Id"}},"type":"object","title":"BgTaskResponse"},"BinStatus":{"properties":{"bin_num":{"type":"integer","title":"Bin Num"},"occurrence":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Occurrence"},"status_code":{"type":"integer","title":"Status Code"},"is_ready":{"type":"boolean","title":"Is Ready","default":false},"is_dropped":{"type":"boolean","title":"Is Dropped","default":false}},"type":"object","required":["bin_num","status_code"],"title":"BinStatus","description":"Status information for an individual bin.\n\nAttributes:\n    bin_num: The bin number\n    occurrence: The occurrence count for this bin (for handling multiple bins with the same number)\n    status_code: VensmartStatusCode indicating the bin's current state\n    is_ready: Whether the bin is ready to be opened\n    is_dropped: Whether all items in this bin were dropped"},"Body_calculate_potential_earnings_users_loyalty_calculate_earnings_post":{"properties":{"order_total_cents":{"type":"integer","title":"Order Total Cents","description":"Order subtotal in cents (after deal discounts, before tax)"}},"type":"object","required":["order_total_cents"],"title":"Body_calculate_potential_earnings_users_loyalty_calculate_earnings_post"},"Body_create_deal_from_owner_deals_create_from_owner_post":{"properties":{"dealData":{"type":"string","title":"Dealdata"},"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["dealData","file"],"title":"Body_create_deal_from_owner_deals_create_from_owner_post"},"Body_create_hub_banner_hubs_owner_banners_post":{"properties":{"name":{"type":"string","title":"Name"},"order_by":{"type":"integer","title":"Order By"},"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["name","order_by","file"],"title":"Body_create_hub_banner_hubs_owner_banners_post"},"Body_update_user_profile_image_users_user_profile_image_patch":{"properties":{"files":{"type":"string","contentMediaType":"application/octet-stream","title":"Files"}},"type":"object","required":["files"],"title":"Body_update_user_profile_image_users_user_profile_image_patch"},"CardPaymentRequestSchema":{"properties":{"payment_method_id":{"type":"string","title":"Payment Method Id"},"order_id":{"type":"integer","title":"Order Id"},"deal_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Deal Id"},"deal_ids":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Deal Ids"},"venbucks_to_redeem":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Venbucks To Redeem"}},"type":"object","required":["payment_method_id","order_id"],"title":"CardPaymentRequestSchema"},"CartItemSchema":{"properties":{"product_id":{"type":"integer","title":"Product Id"},"category_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Category Id"},"subcategory_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Subcategory Id"},"quantity":{"type":"integer","title":"Quantity"},"unit_price":{"type":"integer","title":"Unit Price"}},"type":"object","required":["product_id","quantity","unit_price"],"title":"CartItemSchema","description":"Schema for cart items when checking eligibility"},"CeleryWorkerResponse":{"properties":{"environment":{"type":"string","title":"Environment"},"statistics":{"additionalProperties":true,"type":"object","title":"Statistics"},"tasks":{"additionalProperties":true,"type":"object","title":"Tasks"},"metrics":{"items":{"$ref":"#/components/schemas/SysInfoResponse"},"type":"array","title":"Metrics"}},"type":"object","required":["environment","statistics","tasks","metrics"],"title":"CeleryWorkerResponse"},"CheckEligibilityRequestSchema":{"properties":{"hub_id":{"type":"integer","title":"Hub Id"},"user_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"User Id"},"cart_items":{"items":{"$ref":"#/components/schemas/CartItemSchema"},"type":"array","title":"Cart Items"},"cart_total":{"type":"integer","title":"Cart Total"},"user_order_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"User Order Count"},"device_uuid":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Device Uuid"}},"type":"object","required":["hub_id","cart_items","cart_total"],"title":"CheckEligibilityRequestSchema","description":"Schema for checking if cart meets deal trigger conditions"},"CheckEligibilityResponseSchema":{"properties":{"eligible_deals":{"items":{"$ref":"#/components/schemas/EligibleDealSchema"},"type":"array","title":"Eligible Deals"}},"type":"object","required":["eligible_deals"],"title":"CheckEligibilityResponseSchema","description":"Response schema for eligibility check"},"ClientSecretSchema":{"properties":{"client_secret":{"type":"string","title":"Client Secret"}},"type":"object","required":["client_secret"],"title":"ClientSecretSchema"},"ConfirmPaymentSchema":{"properties":{"success":{"type":"boolean","title":"Success"},"payment_intent_id":{"type":"string","title":"Payment Intent Id"},"order_id":{"type":"integer","title":"Order Id"},"deal_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Deal Id"},"venbucks_to_redeem":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Venbucks To Redeem"}},"type":"object","required":["success","payment_intent_id","order_id"],"title":"ConfirmPaymentSchema"},"ConstraintType":{"type":"string","enum":["REDEMPTIONS","SALEAMT"],"title":"ConstraintType","description":"Enumeration for deal constraint types"},"ContactChannel":{"type":"string","enum":["email","phone"],"title":"ContactChannel"},"DealConstraintBaseSchema":{"properties":{"name":{"type":"string","title":"Name"},"constraint_type":{"$ref":"#/components/schemas/ConstraintType"},"redemption_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Redemption Limit"},"period":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Period"},"product_id":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Product Id"},"category_id":{"anyOf":[{"items":{"anyOf":[{"type":"integer"},{"type":"string"}]},"type":"array"},{"type":"null"}],"title":"Category Id"},"subcategory_id":{"anyOf":[{"items":{"anyOf":[{"type":"integer"},{"type":"string"}]},"type":"array"},{"type":"null"}],"title":"Subcategory Id"}},"type":"object","required":["name","constraint_type"],"title":"DealConstraintBaseSchema"},"DealConstraintRetrieveSchema":{"properties":{"name":{"type":"string","title":"Name"},"constraint_type":{"$ref":"#/components/schemas/ConstraintType"},"redemption_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Redemption Limit"},"period":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Period"},"product_id":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Product Id"},"category_id":{"anyOf":[{"items":{"anyOf":[{"type":"integer"},{"type":"string"}]},"type":"array"},{"type":"null"}],"title":"Category Id"},"subcategory_id":{"anyOf":[{"items":{"anyOf":[{"type":"integer"},{"type":"string"}]},"type":"array"},{"type":"null"}],"title":"Subcategory Id"},"id":{"type":"integer","title":"Id"}},"type":"object","required":["name","constraint_type","id"],"title":"DealConstraintRetrieveSchema"},"DealCreateSchema":{"properties":{"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"display_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Text"},"display_image":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Image"},"start":{"type":"string","format":"date-time","title":"Start"},"end":{"type":"string","format":"date-time","title":"End"},"hub_id":{"items":{"type":"integer"},"type":"array","title":"Hub Id"},"is_deal_active":{"type":"boolean","title":"Is Deal Active","default":true},"stackable":{"type":"boolean","title":"Stackable","default":false},"priority":{"type":"integer","title":"Priority","default":0},"rewards":{"items":{"$ref":"#/components/schemas/DealRewardBaseSchema"},"type":"array","title":"Rewards","default":[]},"triggers":{"items":{"$ref":"#/components/schemas/DealTriggerBaseSchema"},"type":"array","title":"Triggers","default":[]},"constraints":{"items":{"$ref":"#/components/schemas/DealConstraintBaseSchema"},"type":"array","title":"Constraints","default":[]}},"type":"object","required":["name","start","end","hub_id"],"title":"DealCreateSchema"},"DealRedemptionStatusSchema":{"properties":{"deal_id":{"type":"integer","title":"Deal Id"},"deal_name":{"type":"string","title":"Deal Name"},"total_redemptions":{"type":"integer","title":"Total Redemptions"},"redemption_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Redemption Limit"},"limit_reached":{"type":"boolean","title":"Limit Reached"},"is_active":{"type":"boolean","title":"Is Active"}},"type":"object","required":["deal_id","deal_name","total_redemptions","limit_reached","is_active"],"title":"DealRedemptionStatusSchema","description":"Schema for deal redemption status (owners app)"},"DealRetrieveSchema":{"properties":{"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"display_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Text"},"display_image":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Image"},"start":{"type":"string","format":"date-time","title":"Start"},"end":{"type":"string","format":"date-time","title":"End"},"hub_id":{"items":{"type":"integer"},"type":"array","title":"Hub Id"},"is_deal_active":{"type":"boolean","title":"Is Deal Active","default":true},"stackable":{"type":"boolean","title":"Stackable","default":false},"priority":{"type":"integer","title":"Priority","default":0},"id":{"type":"integer","title":"Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"modified_at":{"type":"string","format":"date-time","title":"Modified At"},"rewards":{"items":{"$ref":"#/components/schemas/DealRewardRetrieveSchema"},"type":"array","title":"Rewards"},"triggers":{"items":{"$ref":"#/components/schemas/DealTriggerRetrieveSchema"},"type":"array","title":"Triggers","default":[]},"constraints":{"items":{"$ref":"#/components/schemas/DealConstraintRetrieveSchema"},"type":"array","title":"Constraints","default":[]}},"type":"object","required":["name","start","end","hub_id","id","created_at","modified_at"],"title":"DealRetrieveSchema"},"DealRewardBaseSchema":{"properties":{"name":{"type":"string","title":"Name"},"reward_type":{"$ref":"#/components/schemas/RewardType"},"product_id":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Product Id"},"category_id":{"anyOf":[{"items":{"anyOf":[{"type":"integer"},{"type":"string"}]},"type":"array"},{"type":"null"}],"title":"Category Id"},"subcategory_id":{"anyOf":[{"items":{"anyOf":[{"type":"integer"},{"type":"string"}]},"type":"array"},{"type":"null"}],"title":"Subcategory Id"},"discount_pct_or_price":{"type":"integer","title":"Discount Pct Or Price"}},"type":"object","required":["name","reward_type","discount_pct_or_price"],"title":"DealRewardBaseSchema"},"DealRewardRetrieveSchema":{"properties":{"name":{"type":"string","title":"Name"},"reward_type":{"$ref":"#/components/schemas/RewardType"},"product_id":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Product Id"},"category_id":{"anyOf":[{"items":{"anyOf":[{"type":"integer"},{"type":"string"}]},"type":"array"},{"type":"null"}],"title":"Category Id"},"subcategory_id":{"anyOf":[{"items":{"anyOf":[{"type":"integer"},{"type":"string"}]},"type":"array"},{"type":"null"}],"title":"Subcategory Id"},"discount_pct_or_price":{"type":"integer","title":"Discount Pct Or Price"},"id":{"type":"integer","title":"Id"}},"type":"object","required":["name","reward_type","discount_pct_or_price","id"],"title":"DealRewardRetrieveSchema"},"DealTriggerBaseSchema":{"properties":{"name":{"type":"string","title":"Name"},"trigger_type":{"$ref":"#/components/schemas/TriggerType"},"product_id":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Product Id"},"category_id":{"anyOf":[{"items":{"anyOf":[{"type":"integer"},{"type":"string"}]},"type":"array"},{"type":"null"}],"title":"Category Id"},"subcategory_id":{"anyOf":[{"items":{"anyOf":[{"type":"integer"},{"type":"string"}]},"type":"array"},{"type":"null"}],"title":"Subcategory Id"},"nth_order":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Nth Order"},"min_val_trigger":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Min Val Trigger"},"time_window_start":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Time Window Start"},"time_window_end":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Time Window End"},"days_of_the_week":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Days Of The Week"}},"type":"object","required":["name","trigger_type"],"title":"DealTriggerBaseSchema"},"DealTriggerRetrieveSchema":{"properties":{"name":{"type":"string","title":"Name"},"trigger_type":{"$ref":"#/components/schemas/TriggerType"},"product_id":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Product Id"},"category_id":{"anyOf":[{"items":{"anyOf":[{"type":"integer"},{"type":"string"}]},"type":"array"},{"type":"null"}],"title":"Category Id"},"subcategory_id":{"anyOf":[{"items":{"anyOf":[{"type":"integer"},{"type":"string"}]},"type":"array"},{"type":"null"}],"title":"Subcategory Id"},"nth_order":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Nth Order"},"min_val_trigger":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Min Val Trigger"},"time_window_start":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Time Window Start"},"time_window_end":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Time Window End"},"days_of_the_week":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Days Of The Week"},"id":{"type":"integer","title":"Id"}},"type":"object","required":["name","trigger_type","id"],"title":"DealTriggerRetrieveSchema"},"DealUpdateSchema":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"display_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Text"},"display_image":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Image"},"start":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Start"},"end":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"End"},"hub_id":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Hub Id"},"is_deal_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Deal Active"},"stackable":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Stackable"},"priority":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Priority"}},"type":"object","title":"DealUpdateSchema"},"DeviceTypeEnum":{"type":"string","enum":["ios","android"],"title":"DeviceTypeEnum"},"DroppedItem":{"properties":{"quantity":{"type":"integer","title":"Quantity"},"product_detail_id":{"type":"integer","title":"Product Detail Id"}},"type":"object","required":["quantity","product_detail_id"],"title":"DroppedItem"},"EligibleDealSchema":{"properties":{"deal_id":{"type":"integer","title":"Deal Id"},"deal_name":{"type":"string","title":"Deal Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"display_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Text"},"reward_description":{"type":"string","title":"Reward Description"},"potential_savings":{"type":"integer","title":"Potential Savings"},"start":{"type":"string","format":"date-time","title":"Start"},"end":{"type":"string","format":"date-time","title":"End"},"stackable":{"type":"boolean","title":"Stackable"}},"type":"object","required":["deal_id","deal_name","reward_description","potential_savings","start","end","stackable"],"title":"EligibleDealSchema","description":"Schema for deals that the cart is eligible for"},"GeoJsonLocation":{"properties":{"type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type","default":"Point"},"coordinates":{"items":{"type":"number"},"type":"array","title":"Coordinates"}},"type":"object","required":["coordinates"],"title":"GeoJsonLocation"},"GooglePayRequestSchema":{"properties":{"order_id":{"type":"integer","title":"Order Id"},"deal_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Deal Id"},"venbucks_to_redeem":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Venbucks To Redeem"}},"type":"object","required":["order_id"],"title":"GooglePayRequestSchema"},"GuestCardPaymentSchema":{"properties":{"order_id":{"type":"integer","title":"Order Id"},"stripe_payment_method_id":{"type":"string","title":"Stripe Payment Method Id"},"deal_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Deal Id"},"venbucks_to_redeem":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Venbucks To Redeem"}},"type":"object","required":["order_id","stripe_payment_method_id"],"title":"GuestCardPaymentSchema"},"GuestClaimOrderResponseSchema":{"properties":{"order_id":{"type":"integer","title":"Order Id"}},"type":"object","required":["order_id"],"title":"GuestClaimOrderResponseSchema"},"GuestClaimOrderSchema":{"properties":{"guest_token":{"type":"string","title":"Guest Token"},"order_id":{"type":"integer","title":"Order Id"}},"type":"object","required":["guest_token","order_id"],"title":"GuestClaimOrderSchema"},"GuestContactSchema":{"properties":{"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"},"accepts_promotional_emails":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Accepts Promotional Emails","default":false}},"type":"object","title":"GuestContactSchema"},"GuestSessionCreateSchema":{"properties":{"hub_id":{"type":"integer","title":"Hub Id"},"fcm_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fcm Token"},"device_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Device Id"},"device_type":{"anyOf":[{"$ref":"#/components/schemas/DeviceTypeEnum"},{"type":"null"}]}},"type":"object","required":["hub_id"],"title":"GuestSessionCreateSchema"},"GuestSessionResponseSchema":{"properties":{"guest_token":{"type":"string","title":"Guest Token"},"guest_user_id":{"type":"integer","title":"Guest User Id"},"order_id":{"type":"integer","title":"Order Id"}},"type":"object","required":["guest_token","guest_user_id","order_id"],"title":"GuestSessionResponseSchema"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HubDefaultRequest":{"properties":{"geojson_location":{"anyOf":[{"$ref":"#/components/schemas/GeoJsonLocation"},{"type":"null"}]}},"type":"object","title":"HubDefaultRequest"},"HubEvent":{"properties":{"message_type":{"$ref":"#/components/schemas/HubMessageType"},"message_content":{"$ref":"#/components/schemas/MessageContent"}},"type":"object","required":["message_type","message_content"],"title":"HubEvent"},"HubMessageType":{"type":"string","enum":["info","warning","error","update","heartbeat","notification","order_completed","order_update","order_started","door_opened"],"title":"HubMessageType"},"HubNameLookupRequest":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"geojson_location":{"anyOf":[{"$ref":"#/components/schemas/GeoJsonLocation"},{"type":"null"}]},"multi_search":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Multi Search","default":true}},"type":"object","title":"HubNameLookupRequest"},"HubStatus":{"type":"string","enum":["active","maintenance","restocking","hidden"],"title":"HubStatus"},"HubStatusUpdateRequest":{"properties":{"hub_status":{"$ref":"#/components/schemas/HubStatus"}},"type":"object","required":["hub_status"],"title":"HubStatusUpdateRequest"},"HubUserCurrentResponse":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"geojson_location":{"anyOf":[{"$ref":"#/components/schemas/GeoJsonLocation"},{"type":"null"}]},"country":{"type":"string","title":"Country"},"state":{"type":"string","title":"State"},"city":{"type":"string","title":"City"},"postal_code":{"type":"string","title":"Postal Code"},"street_address_1":{"type":"string","title":"Street Address 1"},"street_address_2":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Street Address 2"},"tax_rates":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Tax Rates"},"timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timezone"},"approximate_order_limit":{"type":"integer","title":"Approximate Order Limit"},"approximate_bin_opening_limit":{"type":"integer","title":"Approximate Bin Opening Limit"},"max_cart_items":{"type":"integer","title":"Max Cart Items"},"hub_status":{"$ref":"#/components/schemas/HubStatus"}},"type":"object","required":["id","name","country","state","city","postal_code","street_address_1","approximate_order_limit","approximate_bin_opening_limit","max_cart_items","hub_status"],"title":"HubUserCurrentResponse"},"JobStatusFindRequest":{"properties":{"id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Id"},"job_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Job Id"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"args":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Args"},"status":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Status"},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message"}},"type":"object","title":"JobStatusFindRequest"},"JobStatusResponse":{"properties":{"id":{"type":"integer","title":"Id"},"job_id":{"type":"string","format":"uuid","title":"Job Id"},"name":{"type":"string","title":"Name"},"args":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Args"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"status":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Status"},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message"}},"type":"object","required":["id","job_id","name","created_at"],"title":"JobStatusResponse"},"LoyaltyPointsBalanceSchema":{"properties":{"loyalty_points":{"type":"integer","title":"Loyalty Points","description":"Current VenBucks balance"},"points_value_in_cents":{"type":"integer","title":"Points Value In Cents","description":"Monetary value of points in cents"}},"type":"object","required":["loyalty_points","points_value_in_cents"],"title":"LoyaltyPointsBalanceSchema","description":"Schema for user's loyalty points balance"},"LoyaltyPointsCalculationSchema":{"properties":{"order_total":{"type":"integer","title":"Order Total","description":"Order total in cents"},"points_to_earn":{"type":"integer","title":"Points To Earn","description":"VenBucks that will be earned"},"points_value":{"type":"integer","title":"Points Value","description":"Monetary value in cents"}},"type":"object","required":["order_total","points_to_earn","points_value"],"title":"LoyaltyPointsCalculationSchema","description":"Schema for calculating potential points for an order"},"MessageContent":{"properties":{"user_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"User Id"},"order_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Order Id"},"status_code":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Status Code"},"current_bin":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Current Bin"},"bin_num":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Bin Num"},"bins_status":{"anyOf":[{"items":{"$ref":"#/components/schemas/BinStatus"},"type":"array"},{"type":"null"}],"title":"Bins Status"},"dropped_items":{"additionalProperties":{"$ref":"#/components/schemas/DroppedItem"},"type":"object","title":"Dropped Items","default":{}},"bin_nums":{"items":{"type":"integer"},"type":"array","title":"Bin Nums","default":[]},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message"},"hub_response_status_code":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Hub Response Status Code"}},"type":"object","title":"MessageContent"},"ModifiedCartItemSchema":{"properties":{"product_id":{"type":"integer","title":"Product Id"},"category_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Category Id"},"subcategory_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Subcategory Id"},"quantity":{"type":"integer","title":"Quantity"},"original_unit_price":{"type":"integer","title":"Original Unit Price"},"discounted_unit_price":{"type":"integer","title":"Discounted Unit Price"},"discount_applied":{"type":"boolean","title":"Discount Applied","default":false},"quantity_discounted":{"type":"integer","title":"Quantity Discounted","default":0}},"type":"object","required":["product_id","quantity","original_unit_price","discounted_unit_price"],"title":"ModifiedCartItemSchema","description":"Schema for cart items with applied discounts"},"OrderOrderingField":{"type":"string","enum":["created_at","price","status"],"title":"OrderOrderingField"},"OrderProcessingStatus":{"type":"integer","enum":[0,1,2,3,4,5,6,7,8,9],"title":"OrderProcessingStatus","description":"Enumeration of the various stages an Order can be in,\nfrom creation through payment and fulfillment."},"PaymentMethodAttachRequestSchema":{"properties":{"payment_method_id":{"type":"string","title":"Payment Method Id"}},"type":"object","required":["payment_method_id"],"title":"PaymentMethodAttachRequestSchema"},"ProductRetrieveSchema":{"properties":{"name":{"type":"string","title":"Name"},"image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Url"},"upc":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Upc"},"original_price":{"type":"integer","title":"Original Price"},"discounted_price":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Discounted Price"},"quantity_in_stock":{"type":"integer","title":"Quantity In Stock"},"max_per_order":{"type":"integer","title":"Max Per Order"},"subcategory_id":{"type":"integer","title":"Subcategory Id"},"category_id":{"type":"integer","title":"Category Id"},"hub_id":{"type":"integer","title":"Hub Id"},"is_favorite":{"type":"boolean","title":"Is Favorite"},"id":{"type":"integer","title":"Id"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"subcategory":{"type":"string","title":"Subcategory"},"category":{"type":"string","title":"Category"},"quantity_in_basket":{"type":"integer","title":"Quantity In Basket"},"tax_type":{"$ref":"#/components/schemas/ProductTaxType"},"type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type"},"nutrition":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Nutrition"},"tax_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tax Code"},"similar_products":{"anyOf":[{"items":{"$ref":"#/components/schemas/SimilarProductSchema"},"type":"array"},{"type":"null"}],"title":"Similar Products"},"deal_ids":{"items":{"type":"integer"},"type":"array","title":"Deal Ids","default":[]}},"type":"object","required":["name","image_url","upc","original_price","quantity_in_stock","max_per_order","subcategory_id","category_id","hub_id","is_favorite","id","subcategory","category","quantity_in_basket","tax_type"],"title":"ProductRetrieveSchema"},"ProductTaxType":{"type":"string","enum":["sales_tax","bottle_tax","no_tax","unknown_tax"],"title":"ProductTaxType"},"RewardType":{"type":"string","enum":["ITEMVAL","ITEMDISC","MULTVAL","MULTDISC","CARTVAL","CARTDISC"],"title":"RewardType","description":"Enumeration for deal reward types"},"SimilarProductSchema":{"properties":{"name":{"type":"string","title":"Name"},"image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Url"},"upc":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Upc"},"original_price":{"type":"integer","title":"Original Price"},"discounted_price":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Discounted Price"},"quantity_in_stock":{"type":"integer","title":"Quantity In Stock"},"max_per_order":{"type":"integer","title":"Max Per Order"},"subcategory_id":{"type":"integer","title":"Subcategory Id"},"category_id":{"type":"integer","title":"Category Id"},"hub_id":{"type":"integer","title":"Hub Id"},"is_favorite":{"type":"boolean","title":"Is Favorite"},"id":{"type":"integer","title":"Id"},"subcategory":{"type":"string","title":"Subcategory"},"category":{"type":"string","title":"Category"}},"type":"object","required":["name","image_url","upc","original_price","quantity_in_stock","max_per_order","subcategory_id","category_id","hub_id","is_favorite","id","subcategory","category"],"title":"SimilarProductSchema"},"SysInfoResponse":{"properties":{"environment":{"type":"string","title":"Environment"},"platform":{"additionalProperties":true,"type":"object","title":"Platform"},"usage":{"additionalProperties":true,"type":"object","title":"Usage"},"app_settings":{"additionalProperties":true,"type":"object","title":"App Settings"}},"type":"object","required":["environment","platform","usage","app_settings"],"title":"SysInfoResponse"},"TransferAnonOrderRequest":{"properties":{"anon_user_id":{"type":"integer","title":"Anon User Id"},"order_id":{"type":"integer","title":"Order Id"}},"type":"object","required":["anon_user_id","order_id"],"title":"TransferAnonOrderRequest"},"TransferAnonOrderResponse":{"properties":{"order_id":{"type":"integer","title":"Order Id"},"hub_id":{"type":"integer","title":"Hub Id"}},"type":"object","required":["order_id","hub_id"],"title":"TransferAnonOrderResponse"},"TriggerType":{"type":"string","enum":["CARTVAL","CONTAINSCAT","CONTAINSITEM","FIRSTORDER","NTHORDER","BDAY","REFERRAL","TIME"],"title":"TriggerType","description":"Enumeration for deal trigger types"},"UpdateNotificationReadStatusSchema":{"properties":{"is_read":{"type":"boolean","title":"Is Read"}},"type":"object","required":["is_read"],"title":"UpdateNotificationReadStatusSchema"},"UpdateOrderItemSchema":{"properties":{"product_id":{"type":"integer","title":"Product Id"},"quantity":{"type":"integer","minimum":0.0,"title":"Quantity"}},"type":"object","required":["product_id","quantity"],"title":"UpdateOrderItemSchema"},"UserBootstrap":{"properties":{"channel":{"$ref":"#/components/schemas/ContactChannel"},"value":{"type":"string","minLength":1,"title":"Value"}},"type":"object","required":["channel","value"],"title":"UserBootstrap","description":"Body for POST /users/bootstrap — Firebase verified the contact channel already."},"UserBootstrapResponse":{"properties":{"user_id":{"type":"integer","title":"User Id"},"profile_complete":{"type":"boolean","title":"Profile Complete"}},"type":"object","required":["user_id","profile_complete"],"title":"UserBootstrapResponse"},"UserCreate":{"properties":{"firebase_user_id":{"type":"string","title":"Firebase User Id"},"first_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Name"},"last_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Name"},"birthday":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Birthday"},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country"},"state":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City"},"postal_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Postal Code"},"street_address_1":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Street Address 1"},"street_address_2":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Street Address 2"},"email":{"anyOf":[{"type":"string","format":"email"},{"type":"string","const":""},{"type":"null"}],"title":"Email"},"phone_num":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone Num"},"image_url":{"anyOf":[{"type":"string","minLength":1,"format":"uri"},{"type":"null"}],"title":"Image Url"},"selected_hub_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Selected Hub Id"},"is_migrated":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Migrated","default":false},"profile_complete":{"type":"boolean","title":"Profile Complete","default":false},"geojson_location":{"anyOf":[{"$ref":"#/components/schemas/GeoJsonLocation"},{"type":"null"}]}},"type":"object","required":["firebase_user_id"],"title":"UserCreate"},"UserCreateRetrieve":{"properties":{"id":{"type":"integer","title":"Id"},"firebase_user_id":{"type":"string","title":"Firebase User Id"},"selected_hub_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Selected Hub Id"}},"type":"object","required":["id","firebase_user_id"],"title":"UserCreateRetrieve"},"UserDataRetrieve":{"properties":{"firebase_user_id":{"type":"string","title":"Firebase User Id"},"first_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Name"},"last_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Name"},"birthday":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Birthday"},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country"},"state":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City"},"postal_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Postal Code"},"street_address_1":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Street Address 1"},"street_address_2":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Street Address 2"},"email":{"anyOf":[{"type":"string","format":"email"},{"type":"string","const":""},{"type":"null"}],"title":"Email"},"phone_num":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone Num"},"image_url":{"anyOf":[{"type":"string","minLength":1,"format":"uri"},{"type":"null"}],"title":"Image Url"},"selected_hub_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Selected Hub Id"},"is_migrated":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Migrated","default":false},"profile_complete":{"type":"boolean","title":"Profile Complete","default":false},"geojson_location":{"anyOf":[{"$ref":"#/components/schemas/GeoJsonLocation"},{"type":"null"}]},"id":{"type":"integer","title":"Id"},"current_order_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Current Order Id"},"loyalty_points":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Loyalty Points","default":0},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"selected_hub":{"anyOf":[{"$ref":"#/components/schemas/HubUserCurrentResponse"},{"type":"null"}]}},"type":"object","required":["firebase_user_id","id","created_at","updated_at"],"title":"UserDataRetrieve"},"UserExists":{"properties":{"exists":{"type":"boolean","title":"Exists"},"firebase_user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Firebase User Id"}},"type":"object","required":["exists"],"title":"UserExists"},"UserFCMConfigCreateSchema":{"properties":{"fcm_token":{"type":"string","title":"Fcm Token"},"device_id":{"type":"string","title":"Device Id"},"device_type":{"$ref":"#/components/schemas/DeviceTypeEnum"}},"type":"object","required":["fcm_token","device_id","device_type"],"title":"UserFCMConfigCreateSchema"},"UserFirebaseIdUpdate":{"properties":{"phone_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone Number"},"email":{"anyOf":[{"type":"string","format":"email"},{"type":"null"}],"title":"Email"},"firebase_user_id":{"type":"string","title":"Firebase User Id"}},"type":"object","required":["firebase_user_id"],"title":"UserFirebaseIdUpdate"},"UserProfileImage":{"properties":{"url":{"type":"string","title":"Url"}},"type":"object","required":["url"],"title":"UserProfileImage"},"UserProfileMeResponse":{"properties":{"id":{"type":"integer","title":"Id"},"firebase_user_id":{"type":"string","title":"Firebase User Id"},"first_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Name"},"last_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Name"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"},"profile_complete":{"type":"boolean","title":"Profile Complete"}},"type":"object","required":["id","firebase_user_id","profile_complete"],"title":"UserProfileMeResponse","description":"Response for PATCH /user/me/profile — null-safe during progressive signup."},"UserProfilePatch":{"properties":{"first_name":{"type":"string","minLength":1,"title":"First Name"},"last_name":{"type":"string","minLength":1,"title":"Last Name"},"email":{"anyOf":[{"type":"string","format":"email"},{"type":"null"}],"title":"Email"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"}},"type":"object","required":["first_name","last_name"],"title":"UserProfilePatch","description":"Body for PATCH /users/me/profile — supplies fields currently null on the user row."},"UserProfileRetrieve":{"properties":{"firebase_user_id":{"type":"string","title":"Firebase User Id"},"first_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Name"},"last_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Name"},"birthday":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Birthday"},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country"},"state":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City"},"postal_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Postal Code"},"street_address_1":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Street Address 1"},"street_address_2":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Street Address 2"},"email":{"anyOf":[{"type":"string","format":"email"},{"type":"string","const":""},{"type":"null"}],"title":"Email"},"phone_num":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone Num"},"image_url":{"anyOf":[{"type":"string","minLength":1,"format":"uri"},{"type":"null"}],"title":"Image Url"},"selected_hub_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Selected Hub Id"},"is_migrated":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Migrated","default":false},"profile_complete":{"type":"boolean","title":"Profile Complete","default":false},"geojson_location":{"anyOf":[{"$ref":"#/components/schemas/GeoJsonLocation"},{"type":"null"}]},"id":{"type":"integer","title":"Id"},"loyalty_points":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Loyalty Points","default":0},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["firebase_user_id","id","created_at","updated_at"],"title":"UserProfileRetrieve"},"UserProfileUpdate":{"properties":{"first_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Name"},"last_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Name"},"birthday":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Birthday"},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country"},"state":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City"},"postal_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Postal Code"},"street_address_1":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Street Address 1"},"street_address_2":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Street Address 2"},"email":{"anyOf":[{"type":"string","format":"email"},{"type":"null"}],"title":"Email"},"phone_num":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone Num"},"is_migrated":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Migrated"}},"type":"object","title":"UserProfileUpdate"},"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"},"WalletBalanceResponse":{"properties":{"user_id":{"type":"integer","title":"User Id"},"balance":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Balance"},"last_transaction_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Transaction At"}},"type":"object","required":["user_id","balance"],"title":"WalletBalanceResponse","description":"Schema for wallet balance response"},"WalletDebitRequest":{"properties":{"order_id":{"type":"integer","title":"Order Id"},"amount":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d{0,2}0*$"}],"title":"Amount","description":"Amount to debit from wallet (original amount, deals will be calculated server-side)"},"description":{"type":"string","title":"Description"},"deal_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Deal Id"},"deal_ids":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Deal Ids"},"venbucks_to_redeem":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Venbucks To Redeem"}},"type":"object","required":["order_id","amount","description"],"title":"WalletDebitRequest","description":"Schema for wallet payment request - debits wallet and sends order to VenSmart"},"WalletDepositRequest":{"properties":{"amount":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d{0,2}0*$"}],"title":"Amount","description":"Amount to deposit in dollars"},"payment_method_id":{"type":"string","title":"Payment Method Id","description":"Stripe payment method ID"}},"type":"object","required":["amount","payment_method_id"],"title":"WalletDepositRequest","description":"Schema for deposit request"},"WalletDepositResponse":{"properties":{"client_secret":{"type":"string","title":"Client Secret"},"payment_intent_id":{"type":"string","title":"Payment Intent Id"}},"type":"object","required":["client_secret","payment_intent_id"],"title":"WalletDepositResponse","description":"Schema for deposit response"},"WalletTransactionResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"user_id":{"type":"integer","title":"User Id"},"amount":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Amount"},"transaction_type":{"type":"string","enum":["DEPOSIT","PURCHASE","REFUND","ADJUSTMENT","BONUS"],"title":"Transaction Type"},"balance_after":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Balance After"},"stripe_payment_intent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stripe Payment Intent Id"},"order_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Order Id"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"transaction_metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Transaction Metadata"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"created_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created By"},"idempotency_key":{"type":"string","title":"Idempotency Key"}},"type":"object","required":["id","user_id","amount","transaction_type","balance_after","created_at","idempotency_key"],"title":"WalletTransactionResponse","description":"Schema for wallet transaction response. Amounts are in dollars."},"ZendeskWebhookRequest":{"properties":{"id":{"type":"string","title":"Id"},"account_id":{"type":"integer","title":"Account Id"},"type":{"type":"string","title":"Type"},"time":{"type":"string","title":"Time"},"zendesk_event_version":{"type":"string","title":"Zendesk Event Version"},"subject":{"type":"string","title":"Subject"},"detail":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Detail","default":{}},"event":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Event","default":{}}},"type":"object","required":["id","account_id","type","time","zendesk_event_version","subject"],"title":"ZendeskWebhookRequest"}}}}