[{"data":1,"prerenderedAt":2182},["ShallowReactive",2],{"navigation":3,"\u002Fbooki-documentation\u002Fapi\u002Fbookings-auth":303,"\u002Fbooki-documentation\u002Fapi\u002Fbookings-auth-surround":2177},[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":160,"body":305,"description":2170,"extension":2171,"links":2172,"meta":2173,"navigation":2174,"path":161,"seo":2175,"stem":162,"__hash__":2176},"docs\u002F3.booki-documentation\u002F3.api\u002F3.bookings-auth.md",{"type":306,"value":307,"toc":2138},"minimark",[308,316,344,351,354,362,387,392,509,512,548,562,566,618,622,628,675,681,726,730,824,826,833,859,862,865,976,984,988,1367,1370,1375,1417,1420,1453,1455,1463,1484,1487,1556,1558,1580,1594,1597,1600,1630,1660,1663,1668,1712,1715,1791,1793,1800,1821,1824,1855,1857,1864,1874,1877,1879,1909,1939,1942,1947,1991,1994,2064,2066,2070,2076,2107,2109,2113,2134],[309,310,311,312],"p",{},"Base path: ",[313,314,315],"code",{},"\u002Fapi\u002Fv1\u002Fbookings",[309,317,318,322,323,326,327,322,330,333,336,339,340,343],{},[319,320,321],"strong",{},"Used by:"," ",[313,324,325],{},"customer-booki-web-app"," · ",[319,328,329],{},"Role:",[313,331,332],{},"customer",[334,335],"br",{},[319,337,338],{},"organizationId:"," From the customer's JWT token (embedded at registration — sent automatically via ",[313,341,342],{},"Authorization: Bearer"," header)",[309,345,346,347,350],{},"These endpoints require authentication (",[313,348,349],{},"Authorization: Bearer \u003CaccessToken>"," header) and are used by registered customers to manage their bookings.",[352,353],"hr",{},[355,356,358,359,361],"h2",{"id":357},"post-apiv1bookings-create-booking-authenticated","POST ",[313,360,315],{}," — Create Booking (Authenticated)",[309,363,364,367,368,370,371,373,322,375,326,377,322,379,381,383,386],{},[319,365,366],{},"Auth:"," Protected (",[313,369,349],{},")",[334,372],{},[319,374,321],{},[313,376,325],{},[319,378,329],{},[313,380,332],{},[334,382],{},[319,384,385],{},"Description:"," Create a booking as an authenticated customer. Logs booking in customer's history.",[388,389,391],"h3",{"id":390},"request","Request",[393,394,399],"pre",{"className":395,"code":396,"language":397,"meta":398,"style":398},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"packageId\": \"69de52bc4f3e4272e30c7a15\",\n  \"bookingDate\": \"2026-04-20\",\n  \"bookingTime\": \"14:30\",\n  \"preferredPaymentMethod\": \"maya\" \u002F\u002F (optional)\n}\n","json","",[313,400,401,410,438,459,480,503],{"__ignoreMap":398},[402,403,406],"span",{"class":404,"line":405},"line",1,[402,407,409],{"class":408},"sMK4o","{\n",[402,411,413,416,420,423,426,429,433,435],{"class":404,"line":412},2,[402,414,415],{"class":408},"  \"",[402,417,419],{"class":418},"spNyl","packageId",[402,421,422],{"class":408},"\"",[402,424,425],{"class":408},":",[402,427,428],{"class":408}," \"",[402,430,432],{"class":431},"sfazB","69de52bc4f3e4272e30c7a15",[402,434,422],{"class":408},[402,436,437],{"class":408},",\n",[402,439,441,443,446,448,450,452,455,457],{"class":404,"line":440},3,[402,442,415],{"class":408},[402,444,445],{"class":418},"bookingDate",[402,447,422],{"class":408},[402,449,425],{"class":408},[402,451,428],{"class":408},[402,453,454],{"class":431},"2026-04-20",[402,456,422],{"class":408},[402,458,437],{"class":408},[402,460,462,464,467,469,471,473,476,478],{"class":404,"line":461},4,[402,463,415],{"class":408},[402,465,466],{"class":418},"bookingTime",[402,468,422],{"class":408},[402,470,425],{"class":408},[402,472,428],{"class":408},[402,474,475],{"class":431},"14:30",[402,477,422],{"class":408},[402,479,437],{"class":408},[402,481,483,485,488,490,492,494,497,499],{"class":404,"line":482},5,[402,484,415],{"class":408},[402,486,487],{"class":418},"preferredPaymentMethod",[402,489,422],{"class":408},[402,491,425],{"class":408},[402,493,428],{"class":408},[402,495,496],{"class":431},"maya",[402,498,422],{"class":408},[402,500,502],{"class":501},"sHwdD"," \u002F\u002F (optional)\n",[402,504,506],{"class":404,"line":505},6,[402,507,508],{"class":408},"}\n",[309,510,511],{},"Fields:",[513,514,515,521,530,537],"ul",{},[516,517,518,520],"li",{},[313,519,419],{}," (string, required): Service package ID (24-hex)",[516,522,523,525,526,529],{},[313,524,445],{}," (string, required): ",[313,527,528],{},"YYYY-MM-DD"," (future)",[516,531,532,525,534,529],{},[313,533,466],{},[313,535,536],{},"HH:MM",[516,538,539,541,542,545,546],{},[313,540,487],{}," (string, optional): ",[313,543,544],{},"cash"," or ",[313,547,496],{},[549,550,551],"blockquote",{},[309,552,553,554,557,558,561],{},"Note: ",[313,555,556],{},"organizationId"," is ",[319,559,560],{},"not"," sent in the request body. It is read from the customer's JWT token server-side.",[388,563,565],{"id":564},"response-201-created","Response (201 Created)",[393,567,569],{"className":395,"code":568,"language":397,"meta":398,"style":398},"{\n  \"message\": \"Your booking reservation has been submitted. You can view and manage it anytime from your dashboard.\",\n  \"bookingId\": \"69defc2e27e1a548fd0cce1c\"\n}\n",[313,570,571,575,595,614],{"__ignoreMap":398},[402,572,573],{"class":404,"line":405},[402,574,409],{"class":408},[402,576,577,579,582,584,586,588,591,593],{"class":404,"line":412},[402,578,415],{"class":408},[402,580,581],{"class":418},"message",[402,583,422],{"class":408},[402,585,425],{"class":408},[402,587,428],{"class":408},[402,589,590],{"class":431},"Your booking reservation has been submitted. You can view and manage it anytime from your dashboard.",[402,592,422],{"class":408},[402,594,437],{"class":408},[402,596,597,599,602,604,606,608,611],{"class":404,"line":440},[402,598,415],{"class":408},[402,600,601],{"class":418},"bookingId",[402,603,422],{"class":408},[402,605,425],{"class":408},[402,607,428],{"class":408},[402,609,610],{"class":431},"69defc2e27e1a548fd0cce1c",[402,612,613],{"class":408},"\"\n",[402,615,616],{"class":404,"line":461},[402,617,508],{"class":408},[388,619,621],{"id":620},"error-responses","Error Responses",[309,623,624,627],{},[319,625,626],{},"401 Unauthorized"," — No valid token:",[393,629,631],{"className":395,"code":630,"language":397,"meta":398,"style":398},"{\n  \"statusCode\": 401,\n  \"message\": \"Access token is required to proceed.\"\n}\n",[313,632,633,637,654,671],{"__ignoreMap":398},[402,634,635],{"class":404,"line":405},[402,636,409],{"class":408},[402,638,639,641,644,646,648,652],{"class":404,"line":412},[402,640,415],{"class":408},[402,642,643],{"class":418},"statusCode",[402,645,422],{"class":408},[402,647,425],{"class":408},[402,649,651],{"class":650},"sbssI"," 401",[402,653,437],{"class":408},[402,655,656,658,660,662,664,666,669],{"class":404,"line":440},[402,657,415],{"class":408},[402,659,581],{"class":418},[402,661,422],{"class":408},[402,663,425],{"class":408},[402,665,428],{"class":408},[402,667,668],{"class":431},"Access token is required to proceed.",[402,670,613],{"class":408},[402,672,673],{"class":404,"line":461},[402,674,508],{"class":408},[309,676,677,680],{},[319,678,679],{},"400 Bad Request"," — Past date\u002Ftime:",[393,682,684],{"className":395,"code":683,"language":397,"meta":398,"style":398},"{\n  \"statusCode\": 400,\n  \"message\": \"Please select a valid date for your booking. Past dates are not available.\"\n}\n",[313,685,686,690,705,722],{"__ignoreMap":398},[402,687,688],{"class":404,"line":405},[402,689,409],{"class":408},[402,691,692,694,696,698,700,703],{"class":404,"line":412},[402,693,415],{"class":408},[402,695,643],{"class":418},[402,697,422],{"class":408},[402,699,425],{"class":408},[402,701,702],{"class":650}," 400",[402,704,437],{"class":408},[402,706,707,709,711,713,715,717,720],{"class":404,"line":440},[402,708,415],{"class":408},[402,710,581],{"class":418},[402,712,422],{"class":408},[402,714,425],{"class":408},[402,716,428],{"class":408},[402,718,719],{"class":431},"Please select a valid date for your booking. Past dates are not available.",[402,721,613],{"class":408},[402,723,724],{"class":404,"line":461},[402,725,508],{"class":408},[388,727,729],{"id":728},"curl-example","cURL Example",[393,731,735],{"className":732,"code":733,"language":734,"meta":398,"style":398},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","curl -X POST http:\u002F\u002Flocalhost:4001\u002Fapi\u002Fv1\u002Fbookings \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -H \"Authorization: Bearer eyJhbGc...\" \\\n  -d '{\n    \"packageId\": \"69de52bc4f3e4272e30c7a15\",\n    \"bookingDate\": \"2026-04-20\",\n    \"bookingTime\": \"14:30\",\n    \"preferredPaymentMethod\": \"maya\"\n  }'\n","bash",[313,736,737,756,770,783,793,798,803,809,815],{"__ignoreMap":398},[402,738,739,743,746,749,752],{"class":404,"line":405},[402,740,742],{"class":741},"sBMFI","curl",[402,744,745],{"class":431}," -X",[402,747,748],{"class":431}," POST",[402,750,751],{"class":431}," http:\u002F\u002Flocalhost:4001\u002Fapi\u002Fv1\u002Fbookings",[402,753,755],{"class":754},"sTEyZ"," \\\n",[402,757,758,761,763,766,768],{"class":404,"line":412},[402,759,760],{"class":431},"  -H",[402,762,428],{"class":408},[402,764,765],{"class":431},"Content-Type: application\u002Fjson",[402,767,422],{"class":408},[402,769,755],{"class":754},[402,771,772,774,776,779,781],{"class":404,"line":440},[402,773,760],{"class":431},[402,775,428],{"class":408},[402,777,778],{"class":431},"Authorization: Bearer eyJhbGc...",[402,780,422],{"class":408},[402,782,755],{"class":754},[402,784,785,788,791],{"class":404,"line":461},[402,786,787],{"class":431},"  -d",[402,789,790],{"class":408}," '",[402,792,409],{"class":431},[402,794,795],{"class":404,"line":482},[402,796,797],{"class":431},"    \"packageId\": \"69de52bc4f3e4272e30c7a15\",\n",[402,799,800],{"class":404,"line":505},[402,801,802],{"class":431},"    \"bookingDate\": \"2026-04-20\",\n",[402,804,806],{"class":404,"line":805},7,[402,807,808],{"class":431},"    \"bookingTime\": \"14:30\",\n",[402,810,812],{"class":404,"line":811},8,[402,813,814],{"class":431},"    \"preferredPaymentMethod\": \"maya\"\n",[402,816,818,821],{"class":404,"line":817},9,[402,819,820],{"class":431},"  }",[402,822,823],{"class":408},"'\n",[352,825],{},[355,827,829,830,832],{"id":828},"get-apiv1bookings-list-customer-bookings","GET ",[313,831,315],{}," — List Customer Bookings",[309,834,835,367,837,370,839,841,322,843,326,845,322,847,849,851,853,854,856,858],{},[319,836,366],{},[313,838,349],{},[334,840],{},[319,842,321],{},[313,844,325],{},[319,846,329],{},[313,848,332],{},[334,850],{},[319,852,338],{}," From JWT token (filters results to customer's organization automatically)",[334,855],{},[319,857,385],{}," Retrieve all bookings for the authenticated customer.",[388,860,391],{"id":861},"request-1",[309,863,864],{},"Query Parameters (optional):",[513,866,867,873,879,946,952,962],{},[516,868,869,872],{},[313,870,871],{},"page"," (number, default: 1): Page number",[516,874,875,878],{},[313,876,877],{},"limit"," (number, default: 10, max: 100): Results per page",[516,880,881,884,885,888,889,888,892,888,895,888,898,888,901,888,904,888,907,888,910,888,913,888,916,888,919,888,922,888,925,888,928,888,931,888,934,888,937,888,940,888,943],{},[313,882,883],{},"status"," (string): Filter by booking status. Accepted values: ",[313,886,887],{},"pending-verification",", ",[313,890,891],{},"verified",[313,893,894],{},"pending",[313,896,897],{},"confirmed",[313,899,900],{},"declined",[313,902,903],{},"pending-reschedule",[313,905,906],{},"confirmed-reschedule",[313,908,909],{},"declined-reschedule",[313,911,912],{},"rescheduled",[313,914,915],{},"pending-cancel",[313,917,918],{},"confirmed-cancel",[313,920,921],{},"declined-cancel",[313,923,924],{},"cancelled",[313,926,927],{},"cancelled-admin",[313,929,930],{},"paid",[313,932,933],{},"ongoing",[313,935,936],{},"completed",[313,938,939],{},"no-show",[313,941,942],{},"unpaid-expired",[313,944,945],{},"expired",[516,947,948,951],{},[313,949,950],{},"search"," (string): Search term (max 100 chars)",[516,953,954,957,958,961],{},[313,955,956],{},"sort"," (string, default: ",[313,959,960],{},"_id","): Sort field",[516,963,964,957,967,970,971,545,974],{},[313,965,966],{},"order",[313,968,969],{},"desc","): ",[313,972,973],{},"asc",[313,975,969],{},[393,977,982],{"className":978,"code":980,"language":981},[979],"language-text","GET \u002Fapi\u002Fv1\u002Fbookings?page=1&limit=10&status=confirmed&order=desc\n","text",[313,983,980],{"__ignoreMap":398},[388,985,987],{"id":986},"response-200-ok","Response (200 OK)",[393,989,991],{"className":395,"code":990,"language":397,"meta":398,"style":398},"{\n  \"items\": [\n    {\n      \"_id\": \"507f1f77bcf86cd799439041\",\n      \"organizationId\": \"507f191e810c19729de860ea\",\n      \"packageId\": \"507f1f77bcf86cd799439031\",\n      \"bookingDate\": \"2026-04-10\",\n      \"bookingTime\": \"14:30\",\n      \"status\": \"confirmed\",\n      \"preferredPaymentMethod\": \"maya\",\n      \"createdAt\": \"2026-04-01T09:15:00Z\"\n    },\n    {\n      \"_id\": \"507f1f77bcf86cd799439042\",\n      \"organizationId\": \"507f191e810c19729de860ea\",\n      \"packageId\": \"507f1f77bcf86cd799439032\",\n      \"bookingDate\": \"2026-04-15\",\n      \"bookingTime\": \"10:00\",\n      \"status\": \"pending\",\n      \"createdAt\": \"2026-04-01T10:20:00Z\"\n    }\n  ],\n  \"pages\": 3,\n  \"pageRange\": \"1-2 of 25\"\n}\n",[313,992,993,997,1011,1016,1036,1055,1074,1093,1111,1129,1148,1167,1173,1178,1198,1217,1237,1257,1277,1296,1314,1320,1326,1343,1362],{"__ignoreMap":398},[402,994,995],{"class":404,"line":405},[402,996,409],{"class":408},[402,998,999,1001,1004,1006,1008],{"class":404,"line":412},[402,1000,415],{"class":408},[402,1002,1003],{"class":418},"items",[402,1005,422],{"class":408},[402,1007,425],{"class":408},[402,1009,1010],{"class":408}," [\n",[402,1012,1013],{"class":404,"line":440},[402,1014,1015],{"class":408},"    {\n",[402,1017,1018,1021,1023,1025,1027,1029,1032,1034],{"class":404,"line":461},[402,1019,1020],{"class":408},"      \"",[402,1022,960],{"class":741},[402,1024,422],{"class":408},[402,1026,425],{"class":408},[402,1028,428],{"class":408},[402,1030,1031],{"class":431},"507f1f77bcf86cd799439041",[402,1033,422],{"class":408},[402,1035,437],{"class":408},[402,1037,1038,1040,1042,1044,1046,1048,1051,1053],{"class":404,"line":482},[402,1039,1020],{"class":408},[402,1041,556],{"class":741},[402,1043,422],{"class":408},[402,1045,425],{"class":408},[402,1047,428],{"class":408},[402,1049,1050],{"class":431},"507f191e810c19729de860ea",[402,1052,422],{"class":408},[402,1054,437],{"class":408},[402,1056,1057,1059,1061,1063,1065,1067,1070,1072],{"class":404,"line":505},[402,1058,1020],{"class":408},[402,1060,419],{"class":741},[402,1062,422],{"class":408},[402,1064,425],{"class":408},[402,1066,428],{"class":408},[402,1068,1069],{"class":431},"507f1f77bcf86cd799439031",[402,1071,422],{"class":408},[402,1073,437],{"class":408},[402,1075,1076,1078,1080,1082,1084,1086,1089,1091],{"class":404,"line":805},[402,1077,1020],{"class":408},[402,1079,445],{"class":741},[402,1081,422],{"class":408},[402,1083,425],{"class":408},[402,1085,428],{"class":408},[402,1087,1088],{"class":431},"2026-04-10",[402,1090,422],{"class":408},[402,1092,437],{"class":408},[402,1094,1095,1097,1099,1101,1103,1105,1107,1109],{"class":404,"line":811},[402,1096,1020],{"class":408},[402,1098,466],{"class":741},[402,1100,422],{"class":408},[402,1102,425],{"class":408},[402,1104,428],{"class":408},[402,1106,475],{"class":431},[402,1108,422],{"class":408},[402,1110,437],{"class":408},[402,1112,1113,1115,1117,1119,1121,1123,1125,1127],{"class":404,"line":817},[402,1114,1020],{"class":408},[402,1116,883],{"class":741},[402,1118,422],{"class":408},[402,1120,425],{"class":408},[402,1122,428],{"class":408},[402,1124,897],{"class":431},[402,1126,422],{"class":408},[402,1128,437],{"class":408},[402,1130,1132,1134,1136,1138,1140,1142,1144,1146],{"class":404,"line":1131},10,[402,1133,1020],{"class":408},[402,1135,487],{"class":741},[402,1137,422],{"class":408},[402,1139,425],{"class":408},[402,1141,428],{"class":408},[402,1143,496],{"class":431},[402,1145,422],{"class":408},[402,1147,437],{"class":408},[402,1149,1151,1153,1156,1158,1160,1162,1165],{"class":404,"line":1150},11,[402,1152,1020],{"class":408},[402,1154,1155],{"class":741},"createdAt",[402,1157,422],{"class":408},[402,1159,425],{"class":408},[402,1161,428],{"class":408},[402,1163,1164],{"class":431},"2026-04-01T09:15:00Z",[402,1166,613],{"class":408},[402,1168,1170],{"class":404,"line":1169},12,[402,1171,1172],{"class":408},"    },\n",[402,1174,1176],{"class":404,"line":1175},13,[402,1177,1015],{"class":408},[402,1179,1181,1183,1185,1187,1189,1191,1194,1196],{"class":404,"line":1180},14,[402,1182,1020],{"class":408},[402,1184,960],{"class":741},[402,1186,422],{"class":408},[402,1188,425],{"class":408},[402,1190,428],{"class":408},[402,1192,1193],{"class":431},"507f1f77bcf86cd799439042",[402,1195,422],{"class":408},[402,1197,437],{"class":408},[402,1199,1201,1203,1205,1207,1209,1211,1213,1215],{"class":404,"line":1200},15,[402,1202,1020],{"class":408},[402,1204,556],{"class":741},[402,1206,422],{"class":408},[402,1208,425],{"class":408},[402,1210,428],{"class":408},[402,1212,1050],{"class":431},[402,1214,422],{"class":408},[402,1216,437],{"class":408},[402,1218,1220,1222,1224,1226,1228,1230,1233,1235],{"class":404,"line":1219},16,[402,1221,1020],{"class":408},[402,1223,419],{"class":741},[402,1225,422],{"class":408},[402,1227,425],{"class":408},[402,1229,428],{"class":408},[402,1231,1232],{"class":431},"507f1f77bcf86cd799439032",[402,1234,422],{"class":408},[402,1236,437],{"class":408},[402,1238,1240,1242,1244,1246,1248,1250,1253,1255],{"class":404,"line":1239},17,[402,1241,1020],{"class":408},[402,1243,445],{"class":741},[402,1245,422],{"class":408},[402,1247,425],{"class":408},[402,1249,428],{"class":408},[402,1251,1252],{"class":431},"2026-04-15",[402,1254,422],{"class":408},[402,1256,437],{"class":408},[402,1258,1260,1262,1264,1266,1268,1270,1273,1275],{"class":404,"line":1259},18,[402,1261,1020],{"class":408},[402,1263,466],{"class":741},[402,1265,422],{"class":408},[402,1267,425],{"class":408},[402,1269,428],{"class":408},[402,1271,1272],{"class":431},"10:00",[402,1274,422],{"class":408},[402,1276,437],{"class":408},[402,1278,1280,1282,1284,1286,1288,1290,1292,1294],{"class":404,"line":1279},19,[402,1281,1020],{"class":408},[402,1283,883],{"class":741},[402,1285,422],{"class":408},[402,1287,425],{"class":408},[402,1289,428],{"class":408},[402,1291,894],{"class":431},[402,1293,422],{"class":408},[402,1295,437],{"class":408},[402,1297,1299,1301,1303,1305,1307,1309,1312],{"class":404,"line":1298},20,[402,1300,1020],{"class":408},[402,1302,1155],{"class":741},[402,1304,422],{"class":408},[402,1306,425],{"class":408},[402,1308,428],{"class":408},[402,1310,1311],{"class":431},"2026-04-01T10:20:00Z",[402,1313,613],{"class":408},[402,1315,1317],{"class":404,"line":1316},21,[402,1318,1319],{"class":408},"    }\n",[402,1321,1323],{"class":404,"line":1322},22,[402,1324,1325],{"class":408},"  ],\n",[402,1327,1329,1331,1334,1336,1338,1341],{"class":404,"line":1328},23,[402,1330,415],{"class":408},[402,1332,1333],{"class":418},"pages",[402,1335,422],{"class":408},[402,1337,425],{"class":408},[402,1339,1340],{"class":650}," 3",[402,1342,437],{"class":408},[402,1344,1346,1348,1351,1353,1355,1357,1360],{"class":404,"line":1345},24,[402,1347,415],{"class":408},[402,1349,1350],{"class":418},"pageRange",[402,1352,422],{"class":408},[402,1354,425],{"class":408},[402,1356,428],{"class":408},[402,1358,1359],{"class":431},"1-2 of 25",[402,1361,613],{"class":408},[402,1363,1365],{"class":404,"line":1364},25,[402,1366,508],{"class":408},[388,1368,621],{"id":1369},"error-responses-1",[309,1371,1372,1374],{},[319,1373,626],{}," — No token:",[393,1376,1377],{"className":395,"code":630,"language":397,"meta":398,"style":398},[313,1378,1379,1383,1397,1413],{"__ignoreMap":398},[402,1380,1381],{"class":404,"line":405},[402,1382,409],{"class":408},[402,1384,1385,1387,1389,1391,1393,1395],{"class":404,"line":412},[402,1386,415],{"class":408},[402,1388,643],{"class":418},[402,1390,422],{"class":408},[402,1392,425],{"class":408},[402,1394,651],{"class":650},[402,1396,437],{"class":408},[402,1398,1399,1401,1403,1405,1407,1409,1411],{"class":404,"line":440},[402,1400,415],{"class":408},[402,1402,581],{"class":418},[402,1404,422],{"class":408},[402,1406,425],{"class":408},[402,1408,428],{"class":408},[402,1410,668],{"class":431},[402,1412,613],{"class":408},[402,1414,1415],{"class":404,"line":461},[402,1416,508],{"class":408},[388,1418,729],{"id":1419},"curl-example-1",[393,1421,1423],{"className":732,"code":1422,"language":734,"meta":398,"style":398},"curl -X GET \"http:\u002F\u002Flocalhost:4001\u002Fapi\u002Fv1\u002Fbookings?page=1&limit=10&status=confirmed\" \\\n  -H \"Authorization: Bearer eyJhbGc...\"\n",[313,1424,1425,1443],{"__ignoreMap":398},[402,1426,1427,1429,1431,1434,1436,1439,1441],{"class":404,"line":405},[402,1428,742],{"class":741},[402,1430,745],{"class":431},[402,1432,1433],{"class":431}," GET",[402,1435,428],{"class":408},[402,1437,1438],{"class":431},"http:\u002F\u002Flocalhost:4001\u002Fapi\u002Fv1\u002Fbookings?page=1&limit=10&status=confirmed",[402,1440,422],{"class":408},[402,1442,755],{"class":754},[402,1444,1445,1447,1449,1451],{"class":404,"line":412},[402,1446,760],{"class":431},[402,1448,428],{"class":408},[402,1450,778],{"class":431},[402,1452,613],{"class":408},[352,1454],{},[355,1456,1458,1459,1462],{"id":1457},"put-apiv1bookingsidreschedule-reschedule-booking","PUT ",[313,1460,1461],{},"\u002Fapi\u002Fv1\u002Fbookings\u002F:id\u002Freschedule"," — Reschedule Booking",[309,1464,1465,367,1467,370,1469,1471,322,1473,326,1475,322,1477,1479,1481,1483],{},[319,1466,366],{},[313,1468,349],{},[334,1470],{},[319,1472,321],{},[313,1474,325],{},[319,1476,329],{},[313,1478,332],{},[334,1480],{},[319,1482,385],{}," Reschedule an existing booking to a new date\u002Ftime.",[388,1485,391],{"id":1486},"request-2",[393,1488,1490],{"className":395,"code":1489,"language":397,"meta":398,"style":398},"{\n  \"bookingDate\": \"2026-04-12\",\n  \"bookingTime\": \"16:00\",\n  \"rescheduleReason\": \"Customer requested new time due to schedule conflict\"\n}\n",[313,1491,1492,1496,1515,1534,1552],{"__ignoreMap":398},[402,1493,1494],{"class":404,"line":405},[402,1495,409],{"class":408},[402,1497,1498,1500,1502,1504,1506,1508,1511,1513],{"class":404,"line":412},[402,1499,415],{"class":408},[402,1501,445],{"class":418},[402,1503,422],{"class":408},[402,1505,425],{"class":408},[402,1507,428],{"class":408},[402,1509,1510],{"class":431},"2026-04-12",[402,1512,422],{"class":408},[402,1514,437],{"class":408},[402,1516,1517,1519,1521,1523,1525,1527,1530,1532],{"class":404,"line":440},[402,1518,415],{"class":408},[402,1520,466],{"class":418},[402,1522,422],{"class":408},[402,1524,425],{"class":408},[402,1526,428],{"class":408},[402,1528,1529],{"class":431},"16:00",[402,1531,422],{"class":408},[402,1533,437],{"class":408},[402,1535,1536,1538,1541,1543,1545,1547,1550],{"class":404,"line":461},[402,1537,415],{"class":408},[402,1539,1540],{"class":418},"rescheduleReason",[402,1542,422],{"class":408},[402,1544,425],{"class":408},[402,1546,428],{"class":408},[402,1548,1549],{"class":431},"Customer requested new time due to schedule conflict",[402,1551,613],{"class":408},[402,1553,1554],{"class":404,"line":482},[402,1555,508],{"class":408},[309,1557,511],{},[513,1559,1560,1568,1575],{},[516,1561,1562,1564,1565,1567],{},[313,1563,445],{}," (string, required): New date (",[313,1566,528],{},", future)",[516,1569,1570,1572,1573,1567],{},[313,1571,466],{}," (string, required): New time (",[313,1574,536],{},[516,1576,1577,1579],{},[313,1578,1540],{}," (string, optional): Reason for reschedule (10-500 chars)",[549,1581,1582],{},[309,1583,553,1584,1587,1588,1590,1591,1593],{},[313,1585,1586],{},"bookableId"," and ",[313,1589,556],{}," are ",[319,1592,560],{}," sent in the request body. Both are read from the customer's JWT token server-side.",[388,1595,987],{"id":1596},"response-200-ok-1",[309,1598,1599],{},"Response message depends on the booking's current status:",[393,1601,1603],{"className":395,"code":1602,"language":397,"meta":398,"style":398},"{\n  \"message\": \"Your booking has been successfully rescheduled. We hope to see you again soon!\"\n}\n",[313,1604,1605,1609,1626],{"__ignoreMap":398},[402,1606,1607],{"class":404,"line":405},[402,1608,409],{"class":408},[402,1610,1611,1613,1615,1617,1619,1621,1624],{"class":404,"line":412},[402,1612,415],{"class":408},[402,1614,581],{"class":418},[402,1616,422],{"class":408},[402,1618,425],{"class":408},[402,1620,428],{"class":408},[402,1622,1623],{"class":431},"Your booking has been successfully rescheduled. We hope to see you again soon!",[402,1625,613],{"class":408},[402,1627,1628],{"class":404,"line":440},[402,1629,508],{"class":408},[393,1631,1633],{"className":395,"code":1632,"language":397,"meta":398,"style":398},"{\n  \"message\": \"We've received your reschedule request. You'll receive a notification once it's reviewed and a decision is made.\"\n}\n",[313,1634,1635,1639,1656],{"__ignoreMap":398},[402,1636,1637],{"class":404,"line":405},[402,1638,409],{"class":408},[402,1640,1641,1643,1645,1647,1649,1651,1654],{"class":404,"line":412},[402,1642,415],{"class":408},[402,1644,581],{"class":418},[402,1646,422],{"class":408},[402,1648,425],{"class":408},[402,1650,428],{"class":408},[402,1652,1653],{"class":431},"We've received your reschedule request. You'll receive a notification once it's reviewed and a decision is made.",[402,1655,613],{"class":408},[402,1657,1658],{"class":404,"line":440},[402,1659,508],{"class":408},[388,1661,621],{"id":1662},"error-responses-2",[309,1664,1665,1667],{},[319,1666,679],{}," — New time is in past:",[393,1669,1671],{"className":395,"code":1670,"language":397,"meta":398,"style":398},"{\n  \"statusCode\": 400,\n  \"message\": \"Please select a valid time slot for your rescheduled booking. Past date and time are not available.\"\n}\n",[313,1672,1673,1677,1691,1708],{"__ignoreMap":398},[402,1674,1675],{"class":404,"line":405},[402,1676,409],{"class":408},[402,1678,1679,1681,1683,1685,1687,1689],{"class":404,"line":412},[402,1680,415],{"class":408},[402,1682,643],{"class":418},[402,1684,422],{"class":408},[402,1686,425],{"class":408},[402,1688,702],{"class":650},[402,1690,437],{"class":408},[402,1692,1693,1695,1697,1699,1701,1703,1706],{"class":404,"line":440},[402,1694,415],{"class":408},[402,1696,581],{"class":418},[402,1698,422],{"class":408},[402,1700,425],{"class":408},[402,1702,428],{"class":408},[402,1704,1705],{"class":431},"Please select a valid time slot for your rescheduled booking. Past date and time are not available.",[402,1707,613],{"class":408},[402,1709,1710],{"class":404,"line":461},[402,1711,508],{"class":408},[388,1713,729],{"id":1714},"curl-example-2",[393,1716,1718],{"className":732,"code":1717,"language":734,"meta":398,"style":398},"curl -X PUT \"http:\u002F\u002Flocalhost:4001\u002Fapi\u002Fv1\u002Fbookings\u002F507f1f77bcf86cd799439041\u002Freschedule\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -H \"Authorization: Bearer eyJhbGc...\" \\\n  -d '{\n    \"bookingDate\": \"2026-04-12\",\n    \"bookingTime\": \"16:00\",\n    \"rescheduleReason\": \"Customer requested new time\"\n  }'\n",[313,1719,1720,1738,1750,1762,1770,1775,1780,1785],{"__ignoreMap":398},[402,1721,1722,1724,1726,1729,1731,1734,1736],{"class":404,"line":405},[402,1723,742],{"class":741},[402,1725,745],{"class":431},[402,1727,1728],{"class":431}," PUT",[402,1730,428],{"class":408},[402,1732,1733],{"class":431},"http:\u002F\u002Flocalhost:4001\u002Fapi\u002Fv1\u002Fbookings\u002F507f1f77bcf86cd799439041\u002Freschedule",[402,1735,422],{"class":408},[402,1737,755],{"class":754},[402,1739,1740,1742,1744,1746,1748],{"class":404,"line":412},[402,1741,760],{"class":431},[402,1743,428],{"class":408},[402,1745,765],{"class":431},[402,1747,422],{"class":408},[402,1749,755],{"class":754},[402,1751,1752,1754,1756,1758,1760],{"class":404,"line":440},[402,1753,760],{"class":431},[402,1755,428],{"class":408},[402,1757,778],{"class":431},[402,1759,422],{"class":408},[402,1761,755],{"class":754},[402,1763,1764,1766,1768],{"class":404,"line":461},[402,1765,787],{"class":431},[402,1767,790],{"class":408},[402,1769,409],{"class":431},[402,1771,1772],{"class":404,"line":482},[402,1773,1774],{"class":431},"    \"bookingDate\": \"2026-04-12\",\n",[402,1776,1777],{"class":404,"line":505},[402,1778,1779],{"class":431},"    \"bookingTime\": \"16:00\",\n",[402,1781,1782],{"class":404,"line":805},[402,1783,1784],{"class":431},"    \"rescheduleReason\": \"Customer requested new time\"\n",[402,1786,1787,1789],{"class":404,"line":811},[402,1788,820],{"class":431},[402,1790,823],{"class":408},[352,1792],{},[355,1794,1458,1796,1799],{"id":1795},"put-apiv1bookingsidcancel-cancel-booking",[313,1797,1798],{},"\u002Fapi\u002Fv1\u002Fbookings\u002F:id\u002Fcancel"," — Cancel Booking",[309,1801,1802,367,1804,370,1806,1808,322,1810,326,1812,322,1814,1816,1818,1820],{},[319,1803,366],{},[313,1805,349],{},[334,1807],{},[319,1809,321],{},[313,1811,325],{},[319,1813,329],{},[313,1815,332],{},[334,1817],{},[319,1819,385],{}," Cancel an existing booking.",[388,1822,391],{"id":1823},"request-3",[393,1825,1827],{"className":395,"code":1826,"language":397,"meta":398,"style":398},"{\n  \"cancelReason\": \"Had to travel for urgent business meeting\"\n}\n",[313,1828,1829,1833,1851],{"__ignoreMap":398},[402,1830,1831],{"class":404,"line":405},[402,1832,409],{"class":408},[402,1834,1835,1837,1840,1842,1844,1846,1849],{"class":404,"line":412},[402,1836,415],{"class":408},[402,1838,1839],{"class":418},"cancelReason",[402,1841,422],{"class":408},[402,1843,425],{"class":408},[402,1845,428],{"class":408},[402,1847,1848],{"class":431},"Had to travel for urgent business meeting",[402,1850,613],{"class":408},[402,1852,1853],{"class":404,"line":440},[402,1854,508],{"class":408},[309,1856,511],{},[513,1858,1859],{},[516,1860,1861,1863],{},[313,1862,1839],{}," (string, optional): Reason for cancellation (10-500 chars)",[549,1865,1866],{},[309,1867,553,1868,1587,1870,1590,1872,1593],{},[313,1869,1586],{},[313,1871,556],{},[319,1873,560],{},[388,1875,987],{"id":1876},"response-200-ok-2",[309,1878,1599],{},[393,1880,1882],{"className":395,"code":1881,"language":397,"meta":398,"style":398},"{\n  \"message\": \"Your booking has been successfully cancelled. We hope to see you again soon!\"\n}\n",[313,1883,1884,1888,1905],{"__ignoreMap":398},[402,1885,1886],{"class":404,"line":405},[402,1887,409],{"class":408},[402,1889,1890,1892,1894,1896,1898,1900,1903],{"class":404,"line":412},[402,1891,415],{"class":408},[402,1893,581],{"class":418},[402,1895,422],{"class":408},[402,1897,425],{"class":408},[402,1899,428],{"class":408},[402,1901,1902],{"class":431},"Your booking has been successfully cancelled. We hope to see you again soon!",[402,1904,613],{"class":408},[402,1906,1907],{"class":404,"line":440},[402,1908,508],{"class":408},[393,1910,1912],{"className":395,"code":1911,"language":397,"meta":398,"style":398},"{\n  \"message\": \"We've received your cancellation request. You'll receive a notification once it's reviewed and a decision is made.\"\n}\n",[313,1913,1914,1918,1935],{"__ignoreMap":398},[402,1915,1916],{"class":404,"line":405},[402,1917,409],{"class":408},[402,1919,1920,1922,1924,1926,1928,1930,1933],{"class":404,"line":412},[402,1921,415],{"class":408},[402,1923,581],{"class":418},[402,1925,422],{"class":408},[402,1927,425],{"class":408},[402,1929,428],{"class":408},[402,1931,1932],{"class":431},"We've received your cancellation request. You'll receive a notification once it's reviewed and a decision is made.",[402,1934,613],{"class":408},[402,1936,1937],{"class":404,"line":440},[402,1938,508],{"class":408},[388,1940,621],{"id":1941},"error-responses-3",[309,1943,1944,1946],{},[319,1945,679],{}," — Booking cannot be cancelled:",[393,1948,1950],{"className":395,"code":1949,"language":397,"meta":398,"style":398},"{\n  \"statusCode\": 400,\n  \"message\": \"This booking can no longer be cancelled.\"\n}\n",[313,1951,1952,1956,1970,1987],{"__ignoreMap":398},[402,1953,1954],{"class":404,"line":405},[402,1955,409],{"class":408},[402,1957,1958,1960,1962,1964,1966,1968],{"class":404,"line":412},[402,1959,415],{"class":408},[402,1961,643],{"class":418},[402,1963,422],{"class":408},[402,1965,425],{"class":408},[402,1967,702],{"class":650},[402,1969,437],{"class":408},[402,1971,1972,1974,1976,1978,1980,1982,1985],{"class":404,"line":440},[402,1973,415],{"class":408},[402,1975,581],{"class":418},[402,1977,422],{"class":408},[402,1979,425],{"class":408},[402,1981,428],{"class":408},[402,1983,1984],{"class":431},"This booking can no longer be cancelled.",[402,1986,613],{"class":408},[402,1988,1989],{"class":404,"line":461},[402,1990,508],{"class":408},[388,1992,729],{"id":1993},"curl-example-3",[393,1995,1997],{"className":732,"code":1996,"language":734,"meta":398,"style":398},"curl -X PUT \"http:\u002F\u002Flocalhost:4001\u002Fapi\u002Fv1\u002Fbookings\u002F507f1f77bcf86cd799439041\u002Fcancel\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -H \"Authorization: Bearer eyJhbGc...\" \\\n  -d '{\n    \"bookableId\": \"507f1f77bcf86cd799439051\",\n    \"cancelReason\": \"Had to travel\"\n  }'\n",[313,1998,1999,2016,2028,2040,2048,2053,2058],{"__ignoreMap":398},[402,2000,2001,2003,2005,2007,2009,2012,2014],{"class":404,"line":405},[402,2002,742],{"class":741},[402,2004,745],{"class":431},[402,2006,1728],{"class":431},[402,2008,428],{"class":408},[402,2010,2011],{"class":431},"http:\u002F\u002Flocalhost:4001\u002Fapi\u002Fv1\u002Fbookings\u002F507f1f77bcf86cd799439041\u002Fcancel",[402,2013,422],{"class":408},[402,2015,755],{"class":754},[402,2017,2018,2020,2022,2024,2026],{"class":404,"line":412},[402,2019,760],{"class":431},[402,2021,428],{"class":408},[402,2023,765],{"class":431},[402,2025,422],{"class":408},[402,2027,755],{"class":754},[402,2029,2030,2032,2034,2036,2038],{"class":404,"line":440},[402,2031,760],{"class":431},[402,2033,428],{"class":408},[402,2035,778],{"class":431},[402,2037,422],{"class":408},[402,2039,755],{"class":754},[402,2041,2042,2044,2046],{"class":404,"line":461},[402,2043,787],{"class":431},[402,2045,790],{"class":408},[402,2047,409],{"class":431},[402,2049,2050],{"class":404,"line":482},[402,2051,2052],{"class":431},"    \"bookableId\": \"507f1f77bcf86cd799439051\",\n",[402,2054,2055],{"class":404,"line":505},[402,2056,2057],{"class":431},"    \"cancelReason\": \"Had to travel\"\n",[402,2059,2060,2062],{"class":404,"line":805},[402,2061,820],{"class":431},[402,2063,823],{"class":408},[352,2065],{},[355,2067,2069],{"id":2068},"booking-status-lifecycle","Booking Status Lifecycle",[393,2071,2074],{"className":2072,"code":2073,"language":981},[979],"PENDING → CONFIRMED (owner accepts)\n       → DECLINED (owner declines)\n       → RESCHEDULED (customer reschedules)\n       → CANCELLED (customer cancels)\n       → NO_SHOW (customer doesn't show up)\n",[313,2075,2073],{"__ignoreMap":398},[513,2077,2078,2085,2091,2097],{},[516,2079,2080,2081,2084],{},"New bookings start as ",[313,2082,2083],{},"PENDING"," until owner confirms.",[516,2086,2087,2090],{},[313,2088,2089],{},"CONFIRMED"," bookings can be rescheduled or cancelled by customer.",[516,2092,2093,2096],{},[313,2094,2095],{},"DECLINED"," bookings cannot be modified; customer must rebook.",[516,2098,2099,2102,2103,2106],{},[313,2100,2101],{},"CANCELLED"," bookings are soft-deleted (mark ",[313,2104,2105],{},"deletedAt",").",[352,2108],{},[355,2110,2112],{"id":2111},"notes","Notes",[513,2114,2115,2121,2124,2127],{},[516,2116,2117,2118,2120],{},"All authenticated endpoints require a valid ",[313,2119,349],{}," header.",[516,2122,2123],{},"Dates must be in the future; past dates are rejected.",[516,2125,2126],{},"Pagination defaults to page 1, limit 10 (max 100).",[516,2128,2129,2130,2133],{},"See ",[313,2131,2132],{},"booki-api\u002Fsrc\u002Fvalidations\u002Fbooking.validation.ts"," for validation rules.",[2135,2136,2137],"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 pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}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 .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}",{"title":398,"searchDepth":405,"depth":412,"links":2139},[2140,2147,2154,2161,2168,2169],{"id":357,"depth":412,"text":2141,"children":2142},"POST \u002Fapi\u002Fv1\u002Fbookings — Create Booking (Authenticated)",[2143,2144,2145,2146],{"id":390,"depth":440,"text":391},{"id":564,"depth":440,"text":565},{"id":620,"depth":440,"text":621},{"id":728,"depth":440,"text":729},{"id":828,"depth":412,"text":2148,"children":2149},"GET \u002Fapi\u002Fv1\u002Fbookings — List Customer Bookings",[2150,2151,2152,2153],{"id":861,"depth":440,"text":391},{"id":986,"depth":440,"text":987},{"id":1369,"depth":440,"text":621},{"id":1419,"depth":440,"text":729},{"id":1457,"depth":412,"text":2155,"children":2156},"PUT \u002Fapi\u002Fv1\u002Fbookings\u002F:id\u002Freschedule — Reschedule Booking",[2157,2158,2159,2160],{"id":1486,"depth":440,"text":391},{"id":1596,"depth":440,"text":987},{"id":1662,"depth":440,"text":621},{"id":1714,"depth":440,"text":729},{"id":1795,"depth":412,"text":2162,"children":2163},"PUT \u002Fapi\u002Fv1\u002Fbookings\u002F:id\u002Fcancel — Cancel Booking",[2164,2165,2166,2167],{"id":1823,"depth":440,"text":391},{"id":1876,"depth":440,"text":987},{"id":1941,"depth":440,"text":621},{"id":1993,"depth":440,"text":729},{"id":2068,"depth":412,"text":2069},{"id":2111,"depth":412,"text":2112},"Protected booking endpoints for registered customers and owners.","md",null,{},{"icon":158},{"title":160,"description":2170},"zLMHZFbXHwXEeW8EMHVik6guhl3tzezhn4d1cEWMh78",[2178,2180],{"title":155,"path":156,"stem":157,"description":2179,"icon":158,"children":-1},"Index of all booking endpoints — public\u002Fguest and authenticated.",{"title":164,"path":165,"stem":166,"description":2181,"icon":167,"children":-1},"Public booking endpoints for guests and tenant customers (no auth required).",1777787844708]