{"openapi":"3.1.0","info":{"title":"D MALL ONLINE API · Dinesh AI Academy","summary":"India's everything-app backend: travel, banking, shopping, inventory and healthcare.","description":"Realistic, fully simulated backend for **D MALL ONLINE**, a **Dinesh AI Academy** product built for AI agent and tool-calling demonstrations. Every operation has a stable, human-readable `operationId`.\n\n| Module | What you can do |\n|---|---|\n| **Travel** | Search and book flights, trains, buses and hotels; cancel with refunds |\n| **Bank** | Balances, statements, spending insights, transfers, payees, cards, loans |\n| **Shop** | Catalogue search, cart, checkout, orders, tracking, cancellations and returns |\n| **Inventory** | Warehouse stock, low-stock alerts, adjustments, transfers, purchase orders |\n| **Healthcare** | Find doctors, check availability, book, reschedule and cancel appointments |\n\nDemo customer: `dinesh.kumar@mahabazaar.in`. All data is synthetic.\n\n### Authentication\n\nEvery request needs your personal API key from **Account → API keys**:\n\n```\nAuthorization: Bearer mbz_xxxxxxxxxxxxxxxx_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n```\n\nEach key works only on **your own sandbox**: a private copy of all D MALL ONLINE data that no other user can see or change. Keys are rate limited per minute; responses include `X-RateLimit-Limit`, `X-RateLimit-Remaining` and `X-RateLimit-Reset`.","contact":{"name":"Dinesh AI Academy · D MALL ONLINE Engineering"},"version":"2.0.0"},"paths":{"/api/v1/customers":{"get":{"tags":["Customers"],"summary":"List customers","operationId":"list_customers","parameters":[{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Search name or email","title":"Q"},"description":"Search name or email"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"description":"Page size","default":50,"title":"Limit"},"description":"Page size"},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Items to skip","default":0,"title":"Offset"},"description":"Items to skip"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_CustomerOut_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Customers"],"summary":"Create a customer","operationId":"create_customer","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/customers/by-email":{"get":{"tags":["Customers"],"summary":"Look up a customer by email","operationId":"get_customer_by_email","parameters":[{"name":"email","in":"query","required":true,"schema":{"type":"string","title":"Email"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/customers/{customer_id}":{"get":{"tags":["Customers"],"summary":"Get a customer","operationId":"get_customer","parameters":[{"name":"customer_id","in":"path","required":true,"schema":{"type":"integer","title":"Customer Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Customers"],"summary":"Update a customer","operationId":"update_customer","parameters":[{"name":"customer_id","in":"path","required":true,"schema":{"type":"integer","title":"Customer Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Customers"],"summary":"Delete a customer","operationId":"delete_customer","parameters":[{"name":"customer_id","in":"path","required":true,"schema":{"type":"integer","title":"Customer Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/bank/branches":{"get":{"tags":["Bank"],"summary":"List bank branches","description":"All D MALL ONLINE Bank branches with IFSC codes, optionally filtered by city.","operationId":"list_bank_branches","parameters":[{"name":"city","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/BranchOut"},"title":"Response List Bank Branches"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/bank/accounts":{"get":{"tags":["Bank"],"summary":"List a customer's bank accounts","description":"Every account (savings, salary, current) held by the customer, with live balances.","operationId":"list_bank_accounts","parameters":[{"name":"customer_email","in":"query","required":true,"schema":{"type":"string","examples":["dinesh.kumar@mahabazaar.in"],"title":"Customer Email"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AccountOut"},"title":"Response List Bank Accounts"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Bank"],"summary":"Open a bank account","operationId":"open_bank_account","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OpenAccountIn"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/bank/accounts/{account_number}":{"get":{"tags":["Bank"],"summary":"Get account details","operationId":"get_bank_account","parameters":[{"name":"account_number","in":"path","required":true,"schema":{"type":"string","title":"Account Number"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/bank/accounts/{account_number}/balance":{"get":{"tags":["Bank"],"summary":"Get account balance","description":"Ledger and available balance (available includes any overdraft limit).","operationId":"get_account_balance","parameters":[{"name":"account_number","in":"path","required":true,"schema":{"type":"string","title":"Account Number"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BalanceOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/bank/accounts/{account_number}/transactions":{"get":{"tags":["Bank"],"summary":"Get account statement","description":"Transactions newest first, with filters for date range, type, category, channel, amount and free text.","operationId":"list_account_transactions","parameters":[{"name":"account_number","in":"path","required":true,"schema":{"type":"string","title":"Account Number"}},{"name":"from_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"From Date"}},{"name":"to_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"To Date"}},{"name":"txn_type","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/TxnType"},{"type":"null"}],"description":"CREDIT or DEBIT","title":"Txn Type"},"description":"CREDIT or DEBIT"},{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"examples":["Food & Dining"],"title":"Category"}},{"name":"channel","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"examples":["UPI"],"title":"Channel"}},{"name":"min_amount","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min Amount"}},{"name":"max_amount","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Amount"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Search counterparty or description","title":"Q"},"description":"Search counterparty or description"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"description":"Page size","default":50,"title":"Limit"},"description":"Page size"},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Items to skip","default":0,"title":"Offset"},"description":"Items to skip"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_TransactionOut_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/bank/accounts/{account_number}/spending-summary":{"get":{"tags":["Bank"],"summary":"Spending by category","description":"Totals spent and received over the last N days, broken down by category.","operationId":"get_spending_summary","parameters":[{"name":"account_number","in":"path","required":true,"schema":{"type":"string","title":"Account Number"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":365,"minimum":1,"default":30,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpendingSummary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/bank/accounts/{account_number}/deposit":{"post":{"tags":["Bank"],"summary":"Deposit money","operationId":"deposit_money","parameters":[{"name":"account_number","in":"path","required":true,"schema":{"type":"string","title":"Account Number"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CashIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransactionOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/bank/accounts/{account_number}/withdraw":{"post":{"tags":["Bank"],"summary":"Withdraw money","description":"Debit cash (ATM/branch). Fails with 409 if funds are insufficient.","operationId":"withdraw_money","parameters":[{"name":"account_number","in":"path","required":true,"schema":{"type":"string","title":"Account Number"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CashIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransactionOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/bank/transfers":{"post":{"tags":["Bank"],"summary":"Transfer funds","description":"Send money to another D MALL ONLINE Bank account (`to_account`) or a saved beneficiary (`beneficiary_id`).\nLimits: UPI ₹1L, IMPS ₹5L, NEFT ₹25L; RTGS minimum ₹2L.","operationId":"transfer_funds","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransferIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransferOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/bank/beneficiaries":{"get":{"tags":["Bank"],"summary":"List saved payees","operationId":"list_beneficiaries","parameters":[{"name":"customer_email","in":"query","required":true,"schema":{"type":"string","title":"Customer Email"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/BeneficiaryOut"},"title":"Response List Beneficiaries"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Bank"],"summary":"Add a payee","operationId":"add_beneficiary","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BeneficiaryIn"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BeneficiaryOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/bank/beneficiaries/{beneficiary_id}":{"delete":{"tags":["Bank"],"summary":"Remove a payee","operationId":"delete_beneficiary","parameters":[{"name":"beneficiary_id","in":"path","required":true,"schema":{"type":"integer","title":"Beneficiary Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/bank/cards":{"get":{"tags":["Bank"],"summary":"List debit and credit cards","operationId":"list_cards","parameters":[{"name":"customer_email","in":"query","required":true,"schema":{"type":"string","title":"Customer Email"}},{"name":"card_type","in":"query","required":false,"schema":{"anyOf":[{"enum":["DEBIT","CREDIT"],"type":"string"},{"type":"null"}],"title":"Card Type"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CardOut"},"title":"Response List Cards"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/bank/cards/{card_id}/block":{"post":{"tags":["Bank"],"summary":"Block a card","description":"Temporarily block a lost or compromised card.","operationId":"block_card","parameters":[{"name":"card_id","in":"path","required":true,"schema":{"type":"integer","title":"Card Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CardOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/bank/cards/{card_id}/unblock":{"post":{"tags":["Bank"],"summary":"Unblock a card","operationId":"unblock_card","parameters":[{"name":"card_id","in":"path","required":true,"schema":{"type":"integer","title":"Card Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CardOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/bank/loans":{"get":{"tags":["Bank"],"summary":"List a customer's loans","operationId":"list_loans","parameters":[{"name":"customer_email","in":"query","required":true,"schema":{"type":"string","title":"Customer Email"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/LoanOut"},"title":"Response List Loans"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/bank/loans/{loan_number}":{"get":{"tags":["Bank"],"summary":"Get loan details","operationId":"get_loan","parameters":[{"name":"loan_number","in":"path","required":true,"schema":{"type":"string","title":"Loan Number"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoanOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/bank/customers/summary":{"get":{"tags":["Bank"],"summary":"Customer's financial overview","description":"One-call snapshot: balances across accounts, credit card dues, loans, EMIs and net position.","operationId":"get_customer_bank_summary","parameters":[{"name":"customer_email","in":"query","required":true,"schema":{"type":"string","examples":["dinesh.kumar@mahabazaar.in"],"title":"Customer Email"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerBankSummary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/shop/categories":{"get":{"tags":["Shop"],"summary":"List product categories","operationId":"list_product_categories","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/CategoryOut"},"type":"array","title":"Response List Product Categories"}}}}}}},"/api/v1/shop/brands":{"get":{"tags":["Shop"],"summary":"List brands","operationId":"list_brands","parameters":[{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Category slug","title":"Category"},"description":"Category slug"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"string"},"title":"Response List Brands"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/shop/products":{"get":{"tags":["Shop"],"summary":"Search products","description":"Catalogue search with filters. `in_stock` limits results to products with units in any warehouse.","operationId":"search_products","parameters":[{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Free text over name, brand and tags","examples":["headphones"],"title":"Q"},"description":"Free text over name, brand and tags"},{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Category slug, e.g. mobiles","title":"Category"},"description":"Category slug, e.g. mobiles"},{"name":"brands","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Brands"}},{"name":"min_price","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min Price"}},{"name":"max_price","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Price"}},{"name":"min_rating","in":"query","required":false,"schema":{"type":"number","maximum":5,"minimum":0,"default":0,"title":"Min Rating"}},{"name":"in_stock","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"In Stock"}},{"name":"sort_by","in":"query","required":false,"schema":{"enum":["relevance","price_low","price_high","rating","discount","newest"],"type":"string","default":"relevance","title":"Sort By"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"description":"Page size","default":24,"title":"Limit"},"description":"Page size"},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Items to skip","default":0,"title":"Offset"},"description":"Items to skip"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_ProductOut_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Shop"],"summary":"Create a product","operationId":"create_product","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/shop/products/{product_ref}":{"get":{"tags":["Shop"],"summary":"Get a product by id or SKU","operationId":"get_product","parameters":[{"name":"product_ref","in":"path","required":true,"schema":{"type":"string","title":"Product Ref"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/shop/products/{product_id}":{"patch":{"tags":["Shop"],"summary":"Update a product","operationId":"update_product","parameters":[{"name":"product_id","in":"path","required":true,"schema":{"type":"integer","title":"Product Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/shop/coupons":{"get":{"tags":["Shop"],"summary":"List active coupons","operationId":"list_coupons","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/CouponOut"},"type":"array","title":"Response List Coupons"}}}}}}},"/api/v1/shop/cart":{"get":{"tags":["Shop"],"summary":"View cart","operationId":"get_cart","parameters":[{"name":"customer_email","in":"query","required":true,"schema":{"type":"string","examples":["dinesh.kumar@mahabazaar.in"],"title":"Customer Email"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CartOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/shop/cart/items":{"put":{"tags":["Shop"],"summary":"Add, update or remove a cart item","description":"Set the quantity of a product in the cart (0 removes it).","operationId":"set_cart_item","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CartItemIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CartOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/shop/cart/checkout":{"post":{"tags":["Shop"],"summary":"Checkout cart","description":"Place an order for everything in the cart, then empty it.","operationId":"checkout_cart","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutIn"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrderOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/shop/orders":{"post":{"tags":["Shop"],"summary":"Place an order","description":"Buy specific products directly. Stock is allocated from one warehouse, preferring the shipping city.","operationId":"place_order","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrderCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrderOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Shop"],"summary":"List orders","operationId":"list_orders","parameters":[{"name":"customer_email","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Customer Email"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"examples":["SHIPPED"],"title":"Status"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"description":"Page size","default":20,"title":"Limit"},"description":"Page size"},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Items to skip","default":0,"title":"Offset"},"description":"Items to skip"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_OrderOut_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/shop/orders/{order_number}":{"get":{"tags":["Shop"],"summary":"Get / track an order","description":"Full order detail including tracking history.","operationId":"get_order","parameters":[{"name":"order_number","in":"path","required":true,"schema":{"type":"string","title":"Order Number"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrderOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/shop/orders/{order_number}/cancel":{"post":{"tags":["Shop"],"summary":"Cancel an order","description":"Allowed before shipping. Restocks items and refunds prepaid orders.","operationId":"cancel_order","parameters":[{"name":"order_number","in":"path","required":true,"schema":{"type":"string","title":"Order Number"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/ReasonIn"},{"type":"null"}],"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrderOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/shop/orders/{order_number}/return":{"post":{"tags":["Shop"],"summary":"Return an order","description":"Allowed within 10 days of delivery.","operationId":"return_order","parameters":[{"name":"order_number","in":"path","required":true,"schema":{"type":"string","title":"Order Number"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/ReasonIn"},{"type":"null"}],"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrderOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/shop/orders/{order_number}/advance":{"post":{"tags":["Shop"],"summary":"Advance fulfilment status","description":"Operations tool: move PLACED → PACKED → SHIPPED → OUT_FOR_DELIVERY → DELIVERED.","operationId":"advance_order_status","parameters":[{"name":"order_number","in":"path","required":true,"schema":{"type":"string","title":"Order Number"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrderOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/inventory/warehouses":{"get":{"tags":["Inventory"],"summary":"List warehouses","operationId":"list_warehouses","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/WarehouseOut"},"type":"array","title":"Response List Warehouses"}}}}}}},"/api/v1/inventory/summary":{"get":{"tags":["Inventory"],"summary":"Stock summary per warehouse","description":"SKU count, units on hand, stock value at cost, low-stock lines and utilisation for each warehouse.","operationId":"get_inventory_summary","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/WarehouseSummary"},"type":"array","title":"Response Get Inventory Summary"}}}}}}},"/api/v1/inventory/stock":{"get":{"tags":["Inventory"],"summary":"Query stock levels","operationId":"list_stock_levels","parameters":[{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Search product name, brand or SKU","title":"Q"},"description":"Search product name, brand or SKU"},{"name":"warehouse_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Warehouse Code"}},{"name":"product_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Product Id"}},{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Category slug","title":"Category"},"description":"Category slug"},{"name":"low_only","in":"query","required":false,"schema":{"type":"boolean","description":"Only lines at or below reorder level","default":false,"title":"Low Only"},"description":"Only lines at or below reorder level"},{"name":"sort_by","in":"query","required":false,"schema":{"enum":["quantity","value","name"],"type":"string","default":"quantity","title":"Sort By"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"description":"Page size","default":50,"title":"Limit"},"description":"Page size"},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Items to skip","default":0,"title":"Offset"},"description":"Items to skip"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_StockLevelOut_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/inventory/low-stock":{"get":{"tags":["Inventory"],"summary":"Low-stock alerts","description":"Lines at or below their reorder level. These are candidates for a purchase order.","operationId":"list_low_stock","parameters":[{"name":"warehouse_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Warehouse Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/StockLevelOut"},"title":"Response List Low Stock"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/inventory/adjust":{"post":{"tags":["Inventory"],"summary":"Adjust stock","description":"Manual correction (cycle count, damage, shrinkage). Recorded as an ADJUSTMENT movement.","operationId":"adjust_stock","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdjustIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StockLevelOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/inventory/transfer":{"post":{"tags":["Inventory"],"summary":"Transfer stock between warehouses","operationId":"transfer_stock","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransferStockIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/inventory/movements":{"get":{"tags":["Inventory"],"summary":"Stock movement ledger","operationId":"list_stock_movements","parameters":[{"name":"product_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Product Id"}},{"name":"warehouse_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Warehouse Code"}},{"name":"movement_type","in":"query","required":false,"schema":{"anyOf":[{"enum":["RECEIPT","SALE","RETURN","ADJUSTMENT","TRANSFER_IN","TRANSFER_OUT"],"type":"string"},{"type":"null"}],"title":"Movement Type"}},{"name":"reference","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Order number, PO number or transfer ref","title":"Reference"},"description":"Order number, PO number or transfer ref"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"description":"Page size","default":50,"title":"Limit"},"description":"Page size"},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Items to skip","default":0,"title":"Offset"},"description":"Items to skip"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_MovementOut_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/inventory/suppliers":{"get":{"tags":["Inventory"],"summary":"List suppliers","operationId":"list_suppliers","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/SupplierOut"},"type":"array","title":"Response List Suppliers"}}}}}}},"/api/v1/inventory/purchase-orders":{"get":{"tags":["Inventory"],"summary":"List purchase orders","operationId":"list_purchase_orders","parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"enum":["ORDERED","RECEIVED","CANCELLED"],"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"warehouse_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Warehouse Code"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"description":"Page size","default":50,"title":"Limit"},"description":"Page size"},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Items to skip","default":0,"title":"Offset"},"description":"Items to skip"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_PurchaseOrderOut_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Inventory"],"summary":"Raise a purchase order","description":"Order stock from the product's supplier. The expected date follows the supplier's lead time.","operationId":"create_purchase_order","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PurchaseOrderIn"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PurchaseOrderOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/inventory/purchase-orders/{po_number}/receive":{"post":{"tags":["Inventory"],"summary":"Receive a purchase order","description":"Mark goods received. Adds stock and records a RECEIPT movement.","operationId":"receive_purchase_order","parameters":[{"name":"po_number","in":"path","required":true,"schema":{"type":"string","title":"Po Number"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PurchaseOrderOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/inventory/purchase-orders/{po_number}/cancel":{"post":{"tags":["Inventory"],"summary":"Cancel a purchase order","operationId":"cancel_purchase_order","parameters":[{"name":"po_number","in":"path","required":true,"schema":{"type":"string","title":"Po Number"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PurchaseOrderOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/healthcare/specializations":{"get":{"tags":["Healthcare"],"summary":"List specialities","description":"Specialities with doctor counts and fee range, optionally within a city.","operationId":"list_specializations","parameters":[{"name":"city","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response List Specializations"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/healthcare/hospitals":{"get":{"tags":["Healthcare"],"summary":"List hospitals and clinics","operationId":"list_hospitals","parameters":[{"name":"city","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/HospitalOut"},"title":"Response List Hospitals"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/healthcare/doctors":{"get":{"tags":["Healthcare"],"summary":"Find doctors","operationId":"search_doctors","parameters":[{"name":"city","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"examples":["Lucknow"],"title":"City"}},{"name":"specialization","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"examples":["Cardiologist"],"title":"Specialization"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Doctor or hospital name","title":"Q"},"description":"Doctor or hospital name"},{"name":"gender","in":"query","required":false,"schema":{"anyOf":[{"enum":["Male","Female"],"type":"string"},{"type":"null"}],"title":"Gender"}},{"name":"max_fee","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Fee"}},{"name":"video_consult","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Only doctors offering video consultations","title":"Video Consult"},"description":"Only doctors offering video consultations"},{"name":"available_on","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"description":"Has at least one free slot on this date","title":"Available On"},"description":"Has at least one free slot on this date"},{"name":"min_rating","in":"query","required":false,"schema":{"type":"number","maximum":5,"minimum":0,"default":0,"title":"Min Rating"}},{"name":"sort_by","in":"query","required":false,"schema":{"enum":["rating","experience","fee_low","fee_high"],"type":"string","default":"rating","title":"Sort By"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"description":"Page size","default":20,"title":"Limit"},"description":"Page size"},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Items to skip","default":0,"title":"Offset"},"description":"Items to skip"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_DoctorOut_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/healthcare/doctors/{doctor_id}":{"get":{"tags":["Healthcare"],"summary":"Get doctor profile","operationId":"get_doctor","parameters":[{"name":"doctor_id","in":"path","required":true,"schema":{"type":"integer","title":"Doctor Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DoctorOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/healthcare/doctors/{doctor_id}/availability":{"get":{"tags":["Healthcare"],"summary":"Get free appointment slots","description":"Free slots grouped by date. Book one with POST /healthcare/appointments using its slot id.","operationId":"get_doctor_availability","parameters":[{"name":"doctor_id","in":"path","required":true,"schema":{"type":"integer","title":"Doctor Id"}},{"name":"start_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Start Date"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":14,"minimum":1,"default":7,"title":"Days"}},{"name":"mode","in":"query","required":false,"schema":{"anyOf":[{"enum":["IN_PERSON","VIDEO"],"type":"string"},{"type":"null"}],"title":"Mode"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AvailabilityOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/healthcare/appointments":{"post":{"tags":["Healthcare"],"summary":"Book an appointment","description":"Reserve a free slot for a patient. The fee depends on the slot mode (in-person or video).","operationId":"book_appointment","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppointmentCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppointmentOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Healthcare"],"summary":"List appointments","operationId":"list_appointments","parameters":[{"name":"customer_email","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Customer Email"}},{"name":"doctor_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Doctor Id"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"enum":["CONFIRMED","COMPLETED","CANCELLED","NO_SHOW"],"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"upcoming_only","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Upcoming Only"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"description":"Page size","default":50,"title":"Limit"},"description":"Page size"},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Items to skip","default":0,"title":"Offset"},"description":"Items to skip"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_AppointmentOut_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/healthcare/appointments/{appointment_ref}":{"get":{"tags":["Healthcare"],"summary":"Get an appointment","operationId":"get_appointment","parameters":[{"name":"appointment_ref","in":"path","required":true,"schema":{"type":"string","title":"Appointment Ref"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppointmentOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/healthcare/appointments/{appointment_ref}/cancel":{"post":{"tags":["Healthcare"],"summary":"Cancel an appointment","description":"Frees the slot. Full refund if cancelled 4+ hours before the visit, otherwise 50%.","operationId":"cancel_appointment","parameters":[{"name":"appointment_ref","in":"path","required":true,"schema":{"type":"string","title":"Appointment Ref"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CancelAppointmentOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/healthcare/appointments/{appointment_ref}/reschedule":{"post":{"tags":["Healthcare"],"summary":"Reschedule an appointment","description":"Move to another free slot with the same doctor.","operationId":"reschedule_appointment","parameters":[{"name":"appointment_ref","in":"path","required":true,"schema":{"type":"string","title":"Appointment Ref"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RescheduleIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppointmentOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/flights/airports":{"get":{"tags":["Flights"],"summary":"List airports","operationId":"list_airports","parameters":[{"name":"country","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AirportOut"},"title":"Response List Airports"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/flights/airlines":{"get":{"tags":["Flights"],"summary":"List airlines","operationId":"list_airlines","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/AirlineOut"},"type":"array","title":"Response List Airlines"}}}}}}},"/api/v1/flights":{"get":{"tags":["Flights"],"summary":"Search flights","description":"Find flights with seats available in the requested cabin, priced per traveller.","operationId":"search_flights","parameters":[{"name":"origin","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":3,"maxLength":3},{"type":"null"}],"examples":["DEL"],"title":"Origin"}},{"name":"destination","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":3,"maxLength":3},{"type":"null"}],"examples":["BOM"],"title":"Destination"}},{"name":"date","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Date"}},{"name":"cabin_class","in":"query","required":false,"schema":{"$ref":"#/components/schemas/CabinClass","default":"ECONOMY"}},{"name":"passengers","in":"query","required":false,"schema":{"type":"integer","maximum":9,"minimum":1,"default":1,"title":"Passengers"}},{"name":"airlines","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"description":"Airline codes, e.g. 6E, AI","title":"Airlines"},"description":"Airline codes, e.g. 6E, AI"},{"name":"max_stops","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":2,"minimum":0},{"type":"null"}],"title":"Max Stops"}},{"name":"max_price","in":"query","required":false,"schema":{"anyOf":[{"type":"number","exclusiveMinimum":0},{"type":"null"}],"description":"Max fare per traveller","title":"Max Price"},"description":"Max fare per traveller"},{"name":"depart_after","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":23,"minimum":0},{"type":"null"}],"description":"Earliest departure hour","title":"Depart After"},"description":"Earliest departure hour"},{"name":"depart_before","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":24,"minimum":1},{"type":"null"}],"description":"Latest departure hour","title":"Depart Before"},"description":"Latest departure hour"},{"name":"sort_by","in":"query","required":false,"schema":{"enum":["price","departure","duration","rating"],"type":"string","default":"price","title":"Sort By"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"description":"Page size","default":50,"title":"Limit"},"description":"Page size"},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Items to skip","default":0,"title":"Offset"},"description":"Items to skip"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_FlightOut_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Flights"],"summary":"Create a flight","operationId":"create_flight","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FlightCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FlightOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/flights/fare-calendar":{"get":{"tags":["Flights"],"summary":"Lowest fare per day","operationId":"get_fare_calendar","parameters":[{"name":"origin","in":"query","required":true,"schema":{"type":"string","minLength":3,"maxLength":3,"title":"Origin"}},{"name":"destination","in":"query","required":true,"schema":{"type":"string","minLength":3,"maxLength":3,"title":"Destination"}},{"name":"cabin_class","in":"query","required":false,"schema":{"$ref":"#/components/schemas/CabinClass","default":"ECONOMY"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":60,"minimum":1,"default":30,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/FareCalendarDay"},"title":"Response Get Fare Calendar"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/flights/{flight_id}":{"get":{"tags":["Flights"],"summary":"Get a flight","operationId":"get_flight","parameters":[{"name":"flight_id","in":"path","required":true,"schema":{"type":"integer","title":"Flight Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FlightOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Flights"],"summary":"Update a flight","operationId":"update_flight","parameters":[{"name":"flight_id","in":"path","required":true,"schema":{"type":"integer","title":"Flight Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FlightUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FlightOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Flights"],"summary":"Delete a flight","operationId":"delete_flight","parameters":[{"name":"flight_id","in":"path","required":true,"schema":{"type":"integer","title":"Flight Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/flights/{flight_id}/cabins/{cabin_id}":{"patch":{"tags":["Flights"],"summary":"Update cabin fare / inventory","operationId":"update_flight_cabin","parameters":[{"name":"flight_id","in":"path","required":true,"schema":{"type":"integer","title":"Flight Id"}},{"name":"cabin_id","in":"path","required":true,"schema":{"type":"integer","title":"Cabin Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FlightCabinUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FlightCabinOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/trains/stations":{"get":{"tags":["Trains"],"summary":"List railway stations","operationId":"list_train_stations","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/StationOut"},"type":"array","title":"Response List Train Stations"}}}}}}},"/api/v1/trains/types":{"get":{"tags":["Trains"],"summary":"List train types","operationId":"list_train_types","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"type":"string"},"type":"array","title":"Response List Train Types"}}}}}}},"/api/v1/trains":{"get":{"tags":["Trains"],"summary":"Search trains","operationId":"search_trains","parameters":[{"name":"origin","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"examples":["NDLS"],"title":"Origin"}},{"name":"destination","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"examples":["HWH"],"title":"Destination"}},{"name":"date","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Date"}},{"name":"class_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"SL, 3E, 3A, 2A, 1A, CC or EC","title":"Class Code"},"description":"SL, 3E, 3A, 2A, 1A, CC or EC"},{"name":"passengers","in":"query","required":false,"schema":{"type":"integer","maximum":6,"minimum":1,"default":1,"title":"Passengers"}},{"name":"train_types","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Train Types"}},{"name":"depart_after","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":23,"minimum":0},{"type":"null"}],"title":"Depart After"}},{"name":"depart_before","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":24,"minimum":1},{"type":"null"}],"title":"Depart Before"}},{"name":"sort_by","in":"query","required":false,"schema":{"enum":["departure","duration","price","rating"],"type":"string","default":"departure","title":"Sort By"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"description":"Page size","default":50,"title":"Limit"},"description":"Page size"},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Items to skip","default":0,"title":"Offset"},"description":"Items to skip"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_TrainOut_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Trains"],"summary":"Create a train run","operationId":"create_train","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrainCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrainOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/trains/{train_id}":{"get":{"tags":["Trains"],"summary":"Get a train run","operationId":"get_train","parameters":[{"name":"train_id","in":"path","required":true,"schema":{"type":"integer","title":"Train Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrainOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Trains"],"summary":"Update a train run","operationId":"update_train","parameters":[{"name":"train_id","in":"path","required":true,"schema":{"type":"integer","title":"Train Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrainUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrainOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Trains"],"summary":"Delete a train run","operationId":"delete_train","parameters":[{"name":"train_id","in":"path","required":true,"schema":{"type":"integer","title":"Train Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/buses/cities":{"get":{"tags":["Buses"],"summary":"List cities served by bus","operationId":"list_bus_cities","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"type":"string"},"type":"array","title":"Response List Bus Cities"}}}}}}},"/api/v1/buses/operators":{"get":{"tags":["Buses"],"summary":"List bus operators","operationId":"list_operators","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/BusOperatorOut"},"type":"array","title":"Response List Operators"}}}}}}},"/api/v1/buses":{"get":{"tags":["Buses"],"summary":"Search buses","operationId":"search_buses","parameters":[{"name":"origin","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"examples":["Bengaluru"],"title":"Origin"}},{"name":"destination","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"examples":["Chennai"],"title":"Destination"}},{"name":"date","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Date"}},{"name":"passengers","in":"query","required":false,"schema":{"type":"integer","maximum":6,"minimum":1,"default":1,"title":"Passengers"}},{"name":"ac","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Ac"}},{"name":"sleeper","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Sleeper"}},{"name":"operator_ids","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"integer"}},{"type":"null"}],"title":"Operator Ids"}},{"name":"max_price","in":"query","required":false,"schema":{"anyOf":[{"type":"number","exclusiveMinimum":0},{"type":"null"}],"title":"Max Price"}},{"name":"depart_after","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":23,"minimum":0},{"type":"null"}],"title":"Depart After"}},{"name":"depart_before","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":24,"minimum":1},{"type":"null"}],"title":"Depart Before"}},{"name":"sort_by","in":"query","required":false,"schema":{"enum":["departure","price","duration","rating","seats"],"type":"string","default":"departure","title":"Sort By"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"description":"Page size","default":50,"title":"Limit"},"description":"Page size"},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Items to skip","default":0,"title":"Offset"},"description":"Items to skip"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_BusOut_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Buses"],"summary":"Create a bus departure","operationId":"create_bus","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BusCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BusOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/buses/{bus_id}":{"get":{"tags":["Buses"],"summary":"Get a bus","operationId":"get_bus","parameters":[{"name":"bus_id","in":"path","required":true,"schema":{"type":"integer","title":"Bus Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BusOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Buses"],"summary":"Update a bus departure","operationId":"update_bus","parameters":[{"name":"bus_id","in":"path","required":true,"schema":{"type":"integer","title":"Bus Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BusUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BusOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Buses"],"summary":"Delete a bus departure","operationId":"delete_bus","parameters":[{"name":"bus_id","in":"path","required":true,"schema":{"type":"integer","title":"Bus Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/hotels/cities":{"get":{"tags":["Hotels"],"summary":"Destinations with hotel counts","operationId":"list_hotel_destinations","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/CityOut"},"type":"array","title":"Response List Hotel Destinations"}}}}}}},"/api/v1/hotels":{"get":{"tags":["Hotels"],"summary":"Search hotels","description":"Hotels with at least one room type that fits the party. `starting_price` reflects matching rooms only.","operationId":"search_hotels","parameters":[{"name":"city","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"examples":["Goa"],"title":"City"}},{"name":"check_in","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Check In"}},{"name":"check_out","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Check Out"}},{"name":"guests","in":"query","required":false,"schema":{"type":"integer","maximum":20,"minimum":1,"default":2,"title":"Guests"}},{"name":"rooms","in":"query","required":false,"schema":{"type":"integer","maximum":5,"minimum":1,"default":1,"title":"Rooms"}},{"name":"min_stars","in":"query","required":false,"schema":{"type":"integer","maximum":5,"minimum":1,"default":1,"title":"Min Stars"}},{"name":"min_rating","in":"query","required":false,"schema":{"type":"number","maximum":5,"minimum":0,"default":0,"title":"Min Rating"}},{"name":"max_price","in":"query","required":false,"schema":{"anyOf":[{"type":"number","exclusiveMinimum":0},{"type":"null"}],"description":"Max nightly rate","title":"Max Price"},"description":"Max nightly rate"},{"name":"property_types","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Property Types"}},{"name":"amenities","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"description":"All listed amenities must be present","title":"Amenities"},"description":"All listed amenities must be present"},{"name":"free_cancellation","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Free Cancellation"}},{"name":"sort_by","in":"query","required":false,"schema":{"enum":["recommended","price_low","price_high","rating","stars"],"type":"string","default":"recommended","title":"Sort By"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"description":"Page size","default":50,"title":"Limit"},"description":"Page size"},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Items to skip","default":0,"title":"Offset"},"description":"Items to skip"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_HotelDetail_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Hotels"],"summary":"Create a hotel","operationId":"create_hotel","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HotelCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HotelDetail"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/hotels/{hotel_id}":{"get":{"tags":["Hotels"],"summary":"Get a hotel with all room types","operationId":"get_hotel","parameters":[{"name":"hotel_id","in":"path","required":true,"schema":{"type":"integer","title":"Hotel Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HotelDetail"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Hotels"],"summary":"Update a hotel","operationId":"update_hotel","parameters":[{"name":"hotel_id","in":"path","required":true,"schema":{"type":"integer","title":"Hotel Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HotelUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HotelDetail"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Hotels"],"summary":"Delete a hotel","operationId":"delete_hotel","parameters":[{"name":"hotel_id","in":"path","required":true,"schema":{"type":"integer","title":"Hotel Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/hotels/{hotel_id}/rooms":{"post":{"tags":["Hotels"],"summary":"Add a room type","operationId":"add_hotel_room","parameters":[{"name":"hotel_id","in":"path","required":true,"schema":{"type":"integer","title":"Hotel Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoomTypeBase"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoomTypeOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/hotels/{hotel_id}/rooms/{room_id}":{"patch":{"tags":["Hotels"],"summary":"Update a room type","operationId":"update_hotel_room","parameters":[{"name":"hotel_id","in":"path","required":true,"schema":{"type":"integer","title":"Hotel Id"}},{"name":"room_id","in":"path","required":true,"schema":{"type":"integer","title":"Room Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoomTypeUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoomTypeOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Hotels"],"summary":"Delete a room type","operationId":"delete_hotel_room","parameters":[{"name":"hotel_id","in":"path","required":true,"schema":{"type":"integer","title":"Hotel Id"}},{"name":"room_id","in":"path","required":true,"schema":{"type":"integer","title":"Room Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/bookings":{"get":{"tags":["Bookings"],"summary":"List bookings","operationId":"list_travel_bookings","parameters":[{"name":"email","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by customer / contact email","title":"Email"},"description":"Filter by customer / contact email"},{"name":"booking_type","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/BookingType"},{"type":"null"}],"title":"Booking Type"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/BookingStatus"},{"type":"null"}],"title":"Status"}},{"name":"travel_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Travel From"}},{"name":"travel_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Travel To"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"description":"Page size","default":50,"title":"Limit"},"description":"Page size"},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Items to skip","default":0,"title":"Offset"},"description":"Items to skip"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_BookingOut_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/bookings/{booking_ref}":{"get":{"tags":["Bookings"],"summary":"Get a booking by reference","operationId":"get_travel_booking","parameters":[{"name":"booking_ref","in":"path","required":true,"schema":{"type":"string","title":"Booking Ref"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BookingOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/bookings/flights":{"post":{"tags":["Bookings"],"summary":"Book a flight","operationId":"book_flight","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FlightBookingCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BookingOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/bookings/trains":{"post":{"tags":["Bookings"],"summary":"Book a train","operationId":"book_train","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrainBookingCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BookingOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/bookings/buses":{"post":{"tags":["Bookings"],"summary":"Book a bus","operationId":"book_bus","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BusBookingCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BookingOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/bookings/hotels":{"post":{"tags":["Bookings"],"summary":"Book a hotel","operationId":"book_hotel","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HotelBookingCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BookingOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/bookings/{booking_ref}/cancel":{"post":{"tags":["Bookings"],"summary":"Cancel a booking (refund per policy)","description":"Releases inventory and computes the refund: ≥72h 90%, ≥24h 60%, ≥4h 25% (hotels: free ≥48h if refundable).","operationId":"cancel_travel_booking","parameters":[{"name":"booking_ref","in":"path","required":true,"schema":{"type":"string","title":"Booking Ref"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BookingOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/stats/overview":{"get":{"tags":["Insights"],"summary":"Dashboard KPIs, trends and top destinations","operationId":"get_travel_overview","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/stats/platform":{"get":{"tags":["Insights"],"summary":"Cross-module platform KPIs","description":"Headline numbers for every D MALL ONLINE module: travel, bank, shop, inventory and healthcare.","operationId":"get_platform_overview","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/health":{"get":{"tags":["Insights"],"summary":"Liveness and database check","operationId":"health_check","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[]}}},"components":{"schemas":{"AccountOut":{"properties":{"id":{"type":"integer","title":"Id"},"account_number":{"type":"string","title":"Account Number"},"account_type":{"$ref":"#/components/schemas/AccountType"},"balance":{"type":"number","title":"Balance"},"currency":{"type":"string","title":"Currency"},"status":{"type":"string","title":"Status"},"interest_rate":{"type":"number","title":"Interest Rate"},"min_balance":{"type":"number","title":"Min Balance"},"overdraft_limit":{"type":"number","title":"Overdraft Limit"},"upi_id":{"type":"string","title":"Upi Id"},"opened_at":{"type":"string","format":"date-time","title":"Opened At"},"branch":{"$ref":"#/components/schemas/BranchOut"},"holder_name":{"type":"string","title":"Holder Name","default":""}},"type":"object","required":["id","account_number","account_type","balance","currency","status","interest_rate","min_balance","overdraft_limit","upi_id","opened_at","branch"],"title":"AccountOut"},"AccountType":{"type":"string","enum":["SAVINGS","SALARY","CURRENT"],"title":"AccountType"},"AdjustIn":{"properties":{"product_id":{"type":"integer","title":"Product Id"},"warehouse_code":{"type":"string","title":"Warehouse Code"},"delta":{"type":"integer","title":"Delta","description":"Positive to add, negative to remove"},"reason":{"type":"string","maxLength":200,"minLength":3,"title":"Reason","examples":["Cycle count correction","Damaged in handling"]}},"type":"object","required":["product_id","warehouse_code","delta","reason"],"title":"AdjustIn"},"AirlineOut":{"properties":{"code":{"type":"string","title":"Code"},"name":{"type":"string","title":"Name"},"country":{"type":"string","title":"Country"},"rating":{"type":"number","title":"Rating"},"brand_color":{"type":"string","title":"Brand Color"},"is_low_cost":{"type":"boolean","title":"Is Low Cost"}},"type":"object","required":["code","name","country","rating","brand_color","is_low_cost"],"title":"AirlineOut"},"AirportOut":{"properties":{"code":{"type":"string","title":"Code"},"name":{"type":"string","title":"Name"},"city":{"type":"string","title":"City"},"country":{"type":"string","title":"Country"},"latitude":{"type":"number","title":"Latitude"},"longitude":{"type":"number","title":"Longitude"}},"type":"object","required":["code","name","city","country","latitude","longitude"],"title":"AirportOut"},"AppointmentCreate":{"properties":{"slot_id":{"type":"integer","title":"Slot Id"},"contact":{"$ref":"#/components/schemas/ContactIn"},"patient":{"$ref":"#/components/schemas/PatientIn"},"symptoms":{"type":"string","maxLength":300,"minLength":3,"title":"Symptoms"},"payment_method":{"type":"string","enum":["UPI","CARD","PAY_AT_CLINIC"],"title":"Payment Method","default":"UPI"}},"type":"object","required":["slot_id","contact","patient","symptoms"],"title":"AppointmentCreate"},"AppointmentOut":{"properties":{"appointment_ref":{"type":"string","title":"Appointment Ref"},"status":{"type":"string","title":"Status"},"mode":{"type":"string","title":"Mode"},"scheduled_at":{"type":"string","format":"date-time","title":"Scheduled At"},"patient_name":{"type":"string","title":"Patient Name"},"patient_age":{"type":"integer","title":"Patient Age"},"patient_gender":{"type":"string","title":"Patient Gender"},"symptoms":{"type":"string","title":"Symptoms"},"fee":{"type":"number","title":"Fee"},"payment_method":{"type":"string","title":"Payment Method"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"cancelled_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Cancelled At"},"doctor":{"$ref":"#/components/schemas/DoctorOut"}},"type":"object","required":["appointment_ref","status","mode","scheduled_at","patient_name","patient_age","patient_gender","symptoms","fee","payment_method","notes","created_at","cancelled_at","doctor"],"title":"AppointmentOut"},"AvailabilityOut":{"properties":{"doctor_id":{"type":"integer","title":"Doctor Id"},"doctor_name":{"type":"string","title":"Doctor Name"},"days":{"items":{"$ref":"#/components/schemas/DayAvailability"},"type":"array","title":"Days"},"total_free_slots":{"type":"integer","title":"Total Free Slots"}},"type":"object","required":["doctor_id","doctor_name","days","total_free_slots"],"title":"AvailabilityOut"},"BalanceOut":{"properties":{"account_number":{"type":"string","title":"Account Number"},"account_type":{"$ref":"#/components/schemas/AccountType"},"holder_name":{"type":"string","title":"Holder Name"},"ledger_balance":{"type":"number","title":"Ledger Balance"},"available_balance":{"type":"number","title":"Available Balance","description":"Ledger balance plus any overdraft limit"},"currency":{"type":"string","title":"Currency","default":"INR"},"as_of":{"type":"string","format":"date-time","title":"As Of"}},"type":"object","required":["account_number","account_type","holder_name","ledger_balance","available_balance","as_of"],"title":"BalanceOut"},"BeneficiaryIn":{"properties":{"customer_email":{"type":"string","title":"Customer Email"},"name":{"type":"string","maxLength":120,"minLength":2,"title":"Name"},"account_number":{"type":"string","maxLength":18,"minLength":9,"pattern":"^\\d+$","title":"Account Number"},"ifsc":{"type":"string","pattern":"^[A-Z]{4}0[A-Z0-9]{6}$","title":"Ifsc"},"bank_name":{"type":"string","title":"Bank Name"},"nickname":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nickname"}},"type":"object","required":["customer_email","name","account_number","ifsc","bank_name"],"title":"BeneficiaryIn"},"BeneficiaryOut":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"nickname":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nickname"},"account_number":{"type":"string","title":"Account Number"},"ifsc":{"type":"string","title":"Ifsc"},"bank_name":{"type":"string","title":"Bank Name"},"added_at":{"type":"string","format":"date-time","title":"Added At"}},"type":"object","required":["id","name","nickname","account_number","ifsc","bank_name","added_at"],"title":"BeneficiaryOut"},"BookingOut":{"properties":{"id":{"type":"integer","title":"Id"},"booking_ref":{"type":"string","title":"Booking Ref"},"booking_type":{"$ref":"#/components/schemas/BookingType"},"status":{"$ref":"#/components/schemas/BookingStatus"},"summary":{"type":"string","title":"Summary"},"travel_date":{"type":"string","format":"date","title":"Travel Date"},"check_out":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Check Out"},"nights":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Nights"},"units":{"type":"integer","title":"Units"},"base_amount":{"type":"number","title":"Base Amount"},"tax_amount":{"type":"number","title":"Tax Amount"},"total_amount":{"type":"number","title":"Total Amount"},"refund_amount":{"type":"number","title":"Refund Amount"},"currency":{"type":"string","title":"Currency"},"payment_method":{"type":"string","title":"Payment Method"},"contact_email":{"type":"string","title":"Contact Email"},"contact_phone":{"type":"string","title":"Contact Phone"},"special_requests":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Special Requests"},"details":{"additionalProperties":true,"type":"object","title":"Details"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"cancelled_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Cancelled At"},"customer":{"$ref":"#/components/schemas/CustomerOut"},"passengers":{"items":{"$ref":"#/components/schemas/PassengerOut"},"type":"array","title":"Passengers"}},"type":"object","required":["id","booking_ref","booking_type","status","summary","travel_date","check_out","nights","units","base_amount","tax_amount","total_amount","refund_amount","currency","payment_method","contact_email","contact_phone","special_requests","details","created_at","cancelled_at","customer","passengers"],"title":"BookingOut"},"BookingStatus":{"type":"string","enum":["CONFIRMED","CANCELLED","COMPLETED"],"title":"BookingStatus"},"BookingType":{"type":"string","enum":["FLIGHT","TRAIN","BUS","HOTEL"],"title":"BookingType"},"BranchOut":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"ifsc":{"type":"string","title":"Ifsc"},"city":{"type":"string","title":"City"},"address":{"type":"string","title":"Address"},"phone":{"type":"string","title":"Phone"}},"type":"object","required":["id","name","ifsc","city","address","phone"],"title":"BranchOut"},"BusBookingCreate":{"properties":{"contact":{"$ref":"#/components/schemas/ContactIn"},"payment_method":{"type":"string","enum":["CARD","UPI","NETBANKING","WALLET"],"title":"Payment Method","default":"CARD"},"special_requests":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Special Requests"},"bus_id":{"type":"integer","title":"Bus Id"},"passengers":{"items":{"$ref":"#/components/schemas/PassengerIn"},"type":"array","maxItems":6,"minItems":1,"title":"Passengers"}},"type":"object","required":["contact","bus_id","passengers"],"title":"BusBookingCreate"},"BusCreate":{"properties":{"operator_id":{"type":"integer","title":"Operator Id"},"origin_city":{"type":"string","title":"Origin City"},"destination_city":{"type":"string","title":"Destination City"},"departure_time":{"type":"string","format":"date-time","title":"Departure Time"},"arrival_time":{"type":"string","format":"date-time","title":"Arrival Time"},"distance_km":{"type":"integer","exclusiveMinimum":0.0,"title":"Distance Km"},"bus_type":{"type":"string","title":"Bus Type"},"seat_layout":{"type":"string","enum":["2+1","2+2","1+1"],"title":"Seat Layout","default":"2+1"},"is_ac":{"type":"boolean","title":"Is Ac","default":true},"is_sleeper":{"type":"boolean","title":"Is Sleeper","default":true},"amenities":{"items":{"type":"string"},"type":"array","title":"Amenities","default":[]},"boarding_point":{"type":"string","title":"Boarding Point"},"dropping_point":{"type":"string","title":"Dropping Point"},"fare":{"type":"number","exclusiveMinimum":0.0,"title":"Fare"},"total_seats":{"type":"integer","maximum":60.0,"exclusiveMinimum":0.0,"title":"Total Seats"}},"type":"object","required":["operator_id","origin_city","destination_city","departure_time","arrival_time","distance_km","bus_type","boarding_point","dropping_point","fare","total_seats"],"title":"BusCreate"},"BusOperatorOut":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"rating":{"type":"number","title":"Rating"},"review_count":{"type":"integer","title":"Review Count"},"region":{"type":"string","title":"Region"}},"type":"object","required":["id","name","rating","review_count","region"],"title":"BusOperatorOut"},"BusOut":{"properties":{"id":{"type":"integer","title":"Id"},"operator":{"$ref":"#/components/schemas/BusOperatorOut"},"origin_city":{"type":"string","title":"Origin City"},"destination_city":{"type":"string","title":"Destination City"},"departure_time":{"type":"string","format":"date-time","title":"Departure Time"},"arrival_time":{"type":"string","format":"date-time","title":"Arrival Time"},"duration_minutes":{"type":"integer","title":"Duration Minutes"},"distance_km":{"type":"integer","title":"Distance Km"},"bus_type":{"type":"string","title":"Bus Type"},"seat_layout":{"type":"string","title":"Seat Layout"},"is_ac":{"type":"boolean","title":"Is Ac"},"is_sleeper":{"type":"boolean","title":"Is Sleeper"},"amenities":{"items":{"type":"string"},"type":"array","title":"Amenities"},"boarding_point":{"type":"string","title":"Boarding Point"},"dropping_point":{"type":"string","title":"Dropping Point"},"fare":{"type":"number","title":"Fare"},"total_seats":{"type":"integer","title":"Total Seats"},"available_seats":{"type":"integer","title":"Available Seats"},"status":{"type":"string","title":"Status"}},"type":"object","required":["id","operator","origin_city","destination_city","departure_time","arrival_time","duration_minutes","distance_km","bus_type","seat_layout","is_ac","is_sleeper","amenities","boarding_point","dropping_point","fare","total_seats","available_seats","status"],"title":"BusOut"},"BusUpdate":{"properties":{"departure_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Departure Time"},"arrival_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Arrival Time"},"fare":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"null"}],"title":"Fare"},"available_seats":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Available Seats"},"boarding_point":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Boarding Point"},"dropping_point":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Dropping Point"},"status":{"anyOf":[{"type":"string","enum":["SCHEDULED","ON_TIME","DELAYED","CANCELLED"]},{"type":"null"}],"title":"Status"}},"type":"object","title":"BusUpdate"},"CabinClass":{"type":"string","enum":["ECONOMY","PREMIUM_ECONOMY","BUSINESS","FIRST"],"title":"CabinClass"},"CancelAppointmentOut":{"properties":{"appointment":{"$ref":"#/components/schemas/AppointmentOut"},"refund_amount":{"type":"number","title":"Refund Amount"}},"type":"object","required":["appointment","refund_amount"],"title":"CancelAppointmentOut"},"CardOut":{"properties":{"id":{"type":"integer","title":"Id"},"card_type":{"type":"string","title":"Card Type"},"variant":{"type":"string","title":"Variant"},"network":{"type":"string","title":"Network"},"masked_number":{"type":"string","title":"Masked Number"},"holder_name":{"type":"string","title":"Holder Name"},"expiry":{"type":"string","title":"Expiry"},"status":{"type":"string","title":"Status"},"credit_limit":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Credit Limit"},"outstanding":{"type":"number","title":"Outstanding"},"reward_points":{"type":"integer","title":"Reward Points"},"due_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Due Date"},"account_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Account Id"}},"type":"object","required":["id","card_type","variant","network","masked_number","holder_name","expiry","status","credit_limit","outstanding","reward_points","due_date","account_id"],"title":"CardOut"},"CartItemIn":{"properties":{"customer_email":{"type":"string","title":"Customer Email"},"product_id":{"type":"integer","title":"Product Id"},"quantity":{"type":"integer","maximum":10.0,"minimum":0.0,"title":"Quantity","description":"0 removes the item","default":1}},"type":"object","required":["customer_email","product_id"],"title":"CartItemIn"},"CartLine":{"properties":{"product":{"$ref":"#/components/schemas/ProductOut"},"quantity":{"type":"integer","title":"Quantity"},"line_total":{"type":"number","title":"Line Total"}},"type":"object","required":["product","quantity","line_total"],"title":"CartLine"},"CartOut":{"properties":{"customer_email":{"type":"string","title":"Customer Email"},"items":{"items":{"$ref":"#/components/schemas/CartLine"},"type":"array","title":"Items"},"item_count":{"type":"integer","title":"Item Count"},"subtotal":{"type":"number","title":"Subtotal"},"mrp_total":{"type":"number","title":"Mrp Total"},"savings":{"type":"number","title":"Savings"},"shipping_fee":{"type":"number","title":"Shipping Fee"},"total":{"type":"number","title":"Total"}},"type":"object","required":["customer_email","items","item_count","subtotal","mrp_total","savings","shipping_fee","total"],"title":"CartOut"},"CashIn":{"properties":{"amount":{"type":"number","maximum":1000000.0,"exclusiveMinimum":0.0,"title":"Amount"},"channel":{"type":"string","enum":["BRANCH","ATM","UPI","NEFT","IMPS","CARD"],"title":"Channel","default":"BRANCH"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"}},"type":"object","required":["amount"],"title":"CashIn"},"CategoryOut":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"slug":{"type":"string","title":"Slug"},"icon":{"type":"string","title":"Icon"}},"type":"object","required":["id","name","slug","icon"],"title":"CategoryOut"},"CategorySpend":{"properties":{"category":{"type":"string","title":"Category"},"amount":{"type":"number","title":"Amount"},"transactions":{"type":"integer","title":"Transactions","default":0}},"type":"object","required":["category","amount"],"title":"CategorySpend"},"CheckoutIn":{"properties":{"customer_email":{"type":"string","title":"Customer Email"},"shipping":{"$ref":"#/components/schemas/ShippingIn"},"payment_method":{"type":"string","enum":["UPI","CARD","NETBANKING","WALLET","COD"],"title":"Payment Method","default":"UPI"},"coupon_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Coupon Code"}},"type":"object","required":["customer_email","shipping"],"title":"CheckoutIn"},"CityOut":{"properties":{"city":{"type":"string","title":"City"},"country":{"type":"string","title":"Country"},"hotels":{"type":"integer","title":"Hotels"},"starting_price":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Starting Price"}},"type":"object","required":["city","country","hotels","starting_price"],"title":"CityOut"},"ContactIn":{"properties":{"full_name":{"type":"string","maxLength":120,"minLength":2,"title":"Full Name"},"email":{"type":"string","format":"email","title":"Email"},"phone":{"type":"string","maxLength":30,"minLength":6,"title":"Phone"},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country"}},"type":"object","required":["full_name","email","phone"],"title":"ContactIn"},"CouponOut":{"properties":{"code":{"type":"string","title":"Code"},"description":{"type":"string","title":"Description"},"min_order":{"type":"number","title":"Min Order"}},"type":"object","required":["code","description","min_order"],"title":"CouponOut"},"CustomerBankSummary":{"properties":{"customer_name":{"type":"string","title":"Customer Name"},"email":{"type":"string","title":"Email"},"total_balance":{"type":"number","title":"Total Balance"},"accounts":{"items":{"$ref":"#/components/schemas/BalanceOut"},"type":"array","title":"Accounts"},"credit_cards_outstanding":{"type":"number","title":"Credit Cards Outstanding"},"credit_limit_available":{"type":"number","title":"Credit Limit Available"},"loans_outstanding":{"type":"number","title":"Loans Outstanding"},"monthly_emi":{"type":"number","title":"Monthly Emi"},"net_position":{"type":"number","title":"Net Position"}},"type":"object","required":["customer_name","email","total_balance","accounts","credit_cards_outstanding","credit_limit_available","loans_outstanding","monthly_emi","net_position"],"title":"CustomerBankSummary"},"CustomerCreate":{"properties":{"full_name":{"type":"string","maxLength":120,"minLength":2,"title":"Full Name","examples":["Aarav Sharma"]},"email":{"type":"string","format":"email","title":"Email","examples":["aarav.sharma@example.com"]},"phone":{"type":"string","maxLength":30,"minLength":6,"title":"Phone","examples":["+91 98200 11223"]},"country":{"type":"string","maxLength":60,"title":"Country","default":"India"},"loyalty_tier":{"type":"string","enum":["Silver","Gold","Platinum"],"title":"Loyalty Tier","default":"Silver"}},"type":"object","required":["full_name","email","phone"],"title":"CustomerCreate"},"CustomerOut":{"properties":{"id":{"type":"integer","title":"Id"},"full_name":{"type":"string","title":"Full Name"},"email":{"type":"string","title":"Email"},"phone":{"type":"string","title":"Phone"},"country":{"type":"string","title":"Country"},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City"},"loyalty_tier":{"type":"string","title":"Loyalty Tier"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","full_name","email","phone","country","loyalty_tier","created_at"],"title":"CustomerOut"},"CustomerUpdate":{"properties":{"full_name":{"anyOf":[{"type":"string","maxLength":120,"minLength":2},{"type":"null"}],"title":"Full Name"},"phone":{"anyOf":[{"type":"string","maxLength":30,"minLength":6},{"type":"null"}],"title":"Phone"},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country"},"loyalty_tier":{"anyOf":[{"type":"string","enum":["Silver","Gold","Platinum"]},{"type":"null"}],"title":"Loyalty Tier"}},"type":"object","title":"CustomerUpdate"},"DayAvailability":{"properties":{"date":{"type":"string","title":"Date"},"slots":{"items":{"$ref":"#/components/schemas/SlotOut"},"type":"array","title":"Slots"}},"type":"object","required":["date","slots"],"title":"DayAvailability"},"DoctorOut":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"gender":{"type":"string","title":"Gender"},"specialization":{"type":"string","title":"Specialization"},"qualification":{"type":"string","title":"Qualification"},"experience_years":{"type":"integer","title":"Experience Years"},"consultation_fee":{"type":"number","title":"Consultation Fee"},"video_fee":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Video Fee"},"rating":{"type":"number","title":"Rating"},"review_count":{"type":"integer","title":"Review Count"},"languages":{"items":{"type":"string"},"type":"array","title":"Languages"},"registration_number":{"type":"string","title":"Registration Number"},"working_days":{"items":{"type":"string"},"type":"array","title":"Working Days"},"slot_minutes":{"type":"integer","title":"Slot Minutes"},"bio":{"type":"string","title":"Bio"},"hospital":{"$ref":"#/components/schemas/HospitalOut"},"next_available":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Next Available"}},"type":"object","required":["id","name","gender","specialization","qualification","experience_years","consultation_fee","video_fee","rating","review_count","languages","registration_number","working_days","slot_minutes","bio","hospital"],"title":"DoctorOut"},"FareCalendarDay":{"properties":{"date":{"type":"string","format":"date","title":"Date"},"lowest_fare":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Lowest Fare"},"flights":{"type":"integer","title":"Flights"}},"type":"object","required":["date","lowest_fare","flights"],"title":"FareCalendarDay"},"FlightBookingCreate":{"properties":{"contact":{"$ref":"#/components/schemas/ContactIn"},"payment_method":{"type":"string","enum":["CARD","UPI","NETBANKING","WALLET"],"title":"Payment Method","default":"CARD"},"special_requests":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Special Requests"},"flight_id":{"type":"integer","title":"Flight Id"},"cabin_class":{"$ref":"#/components/schemas/CabinClass","default":"ECONOMY"},"passengers":{"items":{"$ref":"#/components/schemas/PassengerIn"},"type":"array","maxItems":9,"minItems":1,"title":"Passengers"}},"type":"object","required":["contact","flight_id","passengers"],"title":"FlightBookingCreate"},"FlightCabinBase":{"properties":{"cabin_class":{"$ref":"#/components/schemas/CabinClass"},"fare":{"type":"number","exclusiveMinimum":0.0,"title":"Fare"},"total_seats":{"type":"integer","maximum":600.0,"exclusiveMinimum":0.0,"title":"Total Seats"}},"type":"object","required":["cabin_class","fare","total_seats"],"title":"FlightCabinBase"},"FlightCabinOut":{"properties":{"id":{"type":"integer","title":"Id"},"cabin_class":{"$ref":"#/components/schemas/CabinClass"},"fare":{"type":"number","title":"Fare"},"total_seats":{"type":"integer","title":"Total Seats"},"available_seats":{"type":"integer","title":"Available Seats"}},"type":"object","required":["id","cabin_class","fare","total_seats","available_seats"],"title":"FlightCabinOut"},"FlightCabinUpdate":{"properties":{"fare":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"null"}],"title":"Fare"},"available_seats":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Available Seats"}},"type":"object","title":"FlightCabinUpdate"},"FlightCreate":{"properties":{"flight_number":{"type":"string","maxLength":10,"title":"Flight Number","examples":["6E 2134"]},"airline_code":{"type":"string","maxLength":3,"minLength":2,"title":"Airline Code"},"origin_code":{"type":"string","maxLength":3,"minLength":3,"title":"Origin Code"},"destination_code":{"type":"string","maxLength":3,"minLength":3,"title":"Destination Code"},"departure_time":{"type":"string","format":"date-time","title":"Departure Time"},"arrival_time":{"type":"string","format":"date-time","title":"Arrival Time"},"stops":{"type":"integer","maximum":3.0,"minimum":0.0,"title":"Stops","default":0},"via":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Via"},"aircraft":{"type":"string","title":"Aircraft","default":"Airbus A320neo"},"baggage":{"type":"string","title":"Baggage","default":"15 kg check-in · 7 kg cabin"},"status":{"type":"string","title":"Status","default":"SCHEDULED"},"cabins":{"items":{"$ref":"#/components/schemas/FlightCabinBase"},"type":"array","minItems":1,"title":"Cabins"}},"type":"object","required":["flight_number","airline_code","origin_code","destination_code","departure_time","arrival_time","cabins"],"title":"FlightCreate"},"FlightOut":{"properties":{"id":{"type":"integer","title":"Id"},"flight_number":{"type":"string","title":"Flight Number"},"airline":{"$ref":"#/components/schemas/AirlineOut"},"origin":{"$ref":"#/components/schemas/AirportOut"},"destination":{"$ref":"#/components/schemas/AirportOut"},"departure_time":{"type":"string","format":"date-time","title":"Departure Time"},"arrival_time":{"type":"string","format":"date-time","title":"Arrival Time"},"duration_minutes":{"type":"integer","title":"Duration Minutes"},"distance_km":{"type":"integer","title":"Distance Km"},"stops":{"type":"integer","title":"Stops"},"via":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Via"},"aircraft":{"type":"string","title":"Aircraft"},"baggage":{"type":"string","title":"Baggage"},"status":{"type":"string","title":"Status"},"cabins":{"items":{"$ref":"#/components/schemas/FlightCabinOut"},"type":"array","title":"Cabins"}},"type":"object","required":["id","flight_number","airline","origin","destination","departure_time","arrival_time","duration_minutes","distance_km","stops","via","aircraft","baggage","status","cabins"],"title":"FlightOut"},"FlightUpdate":{"properties":{"departure_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Departure Time"},"arrival_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Arrival Time"},"aircraft":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Aircraft"},"baggage":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Baggage"},"status":{"anyOf":[{"type":"string","enum":["SCHEDULED","ON_TIME","DELAYED","BOARDING","DEPARTED","CANCELLED"]},{"type":"null"}],"title":"Status"}},"type":"object","title":"FlightUpdate"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HospitalOut":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"hospital_type":{"type":"string","title":"Hospital Type"},"city":{"type":"string","title":"City"},"area":{"type":"string","title":"Area"},"address":{"type":"string","title":"Address"},"phone":{"type":"string","title":"Phone"},"rating":{"type":"number","title":"Rating"},"beds":{"type":"integer","title":"Beds"},"emergency_24x7":{"type":"boolean","title":"Emergency 24X7"},"accreditation":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Accreditation"}},"type":"object","required":["id","name","hospital_type","city","area","address","phone","rating","beds","emergency_24x7","accreditation"],"title":"HospitalOut"},"HotelBookingCreate":{"properties":{"contact":{"$ref":"#/components/schemas/ContactIn"},"payment_method":{"type":"string","enum":["CARD","UPI","NETBANKING","WALLET"],"title":"Payment Method","default":"CARD"},"special_requests":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Special Requests"},"room_type_id":{"type":"integer","title":"Room Type Id"},"check_in":{"type":"string","format":"date","title":"Check In"},"check_out":{"type":"string","format":"date","title":"Check Out"},"rooms":{"type":"integer","maximum":5.0,"minimum":1.0,"title":"Rooms","default":1},"guests":{"type":"integer","maximum":20.0,"minimum":1.0,"title":"Guests","default":2},"passengers":{"items":{"$ref":"#/components/schemas/PassengerIn"},"type":"array","maxItems":20,"title":"Passengers"}},"type":"object","required":["contact","room_type_id","check_in","check_out"],"title":"HotelBookingCreate"},"HotelCreate":{"properties":{"name":{"type":"string","title":"Name"},"city":{"type":"string","title":"City"},"country":{"type":"string","title":"Country","default":"India"},"area":{"type":"string","title":"Area"},"address":{"type":"string","title":"Address"},"property_type":{"type":"string","title":"Property Type","default":"Hotel"},"star_rating":{"type":"integer","maximum":5.0,"minimum":1.0,"title":"Star Rating"},"guest_rating":{"type":"number","maximum":5.0,"minimum":0.0,"title":"Guest Rating","default":4.0},"review_count":{"type":"integer","title":"Review Count","default":0},"description":{"type":"string","title":"Description","default":""},"amenities":{"items":{"type":"string"},"type":"array","title":"Amenities","default":[]},"latitude":{"type":"number","title":"Latitude","default":0.0},"longitude":{"type":"number","title":"Longitude","default":0.0},"check_in_time":{"type":"string","title":"Check In Time","default":"14:00"},"check_out_time":{"type":"string","title":"Check Out Time","default":"12:00"},"free_cancellation":{"type":"boolean","title":"Free Cancellation","default":true},"rooms":{"items":{"$ref":"#/components/schemas/RoomTypeBase"},"type":"array","minItems":1,"title":"Rooms"}},"type":"object","required":["name","city","area","address","star_rating","rooms"],"title":"HotelCreate"},"HotelDetail":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"city":{"type":"string","title":"City"},"country":{"type":"string","title":"Country"},"area":{"type":"string","title":"Area"},"address":{"type":"string","title":"Address"},"property_type":{"type":"string","title":"Property Type"},"star_rating":{"type":"integer","title":"Star Rating"},"guest_rating":{"type":"number","title":"Guest Rating"},"review_count":{"type":"integer","title":"Review Count"},"description":{"type":"string","title":"Description"},"amenities":{"items":{"type":"string"},"type":"array","title":"Amenities"},"latitude":{"type":"number","title":"Latitude"},"longitude":{"type":"number","title":"Longitude"},"check_in_time":{"type":"string","title":"Check In Time"},"check_out_time":{"type":"string","title":"Check Out Time"},"free_cancellation":{"type":"boolean","title":"Free Cancellation"},"starting_price":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Starting Price"},"rooms":{"items":{"$ref":"#/components/schemas/RoomTypeOut"},"type":"array","title":"Rooms"}},"type":"object","required":["id","name","city","country","area","address","property_type","star_rating","guest_rating","review_count","description","amenities","latitude","longitude","check_in_time","check_out_time","free_cancellation","starting_price","rooms"],"title":"HotelDetail"},"HotelUpdate":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"guest_rating":{"anyOf":[{"type":"number","maximum":5.0,"minimum":0.0},{"type":"null"}],"title":"Guest Rating"},"amenities":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Amenities"},"free_cancellation":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Free Cancellation"},"check_in_time":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Check In Time"},"check_out_time":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Check Out Time"}},"type":"object","title":"HotelUpdate"},"LoanOut":{"properties":{"loan_number":{"type":"string","title":"Loan Number"},"loan_type":{"type":"string","title":"Loan Type"},"principal":{"type":"number","title":"Principal"},"outstanding":{"type":"number","title":"Outstanding"},"interest_rate":{"type":"number","title":"Interest Rate"},"tenure_months":{"type":"integer","title":"Tenure Months"},"emi":{"type":"number","title":"Emi"},"emis_paid":{"type":"integer","title":"Emis Paid"},"start_date":{"type":"string","format":"date","title":"Start Date"},"next_due_date":{"type":"string","format":"date","title":"Next Due Date"},"status":{"type":"string","title":"Status"}},"type":"object","required":["loan_number","loan_type","principal","outstanding","interest_rate","tenure_months","emi","emis_paid","start_date","next_due_date","status"],"title":"LoanOut"},"MovementOut":{"properties":{"id":{"type":"integer","title":"Id"},"product_id":{"type":"integer","title":"Product Id"},"sku":{"type":"string","title":"Sku"},"product_name":{"type":"string","title":"Product Name"},"warehouse_code":{"type":"string","title":"Warehouse Code"},"movement_type":{"type":"string","title":"Movement Type"},"quantity":{"type":"integer","title":"Quantity"},"reference":{"type":"string","title":"Reference"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","product_id","sku","product_name","warehouse_code","movement_type","quantity","reference","note","created_at"],"title":"MovementOut"},"OpenAccountIn":{"properties":{"customer_email":{"type":"string","title":"Customer Email"},"account_type":{"$ref":"#/components/schemas/AccountType","default":"SAVINGS"},"branch_ifsc":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch Ifsc","description":"Defaults to a branch in the customer's city"},"initial_deposit":{"type":"number","minimum":0.0,"title":"Initial Deposit","default":10000}},"type":"object","required":["customer_email"],"title":"OpenAccountIn"},"OrderCreate":{"properties":{"contact":{"$ref":"#/components/schemas/ContactIn"},"items":{"items":{"$ref":"#/components/schemas/OrderItemIn"},"type":"array","maxItems":20,"minItems":1,"title":"Items"},"shipping":{"$ref":"#/components/schemas/ShippingIn"},"payment_method":{"type":"string","enum":["UPI","CARD","NETBANKING","WALLET","COD"],"title":"Payment Method","default":"UPI"},"coupon_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Coupon Code"}},"type":"object","required":["contact","items","shipping"],"title":"OrderCreate"},"OrderItemIn":{"properties":{"product_id":{"type":"integer","title":"Product Id"},"quantity":{"type":"integer","maximum":10.0,"minimum":1.0,"title":"Quantity","default":1}},"type":"object","required":["product_id"],"title":"OrderItemIn"},"OrderItemOut":{"properties":{"product_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Product Id"},"sku":{"type":"string","title":"Sku"},"product_name":{"type":"string","title":"Product Name"},"brand":{"type":"string","title":"Brand"},"quantity":{"type":"integer","title":"Quantity"},"unit_price":{"type":"number","title":"Unit Price"},"line_total":{"type":"number","title":"Line Total"}},"type":"object","required":["product_id","sku","product_name","brand","quantity","unit_price","line_total"],"title":"OrderItemOut"},"OrderOut":{"properties":{"order_number":{"type":"string","title":"Order Number"},"status":{"type":"string","title":"Status"},"subtotal":{"type":"number","title":"Subtotal"},"discount":{"type":"number","title":"Discount"},"coupon_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Coupon Code"},"shipping_fee":{"type":"number","title":"Shipping Fee"},"gst_included":{"type":"number","title":"Gst Included"},"total":{"type":"number","title":"Total"},"payment_method":{"type":"string","title":"Payment Method"},"payment_status":{"type":"string","title":"Payment Status"},"ship_name":{"type":"string","title":"Ship Name"},"ship_phone":{"type":"string","title":"Ship Phone"},"ship_address":{"type":"string","title":"Ship Address"},"ship_city":{"type":"string","title":"Ship City"},"ship_pincode":{"type":"string","title":"Ship Pincode"},"courier":{"type":"string","title":"Courier"},"tracking_number":{"type":"string","title":"Tracking Number"},"placed_at":{"type":"string","format":"date-time","title":"Placed At"},"expected_delivery":{"type":"string","format":"date","title":"Expected Delivery"},"delivered_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Delivered At"},"cancelled_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Cancelled At"},"history":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"History"},"items":{"items":{"$ref":"#/components/schemas/OrderItemOut"},"type":"array","title":"Items"},"warehouse":{"$ref":"#/components/schemas/WarehouseOut"},"customer_email":{"type":"string","title":"Customer Email","default":""}},"type":"object","required":["order_number","status","subtotal","discount","coupon_code","shipping_fee","gst_included","total","payment_method","payment_status","ship_name","ship_phone","ship_address","ship_city","ship_pincode","courier","tracking_number","placed_at","expected_delivery","delivered_at","cancelled_at","history","items","warehouse"],"title":"OrderOut"},"Page_AppointmentOut_":{"properties":{"total":{"type":"integer","title":"Total"},"limit":{"type":"integer","title":"Limit"},"offset":{"type":"integer","title":"Offset"},"items":{"items":{"$ref":"#/components/schemas/AppointmentOut"},"type":"array","title":"Items"}},"type":"object","required":["total","limit","offset","items"],"title":"Page[AppointmentOut]"},"Page_BookingOut_":{"properties":{"total":{"type":"integer","title":"Total"},"limit":{"type":"integer","title":"Limit"},"offset":{"type":"integer","title":"Offset"},"items":{"items":{"$ref":"#/components/schemas/BookingOut"},"type":"array","title":"Items"}},"type":"object","required":["total","limit","offset","items"],"title":"Page[BookingOut]"},"Page_BusOut_":{"properties":{"total":{"type":"integer","title":"Total"},"limit":{"type":"integer","title":"Limit"},"offset":{"type":"integer","title":"Offset"},"items":{"items":{"$ref":"#/components/schemas/BusOut"},"type":"array","title":"Items"}},"type":"object","required":["total","limit","offset","items"],"title":"Page[BusOut]"},"Page_CustomerOut_":{"properties":{"total":{"type":"integer","title":"Total"},"limit":{"type":"integer","title":"Limit"},"offset":{"type":"integer","title":"Offset"},"items":{"items":{"$ref":"#/components/schemas/CustomerOut"},"type":"array","title":"Items"}},"type":"object","required":["total","limit","offset","items"],"title":"Page[CustomerOut]"},"Page_DoctorOut_":{"properties":{"total":{"type":"integer","title":"Total"},"limit":{"type":"integer","title":"Limit"},"offset":{"type":"integer","title":"Offset"},"items":{"items":{"$ref":"#/components/schemas/DoctorOut"},"type":"array","title":"Items"}},"type":"object","required":["total","limit","offset","items"],"title":"Page[DoctorOut]"},"Page_FlightOut_":{"properties":{"total":{"type":"integer","title":"Total"},"limit":{"type":"integer","title":"Limit"},"offset":{"type":"integer","title":"Offset"},"items":{"items":{"$ref":"#/components/schemas/FlightOut"},"type":"array","title":"Items"}},"type":"object","required":["total","limit","offset","items"],"title":"Page[FlightOut]"},"Page_HotelDetail_":{"properties":{"total":{"type":"integer","title":"Total"},"limit":{"type":"integer","title":"Limit"},"offset":{"type":"integer","title":"Offset"},"items":{"items":{"$ref":"#/components/schemas/HotelDetail"},"type":"array","title":"Items"}},"type":"object","required":["total","limit","offset","items"],"title":"Page[HotelDetail]"},"Page_MovementOut_":{"properties":{"total":{"type":"integer","title":"Total"},"limit":{"type":"integer","title":"Limit"},"offset":{"type":"integer","title":"Offset"},"items":{"items":{"$ref":"#/components/schemas/MovementOut"},"type":"array","title":"Items"}},"type":"object","required":["total","limit","offset","items"],"title":"Page[MovementOut]"},"Page_OrderOut_":{"properties":{"total":{"type":"integer","title":"Total"},"limit":{"type":"integer","title":"Limit"},"offset":{"type":"integer","title":"Offset"},"items":{"items":{"$ref":"#/components/schemas/OrderOut"},"type":"array","title":"Items"}},"type":"object","required":["total","limit","offset","items"],"title":"Page[OrderOut]"},"Page_ProductOut_":{"properties":{"total":{"type":"integer","title":"Total"},"limit":{"type":"integer","title":"Limit"},"offset":{"type":"integer","title":"Offset"},"items":{"items":{"$ref":"#/components/schemas/ProductOut"},"type":"array","title":"Items"}},"type":"object","required":["total","limit","offset","items"],"title":"Page[ProductOut]"},"Page_PurchaseOrderOut_":{"properties":{"total":{"type":"integer","title":"Total"},"limit":{"type":"integer","title":"Limit"},"offset":{"type":"integer","title":"Offset"},"items":{"items":{"$ref":"#/components/schemas/PurchaseOrderOut"},"type":"array","title":"Items"}},"type":"object","required":["total","limit","offset","items"],"title":"Page[PurchaseOrderOut]"},"Page_StockLevelOut_":{"properties":{"total":{"type":"integer","title":"Total"},"limit":{"type":"integer","title":"Limit"},"offset":{"type":"integer","title":"Offset"},"items":{"items":{"$ref":"#/components/schemas/StockLevelOut"},"type":"array","title":"Items"}},"type":"object","required":["total","limit","offset","items"],"title":"Page[StockLevelOut]"},"Page_TrainOut_":{"properties":{"total":{"type":"integer","title":"Total"},"limit":{"type":"integer","title":"Limit"},"offset":{"type":"integer","title":"Offset"},"items":{"items":{"$ref":"#/components/schemas/TrainOut"},"type":"array","title":"Items"}},"type":"object","required":["total","limit","offset","items"],"title":"Page[TrainOut]"},"Page_TransactionOut_":{"properties":{"total":{"type":"integer","title":"Total"},"limit":{"type":"integer","title":"Limit"},"offset":{"type":"integer","title":"Offset"},"items":{"items":{"$ref":"#/components/schemas/TransactionOut"},"type":"array","title":"Items"}},"type":"object","required":["total","limit","offset","items"],"title":"Page[TransactionOut]"},"PassengerIn":{"properties":{"full_name":{"type":"string","maxLength":120,"minLength":2,"title":"Full Name"},"age":{"type":"integer","maximum":120.0,"minimum":0.0,"title":"Age"},"gender":{"type":"string","enum":["Male","Female","Other"],"title":"Gender"}},"type":"object","required":["full_name","age","gender"],"title":"PassengerIn"},"PassengerOut":{"properties":{"full_name":{"type":"string","title":"Full Name"},"age":{"type":"integer","title":"Age"},"gender":{"type":"string","title":"Gender"},"seat_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Seat Number"}},"type":"object","required":["full_name","age","gender","seat_number"],"title":"PassengerOut"},"PatientIn":{"properties":{"full_name":{"type":"string","maxLength":120,"minLength":2,"title":"Full Name"},"age":{"type":"integer","maximum":120.0,"minimum":0.0,"title":"Age"},"gender":{"type":"string","enum":["Male","Female","Other"],"title":"Gender"}},"type":"object","required":["full_name","age","gender"],"title":"PatientIn"},"ProductCreate":{"properties":{"sku":{"type":"string","maxLength":20,"title":"Sku"},"name":{"type":"string","title":"Name"},"brand":{"type":"string","title":"Brand"},"category_slug":{"type":"string","title":"Category Slug"},"supplier_id":{"type":"integer","title":"Supplier Id"},"description":{"type":"string","title":"Description","default":""},"mrp":{"type":"number","exclusiveMinimum":0.0,"title":"Mrp"},"price":{"type":"number","exclusiveMinimum":0.0,"title":"Price"},"cost_price":{"type":"number","exclusiveMinimum":0.0,"title":"Cost Price"},"attributes":{"additionalProperties":true,"type":"object","title":"Attributes","default":{}}},"type":"object","required":["sku","name","brand","category_slug","supplier_id","mrp","price","cost_price"],"title":"ProductCreate"},"ProductOut":{"properties":{"id":{"type":"integer","title":"Id"},"sku":{"type":"string","title":"Sku"},"name":{"type":"string","title":"Name"},"brand":{"type":"string","title":"Brand"},"category":{"$ref":"#/components/schemas/CategoryOut"},"description":{"type":"string","title":"Description"},"mrp":{"type":"number","title":"Mrp"},"price":{"type":"number","title":"Price"},"discount_pct":{"type":"integer","title":"Discount Pct"},"rating":{"type":"number","title":"Rating"},"review_count":{"type":"integer","title":"Review Count"},"attributes":{"additionalProperties":true,"type":"object","title":"Attributes"},"tags":{"type":"string","title":"Tags"},"is_active":{"type":"boolean","title":"Is Active"},"total_stock":{"type":"integer","title":"Total Stock"}},"type":"object","required":["id","sku","name","brand","category","description","mrp","price","discount_pct","rating","review_count","attributes","tags","is_active","total_stock"],"title":"ProductOut"},"ProductUpdate":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"mrp":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"null"}],"title":"Mrp"},"price":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"null"}],"title":"Price"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"}},"type":"object","title":"ProductUpdate"},"PurchaseOrderIn":{"properties":{"product_id":{"type":"integer","title":"Product Id"},"warehouse_code":{"type":"string","title":"Warehouse Code"},"quantity":{"type":"integer","maximum":100000.0,"exclusiveMinimum":0.0,"title":"Quantity"}},"type":"object","required":["product_id","warehouse_code","quantity"],"title":"PurchaseOrderIn"},"PurchaseOrderOut":{"properties":{"po_number":{"type":"string","title":"Po Number"},"status":{"type":"string","title":"Status"},"product_id":{"type":"integer","title":"Product Id"},"sku":{"type":"string","title":"Sku"},"product_name":{"type":"string","title":"Product Name"},"supplier":{"type":"string","title":"Supplier"},"warehouse_code":{"type":"string","title":"Warehouse Code"},"quantity":{"type":"integer","title":"Quantity"},"unit_cost":{"type":"number","title":"Unit Cost"},"total_cost":{"type":"number","title":"Total Cost"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"expected_date":{"type":"string","format":"date","title":"Expected Date"},"received_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Received At"}},"type":"object","required":["po_number","status","product_id","sku","product_name","supplier","warehouse_code","quantity","unit_cost","total_cost","created_at","expected_date","received_at"],"title":"PurchaseOrderOut"},"ReasonIn":{"properties":{"reason":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Reason"}},"type":"object","title":"ReasonIn"},"RescheduleIn":{"properties":{"new_slot_id":{"type":"integer","title":"New Slot Id"}},"type":"object","required":["new_slot_id"],"title":"RescheduleIn"},"RoomTypeBase":{"properties":{"name":{"type":"string","title":"Name"},"bed_type":{"type":"string","title":"Bed Type"},"max_guests":{"type":"integer","maximum":10.0,"minimum":1.0,"title":"Max Guests"},"size_sqm":{"type":"integer","exclusiveMinimum":0.0,"title":"Size Sqm"},"price_per_night":{"type":"number","exclusiveMinimum":0.0,"title":"Price Per Night"},"total_rooms":{"type":"integer","exclusiveMinimum":0.0,"title":"Total Rooms"},"breakfast_included":{"type":"boolean","title":"Breakfast Included","default":false},"refundable":{"type":"boolean","title":"Refundable","default":true},"view":{"type":"string","title":"View","default":"City view"}},"type":"object","required":["name","bed_type","max_guests","size_sqm","price_per_night","total_rooms"],"title":"RoomTypeBase"},"RoomTypeOut":{"properties":{"id":{"type":"integer","title":"Id"},"hotel_id":{"type":"integer","title":"Hotel Id"},"name":{"type":"string","title":"Name"},"bed_type":{"type":"string","title":"Bed Type"},"max_guests":{"type":"integer","title":"Max Guests"},"size_sqm":{"type":"integer","title":"Size Sqm"},"price_per_night":{"type":"number","title":"Price Per Night"},"total_rooms":{"type":"integer","title":"Total Rooms"},"available_rooms":{"type":"integer","title":"Available Rooms"},"breakfast_included":{"type":"boolean","title":"Breakfast Included"},"refundable":{"type":"boolean","title":"Refundable"},"view":{"type":"string","title":"View"}},"type":"object","required":["id","hotel_id","name","bed_type","max_guests","size_sqm","price_per_night","total_rooms","available_rooms","breakfast_included","refundable","view"],"title":"RoomTypeOut"},"RoomTypeUpdate":{"properties":{"price_per_night":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"null"}],"title":"Price Per Night"},"available_rooms":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Available Rooms"},"breakfast_included":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Breakfast Included"},"refundable":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Refundable"}},"type":"object","title":"RoomTypeUpdate"},"ShippingIn":{"properties":{"address":{"type":"string","minLength":5,"title":"Address"},"city":{"type":"string","title":"City"},"pincode":{"type":"string","pattern":"^\\d{6}$","title":"Pincode"}},"type":"object","required":["address","city","pincode"],"title":"ShippingIn"},"SlotOut":{"properties":{"id":{"type":"integer","title":"Id"},"start_time":{"type":"string","format":"date-time","title":"Start Time"},"end_time":{"type":"string","format":"date-time","title":"End Time"},"mode":{"type":"string","title":"Mode"}},"type":"object","required":["id","start_time","end_time","mode"],"title":"SlotOut"},"SpendingSummary":{"properties":{"account_number":{"type":"string","title":"Account Number"},"period_days":{"type":"integer","title":"Period Days"},"total_spent":{"type":"number","title":"Total Spent"},"total_received":{"type":"number","title":"Total Received"},"net_flow":{"type":"number","title":"Net Flow"},"by_category":{"items":{"$ref":"#/components/schemas/CategorySpend"},"type":"array","title":"By Category"},"income_by_category":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Income By Category"}},"type":"object","required":["account_number","period_days","total_spent","total_received","net_flow","by_category","income_by_category"],"title":"SpendingSummary"},"StationOut":{"properties":{"code":{"type":"string","title":"Code"},"name":{"type":"string","title":"Name"},"city":{"type":"string","title":"City"},"state":{"type":"string","title":"State"}},"type":"object","required":["code","name","city","state"],"title":"StationOut"},"StockLevelOut":{"properties":{"product_id":{"type":"integer","title":"Product Id"},"sku":{"type":"string","title":"Sku"},"product_name":{"type":"string","title":"Product Name"},"brand":{"type":"string","title":"Brand"},"category":{"type":"string","title":"Category"},"warehouse_code":{"type":"string","title":"Warehouse Code"},"warehouse_city":{"type":"string","title":"Warehouse City"},"quantity":{"type":"integer","title":"Quantity"},"reorder_level":{"type":"integer","title":"Reorder Level"},"reorder_qty":{"type":"integer","title":"Reorder Qty"},"is_low":{"type":"boolean","title":"Is Low"},"stock_value":{"type":"number","title":"Stock Value"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["product_id","sku","product_name","brand","category","warehouse_code","warehouse_city","quantity","reorder_level","reorder_qty","is_low","stock_value","updated_at"],"title":"StockLevelOut"},"SupplierOut":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"city":{"type":"string","title":"City"},"gstin":{"type":"string","title":"Gstin"},"contact_email":{"type":"string","title":"Contact Email"},"phone":{"type":"string","title":"Phone"},"rating":{"type":"number","title":"Rating"},"lead_time_days":{"type":"integer","title":"Lead Time Days"}},"type":"object","required":["id","name","city","gstin","contact_email","phone","rating","lead_time_days"],"title":"SupplierOut"},"TrainBookingCreate":{"properties":{"contact":{"$ref":"#/components/schemas/ContactIn"},"payment_method":{"type":"string","enum":["CARD","UPI","NETBANKING","WALLET"],"title":"Payment Method","default":"CARD"},"special_requests":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Special Requests"},"train_id":{"type":"integer","title":"Train Id"},"class_code":{"type":"string","maxLength":2,"minLength":2,"title":"Class Code"},"passengers":{"items":{"$ref":"#/components/schemas/PassengerIn"},"type":"array","maxItems":6,"minItems":1,"title":"Passengers"}},"type":"object","required":["contact","train_id","class_code","passengers"],"title":"TrainBookingCreate"},"TrainClassBase":{"properties":{"class_code":{"type":"string","enum":["SL","3E","3A","2A","1A","CC","EC"],"title":"Class Code"},"class_name":{"type":"string","title":"Class Name"},"fare":{"type":"number","exclusiveMinimum":0.0,"title":"Fare"},"total_seats":{"type":"integer","maximum":2000.0,"exclusiveMinimum":0.0,"title":"Total Seats"}},"type":"object","required":["class_code","class_name","fare","total_seats"],"title":"TrainClassBase"},"TrainClassOut":{"properties":{"id":{"type":"integer","title":"Id"},"class_code":{"type":"string","title":"Class Code"},"class_name":{"type":"string","title":"Class Name"},"fare":{"type":"number","title":"Fare"},"total_seats":{"type":"integer","title":"Total Seats"},"available_seats":{"type":"integer","title":"Available Seats"}},"type":"object","required":["id","class_code","class_name","fare","total_seats","available_seats"],"title":"TrainClassOut"},"TrainCreate":{"properties":{"train_number":{"type":"string","maxLength":6,"title":"Train Number"},"name":{"type":"string","title":"Name"},"train_type":{"type":"string","enum":["Rajdhani","Vande Bharat","Shatabdi","Duronto","Superfast","Garib Rath"],"title":"Train Type"},"origin_code":{"type":"string","title":"Origin Code"},"destination_code":{"type":"string","title":"Destination Code"},"departure_time":{"type":"string","format":"date-time","title":"Departure Time"},"arrival_time":{"type":"string","format":"date-time","title":"Arrival Time"},"distance_km":{"type":"integer","exclusiveMinimum":0.0,"title":"Distance Km"},"has_pantry":{"type":"boolean","title":"Has Pantry","default":true},"rating":{"type":"number","maximum":5.0,"minimum":0.0,"title":"Rating","default":4.0},"classes":{"items":{"$ref":"#/components/schemas/TrainClassBase"},"type":"array","minItems":1,"title":"Classes"}},"type":"object","required":["train_number","name","train_type","origin_code","destination_code","departure_time","arrival_time","distance_km","classes"],"title":"TrainCreate"},"TrainOut":{"properties":{"id":{"type":"integer","title":"Id"},"train_number":{"type":"string","title":"Train Number"},"name":{"type":"string","title":"Name"},"train_type":{"type":"string","title":"Train Type"},"origin":{"$ref":"#/components/schemas/StationOut"},"destination":{"$ref":"#/components/schemas/StationOut"},"departure_time":{"type":"string","format":"date-time","title":"Departure Time"},"arrival_time":{"type":"string","format":"date-time","title":"Arrival Time"},"duration_minutes":{"type":"integer","title":"Duration Minutes"},"distance_km":{"type":"integer","title":"Distance Km"},"has_pantry":{"type":"boolean","title":"Has Pantry"},"rating":{"type":"number","title":"Rating"},"status":{"type":"string","title":"Status"},"classes":{"items":{"$ref":"#/components/schemas/TrainClassOut"},"type":"array","title":"Classes"}},"type":"object","required":["id","train_number","name","train_type","origin","destination","departure_time","arrival_time","duration_minutes","distance_km","has_pantry","rating","status","classes"],"title":"TrainOut"},"TrainUpdate":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"departure_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Departure Time"},"arrival_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Arrival Time"},"has_pantry":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Has Pantry"},"status":{"anyOf":[{"type":"string","enum":["SCHEDULED","ON_TIME","DELAYED","CANCELLED"]},{"type":"null"}],"title":"Status"}},"type":"object","title":"TrainUpdate"},"TransactionOut":{"properties":{"txn_ref":{"type":"string","title":"Txn Ref"},"txn_type":{"$ref":"#/components/schemas/TxnType"},"amount":{"type":"number","title":"Amount"},"balance_after":{"type":"number","title":"Balance After"},"channel":{"type":"string","title":"Channel"},"category":{"type":"string","title":"Category"},"counterparty":{"type":"string","title":"Counterparty"},"description":{"type":"string","title":"Description"},"status":{"type":"string","title":"Status"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["txn_ref","txn_type","amount","balance_after","channel","category","counterparty","description","status","created_at"],"title":"TransactionOut"},"TransferIn":{"properties":{"from_account":{"type":"string","title":"From Account","description":"Source D MALL ONLINE Bank account number"},"amount":{"type":"number","exclusiveMinimum":0.0,"title":"Amount"},"mode":{"type":"string","enum":["UPI","IMPS","NEFT","RTGS","INTERNAL"],"title":"Mode","default":"IMPS"},"to_account":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"To Account","description":"Destination D MALL ONLINE Bank account number"},"beneficiary_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Beneficiary Id","description":"Saved external beneficiary"},"remarks":{"anyOf":[{"type":"string","maxLength":80},{"type":"null"}],"title":"Remarks"}},"type":"object","required":["from_account","amount"],"title":"TransferIn"},"TransferOut":{"properties":{"status":{"type":"string","title":"Status"},"txn_ref":{"type":"string","title":"Txn Ref"},"mode":{"type":"string","title":"Mode"},"amount":{"type":"number","title":"Amount"},"payee":{"type":"string","title":"Payee"},"balance_after":{"type":"number","title":"Balance After"},"timestamp":{"type":"string","title":"Timestamp"}},"type":"object","required":["status","txn_ref","mode","amount","payee","balance_after","timestamp"],"title":"TransferOut"},"TransferStockIn":{"properties":{"product_id":{"type":"integer","title":"Product Id"},"from_warehouse":{"type":"string","title":"From Warehouse"},"to_warehouse":{"type":"string","title":"To Warehouse"},"quantity":{"type":"integer","exclusiveMinimum":0.0,"title":"Quantity"}},"type":"object","required":["product_id","from_warehouse","to_warehouse","quantity"],"title":"TransferStockIn"},"TxnType":{"type":"string","enum":["CREDIT","DEBIT"],"title":"TxnType"},"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"},"WarehouseOut":{"properties":{"id":{"type":"integer","title":"Id"},"code":{"type":"string","title":"Code"},"name":{"type":"string","title":"Name"},"city":{"type":"string","title":"City"},"state":{"type":"string","title":"State"},"address":{"type":"string","title":"Address"},"capacity_units":{"type":"integer","title":"Capacity Units"}},"type":"object","required":["id","code","name","city","state","address","capacity_units"],"title":"WarehouseOut"},"WarehouseSummary":{"properties":{"code":{"type":"string","title":"Code"},"name":{"type":"string","title":"Name"},"city":{"type":"string","title":"City"},"skus":{"type":"integer","title":"Skus"},"units":{"type":"integer","title":"Units"},"stock_value":{"type":"number","title":"Stock Value"},"low_stock_lines":{"type":"integer","title":"Low Stock Lines"},"utilisation_pct":{"type":"number","title":"Utilisation Pct"}},"type":"object","required":["code","name","city","skus","units","stock_value","low_stock_lines","utilisation_pct"],"title":"WarehouseSummary"}},"securitySchemes":{"ApiKeyAuth":{"type":"http","scheme":"bearer","bearerFormat":"mbz_<key id>_<secret>","description":"Personal API key. Create one under Account → API keys."}}},"tags":[{"name":"Customers","description":"Shared customer identity across all modules"},{"name":"Bank","description":"D MALL ONLINE Bank: accounts, transactions, transfers, cards and loans"},{"name":"Shop","description":"D MALL ONLINE Shop: products, cart and orders"},{"name":"Inventory","description":"Warehouses, stock levels, movements and purchase orders"},{"name":"Healthcare","description":"D MALL ONLINE Health: hospitals, doctors, slots and appointments"},{"name":"Flights","description":"Airports, airlines, flight search and fare calendar"},{"name":"Trains","description":"Stations and train runs with class-wise availability"},{"name":"Buses","description":"Intercity coaches and operators"},{"name":"Hotels","description":"Properties and room types"},{"name":"Bookings","description":"Create, retrieve and cancel travel bookings"},{"name":"Insights","description":"Aggregated metrics"}],"servers":[{"url":"https://dmall.online","description":"Your D MALL ONLINE sandbox"}],"security":[{"ApiKeyAuth":[]}]}