[{"data":1,"prerenderedAt":3572},["ShallowReactive",2],{"navigation":3,"\u002Fbooki-documentation\u002Fapi\u002Fusers":303,"\u002Fbooki-documentation\u002Fapi\u002Fusers-surround":3567},[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":198,"body":305,"description":3560,"extension":3561,"links":3562,"meta":3563,"navigation":3564,"path":199,"seo":3565,"stem":200,"__hash__":3566},"docs\u002F3.booki-documentation\u002F3.api\u002F6.users.md",{"type":306,"value":307,"toc":3468},"minimark",[308,316,319,322,331,381,386,436,439,448,458,462,493,497,503,552,556,634,636,643,670,673,681,686,689,719,722,728,773,776,808,810,818,846,849,855,858,1072,1075,1104,1106,1113,1140,1143,1149,1152,1155,1158,1186,1188,1195,1224,1227,1294,1297,1325,1327,1333,1362,1365,1368,1404,1410,1413,1617,1620,1653,1655,1663,1694,1697,1746,1749,1767,1775,1778,1808,1811,1878,1880,1887,1918,1921,1927,1930,1961,1963,1970,1977,1980,2010,2013,2019,2064,2067,2128,2130,2136,2165,2168,2198,2200,2212,2218,2221,2251,2254,2314,2316,2324,2349,2352,2358,2361,2391,2394,2400,2445,2448,2477,2479,2486,2511,2514,2704,2707,2735,2737,2744,2769,2772,2800,2802,2809,2838,2841,2982,2985,3038,3040,3047,3074,3077,3185,3188,3216,3218,3225,3252,3255,3285,3288,3316,3318,3322,3406,3408,3412,3440,3442,3446,3464],[309,310,311,312],"p",{},"Base path: ",[313,314,315],"code",{},"\u002Fapi\u002Fv1\u002Fusers",[309,317,318],{},"User endpoints allow customers and owners to manage their profiles, update credentials, and preferences.",[320,321],"hr",{},[323,324,326,327,330],"h2",{"id":325},"post-apiv1usersemailotp-send-email-update-otp","POST ",[313,328,329],{},"\u002Fapi\u002Fv1\u002Fusers\u002Femail\u002Fotp"," — Send Email Update OTP",[309,332,333,337,338,341,342,345,348,349,352,353,356,357,348,360,352,363,352,366,369,371,374,375,377,380],{},[334,335,336],"strong",{},"Auth:"," Protected (",[313,339,340],{},"Authorization: Bearer \u003CaccessToken>",")",[343,344],"br",{},[334,346,347],{},"Used by:"," ",[313,350,351],{},"owner-booki-web-app",", ",[313,354,355],{},"customer-booki-web-app"," · ",[334,358,359],{},"Role:",[313,361,362],{},"owner",[313,364,365],{},"branch-manager",[313,367,368],{},"customer",[343,370],{},[334,372,373],{},"organizationId:"," From JWT token (not required in request body)",[343,376],{},[334,378,379],{},"Description:"," Send a 6-digit OTP to verify email change.",[382,383,385],"h3",{"id":384},"request","Request",[387,388,393],"pre",{"className":389,"code":390,"language":391,"meta":392,"style":392},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"email\": \"newemail@example.com\"\n}\n","json","",[313,394,395,404,430],{"__ignoreMap":392},[396,397,400],"span",{"class":398,"line":399},"line",1,[396,401,403],{"class":402},"sMK4o","{\n",[396,405,407,410,414,417,420,423,427],{"class":398,"line":406},2,[396,408,409],{"class":402},"  \"",[396,411,413],{"class":412},"spNyl","email",[396,415,416],{"class":402},"\"",[396,418,419],{"class":402},":",[396,421,422],{"class":402}," \"",[396,424,426],{"class":425},"sfazB","newemail@example.com",[396,428,429],{"class":402},"\"\n",[396,431,433],{"class":398,"line":432},3,[396,434,435],{"class":402},"}\n",[309,437,438],{},"Fields:",[440,441,442],"ul",{},[443,444,445,447],"li",{},[313,446,413],{}," (string, required): New email address to send OTP to",[449,450,451],"blockquote",{},[309,452,453,454,457],{},"Note: ",[313,455,456],{},"organizationId"," is read from the user's JWT token server-side.",[382,459,461],{"id":460},"response-200-ok","Response (200 OK)",[387,463,465],{"className":389,"code":464,"language":391,"meta":392,"style":392},"{\n  \"message\": \"Update email OTP sent successfully. Kindly check your email for the OTP.\"\n}\n",[313,466,467,471,489],{"__ignoreMap":392},[396,468,469],{"class":398,"line":399},[396,470,403],{"class":402},[396,472,473,475,478,480,482,484,487],{"class":398,"line":406},[396,474,409],{"class":402},[396,476,477],{"class":412},"message",[396,479,416],{"class":402},[396,481,419],{"class":402},[396,483,422],{"class":402},[396,485,486],{"class":425},"Update email OTP sent successfully. Kindly check your email for the OTP.",[396,488,429],{"class":402},[396,490,491],{"class":398,"line":432},[396,492,435],{"class":402},[382,494,496],{"id":495},"error-responses","Error Responses",[309,498,499,502],{},[334,500,501],{},"401 Unauthorized"," — No valid token:",[387,504,506],{"className":389,"code":505,"language":391,"meta":392,"style":392},"{\n  \"statusCode\": 401,\n  \"message\": \"Access token is required to proceed.\"\n}\n",[313,507,508,512,530,547],{"__ignoreMap":392},[396,509,510],{"class":398,"line":399},[396,511,403],{"class":402},[396,513,514,516,519,521,523,527],{"class":398,"line":406},[396,515,409],{"class":402},[396,517,518],{"class":412},"statusCode",[396,520,416],{"class":402},[396,522,419],{"class":402},[396,524,526],{"class":525},"sbssI"," 401",[396,528,529],{"class":402},",\n",[396,531,532,534,536,538,540,542,545],{"class":398,"line":432},[396,533,409],{"class":402},[396,535,477],{"class":412},[396,537,416],{"class":402},[396,539,419],{"class":402},[396,541,422],{"class":402},[396,543,544],{"class":425},"Access token is required to proceed.",[396,546,429],{"class":402},[396,548,550],{"class":398,"line":549},4,[396,551,435],{"class":402},[382,553,555],{"id":554},"curl-example","cURL Example",[387,557,561],{"className":558,"code":559,"language":560,"meta":392,"style":392},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","curl -X POST http:\u002F\u002Flocalhost:4001\u002Fapi\u002Fv1\u002Fusers\u002Femail\u002Fotp \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -H \"Authorization: Bearer eyJhbGc...\" \\\n  -d '{\n    \"email\": \"newemail@example.com\"\n  }'\n","bash",[313,562,563,582,596,609,619,625],{"__ignoreMap":392},[396,564,565,569,572,575,578],{"class":398,"line":399},[396,566,568],{"class":567},"sBMFI","curl",[396,570,571],{"class":425}," -X",[396,573,574],{"class":425}," POST",[396,576,577],{"class":425}," http:\u002F\u002Flocalhost:4001\u002Fapi\u002Fv1\u002Fusers\u002Femail\u002Fotp",[396,579,581],{"class":580},"sTEyZ"," \\\n",[396,583,584,587,589,592,594],{"class":398,"line":406},[396,585,586],{"class":425},"  -H",[396,588,422],{"class":402},[396,590,591],{"class":425},"Content-Type: application\u002Fjson",[396,593,416],{"class":402},[396,595,581],{"class":580},[396,597,598,600,602,605,607],{"class":398,"line":432},[396,599,586],{"class":425},[396,601,422],{"class":402},[396,603,604],{"class":425},"Authorization: Bearer eyJhbGc...",[396,606,416],{"class":402},[396,608,581],{"class":580},[396,610,611,614,617],{"class":398,"line":549},[396,612,613],{"class":425},"  -d",[396,615,616],{"class":402}," '",[396,618,403],{"class":425},[396,620,622],{"class":398,"line":621},5,[396,623,624],{"class":425},"    \"email\": \"newemail@example.com\"\n",[396,626,628,631],{"class":398,"line":627},6,[396,629,630],{"class":425},"  }",[396,632,633],{"class":402},"'\n",[320,635],{},[323,637,326,639,642],{"id":638},"post-apiv1usersemailotpotpverify-verify-email-update-otp",[313,640,641],{},"\u002Fapi\u002Fv1\u002Fusers\u002Femail\u002Fotp\u002F:otp\u002Fverify"," — Verify Email Update OTP",[309,644,645,337,647,341,649,651,348,653,352,655,356,657,348,659,352,661,352,663,665,667,669],{},[334,646,336],{},[313,648,340],{},[343,650],{},[334,652,347],{},[313,654,351],{},[313,656,355],{},[334,658,359],{},[313,660,362],{},[313,662,365],{},[313,664,368],{},[343,666],{},[334,668,379],{}," Verify OTP and update email (OTP valid for 10 minutes). The OTP is passed as a URL parameter.",[382,671,385],{"id":672},"request-1",[387,674,679],{"className":675,"code":677,"language":678},[676],"language-text","POST \u002Fapi\u002Fv1\u002Fusers\u002Femail\u002Fotp\u002F123456\u002Fverify\n","text",[313,680,677],{"__ignoreMap":392},[449,682,683],{},[309,684,685],{},"No request body required. The OTP is read from the URL path, and the user identity is derived from the JWT token.",[382,687,461],{"id":688},"response-200-ok-1",[387,690,692],{"className":389,"code":691,"language":391,"meta":392,"style":392},"{\n  \"message\": \"Update email OTP verified successfully.\"\n}\n",[313,693,694,698,715],{"__ignoreMap":392},[396,695,696],{"class":398,"line":399},[396,697,403],{"class":402},[396,699,700,702,704,706,708,710,713],{"class":398,"line":406},[396,701,409],{"class":402},[396,703,477],{"class":412},[396,705,416],{"class":402},[396,707,419],{"class":402},[396,709,422],{"class":402},[396,711,712],{"class":425},"Update email OTP verified successfully.",[396,714,429],{"class":402},[396,716,717],{"class":398,"line":432},[396,718,435],{"class":402},[382,720,496],{"id":721},"error-responses-1",[309,723,724,727],{},[334,725,726],{},"400 Bad Request"," — Invalid or expired OTP:",[387,729,731],{"className":389,"code":730,"language":391,"meta":392,"style":392},"{\n  \"statusCode\": 400,\n  \"message\": \"Invalid or expired OTP\"\n}\n",[313,732,733,737,752,769],{"__ignoreMap":392},[396,734,735],{"class":398,"line":399},[396,736,403],{"class":402},[396,738,739,741,743,745,747,750],{"class":398,"line":406},[396,740,409],{"class":402},[396,742,518],{"class":412},[396,744,416],{"class":402},[396,746,419],{"class":402},[396,748,749],{"class":525}," 400",[396,751,529],{"class":402},[396,753,754,756,758,760,762,764,767],{"class":398,"line":432},[396,755,409],{"class":402},[396,757,477],{"class":412},[396,759,416],{"class":402},[396,761,419],{"class":402},[396,763,422],{"class":402},[396,765,766],{"class":425},"Invalid or expired OTP",[396,768,429],{"class":402},[396,770,771],{"class":398,"line":549},[396,772,435],{"class":402},[382,774,555],{"id":775},"curl-example-1",[387,777,779],{"className":558,"code":778,"language":560,"meta":392,"style":392},"curl -X POST \"http:\u002F\u002Flocalhost:4001\u002Fapi\u002Fv1\u002Fusers\u002Femail\u002Fotp\u002F123456\u002Fverify\" \\\n  -H \"Authorization: Bearer eyJhbGc...\"\n",[313,780,781,798],{"__ignoreMap":392},[396,782,783,785,787,789,791,794,796],{"class":398,"line":399},[396,784,568],{"class":567},[396,786,571],{"class":425},[396,788,574],{"class":425},[396,790,422],{"class":402},[396,792,793],{"class":425},"http:\u002F\u002Flocalhost:4001\u002Fapi\u002Fv1\u002Fusers\u002Femail\u002Fotp\u002F123456\u002Fverify",[396,795,416],{"class":402},[396,797,581],{"class":580},[396,799,800,802,804,806],{"class":398,"line":406},[396,801,586],{"class":425},[396,803,422],{"class":402},[396,805,604],{"class":425},[396,807,429],{"class":402},[320,809],{},[323,811,813,814,817],{"id":812},"get-apiv1usersidid-get-user-by-id","GET ",[313,815,816],{},"\u002Fapi\u002Fv1\u002Fusers\u002Fid\u002F:id"," — Get User by ID",[309,819,820,337,822,341,824,826,348,828,356,830,348,832,352,834,836,838,840,841,843,845],{},[334,821,336],{},[313,823,340],{},[343,825],{},[334,827,347],{},[313,829,351],{},[334,831,359],{},[313,833,362],{},[313,835,365],{},[343,837],{},[334,839,373],{}," From JWT token",[343,842],{},[334,844,379],{}," Retrieve a specific user by ID.",[382,847,385],{"id":848},"request-2",[387,850,853],{"className":851,"code":852,"language":678},[676],"GET \u002Fapi\u002Fv1\u002Fusers\u002Fid\u002F507f1f77bcf86cd799439011\n",[313,854,852],{"__ignoreMap":392},[382,856,461],{"id":857},"response-200-ok-2",[387,859,861],{"className":389,"code":860,"language":391,"meta":392,"style":392},"{\n  \"_id\": \"507f1f77bcf86cd799439011\",\n  \"email\": \"jane@example.com\",\n  \"firstName\": \"Jane\",\n  \"lastName\": \"Doe\",\n  \"phone\": \"09171234567\",\n  \"userType\": \"owner\",\n  \"organizationId\": \"507f191e810c19729de860ea\",\n  \"status\": \"active\",\n  \"preferredPaymentMethod\": \"maya\",\n  \"createdAt\": \"2026-03-15T10:30:00Z\"\n}\n",[313,862,863,867,887,906,926,946,966,986,1006,1027,1048,1067],{"__ignoreMap":392},[396,864,865],{"class":398,"line":399},[396,866,403],{"class":402},[396,868,869,871,874,876,878,880,883,885],{"class":398,"line":406},[396,870,409],{"class":402},[396,872,873],{"class":412},"_id",[396,875,416],{"class":402},[396,877,419],{"class":402},[396,879,422],{"class":402},[396,881,882],{"class":425},"507f1f77bcf86cd799439011",[396,884,416],{"class":402},[396,886,529],{"class":402},[396,888,889,891,893,895,897,899,902,904],{"class":398,"line":432},[396,890,409],{"class":402},[396,892,413],{"class":412},[396,894,416],{"class":402},[396,896,419],{"class":402},[396,898,422],{"class":402},[396,900,901],{"class":425},"jane@example.com",[396,903,416],{"class":402},[396,905,529],{"class":402},[396,907,908,910,913,915,917,919,922,924],{"class":398,"line":549},[396,909,409],{"class":402},[396,911,912],{"class":412},"firstName",[396,914,416],{"class":402},[396,916,419],{"class":402},[396,918,422],{"class":402},[396,920,921],{"class":425},"Jane",[396,923,416],{"class":402},[396,925,529],{"class":402},[396,927,928,930,933,935,937,939,942,944],{"class":398,"line":621},[396,929,409],{"class":402},[396,931,932],{"class":412},"lastName",[396,934,416],{"class":402},[396,936,419],{"class":402},[396,938,422],{"class":402},[396,940,941],{"class":425},"Doe",[396,943,416],{"class":402},[396,945,529],{"class":402},[396,947,948,950,953,955,957,959,962,964],{"class":398,"line":627},[396,949,409],{"class":402},[396,951,952],{"class":412},"phone",[396,954,416],{"class":402},[396,956,419],{"class":402},[396,958,422],{"class":402},[396,960,961],{"class":425},"09171234567",[396,963,416],{"class":402},[396,965,529],{"class":402},[396,967,969,971,974,976,978,980,982,984],{"class":398,"line":968},7,[396,970,409],{"class":402},[396,972,973],{"class":412},"userType",[396,975,416],{"class":402},[396,977,419],{"class":402},[396,979,422],{"class":402},[396,981,362],{"class":425},[396,983,416],{"class":402},[396,985,529],{"class":402},[396,987,989,991,993,995,997,999,1002,1004],{"class":398,"line":988},8,[396,990,409],{"class":402},[396,992,456],{"class":412},[396,994,416],{"class":402},[396,996,419],{"class":402},[396,998,422],{"class":402},[396,1000,1001],{"class":425},"507f191e810c19729de860ea",[396,1003,416],{"class":402},[396,1005,529],{"class":402},[396,1007,1009,1011,1014,1016,1018,1020,1023,1025],{"class":398,"line":1008},9,[396,1010,409],{"class":402},[396,1012,1013],{"class":412},"status",[396,1015,416],{"class":402},[396,1017,419],{"class":402},[396,1019,422],{"class":402},[396,1021,1022],{"class":425},"active",[396,1024,416],{"class":402},[396,1026,529],{"class":402},[396,1028,1030,1032,1035,1037,1039,1041,1044,1046],{"class":398,"line":1029},10,[396,1031,409],{"class":402},[396,1033,1034],{"class":412},"preferredPaymentMethod",[396,1036,416],{"class":402},[396,1038,419],{"class":402},[396,1040,422],{"class":402},[396,1042,1043],{"class":425},"maya",[396,1045,416],{"class":402},[396,1047,529],{"class":402},[396,1049,1051,1053,1056,1058,1060,1062,1065],{"class":398,"line":1050},11,[396,1052,409],{"class":402},[396,1054,1055],{"class":412},"createdAt",[396,1057,416],{"class":402},[396,1059,419],{"class":402},[396,1061,422],{"class":402},[396,1063,1064],{"class":425},"2026-03-15T10:30:00Z",[396,1066,429],{"class":402},[396,1068,1070],{"class":398,"line":1069},12,[396,1071,435],{"class":402},[382,1073,555],{"id":1074},"curl-example-2",[387,1076,1078],{"className":558,"code":1077,"language":560,"meta":392,"style":392},"curl -X GET http:\u002F\u002Flocalhost:4001\u002Fapi\u002Fv1\u002Fusers\u002Fid\u002F507f1f77bcf86cd799439011 \\\n  -H \"Authorization: Bearer eyJhbGc...\"\n",[313,1079,1080,1094],{"__ignoreMap":392},[396,1081,1082,1084,1086,1089,1092],{"class":398,"line":399},[396,1083,568],{"class":567},[396,1085,571],{"class":425},[396,1087,1088],{"class":425}," GET",[396,1090,1091],{"class":425}," http:\u002F\u002Flocalhost:4001\u002Fapi\u002Fv1\u002Fusers\u002Fid\u002F507f1f77bcf86cd799439011",[396,1093,581],{"class":580},[396,1095,1096,1098,1100,1102],{"class":398,"line":406},[396,1097,586],{"class":425},[396,1099,422],{"class":402},[396,1101,604],{"class":425},[396,1103,429],{"class":402},[320,1105],{},[323,1107,813,1109,1112],{"id":1108},"get-apiv1usersemailemail-get-user-by-email",[313,1110,1111],{},"\u002Fapi\u002Fv1\u002Fusers\u002Femail\u002F:email"," — Get User by Email",[309,1114,1115,337,1117,341,1119,1121,348,1123,356,1125,348,1127,352,1129,1131,1133,840,1135,1137,1139],{},[334,1116,336],{},[313,1118,340],{},[343,1120],{},[334,1122,347],{},[313,1124,351],{},[334,1126,359],{},[313,1128,362],{},[313,1130,365],{},[343,1132],{},[334,1134,373],{},[343,1136],{},[334,1138,379],{}," Retrieve a user by email address (admin\u002Fowner context).",[382,1141,385],{"id":1142},"request-3",[387,1144,1147],{"className":1145,"code":1146,"language":678},[676],"GET \u002Fapi\u002Fv1\u002Fusers\u002Femail\u002Fjane@example.com\n",[313,1148,1146],{"__ignoreMap":392},[382,1150,461],{"id":1151},"response-200-ok-3",[309,1153,1154],{},"Same as above.",[382,1156,555],{"id":1157},"curl-example-3",[387,1159,1161],{"className":558,"code":1160,"language":560,"meta":392,"style":392},"curl -X GET http:\u002F\u002Flocalhost:4001\u002Fapi\u002Fv1\u002Fusers\u002Femail\u002Fjane@example.com \\\n  -H \"Authorization: Bearer eyJhbGc...\"\n",[313,1162,1163,1176],{"__ignoreMap":392},[396,1164,1165,1167,1169,1171,1174],{"class":398,"line":399},[396,1166,568],{"class":567},[396,1168,571],{"class":425},[396,1170,1088],{"class":425},[396,1172,1173],{"class":425}," http:\u002F\u002Flocalhost:4001\u002Fapi\u002Fv1\u002Fusers\u002Femail\u002Fjane@example.com",[396,1175,581],{"class":580},[396,1177,1178,1180,1182,1184],{"class":398,"line":406},[396,1179,586],{"class":425},[396,1181,422],{"class":402},[396,1183,604],{"class":425},[396,1185,429],{"class":402},[320,1187],{},[323,1189,813,1191,1194],{"id":1190},"get-apiv1userspayment-preference-get-payment-preference",[313,1192,1193],{},"\u002Fapi\u002Fv1\u002Fusers\u002Fpayment-preference"," — Get Payment Preference",[309,1196,1197,337,1199,341,1201,1203,348,1205,352,1207,356,1209,348,1211,352,1213,1215,1217,840,1219,1221,1223],{},[334,1198,336],{},[313,1200,340],{},[343,1202],{},[334,1204,347],{},[313,1206,351],{},[313,1208,355],{},[334,1210,359],{},[313,1212,362],{},[313,1214,368],{},[343,1216],{},[334,1218,373],{},[343,1220],{},[334,1222,379],{}," Get the user's preferred payment method for bookings.",[382,1225,461],{"id":1226},"response-200-ok-4",[387,1228,1230],{"className":389,"code":1229,"language":391,"meta":392,"style":392},"{\n  \"user\": {\n    \"_id\": \"507f1f77bcf86cd799439011\",\n    \"preferredPaymentMethod\": \"maya\"\n  }\n}\n",[313,1231,1232,1236,1250,1269,1285,1290],{"__ignoreMap":392},[396,1233,1234],{"class":398,"line":399},[396,1235,403],{"class":402},[396,1237,1238,1240,1243,1245,1247],{"class":398,"line":406},[396,1239,409],{"class":402},[396,1241,1242],{"class":412},"user",[396,1244,416],{"class":402},[396,1246,419],{"class":402},[396,1248,1249],{"class":402}," {\n",[396,1251,1252,1255,1257,1259,1261,1263,1265,1267],{"class":398,"line":432},[396,1253,1254],{"class":402},"    \"",[396,1256,873],{"class":567},[396,1258,416],{"class":402},[396,1260,419],{"class":402},[396,1262,422],{"class":402},[396,1264,882],{"class":425},[396,1266,416],{"class":402},[396,1268,529],{"class":402},[396,1270,1271,1273,1275,1277,1279,1281,1283],{"class":398,"line":549},[396,1272,1254],{"class":402},[396,1274,1034],{"class":567},[396,1276,416],{"class":402},[396,1278,419],{"class":402},[396,1280,422],{"class":402},[396,1282,1043],{"class":425},[396,1284,429],{"class":402},[396,1286,1287],{"class":398,"line":621},[396,1288,1289],{"class":402},"  }\n",[396,1291,1292],{"class":398,"line":627},[396,1293,435],{"class":402},[382,1295,555],{"id":1296},"curl-example-4",[387,1298,1300],{"className":558,"code":1299,"language":560,"meta":392,"style":392},"curl -X GET http:\u002F\u002Flocalhost:4001\u002Fapi\u002Fv1\u002Fusers\u002Fpayment-preference \\\n  -H \"Authorization: Bearer eyJhbGc...\"\n",[313,1301,1302,1315],{"__ignoreMap":392},[396,1303,1304,1306,1308,1310,1313],{"class":398,"line":399},[396,1305,568],{"class":567},[396,1307,571],{"class":425},[396,1309,1088],{"class":425},[396,1311,1312],{"class":425}," http:\u002F\u002Flocalhost:4001\u002Fapi\u002Fv1\u002Fusers\u002Fpayment-preference",[396,1314,581],{"class":580},[396,1316,1317,1319,1321,1323],{"class":398,"line":406},[396,1318,586],{"class":425},[396,1320,422],{"class":402},[396,1322,604],{"class":425},[396,1324,429],{"class":402},[320,1326],{},[323,1328,813,1330,1332],{"id":1329},"get-apiv1users-list-users-admin-only",[313,1331,315],{}," — List Users (Admin Only)",[309,1334,1335,337,1337,1339,1340,1342,348,1344,356,1347,348,1349,1352,1354,1356,1357,1359,1361],{},[334,1336,336],{},[313,1338,340],{},") · admin only",[343,1341],{},[334,1343,347],{},[313,1345,1346],{},"admin-booki-web-app",[334,1348,359],{},[313,1350,1351],{},"admin",[343,1353],{},[334,1355,373],{}," Not applicable (admin sees all users)",[343,1358],{},[334,1360,379],{}," List all users (super-admin endpoint).",[382,1363,385],{"id":1364},"request-4",[309,1366,1367],{},"Query Parameters (optional):",[440,1369,1370,1376,1382,1388,1396],{},[443,1371,1372,1375],{},[313,1373,1374],{},"page"," (number, default: 1)",[443,1377,1378,1381],{},[313,1379,1380],{},"limit"," (number, default: 10, max: 100)",[443,1383,1384,1387],{},[313,1385,1386],{},"search"," (string): Search by name or email",[443,1389,1390,1393,1394,341],{},[313,1391,1392],{},"sort"," (string, default: ",[313,1395,873],{},[443,1397,1398,1393,1401,341],{},[313,1399,1400],{},"order",[313,1402,1403],{},"desc",[387,1405,1408],{"className":1406,"code":1407,"language":678},[676],"GET \u002Fapi\u002Fv1\u002Fusers?page=1&limit=20&search=jane\n",[313,1409,1407],{"__ignoreMap":392},[382,1411,461],{"id":1412},"response-200-ok-5",[387,1414,1416],{"className":389,"code":1415,"language":391,"meta":392,"style":392},"{\n  \"items\": [\n    {\n      \"_id\": \"507f1f77bcf86cd799439011\",\n      \"email\": \"jane@example.com\",\n      \"firstName\": \"Jane\",\n      \"lastName\": \"Doe\",\n      \"userType\": \"owner\",\n      \"status\": \"active\",\n      \"createdAt\": \"2026-03-15T10:30:00Z\"\n    }\n  ],\n  \"pages\": 1,\n  \"pageRange\": \"1-1\"\n}\n",[313,1417,1418,1422,1436,1441,1460,1478,1496,1514,1532,1550,1566,1571,1576,1593,1612],{"__ignoreMap":392},[396,1419,1420],{"class":398,"line":399},[396,1421,403],{"class":402},[396,1423,1424,1426,1429,1431,1433],{"class":398,"line":406},[396,1425,409],{"class":402},[396,1427,1428],{"class":412},"items",[396,1430,416],{"class":402},[396,1432,419],{"class":402},[396,1434,1435],{"class":402}," [\n",[396,1437,1438],{"class":398,"line":432},[396,1439,1440],{"class":402},"    {\n",[396,1442,1443,1446,1448,1450,1452,1454,1456,1458],{"class":398,"line":549},[396,1444,1445],{"class":402},"      \"",[396,1447,873],{"class":567},[396,1449,416],{"class":402},[396,1451,419],{"class":402},[396,1453,422],{"class":402},[396,1455,882],{"class":425},[396,1457,416],{"class":402},[396,1459,529],{"class":402},[396,1461,1462,1464,1466,1468,1470,1472,1474,1476],{"class":398,"line":621},[396,1463,1445],{"class":402},[396,1465,413],{"class":567},[396,1467,416],{"class":402},[396,1469,419],{"class":402},[396,1471,422],{"class":402},[396,1473,901],{"class":425},[396,1475,416],{"class":402},[396,1477,529],{"class":402},[396,1479,1480,1482,1484,1486,1488,1490,1492,1494],{"class":398,"line":627},[396,1481,1445],{"class":402},[396,1483,912],{"class":567},[396,1485,416],{"class":402},[396,1487,419],{"class":402},[396,1489,422],{"class":402},[396,1491,921],{"class":425},[396,1493,416],{"class":402},[396,1495,529],{"class":402},[396,1497,1498,1500,1502,1504,1506,1508,1510,1512],{"class":398,"line":968},[396,1499,1445],{"class":402},[396,1501,932],{"class":567},[396,1503,416],{"class":402},[396,1505,419],{"class":402},[396,1507,422],{"class":402},[396,1509,941],{"class":425},[396,1511,416],{"class":402},[396,1513,529],{"class":402},[396,1515,1516,1518,1520,1522,1524,1526,1528,1530],{"class":398,"line":988},[396,1517,1445],{"class":402},[396,1519,973],{"class":567},[396,1521,416],{"class":402},[396,1523,419],{"class":402},[396,1525,422],{"class":402},[396,1527,362],{"class":425},[396,1529,416],{"class":402},[396,1531,529],{"class":402},[396,1533,1534,1536,1538,1540,1542,1544,1546,1548],{"class":398,"line":1008},[396,1535,1445],{"class":402},[396,1537,1013],{"class":567},[396,1539,416],{"class":402},[396,1541,419],{"class":402},[396,1543,422],{"class":402},[396,1545,1022],{"class":425},[396,1547,416],{"class":402},[396,1549,529],{"class":402},[396,1551,1552,1554,1556,1558,1560,1562,1564],{"class":398,"line":1029},[396,1553,1445],{"class":402},[396,1555,1055],{"class":567},[396,1557,416],{"class":402},[396,1559,419],{"class":402},[396,1561,422],{"class":402},[396,1563,1064],{"class":425},[396,1565,429],{"class":402},[396,1567,1568],{"class":398,"line":1050},[396,1569,1570],{"class":402},"    }\n",[396,1572,1573],{"class":398,"line":1069},[396,1574,1575],{"class":402},"  ],\n",[396,1577,1579,1581,1584,1586,1588,1591],{"class":398,"line":1578},13,[396,1580,409],{"class":402},[396,1582,1583],{"class":412},"pages",[396,1585,416],{"class":402},[396,1587,419],{"class":402},[396,1589,1590],{"class":525}," 1",[396,1592,529],{"class":402},[396,1594,1596,1598,1601,1603,1605,1607,1610],{"class":398,"line":1595},14,[396,1597,409],{"class":402},[396,1599,1600],{"class":412},"pageRange",[396,1602,416],{"class":402},[396,1604,419],{"class":402},[396,1606,422],{"class":402},[396,1608,1609],{"class":425},"1-1",[396,1611,429],{"class":402},[396,1613,1615],{"class":398,"line":1614},15,[396,1616,435],{"class":402},[382,1618,555],{"id":1619},"curl-example-5",[387,1621,1623],{"className":558,"code":1622,"language":560,"meta":392,"style":392},"curl -X GET \"http:\u002F\u002Flocalhost:4001\u002Fapi\u002Fv1\u002Fusers?page=1&limit=20\" \\\n  -H \"Authorization: Bearer ADMIN_TOKEN\"\n",[313,1624,1625,1642],{"__ignoreMap":392},[396,1626,1627,1629,1631,1633,1635,1638,1640],{"class":398,"line":399},[396,1628,568],{"class":567},[396,1630,571],{"class":425},[396,1632,1088],{"class":425},[396,1634,422],{"class":402},[396,1636,1637],{"class":425},"http:\u002F\u002Flocalhost:4001\u002Fapi\u002Fv1\u002Fusers?page=1&limit=20",[396,1639,416],{"class":402},[396,1641,581],{"class":580},[396,1643,1644,1646,1648,1651],{"class":398,"line":406},[396,1645,586],{"class":425},[396,1647,422],{"class":402},[396,1649,1650],{"class":425},"Authorization: Bearer ADMIN_TOKEN",[396,1652,429],{"class":402},[320,1654],{},[323,1656,1658,1659,1662],{"id":1657},"put-apiv1usersname-update-display-name","PUT ",[313,1660,1661],{},"\u002Fapi\u002Fv1\u002Fusers\u002Fname"," — Update Display Name",[309,1664,1665,337,1667,341,1669,1671,348,1673,352,1675,356,1677,348,1679,352,1681,352,1683,1685,1687,374,1689,1691,1693],{},[334,1666,336],{},[313,1668,340],{},[343,1670],{},[334,1672,347],{},[313,1674,351],{},[313,1676,355],{},[334,1678,359],{},[313,1680,362],{},[313,1682,365],{},[313,1684,368],{},[343,1686],{},[334,1688,373],{},[343,1690],{},[334,1692,379],{}," Update user's first, middle, or last name (at least one required).",[382,1695,385],{"id":1696},"request-5",[387,1698,1700],{"className":389,"code":1699,"language":391,"meta":392,"style":392},"{\n  \"firstName\": \"Janet\",\n  \"lastName\": \"Smith\"\n}\n",[313,1701,1702,1706,1725,1742],{"__ignoreMap":392},[396,1703,1704],{"class":398,"line":399},[396,1705,403],{"class":402},[396,1707,1708,1710,1712,1714,1716,1718,1721,1723],{"class":398,"line":406},[396,1709,409],{"class":402},[396,1711,912],{"class":412},[396,1713,416],{"class":402},[396,1715,419],{"class":402},[396,1717,422],{"class":402},[396,1719,1720],{"class":425},"Janet",[396,1722,416],{"class":402},[396,1724,529],{"class":402},[396,1726,1727,1729,1731,1733,1735,1737,1740],{"class":398,"line":432},[396,1728,409],{"class":402},[396,1730,932],{"class":412},[396,1732,416],{"class":402},[396,1734,419],{"class":402},[396,1736,422],{"class":402},[396,1738,1739],{"class":425},"Smith",[396,1741,429],{"class":402},[396,1743,1744],{"class":398,"line":549},[396,1745,435],{"class":402},[309,1747,1748],{},"Fields (at least one of the following required):",[440,1750,1751,1756,1762],{},[443,1752,1753,1755],{},[313,1754,912],{}," (string, optional): First name (max 255)",[443,1757,1758,1761],{},[313,1759,1760],{},"middleName"," (string, optional): Middle name (max 255)",[443,1763,1764,1766],{},[313,1765,932],{}," (string, optional): Last name (max 255)",[449,1768,1769],{},[309,1770,453,1771,1774],{},[313,1772,1773],{},"id"," is injected from the JWT token server-side.",[382,1776,461],{"id":1777},"response-200-ok-6",[387,1779,1781],{"className":389,"code":1780,"language":391,"meta":392,"style":392},"{\n  \"message\": \"Name updated successfully.\"\n}\n",[313,1782,1783,1787,1804],{"__ignoreMap":392},[396,1784,1785],{"class":398,"line":399},[396,1786,403],{"class":402},[396,1788,1789,1791,1793,1795,1797,1799,1802],{"class":398,"line":406},[396,1790,409],{"class":402},[396,1792,477],{"class":412},[396,1794,416],{"class":402},[396,1796,419],{"class":402},[396,1798,422],{"class":402},[396,1800,1801],{"class":425},"Name updated successfully.",[396,1803,429],{"class":402},[396,1805,1806],{"class":398,"line":432},[396,1807,435],{"class":402},[382,1809,555],{"id":1810},"curl-example-6",[387,1812,1814],{"className":558,"code":1813,"language":560,"meta":392,"style":392},"curl -X PUT http:\u002F\u002Flocalhost:4001\u002Fapi\u002Fv1\u002Fusers\u002Fname \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -H \"Authorization: Bearer eyJhbGc...\" \\\n  -d '{\n    \"firstName\": \"Janet\",\n    \"lastName\": \"Smith\"\n  }'\n",[313,1815,1816,1830,1842,1854,1862,1867,1872],{"__ignoreMap":392},[396,1817,1818,1820,1822,1825,1828],{"class":398,"line":399},[396,1819,568],{"class":567},[396,1821,571],{"class":425},[396,1823,1824],{"class":425}," PUT",[396,1826,1827],{"class":425}," http:\u002F\u002Flocalhost:4001\u002Fapi\u002Fv1\u002Fusers\u002Fname",[396,1829,581],{"class":580},[396,1831,1832,1834,1836,1838,1840],{"class":398,"line":406},[396,1833,586],{"class":425},[396,1835,422],{"class":402},[396,1837,591],{"class":425},[396,1839,416],{"class":402},[396,1841,581],{"class":580},[396,1843,1844,1846,1848,1850,1852],{"class":398,"line":432},[396,1845,586],{"class":425},[396,1847,422],{"class":402},[396,1849,604],{"class":425},[396,1851,416],{"class":402},[396,1853,581],{"class":580},[396,1855,1856,1858,1860],{"class":398,"line":549},[396,1857,613],{"class":425},[396,1859,616],{"class":402},[396,1861,403],{"class":425},[396,1863,1864],{"class":398,"line":621},[396,1865,1866],{"class":425},"    \"firstName\": \"Janet\",\n",[396,1868,1869],{"class":398,"line":627},[396,1870,1871],{"class":425},"    \"lastName\": \"Smith\"\n",[396,1873,1874,1876],{"class":398,"line":968},[396,1875,630],{"class":425},[396,1877,633],{"class":402},[320,1879],{},[323,1881,1658,1883,1886],{"id":1882},"put-apiv1usersidpassword-update-password",[313,1884,1885],{},"\u002Fapi\u002Fv1\u002Fusers\u002F:id\u002Fpassword"," — Update Password",[309,1888,1889,337,1891,341,1893,1895,348,1897,352,1899,356,1901,348,1903,352,1905,352,1907,1909,1911,840,1913,1915,1917],{},[334,1890,336],{},[313,1892,340],{},[343,1894],{},[334,1896,347],{},[313,1898,351],{},[313,1900,355],{},[334,1902,359],{},[313,1904,362],{},[313,1906,365],{},[313,1908,368],{},[343,1910],{},[334,1912,373],{},[343,1914],{},[334,1916,379],{}," Change user password (requires strong password).",[382,1919,385],{"id":1920},"request-6",[387,1922,1925],{"className":1923,"code":1924,"language":678},[676],"PUT \u002Fapi\u002Fv1\u002Fusers\u002F507f1f77bcf86cd799439011\u002Fpassword\n",[313,1926,1924],{"__ignoreMap":392},[309,1928,1929],{},"Body:",[387,1931,1933],{"className":389,"code":1932,"language":391,"meta":392,"style":392},"{\n  \"password\": \"NewSecureP@ss123\"\n}\n",[313,1934,1935,1939,1957],{"__ignoreMap":392},[396,1936,1937],{"class":398,"line":399},[396,1938,403],{"class":402},[396,1940,1941,1943,1946,1948,1950,1952,1955],{"class":398,"line":406},[396,1942,409],{"class":402},[396,1944,1945],{"class":412},"password",[396,1947,416],{"class":402},[396,1949,419],{"class":402},[396,1951,422],{"class":402},[396,1953,1954],{"class":425},"NewSecureP@ss123",[396,1956,429],{"class":402},[396,1958,1959],{"class":398,"line":432},[396,1960,435],{"class":402},[309,1962,438],{},[440,1964,1965],{},[443,1966,1967,1969],{},[313,1968,1945],{}," (string, required): New password (min 8 chars, must include uppercase, lowercase, number, and special character)",[449,1971,1972],{},[309,1973,453,1974,1976],{},[313,1975,1773],{}," is read from the URL path parameter.",[382,1978,461],{"id":1979},"response-200-ok-7",[387,1981,1983],{"className":389,"code":1982,"language":391,"meta":392,"style":392},"{\n  \"message\": \"Password updated successfully.\"\n}\n",[313,1984,1985,1989,2006],{"__ignoreMap":392},[396,1986,1987],{"class":398,"line":399},[396,1988,403],{"class":402},[396,1990,1991,1993,1995,1997,1999,2001,2004],{"class":398,"line":406},[396,1992,409],{"class":402},[396,1994,477],{"class":412},[396,1996,416],{"class":402},[396,1998,419],{"class":402},[396,2000,422],{"class":402},[396,2002,2003],{"class":425},"Password updated successfully.",[396,2005,429],{"class":402},[396,2007,2008],{"class":398,"line":432},[396,2009,435],{"class":402},[382,2011,496],{"id":2012},"error-responses-2",[309,2014,2015,2018],{},[334,2016,2017],{},"422 Unprocessable Entity"," — Weak password:",[387,2020,2022],{"className":389,"code":2021,"language":391,"meta":392,"style":392},"{\n  \"statusCode\": 422,\n  \"message\": \"Password must contain at least one uppercase letter, one lowercase letter, one number, and one special character.\"\n}\n",[313,2023,2024,2028,2043,2060],{"__ignoreMap":392},[396,2025,2026],{"class":398,"line":399},[396,2027,403],{"class":402},[396,2029,2030,2032,2034,2036,2038,2041],{"class":398,"line":406},[396,2031,409],{"class":402},[396,2033,518],{"class":412},[396,2035,416],{"class":402},[396,2037,419],{"class":402},[396,2039,2040],{"class":525}," 422",[396,2042,529],{"class":402},[396,2044,2045,2047,2049,2051,2053,2055,2058],{"class":398,"line":432},[396,2046,409],{"class":402},[396,2048,477],{"class":412},[396,2050,416],{"class":402},[396,2052,419],{"class":402},[396,2054,422],{"class":402},[396,2056,2057],{"class":425},"Password must contain at least one uppercase letter, one lowercase letter, one number, and one special character.",[396,2059,429],{"class":402},[396,2061,2062],{"class":398,"line":549},[396,2063,435],{"class":402},[382,2065,555],{"id":2066},"curl-example-7",[387,2068,2070],{"className":558,"code":2069,"language":560,"meta":392,"style":392},"curl -X PUT http:\u002F\u002Flocalhost:4001\u002Fapi\u002Fv1\u002Fusers\u002F507f1f77bcf86cd799439011\u002Fpassword \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -H \"Authorization: Bearer eyJhbGc...\" \\\n  -d '{\n    \"password\": \"NewSecureP@ss123\"\n  }'\n",[313,2071,2072,2085,2097,2109,2117,2122],{"__ignoreMap":392},[396,2073,2074,2076,2078,2080,2083],{"class":398,"line":399},[396,2075,568],{"class":567},[396,2077,571],{"class":425},[396,2079,1824],{"class":425},[396,2081,2082],{"class":425}," http:\u002F\u002Flocalhost:4001\u002Fapi\u002Fv1\u002Fusers\u002F507f1f77bcf86cd799439011\u002Fpassword",[396,2084,581],{"class":580},[396,2086,2087,2089,2091,2093,2095],{"class":398,"line":406},[396,2088,586],{"class":425},[396,2090,422],{"class":402},[396,2092,591],{"class":425},[396,2094,416],{"class":402},[396,2096,581],{"class":580},[396,2098,2099,2101,2103,2105,2107],{"class":398,"line":432},[396,2100,586],{"class":425},[396,2102,422],{"class":402},[396,2104,604],{"class":425},[396,2106,416],{"class":402},[396,2108,581],{"class":580},[396,2110,2111,2113,2115],{"class":398,"line":549},[396,2112,613],{"class":425},[396,2114,616],{"class":402},[396,2116,403],{"class":425},[396,2118,2119],{"class":398,"line":621},[396,2120,2121],{"class":425},"    \"password\": \"NewSecureP@ss123\"\n",[396,2123,2124,2126],{"class":398,"line":627},[396,2125,630],{"class":425},[396,2127,633],{"class":402},[320,2129],{},[323,2131,1658,2133,2135],{"id":2132},"put-apiv1userspayment-preference-update-payment-preference",[313,2134,1193],{}," — Update Payment Preference",[309,2137,2138,337,2140,341,2142,2144,348,2146,352,2148,356,2150,348,2152,352,2154,2156,2158,840,2160,2162,2164],{},[334,2139,336],{},[313,2141,340],{},[343,2143],{},[334,2145,347],{},[313,2147,351],{},[313,2149,355],{},[334,2151,359],{},[313,2153,362],{},[313,2155,368],{},[343,2157],{},[334,2159,373],{},[343,2161],{},[334,2163,379],{}," Set the user's preferred payment method for bookings.",[382,2166,385],{"id":2167},"request-7",[387,2169,2171],{"className":389,"code":2170,"language":391,"meta":392,"style":392},"{\n  \"preferredPaymentMethod\": \"cash\"\n}\n",[313,2172,2173,2177,2194],{"__ignoreMap":392},[396,2174,2175],{"class":398,"line":399},[396,2176,403],{"class":402},[396,2178,2179,2181,2183,2185,2187,2189,2192],{"class":398,"line":406},[396,2180,409],{"class":402},[396,2182,1034],{"class":412},[396,2184,416],{"class":402},[396,2186,419],{"class":402},[396,2188,422],{"class":402},[396,2190,2191],{"class":425},"cash",[396,2193,429],{"class":402},[396,2195,2196],{"class":398,"line":432},[396,2197,435],{"class":402},[309,2199,438],{},[440,2201,2202],{},[443,2203,2204,2206,2207,2209,2210],{},[313,2205,1034],{}," (string, required): ",[313,2208,2191],{}," or ",[313,2211,1043],{},[449,2213,2214],{},[309,2215,453,2216,1774],{},[313,2217,1773],{},[382,2219,461],{"id":2220},"response-200-ok-8",[387,2222,2224],{"className":389,"code":2223,"language":391,"meta":392,"style":392},"{\n  \"message\": \"Payment method preference updated successfully.\"\n}\n",[313,2225,2226,2230,2247],{"__ignoreMap":392},[396,2227,2228],{"class":398,"line":399},[396,2229,403],{"class":402},[396,2231,2232,2234,2236,2238,2240,2242,2245],{"class":398,"line":406},[396,2233,409],{"class":402},[396,2235,477],{"class":412},[396,2237,416],{"class":402},[396,2239,419],{"class":402},[396,2241,422],{"class":402},[396,2243,2244],{"class":425},"Payment method preference updated successfully.",[396,2246,429],{"class":402},[396,2248,2249],{"class":398,"line":432},[396,2250,435],{"class":402},[382,2252,555],{"id":2253},"curl-example-8",[387,2255,2257],{"className":558,"code":2256,"language":560,"meta":392,"style":392},"curl -X PUT http:\u002F\u002Flocalhost:4001\u002Fapi\u002Fv1\u002Fusers\u002Fpayment-preference \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -H \"Authorization: Bearer eyJhbGc...\" \\\n  -d '{\n    \"preferredPaymentMethod\": \"cash\"\n  }'\n",[313,2258,2259,2271,2283,2295,2303,2308],{"__ignoreMap":392},[396,2260,2261,2263,2265,2267,2269],{"class":398,"line":399},[396,2262,568],{"class":567},[396,2264,571],{"class":425},[396,2266,1824],{"class":425},[396,2268,1312],{"class":425},[396,2270,581],{"class":580},[396,2272,2273,2275,2277,2279,2281],{"class":398,"line":406},[396,2274,586],{"class":425},[396,2276,422],{"class":402},[396,2278,591],{"class":425},[396,2280,416],{"class":402},[396,2282,581],{"class":580},[396,2284,2285,2287,2289,2291,2293],{"class":398,"line":432},[396,2286,586],{"class":425},[396,2288,422],{"class":402},[396,2290,604],{"class":425},[396,2292,416],{"class":402},[396,2294,581],{"class":580},[396,2296,2297,2299,2301],{"class":398,"line":549},[396,2298,613],{"class":425},[396,2300,616],{"class":402},[396,2302,403],{"class":425},[396,2304,2305],{"class":398,"line":621},[396,2306,2307],{"class":425},"    \"preferredPaymentMethod\": \"cash\"\n",[396,2309,2310,2312],{"class":398,"line":627},[396,2311,630],{"class":425},[396,2313,633],{"class":402},[320,2315],{},[323,2317,2319,2320,2323],{"id":2318},"delete-apiv1usersid-delete-user-admin-only","DELETE ",[313,2321,2322],{},"\u002Fapi\u002Fv1\u002Fusers\u002F:id"," — Delete User (Admin Only)",[309,2325,2326,337,2328,341,2330,2332,348,2334,356,2336,2338,2339,2341,2343,2344,2346,2348],{},[334,2327,336],{},[313,2329,340],{},[343,2331],{},[334,2333,347],{},[313,2335,1346],{},[334,2337,359],{}," any authenticated user",[343,2340],{},[334,2342,373],{}," Not applicable",[343,2345],{},[334,2347,379],{}," Soft-delete a user account.",[382,2350,385],{"id":2351},"request-8",[387,2353,2356],{"className":2354,"code":2355,"language":678},[676],"DELETE \u002Fapi\u002Fv1\u002Fusers\u002F507f1f77bcf86cd799439011\n",[313,2357,2355],{"__ignoreMap":392},[382,2359,461],{"id":2360},"response-200-ok-9",[387,2362,2364],{"className":389,"code":2363,"language":391,"meta":392,"style":392},"{\n  \"message\": \"User deleted successfully.\"\n}\n",[313,2365,2366,2370,2387],{"__ignoreMap":392},[396,2367,2368],{"class":398,"line":399},[396,2369,403],{"class":402},[396,2371,2372,2374,2376,2378,2380,2382,2385],{"class":398,"line":406},[396,2373,409],{"class":402},[396,2375,477],{"class":412},[396,2377,416],{"class":402},[396,2379,419],{"class":402},[396,2381,422],{"class":402},[396,2383,2384],{"class":425},"User deleted successfully.",[396,2386,429],{"class":402},[396,2388,2389],{"class":398,"line":432},[396,2390,435],{"class":402},[382,2392,496],{"id":2393},"error-responses-3",[309,2395,2396,2399],{},[334,2397,2398],{},"404 Not Found"," — User not found:",[387,2401,2403],{"className":389,"code":2402,"language":391,"meta":392,"style":392},"{\n  \"statusCode\": 404,\n  \"message\": \"User not found\"\n}\n",[313,2404,2405,2409,2424,2441],{"__ignoreMap":392},[396,2406,2407],{"class":398,"line":399},[396,2408,403],{"class":402},[396,2410,2411,2413,2415,2417,2419,2422],{"class":398,"line":406},[396,2412,409],{"class":402},[396,2414,518],{"class":412},[396,2416,416],{"class":402},[396,2418,419],{"class":402},[396,2420,2421],{"class":525}," 404",[396,2423,529],{"class":402},[396,2425,2426,2428,2430,2432,2434,2436,2439],{"class":398,"line":432},[396,2427,409],{"class":402},[396,2429,477],{"class":412},[396,2431,416],{"class":402},[396,2433,419],{"class":402},[396,2435,422],{"class":402},[396,2437,2438],{"class":425},"User not found",[396,2440,429],{"class":402},[396,2442,2443],{"class":398,"line":549},[396,2444,435],{"class":402},[382,2446,555],{"id":2447},"curl-example-9",[387,2449,2451],{"className":558,"code":2450,"language":560,"meta":392,"style":392},"curl -X DELETE http:\u002F\u002Flocalhost:4001\u002Fapi\u002Fv1\u002Fusers\u002F507f1f77bcf86cd799439011 \\\n  -H \"Authorization: Bearer ADMIN_TOKEN\"\n",[313,2452,2453,2467],{"__ignoreMap":392},[396,2454,2455,2457,2459,2462,2465],{"class":398,"line":399},[396,2456,568],{"class":567},[396,2458,571],{"class":425},[396,2460,2461],{"class":425}," DELETE",[396,2463,2464],{"class":425}," http:\u002F\u002Flocalhost:4001\u002Fapi\u002Fv1\u002Fusers\u002F507f1f77bcf86cd799439011",[396,2466,581],{"class":580},[396,2468,2469,2471,2473,2475],{"class":398,"line":406},[396,2470,586],{"class":425},[396,2472,422],{"class":402},[396,2474,1650],{"class":425},[396,2476,429],{"class":402},[320,2478],{},[323,2480,813,2482,2485],{"id":2481},"get-apiv1subscriptionmy-payments-get-my-subscription-payment-history",[313,2483,2484],{},"\u002Fapi\u002Fv1\u002Fsubscription\u002Fmy-payments"," — Get My Subscription Payment History",[309,2487,2488,337,2490,341,2492,2494,348,2496,356,2498,348,2500,2502,2504,840,2506,2508,2510],{},[334,2489,336],{},[313,2491,340],{},[343,2493],{},[334,2495,347],{},[313,2497,351],{},[334,2499,359],{},[313,2501,362],{},[343,2503],{},[334,2505,373],{},[343,2507],{},[334,2509,379],{}," Retrieve the subscription payment history for the current owner.",[382,2512,461],{"id":2513},"response-200-ok-10",[387,2515,2517],{"className":389,"code":2516,"language":391,"meta":392,"style":392},"{\n  \"items\": [\n    {\n      \"_id\": \"507f1f77bcf86cd799439091\",\n      \"organizationId\": \"507f191e810c19729de860ea\",\n      \"amount\": 999.0,\n      \"status\": \"paid\",\n      \"paidAt\": \"2026-04-01T10:00:00Z\",\n      \"planName\": \"Pro Monthly\"\n    }\n  ],\n  \"total\": 10,\n  \"page\": 1,\n  \"pages\": 1\n}\n",[313,2518,2519,2523,2535,2539,2558,2576,2592,2611,2631,2649,2653,2657,2673,2687,2700],{"__ignoreMap":392},[396,2520,2521],{"class":398,"line":399},[396,2522,403],{"class":402},[396,2524,2525,2527,2529,2531,2533],{"class":398,"line":406},[396,2526,409],{"class":402},[396,2528,1428],{"class":412},[396,2530,416],{"class":402},[396,2532,419],{"class":402},[396,2534,1435],{"class":402},[396,2536,2537],{"class":398,"line":432},[396,2538,1440],{"class":402},[396,2540,2541,2543,2545,2547,2549,2551,2554,2556],{"class":398,"line":549},[396,2542,1445],{"class":402},[396,2544,873],{"class":567},[396,2546,416],{"class":402},[396,2548,419],{"class":402},[396,2550,422],{"class":402},[396,2552,2553],{"class":425},"507f1f77bcf86cd799439091",[396,2555,416],{"class":402},[396,2557,529],{"class":402},[396,2559,2560,2562,2564,2566,2568,2570,2572,2574],{"class":398,"line":621},[396,2561,1445],{"class":402},[396,2563,456],{"class":567},[396,2565,416],{"class":402},[396,2567,419],{"class":402},[396,2569,422],{"class":402},[396,2571,1001],{"class":425},[396,2573,416],{"class":402},[396,2575,529],{"class":402},[396,2577,2578,2580,2583,2585,2587,2590],{"class":398,"line":627},[396,2579,1445],{"class":402},[396,2581,2582],{"class":567},"amount",[396,2584,416],{"class":402},[396,2586,419],{"class":402},[396,2588,2589],{"class":525}," 999.0",[396,2591,529],{"class":402},[396,2593,2594,2596,2598,2600,2602,2604,2607,2609],{"class":398,"line":968},[396,2595,1445],{"class":402},[396,2597,1013],{"class":567},[396,2599,416],{"class":402},[396,2601,419],{"class":402},[396,2603,422],{"class":402},[396,2605,2606],{"class":425},"paid",[396,2608,416],{"class":402},[396,2610,529],{"class":402},[396,2612,2613,2615,2618,2620,2622,2624,2627,2629],{"class":398,"line":988},[396,2614,1445],{"class":402},[396,2616,2617],{"class":567},"paidAt",[396,2619,416],{"class":402},[396,2621,419],{"class":402},[396,2623,422],{"class":402},[396,2625,2626],{"class":425},"2026-04-01T10:00:00Z",[396,2628,416],{"class":402},[396,2630,529],{"class":402},[396,2632,2633,2635,2638,2640,2642,2644,2647],{"class":398,"line":1008},[396,2634,1445],{"class":402},[396,2636,2637],{"class":567},"planName",[396,2639,416],{"class":402},[396,2641,419],{"class":402},[396,2643,422],{"class":402},[396,2645,2646],{"class":425},"Pro Monthly",[396,2648,429],{"class":402},[396,2650,2651],{"class":398,"line":1029},[396,2652,1570],{"class":402},[396,2654,2655],{"class":398,"line":1050},[396,2656,1575],{"class":402},[396,2658,2659,2661,2664,2666,2668,2671],{"class":398,"line":1069},[396,2660,409],{"class":402},[396,2662,2663],{"class":412},"total",[396,2665,416],{"class":402},[396,2667,419],{"class":402},[396,2669,2670],{"class":525}," 10",[396,2672,529],{"class":402},[396,2674,2675,2677,2679,2681,2683,2685],{"class":398,"line":1578},[396,2676,409],{"class":402},[396,2678,1374],{"class":412},[396,2680,416],{"class":402},[396,2682,419],{"class":402},[396,2684,1590],{"class":525},[396,2686,529],{"class":402},[396,2688,2689,2691,2693,2695,2697],{"class":398,"line":1595},[396,2690,409],{"class":402},[396,2692,1583],{"class":412},[396,2694,416],{"class":402},[396,2696,419],{"class":402},[396,2698,2699],{"class":525}," 1\n",[396,2701,2702],{"class":398,"line":1614},[396,2703,435],{"class":402},[382,2705,555],{"id":2706},"curl-example-10",[387,2708,2710],{"className":558,"code":2709,"language":560,"meta":392,"style":392},"curl -X GET http:\u002F\u002Flocalhost:4001\u002Fapi\u002Fv1\u002Fsubscription\u002Fmy-payments \\\n  -H \"Authorization: Bearer eyJhbGc...\"\n",[313,2711,2712,2725],{"__ignoreMap":392},[396,2713,2714,2716,2718,2720,2723],{"class":398,"line":399},[396,2715,568],{"class":567},[396,2717,571],{"class":425},[396,2719,1088],{"class":425},[396,2721,2722],{"class":425}," http:\u002F\u002Flocalhost:4001\u002Fapi\u002Fv1\u002Fsubscription\u002Fmy-payments",[396,2724,581],{"class":580},[396,2726,2727,2729,2731,2733],{"class":398,"line":406},[396,2728,586],{"class":425},[396,2730,422],{"class":402},[396,2732,604],{"class":425},[396,2734,429],{"class":402},[320,2736],{},[323,2738,813,2740,2743],{"id":2739},"get-apiv1subscriptionpaymentsid-get-subscription-payment-by-id",[313,2741,2742],{},"\u002Fapi\u002Fv1\u002Fsubscription\u002Fpayments\u002F:id"," — Get Subscription Payment by ID",[309,2745,2746,337,2748,341,2750,2752,348,2754,356,2756,348,2758,2760,2762,840,2764,2766,2768],{},[334,2747,336],{},[313,2749,340],{},[343,2751],{},[334,2753,347],{},[313,2755,351],{},[334,2757,359],{},[313,2759,362],{},[343,2761],{},[334,2763,373],{},[343,2765],{},[334,2767,379],{}," Retrieve a specific subscription payment by ID.",[382,2770,555],{"id":2771},"curl-example-11",[387,2773,2775],{"className":558,"code":2774,"language":560,"meta":392,"style":392},"curl -X GET http:\u002F\u002Flocalhost:4001\u002Fapi\u002Fv1\u002Fsubscription\u002Fpayments\u002F507f1f77bcf86cd799439091 \\\n  -H \"Authorization: Bearer eyJhbGc...\"\n",[313,2776,2777,2790],{"__ignoreMap":392},[396,2778,2779,2781,2783,2785,2788],{"class":398,"line":399},[396,2780,568],{"class":567},[396,2782,571],{"class":425},[396,2784,1088],{"class":425},[396,2786,2787],{"class":425}," http:\u002F\u002Flocalhost:4001\u002Fapi\u002Fv1\u002Fsubscription\u002Fpayments\u002F507f1f77bcf86cd799439091",[396,2789,581],{"class":580},[396,2791,2792,2794,2796,2798],{"class":398,"line":406},[396,2793,586],{"class":425},[396,2795,422],{"class":402},[396,2797,604],{"class":425},[396,2799,429],{"class":402},[320,2801],{},[323,2803,326,2805,2808],{"id":2804},"post-apiv1userspayment-methodssetup-setup-customer-payment-method",[313,2806,2807],{},"\u002Fapi\u002Fv1\u002Fusers\u002Fpayment-methods\u002Fsetup"," — Setup Customer Payment Method",[309,2810,2811,337,2813,2815,2816,2818,2819,2821,348,2823,356,2825,348,2827,2829,2831,840,2833,2835,2837],{},[334,2812,336],{},[313,2814,340],{},") · ",[313,2817,368],{}," only",[343,2820],{},[334,2822,347],{},[313,2824,355],{},[334,2826,359],{},[313,2828,368],{},[343,2830],{},[334,2832,373],{},[343,2834],{},[334,2836,379],{}," Initiate payment method setup for the authenticated customer. No request body required — the user identity is derived from the JWT token.",[382,2839,461],{"id":2840},"response-200-ok-11",[387,2842,2844],{"className":389,"code":2843,"language":391,"meta":392,"style":392},"{\n  \"paymentMethod\": {\n    \"_id\": \"507f1f77bcf86cd799439099\",\n    \"userId\": \"507f1f77bcf86cd799439011\",\n    \"type\": \"maya\",\n    \"last4\": \"1234\",\n    \"createdAt\": \"2026-04-01T10:00:00Z\"\n  },\n  \"message\": \"Payment method saved successfully\"\n}\n",[313,2845,2846,2850,2863,2882,2901,2920,2940,2956,2961,2978],{"__ignoreMap":392},[396,2847,2848],{"class":398,"line":399},[396,2849,403],{"class":402},[396,2851,2852,2854,2857,2859,2861],{"class":398,"line":406},[396,2853,409],{"class":402},[396,2855,2856],{"class":412},"paymentMethod",[396,2858,416],{"class":402},[396,2860,419],{"class":402},[396,2862,1249],{"class":402},[396,2864,2865,2867,2869,2871,2873,2875,2878,2880],{"class":398,"line":432},[396,2866,1254],{"class":402},[396,2868,873],{"class":567},[396,2870,416],{"class":402},[396,2872,419],{"class":402},[396,2874,422],{"class":402},[396,2876,2877],{"class":425},"507f1f77bcf86cd799439099",[396,2879,416],{"class":402},[396,2881,529],{"class":402},[396,2883,2884,2886,2889,2891,2893,2895,2897,2899],{"class":398,"line":549},[396,2885,1254],{"class":402},[396,2887,2888],{"class":567},"userId",[396,2890,416],{"class":402},[396,2892,419],{"class":402},[396,2894,422],{"class":402},[396,2896,882],{"class":425},[396,2898,416],{"class":402},[396,2900,529],{"class":402},[396,2902,2903,2905,2908,2910,2912,2914,2916,2918],{"class":398,"line":621},[396,2904,1254],{"class":402},[396,2906,2907],{"class":567},"type",[396,2909,416],{"class":402},[396,2911,419],{"class":402},[396,2913,422],{"class":402},[396,2915,1043],{"class":425},[396,2917,416],{"class":402},[396,2919,529],{"class":402},[396,2921,2922,2924,2927,2929,2931,2933,2936,2938],{"class":398,"line":627},[396,2923,1254],{"class":402},[396,2925,2926],{"class":567},"last4",[396,2928,416],{"class":402},[396,2930,419],{"class":402},[396,2932,422],{"class":402},[396,2934,2935],{"class":425},"1234",[396,2937,416],{"class":402},[396,2939,529],{"class":402},[396,2941,2942,2944,2946,2948,2950,2952,2954],{"class":398,"line":968},[396,2943,1254],{"class":402},[396,2945,1055],{"class":567},[396,2947,416],{"class":402},[396,2949,419],{"class":402},[396,2951,422],{"class":402},[396,2953,2626],{"class":425},[396,2955,429],{"class":402},[396,2957,2958],{"class":398,"line":988},[396,2959,2960],{"class":402},"  },\n",[396,2962,2963,2965,2967,2969,2971,2973,2976],{"class":398,"line":1008},[396,2964,409],{"class":402},[396,2966,477],{"class":412},[396,2968,416],{"class":402},[396,2970,419],{"class":402},[396,2972,422],{"class":402},[396,2974,2975],{"class":425},"Payment method saved successfully",[396,2977,429],{"class":402},[396,2979,2980],{"class":398,"line":1029},[396,2981,435],{"class":402},[382,2983,555],{"id":2984},"curl-example-12",[387,2986,2988],{"className":558,"code":2987,"language":560,"meta":392,"style":392},"curl -X POST http:\u002F\u002Flocalhost:4001\u002Fapi\u002Fv1\u002Fusers\u002Fpayment-methods\u002Fsetup \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -H \"Authorization: Bearer eyJhbGc...\" \\\n  -d '{\"paymentToken\": \"tok_live_abc123...\", \"type\": \"maya\"}'\n",[313,2989,2990,3003,3015,3027],{"__ignoreMap":392},[396,2991,2992,2994,2996,2998,3001],{"class":398,"line":399},[396,2993,568],{"class":567},[396,2995,571],{"class":425},[396,2997,574],{"class":425},[396,2999,3000],{"class":425}," http:\u002F\u002Flocalhost:4001\u002Fapi\u002Fv1\u002Fusers\u002Fpayment-methods\u002Fsetup",[396,3002,581],{"class":580},[396,3004,3005,3007,3009,3011,3013],{"class":398,"line":406},[396,3006,586],{"class":425},[396,3008,422],{"class":402},[396,3010,591],{"class":425},[396,3012,416],{"class":402},[396,3014,581],{"class":580},[396,3016,3017,3019,3021,3023,3025],{"class":398,"line":432},[396,3018,586],{"class":425},[396,3020,422],{"class":402},[396,3022,604],{"class":425},[396,3024,416],{"class":402},[396,3026,581],{"class":580},[396,3028,3029,3031,3033,3036],{"class":398,"line":549},[396,3030,613],{"class":425},[396,3032,616],{"class":402},[396,3034,3035],{"class":425},"{\"paymentToken\": \"tok_live_abc123...\", \"type\": \"maya\"}",[396,3037,633],{"class":402},[320,3039],{},[323,3041,813,3043,3046],{"id":3042},"get-apiv1userspayment-methods-list-customer-payment-methods",[313,3044,3045],{},"\u002Fapi\u002Fv1\u002Fusers\u002Fpayment-methods"," — List Customer Payment Methods",[309,3048,3049,337,3051,2815,3053,2818,3055,3057,348,3059,356,3061,348,3063,3065,3067,840,3069,3071,3073],{},[334,3050,336],{},[313,3052,340],{},[313,3054,368],{},[343,3056],{},[334,3058,347],{},[313,3060,355],{},[334,3062,359],{},[313,3064,368],{},[343,3066],{},[334,3068,373],{},[343,3070],{},[334,3072,379],{}," List all saved payment methods for the current customer.",[382,3075,461],{"id":3076},"response-200-ok-12",[387,3078,3080],{"className":389,"code":3079,"language":391,"meta":392,"style":392},"{\n  \"items\": [\n    {\n      \"_id\": \"507f1f77bcf86cd799439099\",\n      \"type\": \"maya\",\n      \"last4\": \"1234\",\n      \"createdAt\": \"2026-04-01T10:00:00Z\"\n    }\n  ]\n}\n",[313,3081,3082,3086,3098,3102,3120,3138,3156,3172,3176,3181],{"__ignoreMap":392},[396,3083,3084],{"class":398,"line":399},[396,3085,403],{"class":402},[396,3087,3088,3090,3092,3094,3096],{"class":398,"line":406},[396,3089,409],{"class":402},[396,3091,1428],{"class":412},[396,3093,416],{"class":402},[396,3095,419],{"class":402},[396,3097,1435],{"class":402},[396,3099,3100],{"class":398,"line":432},[396,3101,1440],{"class":402},[396,3103,3104,3106,3108,3110,3112,3114,3116,3118],{"class":398,"line":549},[396,3105,1445],{"class":402},[396,3107,873],{"class":567},[396,3109,416],{"class":402},[396,3111,419],{"class":402},[396,3113,422],{"class":402},[396,3115,2877],{"class":425},[396,3117,416],{"class":402},[396,3119,529],{"class":402},[396,3121,3122,3124,3126,3128,3130,3132,3134,3136],{"class":398,"line":621},[396,3123,1445],{"class":402},[396,3125,2907],{"class":567},[396,3127,416],{"class":402},[396,3129,419],{"class":402},[396,3131,422],{"class":402},[396,3133,1043],{"class":425},[396,3135,416],{"class":402},[396,3137,529],{"class":402},[396,3139,3140,3142,3144,3146,3148,3150,3152,3154],{"class":398,"line":627},[396,3141,1445],{"class":402},[396,3143,2926],{"class":567},[396,3145,416],{"class":402},[396,3147,419],{"class":402},[396,3149,422],{"class":402},[396,3151,2935],{"class":425},[396,3153,416],{"class":402},[396,3155,529],{"class":402},[396,3157,3158,3160,3162,3164,3166,3168,3170],{"class":398,"line":968},[396,3159,1445],{"class":402},[396,3161,1055],{"class":567},[396,3163,416],{"class":402},[396,3165,419],{"class":402},[396,3167,422],{"class":402},[396,3169,2626],{"class":425},[396,3171,429],{"class":402},[396,3173,3174],{"class":398,"line":988},[396,3175,1570],{"class":402},[396,3177,3178],{"class":398,"line":1008},[396,3179,3180],{"class":402},"  ]\n",[396,3182,3183],{"class":398,"line":1029},[396,3184,435],{"class":402},[382,3186,555],{"id":3187},"curl-example-13",[387,3189,3191],{"className":558,"code":3190,"language":560,"meta":392,"style":392},"curl -X GET http:\u002F\u002Flocalhost:4001\u002Fapi\u002Fv1\u002Fusers\u002Fpayment-methods \\\n  -H \"Authorization: Bearer eyJhbGc...\"\n",[313,3192,3193,3206],{"__ignoreMap":392},[396,3194,3195,3197,3199,3201,3204],{"class":398,"line":399},[396,3196,568],{"class":567},[396,3198,571],{"class":425},[396,3200,1088],{"class":425},[396,3202,3203],{"class":425}," http:\u002F\u002Flocalhost:4001\u002Fapi\u002Fv1\u002Fusers\u002Fpayment-methods",[396,3205,581],{"class":580},[396,3207,3208,3210,3212,3214],{"class":398,"line":406},[396,3209,586],{"class":425},[396,3211,422],{"class":402},[396,3213,604],{"class":425},[396,3215,429],{"class":402},[320,3217],{},[323,3219,2319,3221,3224],{"id":3220},"delete-apiv1userspayment-methodspaymentmethodid-delete-customer-payment-method",[313,3222,3223],{},"\u002Fapi\u002Fv1\u002Fusers\u002Fpayment-methods\u002F:paymentMethodId"," — Delete Customer Payment Method",[309,3226,3227,337,3229,2815,3231,2818,3233,3235,348,3237,356,3239,348,3241,3243,3245,840,3247,3249,3251],{},[334,3228,336],{},[313,3230,340],{},[313,3232,368],{},[343,3234],{},[334,3236,347],{},[313,3238,355],{},[334,3240,359],{},[313,3242,368],{},[343,3244],{},[334,3246,373],{},[343,3248],{},[334,3250,379],{}," Remove a saved payment method.",[382,3253,461],{"id":3254},"response-200-ok-13",[387,3256,3258],{"className":389,"code":3257,"language":391,"meta":392,"style":392},"{\n  \"message\": \"Payment method removed\"\n}\n",[313,3259,3260,3264,3281],{"__ignoreMap":392},[396,3261,3262],{"class":398,"line":399},[396,3263,403],{"class":402},[396,3265,3266,3268,3270,3272,3274,3276,3279],{"class":398,"line":406},[396,3267,409],{"class":402},[396,3269,477],{"class":412},[396,3271,416],{"class":402},[396,3273,419],{"class":402},[396,3275,422],{"class":402},[396,3277,3278],{"class":425},"Payment method removed",[396,3280,429],{"class":402},[396,3282,3283],{"class":398,"line":432},[396,3284,435],{"class":402},[382,3286,555],{"id":3287},"curl-example-14",[387,3289,3291],{"className":558,"code":3290,"language":560,"meta":392,"style":392},"curl -X DELETE http:\u002F\u002Flocalhost:4001\u002Fapi\u002Fv1\u002Fusers\u002Fpayment-methods\u002F507f1f77bcf86cd799439099 \\\n  -H \"Authorization: Bearer eyJhbGc...\"\n",[313,3292,3293,3306],{"__ignoreMap":392},[396,3294,3295,3297,3299,3301,3304],{"class":398,"line":399},[396,3296,568],{"class":567},[396,3298,571],{"class":425},[396,3300,2461],{"class":425},[396,3302,3303],{"class":425}," http:\u002F\u002Flocalhost:4001\u002Fapi\u002Fv1\u002Fusers\u002Fpayment-methods\u002F507f1f77bcf86cd799439099",[396,3305,581],{"class":580},[396,3307,3308,3310,3312,3314],{"class":398,"line":406},[396,3309,586],{"class":425},[396,3311,422],{"class":402},[396,3313,604],{"class":425},[396,3315,429],{"class":402},[320,3317],{},[323,3319,3321],{"id":3320},"user-types","User Types",[3323,3324,3325,3341],"table",{},[3326,3327,3328],"thead",{},[3329,3330,3331,3335,3338],"tr",{},[3332,3333,3334],"th",{},"Type",[3332,3336,3337],{},"Role",[3332,3339,3340],{},"Access",[3342,3343,3344,3357,3369,3381,3393],"tbody",{},[3329,3345,3346,3351,3354],{},[3347,3348,3349],"td",{},[313,3350,362],{},[3347,3352,3353],{},"Business owner",[3347,3355,3356],{},"Full organization control",[3329,3358,3359,3363,3366],{},[3347,3360,3361],{},[313,3362,365],{},[3347,3364,3365],{},"Branch manager",[3347,3367,3368],{},"Branch-level control",[3329,3370,3371,3375,3378],{},[3347,3372,3373],{},[313,3374,368],{},[3347,3376,3377],{},"Regular customer",[3347,3379,3380],{},"Can book services",[3329,3382,3383,3387,3390],{},[3347,3384,3385],{},[313,3386,1351],{},[3347,3388,3389],{},"Super-admin",[3347,3391,3392],{},"Full platform control",[3329,3394,3395,3400,3403],{},[3347,3396,3397],{},[313,3398,3399],{},"guest",[3347,3401,3402],{},"Temporary user",[3347,3404,3405],{},"One-time booking",[320,3407],{},[323,3409,3411],{"id":3410},"user-status","User Status",[440,3413,3414,3419,3425,3431],{},[443,3415,3416,3418],{},[313,3417,1022],{},": User can log in and access features",[443,3420,3421,3424],{},[313,3422,3423],{},"pending",": Account created, not yet verified",[443,3426,3427,3430],{},[313,3428,3429],{},"suspended",": Temporary suspension",[443,3432,3433,3436,3437,341],{},[313,3434,3435],{},"deleted",": Soft-deleted (marked with ",[313,3438,3439],{},"deletedAt",[320,3441],{},[323,3443,3445],{"id":3444},"notes","Notes",[440,3447,3448,3451,3454,3457],{},[443,3449,3450],{},"All timestamps are ISO 8601 format.",[443,3452,3453],{},"Emails are case-insensitive and unique per organization.",[443,3455,3456],{},"Passwords are BCrypt hashed; never returned.",[443,3458,3459,3460,3463],{},"See ",[313,3461,3462],{},"booki-api\u002Fsrc\u002Fvalidations\u002Fuser.validation.ts"," for field constraints.",[3465,3466,3467],"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 .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":392,"searchDepth":399,"depth":406,"links":3469},[3470,3477,3484,3490,3496,3501,3507,3513,3520,3526,3533,3538,3542,3547,3552,3557,3558,3559],{"id":325,"depth":406,"text":3471,"children":3472},"POST \u002Fapi\u002Fv1\u002Fusers\u002Femail\u002Fotp — Send Email Update OTP",[3473,3474,3475,3476],{"id":384,"depth":432,"text":385},{"id":460,"depth":432,"text":461},{"id":495,"depth":432,"text":496},{"id":554,"depth":432,"text":555},{"id":638,"depth":406,"text":3478,"children":3479},"POST \u002Fapi\u002Fv1\u002Fusers\u002Femail\u002Fotp\u002F:otp\u002Fverify — Verify Email Update OTP",[3480,3481,3482,3483],{"id":672,"depth":432,"text":385},{"id":688,"depth":432,"text":461},{"id":721,"depth":432,"text":496},{"id":775,"depth":432,"text":555},{"id":812,"depth":406,"text":3485,"children":3486},"GET \u002Fapi\u002Fv1\u002Fusers\u002Fid\u002F:id — Get User by ID",[3487,3488,3489],{"id":848,"depth":432,"text":385},{"id":857,"depth":432,"text":461},{"id":1074,"depth":432,"text":555},{"id":1108,"depth":406,"text":3491,"children":3492},"GET \u002Fapi\u002Fv1\u002Fusers\u002Femail\u002F:email — Get User by Email",[3493,3494,3495],{"id":1142,"depth":432,"text":385},{"id":1151,"depth":432,"text":461},{"id":1157,"depth":432,"text":555},{"id":1190,"depth":406,"text":3497,"children":3498},"GET \u002Fapi\u002Fv1\u002Fusers\u002Fpayment-preference — Get Payment Preference",[3499,3500],{"id":1226,"depth":432,"text":461},{"id":1296,"depth":432,"text":555},{"id":1329,"depth":406,"text":3502,"children":3503},"GET \u002Fapi\u002Fv1\u002Fusers — List Users (Admin Only)",[3504,3505,3506],{"id":1364,"depth":432,"text":385},{"id":1412,"depth":432,"text":461},{"id":1619,"depth":432,"text":555},{"id":1657,"depth":406,"text":3508,"children":3509},"PUT \u002Fapi\u002Fv1\u002Fusers\u002Fname — Update Display Name",[3510,3511,3512],{"id":1696,"depth":432,"text":385},{"id":1777,"depth":432,"text":461},{"id":1810,"depth":432,"text":555},{"id":1882,"depth":406,"text":3514,"children":3515},"PUT \u002Fapi\u002Fv1\u002Fusers\u002F:id\u002Fpassword — Update Password",[3516,3517,3518,3519],{"id":1920,"depth":432,"text":385},{"id":1979,"depth":432,"text":461},{"id":2012,"depth":432,"text":496},{"id":2066,"depth":432,"text":555},{"id":2132,"depth":406,"text":3521,"children":3522},"PUT \u002Fapi\u002Fv1\u002Fusers\u002Fpayment-preference — Update Payment Preference",[3523,3524,3525],{"id":2167,"depth":432,"text":385},{"id":2220,"depth":432,"text":461},{"id":2253,"depth":432,"text":555},{"id":2318,"depth":406,"text":3527,"children":3528},"DELETE \u002Fapi\u002Fv1\u002Fusers\u002F:id — Delete User (Admin Only)",[3529,3530,3531,3532],{"id":2351,"depth":432,"text":385},{"id":2360,"depth":432,"text":461},{"id":2393,"depth":432,"text":496},{"id":2447,"depth":432,"text":555},{"id":2481,"depth":406,"text":3534,"children":3535},"GET \u002Fapi\u002Fv1\u002Fsubscription\u002Fmy-payments — Get My Subscription Payment History",[3536,3537],{"id":2513,"depth":432,"text":461},{"id":2706,"depth":432,"text":555},{"id":2739,"depth":406,"text":3539,"children":3540},"GET \u002Fapi\u002Fv1\u002Fsubscription\u002Fpayments\u002F:id — Get Subscription Payment by ID",[3541],{"id":2771,"depth":432,"text":555},{"id":2804,"depth":406,"text":3543,"children":3544},"POST \u002Fapi\u002Fv1\u002Fusers\u002Fpayment-methods\u002Fsetup — Setup Customer Payment Method",[3545,3546],{"id":2840,"depth":432,"text":461},{"id":2984,"depth":432,"text":555},{"id":3042,"depth":406,"text":3548,"children":3549},"GET \u002Fapi\u002Fv1\u002Fusers\u002Fpayment-methods — List Customer Payment Methods",[3550,3551],{"id":3076,"depth":432,"text":461},{"id":3187,"depth":432,"text":555},{"id":3220,"depth":406,"text":3553,"children":3554},"DELETE \u002Fapi\u002Fv1\u002Fusers\u002Fpayment-methods\u002F:paymentMethodId — Delete Customer Payment Method",[3555,3556],{"id":3254,"depth":432,"text":461},{"id":3287,"depth":432,"text":555},{"id":3320,"depth":406,"text":3321},{"id":3410,"depth":406,"text":3411},{"id":3444,"depth":406,"text":3445},"User profile management, email updates, password changes, and payment preferences.","md",null,{},{"icon":201},{"title":198,"description":3560},"xTVg3xYYoxXEvO11axXkH1Ag8RhuiiyV9SHtDk2uHA4",[3568,3570],{"title":193,"path":194,"stem":195,"description":3569,"icon":196,"children":-1},"Payment gateway connections, payment method setup, and integration management.",{"title":203,"path":204,"stem":205,"description":3571,"icon":196,"children":-1},"Maya payment endpoints: checkout sessions, webhooks, and subscription flows.",1777787844708]