[{"data":1,"prerenderedAt":2389},["ShallowReactive",2],{"navigation":3,"\u002Fbooki-documentation\u002Fapi\u002Fbookings-public":303,"\u002Fbooki-documentation\u002Fapi\u002Fbookings-public-surround":2384},[4,55,105],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":54},"Nuxt Guide","i-lucide-layout","\u002Fnuxt-guide","1.nuxt-guide",[10,14,19,24,29,34,39,44,49],{"title":11,"path":12,"stem":13,"icon":6},"Overview","\u002Fnuxt-guide\u002Foverview","1.nuxt-guide\u002F1.overview",{"title":15,"path":16,"stem":17,"icon":18},"Folder Structure","\u002Fnuxt-guide\u002Ffolder-structure","1.nuxt-guide\u002F2.folder-structure","i-lucide-folder-tree",{"title":20,"path":21,"stem":22,"icon":23},"Components","\u002Fnuxt-guide\u002Fcomponents","1.nuxt-guide\u002F3.components","i-lucide-component",{"title":25,"path":26,"stem":27,"icon":28},"Composables","\u002Fnuxt-guide\u002Fcomposables","1.nuxt-guide\u002F4.composables","i-lucide-puzzle",{"title":30,"path":31,"stem":32,"icon":33},"Pages & Routing","\u002Fnuxt-guide\u002Fpages-routing","1.nuxt-guide\u002F5.pages-routing","i-lucide-file-text",{"title":35,"path":36,"stem":37,"icon":38},"Middleware","\u002Fnuxt-guide\u002Fmiddleware","1.nuxt-guide\u002F6.middleware","i-lucide-shield-check",{"title":40,"path":41,"stem":42,"icon":43},"Plugins","\u002Fnuxt-guide\u002Fplugins","1.nuxt-guide\u002F7.plugins","i-lucide-plug",{"title":45,"path":46,"stem":47,"icon":48},"State Management","\u002Fnuxt-guide\u002Fstate-management","1.nuxt-guide\u002F8.state-management","i-lucide-database",{"title":50,"path":51,"stem":52,"icon":53},"TypeScript","\u002Fnuxt-guide\u002Ftypescript","1.nuxt-guide\u002F9.typescript","i-lucide-braces",false,{"title":56,"icon":57,"path":58,"stem":59,"children":60,"page":54},"Node \u002F Express Guide","i-lucide-server","\u002Fnode-express-guide","2.node-express-guide",[61,64,69,72,77,82,86,91,96,100],{"title":11,"path":62,"stem":63,"icon":57},"\u002Fnode-express-guide\u002Foverview","2.node-express-guide\u002F1.overview",{"title":65,"path":66,"stem":67,"icon":68},"Error Handling","\u002Fnode-express-guide\u002Ferror-handling","2.node-express-guide\u002F10.error-handling","i-lucide-alert-triangle",{"title":15,"path":70,"stem":71,"icon":18},"\u002Fnode-express-guide\u002Ffolder-structure","2.node-express-guide\u002F2.folder-structure",{"title":73,"path":74,"stem":75,"icon":76},"Controllers","\u002Fnode-express-guide\u002Fcontrollers","2.node-express-guide\u002F3.controllers","i-lucide-cpu",{"title":78,"path":79,"stem":80,"icon":81},"Services","\u002Fnode-express-guide\u002Fservices","2.node-express-guide\u002F4.services","i-lucide-workflow",{"title":83,"path":84,"stem":85,"icon":48},"Repositories","\u002Fnode-express-guide\u002Frepositories","2.node-express-guide\u002F5.repositories",{"title":87,"path":88,"stem":89,"icon":90},"Models","\u002Fnode-express-guide\u002Fmodels","2.node-express-guide\u002F6.models","i-lucide-boxes",{"title":92,"path":93,"stem":94,"icon":95},"Routes","\u002Fnode-express-guide\u002Froutes","2.node-express-guide\u002F7.routes","i-lucide-route",{"title":35,"path":97,"stem":98,"icon":99},"\u002Fnode-express-guide\u002Fmiddleware","2.node-express-guide\u002F8.middleware","i-lucide-shield",{"title":101,"path":102,"stem":103,"icon":104},"Validation","\u002Fnode-express-guide\u002Fvalidation","2.node-express-guide\u002F9.validation","i-lucide-check-circle",{"title":106,"icon":107,"path":108,"stem":109,"children":110,"page":54},"Booki Documentation","i-lucide-book-open","\u002Fbooki-documentation","3.booki-documentation",[111,115,120,125,130,229,244,257],{"title":112,"path":113,"stem":114,"icon":107},"Project Overview","\u002Fbooki-documentation\u002Foverview","3.booki-documentation\u002F1.overview",{"title":116,"path":117,"stem":118,"icon":119},"Installation","\u002Fbooki-documentation\u002F1.installation","3.booki-documentation\u002F2.1.installation","i-lucide-download",{"title":121,"path":122,"stem":123,"icon":124},"Development Overview","\u002Fbooki-documentation\u002F2.architecture","3.booki-documentation\u002F2.2.architecture","i-lucide-layers",{"title":126,"path":127,"stem":128,"icon":129},"Local Development","\u002Fbooki-documentation\u002F3.local-development","3.booki-documentation\u002F2.3.local-development","i-lucide-monitor",{"title":131,"icon":57,"path":132,"stem":133,"children":134,"page":54},"API","\u002Fbooki-documentation\u002Fapi","3.booki-documentation\u002F3.api",[135,139,144,149,154,159,163,168,173,178,183,188,192,197,202,206,211,216,220,224],{"title":136,"path":137,"stem":138,"icon":57},"Booki API Reference","\u002Fbooki-documentation\u002Fapi\u002Fbooki-api","3.booki-documentation\u002F3.api\u002F1.booki-api",{"title":140,"path":141,"stem":142,"icon":143},"Auth - Login & Refresh","\u002Fbooki-documentation\u002Fapi\u002Fauth","3.booki-documentation\u002F3.api\u002F2.auth","i-lucide-key",{"title":145,"path":146,"stem":147,"icon":148},"Auth - Customer Registration","\u002Fbooki-documentation\u002Fapi\u002Fauth-customer-register","3.booki-documentation\u002F3.api\u002F2.auth-customer-register","i-lucide-user-check",{"title":150,"path":151,"stem":152,"icon":153},"Auth - Owner Registration","\u002Fbooki-documentation\u002Fapi\u002Fauth-owner-register","3.booki-documentation\u002F3.api\u002F2.auth-owner-register","i-lucide-user-plus",{"title":155,"path":156,"stem":157,"icon":158},"Bookings","\u002Fbooki-documentation\u002Fapi\u002Fbookings","3.booki-documentation\u002F3.api\u002F3.bookings","i-lucide-calendar-check",{"title":160,"path":161,"stem":162,"icon":158},"Bookings - Authenticated","\u002Fbooki-documentation\u002Fapi\u002Fbookings-auth","3.booki-documentation\u002F3.api\u002F3.bookings-auth",{"title":164,"path":165,"stem":166,"icon":167},"Bookings - Public & Guest","\u002Fbooki-documentation\u002Fapi\u002Fbookings-public","3.booki-documentation\u002F3.api\u002F3.bookings-public","i-lucide-calendar-plus",{"title":169,"path":170,"stem":171,"icon":172},"Booking Services","\u002Fbooki-documentation\u002Fapi\u002Fbooking-services","3.booki-documentation\u002F3.api\u002F4.booking-services","i-lucide-box",{"title":174,"path":175,"stem":176,"icon":177},"Organizations - Branches","\u002Fbooki-documentation\u002Fapi\u002Fbranches","3.booki-documentation\u002F3.api\u002F5.branches","i-lucide-git-branch",{"title":179,"path":180,"stem":181,"icon":182},"Organizations - Business Hours","\u002Fbooki-documentation\u002Fapi\u002Fbusiness-hours","3.booki-documentation\u002F3.api\u002F5.business-hours","i-lucide-clock",{"title":184,"path":185,"stem":186,"icon":187},"Organizations - Base","\u002Fbooki-documentation\u002Fapi\u002Forganizations","3.booki-documentation\u002F3.api\u002F5.organizations","i-lucide-building-2",{"title":189,"path":190,"stem":191,"icon":172},"Organizations - Packages","\u002Fbooki-documentation\u002Fapi\u002Fpackages","3.booki-documentation\u002F3.api\u002F5.packages",{"title":193,"path":194,"stem":195,"icon":196},"Organizations - Payments & Integrations","\u002Fbooki-documentation\u002Fapi\u002Fpayments","3.booki-documentation\u002F3.api\u002F5.payments","i-lucide-credit-card",{"title":198,"path":199,"stem":200,"icon":201},"Users - Profile & Settings","\u002Fbooki-documentation\u002Fapi\u002Fusers","3.booki-documentation\u002F3.api\u002F6.users","i-lucide-user",{"title":203,"path":204,"stem":205,"icon":196},"Maya Payments","\u002Fbooki-documentation\u002Fapi\u002Fmaya","3.booki-documentation\u002F3.api\u002F7.maya",{"title":207,"path":208,"stem":209,"icon":210},"Owner - Booking Management","\u002Fbooki-documentation\u002Fapi\u002Fowner-bookings","3.booki-documentation\u002F3.api\u002F7.owner-bookings","i-lucide-calendar",{"title":212,"path":213,"stem":214,"icon":215},"Owner - Customer Management","\u002Fbooki-documentation\u002Fapi\u002Fowner-customers","3.booki-documentation\u002F3.api\u002F7.owner-customers","i-lucide-users",{"title":217,"path":218,"stem":219,"icon":196},"Admin - Billing & Subscriptions","\u002Fbooki-documentation\u002Fapi\u002Fadmin-billing","3.booki-documentation\u002F3.api\u002F8.admin-billing",{"title":221,"path":222,"stem":223,"icon":187},"Admin - Organizations Management","\u002Fbooki-documentation\u002Fapi\u002Fadmin-organizations","3.booki-documentation\u002F3.api\u002F8.admin-organizations",{"title":225,"path":226,"stem":227,"icon":228},"Admin - User Management","\u002Fbooki-documentation\u002Fapi\u002Fadmin-users","3.booki-documentation\u002F3.api\u002F8.admin-users","i-lucide-shield-admin",{"title":230,"icon":231,"path":232,"stem":233,"children":234,"page":54},"Shared","i-lucide-package","\u002Fbooki-documentation\u002Fshared","3.booki-documentation\u002F4.shared",[235,240],{"title":236,"path":237,"stem":238,"icon":239},"codi-node-utils","\u002Fbooki-documentation\u002Fshared\u002Fcodi-node-utils","3.booki-documentation\u002F4.shared\u002F1.codi-node-utils","i-lucide-wrench",{"title":241,"path":242,"stem":243,"icon":124},"codi-layer","\u002Fbooki-documentation\u002Fshared\u002Fcodi-layer","3.booki-documentation\u002F4.shared\u002F2.codi-layer",{"title":245,"path":246,"stem":247,"children":248,"page":54},"Flowcharts","\u002Fbooki-documentation\u002Fflowcharts","3.booki-documentation\u002F5.flowcharts",[249,253],{"title":250,"path":251,"stem":252,"icon":158},"Owner Booking Management Flow","\u002Fbooki-documentation\u002Fflowcharts\u002Fowner-booking-management","3.booki-documentation\u002F5.flowcharts\u002F1.owner-booking-management",{"title":254,"path":255,"stem":256,"icon":167},"Customer Booking Flow","\u002Fbooki-documentation\u002Fflowcharts\u002Fcustomer-booking-flow","3.booki-documentation\u002F5.flowcharts\u002F2.customer-booking-flow",{"title":258,"path":259,"stem":260,"children":261,"page":54},"Guides","\u002Fbooki-documentation\u002Fguides","3.booki-documentation\u002Fguides",[262,267,271,275,280,285,290,294,298],{"title":263,"path":264,"stem":265,"icon":266},"Guide - Authentication Flow & Sessions","\u002Fbooki-documentation\u002Fguides\u002Fguides-auth-flow","3.booki-documentation\u002Fguides\u002Fguides-auth-flow","i-lucide-lock",{"title":268,"path":269,"stem":270,"icon":177},"Guide - Branch Management","\u002Fbooki-documentation\u002Fguides\u002Fguides-branch-management","3.booki-documentation\u002Fguides\u002Fguides-branch-management",{"title":272,"path":273,"stem":274,"icon":196},"Guide - Customer Payment Methods","\u002Fbooki-documentation\u002Fguides\u002Fguides-customer-payments","3.booki-documentation\u002Fguides\u002Fguides-customer-payments",{"title":276,"path":277,"stem":278,"icon":279},"Guide - Environment Setup","\u002Fbooki-documentation\u002Fguides\u002Fguides-environment-setup","3.booki-documentation\u002Fguides\u002Fguides-environment-setup","i-lucide-settings",{"title":281,"path":282,"stem":283,"icon":284},"Guide - Common Error Responses","\u002Fbooki-documentation\u002Fguides\u002Fguides-errors","3.booki-documentation\u002Fguides\u002Fguides-errors","i-lucide-alert-circle",{"title":286,"path":287,"stem":288,"icon":289},"Guide - Gmail SMTP Setup","\u002Fbooki-documentation\u002Fguides\u002Fguides-gmail-setup","3.booki-documentation\u002Fguides\u002Fguides-gmail-setup","i-lucide-mail",{"title":291,"path":292,"stem":293,"icon":124},"Guide - Multi-Tenancy & Tenant Slug Resolution","\u002Fbooki-documentation\u002Fguides\u002Fguides-multi-tenancy","3.booki-documentation\u002Fguides\u002Fguides-multi-tenancy",{"title":295,"path":296,"stem":297,"icon":48},"Guide - Redis Caching","\u002Fbooki-documentation\u002Fguides\u002Fguides-redis","3.booki-documentation\u002Fguides\u002Fguides-redis",{"title":299,"path":300,"stem":301,"icon":302},"Guide - Subscription Billing","\u002Fbooki-documentation\u002Fguides\u002Fguides-subscription-billing","3.booki-documentation\u002Fguides\u002Fguides-subscription-billing","i-lucide-receipt",{"id":304,"title":164,"body":305,"description":2377,"extension":2378,"links":2379,"meta":2380,"navigation":2381,"path":165,"seo":2382,"stem":166,"__hash__":2383},"docs\u002F3.booki-documentation\u002F3.api\u002F3.bookings-public.md",{"type":306,"value":307,"toc":2340},"minimark",[308,316,354,361,364,373,405,410,420,423,635,638,707,711,958,962,968,1015,1020,1064,1070,1115,1119,1229,1231,1238,1286,1289,1295,1302,1305,1308,1311,1401,1404,1410,1455,1457,1465,1493,1496,1502,1506,1661,1664,1669,1713,1716,1737,1739,1747,1768,1771,1777,1780,1971,1974,1979,2023,2026,2043,2045,2052,2077,2080,2086,2089,2262,2265,2297,2299,2303,2336],[309,310,311,312],"p",{},"Base path: ",[313,314,315],"code",{},"\u002Fapi\u002Fv1\u002Fbookings",[309,317,318,322,323,326,327,330,331,334,337,338,341,342,345,346,349,350,353],{},[319,320,321],"strong",{},"Used by:"," ",[313,324,325],{},"cms-booki-web-app"," · ",[319,328,329],{},"Role:"," guest (public)",[332,333],"br",{},[319,335,336],{},"organizationId:"," Resolved by tenant middleware (",[313,339,340],{},"resolveRequiredTenant",") — from ",[313,343,344],{},"x-tenant-slug"," header (auto-injected by ",[313,347,348],{},"$api"," plugin from subdomain) or from the ",[313,351,352],{},":organizationId"," route param",[309,355,356,357,360],{},"Public booking endpoints allow guests to create and verify bookings without logging in. All requests are ",[319,358,359],{},"tenant-scoped"," via subdomain or header.",[362,363],"hr",{},[365,366,368,369,372],"h2",{"id":367},"post-apiv1bookingstypetype-create-initial-booking-tenant-subdomain","POST ",[313,370,371],{},"\u002Fapi\u002Fv1\u002Fbookings\u002Ftype\u002F:type"," — Create Initial Booking (Tenant Subdomain)",[309,374,375,378,379,381,382,384,322,386,326,388,390,391,393,395,396,398,399,401,404],{},[319,376,377],{},"Auth:"," Public (",[313,380,340],{},")",[332,383],{},[319,385,321],{},[313,387,325],{},[319,389,329],{}," guest",[332,392],{},[319,394,336],{}," From ",[313,397,344],{}," header or subdomain (tenant middleware)",[332,400],{},[319,402,403],{},"Description:"," Create a new booking on the current tenant's services as a guest. If guest email matches an existing customer, that customer account is used instead.",[406,407,409],"h3",{"id":408},"request","Request",[411,412,417],"pre",{"className":413,"code":415,"language":416},[414],"language-text","POST \u002Fapi\u002Fv1\u002Fbookings\u002Ftype\u002Fhaircut\nHeader: X-Tenant-Slug: janes-salon  (or via subdomain)\n","text",[313,418,415],{"__ignoreMap":419},"",[309,421,422],{},"Body:",[411,424,428],{"className":425,"code":426,"language":427,"meta":419,"style":419},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"packageId\": \"507f1f77bcf86cd799439031\",\n  \"bookingDate\": \"2026-04-10\",\n  \"bookingTime\": \"14:30\",\n  \"firstName\": \"John\",\n  \"lastName\": \"Smith\",\n  \"email\": \"john@example.com\",\n  \"phone\": \"09161234567\",\n  \"preferredPaymentMethod\": \"cash\",\n  \"password\": \"\"\n}\n","json",[313,429,430,439,467,488,509,530,551,572,593,614,629],{"__ignoreMap":419},[431,432,435],"span",{"class":433,"line":434},"line",1,[431,436,438],{"class":437},"sMK4o","{\n",[431,440,442,445,449,452,455,458,462,464],{"class":433,"line":441},2,[431,443,444],{"class":437},"  \"",[431,446,448],{"class":447},"spNyl","packageId",[431,450,451],{"class":437},"\"",[431,453,454],{"class":437},":",[431,456,457],{"class":437}," \"",[431,459,461],{"class":460},"sfazB","507f1f77bcf86cd799439031",[431,463,451],{"class":437},[431,465,466],{"class":437},",\n",[431,468,470,472,475,477,479,481,484,486],{"class":433,"line":469},3,[431,471,444],{"class":437},[431,473,474],{"class":447},"bookingDate",[431,476,451],{"class":437},[431,478,454],{"class":437},[431,480,457],{"class":437},[431,482,483],{"class":460},"2026-04-10",[431,485,451],{"class":437},[431,487,466],{"class":437},[431,489,491,493,496,498,500,502,505,507],{"class":433,"line":490},4,[431,492,444],{"class":437},[431,494,495],{"class":447},"bookingTime",[431,497,451],{"class":437},[431,499,454],{"class":437},[431,501,457],{"class":437},[431,503,504],{"class":460},"14:30",[431,506,451],{"class":437},[431,508,466],{"class":437},[431,510,512,514,517,519,521,523,526,528],{"class":433,"line":511},5,[431,513,444],{"class":437},[431,515,516],{"class":447},"firstName",[431,518,451],{"class":437},[431,520,454],{"class":437},[431,522,457],{"class":437},[431,524,525],{"class":460},"John",[431,527,451],{"class":437},[431,529,466],{"class":437},[431,531,533,535,538,540,542,544,547,549],{"class":433,"line":532},6,[431,534,444],{"class":437},[431,536,537],{"class":447},"lastName",[431,539,451],{"class":437},[431,541,454],{"class":437},[431,543,457],{"class":437},[431,545,546],{"class":460},"Smith",[431,548,451],{"class":437},[431,550,466],{"class":437},[431,552,554,556,559,561,563,565,568,570],{"class":433,"line":553},7,[431,555,444],{"class":437},[431,557,558],{"class":447},"email",[431,560,451],{"class":437},[431,562,454],{"class":437},[431,564,457],{"class":437},[431,566,567],{"class":460},"john@example.com",[431,569,451],{"class":437},[431,571,466],{"class":437},[431,573,575,577,580,582,584,586,589,591],{"class":433,"line":574},8,[431,576,444],{"class":437},[431,578,579],{"class":447},"phone",[431,581,451],{"class":437},[431,583,454],{"class":437},[431,585,457],{"class":437},[431,587,588],{"class":460},"09161234567",[431,590,451],{"class":437},[431,592,466],{"class":437},[431,594,596,598,601,603,605,607,610,612],{"class":433,"line":595},9,[431,597,444],{"class":437},[431,599,600],{"class":447},"preferredPaymentMethod",[431,602,451],{"class":437},[431,604,454],{"class":437},[431,606,457],{"class":437},[431,608,609],{"class":460},"cash",[431,611,451],{"class":437},[431,613,466],{"class":437},[431,615,617,619,622,624,626],{"class":433,"line":616},10,[431,618,444],{"class":437},[431,620,621],{"class":447},"password",[431,623,451],{"class":437},[431,625,454],{"class":437},[431,627,628],{"class":437}," \"\"\n",[431,630,632],{"class":433,"line":631},11,[431,633,634],{"class":437},"}\n",[309,636,637],{},"Fields:",[639,640,641,647,656,664,669,675,680,685,690,702],"ul",{},[642,643,644,646],"li",{},[313,645,448],{}," (string, required): Service package ID (24-hex)",[642,648,649,651,652,655],{},[313,650,474],{}," (string, required): Format ",[313,653,654],{},"YYYY-MM-DD"," (future date only)",[642,657,658,651,660,663],{},[313,659,495],{},[313,661,662],{},"HH:MM"," (24-hour, future time only)",[642,665,666,668],{},[313,667,516],{}," (string, required): Guest's first name (max 255)",[642,670,671,674],{},[313,672,673],{},"middleName"," (string, optional): Guest's middle name (max 255)",[642,676,677,679],{},[313,678,537],{}," (string, required): Guest's last name (max 255)",[642,681,682,684],{},[313,683,558],{}," (string, required): Valid email (lowercase)",[642,686,687,689],{},[313,688,579],{}," (string, required): Phone number (10-20 chars)",[642,691,692,694,695,697,698,701],{},[313,693,600],{}," (string, optional): ",[313,696,609],{}," or ",[313,699,700],{},"maya"," (default: business preference)",[642,703,704,706],{},[313,705,621],{}," (string, optional): If set, creates guest as registered customer",[406,708,710],{"id":709},"response-201-created","Response (201 Created)",[411,712,714],{"className":425,"code":713,"language":427,"meta":419,"style":419},"{\n  \"booking\": {\n    \"_id\": \"507f1f77bcf86cd799439041\",\n    \"organizationId\": \"507f191e810c19729de860ea\",\n    \"packageId\": \"507f1f77bcf86cd799439031\",\n    \"customerId\": \"507f1f77bcf86cd799439051\",\n    \"bookingDate\": \"2026-04-10\",\n    \"bookingTime\": \"14:30\",\n    \"status\": \"pending\",\n    \"preferredPaymentMethod\": \"cash\",\n    \"createdAt\": \"2026-04-01T09:15:00Z\",\n    \"verificationToken\": \"VERIFY_TOKEN_ABC123...\"\n  },\n  \"message\": \"Booking created. Please verify via email link.\"\n}\n",[313,715,716,720,734,756,776,794,814,832,850,870,888,908,928,934,953],{"__ignoreMap":419},[431,717,718],{"class":433,"line":434},[431,719,438],{"class":437},[431,721,722,724,727,729,731],{"class":433,"line":441},[431,723,444],{"class":437},[431,725,726],{"class":447},"booking",[431,728,451],{"class":437},[431,730,454],{"class":437},[431,732,733],{"class":437}," {\n",[431,735,736,739,743,745,747,749,752,754],{"class":433,"line":469},[431,737,738],{"class":437},"    \"",[431,740,742],{"class":741},"sBMFI","_id",[431,744,451],{"class":437},[431,746,454],{"class":437},[431,748,457],{"class":437},[431,750,751],{"class":460},"507f1f77bcf86cd799439041",[431,753,451],{"class":437},[431,755,466],{"class":437},[431,757,758,760,763,765,767,769,772,774],{"class":433,"line":490},[431,759,738],{"class":437},[431,761,762],{"class":741},"organizationId",[431,764,451],{"class":437},[431,766,454],{"class":437},[431,768,457],{"class":437},[431,770,771],{"class":460},"507f191e810c19729de860ea",[431,773,451],{"class":437},[431,775,466],{"class":437},[431,777,778,780,782,784,786,788,790,792],{"class":433,"line":511},[431,779,738],{"class":437},[431,781,448],{"class":741},[431,783,451],{"class":437},[431,785,454],{"class":437},[431,787,457],{"class":437},[431,789,461],{"class":460},[431,791,451],{"class":437},[431,793,466],{"class":437},[431,795,796,798,801,803,805,807,810,812],{"class":433,"line":532},[431,797,738],{"class":437},[431,799,800],{"class":741},"customerId",[431,802,451],{"class":437},[431,804,454],{"class":437},[431,806,457],{"class":437},[431,808,809],{"class":460},"507f1f77bcf86cd799439051",[431,811,451],{"class":437},[431,813,466],{"class":437},[431,815,816,818,820,822,824,826,828,830],{"class":433,"line":553},[431,817,738],{"class":437},[431,819,474],{"class":741},[431,821,451],{"class":437},[431,823,454],{"class":437},[431,825,457],{"class":437},[431,827,483],{"class":460},[431,829,451],{"class":437},[431,831,466],{"class":437},[431,833,834,836,838,840,842,844,846,848],{"class":433,"line":574},[431,835,738],{"class":437},[431,837,495],{"class":741},[431,839,451],{"class":437},[431,841,454],{"class":437},[431,843,457],{"class":437},[431,845,504],{"class":460},[431,847,451],{"class":437},[431,849,466],{"class":437},[431,851,852,854,857,859,861,863,866,868],{"class":433,"line":595},[431,853,738],{"class":437},[431,855,856],{"class":741},"status",[431,858,451],{"class":437},[431,860,454],{"class":437},[431,862,457],{"class":437},[431,864,865],{"class":460},"pending",[431,867,451],{"class":437},[431,869,466],{"class":437},[431,871,872,874,876,878,880,882,884,886],{"class":433,"line":616},[431,873,738],{"class":437},[431,875,600],{"class":741},[431,877,451],{"class":437},[431,879,454],{"class":437},[431,881,457],{"class":437},[431,883,609],{"class":460},[431,885,451],{"class":437},[431,887,466],{"class":437},[431,889,890,892,895,897,899,901,904,906],{"class":433,"line":631},[431,891,738],{"class":437},[431,893,894],{"class":741},"createdAt",[431,896,451],{"class":437},[431,898,454],{"class":437},[431,900,457],{"class":437},[431,902,903],{"class":460},"2026-04-01T09:15:00Z",[431,905,451],{"class":437},[431,907,466],{"class":437},[431,909,911,913,916,918,920,922,925],{"class":433,"line":910},12,[431,912,738],{"class":437},[431,914,915],{"class":741},"verificationToken",[431,917,451],{"class":437},[431,919,454],{"class":437},[431,921,457],{"class":437},[431,923,924],{"class":460},"VERIFY_TOKEN_ABC123...",[431,926,927],{"class":437},"\"\n",[431,929,931],{"class":433,"line":930},13,[431,932,933],{"class":437},"  },\n",[431,935,937,939,942,944,946,948,951],{"class":433,"line":936},14,[431,938,444],{"class":437},[431,940,941],{"class":447},"message",[431,943,451],{"class":437},[431,945,454],{"class":437},[431,947,457],{"class":437},[431,949,950],{"class":460},"Booking created. Please verify via email link.",[431,952,927],{"class":437},[431,954,956],{"class":433,"line":955},15,[431,957,634],{"class":437},[406,959,961],{"id":960},"error-responses","Error Responses",[309,963,964,967],{},[319,965,966],{},"400 Bad Request"," — Past date:",[411,969,971],{"className":425,"code":970,"language":427,"meta":419,"style":419},"{\n  \"statusCode\": 400,\n  \"message\": \"Please select a valid date for your booking. Past dates are not available.\"\n}\n",[313,972,973,977,994,1011],{"__ignoreMap":419},[431,974,975],{"class":433,"line":434},[431,976,438],{"class":437},[431,978,979,981,984,986,988,992],{"class":433,"line":441},[431,980,444],{"class":437},[431,982,983],{"class":447},"statusCode",[431,985,451],{"class":437},[431,987,454],{"class":437},[431,989,991],{"class":990},"sbssI"," 400",[431,993,466],{"class":437},[431,995,996,998,1000,1002,1004,1006,1009],{"class":433,"line":469},[431,997,444],{"class":437},[431,999,941],{"class":447},[431,1001,451],{"class":437},[431,1003,454],{"class":437},[431,1005,457],{"class":437},[431,1007,1008],{"class":460},"Please select a valid date for your booking. Past dates are not available.",[431,1010,927],{"class":437},[431,1012,1013],{"class":433,"line":490},[431,1014,634],{"class":437},[309,1016,1017,1019],{},[319,1018,966],{}," — Invalid package:",[411,1021,1023],{"className":425,"code":1022,"language":427,"meta":419,"style":419},"{\n  \"statusCode\": 400,\n  \"message\": \"Package not found\"\n}\n",[313,1024,1025,1029,1043,1060],{"__ignoreMap":419},[431,1026,1027],{"class":433,"line":434},[431,1028,438],{"class":437},[431,1030,1031,1033,1035,1037,1039,1041],{"class":433,"line":441},[431,1032,444],{"class":437},[431,1034,983],{"class":447},[431,1036,451],{"class":437},[431,1038,454],{"class":437},[431,1040,991],{"class":990},[431,1042,466],{"class":437},[431,1044,1045,1047,1049,1051,1053,1055,1058],{"class":433,"line":469},[431,1046,444],{"class":437},[431,1048,941],{"class":447},[431,1050,451],{"class":437},[431,1052,454],{"class":437},[431,1054,457],{"class":437},[431,1056,1057],{"class":460},"Package not found",[431,1059,927],{"class":437},[431,1061,1062],{"class":433,"line":490},[431,1063,634],{"class":437},[309,1065,1066,1069],{},[319,1067,1068],{},"404 Not Found"," — Tenant not found:",[411,1071,1073],{"className":425,"code":1072,"language":427,"meta":419,"style":419},"{\n  \"statusCode\": 404,\n  \"message\": \"Organization not found\"\n}\n",[313,1074,1075,1079,1094,1111],{"__ignoreMap":419},[431,1076,1077],{"class":433,"line":434},[431,1078,438],{"class":437},[431,1080,1081,1083,1085,1087,1089,1092],{"class":433,"line":441},[431,1082,444],{"class":437},[431,1084,983],{"class":447},[431,1086,451],{"class":437},[431,1088,454],{"class":437},[431,1090,1091],{"class":990}," 404",[431,1093,466],{"class":437},[431,1095,1096,1098,1100,1102,1104,1106,1109],{"class":433,"line":469},[431,1097,444],{"class":437},[431,1099,941],{"class":447},[431,1101,451],{"class":437},[431,1103,454],{"class":437},[431,1105,457],{"class":437},[431,1107,1108],{"class":460},"Organization not found",[431,1110,927],{"class":437},[431,1112,1113],{"class":433,"line":490},[431,1114,634],{"class":437},[406,1116,1118],{"id":1117},"curl-example","cURL Example",[411,1120,1124],{"className":1121,"code":1122,"language":1123,"meta":419,"style":419},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","curl -X POST http:\u002F\u002Flocalhost:4001\u002Fapi\u002Fv1\u002Fbookings\u002Ftype\u002Fhaircut \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -H \"X-Tenant-Slug: janes-salon\" \\\n  -d '{\n    \"packageId\": \"507f1f77bcf86cd799439031\",\n    \"bookingDate\": \"2026-04-10\",\n    \"bookingTime\": \"14:30\",\n    \"firstName\": \"John\",\n    \"lastName\": \"Smith\",\n    \"email\": \"john@example.com\",\n    \"phone\": \"09161234567\",\n    \"preferredPaymentMethod\": \"cash\"\n  }'\n","bash",[313,1125,1126,1144,1158,1171,1181,1186,1191,1196,1201,1206,1211,1216,1221],{"__ignoreMap":419},[431,1127,1128,1131,1134,1137,1140],{"class":433,"line":434},[431,1129,1130],{"class":741},"curl",[431,1132,1133],{"class":460}," -X",[431,1135,1136],{"class":460}," POST",[431,1138,1139],{"class":460}," http:\u002F\u002Flocalhost:4001\u002Fapi\u002Fv1\u002Fbookings\u002Ftype\u002Fhaircut",[431,1141,1143],{"class":1142},"sTEyZ"," \\\n",[431,1145,1146,1149,1151,1154,1156],{"class":433,"line":441},[431,1147,1148],{"class":460},"  -H",[431,1150,457],{"class":437},[431,1152,1153],{"class":460},"Content-Type: application\u002Fjson",[431,1155,451],{"class":437},[431,1157,1143],{"class":1142},[431,1159,1160,1162,1164,1167,1169],{"class":433,"line":469},[431,1161,1148],{"class":460},[431,1163,457],{"class":437},[431,1165,1166],{"class":460},"X-Tenant-Slug: janes-salon",[431,1168,451],{"class":437},[431,1170,1143],{"class":1142},[431,1172,1173,1176,1179],{"class":433,"line":490},[431,1174,1175],{"class":460},"  -d",[431,1177,1178],{"class":437}," '",[431,1180,438],{"class":460},[431,1182,1183],{"class":433,"line":511},[431,1184,1185],{"class":460},"    \"packageId\": \"507f1f77bcf86cd799439031\",\n",[431,1187,1188],{"class":433,"line":532},[431,1189,1190],{"class":460},"    \"bookingDate\": \"2026-04-10\",\n",[431,1192,1193],{"class":433,"line":553},[431,1194,1195],{"class":460},"    \"bookingTime\": \"14:30\",\n",[431,1197,1198],{"class":433,"line":574},[431,1199,1200],{"class":460},"    \"firstName\": \"John\",\n",[431,1202,1203],{"class":433,"line":595},[431,1204,1205],{"class":460},"    \"lastName\": \"Smith\",\n",[431,1207,1208],{"class":433,"line":616},[431,1209,1210],{"class":460},"    \"email\": \"john@example.com\",\n",[431,1212,1213],{"class":433,"line":631},[431,1214,1215],{"class":460},"    \"phone\": \"09161234567\",\n",[431,1217,1218],{"class":433,"line":910},[431,1219,1220],{"class":460},"    \"preferredPaymentMethod\": \"cash\"\n",[431,1222,1223,1226],{"class":433,"line":930},[431,1224,1225],{"class":460},"  }",[431,1227,1228],{"class":437},"'\n",[362,1230],{},[365,1232,368,1234,1237],{"id":1233},"post-apiv1bookingsorganizationsorganizationidtypetype-create-booking-explicit-org-id",[313,1235,1236],{},"\u002Fapi\u002Fv1\u002Fbookings\u002Forganizations\u002F:organizationId\u002Ftype\u002F:type"," — Create Booking (Explicit Org ID)",[309,1239,1240,378,1242,1244,1245,381,1248,1250,322,1252,1254,1255,1257,1259,1260,1262,1263,1266,1267,1269,1272,1273,1276,1277,1280,1281,1283,1285],{},[319,1241,377],{},[313,1243,340],{}," + ",[313,1246,1247],{},"resolveRequiredBranch",[332,1249],{},[319,1251,321],{},[313,1253,325],{}," (when subdomain is not available)",[332,1256],{},[319,1258,336],{}," From the ",[313,1261,352],{}," route parameter — no ",[313,1264,1265],{},"X-Tenant-Slug"," header needed",[332,1268],{},[319,1270,1271],{},"branchId:"," Resolved from ",[313,1274,1275],{},"X-Branch-Slug"," header — ",[319,1278,1279],{},"required"," for branch resolution",[332,1282],{},[319,1284,403],{}," Create a booking by explicitly providing the organization ID in the URL path. Use this when a tenant subdomain is unavailable (e.g., direct API integrations, QR codes, or link-based booking flows).",[406,1287,409],{"id":1288},"request-1",[411,1290,1293],{"className":1291,"code":1292,"language":416},[414],"POST \u002Fapi\u002Fv1\u002Fbookings\u002Forganizations\u002F507f191e810c19729de860ea\u002Ftype\u002Fhaircut\nHeader: X-Branch-Slug: main-branch\n",[313,1294,1292],{"__ignoreMap":419},[309,1296,1297,1298,1301],{},"Body: same fields as ",[313,1299,1300],{},"\u002Ftype\u002F:type"," above.",[406,1303,710],{"id":1304},"response-201-created-1",[309,1306,1307],{},"Same as above.",[406,1309,1118],{"id":1310},"curl-example-1",[411,1312,1314],{"className":1121,"code":1313,"language":1123,"meta":419,"style":419},"curl -X POST \"http:\u002F\u002Flocalhost:4001\u002Fapi\u002Fv1\u002Fbookings\u002Forganizations\u002F507f191e810c19729de860ea\u002Ftype\u002Fhaircut\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -H \"X-Branch-Slug: main-branch\" \\\n  -d '{\n    \"packageId\": \"507f1f77bcf86cd799439031\",\n    \"bookingDate\": \"2026-04-10\",\n    \"bookingTime\": \"14:30\",\n    \"firstName\": \"John\",\n    \"lastName\": \"Smith\",\n    \"email\": \"john@example.com\",\n    \"phone\": \"09161234567\"\n  }'\n",[313,1315,1316,1333,1345,1358,1366,1370,1374,1378,1382,1386,1390,1395],{"__ignoreMap":419},[431,1317,1318,1320,1322,1324,1326,1329,1331],{"class":433,"line":434},[431,1319,1130],{"class":741},[431,1321,1133],{"class":460},[431,1323,1136],{"class":460},[431,1325,457],{"class":437},[431,1327,1328],{"class":460},"http:\u002F\u002Flocalhost:4001\u002Fapi\u002Fv1\u002Fbookings\u002Forganizations\u002F507f191e810c19729de860ea\u002Ftype\u002Fhaircut",[431,1330,451],{"class":437},[431,1332,1143],{"class":1142},[431,1334,1335,1337,1339,1341,1343],{"class":433,"line":441},[431,1336,1148],{"class":460},[431,1338,457],{"class":437},[431,1340,1153],{"class":460},[431,1342,451],{"class":437},[431,1344,1143],{"class":1142},[431,1346,1347,1349,1351,1354,1356],{"class":433,"line":469},[431,1348,1148],{"class":460},[431,1350,457],{"class":437},[431,1352,1353],{"class":460},"X-Branch-Slug: main-branch",[431,1355,451],{"class":437},[431,1357,1143],{"class":1142},[431,1359,1360,1362,1364],{"class":433,"line":490},[431,1361,1175],{"class":460},[431,1363,1178],{"class":437},[431,1365,438],{"class":460},[431,1367,1368],{"class":433,"line":511},[431,1369,1185],{"class":460},[431,1371,1372],{"class":433,"line":532},[431,1373,1190],{"class":460},[431,1375,1376],{"class":433,"line":553},[431,1377,1195],{"class":460},[431,1379,1380],{"class":433,"line":574},[431,1381,1200],{"class":460},[431,1383,1384],{"class":433,"line":595},[431,1385,1205],{"class":460},[431,1387,1388],{"class":433,"line":616},[431,1389,1210],{"class":460},[431,1391,1392],{"class":433,"line":631},[431,1393,1394],{"class":460},"    \"phone\": \"09161234567\"\n",[431,1396,1397,1399],{"class":433,"line":910},[431,1398,1225],{"class":460},[431,1400,1228],{"class":437},[406,1402,961],{"id":1403},"error-responses-1",[309,1405,1406,1409],{},[319,1407,1408],{},"422 Unprocessable Entity"," — Missing or unresolvable branch:",[411,1411,1413],{"className":425,"code":1412,"language":427,"meta":419,"style":419},"{\n  \"statusCode\": 422,\n  \"message\": \"Branch could not be determined. Please ensure you access via a valid branch URL.\"\n}\n",[313,1414,1415,1419,1434,1451],{"__ignoreMap":419},[431,1416,1417],{"class":433,"line":434},[431,1418,438],{"class":437},[431,1420,1421,1423,1425,1427,1429,1432],{"class":433,"line":441},[431,1422,444],{"class":437},[431,1424,983],{"class":447},[431,1426,451],{"class":437},[431,1428,454],{"class":437},[431,1430,1431],{"class":990}," 422",[431,1433,466],{"class":437},[431,1435,1436,1438,1440,1442,1444,1446,1449],{"class":433,"line":469},[431,1437,444],{"class":437},[431,1439,941],{"class":447},[431,1441,451],{"class":437},[431,1443,454],{"class":437},[431,1445,457],{"class":437},[431,1447,1448],{"class":460},"Branch could not be determined. Please ensure you access via a valid branch URL.",[431,1450,927],{"class":437},[431,1452,1453],{"class":433,"line":490},[431,1454,634],{"class":437},[362,1456],{},[365,1458,1460,1461,1464],{"id":1459},"put-apiv1bookingsidverify-verify-booking","PUT ",[313,1462,1463],{},"\u002Fapi\u002Fv1\u002Fbookings\u002F:id\u002Fverify"," — Verify Booking",[309,1466,1467,1469,1470,1472,322,1474,1476,1477,390,1479,1481,1483,1484,1486,1488,1489,1492],{},[319,1468,377],{}," Public",[332,1471],{},[319,1473,321],{},[313,1475,325],{}," (email verification link) · ",[319,1478,329],{},[332,1480],{},[319,1482,336],{}," Not required (booking ID is sufficient)",[332,1485],{},[319,1487,403],{}," Verify a booking from the email confirmation link. No request body is required — the booking is identified by the ",[313,1490,1491],{},":id"," path parameter.",[406,1494,409],{"id":1495},"request-2",[411,1497,1500],{"className":1498,"code":1499,"language":416},[414],"PUT \u002Fapi\u002Fv1\u002Fbookings\u002F507f1f77bcf86cd799439041\u002Fverify\n",[313,1501,1499],{"__ignoreMap":419},[406,1503,1505],{"id":1504},"response-200-ok","Response (200 OK)",[411,1507,1509],{"className":425,"code":1508,"language":427,"meta":419,"style":419},"{\n  \"booking\": {\n    \"_id\": \"507f1f77bcf86cd799439041\",\n    \"organizationId\": \"507f191e810c19729de860ea\",\n    \"status\": \"confirmed\",\n    \"bookingDate\": \"2026-04-10\",\n    \"bookingTime\": \"14:30\",\n    \"verifiedAt\": \"2026-04-01T09:30:00Z\"\n  },\n  \"message\": \"Booking verified successfully\"\n}\n",[313,1510,1511,1515,1527,1545,1563,1582,1600,1618,1636,1640,1657],{"__ignoreMap":419},[431,1512,1513],{"class":433,"line":434},[431,1514,438],{"class":437},[431,1516,1517,1519,1521,1523,1525],{"class":433,"line":441},[431,1518,444],{"class":437},[431,1520,726],{"class":447},[431,1522,451],{"class":437},[431,1524,454],{"class":437},[431,1526,733],{"class":437},[431,1528,1529,1531,1533,1535,1537,1539,1541,1543],{"class":433,"line":469},[431,1530,738],{"class":437},[431,1532,742],{"class":741},[431,1534,451],{"class":437},[431,1536,454],{"class":437},[431,1538,457],{"class":437},[431,1540,751],{"class":460},[431,1542,451],{"class":437},[431,1544,466],{"class":437},[431,1546,1547,1549,1551,1553,1555,1557,1559,1561],{"class":433,"line":490},[431,1548,738],{"class":437},[431,1550,762],{"class":741},[431,1552,451],{"class":437},[431,1554,454],{"class":437},[431,1556,457],{"class":437},[431,1558,771],{"class":460},[431,1560,451],{"class":437},[431,1562,466],{"class":437},[431,1564,1565,1567,1569,1571,1573,1575,1578,1580],{"class":433,"line":511},[431,1566,738],{"class":437},[431,1568,856],{"class":741},[431,1570,451],{"class":437},[431,1572,454],{"class":437},[431,1574,457],{"class":437},[431,1576,1577],{"class":460},"confirmed",[431,1579,451],{"class":437},[431,1581,466],{"class":437},[431,1583,1584,1586,1588,1590,1592,1594,1596,1598],{"class":433,"line":532},[431,1585,738],{"class":437},[431,1587,474],{"class":741},[431,1589,451],{"class":437},[431,1591,454],{"class":437},[431,1593,457],{"class":437},[431,1595,483],{"class":460},[431,1597,451],{"class":437},[431,1599,466],{"class":437},[431,1601,1602,1604,1606,1608,1610,1612,1614,1616],{"class":433,"line":553},[431,1603,738],{"class":437},[431,1605,495],{"class":741},[431,1607,451],{"class":437},[431,1609,454],{"class":437},[431,1611,457],{"class":437},[431,1613,504],{"class":460},[431,1615,451],{"class":437},[431,1617,466],{"class":437},[431,1619,1620,1622,1625,1627,1629,1631,1634],{"class":433,"line":574},[431,1621,738],{"class":437},[431,1623,1624],{"class":741},"verifiedAt",[431,1626,451],{"class":437},[431,1628,454],{"class":437},[431,1630,457],{"class":437},[431,1632,1633],{"class":460},"2026-04-01T09:30:00Z",[431,1635,927],{"class":437},[431,1637,1638],{"class":433,"line":595},[431,1639,933],{"class":437},[431,1641,1642,1644,1646,1648,1650,1652,1655],{"class":433,"line":616},[431,1643,444],{"class":437},[431,1645,941],{"class":447},[431,1647,451],{"class":437},[431,1649,454],{"class":437},[431,1651,457],{"class":437},[431,1653,1654],{"class":460},"Booking verified successfully",[431,1656,927],{"class":437},[431,1658,1659],{"class":433,"line":631},[431,1660,634],{"class":437},[406,1662,961],{"id":1663},"error-responses-2",[309,1665,1666,1668],{},[319,1667,966],{}," — Invalid token:",[411,1670,1672],{"className":425,"code":1671,"language":427,"meta":419,"style":419},"{\n  \"statusCode\": 400,\n  \"message\": \"Invalid or expired verification token\"\n}\n",[313,1673,1674,1678,1692,1709],{"__ignoreMap":419},[431,1675,1676],{"class":433,"line":434},[431,1677,438],{"class":437},[431,1679,1680,1682,1684,1686,1688,1690],{"class":433,"line":441},[431,1681,444],{"class":437},[431,1683,983],{"class":447},[431,1685,451],{"class":437},[431,1687,454],{"class":437},[431,1689,991],{"class":990},[431,1691,466],{"class":437},[431,1693,1694,1696,1698,1700,1702,1704,1707],{"class":433,"line":469},[431,1695,444],{"class":437},[431,1697,941],{"class":447},[431,1699,451],{"class":437},[431,1701,454],{"class":437},[431,1703,457],{"class":437},[431,1705,1706],{"class":460},"Invalid or expired verification token",[431,1708,927],{"class":437},[431,1710,1711],{"class":433,"line":490},[431,1712,634],{"class":437},[406,1714,1118],{"id":1715},"curl-example-2",[411,1717,1719],{"className":1121,"code":1718,"language":1123,"meta":419,"style":419},"curl -X PUT \"http:\u002F\u002Flocalhost:4001\u002Fapi\u002Fv1\u002Fbookings\u002F507f1f77bcf86cd799439041\u002Fverify\"\n",[313,1720,1721],{"__ignoreMap":419},[431,1722,1723,1725,1727,1730,1732,1735],{"class":433,"line":434},[431,1724,1130],{"class":741},[431,1726,1133],{"class":460},[431,1728,1729],{"class":460}," PUT",[431,1731,457],{"class":437},[431,1733,1734],{"class":460},"http:\u002F\u002Flocalhost:4001\u002Fapi\u002Fv1\u002Fbookings\u002F507f1f77bcf86cd799439041\u002Fverify",[431,1736,927],{"class":437},[362,1738],{},[365,1740,1742,1743,1746],{"id":1741},"get-apiv1bookingsid-get-booking-by-id","GET ",[313,1744,1745],{},"\u002Fapi\u002Fv1\u002Fbookings\u002F:id"," — Get Booking by ID",[309,1748,1749,1469,1751,1753,322,1755,326,1757,390,1759,1761,1483,1763,1765,1767],{},[319,1750,377],{},[332,1752],{},[319,1754,321],{},[313,1756,325],{},[319,1758,329],{},[332,1760],{},[319,1762,336],{},[332,1764],{},[319,1766,403],{}," Retrieve booking details by ID (no authentication needed).",[406,1769,409],{"id":1770},"request-3",[411,1772,1775],{"className":1773,"code":1774,"language":416},[414],"GET \u002Fapi\u002Fv1\u002Fbookings\u002F507f1f77bcf86cd799439041\n",[313,1776,1774],{"__ignoreMap":419},[406,1778,1505],{"id":1779},"response-200-ok-1",[411,1781,1783],{"className":425,"code":1782,"language":427,"meta":419,"style":419},"{\n  \"_id\": \"507f1f77bcf86cd799439041\",\n  \"organizationId\": \"507f191e810c19729de860ea\",\n  \"packageId\": \"507f1f77bcf86cd799439031\",\n  \"customerId\": \"507f1f77bcf86cd799439051\",\n  \"bookingDate\": \"2026-04-10\",\n  \"bookingTime\": \"14:30\",\n  \"status\": \"confirmed\",\n  \"preferredPaymentMethod\": \"cash\",\n  \"createdAt\": \"2026-04-01T09:15:00Z\",\n  \"verifiedAt\": \"2026-04-01T09:30:00Z\"\n}\n",[313,1784,1785,1789,1807,1825,1843,1861,1879,1897,1915,1933,1951,1967],{"__ignoreMap":419},[431,1786,1787],{"class":433,"line":434},[431,1788,438],{"class":437},[431,1790,1791,1793,1795,1797,1799,1801,1803,1805],{"class":433,"line":441},[431,1792,444],{"class":437},[431,1794,742],{"class":447},[431,1796,451],{"class":437},[431,1798,454],{"class":437},[431,1800,457],{"class":437},[431,1802,751],{"class":460},[431,1804,451],{"class":437},[431,1806,466],{"class":437},[431,1808,1809,1811,1813,1815,1817,1819,1821,1823],{"class":433,"line":469},[431,1810,444],{"class":437},[431,1812,762],{"class":447},[431,1814,451],{"class":437},[431,1816,454],{"class":437},[431,1818,457],{"class":437},[431,1820,771],{"class":460},[431,1822,451],{"class":437},[431,1824,466],{"class":437},[431,1826,1827,1829,1831,1833,1835,1837,1839,1841],{"class":433,"line":490},[431,1828,444],{"class":437},[431,1830,448],{"class":447},[431,1832,451],{"class":437},[431,1834,454],{"class":437},[431,1836,457],{"class":437},[431,1838,461],{"class":460},[431,1840,451],{"class":437},[431,1842,466],{"class":437},[431,1844,1845,1847,1849,1851,1853,1855,1857,1859],{"class":433,"line":511},[431,1846,444],{"class":437},[431,1848,800],{"class":447},[431,1850,451],{"class":437},[431,1852,454],{"class":437},[431,1854,457],{"class":437},[431,1856,809],{"class":460},[431,1858,451],{"class":437},[431,1860,466],{"class":437},[431,1862,1863,1865,1867,1869,1871,1873,1875,1877],{"class":433,"line":532},[431,1864,444],{"class":437},[431,1866,474],{"class":447},[431,1868,451],{"class":437},[431,1870,454],{"class":437},[431,1872,457],{"class":437},[431,1874,483],{"class":460},[431,1876,451],{"class":437},[431,1878,466],{"class":437},[431,1880,1881,1883,1885,1887,1889,1891,1893,1895],{"class":433,"line":553},[431,1882,444],{"class":437},[431,1884,495],{"class":447},[431,1886,451],{"class":437},[431,1888,454],{"class":437},[431,1890,457],{"class":437},[431,1892,504],{"class":460},[431,1894,451],{"class":437},[431,1896,466],{"class":437},[431,1898,1899,1901,1903,1905,1907,1909,1911,1913],{"class":433,"line":574},[431,1900,444],{"class":437},[431,1902,856],{"class":447},[431,1904,451],{"class":437},[431,1906,454],{"class":437},[431,1908,457],{"class":437},[431,1910,1577],{"class":460},[431,1912,451],{"class":437},[431,1914,466],{"class":437},[431,1916,1917,1919,1921,1923,1925,1927,1929,1931],{"class":433,"line":595},[431,1918,444],{"class":437},[431,1920,600],{"class":447},[431,1922,451],{"class":437},[431,1924,454],{"class":437},[431,1926,457],{"class":437},[431,1928,609],{"class":460},[431,1930,451],{"class":437},[431,1932,466],{"class":437},[431,1934,1935,1937,1939,1941,1943,1945,1947,1949],{"class":433,"line":616},[431,1936,444],{"class":437},[431,1938,894],{"class":447},[431,1940,451],{"class":437},[431,1942,454],{"class":437},[431,1944,457],{"class":437},[431,1946,903],{"class":460},[431,1948,451],{"class":437},[431,1950,466],{"class":437},[431,1952,1953,1955,1957,1959,1961,1963,1965],{"class":433,"line":631},[431,1954,444],{"class":437},[431,1956,1624],{"class":447},[431,1958,451],{"class":437},[431,1960,454],{"class":437},[431,1962,457],{"class":437},[431,1964,1633],{"class":460},[431,1966,927],{"class":437},[431,1968,1969],{"class":433,"line":910},[431,1970,634],{"class":437},[406,1972,961],{"id":1973},"error-responses-3",[309,1975,1976,1978],{},[319,1977,1068],{}," — Booking doesn't exist:",[411,1980,1982],{"className":425,"code":1981,"language":427,"meta":419,"style":419},"{\n  \"statusCode\": 404,\n  \"message\": \"Booking not found\"\n}\n",[313,1983,1984,1988,2002,2019],{"__ignoreMap":419},[431,1985,1986],{"class":433,"line":434},[431,1987,438],{"class":437},[431,1989,1990,1992,1994,1996,1998,2000],{"class":433,"line":441},[431,1991,444],{"class":437},[431,1993,983],{"class":447},[431,1995,451],{"class":437},[431,1997,454],{"class":437},[431,1999,1091],{"class":990},[431,2001,466],{"class":437},[431,2003,2004,2006,2008,2010,2012,2014,2017],{"class":433,"line":469},[431,2005,444],{"class":437},[431,2007,941],{"class":447},[431,2009,451],{"class":437},[431,2011,454],{"class":437},[431,2013,457],{"class":437},[431,2015,2016],{"class":460},"Booking not found",[431,2018,927],{"class":437},[431,2020,2021],{"class":433,"line":490},[431,2022,634],{"class":437},[406,2024,1118],{"id":2025},"curl-example-3",[411,2027,2029],{"className":1121,"code":2028,"language":1123,"meta":419,"style":419},"curl -X GET http:\u002F\u002Flocalhost:4001\u002Fapi\u002Fv1\u002Fbookings\u002F507f1f77bcf86cd799439041\n",[313,2030,2031],{"__ignoreMap":419},[431,2032,2033,2035,2037,2040],{"class":433,"line":434},[431,2034,1130],{"class":741},[431,2036,1133],{"class":460},[431,2038,2039],{"class":460}," GET",[431,2041,2042],{"class":460}," http:\u002F\u002Flocalhost:4001\u002Fapi\u002Fv1\u002Fbookings\u002F507f1f77bcf86cd799439041\n",[362,2044],{},[365,2046,1742,2048,2051],{"id":2047},"get-apiv1bookingsfully-booked-slots-list-fully-booked-timeslots",[313,2049,2050],{},"\u002Fapi\u002Fv1\u002Fbookings\u002Ffully-booked-slots"," — List Fully Booked Timeslots",[309,2053,2054,378,2056,381,2058,2060,322,2062,326,2064,390,2066,2068,395,2070,398,2072,2074,2076],{},[319,2055,377],{},[313,2057,340],{},[332,2059],{},[319,2061,321],{},[313,2063,325],{},[319,2065,329],{},[332,2067],{},[319,2069,336],{},[313,2071,344],{},[332,2073],{},[319,2075,403],{}," Get all timeslots that are fully booked for the tenant.",[406,2078,409],{"id":2079},"request-4",[411,2081,2084],{"className":2082,"code":2083,"language":416},[414],"GET \u002Fapi\u002Fv1\u002Fbookings\u002Ffully-booked-slots\nHeader: X-Tenant-Slug: janes-salon\n",[313,2085,2083],{"__ignoreMap":419},[406,2087,1505],{"id":2088},"response-200-ok-2",[411,2090,2092],{"className":425,"code":2091,"language":427,"meta":419,"style":419},"{\n  \"fullyBookedSlots\": [\n    {\n      \"date\": \"2026-04-10\",\n      \"time\": \"14:30\",\n      \"packageId\": \"507f1f77bcf86cd799439031\"\n    },\n    {\n      \"date\": \"2026-04-10\",\n      \"time\": \"15:00\",\n      \"packageId\": \"507f1f77bcf86cd799439031\"\n    }\n  ],\n  \"count\": 2\n}\n",[313,2093,2094,2098,2112,2117,2137,2156,2172,2177,2181,2199,2218,2234,2239,2244,2258],{"__ignoreMap":419},[431,2095,2096],{"class":433,"line":434},[431,2097,438],{"class":437},[431,2099,2100,2102,2105,2107,2109],{"class":433,"line":441},[431,2101,444],{"class":437},[431,2103,2104],{"class":447},"fullyBookedSlots",[431,2106,451],{"class":437},[431,2108,454],{"class":437},[431,2110,2111],{"class":437}," [\n",[431,2113,2114],{"class":433,"line":469},[431,2115,2116],{"class":437},"    {\n",[431,2118,2119,2122,2125,2127,2129,2131,2133,2135],{"class":433,"line":490},[431,2120,2121],{"class":437},"      \"",[431,2123,2124],{"class":741},"date",[431,2126,451],{"class":437},[431,2128,454],{"class":437},[431,2130,457],{"class":437},[431,2132,483],{"class":460},[431,2134,451],{"class":437},[431,2136,466],{"class":437},[431,2138,2139,2141,2144,2146,2148,2150,2152,2154],{"class":433,"line":511},[431,2140,2121],{"class":437},[431,2142,2143],{"class":741},"time",[431,2145,451],{"class":437},[431,2147,454],{"class":437},[431,2149,457],{"class":437},[431,2151,504],{"class":460},[431,2153,451],{"class":437},[431,2155,466],{"class":437},[431,2157,2158,2160,2162,2164,2166,2168,2170],{"class":433,"line":532},[431,2159,2121],{"class":437},[431,2161,448],{"class":741},[431,2163,451],{"class":437},[431,2165,454],{"class":437},[431,2167,457],{"class":437},[431,2169,461],{"class":460},[431,2171,927],{"class":437},[431,2173,2174],{"class":433,"line":553},[431,2175,2176],{"class":437},"    },\n",[431,2178,2179],{"class":433,"line":574},[431,2180,2116],{"class":437},[431,2182,2183,2185,2187,2189,2191,2193,2195,2197],{"class":433,"line":595},[431,2184,2121],{"class":437},[431,2186,2124],{"class":741},[431,2188,451],{"class":437},[431,2190,454],{"class":437},[431,2192,457],{"class":437},[431,2194,483],{"class":460},[431,2196,451],{"class":437},[431,2198,466],{"class":437},[431,2200,2201,2203,2205,2207,2209,2211,2214,2216],{"class":433,"line":616},[431,2202,2121],{"class":437},[431,2204,2143],{"class":741},[431,2206,451],{"class":437},[431,2208,454],{"class":437},[431,2210,457],{"class":437},[431,2212,2213],{"class":460},"15:00",[431,2215,451],{"class":437},[431,2217,466],{"class":437},[431,2219,2220,2222,2224,2226,2228,2230,2232],{"class":433,"line":631},[431,2221,2121],{"class":437},[431,2223,448],{"class":741},[431,2225,451],{"class":437},[431,2227,454],{"class":437},[431,2229,457],{"class":437},[431,2231,461],{"class":460},[431,2233,927],{"class":437},[431,2235,2236],{"class":433,"line":910},[431,2237,2238],{"class":437},"    }\n",[431,2240,2241],{"class":433,"line":930},[431,2242,2243],{"class":437},"  ],\n",[431,2245,2246,2248,2251,2253,2255],{"class":433,"line":936},[431,2247,444],{"class":437},[431,2249,2250],{"class":447},"count",[431,2252,451],{"class":437},[431,2254,454],{"class":437},[431,2256,2257],{"class":990}," 2\n",[431,2259,2260],{"class":433,"line":955},[431,2261,634],{"class":437},[406,2263,1118],{"id":2264},"curl-example-4",[411,2266,2268],{"className":1121,"code":2267,"language":1123,"meta":419,"style":419},"curl -X GET \"http:\u002F\u002Flocalhost:4001\u002Fapi\u002Fv1\u002Fbookings\u002Ffully-booked-slots\" \\\n  -H \"X-Tenant-Slug: janes-salon\"\n",[313,2269,2270,2287],{"__ignoreMap":419},[431,2271,2272,2274,2276,2278,2280,2283,2285],{"class":433,"line":434},[431,2273,1130],{"class":741},[431,2275,1133],{"class":460},[431,2277,2039],{"class":460},[431,2279,457],{"class":437},[431,2281,2282],{"class":460},"http:\u002F\u002Flocalhost:4001\u002Fapi\u002Fv1\u002Fbookings\u002Ffully-booked-slots",[431,2284,451],{"class":437},[431,2286,1143],{"class":1142},[431,2288,2289,2291,2293,2295],{"class":433,"line":441},[431,2290,1148],{"class":460},[431,2292,457],{"class":437},[431,2294,1166],{"class":460},[431,2296,927],{"class":437},[362,2298],{},[365,2300,2302],{"id":2301},"notes","Notes",[639,2304,2305,2312,2319,2322,2329],{},[642,2306,2307,2308,2311],{},"All public bookings require a ",[319,2309,2310],{},"valid tenant"," (subdomain or header).",[642,2313,2314,2315,2318],{},"Guest bookings start in ",[313,2316,2317],{},"PENDING"," status until email verification.",[642,2320,2321],{},"If guest email matches existing tenant customer, customer context is used.",[642,2323,2324,2325,2328],{},"Past dates\u002Ftimes are ",[319,2326,2327],{},"rejected"," by server validation.",[642,2330,2331,2332,2335],{},"See ",[313,2333,2334],{},"booki-api\u002Fsrc\u002Fvalidations\u002Fbooking.validation.ts"," for exact fields.",[2337,2338,2339],"style",{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}",{"title":419,"searchDepth":434,"depth":441,"links":2341},[2342,2349,2356,2363,2370,2376],{"id":367,"depth":441,"text":2343,"children":2344},"POST \u002Fapi\u002Fv1\u002Fbookings\u002Ftype\u002F:type — Create Initial Booking (Tenant Subdomain)",[2345,2346,2347,2348],{"id":408,"depth":469,"text":409},{"id":709,"depth":469,"text":710},{"id":960,"depth":469,"text":961},{"id":1117,"depth":469,"text":1118},{"id":1233,"depth":441,"text":2350,"children":2351},"POST \u002Fapi\u002Fv1\u002Fbookings\u002Forganizations\u002F:organizationId\u002Ftype\u002F:type — Create Booking (Explicit Org ID)",[2352,2353,2354,2355],{"id":1288,"depth":469,"text":409},{"id":1304,"depth":469,"text":710},{"id":1310,"depth":469,"text":1118},{"id":1403,"depth":469,"text":961},{"id":1459,"depth":441,"text":2357,"children":2358},"PUT \u002Fapi\u002Fv1\u002Fbookings\u002F:id\u002Fverify — Verify Booking",[2359,2360,2361,2362],{"id":1495,"depth":469,"text":409},{"id":1504,"depth":469,"text":1505},{"id":1663,"depth":469,"text":961},{"id":1715,"depth":469,"text":1118},{"id":1741,"depth":441,"text":2364,"children":2365},"GET \u002Fapi\u002Fv1\u002Fbookings\u002F:id — Get Booking by ID",[2366,2367,2368,2369],{"id":1770,"depth":469,"text":409},{"id":1779,"depth":469,"text":1505},{"id":1973,"depth":469,"text":961},{"id":2025,"depth":469,"text":1118},{"id":2047,"depth":441,"text":2371,"children":2372},"GET \u002Fapi\u002Fv1\u002Fbookings\u002Ffully-booked-slots — List Fully Booked Timeslots",[2373,2374,2375],{"id":2079,"depth":469,"text":409},{"id":2088,"depth":469,"text":1505},{"id":2264,"depth":469,"text":1118},{"id":2301,"depth":441,"text":2302},"Public booking endpoints for guests and tenant customers (no auth required).","md",null,{},{"icon":167},{"title":164,"description":2377},"pq1fcoJ3m5Ha2N7KYqV2hdUCs9MuDkwwNBX8Jykqz_Q",[2385,2387],{"title":160,"path":161,"stem":162,"description":2386,"icon":158,"children":-1},"Protected booking endpoints for registered customers and owners.",{"title":169,"path":170,"stem":171,"description":2388,"icon":172,"children":-1},"Create and list booking service categories; contact form endpoint.",1777787844708]