[{"data":1,"prerenderedAt":1738},["ShallowReactive",2],{"navigation":3,"\u002Fbooki-documentation\u002Fapi\u002Fstripe":337,"\u002Fbooki-documentation\u002Fapi\u002Fstripe-surround":1733},[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,266,280,293],{"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,196,201,205,210,215,220,225,230,234,239,244,248,252,256,261],{"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 - Billing","\u002Fbooki-documentation\u002Fapi\u002Forganization-billing","3.booki-documentation\u002F3.api\u002F5.organization-billing","i-lucide-building-2",{"title":189,"path":190,"stem":191,"icon":187},"Organizations - Base","\u002Fbooki-documentation\u002Fapi\u002Forganizations","3.booki-documentation\u002F3.api\u002F5.organizations",{"title":193,"path":194,"stem":195,"icon":172},"Organizations - Packages","\u002Fbooki-documentation\u002Fapi\u002Fpackages","3.booki-documentation\u002F3.api\u002F5.packages",{"title":197,"path":198,"stem":199,"icon":200},"Organizations - Payments & Integrations","\u002Fbooki-documentation\u002Fapi\u002Fpayments","3.booki-documentation\u002F3.api\u002F5.payments","i-lucide-credit-card",{"title":202,"path":203,"stem":204,"icon":182},"Business Hours - Public","\u002Fbooki-documentation\u002Fapi\u002Fpublic-business-hours","3.booki-documentation\u002F3.api\u002F5.public-business-hours",{"title":206,"path":207,"stem":208,"icon":209},"Packages - Public","\u002Fbooki-documentation\u002Fapi\u002Fpublic-packages","3.booki-documentation\u002F3.api\u002F5.public-packages","i-lucide-package",{"title":211,"path":212,"stem":213,"icon":214},"Subscription Payments","\u002Fbooki-documentation\u002Fapi\u002Fsubscription-payments","3.booki-documentation\u002F3.api\u002F6.subscription-payments","i-lucide-receipt",{"title":216,"path":217,"stem":218,"icon":219},"Users - Saved Payment Methods","\u002Fbooki-documentation\u002Fapi\u002Fuser-payment-methods","3.booki-documentation\u002F3.api\u002F6.user-payment-methods","i-lucide-wallet",{"title":221,"path":222,"stem":223,"icon":224},"Users - Profile & Settings","\u002Fbooki-documentation\u002Fapi\u002Fusers","3.booki-documentation\u002F3.api\u002F6.users","i-lucide-user",{"title":226,"path":227,"stem":228,"icon":229},"Chat","\u002Fbooki-documentation\u002Fapi\u002Fchat","3.booki-documentation\u002F3.api\u002F7.chat","i-lucide-message-circle",{"title":231,"path":232,"stem":233,"icon":200},"Maya Payments","\u002Fbooki-documentation\u002Fapi\u002Fmaya","3.booki-documentation\u002F3.api\u002F7.maya",{"title":235,"path":236,"stem":237,"icon":238},"Owner - Booking Management","\u002Fbooki-documentation\u002Fapi\u002Fowner-bookings","3.booki-documentation\u002F3.api\u002F7.owner-bookings","i-lucide-calendar",{"title":240,"path":241,"stem":242,"icon":243},"Owner - Customer Management","\u002Fbooki-documentation\u002Fapi\u002Fowner-customers","3.booki-documentation\u002F3.api\u002F7.owner-customers","i-lucide-users",{"title":245,"path":246,"stem":247,"icon":200},"Stripe Payments","\u002Fbooki-documentation\u002Fapi\u002Fstripe","3.booki-documentation\u002F3.api\u002F7.stripe",{"title":249,"path":250,"stem":251,"icon":200},"Admin - Billing & Subscriptions","\u002Fbooki-documentation\u002Fapi\u002Fadmin-billing","3.booki-documentation\u002F3.api\u002F8.admin-billing",{"title":253,"path":254,"stem":255,"icon":187},"Admin - Organizations Management","\u002Fbooki-documentation\u002Fapi\u002Fadmin-organizations","3.booki-documentation\u002F3.api\u002F8.admin-organizations",{"title":257,"path":258,"stem":259,"icon":260},"Admin - Billing Settings","\u002Fbooki-documentation\u002Fapi\u002Fadmin-settings","3.booki-documentation\u002F3.api\u002F8.admin-settings","i-lucide-settings",{"title":262,"path":263,"stem":264,"icon":265},"Admin - User Management","\u002Fbooki-documentation\u002Fapi\u002Fadmin-users","3.booki-documentation\u002F3.api\u002F8.admin-users","i-lucide-shield-admin",{"title":267,"icon":209,"path":268,"stem":269,"children":270,"page":54},"Shared","\u002Fbooki-documentation\u002Fshared","3.booki-documentation\u002F4.shared",[271,276],{"title":272,"path":273,"stem":274,"icon":275},"codi-node-utils","\u002Fbooki-documentation\u002Fshared\u002Fcodi-node-utils","3.booki-documentation\u002F4.shared\u002F1.codi-node-utils","i-lucide-wrench",{"title":277,"path":278,"stem":279,"icon":124},"codi-layer","\u002Fbooki-documentation\u002Fshared\u002Fcodi-layer","3.booki-documentation\u002F4.shared\u002F2.codi-layer",{"title":281,"path":282,"stem":283,"children":284,"page":54},"Flowcharts","\u002Fbooki-documentation\u002Fflowcharts","3.booki-documentation\u002F5.flowcharts",[285,289],{"title":286,"path":287,"stem":288,"icon":158},"Owner Booking Management Flow","\u002Fbooki-documentation\u002Fflowcharts\u002Fowner-booking-management","3.booki-documentation\u002F5.flowcharts\u002F1.owner-booking-management",{"title":290,"path":291,"stem":292,"icon":167},"Customer Booking Flow","\u002Fbooki-documentation\u002Fflowcharts\u002Fcustomer-booking-flow","3.booki-documentation\u002F5.flowcharts\u002F2.customer-booking-flow",{"title":294,"path":295,"stem":296,"children":297,"page":54},"Guides","\u002Fbooki-documentation\u002Fguides","3.booki-documentation\u002Fguides",[298,303,307,311,315,320,325,329,333],{"title":299,"path":300,"stem":301,"icon":302},"Guide - Authentication Flow & Sessions","\u002Fbooki-documentation\u002Fguides\u002Fguides-auth-flow","3.booki-documentation\u002Fguides\u002Fguides-auth-flow","i-lucide-lock",{"title":304,"path":305,"stem":306,"icon":177},"Guide - Branch Management","\u002Fbooki-documentation\u002Fguides\u002Fguides-branch-management","3.booki-documentation\u002Fguides\u002Fguides-branch-management",{"title":308,"path":309,"stem":310,"icon":200},"Guide - Customer Payment Methods","\u002Fbooki-documentation\u002Fguides\u002Fguides-customer-payments","3.booki-documentation\u002Fguides\u002Fguides-customer-payments",{"title":312,"path":313,"stem":314,"icon":260},"Guide - Environment Setup","\u002Fbooki-documentation\u002Fguides\u002Fguides-environment-setup","3.booki-documentation\u002Fguides\u002Fguides-environment-setup",{"title":316,"path":317,"stem":318,"icon":319},"Guide - Common Error Responses","\u002Fbooki-documentation\u002Fguides\u002Fguides-errors","3.booki-documentation\u002Fguides\u002Fguides-errors","i-lucide-alert-circle",{"title":321,"path":322,"stem":323,"icon":324},"Guide - Gmail SMTP Setup","\u002Fbooki-documentation\u002Fguides\u002Fguides-gmail-setup","3.booki-documentation\u002Fguides\u002Fguides-gmail-setup","i-lucide-mail",{"title":326,"path":327,"stem":328,"icon":124},"Guide - Multi-Tenancy & Tenant Slug Resolution","\u002Fbooki-documentation\u002Fguides\u002Fguides-multi-tenancy","3.booki-documentation\u002Fguides\u002Fguides-multi-tenancy",{"title":330,"path":331,"stem":332,"icon":48},"Guide - Redis Caching","\u002Fbooki-documentation\u002Fguides\u002Fguides-redis","3.booki-documentation\u002Fguides\u002Fguides-redis",{"title":334,"path":335,"stem":336,"icon":214},"Guide - Subscription Billing","\u002Fbooki-documentation\u002Fguides\u002Fguides-subscription-billing","3.booki-documentation\u002Fguides\u002Fguides-subscription-billing",{"id":338,"title":245,"body":339,"description":1726,"extension":1727,"links":1728,"meta":1729,"navigation":1730,"path":246,"seo":1731,"stem":247,"__hash__":1732},"docs\u002F3.booki-documentation\u002F3.api\u002F7.stripe.md",{"type":340,"value":341,"toc":1692},"minimark",[342,350,353,358,361,415,422,424,432,465,474,479,489,492,496,565,569,575,623,629,674,678,733,735,742,762,767,770,799,802,811,815,865,868,874,919,922,982,984,991,1006,1014,1017,1136,1138,1179,1182,1228,1231,1300,1302,1309,1321,1326,1329,1357,1359,1366,1369,1399,1402,1446,1448,1455,1465,1478,1495,1498,1504,1650,1653,1680,1688],[343,344,345,346],"p",{},"Base path: ",[347,348,349],"code",{},"\u002Fapi\u002Fv1\u002Fstripe",[351,352],"hr",{},[354,355,357],"h2",{"id":356},"how-stripe-is-used-in-booki","How Stripe Is Used in Booki",[343,359,360],{},"Stripe handles two types of payments:",[362,363,364,380],"table",{},[365,366,367],"thead",{},[368,369,370,374,377],"tr",{},[371,372,373],"th",{},"Flow",[371,375,376],{},"Who",[371,378,379],{},"Endpoint",[381,382,383,400],"tbody",{},[368,384,385,392,395],{},[386,387,388],"td",{},[389,390,391],"strong",{},"Booking payment",[386,393,394],{},"Customer paying for a booking",[386,396,397],{},[347,398,399],{},"POST \u002Fstripe\u002Fbookings\u002F:id\u002Fpayment-intent",[368,401,402,407,410],{},[386,403,404],{},[389,405,406],{},"Subscription payment",[386,408,409],{},"Owner registering and subscribing",[386,411,412],{},[347,413,414],{},"POST \u002Fstripe\u002Fcreate-subscription-intent",[343,416,417,418,421],{},"The frontend uses the returned ",[347,419,420],{},"clientSecret"," with Stripe.js to complete payment on the client side, then calls the verify endpoint to confirm.",[351,423],{},[354,425,427,428,431],{"id":426},"post-apiv1stripebookingsidpayment-intent-create-booking-payment-intent","POST ",[347,429,430],{},"\u002Fapi\u002Fv1\u002Fstripe\u002Fbookings\u002F:id\u002Fpayment-intent"," — Create Booking Payment Intent",[343,433,434,437,438,441,442,445,448,449,452,453,448,456,459,461,464],{},[389,435,436],{},"Auth:"," Protected (",[347,439,440],{},"Authorization: Bearer \u003CaccessToken>",")",[443,444],"br",{},[389,446,447],{},"Used by:"," ",[347,450,451],{},"customer-booki-web-app"," · ",[389,454,455],{},"Role:",[347,457,458],{},"customer",[443,460],{},[389,462,463],{},"organizationId:"," From JWT token",[343,466,467,470,471,473],{},[389,468,469],{},"Description:"," Create a Stripe PaymentIntent for a specific booking. Returns a ",[347,472,420],{}," used by Stripe.js on the frontend to collect and confirm the payment.",[475,476,478],"h3",{"id":477},"request","Request",[480,481,486],"pre",{"className":482,"code":484,"language":485},[483],"language-text","POST \u002Fapi\u002Fv1\u002Fstripe\u002Fbookings\u002F507f1f77bcf86cd799439041\u002Fpayment-intent\n","text",[347,487,484],{"__ignoreMap":488},"",[343,490,491],{},"No request body required. The booking ID is taken from the path parameter.",[475,493,495],{"id":494},"response-201-created","Response (201 Created)",[480,497,501],{"className":498,"code":499,"language":500,"meta":488,"style":488},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"clientSecret\": \"pi_3NxABC2eZvKYlo2C1ABC1234_secret_...\",\n  \"paymentIntentId\": \"pi_3NxABC2eZvKYlo2C1ABC1234\"\n}\n","json",[347,502,503,512,539,559],{"__ignoreMap":488},[504,505,508],"span",{"class":506,"line":507},"line",1,[504,509,511],{"class":510},"sMK4o","{\n",[504,513,515,518,521,524,527,530,534,536],{"class":506,"line":514},2,[504,516,517],{"class":510},"  \"",[504,519,420],{"class":520},"spNyl",[504,522,523],{"class":510},"\"",[504,525,526],{"class":510},":",[504,528,529],{"class":510}," \"",[504,531,533],{"class":532},"sfazB","pi_3NxABC2eZvKYlo2C1ABC1234_secret_...",[504,535,523],{"class":510},[504,537,538],{"class":510},",\n",[504,540,542,544,547,549,551,553,556],{"class":506,"line":541},3,[504,543,517],{"class":510},[504,545,546],{"class":520},"paymentIntentId",[504,548,523],{"class":510},[504,550,526],{"class":510},[504,552,529],{"class":510},[504,554,555],{"class":532},"pi_3NxABC2eZvKYlo2C1ABC1234",[504,557,558],{"class":510},"\"\n",[504,560,562],{"class":506,"line":561},4,[504,563,564],{"class":510},"}\n",[475,566,568],{"id":567},"error-responses","Error Responses",[343,570,571,574],{},[389,572,573],{},"401 Unauthorized"," — No valid token:",[480,576,578],{"className":498,"code":577,"language":500,"meta":488,"style":488},"{\n  \"statusCode\": 401,\n  \"message\": \"Access token is required to proceed.\"\n}\n",[347,579,580,584,601,619],{"__ignoreMap":488},[504,581,582],{"class":506,"line":507},[504,583,511],{"class":510},[504,585,586,588,591,593,595,599],{"class":506,"line":514},[504,587,517],{"class":510},[504,589,590],{"class":520},"statusCode",[504,592,523],{"class":510},[504,594,526],{"class":510},[504,596,598],{"class":597},"sbssI"," 401",[504,600,538],{"class":510},[504,602,603,605,608,610,612,614,617],{"class":506,"line":541},[504,604,517],{"class":510},[504,606,607],{"class":520},"message",[504,609,523],{"class":510},[504,611,526],{"class":510},[504,613,529],{"class":510},[504,615,616],{"class":532},"Access token is required to proceed.",[504,618,558],{"class":510},[504,620,621],{"class":506,"line":561},[504,622,564],{"class":510},[343,624,625,628],{},[389,626,627],{},"404 Not Found"," — Booking not found:",[480,630,632],{"className":498,"code":631,"language":500,"meta":488,"style":488},"{\n  \"statusCode\": 404,\n  \"message\": \"Booking not found.\"\n}\n",[347,633,634,638,653,670],{"__ignoreMap":488},[504,635,636],{"class":506,"line":507},[504,637,511],{"class":510},[504,639,640,642,644,646,648,651],{"class":506,"line":514},[504,641,517],{"class":510},[504,643,590],{"class":520},[504,645,523],{"class":510},[504,647,526],{"class":510},[504,649,650],{"class":597}," 404",[504,652,538],{"class":510},[504,654,655,657,659,661,663,665,668],{"class":506,"line":541},[504,656,517],{"class":510},[504,658,607],{"class":520},[504,660,523],{"class":510},[504,662,526],{"class":510},[504,664,529],{"class":510},[504,666,667],{"class":532},"Booking not found.",[504,669,558],{"class":510},[504,671,672],{"class":506,"line":561},[504,673,564],{"class":510},[475,675,677],{"id":676},"curl-example","cURL Example",[480,679,683],{"className":680,"code":681,"language":682,"meta":488,"style":488},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","curl -X POST \"http:\u002F\u002Flocalhost:4001\u002Fapi\u002Fv1\u002Fstripe\u002Fbookings\u002F507f1f77bcf86cd799439041\u002Fpayment-intent\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -H \"Authorization: Bearer eyJhbGc...\"\n","bash",[347,684,685,708,722],{"__ignoreMap":488},[504,686,687,691,694,697,699,702,704],{"class":506,"line":507},[504,688,690],{"class":689},"sBMFI","curl",[504,692,693],{"class":532}," -X",[504,695,696],{"class":532}," POST",[504,698,529],{"class":510},[504,700,701],{"class":532},"http:\u002F\u002Flocalhost:4001\u002Fapi\u002Fv1\u002Fstripe\u002Fbookings\u002F507f1f77bcf86cd799439041\u002Fpayment-intent",[504,703,523],{"class":510},[504,705,707],{"class":706},"sTEyZ"," \\\n",[504,709,710,713,715,718,720],{"class":506,"line":514},[504,711,712],{"class":532},"  -H",[504,714,529],{"class":510},[504,716,717],{"class":532},"Content-Type: application\u002Fjson",[504,719,523],{"class":510},[504,721,707],{"class":706},[504,723,724,726,728,731],{"class":506,"line":541},[504,725,712],{"class":532},[504,727,529],{"class":510},[504,729,730],{"class":532},"Authorization: Bearer eyJhbGc...",[504,732,558],{"class":510},[351,734],{},[354,736,427,738,741],{"id":737},"post-apiv1stripebookingsidverify-payment-verify-booking-payment",[347,739,740],{},"\u002Fapi\u002Fv1\u002Fstripe\u002Fbookings\u002F:id\u002Fverify-payment"," — Verify Booking Payment",[343,743,744,437,746,441,748,750,448,752,452,754,448,756,758,760,464],{},[389,745,436],{},[347,747,440],{},[443,749],{},[389,751,447],{},[347,753,451],{},[389,755,455],{},[347,757,458],{},[443,759],{},[389,761,463],{},[343,763,764,766],{},[389,765,469],{}," After the customer completes payment via Stripe.js, call this endpoint to confirm the payment succeeded and update the booking status.",[475,768,478],{"id":769},"request-1",[480,771,773],{"className":498,"code":772,"language":500,"meta":488,"style":488},"{\n  \"paymentIntentId\": \"pi_3NxABC2eZvKYlo2C1ABC1234\"\n}\n",[347,774,775,779,795],{"__ignoreMap":488},[504,776,777],{"class":506,"line":507},[504,778,511],{"class":510},[504,780,781,783,785,787,789,791,793],{"class":506,"line":514},[504,782,517],{"class":510},[504,784,546],{"class":520},[504,786,523],{"class":510},[504,788,526],{"class":510},[504,790,529],{"class":510},[504,792,555],{"class":532},[504,794,558],{"class":510},[504,796,797],{"class":506,"line":541},[504,798,564],{"class":510},[343,800,801],{},"Fields:",[803,804,805],"ul",{},[806,807,808,810],"li",{},[347,809,546],{}," (string, required): The PaymentIntent ID returned from the payment intent step",[475,812,814],{"id":813},"response-200-ok","Response (200 OK)",[480,816,818],{"className":498,"code":817,"language":500,"meta":488,"style":488},"{\n  \"message\": \"Payment verified successfully.\",\n  \"bookingId\": \"507f1f77bcf86cd799439041\"\n}\n",[347,819,820,824,843,861],{"__ignoreMap":488},[504,821,822],{"class":506,"line":507},[504,823,511],{"class":510},[504,825,826,828,830,832,834,836,839,841],{"class":506,"line":514},[504,827,517],{"class":510},[504,829,607],{"class":520},[504,831,523],{"class":510},[504,833,526],{"class":510},[504,835,529],{"class":510},[504,837,838],{"class":532},"Payment verified successfully.",[504,840,523],{"class":510},[504,842,538],{"class":510},[504,844,845,847,850,852,854,856,859],{"class":506,"line":541},[504,846,517],{"class":510},[504,848,849],{"class":520},"bookingId",[504,851,523],{"class":510},[504,853,526],{"class":510},[504,855,529],{"class":510},[504,857,858],{"class":532},"507f1f77bcf86cd799439041",[504,860,558],{"class":510},[504,862,863],{"class":506,"line":561},[504,864,564],{"class":510},[475,866,568],{"id":867},"error-responses-1",[343,869,870,873],{},[389,871,872],{},"400 Bad Request"," — Payment not completed:",[480,875,877],{"className":498,"code":876,"language":500,"meta":488,"style":488},"{\n  \"statusCode\": 400,\n  \"message\": \"Payment has not been completed yet.\"\n}\n",[347,878,879,883,898,915],{"__ignoreMap":488},[504,880,881],{"class":506,"line":507},[504,882,511],{"class":510},[504,884,885,887,889,891,893,896],{"class":506,"line":514},[504,886,517],{"class":510},[504,888,590],{"class":520},[504,890,523],{"class":510},[504,892,526],{"class":510},[504,894,895],{"class":597}," 400",[504,897,538],{"class":510},[504,899,900,902,904,906,908,910,913],{"class":506,"line":541},[504,901,517],{"class":510},[504,903,607],{"class":520},[504,905,523],{"class":510},[504,907,526],{"class":510},[504,909,529],{"class":510},[504,911,912],{"class":532},"Payment has not been completed yet.",[504,914,558],{"class":510},[504,916,917],{"class":506,"line":561},[504,918,564],{"class":510},[475,920,677],{"id":921},"curl-example-1",[480,923,925],{"className":680,"code":924,"language":682,"meta":488,"style":488},"curl -X POST \"http:\u002F\u002Flocalhost:4001\u002Fapi\u002Fv1\u002Fstripe\u002Fbookings\u002F507f1f77bcf86cd799439041\u002Fverify-payment\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -H \"Authorization: Bearer eyJhbGc...\" \\\n  -d '{\"paymentIntentId\": \"pi_3NxABC2eZvKYlo2C1ABC1234\"}'\n",[347,926,927,944,956,968],{"__ignoreMap":488},[504,928,929,931,933,935,937,940,942],{"class":506,"line":507},[504,930,690],{"class":689},[504,932,693],{"class":532},[504,934,696],{"class":532},[504,936,529],{"class":510},[504,938,939],{"class":532},"http:\u002F\u002Flocalhost:4001\u002Fapi\u002Fv1\u002Fstripe\u002Fbookings\u002F507f1f77bcf86cd799439041\u002Fverify-payment",[504,941,523],{"class":510},[504,943,707],{"class":706},[504,945,946,948,950,952,954],{"class":506,"line":514},[504,947,712],{"class":532},[504,949,529],{"class":510},[504,951,717],{"class":532},[504,953,523],{"class":510},[504,955,707],{"class":706},[504,957,958,960,962,964,966],{"class":506,"line":541},[504,959,712],{"class":532},[504,961,529],{"class":510},[504,963,730],{"class":532},[504,965,523],{"class":510},[504,967,707],{"class":706},[504,969,970,973,976,979],{"class":506,"line":561},[504,971,972],{"class":532},"  -d",[504,974,975],{"class":510}," '",[504,977,978],{"class":532},"{\"paymentIntentId\": \"pi_3NxABC2eZvKYlo2C1ABC1234\"}",[504,980,981],{"class":510},"'\n",[351,983],{},[354,985,427,987,990],{"id":986},"post-apiv1stripecreate-subscription-intent-create-subscription-payment-intent",[347,988,989],{},"\u002Fapi\u002Fv1\u002Fstripe\u002Fcreate-subscription-intent"," — Create Subscription Payment Intent",[343,992,993,995,996,998,448,1000,452,1003,1005],{},[389,994,436],{}," Public (no authentication required)",[443,997],{},[389,999,447],{},[347,1001,1002],{},"cms-booki-web-app",[389,1004,455],{}," guest\u002Fowner (during onboarding)",[343,1007,1008,1010,1011,1013],{},[389,1009,469],{}," Create a Stripe PaymentIntent for an organization subscription. Called during owner registration before the account is created. Returns a ",[347,1012,420],{}," for Stripe.js.",[475,1015,478],{"id":1016},"request-2",[480,1018,1020],{"className":498,"code":1019,"language":500,"meta":488,"style":488},"{\n  \"email\": \"owner@example.com\",\n  \"pricePerBranch\": 999,\n  \"branchCount\": 1,\n  \"interval\": \"monthly\",\n  \"trialDays\": 90,\n  \"registrationData\": {}\n}\n",[347,1021,1022,1026,1046,1062,1078,1099,1116,1131],{"__ignoreMap":488},[504,1023,1024],{"class":506,"line":507},[504,1025,511],{"class":510},[504,1027,1028,1030,1033,1035,1037,1039,1042,1044],{"class":506,"line":514},[504,1029,517],{"class":510},[504,1031,1032],{"class":520},"email",[504,1034,523],{"class":510},[504,1036,526],{"class":510},[504,1038,529],{"class":510},[504,1040,1041],{"class":532},"owner@example.com",[504,1043,523],{"class":510},[504,1045,538],{"class":510},[504,1047,1048,1050,1053,1055,1057,1060],{"class":506,"line":541},[504,1049,517],{"class":510},[504,1051,1052],{"class":520},"pricePerBranch",[504,1054,523],{"class":510},[504,1056,526],{"class":510},[504,1058,1059],{"class":597}," 999",[504,1061,538],{"class":510},[504,1063,1064,1066,1069,1071,1073,1076],{"class":506,"line":561},[504,1065,517],{"class":510},[504,1067,1068],{"class":520},"branchCount",[504,1070,523],{"class":510},[504,1072,526],{"class":510},[504,1074,1075],{"class":597}," 1",[504,1077,538],{"class":510},[504,1079,1081,1083,1086,1088,1090,1092,1095,1097],{"class":506,"line":1080},5,[504,1082,517],{"class":510},[504,1084,1085],{"class":520},"interval",[504,1087,523],{"class":510},[504,1089,526],{"class":510},[504,1091,529],{"class":510},[504,1093,1094],{"class":532},"monthly",[504,1096,523],{"class":510},[504,1098,538],{"class":510},[504,1100,1102,1104,1107,1109,1111,1114],{"class":506,"line":1101},6,[504,1103,517],{"class":510},[504,1105,1106],{"class":520},"trialDays",[504,1108,523],{"class":510},[504,1110,526],{"class":510},[504,1112,1113],{"class":597}," 90",[504,1115,538],{"class":510},[504,1117,1119,1121,1124,1126,1128],{"class":506,"line":1118},7,[504,1120,517],{"class":510},[504,1122,1123],{"class":520},"registrationData",[504,1125,523],{"class":510},[504,1127,526],{"class":510},[504,1129,1130],{"class":510}," {}\n",[504,1132,1134],{"class":506,"line":1133},8,[504,1135,564],{"class":510},[343,1137,801],{},[803,1139,1140,1145,1150,1155,1169,1174],{},[806,1141,1142,1144],{},[347,1143,1032],{}," (string, required): Owner email address",[806,1146,1147,1149],{},[347,1148,1052],{}," (number, required): Price per branch in PHP (min 0)",[806,1151,1152,1154],{},[347,1153,1068],{}," (number, required): Number of branches (min 1)",[806,1156,1157,1159,1160,1162,1163,1165,1166],{},[347,1158,1085],{}," (string, optional, default: ",[347,1161,1094],{},"): ",[347,1164,1094],{}," | ",[347,1167,1168],{},"annually",[806,1170,1171,1173],{},[347,1172,1106],{}," (number, optional, default: 90): Trial period in days",[806,1175,1176,1178],{},[347,1177,1123],{}," (object, optional): Additional data to carry through the registration flow",[475,1180,495],{"id":1181},"response-201-created-1",[480,1183,1184],{"className":498,"code":499,"language":500,"meta":488,"style":488},[347,1185,1186,1190,1208,1224],{"__ignoreMap":488},[504,1187,1188],{"class":506,"line":507},[504,1189,511],{"class":510},[504,1191,1192,1194,1196,1198,1200,1202,1204,1206],{"class":506,"line":514},[504,1193,517],{"class":510},[504,1195,420],{"class":520},[504,1197,523],{"class":510},[504,1199,526],{"class":510},[504,1201,529],{"class":510},[504,1203,533],{"class":532},[504,1205,523],{"class":510},[504,1207,538],{"class":510},[504,1209,1210,1212,1214,1216,1218,1220,1222],{"class":506,"line":541},[504,1211,517],{"class":510},[504,1213,546],{"class":520},[504,1215,523],{"class":510},[504,1217,526],{"class":510},[504,1219,529],{"class":510},[504,1221,555],{"class":532},[504,1223,558],{"class":510},[504,1225,1226],{"class":506,"line":561},[504,1227,564],{"class":510},[475,1229,677],{"id":1230},"curl-example-2",[480,1232,1234],{"className":680,"code":1233,"language":682,"meta":488,"style":488},"curl -X POST \"http:\u002F\u002Flocalhost:4001\u002Fapi\u002Fv1\u002Fstripe\u002Fcreate-subscription-intent\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"email\": \"owner@example.com\",\n    \"pricePerBranch\": 999,\n    \"branchCount\": 1,\n    \"interval\": \"monthly\"\n  }'\n",[347,1235,1236,1253,1265,1273,1278,1283,1288,1293],{"__ignoreMap":488},[504,1237,1238,1240,1242,1244,1246,1249,1251],{"class":506,"line":507},[504,1239,690],{"class":689},[504,1241,693],{"class":532},[504,1243,696],{"class":532},[504,1245,529],{"class":510},[504,1247,1248],{"class":532},"http:\u002F\u002Flocalhost:4001\u002Fapi\u002Fv1\u002Fstripe\u002Fcreate-subscription-intent",[504,1250,523],{"class":510},[504,1252,707],{"class":706},[504,1254,1255,1257,1259,1261,1263],{"class":506,"line":514},[504,1256,712],{"class":532},[504,1258,529],{"class":510},[504,1260,717],{"class":532},[504,1262,523],{"class":510},[504,1264,707],{"class":706},[504,1266,1267,1269,1271],{"class":506,"line":541},[504,1268,972],{"class":532},[504,1270,975],{"class":510},[504,1272,511],{"class":532},[504,1274,1275],{"class":506,"line":561},[504,1276,1277],{"class":532},"    \"email\": \"owner@example.com\",\n",[504,1279,1280],{"class":506,"line":1080},[504,1281,1282],{"class":532},"    \"pricePerBranch\": 999,\n",[504,1284,1285],{"class":506,"line":1101},[504,1286,1287],{"class":532},"    \"branchCount\": 1,\n",[504,1289,1290],{"class":506,"line":1118},[504,1291,1292],{"class":532},"    \"interval\": \"monthly\"\n",[504,1294,1295,1298],{"class":506,"line":1133},[504,1296,1297],{"class":532},"  }",[504,1299,981],{"class":510},[351,1301],{},[354,1303,427,1305,1308],{"id":1304},"post-apiv1stripeverify-subscription-verify-subscription-payment",[347,1306,1307],{},"\u002Fapi\u002Fv1\u002Fstripe\u002Fverify-subscription"," — Verify Subscription Payment",[343,1310,1311,995,1313,1315,448,1317,452,1319,1005],{},[389,1312,436],{},[443,1314],{},[389,1316,447],{},[347,1318,1002],{},[389,1320,455],{},[343,1322,1323,1325],{},[389,1324,469],{}," After the owner completes subscription payment via Stripe.js, call this to confirm the payment and finalize the subscription setup.",[475,1327,478],{"id":1328},"request-3",[480,1330,1331],{"className":498,"code":772,"language":500,"meta":488,"style":488},[347,1332,1333,1337,1353],{"__ignoreMap":488},[504,1334,1335],{"class":506,"line":507},[504,1336,511],{"class":510},[504,1338,1339,1341,1343,1345,1347,1349,1351],{"class":506,"line":514},[504,1340,517],{"class":510},[504,1342,546],{"class":520},[504,1344,523],{"class":510},[504,1346,526],{"class":510},[504,1348,529],{"class":510},[504,1350,555],{"class":532},[504,1352,558],{"class":510},[504,1354,1355],{"class":506,"line":541},[504,1356,564],{"class":510},[343,1358,801],{},[803,1360,1361],{},[806,1362,1363,1365],{},[347,1364,546],{}," (string, required): The PaymentIntent ID from the subscription intent step",[475,1367,814],{"id":1368},"response-200-ok-1",[480,1370,1372],{"className":498,"code":1371,"language":500,"meta":488,"style":488},"{\n  \"message\": \"Subscription payment verified successfully.\"\n}\n",[347,1373,1374,1378,1395],{"__ignoreMap":488},[504,1375,1376],{"class":506,"line":507},[504,1377,511],{"class":510},[504,1379,1380,1382,1384,1386,1388,1390,1393],{"class":506,"line":514},[504,1381,517],{"class":510},[504,1383,607],{"class":520},[504,1385,523],{"class":510},[504,1387,526],{"class":510},[504,1389,529],{"class":510},[504,1391,1392],{"class":532},"Subscription payment verified successfully.",[504,1394,558],{"class":510},[504,1396,1397],{"class":506,"line":541},[504,1398,564],{"class":510},[475,1400,677],{"id":1401},"curl-example-3",[480,1403,1405],{"className":680,"code":1404,"language":682,"meta":488,"style":488},"curl -X POST \"http:\u002F\u002Flocalhost:4001\u002Fapi\u002Fv1\u002Fstripe\u002Fverify-subscription\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"paymentIntentId\": \"pi_3NxABC2eZvKYlo2C1ABC1234\"}'\n",[347,1406,1407,1424,1436],{"__ignoreMap":488},[504,1408,1409,1411,1413,1415,1417,1420,1422],{"class":506,"line":507},[504,1410,690],{"class":689},[504,1412,693],{"class":532},[504,1414,696],{"class":532},[504,1416,529],{"class":510},[504,1418,1419],{"class":532},"http:\u002F\u002Flocalhost:4001\u002Fapi\u002Fv1\u002Fstripe\u002Fverify-subscription",[504,1421,523],{"class":510},[504,1423,707],{"class":706},[504,1425,1426,1428,1430,1432,1434],{"class":506,"line":514},[504,1427,712],{"class":532},[504,1429,529],{"class":510},[504,1431,717],{"class":532},[504,1433,523],{"class":510},[504,1435,707],{"class":706},[504,1437,1438,1440,1442,1444],{"class":506,"line":541},[504,1439,972],{"class":532},[504,1441,975],{"class":510},[504,1443,978],{"class":532},[504,1445,981],{"class":510},[351,1447],{},[354,1449,427,1451,1454],{"id":1450},"post-apiv1stripewebhook-stripe-webhook-receiver",[347,1452,1453],{},"\u002Fapi\u002Fv1\u002Fstripe\u002Fwebhook"," — Stripe Webhook Receiver",[343,1456,1457,1459,1460,1462,1464],{},[389,1458,436],{}," Public (Stripe signature verification)",[443,1461],{},[389,1463,447],{}," Stripe payment gateway (server-to-server)",[343,1466,1467,1469,1470,1473,1474,1477],{},[389,1468,469],{}," Receives webhook events from Stripe (e.g., ",[347,1471,1472],{},"payment_intent.succeeded",", ",[347,1475,1476],{},"payment_intent.payment_failed","). This endpoint is called by Stripe's servers, not by the frontend.",[1479,1480,1481],"blockquote",{},[343,1482,1483,1486,1487,1490,1491,1494],{},[389,1484,1485],{},"Important:"," Stripe sends raw request bodies. This route is registered before ",[347,1488,1489],{},"express.json()"," in ",[347,1492,1493],{},"app.ts"," so the raw body is preserved for signature verification.",[475,1496,478],{"id":1497},"request-4",[480,1499,1502],{"className":1500,"code":1501,"language":485},[483],"POST \u002Fapi\u002Fv1\u002Fstripe\u002Fwebhook\nHeaders:\n  stripe-signature: t=1700000000,v1=abc123...\n",[347,1503,1501],{"__ignoreMap":488},[480,1505,1507],{"className":498,"code":1506,"language":500,"meta":488,"style":488},"{\n  \"id\": \"evt_3NxABC2eZvKYlo2C0001\",\n  \"type\": \"payment_intent.succeeded\",\n  \"data\": {\n    \"object\": {\n      \"id\": \"pi_3NxABC2eZvKYlo2C1ABC1234\",\n      \"amount\": 45000,\n      \"status\": \"succeeded\"\n    }\n  }\n}\n",[347,1508,1509,1513,1533,1552,1566,1580,1599,1615,1633,1639,1645],{"__ignoreMap":488},[504,1510,1511],{"class":506,"line":507},[504,1512,511],{"class":510},[504,1514,1515,1517,1520,1522,1524,1526,1529,1531],{"class":506,"line":514},[504,1516,517],{"class":510},[504,1518,1519],{"class":520},"id",[504,1521,523],{"class":510},[504,1523,526],{"class":510},[504,1525,529],{"class":510},[504,1527,1528],{"class":532},"evt_3NxABC2eZvKYlo2C0001",[504,1530,523],{"class":510},[504,1532,538],{"class":510},[504,1534,1535,1537,1540,1542,1544,1546,1548,1550],{"class":506,"line":541},[504,1536,517],{"class":510},[504,1538,1539],{"class":520},"type",[504,1541,523],{"class":510},[504,1543,526],{"class":510},[504,1545,529],{"class":510},[504,1547,1472],{"class":532},[504,1549,523],{"class":510},[504,1551,538],{"class":510},[504,1553,1554,1556,1559,1561,1563],{"class":506,"line":561},[504,1555,517],{"class":510},[504,1557,1558],{"class":520},"data",[504,1560,523],{"class":510},[504,1562,526],{"class":510},[504,1564,1565],{"class":510}," {\n",[504,1567,1568,1571,1574,1576,1578],{"class":506,"line":1080},[504,1569,1570],{"class":510},"    \"",[504,1572,1573],{"class":689},"object",[504,1575,523],{"class":510},[504,1577,526],{"class":510},[504,1579,1565],{"class":510},[504,1581,1582,1585,1587,1589,1591,1593,1595,1597],{"class":506,"line":1101},[504,1583,1584],{"class":510},"      \"",[504,1586,1519],{"class":597},[504,1588,523],{"class":510},[504,1590,526],{"class":510},[504,1592,529],{"class":510},[504,1594,555],{"class":532},[504,1596,523],{"class":510},[504,1598,538],{"class":510},[504,1600,1601,1603,1606,1608,1610,1613],{"class":506,"line":1118},[504,1602,1584],{"class":510},[504,1604,1605],{"class":597},"amount",[504,1607,523],{"class":510},[504,1609,526],{"class":510},[504,1611,1612],{"class":597}," 45000",[504,1614,538],{"class":510},[504,1616,1617,1619,1622,1624,1626,1628,1631],{"class":506,"line":1133},[504,1618,1584],{"class":510},[504,1620,1621],{"class":597},"status",[504,1623,523],{"class":510},[504,1625,526],{"class":510},[504,1627,529],{"class":510},[504,1629,1630],{"class":532},"succeeded",[504,1632,558],{"class":510},[504,1634,1636],{"class":506,"line":1635},9,[504,1637,1638],{"class":510},"    }\n",[504,1640,1642],{"class":506,"line":1641},10,[504,1643,1644],{"class":510},"  }\n",[504,1646,1648],{"class":506,"line":1647},11,[504,1649,564],{"class":510},[475,1651,814],{"id":1652},"response-200-ok-2",[480,1654,1656],{"className":498,"code":1655,"language":500,"meta":488,"style":488},"{\n  \"received\": true\n}\n",[347,1657,1658,1662,1676],{"__ignoreMap":488},[504,1659,1660],{"class":506,"line":507},[504,1661,511],{"class":510},[504,1663,1664,1666,1669,1671,1673],{"class":506,"line":514},[504,1665,517],{"class":510},[504,1667,1668],{"class":520},"received",[504,1670,523],{"class":510},[504,1672,526],{"class":510},[504,1674,1675],{"class":510}," true\n",[504,1677,1678],{"class":506,"line":541},[504,1679,564],{"class":510},[1479,1681,1682],{},[343,1683,1684,1687],{},[389,1685,1686],{},"Note:"," This endpoint is for Stripe's internal use. Do not call it from the frontend.",[1689,1690,1691],"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":488,"searchDepth":507,"depth":514,"links":1693},[1694,1695,1702,1709,1715,1721],{"id":356,"depth":514,"text":357},{"id":426,"depth":514,"text":1696,"children":1697},"POST \u002Fapi\u002Fv1\u002Fstripe\u002Fbookings\u002F:id\u002Fpayment-intent — Create Booking Payment Intent",[1698,1699,1700,1701],{"id":477,"depth":541,"text":478},{"id":494,"depth":541,"text":495},{"id":567,"depth":541,"text":568},{"id":676,"depth":541,"text":677},{"id":737,"depth":514,"text":1703,"children":1704},"POST \u002Fapi\u002Fv1\u002Fstripe\u002Fbookings\u002F:id\u002Fverify-payment — Verify Booking Payment",[1705,1706,1707,1708],{"id":769,"depth":541,"text":478},{"id":813,"depth":541,"text":814},{"id":867,"depth":541,"text":568},{"id":921,"depth":541,"text":677},{"id":986,"depth":514,"text":1710,"children":1711},"POST \u002Fapi\u002Fv1\u002Fstripe\u002Fcreate-subscription-intent — Create Subscription Payment Intent",[1712,1713,1714],{"id":1016,"depth":541,"text":478},{"id":1181,"depth":541,"text":495},{"id":1230,"depth":541,"text":677},{"id":1304,"depth":514,"text":1716,"children":1717},"POST \u002Fapi\u002Fv1\u002Fstripe\u002Fverify-subscription — Verify Subscription Payment",[1718,1719,1720],{"id":1328,"depth":541,"text":478},{"id":1368,"depth":541,"text":814},{"id":1401,"depth":541,"text":677},{"id":1450,"depth":514,"text":1722,"children":1723},"POST \u002Fapi\u002Fv1\u002Fstripe\u002Fwebhook — Stripe Webhook Receiver",[1724,1725],{"id":1497,"depth":541,"text":478},{"id":1652,"depth":541,"text":814},"Stripe payment endpoints for booking payments, subscription intents, and webhook handling.","md",null,{},{"icon":200},{"title":245,"description":1726},"xotyOjYVAPi7wLnjIfiW4hsNoRnpf_9CQcuKJmdnYQw",[1734,1736],{"title":240,"path":241,"stem":242,"description":1735,"icon":243,"children":-1},"Owner endpoints for viewing customer profiles, booking history, and managing relationships.",{"title":249,"path":250,"stem":251,"description":1737,"icon":200,"children":-1},"Admin endpoints for billing management, subscriptions, invoices, and revenue tracking.",1783416091346]