{"openapi":"3.0.3","info":{"title":"HostSynk Mobile & Web REST API","description":"Comprehensive backend API powering the HostSynk React Native Mobile Application and Web Workspace. Every endpoint in this documentation uses the exact parameters and field names found in the mobile application forms.","version":"1.0.0","contact":{"name":"HostSynk Support","email":"support@hostsynk.com"}},"servers":[{"url":"https:\/\/prodv1.hostsynk.com\/api\/v1","description":"Current API Server"}],"components":{"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"Token","description":"Paste your Bearer Token from \/auth\/login or \/auth\/register to authenticate."}},"schemas":{"RegisterRequest":{"type":"object","required":["full_name","email","password"],"properties":{"full_name":{"type":"string","example":"Rizwan Khan","description":"User full name"},"email":{"type":"string","format":"email","example":"rizwan@hostsynk.com","description":"Email address"},"country_code":{"type":"string","example":"+91","description":"Country calling code (+91, +1, +44, +971, +61)"},"phone":{"type":"string","example":"9876543210","description":"Mobile number"},"password":{"type":"string","format":"password","example":"password123","description":"Account password (min 6 chars)"},"company_name":{"type":"string","example":"Jalanta Stays & Resorts","description":"Company or workspace name"}}},"LoginRequest":{"type":"object","required":["email","password"],"properties":{"email":{"type":"string","format":"email","example":"admin@gmail.com","description":"Registered user email"},"password":{"type":"string","format":"password","example":"12345678","description":"Account password"}}},"OnboardingSaveStepRequest":{"type":"object","properties":{"company_name":{"type":"string","example":"Jalanta Stays Private Limited","description":"Business company name"},"company_type":{"type":"string","example":"Private Limited","description":"Entity type (Private Limited, Sole Proprietorship, LLP, Partnership)"},"company_registration_details":{"type":"string","example":"CIN-U55101MH2023PTC123456","description":"Registration or CIN number"},"contact_person":{"type":"string","example":"Rizwan Khan","description":"Primary contact person name"},"company_email":{"type":"string","example":"info@jalantastays.com","description":"Official company email"},"company_phone":{"type":"string","example":"+919876543210","description":"Official company phone"},"website_url":{"type":"string","example":"https:\/\/jalantastays.com","description":"Website URL"},"country":{"type":"string","example":"India","description":"Country"},"state":{"type":"string","example":"Maharashtra","description":"State"},"city":{"type":"string","example":"Mumbai","description":"City"},"pincode":{"type":"string","example":"400050","description":"Postal \/ PIN code"},"address_line_1":{"type":"string","example":"101 Luxury Palms, Bandra West","description":"Address Line 1"},"address_line_2":{"type":"string","example":"Near Linking Road","description":"Address Line 2"},"gst_number":{"type":"string","example":"27AABCU9603R1ZN","description":"15-character GSTIN number"},"pan_number":{"type":"string","example":"AABCU9603R","description":"10-character PAN number"},"tax_details":{"type":"string","example":"18% GST Applicable on Luxury Accommodations","description":"Tax notes"},"bank_name":{"type":"string","example":"HDFC Bank","description":"Bank name"},"bank_account_holder":{"type":"string","example":"Jalanta Stays Pvt Ltd","description":"Account holder name"},"bank_account_number":{"type":"string","example":"50200012345678","description":"Bank account number"},"bank_ifsc_code":{"type":"string","example":"HDFC0000123","description":"Bank IFSC code"},"currency":{"type":"string","example":"INR","description":"Currency code (INR, USD, EUR, AED)"},"timezone":{"type":"string","example":"Asia\/Kolkata","description":"Timezone string"},"preferred_language":{"type":"string","example":"English","description":"Default language"},"invoice_prefix":{"type":"string","example":"INV-JS-","description":"Invoice numbering prefix"},"invoice_next_number":{"type":"integer","example":1001,"description":"Next invoice number"},"invoice_footer_note":{"type":"string","example":"Thank you for choosing Jalanta Stays. Have a wonderful experience!","description":"Footer message on PDF receipts"},"min_stay":{"type":"integer","example":1,"description":"Minimum night stay rule"},"max_stay":{"type":"integer","example":30,"description":"Maximum night stay rule"},"instant_booking":{"type":"boolean","example":true,"description":"Whether bookings are instantly confirmed"},"cancellation_policy":{"type":"string","example":"Full refund if cancelled up to 48 hours prior to check-in.","description":"Cancellation policy text"},"check_in_time":{"type":"string","example":"14:00","description":"Standard check-in time (HH:MM)"},"check_out_time":{"type":"string","example":"11:00","description":"Standard check-out time (HH:MM)"},"subscription_plan":{"type":"string","example":"1 Month Plan","description":"Plan option: Free Trial, 1 Month Plan, 3 Month Plan"}}},"RoleRequest":{"type":"object","required":["name"],"properties":{"name":{"type":"string","example":"Front Desk & Operations","description":"Role title"},"description":{"type":"string","example":"Handles daily customer check-in, housekeeping, and inventory","description":"Role responsibilities"}}},"RolePermissionsAssignRequest":{"type":"object","required":["permissions"],"properties":{"permissions":{"type":"array","items":{"type":"object","properties":{"module_name":{"type":"string","example":"Bookings","description":"Module: Bookings, Properties, Users, Roles"},"action":{"type":"string","example":"create","description":"Action: view, create, update, delete"}}},"example":[{"module_name":"Bookings","action":"view"},{"module_name":"Bookings","action":"create"},{"module_name":"Bookings","action":"update"},{"module_name":"Properties","action":"view"},{"module_name":"Users","action":"view"}]}}},"UserRequest":{"type":"object","required":["name","email","password","role_id"],"properties":{"name":{"type":"string","example":"Sameer Sharma","description":"Full name of team member"},"email":{"type":"string","format":"email","example":"sameer.sales@hostsynk.com","description":"Work email address"},"password":{"type":"string","format":"password","example":"password123","description":"Login password (min 6 characters)"},"role_id":{"type":"integer","example":3,"description":"Role ID (e.g. Sales, Caretaker, Admin, Owner)"},"status":{"type":"string","enum":["active","inactive"],"example":"active","description":"Account status"}}},"PropertyRequest":{"type":"object","required":["displayName","propertyType"],"properties":{"propertyType":{"type":"string","enum":["Hotel","Villa","Apartment","Other"],"example":"Villa","description":"Property classification"},"propertyCategory":{"type":"string","example":"Entire Villa","description":"Sub-category: Entire Villa, Room-wise Villa, Hotel, Resort, 2 BHK, Studio"},"displayName":{"type":"string","example":"Jalanta Water Nest Villa","description":"Public display title of the property"},"propertyCode":{"type":"string","example":"JAL-WN-01","description":"Unique reference code"},"propertyStatus":{"type":"string","enum":["Draft","Active","Archived"],"example":"Active","description":"Listing state"},"starRating":{"type":"string","example":"5 Star","description":"Quality rating: 3 Star, 4 Star, 5 Star"},"yearEstablished":{"type":"string","example":"2022","description":"Year established"},"totalFloors":{"type":"string","example":"2","description":"Number of floors"},"shortDescription":{"type":"string","example":"Exclusive 5-BHK private luxury pool villa with scenic waterfront views and lush greenery.","description":"Short summary description"},"tags":{"type":"array","items":{"type":"string"},"example":["Family Friendly","Private Pool","Waterfront","Pet Friendly"],"description":"Display tags"},"ownerType":{"type":"string","enum":["Individual","Company","Partnership"],"example":"Individual","description":"Owner ownership structure"},"ownerName":{"type":"string","example":"Amitabh Deshmukh","description":"Owner legal name"},"companyName":{"type":"string","example":"Deshmukh Hospitality","description":"Owner company name"},"ownerPhone":{"type":"string","example":"+919820012345","description":"Owner mobile number"},"ownerAlternatePhone":{"type":"string","example":"+919820098765","description":"Owner secondary phone"},"ownerEmail":{"type":"string","format":"email","example":"amitabh.deshmukh@gmail.com","description":"Owner email address"},"ownerWhatsApp":{"type":"string","example":"+919820012345","description":"Owner WhatsApp number"},"ownerAddress":{"type":"string","example":"402 Silver Arch, Worli Sea Face, Mumbai","description":"Owner residential address"},"preferredComm":{"type":"string","enum":["WhatsApp","Phone","Email"],"example":"WhatsApp","description":"Preferred channel of communication"},"preferredLanguage":{"type":"string","example":"English","description":"Preferred speaking language"},"managerName":{"type":"string","example":"Vikas Patel","description":"Assigned property manager"},"managerPhone":{"type":"string","example":"+919930054321","description":"Manager contact number"},"caretakerName":{"type":"string","example":"Ramesh Shinde","description":"On-site caretaker name"},"caretakerPhone":{"type":"string","example":"+919819077665","description":"Caretaker contact number"},"country":{"type":"string","example":"India","description":"Country"},"state":{"type":"string","example":"Maharashtra","description":"State"},"city":{"type":"string","example":"Lonavala","description":"City"},"area":{"type":"string","example":"Tungarli","description":"Area \/ Neighborhood"},"fullAddress":{"type":"string","example":"Plot 14, Gold Valley Sector D, Tungarli, Lonavala, Maharashtra 410401","description":"Full street address"},"postalCode":{"type":"string","example":"410401","description":"Postal \/ PIN code"},"locationType":{"type":"string","enum":["City","Beach","Mountain","Countryside","Forest","Lakefront"],"example":"Mountain","description":"Geographic topography"},"roadCondition":{"type":"string","enum":["Excellent","Good","Average","Difficult"],"example":"Good","description":"Road accessibility condition"},"carAccessible":{"type":"boolean","example":true,"description":"Direct car access availability"},"parkingAvailable":{"type":"boolean","example":true,"description":"On-site parking availability"},"villaBookingType":{"type":"string","example":"Entire Villa Only","description":"Booking model: Entire Villa Only, Room-wise, Both"},"villaBedrooms":{"type":"string","example":"5","description":"Number of bedrooms"},"villaBathrooms":{"type":"string","example":"6","description":"Number of bathrooms"},"villaPrivatePool":{"type":"boolean","example":true,"description":"Has private swimming pool"},"villaGarden":{"type":"boolean","example":true,"description":"Has private landscaped garden"},"villaMaxGuests":{"type":"string","example":"15","description":"Total maximum guest capacity"},"villaMaxAdults":{"type":"string","example":"12","description":"Maximum adults allowed"},"villaMaxChildren":{"type":"string","example":"4","description":"Maximum children allowed"},"amenities":{"type":"object","description":"Checklist of property amenities","example":{"wifi":true,"ac":true,"tv":true,"geyser":true,"powerBackup":true,"privatePool":true,"garden":true,"fullKitchen":true,"microwave":true,"cctv":true,"firstAid":true,"bbq":true}},"foodAvailable":{"type":"boolean","example":true,"description":"Food service available on-site"},"outsideFoodAllowed":{"type":"boolean","example":true,"description":"Guests allowed to bring outside food"},"cookingAllowed":{"type":"boolean","example":true,"description":"Guests allowed to cook"},"mealPlans":{"type":"array","items":{"type":"string"},"example":["Room Only","Breakfast Included","All Meals"],"description":"Offered meal packages"},"pricingType":{"type":"string","enum":["Per Room","Per Unit","Entire Property","Per Person"],"example":"Entire Property","description":"Pricing calculation model"},"weekday_price":{"type":"number","example":25000,"description":"Standard weekday nightly price"},"weekend_price":{"type":"number","example":35000,"description":"Weekend nightly price (Fri-Sun)"},"price":{"type":"number","example":25000,"description":"Base price"},"securityDeposit":{"type":"string","example":"5000","description":"Refundable security deposit amount"},"extraAdultCharge":{"type":"string","example":"1500","description":"Charge per extra adult per night"},"checkin_time":{"type":"string","example":"14:00","description":"Check-in time"},"checkout_time":{"type":"string","example":"11:00","description":"Check-out time"},"cancellation_policy":{"type":"string","example":"Strict: 50% refund up to 7 days before check-in.","description":"Cancellation policy statement"},"rulesSmoking":{"type":"boolean","example":false,"description":"Smoking allowed inside"},"rulesAlcohol":{"type":"boolean","example":true,"description":"Alcohol permitted on premises"},"rulesPets":{"type":"boolean","example":true,"description":"Pets allowed"},"rulesQuietHoursStart":{"type":"string","example":"22:00","description":"Quiet hours start time"},"rulesQuietHoursEnd":{"type":"string","example":"08:00","description":"Quiet hours end time"},"image":{"type":"string","example":"https:\/\/images.unsplash.com\/photo-1580587771525-78b9dba3b914?w=800","description":"Primary cover photo URL"},"gallery_images":{"type":"array","description":"Gallery photo items","items":{"type":"object","properties":{"id":{"type":"string","example":"1"},"url":{"type":"string","example":"https:\/\/images.unsplash.com\/photo-1580587771525-78b9dba3b914?w=800"},"label":{"type":"string","example":"Exterior & Pool"}}},"example":[{"id":"1","url":"https:\/\/images.unsplash.com\/photo-1580587771525-78b9dba3b914?w=800","label":"Exterior & Pool"},{"id":"2","url":"https:\/\/images.unsplash.com\/photo-1600585154340-be6161a56a0c?w=800","label":"Living Room"},{"id":"3","url":"https:\/\/images.unsplash.com\/photo-1600566753376-12c8ab7fb75b?w=800","label":"Master Bedroom"}]}}},"BookingRequest":{"type":"object","required":["customerName","mobile","checkinDate","checkoutDate"],"properties":{"property_id":{"type":"integer","example":1,"description":"Target property ID"},"property":{"type":"string","example":"Jalanta Water Nest Villa","description":"Target property \/ villa display title"},"villa":{"type":"string","example":"Jalanta Water Nest Villa","description":"Alternative villa name property"},"salesBy":{"type":"string","example":"Sameer Sharma","description":"Sales executive in charge of booking"},"admin":{"type":"string","example":"Host Admin","description":"Admin authorizing the reservation"},"customerName":{"type":"string","example":"Rahul Verma","description":"Guest full name"},"email":{"type":"string","format":"email","example":"rahul.verma@example.com","description":"Guest email address"},"mobile":{"type":"string","example":"+919811223344","description":"Guest contact phone number"},"location":{"type":"string","example":"Pune","description":"Guest home city \/ client location"},"groupType":{"type":"string","enum":["Family","Friends","Corporate","Couple"],"example":"Family","description":"Travel group category"},"bookingStatus":{"type":"string","enum":["Open","Booked","Block by owner","Maintaince","Tentative","Blocked"],"example":"Open","description":"Current booking progress status"},"checkinDate":{"type":"string","format":"date","example":"2026-09-20","description":"Check-in date (YYYY-MM-DD)"},"checkoutDate":{"type":"string","format":"date","example":"2026-09-23","description":"Check-out date (YYYY-MM-DD)"},"roomType":{"type":"string","example":"Entire Villa","description":"Room or unit category"},"roomsToBook":{"type":"string","example":"1","description":"Number of units \/ rooms booked"},"totalAdults":{"type":"string","example":"6","description":"Total adult guests"},"totalChildren":{"type":"string","example":"2","description":"Total child guests"},"totalNights":{"type":"string","example":"3","description":"Calculated duration in nights"},"stayAmount":{"type":"string","example":"75000","description":"Base accommodation stay charge"},"foodAmount":{"type":"string","example":"15000","description":"Meal packages charge"},"stayTaxPercent":{"type":"string","example":"12","description":"Stay tax percentage (GST)"},"foodTaxPercent":{"type":"string","example":"5","description":"Food tax percentage (GST)"},"discountPercent":{"type":"string","example":"5","description":"Discount percentage applied"},"discountAmount":{"type":"string","example":"4500","description":"Calculated discount value"},"totalFoodStay":{"type":"string","example":"90000","description":"Sum of stay + food charges"},"depositAmount":{"type":"string","example":"5000","description":"Security deposit collected"},"amountPaid":{"type":"string","example":"30000","description":"Advance payment received from guest"},"balanceAmount":{"type":"string","example":"65250","description":"Remaining balance due from guest"},"paymentStatus":{"type":"string","enum":["Token received","30% payment received","40% payment received","50% payment received","Full payment stay","Full payment stay+food"],"example":"Token received","description":"Payment collection status"},"paymentProof":{"type":"string","example":"https:\/\/images.unsplash.com\/photo-1554224155-8d04cb21cd6c?w=400","description":"Payment receipt screenshot URL"},"idProofs":{"type":"array","items":{"type":"string"},"example":["https:\/\/images.unsplash.com\/photo-1544717305-2782549b5136?w=400"],"description":"List of uploaded government ID proof image URLs"}}},"CalendarBlockRequest":{"type":"object","required":["start_date"],"properties":{"property_id":{"type":"integer","example":1,"description":"Property ID"},"villa":{"type":"string","example":"Jalanta Water Nest Villa","description":"Villa display name"},"start_date":{"type":"string","format":"date","example":"2026-09-25","description":"Start date to block (YYYY-MM-DD)"},"end_date":{"type":"string","format":"date","example":"2026-09-27","description":"End date to block (YYYY-MM-DD)"},"action":{"type":"string","enum":["block","unblock"],"example":"block","description":"Action type: block or unblock"},"reason":{"type":"string","enum":["Booked","Block by owner","Maintaince","Tentative","Blocked"],"example":"Maintaince","description":"Reason for blocking"}}}}},"paths":{"\/auth\/register":{"post":{"tags":["Authentication"],"summary":"Register a new Company & Owner Account","description":"Creates a new company workspace, default Admin role, and root user account. Returns Bearer token immediately.","requestBody":{"required":true,"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RegisterRequest"}}}},"responses":{"201":{"description":"Account created successfully with access token"},"422":{"description":"Validation error"}}}},"\/auth\/login":{"post":{"tags":["Authentication"],"summary":"Login to obtain API Bearer Token","description":"Authenticates host admin, company owner, or team member (Sales, Caretaker) and returns a Bearer access token.","requestBody":{"required":true,"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/LoginRequest"}}}},"responses":{"200":{"description":"Login successful with user profile, company details, permissions, and Bearer token"},"401":{"description":"Invalid email or password"}}}},"\/auth\/me":{"get":{"tags":["Authentication"],"summary":"Get authenticated user profile & permissions","security":[{"BearerAuth":[]}],"responses":{"200":{"description":"User profile and permissions retrieved"},"401":{"description":"Unauthenticated token"}}}},"\/auth\/logout":{"post":{"tags":["Authentication"],"summary":"Logout & revoke current Bearer token","security":[{"BearerAuth":[]}],"responses":{"200":{"description":"Logged out successfully"}}}},"\/onboarding":{"get":{"tags":["Company Onboarding"],"summary":"Get current company onboarding status","security":[{"BearerAuth":[]}],"responses":{"200":{"description":"Company onboarding profile retrieved"}}}},"\/onboarding\/save-step":{"post":{"tags":["Company Onboarding"],"summary":"Save company onboarding wizard step data","description":"Supports saving details for Company, Contact, Finance, Operations, and Subscription Plan.","security":[{"BearerAuth":[]}],"requestBody":{"required":true,"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/OnboardingSaveStepRequest"}}}},"responses":{"200":{"description":"Step saved successfully"}}}},"\/onboarding\/complete":{"post":{"tags":["Company Onboarding"],"summary":"Finalize onboarding process","security":[{"BearerAuth":[]}],"responses":{"200":{"description":"Onboarding marked complete"}}}},"\/roles":{"get":{"tags":["Roles & Permissions"],"summary":"List all roles for active company","security":[{"BearerAuth":[]}],"responses":{"200":{"description":"Roles list returned"}}},"post":{"tags":["Roles & Permissions"],"summary":"Create a new custom role","security":[{"BearerAuth":[]}],"requestBody":{"required":true,"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RoleRequest"}}}},"responses":{"201":{"description":"Role created"}}}},"\/permissions":{"get":{"tags":["Roles & Permissions"],"summary":"Get system master permissions catalog","security":[{"BearerAuth":[]}],"responses":{"200":{"description":"Permissions catalog returned"}}}},"\/roles\/{id}\/permissions":{"get":{"tags":["Roles & Permissions"],"summary":"Get permissions assigned to a role","security":[{"BearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","example":3}}],"responses":{"200":{"description":"Assigned permissions returned"}}},"post":{"tags":["Roles & Permissions"],"summary":"Assign \/ sync permissions to a role","security":[{"BearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","example":3}}],"requestBody":{"required":true,"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RolePermissionsAssignRequest"}}}},"responses":{"200":{"description":"Role permissions updated"}}}},"\/users":{"get":{"tags":["Users & Team"],"summary":"List team members for the company","security":[{"BearerAuth":[]}],"responses":{"200":{"description":"Team members list"}}},"post":{"tags":["Users & Team"],"summary":"Create or invite a new team member","security":[{"BearerAuth":[]}],"requestBody":{"required":true,"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/UserRequest"}}}},"responses":{"201":{"description":"User created"}}}},"\/users\/{id}":{"get":{"tags":["Users & Team"],"summary":"Get team member details","security":[{"BearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","example":1}}],"responses":{"200":{"description":"User details"}}},"put":{"tags":["Users & Team"],"summary":"Update a team member","security":[{"BearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","example":1}}],"requestBody":{"required":true,"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/UserRequest"}}}},"responses":{"200":{"description":"User updated"}}},"delete":{"tags":["Users & Team"],"summary":"Delete a team member","security":[{"BearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","example":1}}],"responses":{"200":{"description":"User removed"}}}},"\/properties":{"get":{"tags":["Properties"],"summary":"List properties with filters","security":[{"BearerAuth":[]}],"parameters":[{"name":"type","in":"query","schema":{"type":"string","enum":["Hotel","Villa","Apartment","Other"]},"example":"Villa","description":"Filter by property category"},{"name":"status","in":"query","schema":{"type":"string","enum":["Draft","Active","Archived"]},"example":"Active","description":"Filter by status"},{"name":"search","in":"query","schema":{"type":"string"},"example":"Water Nest","description":"Search by name, property code, or city"}],"responses":{"200":{"description":"Properties list retrieved"}}},"post":{"tags":["Properties"],"summary":"Create a new property","description":"Accepts all 7-step fields from PropertyManagementScreen (Type, Owner Info, Location, Configuration, Amenities, Pricing, and Policies).","security":[{"BearerAuth":[]}],"requestBody":{"required":true,"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/PropertyRequest"}}}},"responses":{"201":{"description":"Property created successfully"}}}},"\/properties\/{id}":{"get":{"tags":["Properties"],"summary":"Get property details","security":[{"BearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","example":1}}],"responses":{"200":{"description":"Property details"}}},"put":{"tags":["Properties"],"summary":"Update property details","security":[{"BearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","example":1}}],"requestBody":{"required":true,"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/PropertyRequest"}}}},"responses":{"200":{"description":"Property updated successfully"}}},"delete":{"tags":["Properties"],"summary":"Delete property","security":[{"BearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","example":1}}],"responses":{"200":{"description":"Property deleted successfully"}}}},"\/properties\/upload-media":{"post":{"tags":["Properties"],"summary":"Upload image or document for a property","security":[{"BearerAuth":[]}],"requestBody":{"required":true,"content":{"multipart\/form-data":{"schema":{"type":"object","required":["file"],"properties":{"file":{"type":"string","format":"binary","description":"Image file (.jpg, .png, .webp)"}}}}}},"responses":{"200":{"description":"File uploaded with URL"}}}},"\/bookings":{"get":{"tags":["Bookings"],"summary":"List bookings with status & date filters","security":[{"BearerAuth":[]}],"parameters":[{"name":"status","in":"query","schema":{"type":"string","enum":["All","Open","Booked","Block by owner","Maintaince","Tentative","Blocked","Confirmed","Cancelled"]},"example":"Open","description":"Filter by booking status"},{"name":"date_filter","in":"query","schema":{"type":"string","enum":["All","Today's Check-in","Today's Checkout","Upcoming"]},"example":"All","description":"Filter by date event"},{"name":"search","in":"query","schema":{"type":"string"},"example":"Rahul","description":"Search by guest name, mobile, or email"}],"responses":{"200":{"description":"Bookings list returned"}}},"post":{"tags":["Bookings"],"summary":"Create a new reservation \/ booking","description":"Accepts all fields from AddBookingScreen, calculates stay + food taxes, discounts, and outstanding balance automatically.","security":[{"BearerAuth":[]}],"requestBody":{"required":true,"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/BookingRequest"}}}},"responses":{"201":{"description":"Booking created with computed balance and totals"}}}},"\/bookings\/{id}":{"get":{"tags":["Bookings"],"summary":"Get booking details","security":[{"BearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","example":1}}],"responses":{"200":{"description":"Booking details"}}},"put":{"tags":["Bookings"],"summary":"Update booking details","security":[{"BearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","example":1}}],"requestBody":{"required":true,"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/BookingRequest"}}}},"responses":{"200":{"description":"Booking updated successfully"}}},"delete":{"tags":["Bookings"],"summary":"Delete \/ cancel booking","security":[{"BearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","example":1}}],"responses":{"200":{"description":"Booking removed"}}}},"\/calendar\/availability":{"get":{"tags":["Calendar & Availability"],"summary":"Get property date-wise availability and blocked dates","security":[{"BearerAuth":[]}],"parameters":[{"name":"property_id","in":"query","required":false,"schema":{"type":"integer","example":1},"description":"Property ID"},{"name":"villa","in":"query","required":false,"schema":{"type":"string","example":"Jalanta Water Nest Villa"},"description":"Villa display name"}],"responses":{"200":{"description":"Marked calendar dates for React Native calendar UI"}}}},"\/calendar\/block-dates":{"post":{"tags":["Calendar & Availability"],"summary":"Block or unblock dates for a property","description":"Sets or removes block status for selected date ranges from CalendarScreen.","security":[{"BearerAuth":[]}],"requestBody":{"required":true,"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/CalendarBlockRequest"}}}},"responses":{"200":{"description":"Dates blocked\/unblocked successfully"}}}},"\/dashboard\/metrics":{"get":{"tags":["Dashboard"],"summary":"Get operational statistics for mobile dashboard","description":"Returns counts of bookings, properties, team members, total revenue, and check-ins\/outs today.","security":[{"BearerAuth":[]}],"responses":{"200":{"description":"Dashboard metrics"}}}}}}