[{"data":1,"prerenderedAt":5193},["ShallowReactive",2],{"navigation_docs":3,"-docs-guides-commerce-purchase-approvals":2399},[4,82,446,500,736,2117],{"title":5,"path":6,"stem":7,"children":8},"Getting Started","\u002Fdocs\u002Fgetting-started","docs\u002Fgetting-started\u002Findex",[9,10,17,23,30,37,44,51,57,63,69,75],{"title":5,"path":6,"stem":7},{"title":11,"path":12,"stem":13,"children":14,"icon":16},"Apps and Sites","\u002Fdocs\u002Fgetting-started\u002Fapps-and-sites","docs\u002Fgetting-started\u002Fapps-and-sites\u002Findex",[15],{"title":11,"path":12,"stem":13,"icon":16},"i-lucide-columns-2",{"title":18,"path":19,"stem":20,"children":21},"Architecture Overview","\u002Fdocs\u002Fgetting-started\u002Farchitecture","docs\u002Fgetting-started\u002Farchitecture\u002Findex",[22],{"title":18,"path":19,"stem":20},{"title":24,"path":25,"stem":26,"children":27,"icon":29},"Bring an existing frontend","\u002Fdocs\u002Fgetting-started\u002Fbring-an-existing-frontend","docs\u002Fgetting-started\u002Fbring-an-existing-frontend\u002Findex",[28],{"title":24,"path":25,"stem":26,"icon":29},"i-lucide-arrow-right-left",{"title":31,"path":32,"stem":33,"children":34,"icon":36},"Concepts","\u002Fdocs\u002Fgetting-started\u002Fconcepts","docs\u002Fgetting-started\u002Fconcepts\u002Findex",[35],{"title":31,"path":32,"stem":33,"icon":36},"i-lucide-shapes",{"title":38,"path":39,"stem":40,"children":41,"icon":43},"Frontend stacks","\u002Fdocs\u002Fgetting-started\u002Ffrontend-stacks","docs\u002Fgetting-started\u002Ffrontend-stacks\u002Findex",[42],{"title":38,"path":39,"stem":40,"icon":43},"i-lucide-layers",{"title":45,"path":46,"stem":47,"children":48,"icon":50},"Get Help","\u002Fdocs\u002Fgetting-started\u002Fget-help","docs\u002Fgetting-started\u002Fget-help\u002Findex",[49],{"title":45,"path":46,"stem":47,"icon":50},"i-lucide-life-buoy",{"title":52,"path":53,"stem":54,"children":55},"Glossary","\u002Fdocs\u002Fgetting-started\u002Fglossary","docs\u002Fgetting-started\u002Fglossary\u002Findex",[56],{"title":52,"path":53,"stem":54},{"title":58,"path":59,"stem":60,"children":61},"Platform Overview","\u002Fdocs\u002Fgetting-started\u002Fplatform-overview","docs\u002Fgetting-started\u002Fplatform-overview\u002Findex",[62],{"title":58,"path":59,"stem":60},{"title":64,"path":65,"stem":66,"children":67},"Prerequisites","\u002Fdocs\u002Fgetting-started\u002Fprerequisites","docs\u002Fgetting-started\u002Fprerequisites\u002Findex",[68],{"title":64,"path":65,"stem":66},{"title":70,"path":71,"stem":72,"children":73},"Your First App in 15 Minutes","\u002Fdocs\u002Fgetting-started\u002Fquick-start","docs\u002Fgetting-started\u002Fquick-start\u002Findex",[74],{"title":70,"path":71,"stem":72},{"title":76,"path":77,"stem":78,"children":79,"icon":81},"Security and trust","\u002Fdocs\u002Fgetting-started\u002Fsecurity-and-trust","docs\u002Fgetting-started\u002Fsecurity-and-trust\u002Findex",[80],{"title":76,"path":77,"stem":78,"icon":81},"i-lucide-shield-check",{"title":83,"path":84,"stem":85,"children":86},"Guides","\u002Fdocs\u002Fguides","docs\u002Fguides\u002Findex",[87,88,151,249,256,310,364,391],{"title":83,"path":84,"stem":85},{"title":89,"path":90,"stem":91,"children":92,"icon":94},"Build an App","\u002Fdocs\u002Fguides\u002Fapps","docs\u002Fguides\u002Fapps\u002Findex",[93,95,102,109,116,123,130,137,144],{"title":89,"path":90,"stem":91,"icon":94},"i-lucide-layout-grid",{"title":96,"path":97,"stem":98,"children":99,"icon":101},"Give your App a Cockpit screen","\u002Fdocs\u002Fguides\u002Fapps\u002Fadd-a-cockpit-screen","docs\u002Fguides\u002Fapps\u002Fadd-a-cockpit-screen\u002Findex",[100],{"title":96,"path":97,"stem":98,"icon":101},"i-lucide-layout-dashboard",{"title":103,"path":104,"stem":105,"children":106,"icon":108},"Add a data model","\u002Fdocs\u002Fguides\u002Fapps\u002Fadd-a-data-model","docs\u002Fguides\u002Fapps\u002Fadd-a-data-model\u002Findex",[107],{"title":103,"path":104,"stem":105,"icon":108},"i-lucide-database",{"title":110,"path":111,"stem":112,"children":113,"icon":115},"Build your first App","\u002Fdocs\u002Fguides\u002Fapps\u002Fbuild-your-first-app","docs\u002Fguides\u002Fapps\u002Fbuild-your-first-app\u002Findex",[114],{"title":110,"path":111,"stem":112,"icon":115},"i-lucide-hammer",{"title":117,"path":118,"stem":119,"children":120,"icon":122},"Deploy and verify an App","\u002Fdocs\u002Fguides\u002Fapps\u002Fdeploy-with-the-cli","docs\u002Fguides\u002Fapps\u002Fdeploy-with-the-cli\u002Findex",[121],{"title":117,"path":118,"stem":119,"icon":122},"i-lucide-square-terminal",{"title":124,"path":125,"stem":126,"children":127,"icon":129},"Publish a business event from your App","\u002Fdocs\u002Fguides\u002Fapps\u002Fpublish-a-business-event","docs\u002Fguides\u002Fapps\u002Fpublish-a-business-event\u002Findex",[128],{"title":124,"path":125,"stem":126,"icon":129},"i-lucide-megaphone",{"title":131,"path":132,"stem":133,"children":134,"icon":136},"Publish on the Marketplace","\u002Fdocs\u002Fguides\u002Fapps\u002Fpublish-on-the-marketplace","docs\u002Fguides\u002Fapps\u002Fpublish-on-the-marketplace\u002Findex",[135],{"title":131,"path":132,"stem":133,"icon":136},"i-lucide-store",{"title":138,"path":139,"stem":140,"children":141,"icon":143},"React to events and run scheduled work in your App","\u002Fdocs\u002Fguides\u002Fapps\u002Freact-to-events-and-run-scheduled-work","docs\u002Fguides\u002Fapps\u002Freact-to-events-and-run-scheduled-work\u002Findex",[142],{"title":138,"path":139,"stem":140,"icon":143},"i-lucide-timer",{"title":145,"path":146,"stem":147,"children":148,"icon":150},"Ship a schema change","\u002Fdocs\u002Fguides\u002Fapps\u002Fship-a-schema-change","docs\u002Fguides\u002Fapps\u002Fship-a-schema-change\u002Findex",[149],{"title":145,"path":146,"stem":147,"icon":150},"i-lucide-git-branch",{"title":152,"path":153,"stem":154,"children":155,"icon":157},"Set up selling","\u002Fdocs\u002Fguides\u002Fcommerce","docs\u002Fguides\u002Fcommerce\u002Findex",[156,158,165,172,179,186,193,200,207,214,221,228,235,242],{"title":152,"path":153,"stem":154,"icon":157},"i-lucide-shopping-cart",{"title":159,"path":160,"stem":161,"children":162,"icon":164},"Set up B2B pricing","\u002Fdocs\u002Fguides\u002Fcommerce\u002Fb2b-pricing","docs\u002Fguides\u002Fcommerce\u002Fb2b-pricing\u002Findex",[163],{"title":159,"path":160,"stem":161,"icon":164},"i-lucide-circle-dollar-sign",{"title":166,"path":167,"stem":168,"children":169,"icon":171},"Give buyer staff the right permissions","\u002Fdocs\u002Fguides\u002Fcommerce\u002Fbuyer-permissions","docs\u002Fguides\u002Fcommerce\u002Fbuyer-permissions\u002Findex",[170],{"title":166,"path":167,"stem":168,"icon":171},"i-lucide-user-cog",{"title":173,"path":174,"stem":175,"children":176,"icon":178},"Confirm invoice payments","\u002Fdocs\u002Fguides\u002Fcommerce\u002Fconfirm-invoice-payments","docs\u002Fguides\u002Fcommerce\u002Fconfirm-invoice-payments\u002Findex",[177],{"title":173,"path":174,"stem":175,"icon":178},"i-lucide-receipt",{"title":180,"path":181,"stem":182,"children":183,"icon":185},"Model a catalog with attributes, families and variants","\u002Fdocs\u002Fguides\u002Fcommerce\u002Fmodel-a-catalog","docs\u002Fguides\u002Fcommerce\u002Fmodel-a-catalog\u002Findex",[184],{"title":180,"path":181,"stem":182,"icon":185},"i-lucide-boxes",{"title":187,"path":188,"stem":189,"children":190,"icon":192},"Order and quote numbers","\u002Fdocs\u002Fguides\u002Fcommerce\u002Fnumber-ranges","docs\u002Fguides\u002Fcommerce\u002Fnumber-ranges\u002Findex",[191],{"title":187,"path":188,"stem":189,"icon":192},"i-lucide-hash",{"title":194,"path":195,"stem":196,"children":197,"icon":199},"Manage product images and documents","\u002Fdocs\u002Fguides\u002Fcommerce\u002Fproduct-media","docs\u002Fguides\u002Fcommerce\u002Fproduct-media\u002Findex",[198],{"title":194,"path":195,"stem":196,"icon":199},"i-lucide-image",{"title":201,"path":202,"stem":203,"children":204,"icon":206},"Run promotions and voucher codes","\u002Fdocs\u002Fguides\u002Fcommerce\u002Fpromotions-and-vouchers","docs\u002Fguides\u002Fcommerce\u002Fpromotions-and-vouchers\u002Findex",[205],{"title":201,"path":202,"stem":203,"icon":206},"i-lucide-ticket-percent",{"title":208,"path":209,"stem":210,"children":211,"icon":213},"Set up purchase approvals","\u002Fdocs\u002Fguides\u002Fcommerce\u002Fpurchase-approvals","docs\u002Fguides\u002Fcommerce\u002Fpurchase-approvals\u002Findex",[212],{"title":208,"path":209,"stem":210,"icon":213},"i-lucide-stamp",{"title":215,"path":216,"stem":217,"children":218,"icon":220},"Turn an accepted quote into an order","\u002Fdocs\u002Fguides\u002Fcommerce\u002Fquotes-to-orders","docs\u002Fguides\u002Fcommerce\u002Fquotes-to-orders\u002Findex",[219],{"title":215,"path":216,"stem":217,"icon":220},"i-lucide-handshake",{"title":222,"path":223,"stem":224,"children":225,"icon":227},"Build categories from rules","\u002Fdocs\u002Fguides\u002Fcommerce\u002Frule-based-categories","docs\u002Fguides\u002Fcommerce\u002Frule-based-categories\u002Findex",[226],{"title":222,"path":223,"stem":224,"icon":227},"i-lucide-list-filter",{"title":229,"path":230,"stem":231,"children":232,"icon":234},"Ship, cancel and return an order","\u002Fdocs\u002Fguides\u002Fcommerce\u002Fship-cancel-and-return","docs\u002Fguides\u002Fcommerce\u002Fship-cancel-and-return\u002Findex",[233],{"title":229,"path":230,"stem":231,"icon":234},"i-lucide-package-check",{"title":236,"path":237,"stem":238,"children":239,"icon":241},"Set up shipping rates and tax","\u002Fdocs\u002Fguides\u002Fcommerce\u002Fshipping-rates","docs\u002Fguides\u002Fcommerce\u002Fshipping-rates\u002Findex",[240],{"title":236,"path":237,"stem":238,"icon":241},"i-lucide-truck",{"title":243,"path":244,"stem":245,"children":246,"icon":248},"Connect a payment provider and take a test payment","\u002Fdocs\u002Fguides\u002Fcommerce\u002Ftest-payments","docs\u002Fguides\u002Fcommerce\u002Ftest-payments\u002Findex",[247],{"title":243,"path":244,"stem":245,"icon":248},"i-lucide-credit-card",{"title":250,"path":251,"stem":252,"children":253,"icon":255},"Start from an example","\u002Fdocs\u002Fguides\u002Fexamples","docs\u002Fguides\u002Fexamples\u002Findex",[254],{"title":250,"path":251,"stem":252,"icon":255},"i-lucide-folder-code",{"title":257,"path":258,"stem":259,"children":260,"icon":262},"Connect a system","\u002Fdocs\u002Fguides\u002Fintegrations","docs\u002Fguides\u002Fintegrations\u002Findex",[261,263,269,276,283,289,296,303],{"title":257,"path":258,"stem":259,"icon":262},"i-lucide-plug",{"title":264,"path":265,"stem":266,"children":267,"icon":29},"Connect a procurement system by punchout","\u002Fdocs\u002Fguides\u002Fintegrations\u002Fconnect-by-punchout","docs\u002Fguides\u002Fintegrations\u002Fconnect-by-punchout\u002Findex",[268],{"title":264,"path":265,"stem":266,"icon":29},{"title":270,"path":271,"stem":272,"children":273,"icon":275},"Hand an order to the ERP","\u002Fdocs\u002Fguides\u002Fintegrations\u002Fhand-an-order-to-the-erp","docs\u002Fguides\u002Fintegrations\u002Fhand-an-order-to-the-erp\u002Findex",[274],{"title":270,"path":271,"stem":272,"icon":275},"i-lucide-arrow-left-right",{"title":277,"path":278,"stem":279,"children":280,"icon":282},"Import a BMECAT catalog","\u002Fdocs\u002Fguides\u002Fintegrations\u002Fimport-a-bmecat-catalog","docs\u002Fguides\u002Fintegrations\u002Fimport-a-bmecat-catalog\u002Findex",[281],{"title":277,"path":278,"stem":279,"icon":282},"i-lucide-package-plus",{"title":284,"path":285,"stem":286,"children":287,"icon":50},"Keep an Integration Studio workflow running","\u002Fdocs\u002Fguides\u002Fintegrations\u002Fkeep-a-workflow-running","docs\u002Fguides\u002Fintegrations\u002Fkeep-a-workflow-running\u002Findex",[288],{"title":284,"path":285,"stem":286,"icon":50},{"title":290,"path":291,"stem":292,"children":293,"icon":295},"Receive platform events at your own endpoint","\u002Fdocs\u002Fguides\u002Fintegrations\u002Freceive-platform-events","docs\u002Fguides\u002Fintegrations\u002Freceive-platform-events\u002Findex",[294],{"title":290,"path":291,"stem":292,"icon":295},"i-lucide-webhook",{"title":297,"path":298,"stem":299,"children":300,"icon":302},"Recover abandoned carts with a workflow","\u002Fdocs\u002Fguides\u002Fintegrations\u002Frecover-abandoned-carts","docs\u002Fguides\u002Fintegrations\u002Frecover-abandoned-carts\u002Findex",[301],{"title":297,"path":298,"stem":299,"icon":302},"i-lucide-mail-check",{"title":304,"path":305,"stem":306,"children":307,"icon":309},"Send low-stock alerts to the ERP","\u002Fdocs\u002Fguides\u002Fintegrations\u002Fsend-low-stock-alerts-to-the-erp","docs\u002Fguides\u002Fintegrations\u002Fsend-low-stock-alerts-to-the-erp\u002Findex",[308],{"title":304,"path":305,"stem":306,"icon":309},"i-lucide-bell-ring",{"title":311,"path":312,"stem":313,"children":314,"icon":316},"Operate & go live","\u002Fdocs\u002Fguides\u002Foperate","docs\u002Fguides\u002Foperate\u002Findex",[315,317,323,330,337,344,351,357],{"title":311,"path":312,"stem":313,"icon":316},"i-lucide-activity",{"title":318,"path":319,"stem":320,"children":321,"icon":81},"Answer a customer's security questionnaire","\u002Fdocs\u002Fguides\u002Foperate\u002Fanswer-a-security-questionnaire","docs\u002Fguides\u002Foperate\u002Fanswer-a-security-questionnaire\u002Findex",[322],{"title":318,"path":319,"stem":320,"icon":81},{"title":324,"path":325,"stem":326,"children":327,"icon":329},"Debug a failed request","\u002Fdocs\u002Fguides\u002Foperate\u002Fdebug-a-failed-request","docs\u002Fguides\u002Foperate\u002Fdebug-a-failed-request\u002Findex",[328],{"title":324,"path":325,"stem":326,"icon":329},"i-lucide-bug",{"title":331,"path":332,"stem":333,"children":334,"icon":336},"Go live with a project","\u002Fdocs\u002Fguides\u002Foperate\u002Fgo-live-checklist","docs\u002Fguides\u002Foperate\u002Fgo-live-checklist\u002Findex",[335],{"title":331,"path":332,"stem":333,"icon":336},"i-lucide-list-checks",{"title":338,"path":339,"stem":340,"children":341,"icon":343},"Migrate from an existing shop","\u002Fdocs\u002Fguides\u002Foperate\u002Fmigrate-from-an-existing-shop","docs\u002Fguides\u002Foperate\u002Fmigrate-from-an-existing-shop\u002Findex",[342],{"title":338,"path":339,"stem":340,"icon":343},"i-lucide-route",{"title":345,"path":346,"stem":347,"children":348,"icon":350},"Size a launch","\u002Fdocs\u002Fguides\u002Foperate\u002Fplan-for-limits","docs\u002Fguides\u002Foperate\u002Fplan-for-limits\u002Findex",[349],{"title":345,"path":346,"stem":347,"icon":350},"i-lucide-gauge",{"title":352,"path":353,"stem":354,"children":355,"icon":336},"Script a bulk change","\u002Fdocs\u002Fguides\u002Foperate\u002Fscript-a-bulk-change","docs\u002Fguides\u002Foperate\u002Fscript-a-bulk-change\u002Findex",[356],{"title":352,"path":353,"stem":354,"icon":336},{"title":358,"path":359,"stem":360,"children":361,"icon":363},"Stay current","\u002Fdocs\u002Fguides\u002Foperate\u002Fstay-current","docs\u002Fguides\u002Foperate\u002Fstay-current\u002Findex",[362],{"title":358,"path":359,"stem":360,"icon":363},"i-lucide-refresh-cw",{"title":365,"path":366,"stem":367,"children":368,"icon":370},"Plan before you build","\u002Fdocs\u002Fguides\u002Fplan","docs\u002Fguides\u002Fplan\u002Findex",[369,371,378,385],{"title":365,"path":366,"stem":367,"icon":370},"i-lucide-map",{"title":372,"path":373,"stem":374,"children":375,"icon":377},"Choose a system of record","\u002Fdocs\u002Fguides\u002Fplan\u002Fchoose-a-system-of-record","docs\u002Fguides\u002Fplan\u002Fchoose-a-system-of-record\u002Findex",[376],{"title":372,"path":373,"stem":374,"icon":377},"i-lucide-network",{"title":379,"path":380,"stem":381,"children":382,"icon":384},"Choose an event surface","\u002Fdocs\u002Fguides\u002Fplan\u002Fchoose-an-event-surface","docs\u002Fguides\u002Fplan\u002Fchoose-an-event-surface\u002Findex",[383],{"title":379,"path":380,"stem":381,"icon":384},"i-lucide-signpost",{"title":386,"path":387,"stem":388,"children":389,"icon":343},"Choose where the logic goes","\u002Fdocs\u002Fguides\u002Fplan\u002Fchoose-where-the-logic-goes","docs\u002Fguides\u002Fplan\u002Fchoose-where-the-logic-goes\u002Findex",[390],{"title":386,"path":387,"stem":388,"icon":343},{"title":392,"path":393,"stem":394,"children":395,"icon":397},"Build a storefront","\u002Fdocs\u002Fguides\u002Fstorefronts","docs\u002Fguides\u002Fstorefronts\u002Findex",[396,398,405,412,419,426,432,439],{"title":392,"path":393,"stem":394,"icon":397},"i-lucide-paintbrush",{"title":399,"path":400,"stem":401,"children":402,"icon":404},"Brand a Theme with design tokens","\u002Fdocs\u002Fguides\u002Fstorefronts\u002Fbrand-with-tokens","docs\u002Fguides\u002Fstorefronts\u002Fbrand-with-tokens\u002Findex",[403],{"title":399,"path":400,"stem":401,"icon":404},"i-lucide-palette",{"title":406,"path":407,"stem":408,"children":409,"icon":411},"Build a block","\u002Fdocs\u002Fguides\u002Fstorefronts\u002Fbuild-a-block","docs\u002Fguides\u002Fstorefronts\u002Fbuild-a-block\u002Findex",[410],{"title":406,"path":407,"stem":408,"icon":411},"i-lucide-blocks",{"title":413,"path":414,"stem":415,"children":416,"icon":418},"Build your first Theme","\u002Fdocs\u002Fguides\u002Fstorefronts\u002Fbuild-your-first-theme","docs\u002Fguides\u002Fstorefronts\u002Fbuild-your-first-theme\u002Findex",[417],{"title":413,"path":414,"stem":415,"icon":418},"i-lucide-layout-template",{"title":420,"path":421,"stem":422,"children":423,"icon":425},"Connect your own frontend","\u002Fdocs\u002Fguides\u002Fstorefronts\u002Fconnect-a-frontend","docs\u002Fguides\u002Fstorefronts\u002Fconnect-a-frontend\u002Findex",[424],{"title":420,"path":421,"stem":422,"icon":425},"i-lucide-plug-zap",{"title":427,"path":428,"stem":429,"children":430,"icon":363},"Refresh price caches when a price list changes","\u002Fdocs\u002Fguides\u002Fstorefronts\u002Frefresh-price-caches","docs\u002Fguides\u002Fstorefronts\u002Frefresh-price-caches\u002Findex",[431],{"title":427,"path":428,"stem":429,"icon":363},{"title":433,"path":434,"stem":435,"children":436,"icon":438},"Reorder and quick order","\u002Fdocs\u002Fguides\u002Fstorefronts\u002Freorder-and-quick-order","docs\u002Fguides\u002Fstorefronts\u002Freorder-and-quick-order\u002Findex",[437],{"title":433,"path":434,"stem":435,"icon":438},"i-lucide-repeat",{"title":440,"path":441,"stem":442,"children":443,"icon":445},"Sign a buyer in from your server","\u002Fdocs\u002Fguides\u002Fstorefronts\u002Fsign-a-buyer-in","docs\u002Fguides\u002Fstorefronts\u002Fsign-a-buyer-in\u002Findex",[444],{"title":440,"path":441,"stem":442,"icon":445},"i-lucide-log-in",{"title":447,"path":448,"stem":449,"children":450},"SDKs","\u002Fdocs\u002Fsdks","docs\u002Fsdks\u002Findex",[451,452,458,464,470,476,482,488,494],{"title":447,"path":448,"stem":449},{"title":453,"path":454,"stem":455,"children":456},"App SDK","\u002Fdocs\u002Fsdks\u002Fapp-sdk","docs\u002Fsdks\u002Fapp-sdk\u002Findex",[457],{"title":453,"path":454,"stem":455},{"title":459,"path":460,"stem":461,"children":462},"CLI","\u002Fdocs\u002Fsdks\u002Fcli","docs\u002Fsdks\u002Fcli\u002Findex",[463],{"title":459,"path":460,"stem":461},{"title":465,"path":466,"stem":467,"children":468},"Design systems","\u002Fdocs\u002Fsdks\u002Fdesign-systems","docs\u002Fsdks\u002Fdesign-systems\u002Findex",[469],{"title":465,"path":466,"stem":467},{"title":471,"path":472,"stem":473,"children":474},"Integration Node SDK","\u002Fdocs\u002Fsdks\u002Fintegration-nodes","docs\u002Fsdks\u002Fintegration-nodes\u002Findex",[475],{"title":471,"path":472,"stem":473},{"title":477,"path":478,"stem":479,"children":480},"Node SDK","\u002Fdocs\u002Fsdks\u002Fnode","docs\u002Fsdks\u002Fnode\u002Findex",[481],{"title":477,"path":478,"stem":479},{"title":483,"path":484,"stem":485,"children":486},"PHP SDK","\u002Fdocs\u002Fsdks\u002Fphp","docs\u002Fsdks\u002Fphp\u002Findex",[487],{"title":483,"path":484,"stem":485},{"title":489,"path":490,"stem":491,"children":492,"icon":150},"Versioning","\u002Fdocs\u002Fsdks\u002Fversioning","docs\u002Fsdks\u002Fversioning\u002Findex",[493],{"title":489,"path":490,"stem":491,"icon":150},{"title":495,"path":496,"stem":497,"children":498},"Web \u002F JavaScript SDK","\u002Fdocs\u002Fsdks\u002Fweb","docs\u002Fsdks\u002Fweb\u002Findex",[499],{"title":495,"path":496,"stem":497},{"title":501,"path":502,"stem":503,"children":504},"Services","\u002Fdocs\u002Fservices","docs\u002Fservices\u002Findex",[505,506,542,549,579,585,609,616,670,718],{"title":501,"path":502,"stem":503},{"title":507,"path":508,"stem":509,"children":510},"API usage","\u002Fdocs\u002Fservices\u002Fapi-usage","docs\u002Fservices\u002Fapi-usage\u002Findex",[511,512,518,524,530,536],{"title":507,"path":508,"stem":509},{"title":513,"path":514,"stem":515,"children":516},"Errors","\u002Fdocs\u002Fservices\u002Fapi-usage\u002Ferrors","docs\u002Fservices\u002Fapi-usage\u002Ferrors\u002Findex",[517],{"title":513,"path":514,"stem":515},{"title":519,"path":520,"stem":521,"children":522},"Retries & idempotency","\u002Fdocs\u002Fservices\u002Fapi-usage\u002Fidempotency","docs\u002Fservices\u002Fapi-usage\u002Fidempotency\u002Findex",[523],{"title":519,"path":520,"stem":521},{"title":525,"path":526,"stem":527,"children":528},"Pagination & filtering","\u002Fdocs\u002Fservices\u002Fapi-usage\u002Fpagination","docs\u002Fservices\u002Fapi-usage\u002Fpagination\u002Findex",[529],{"title":525,"path":526,"stem":527},{"title":531,"path":532,"stem":533,"children":534},"Rate limits","\u002Fdocs\u002Fservices\u002Fapi-usage\u002Frate-limits","docs\u002Fservices\u002Fapi-usage\u002Frate-limits\u002Findex",[535],{"title":531,"path":532,"stem":533},{"title":537,"path":538,"stem":539,"children":540},"Versioning & stability","\u002Fdocs\u002Fservices\u002Fapi-usage\u002Fversioning","docs\u002Fservices\u002Fapi-usage\u002Fversioning\u002Findex",[541],{"title":537,"path":538,"stem":539},{"title":543,"path":544,"stem":545,"children":546,"icon":548},"Record history","\u002Fdocs\u002Fservices\u002Faudit","docs\u002Fservices\u002Faudit\u002Findex",[547],{"title":543,"path":544,"stem":545,"icon":548},"i-lucide-history",{"title":550,"path":551,"stem":552,"children":553},"Authentication","\u002Fdocs\u002Fservices\u002Fauth","docs\u002Fservices\u002Fauth\u002Findex",[554,555,561,567,573],{"title":550,"path":551,"stem":552},{"title":556,"path":557,"stem":558,"children":559},"API keys","\u002Fdocs\u002Fservices\u002Fauth\u002Fapi-keys","docs\u002Fservices\u002Fauth\u002Fapi-keys\u002Findex",[560],{"title":556,"path":557,"stem":558},{"title":562,"path":563,"stem":564,"children":565},"Multi-factor authentication","\u002Fdocs\u002Fservices\u002Fauth\u002Fmfa","docs\u002Fservices\u002Fauth\u002Fmfa\u002Findex",[566],{"title":562,"path":563,"stem":564},{"title":568,"path":569,"stem":570,"children":571},"Social sign-in","\u002Fdocs\u002Fservices\u002Fauth\u002Foauth2","docs\u002Fservices\u002Fauth\u002Foauth2\u002Findex",[572],{"title":568,"path":569,"stem":570},{"title":574,"path":575,"stem":576,"children":577},"Sessions","\u002Fdocs\u002Fservices\u002Fauth\u002Fsessions","docs\u002Fservices\u002Fauth\u002Fsessions\u002Findex",[578],{"title":574,"path":575,"stem":576},{"title":580,"path":581,"stem":582,"children":583},"Avatars","\u002Fdocs\u002Fservices\u002Favatars","docs\u002Fservices\u002Favatars\u002Findex",[584],{"title":580,"path":581,"stem":582},{"title":586,"path":587,"stem":588,"children":589},"Events","\u002Fdocs\u002Fservices\u002Fevents","docs\u002Fservices\u002Fevents\u002Findex",[590,591,597,603],{"title":586,"path":587,"stem":588},{"title":592,"path":593,"stem":594,"children":595},"Consuming events","\u002Fdocs\u002Fservices\u002Fevents\u002Fconsuming-events","docs\u002Fservices\u002Fevents\u002Fconsuming-events\u002Findex",[596],{"title":592,"path":593,"stem":594},{"title":598,"path":599,"stem":600,"children":601},"Event catalog","\u002Fdocs\u002Fservices\u002Fevents\u002Fevent-catalog","docs\u002Fservices\u002Fevents\u002Fevent-catalog\u002Findex",[602],{"title":598,"path":599,"stem":600},{"title":604,"path":605,"stem":606,"children":607},"Event types","\u002Fdocs\u002Fservices\u002Fevents\u002Fevent-types","docs\u002Fservices\u002Fevents\u002Fevent-types\u002Findex",[608],{"title":604,"path":605,"stem":606},{"title":610,"path":611,"stem":612,"children":613,"icon":615},"Locale","\u002Fdocs\u002Fservices\u002Flocale","docs\u002Fservices\u002Flocale\u002Findex",[614],{"title":610,"path":611,"stem":612,"icon":615},"i-lucide-globe",{"title":617,"path":618,"stem":619,"children":620},"Network","\u002Fdocs\u002Fservices\u002Fnetwork","docs\u002Fservices\u002Fnetwork\u002Findex",[621,622,628,634,640,646,652,658,664],{"title":617,"path":618,"stem":619},{"title":623,"path":624,"stem":625,"children":626},"Caching","\u002Fdocs\u002Fservices\u002Fnetwork\u002Fcaching","docs\u002Fservices\u002Fnetwork\u002Fcaching\u002Findex",[627],{"title":623,"path":624,"stem":625},{"title":629,"path":630,"stem":631,"children":632},"Content delivery (CDN)","\u002Fdocs\u002Fservices\u002Fnetwork\u002Fcdn","docs\u002Fservices\u002Fnetwork\u002Fcdn\u002Findex",[633],{"title":629,"path":630,"stem":631},{"title":635,"path":636,"stem":637,"children":638},"Compression","\u002Fdocs\u002Fservices\u002Fnetwork\u002Fcompression","docs\u002Fservices\u002Fnetwork\u002Fcompression\u002Findex",[639],{"title":635,"path":636,"stem":637},{"title":641,"path":642,"stem":643,"children":644},"DDoS mitigation","\u002Fdocs\u002Fservices\u002Fnetwork\u002Fddos","docs\u002Fservices\u002Fnetwork\u002Fddos\u002Findex",[645],{"title":641,"path":642,"stem":643},{"title":647,"path":648,"stem":649,"children":650},"Edge network","\u002Fdocs\u002Fservices\u002Fnetwork\u002Fedges","docs\u002Fservices\u002Fnetwork\u002Fedges\u002Findex",[651],{"title":647,"path":648,"stem":649},{"title":653,"path":654,"stem":655,"children":656},"Endpoints","\u002Fdocs\u002Fservices\u002Fnetwork\u002Fendpoints","docs\u002Fservices\u002Fnetwork\u002Fendpoints\u002Findex",[657],{"title":653,"path":654,"stem":655},{"title":659,"path":660,"stem":661,"children":662},"Transport Layer Security (TLS)","\u002Fdocs\u002Fservices\u002Fnetwork\u002Ftls","docs\u002Fservices\u002Fnetwork\u002Ftls\u002Findex",[663],{"title":659,"path":660,"stem":661},{"title":665,"path":666,"stem":667,"children":668},"Web application firewall (WAF)","\u002Fdocs\u002Fservices\u002Fnetwork\u002Fwaf","docs\u002Fservices\u002Fnetwork\u002Fwaf\u002Findex",[669],{"title":665,"path":666,"stem":667},{"title":671,"path":672,"stem":673,"children":674},"Storage","\u002Fdocs\u002Fservices\u002Fstorage","docs\u002Fservices\u002Fstorage\u002Findex",[675,676,682,688,694,700,706,712],{"title":671,"path":672,"stem":673},{"title":677,"path":678,"stem":679,"children":680},"Folders","\u002Fdocs\u002Fservices\u002Fstorage\u002Fbuckets","docs\u002Fservices\u002Fstorage\u002Fbuckets\u002Findex",[681],{"title":677,"path":678,"stem":679},{"title":683,"path":684,"stem":685,"children":686},"Signed URLs and access","\u002Fdocs\u002Fservices\u002Fstorage\u002Ffile-tokens","docs\u002Fservices\u002Fstorage\u002Ffile-tokens\u002Findex",[687],{"title":683,"path":684,"stem":685},{"title":689,"path":690,"stem":691,"children":692},"Serve and transform images","\u002Fdocs\u002Fservices\u002Fstorage\u002Fimages","docs\u002Fservices\u002Fstorage\u002Fimages\u002Findex",[693],{"title":689,"path":690,"stem":691},{"title":695,"path":696,"stem":697,"children":698},"3D assets","\u002Fdocs\u002Fservices\u002Fstorage\u002Fmodel-viewer","docs\u002Fservices\u002Fstorage\u002Fmodel-viewer\u002Findex",[699],{"title":695,"path":696,"stem":697},{"title":701,"path":702,"stem":703,"children":704},"Access control and visibility","\u002Fdocs\u002Fservices\u002Fstorage\u002Fpermissions","docs\u002Fservices\u002Fstorage\u002Fpermissions\u002Findex",[705],{"title":701,"path":702,"stem":703},{"title":707,"path":708,"stem":709,"children":710},"Quick start","\u002Fdocs\u002Fservices\u002Fstorage\u002Fquick-start","docs\u002Fservices\u002Fstorage\u002Fquick-start\u002Findex",[711],{"title":707,"path":708,"stem":709},{"title":713,"path":714,"stem":715,"children":716},"Upload and manage files","\u002Fdocs\u002Fservices\u002Fstorage\u002Fupload-download","docs\u002Fservices\u002Fstorage\u002Fupload-download\u002Findex",[717],{"title":713,"path":714,"stem":715},{"title":719,"path":720,"stem":721,"children":722},"Webhooks","\u002Fdocs\u002Fservices\u002Fwebhooks","docs\u002Fservices\u002Fwebhooks\u002Findex",[723,724,730],{"title":719,"path":720,"stem":721},{"title":725,"path":726,"stem":727,"children":728},"Delivery","\u002Fdocs\u002Fservices\u002Fwebhooks\u002Fdelivery","docs\u002Fservices\u002Fwebhooks\u002Fdelivery\u002Findex",[729],{"title":725,"path":726,"stem":727},{"title":731,"path":732,"stem":733,"children":734},"Security","\u002Fdocs\u002Fservices\u002Fwebhooks\u002Fsecurity","docs\u002Fservices\u002Fwebhooks\u002Fsecurity\u002Findex",[735],{"title":731,"path":732,"stem":733},{"title":737,"path":738,"stem":739,"children":740},"Studios","\u002Fdocs\u002Fstudios","docs\u002Fstudios\u002Findex",[741,742,748,913,1264,1583,1765],{"title":737,"path":738,"stem":739},{"title":743,"path":744,"stem":745,"children":746},"AI Studio","\u002Fdocs\u002Fstudios\u002Fai","docs\u002Fstudios\u002Fai\u002Findex",[747],{"title":743,"path":744,"stem":745},{"title":749,"path":750,"stem":751,"children":752,"icon":754},"Analytics Studio","\u002Fdocs\u002Fstudios\u002Fanalytics","docs\u002Fstudios\u002Fanalytics\u002Findex",[753,755,798,835,841,859,889],{"title":749,"path":750,"stem":751,"icon":754},"i-lucide-chart-column",{"title":756,"path":757,"stem":758,"children":759,"icon":761},"Make your app's data analyzable","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fanalytics-json","docs\u002Fstudios\u002Fanalytics\u002Fanalytics-json\u002Findex",[760,762,768,774,780,786,792],{"title":756,"path":757,"stem":758,"icon":761},"i-lucide-table-2",{"title":763,"path":764,"stem":765,"children":766},"Column locators","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fanalytics-json\u002Fcolumn-locators","docs\u002Fstudios\u002Fanalytics\u002Fanalytics-json\u002Fcolumn-locators\u002Findex",[767],{"title":763,"path":764,"stem":765},{"title":769,"path":770,"stem":771,"children":772},"Declaring a view","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fanalytics-json\u002Fdeclaring-a-view","docs\u002Fstudios\u002Fanalytics\u002Fanalytics-json\u002Fdeclaring-a-view\u002Findex",[773],{"title":769,"path":770,"stem":771},{"title":775,"path":776,"stem":777,"children":778},"Example","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fanalytics-json\u002Fexample","docs\u002Fstudios\u002Fanalytics\u002Fanalytics-json\u002Fexample\u002Findex",[779],{"title":775,"path":776,"stem":777},{"title":781,"path":782,"stem":783,"children":784},"Semantic roles","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fanalytics-json\u002Fsemantic-roles","docs\u002Fstudios\u002Fanalytics\u002Fanalytics-json\u002Fsemantic-roles\u002Findex",[785],{"title":781,"path":782,"stem":783},{"title":787,"path":788,"stem":789,"children":790},"Tenant isolation","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fanalytics-json\u002Ftenant-isolation","docs\u002Fstudios\u002Fanalytics\u002Fanalytics-json\u002Ftenant-isolation\u002Findex",[791],{"title":787,"path":788,"stem":789},{"title":793,"path":794,"stem":795,"children":796},"The contract","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fanalytics-json\u002Fthe-contract","docs\u002Fstudios\u002Fanalytics\u002Fanalytics-json\u002Fthe-contract\u002Findex",[797],{"title":793,"path":794,"stem":795},{"title":799,"path":800,"stem":801,"children":802,"icon":804},"Stream commerce activity","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fevents","docs\u002Fstudios\u002Fanalytics\u002Fevents\u002Findex",[803,805,811,817,823,829],{"title":799,"path":800,"stem":801,"icon":804},"i-lucide-radio",{"title":806,"path":807,"stem":808,"children":809},"Delivery guarantees","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fevents\u002Fdelivery-guarantees","docs\u002Fstudios\u002Fanalytics\u002Fevents\u002Fdelivery-guarantees\u002Findex",[810],{"title":806,"path":807,"stem":808},{"title":812,"path":813,"stem":814,"children":815},"Event types for reporting","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fevents\u002Fevent-types-for-reporting","docs\u002Fstudios\u002Fanalytics\u002Fevents\u002Fevent-types-for-reporting\u002Findex",[816],{"title":812,"path":813,"stem":814},{"title":818,"path":819,"stem":820,"children":821},"Register an endpoint","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fevents\u002Fregister-an-endpoint","docs\u002Fstudios\u002Fanalytics\u002Fevents\u002Fregister-an-endpoint\u002Findex",[822],{"title":818,"path":819,"stem":820},{"title":824,"path":825,"stem":826,"children":827},"The event stream","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fevents\u002Fthe-event-stream","docs\u002Fstudios\u002Fanalytics\u002Fevents\u002Fthe-event-stream\u002Findex",[828],{"title":824,"path":825,"stem":826},{"title":830,"path":831,"stem":832,"children":833},"Verify a delivery","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fevents\u002Fverify-a-delivery","docs\u002Fstudios\u002Fanalytics\u002Fevents\u002Fverify-a-delivery\u002Findex",[834],{"title":830,"path":831,"stem":832},{"title":836,"path":837,"stem":838,"children":839,"icon":29},"Getting data out","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fgetting-data-out","docs\u002Fstudios\u002Fanalytics\u002Fgetting-data-out\u002Findex",[840],{"title":836,"path":837,"stem":838,"icon":29},{"title":842,"path":843,"stem":844,"children":845,"icon":336},"Limits and what's next","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Flimits","docs\u002Fstudios\u002Fanalytics\u002Flimits\u002Findex",[846,847,853],{"title":842,"path":843,"stem":844,"icon":336},{"title":848,"path":849,"stem":850,"children":851},"Designing for what's coming","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Flimits\u002Fdesigning-for-whats-coming","docs\u002Fstudios\u002Fanalytics\u002Flimits\u002Fdesigning-for-whats-coming\u002Findex",[852],{"title":848,"path":849,"stem":850},{"title":854,"path":855,"stem":856,"children":857},"What does not exist yet","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Flimits\u002Fwhat-does-not-exist-yet","docs\u002Fstudios\u002Fanalytics\u002Flimits\u002Fwhat-does-not-exist-yet\u002Findex",[858],{"title":854,"path":855,"stem":856},{"title":860,"path":861,"stem":862,"children":863,"icon":108},"Build your own reporting store","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fown-store","docs\u002Fstudios\u002Fanalytics\u002Fown-store\u002Findex",[864,865,871,877,883],{"title":860,"path":861,"stem":862,"icon":108},{"title":866,"path":867,"stem":868,"children":869},"Backfill","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fown-store\u002Fbackfill","docs\u002Fstudios\u002Fanalytics\u002Fown-store\u002Fbackfill\u002Findex",[870],{"title":866,"path":867,"stem":868},{"title":872,"path":873,"stem":874,"children":875},"Incremental sync","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fown-store\u002Fincremental-sync","docs\u002Fstudios\u002Fanalytics\u002Fown-store\u002Fincremental-sync\u002Findex",[876],{"title":872,"path":873,"stem":874},{"title":878,"path":879,"stem":880,"children":881},"Modelling","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fown-store\u002Fmodelling","docs\u002Fstudios\u002Fanalytics\u002Fown-store\u002Fmodelling\u002Findex",[882],{"title":878,"path":879,"stem":880},{"title":884,"path":885,"stem":886,"children":887},"Pull versus push","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fown-store\u002Fpull-vs-push","docs\u002Fstudios\u002Fanalytics\u002Fown-store\u002Fpull-vs-push\u002Findex",[888],{"title":884,"path":885,"stem":886},{"title":890,"path":891,"stem":892,"children":893,"icon":754},"What the tenant sees","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fwhat-the-tenant-sees","docs\u002Fstudios\u002Fanalytics\u002Fwhat-the-tenant-sees\u002Findex",[894,895,901,907],{"title":890,"path":891,"stem":892,"icon":754},{"title":896,"path":897,"stem":898,"children":899},"Cohorts","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fwhat-the-tenant-sees\u002Fcohorts","docs\u002Fstudios\u002Fanalytics\u002Fwhat-the-tenant-sees\u002Fcohorts\u002Findex",[900],{"title":896,"path":897,"stem":898},{"title":902,"path":903,"stem":904,"children":905},"Datasets and charts","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fwhat-the-tenant-sees\u002Fdatasets-and-charts","docs\u002Fstudios\u002Fanalytics\u002Fwhat-the-tenant-sees\u002Fdatasets-and-charts\u002Findex",[906],{"title":902,"path":903,"stem":904},{"title":908,"path":909,"stem":910,"children":911},"Studio overview","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fwhat-the-tenant-sees\u002Fstudio-overview","docs\u002Fstudios\u002Fanalytics\u002Fwhat-the-tenant-sees\u002Fstudio-overview\u002Findex",[912],{"title":908,"path":909,"stem":910},{"title":914,"path":915,"stem":916,"children":917},"App Studio","\u002Fdocs\u002Fstudios\u002Fapps","docs\u002Fstudios\u002Fapps\u002Findex",[918,919,955,1025,1096,1114,1180],{"title":914,"path":915,"stem":916},{"title":920,"path":921,"stem":922,"children":923,"icon":101},"Admin UI","\u002Fdocs\u002Fstudios\u002Fapps\u002Fadmin-ui","docs\u002Fstudios\u002Fapps\u002Fadmin-ui\u002Findex",[924,925,931,937,943,949],{"title":920,"path":921,"stem":922,"icon":101},{"title":926,"path":927,"stem":928,"children":929},"How the Cockpit renders","\u002Fdocs\u002Fstudios\u002Fapps\u002Fadmin-ui\u002Fhow-cockpit-renders","docs\u002Fstudios\u002Fapps\u002Fadmin-ui\u002Fhow-cockpit-renders\u002Findex",[930],{"title":926,"path":927,"stem":928},{"title":932,"path":933,"stem":934,"children":935},"Preview locally","\u002Fdocs\u002Fstudios\u002Fapps\u002Fadmin-ui\u002Fpreview-locally","docs\u002Fstudios\u002Fapps\u002Fadmin-ui\u002Fpreview-locally\u002Findex",[936],{"title":932,"path":933,"stem":934},{"title":938,"path":939,"stem":940,"children":941},"Reading settings","\u002Fdocs\u002Fstudios\u002Fapps\u002Fadmin-ui\u002Freading-settings","docs\u002Fstudios\u002Fapps\u002Fadmin-ui\u002Freading-settings\u002Findex",[942],{"title":938,"path":939,"stem":940},{"title":944,"path":945,"stem":946,"children":947},"Settings","\u002Fdocs\u002Fstudios\u002Fapps\u002Fadmin-ui\u002Fsettings","docs\u002Fstudios\u002Fapps\u002Fadmin-ui\u002Fsettings\u002Findex",[948],{"title":944,"path":945,"stem":946},{"title":950,"path":951,"stem":952,"children":953},"Vocabularies","\u002Fdocs\u002Fstudios\u002Fapps\u002Fadmin-ui\u002Fvocabularies","docs\u002Fstudios\u002Fapps\u002Fadmin-ui\u002Fvocabularies\u002Findex",[954],{"title":950,"path":951,"stem":952},{"title":956,"path":957,"stem":958,"children":959,"icon":343},"Your app's API","\u002Fdocs\u002Fstudios\u002Fapps\u002Fapi","docs\u002Fstudios\u002Fapps\u002Fapi\u002Findex",[960,961,966,972,978,984,990,995,1001,1007,1013,1019],{"title":956,"path":957,"stem":958,"icon":343},{"title":623,"path":962,"stem":963,"children":964},"\u002Fdocs\u002Fstudios\u002Fapps\u002Fapi\u002Fcaching","docs\u002Fstudios\u002Fapps\u002Fapi\u002Fcaching\u002Findex",[965],{"title":623,"path":962,"stem":963},{"title":967,"path":968,"stem":969,"children":970},"Calling another app","\u002Fdocs\u002Fstudios\u002Fapps\u002Fapi\u002Fcalling-another-app","docs\u002Fstudios\u002Fapps\u002Fapi\u002Fcalling-another-app\u002Findex",[971],{"title":967,"path":968,"stem":969},{"title":973,"path":974,"stem":975,"children":976},"Capabilities","\u002Fdocs\u002Fstudios\u002Fapps\u002Fapi\u002Fcapabilities","docs\u002Fstudios\u002Fapps\u002Fapi\u002Fcapabilities\u002Findex",[977],{"title":973,"path":974,"stem":975},{"title":979,"path":980,"stem":981,"children":982},"Capability reference","\u002Fdocs\u002Fstudios\u002Fapps\u002Fapi\u002Fcapability-reference","docs\u002Fstudios\u002Fapps\u002Fapi\u002Fcapability-reference\u002Findex",[983],{"title":979,"path":980,"stem":981},{"title":985,"path":986,"stem":987,"children":988},"CRUD","\u002Fdocs\u002Fstudios\u002Fapps\u002Fapi\u002Fcrud","docs\u002Fstudios\u002Fapps\u002Fapi\u002Fcrud\u002Findex",[989],{"title":985,"path":986,"stem":987},{"title":513,"path":991,"stem":992,"children":993},"\u002Fdocs\u002Fstudios\u002Fapps\u002Fapi\u002Ferrors","docs\u002Fstudios\u002Fapps\u002Fapi\u002Ferrors\u002Findex",[994],{"title":513,"path":991,"stem":992},{"title":996,"path":997,"stem":998,"children":999},"Overriding a capability","\u002Fdocs\u002Fstudios\u002Fapps\u002Fapi\u002Foverriding-a-capability","docs\u002Fstudios\u002Fapps\u002Fapi\u002Foverriding-a-capability\u002Findex",[1000],{"title":996,"path":997,"stem":998},{"title":1002,"path":1003,"stem":1004,"children":1005},"Pagination and filtering","\u002Fdocs\u002Fstudios\u002Fapps\u002Fapi\u002Fpagination-and-filtering","docs\u002Fstudios\u002Fapps\u002Fapi\u002Fpagination-and-filtering\u002Findex",[1006],{"title":1002,"path":1003,"stem":1004},{"title":1008,"path":1009,"stem":1010,"children":1011},"Published OpenAPI","\u002Fdocs\u002Fstudios\u002Fapps\u002Fapi\u002Fpublished-openapi","docs\u002Fstudios\u002Fapps\u002Fapi\u002Fpublished-openapi\u002Findex",[1012],{"title":1008,"path":1009,"stem":1010},{"title":1014,"path":1015,"stem":1016,"children":1017},"The router","\u002Fdocs\u002Fstudios\u002Fapps\u002Fapi\u002Frouter","docs\u002Fstudios\u002Fapps\u002Fapi\u002Frouter\u002Findex",[1018],{"title":1014,"path":1015,"stem":1016},{"title":1020,"path":1021,"stem":1022,"children":1023},"Tags","\u002Fdocs\u002Fstudios\u002Fapps\u002Fapi\u002Ftags","docs\u002Fstudios\u002Fapps\u002Fapi\u002Ftags\u002Findex",[1024],{"title":1020,"path":1021,"stem":1022},{"title":1026,"path":1027,"stem":1028,"children":1029,"icon":108},"Data model","\u002Fdocs\u002Fstudios\u002Fapps\u002Fdata-model","docs\u002Fstudios\u002Fapps\u002Fdata-model\u002Findex",[1030,1031,1037,1043,1049,1055,1061,1067,1073,1079,1085,1090],{"title":1026,"path":1027,"stem":1028,"icon":108},{"title":1032,"path":1033,"stem":1034,"children":1035},"Adapters","\u002Fdocs\u002Fstudios\u002Fapps\u002Fdata-model\u002Fadapters","docs\u002Fstudios\u002Fapps\u002Fdata-model\u002Fadapters\u002Findex",[1036],{"title":1032,"path":1033,"stem":1034},{"title":1038,"path":1039,"stem":1040,"children":1041},"Column types","\u002Fdocs\u002Fstudios\u002Fapps\u002Fdata-model\u002Fcolumn-types","docs\u002Fstudios\u002Fapps\u002Fdata-model\u002Fcolumn-types\u002Findex",[1042],{"title":1038,"path":1039,"stem":1040},{"title":1044,"path":1045,"stem":1046,"children":1047},"Cross-app lookups","\u002Fdocs\u002Fstudios\u002Fapps\u002Fdata-model\u002Fcross-app-lookups","docs\u002Fstudios\u002Fapps\u002Fdata-model\u002Fcross-app-lookups\u002Findex",[1048],{"title":1044,"path":1045,"stem":1046},{"title":1050,"path":1051,"stem":1052,"children":1053},"Migrations","\u002Fdocs\u002Fstudios\u002Fapps\u002Fdata-model\u002Fmigrations","docs\u002Fstudios\u002Fapps\u002Fdata-model\u002Fmigrations\u002Findex",[1054],{"title":1050,"path":1051,"stem":1052},{"title":1056,"path":1057,"stem":1058,"children":1059},"Projections","\u002Fdocs\u002Fstudios\u002Fapps\u002Fdata-model\u002Fprojections","docs\u002Fstudios\u002Fapps\u002Fdata-model\u002Fprojections\u002Findex",[1060],{"title":1056,"path":1057,"stem":1058},{"title":1062,"path":1063,"stem":1064,"children":1065},"Relationships","\u002Fdocs\u002Fstudios\u002Fapps\u002Fdata-model\u002Frelationships","docs\u002Fstudios\u002Fapps\u002Fdata-model\u002Frelationships\u002Findex",[1066],{"title":1062,"path":1063,"stem":1064},{"title":1068,"path":1069,"stem":1070,"children":1071},"Schema reference","\u002Fdocs\u002Fstudios\u002Fapps\u002Fdata-model\u002Fschema-reference","docs\u002Fstudios\u002Fapps\u002Fdata-model\u002Fschema-reference\u002Findex",[1072],{"title":1068,"path":1069,"stem":1070},{"title":1074,"path":1075,"stem":1076,"children":1077},"Scoping","\u002Fdocs\u002Fstudios\u002Fapps\u002Fdata-model\u002Fscoping","docs\u002Fstudios\u002Fapps\u002Fdata-model\u002Fscoping\u002Findex",[1078],{"title":1074,"path":1075,"stem":1076},{"title":1080,"path":1081,"stem":1082,"children":1083},"search.json reference","\u002Fdocs\u002Fstudios\u002Fapps\u002Fdata-model\u002Fsearch-json","docs\u002Fstudios\u002Fapps\u002Fdata-model\u002Fsearch-json\u002Findex",[1084],{"title":1080,"path":1081,"stem":1082},{"title":787,"path":1086,"stem":1087,"children":1088},"\u002Fdocs\u002Fstudios\u002Fapps\u002Fdata-model\u002Ftenant-isolation","docs\u002Fstudios\u002Fapps\u002Fdata-model\u002Ftenant-isolation\u002Findex",[1089],{"title":787,"path":1086,"stem":1087},{"title":1091,"path":1092,"stem":1093,"children":1094},"The typed client","\u002Fdocs\u002Fstudios\u002Fapps\u002Fdata-model\u002Ftyped-client","docs\u002Fstudios\u002Fapps\u002Fdata-model\u002Ftyped-client\u002Findex",[1095],{"title":1091,"path":1092,"stem":1093},{"title":1097,"path":1098,"stem":1099,"children":1100},"Getting started","\u002Fdocs\u002Fstudios\u002Fapps\u002Fgetting-started","docs\u002Fstudios\u002Fapps\u002Fgetting-started\u002Findex",[1101,1102,1108],{"title":1097,"path":1098,"stem":1099},{"title":1103,"path":1104,"stem":1105,"children":1106},"App model","\u002Fdocs\u002Fstudios\u002Fapps\u002Fgetting-started\u002Fapp-model","docs\u002Fstudios\u002Fapps\u002Fgetting-started\u002Fapp-model\u002Findex",[1107],{"title":1103,"path":1104,"stem":1105},{"title":1109,"path":1110,"stem":1111,"children":1112},"App isolation","\u002Fdocs\u002Fstudios\u002Fapps\u002Fgetting-started\u002Fisolation","docs\u002Fstudios\u002Fapps\u002Fgetting-started\u002Fisolation\u002Findex",[1113],{"title":1109,"path":1110,"stem":1111},{"title":1115,"path":1116,"stem":1117,"children":1118,"icon":185},"Platform services","\u002Fdocs\u002Fstudios\u002Fapps\u002Fplatform-services","docs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Findex",[1119,1120,1126,1132,1138,1144,1150,1156,1162,1168,1174],{"title":1115,"path":1116,"stem":1117,"icon":185},{"title":1121,"path":1122,"stem":1123,"children":1124},"Entity access","\u002Fdocs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Fentity-access","docs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Fentity-access\u002Findex",[1125],{"title":1121,"path":1122,"stem":1123},{"title":1127,"path":1128,"stem":1129,"children":1130},"Events you emit","\u002Fdocs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Fevents-you-emit","docs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Fevents-you-emit\u002Findex",[1131],{"title":1127,"path":1128,"stem":1129},{"title":1133,"path":1134,"stem":1135,"children":1136},"Events you receive","\u002Fdocs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Fevents-you-receive","docs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Fevents-you-receive\u002Findex",[1137],{"title":1133,"path":1134,"stem":1135},{"title":1139,"path":1140,"stem":1141,"children":1142},"Not yet proven","\u002Fdocs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Fnot-yet-proven","docs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Fnot-yet-proven\u002Findex",[1143],{"title":1139,"path":1140,"stem":1141},{"title":1145,"path":1146,"stem":1147,"children":1148},"Outbound HTTP","\u002Fdocs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Foutbound-http","docs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Foutbound-http\u002Findex",[1149],{"title":1145,"path":1146,"stem":1147},{"title":1151,"path":1152,"stem":1153,"children":1154},"Permissions","\u002Fdocs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Fpermissions","docs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Fpermissions\u002Findex",[1155],{"title":1151,"path":1152,"stem":1153},{"title":1157,"path":1158,"stem":1159,"children":1160},"Person permissions","\u002Fdocs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Fperson-permissions","docs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Fperson-permissions\u002Findex",[1161],{"title":1157,"path":1158,"stem":1159},{"title":1163,"path":1164,"stem":1165,"children":1166},"Scheduled work","\u002Fdocs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Fscheduled-work","docs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Fscheduled-work\u002Findex",[1167],{"title":1163,"path":1164,"stem":1165},{"title":1169,"path":1170,"stem":1171,"children":1172},"Tenant identity","\u002Fdocs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Ftenant-identity","docs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Ftenant-identity\u002Findex",[1173],{"title":1169,"path":1170,"stem":1171},{"title":1175,"path":1176,"stem":1177,"children":1178},"Tracing","\u002Fdocs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Ftracing","docs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Ftracing\u002Findex",[1179],{"title":1175,"path":1176,"stem":1177},{"title":1181,"path":1182,"stem":1183,"children":1184,"icon":1186},"Ship and operate","\u002Fdocs\u002Fstudios\u002Fapps\u002Fship-and-operate","docs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Findex",[1185,1187,1193,1199,1205,1211,1217,1223,1229,1235,1241,1247,1253,1259],{"title":1181,"path":1182,"stem":1183,"icon":1186},"i-lucide-rocket",{"title":1188,"path":1189,"stem":1190,"children":1191},"Billing","\u002Fdocs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fbilling","docs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fbilling\u002Findex",[1192],{"title":1188,"path":1189,"stem":1190},{"title":1194,"path":1195,"stem":1196,"children":1197},"Consent","\u002Fdocs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fconsent","docs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fconsent\u002Findex",[1198],{"title":1194,"path":1195,"stem":1196},{"title":1200,"path":1201,"stem":1202,"children":1203},"Dependencies","\u002Fdocs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fdependencies","docs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fdependencies\u002Findex",[1204],{"title":1200,"path":1201,"stem":1202},{"title":1206,"path":1207,"stem":1208,"children":1209},"Deploying","\u002Fdocs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fdeploying","docs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fdeploying\u002Findex",[1210],{"title":1206,"path":1207,"stem":1208},{"title":1212,"path":1213,"stem":1214,"children":1215},"Manifest reference","\u002Fdocs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fmanifest-reference","docs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fmanifest-reference\u002Findex",[1216],{"title":1212,"path":1213,"stem":1214},{"title":1218,"path":1219,"stem":1220,"children":1221},"Operating","\u002Fdocs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Foperating","docs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Foperating\u002Findex",[1222],{"title":1218,"path":1219,"stem":1220},{"title":1224,"path":1225,"stem":1226,"children":1227},"Pairing a frontend","\u002Fdocs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fpairing-a-frontend","docs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fpairing-a-frontend\u002Findex",[1228],{"title":1224,"path":1225,"stem":1226},{"title":1230,"path":1231,"stem":1232,"children":1233},"Private or Marketplace","\u002Fdocs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fprivate-vs-marketplace","docs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fprivate-vs-marketplace\u002Findex",[1234],{"title":1230,"path":1231,"stem":1232},{"title":1236,"path":1237,"stem":1238,"children":1239},"Publish and install","\u002Fdocs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fpublish-and-install","docs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fpublish-and-install\u002Findex",[1240],{"title":1236,"path":1237,"stem":1238},{"title":1242,"path":1243,"stem":1244,"children":1245},"Testing","\u002Fdocs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Ftesting","docs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Ftesting\u002Findex",[1246],{"title":1242,"path":1243,"stem":1244},{"title":1248,"path":1249,"stem":1250,"children":1251},"Validate","\u002Fdocs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fvalidate","docs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fvalidate\u002Findex",[1252],{"title":1248,"path":1249,"stem":1250},{"title":1254,"path":1255,"stem":1256,"children":1257},"Verifying live","\u002Fdocs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fverifying-live","docs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fverifying-live\u002Findex",[1258],{"title":1254,"path":1255,"stem":1256},{"title":489,"path":1260,"stem":1261,"children":1262},"\u002Fdocs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fversioning","docs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fversioning\u002Findex",[1263],{"title":489,"path":1260,"stem":1261},{"title":1265,"path":1266,"stem":1267,"children":1268,"icon":1270},"Commerce Studio","\u002Fdocs\u002Fstudios\u002Fcommerce","docs\u002Fstudios\u002Fcommerce\u002Findex",[1269,1271,1343,1403,1452,1457,1510,1564],{"title":1265,"path":1266,"stem":1267,"icon":1270},"i-lucide-shopping-bag",{"title":1272,"path":1273,"stem":1274,"children":1275,"icon":1277},"Build an app","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app","docs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Findex",[1276,1278,1284,1290,1296,1302,1308,1314,1320,1326,1332,1337],{"title":1272,"path":1273,"stem":1274,"icon":1277},"i-lucide-puzzle",{"title":1279,"path":1280,"stem":1281,"children":1282},"Actions and writes","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Factions-and-writes","docs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Factions-and-writes\u002Findex",[1283],{"title":1279,"path":1280,"stem":1281},{"title":1285,"path":1286,"stem":1287,"children":1288},"cockpit.json reference","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Fcockpit-json-reference","docs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Fcockpit-json-reference\u002Findex",[1289],{"title":1285,"path":1286,"stem":1287},{"title":1291,"path":1292,"stem":1293,"children":1294},"Detail views","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Fdetail-views","docs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Fdetail-views\u002Findex",[1295],{"title":1291,"path":1292,"stem":1293},{"title":1297,"path":1298,"stem":1299,"children":1300},"Forms","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Fforms","docs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Fforms\u002Findex",[1301],{"title":1297,"path":1298,"stem":1299},{"title":1303,"path":1304,"stem":1305,"children":1306},"From manifest to installed","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Ffrom-manifest-to-installed","docs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Ffrom-manifest-to-installed\u002Findex",[1307],{"title":1303,"path":1304,"stem":1305},{"title":1309,"path":1310,"stem":1311,"children":1312},"How it renders","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Fhow-it-renders","docs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Fhow-it-renders\u002Findex",[1313],{"title":1309,"path":1310,"stem":1311},{"title":1315,"path":1316,"stem":1317,"children":1318},"List views","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Flist-views","docs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Flist-views\u002Findex",[1319],{"title":1315,"path":1316,"stem":1317},{"title":1321,"path":1322,"stem":1323,"children":1324},"Navigation","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Fnavigation","docs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Fnavigation\u002Findex",[1325],{"title":1321,"path":1322,"stem":1323},{"title":1327,"path":1328,"stem":1329,"children":1330},"Permissions and scope","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Fpermissions-and-scope","docs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Fpermissions-and-scope\u002Findex",[1331],{"title":1327,"path":1328,"stem":1329},{"title":932,"path":1333,"stem":1334,"children":1335},"\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Fpreview-locally","docs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Fpreview-locally\u002Findex",[1336],{"title":932,"path":1333,"stem":1334},{"title":1338,"path":1339,"stem":1340,"children":1341},"Widgets","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Fwidgets","docs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Fwidgets\u002Findex",[1342],{"title":1338,"path":1339,"stem":1340},{"title":1344,"path":1345,"stem":1346,"children":1347,"icon":1349},"Catalog","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fcatalog","docs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Findex",[1348,1350,1356,1362,1368,1374,1379,1385,1391,1397],{"title":1344,"path":1345,"stem":1346,"icon":1349},"i-lucide-package",{"title":1351,"path":1352,"stem":1353,"children":1354},"Assets","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Fassets","docs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Fassets\u002Findex",[1355],{"title":1351,"path":1352,"stem":1353},{"title":1357,"path":1358,"stem":1359,"children":1360},"Associations","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Fassociations","docs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Fassociations\u002Findex",[1361],{"title":1357,"path":1358,"stem":1359},{"title":1363,"path":1364,"stem":1365,"children":1366},"Categories","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Fcategories","docs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Fcategories\u002Findex",[1367],{"title":1363,"path":1364,"stem":1365},{"title":1369,"path":1370,"stem":1371,"children":1372},"Completeness","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Fcompleteness","docs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Fcompleteness\u002Findex",[1373],{"title":1369,"path":1370,"stem":1371},{"title":1026,"path":1375,"stem":1376,"children":1377},"\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Fdata-model","docs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Fdata-model\u002Findex",[1378],{"title":1026,"path":1375,"stem":1376},{"title":1380,"path":1381,"stem":1382,"children":1383},"Import and export","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Fimport-and-export","docs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Fimport-and-export\u002Findex",[1384],{"title":1380,"path":1381,"stem":1382},{"title":1386,"path":1387,"stem":1388,"children":1389},"Languages and locale codes","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Flanguages-and-locale-codes","docs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Flanguages-and-locale-codes\u002Findex",[1390],{"title":1386,"path":1387,"stem":1388},{"title":1392,"path":1393,"stem":1394,"children":1395},"Products","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Fproducts","docs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Fproducts\u002Findex",[1396],{"title":1392,"path":1393,"stem":1394},{"title":1398,"path":1399,"stem":1400,"children":1401},"References","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Freferences","docs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Freferences\u002Findex",[1402],{"title":1398,"path":1399,"stem":1400},{"title":1404,"path":1405,"stem":1406,"children":1407,"icon":1409},"Customers","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fcustomers","docs\u002Fstudios\u002Fcommerce\u002Fcustomers\u002Findex",[1408,1410,1416,1422,1428,1434,1440,1446],{"title":1404,"path":1405,"stem":1406,"icon":1409},"i-lucide-building-2",{"title":1411,"path":1412,"stem":1413,"children":1414},"Contacts","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fcustomers\u002Fcontacts","docs\u002Fstudios\u002Fcommerce\u002Fcustomers\u002Fcontacts\u002Findex",[1415],{"title":1411,"path":1412,"stem":1413},{"title":1417,"path":1418,"stem":1419,"children":1420},"Organizations","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fcustomers\u002Forganizations","docs\u002Fstudios\u002Fcommerce\u002Fcustomers\u002Forganizations\u002Findex",[1421],{"title":1417,"path":1418,"stem":1419},{"title":1423,"path":1424,"stem":1425,"children":1426},"Roles and permissions","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fcustomers\u002Froles-and-permissions","docs\u002Fstudios\u002Fcommerce\u002Fcustomers\u002Froles-and-permissions\u002Findex",[1427],{"title":1423,"path":1424,"stem":1425},{"title":1429,"path":1430,"stem":1431,"children":1432},"Sales reps","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fcustomers\u002Fsales-reps","docs\u002Fstudios\u002Fcommerce\u002Fcustomers\u002Fsales-reps\u002Findex",[1433],{"title":1429,"path":1430,"stem":1431},{"title":1435,"path":1436,"stem":1437,"children":1438},"Segments","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fcustomers\u002Fsegments","docs\u002Fstudios\u002Fcommerce\u002Fcustomers\u002Fsegments\u002Findex",[1439],{"title":1435,"path":1436,"stem":1437},{"title":1441,"path":1442,"stem":1443,"children":1444},"Storefront accounts","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fcustomers\u002Fstorefront-accounts","docs\u002Fstudios\u002Fcommerce\u002Fcustomers\u002Fstorefront-accounts\u002Findex",[1445],{"title":1441,"path":1442,"stem":1443},{"title":1447,"path":1448,"stem":1449,"children":1450},"Value lists","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fcustomers\u002Fvalue-lists","docs\u002Fstudios\u002Fcommerce\u002Fcustomers\u002Fvalue-lists\u002Findex",[1451],{"title":1447,"path":1448,"stem":1449},{"title":1097,"path":1453,"stem":1454,"children":1455,"icon":1186},"\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fgetting-started","docs\u002Fstudios\u002Fcommerce\u002Fgetting-started\u002Findex",[1456],{"title":1097,"path":1453,"stem":1454,"icon":1186},{"title":1458,"path":1459,"stem":1460,"children":1461,"icon":615},"Markets and pricing","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing","docs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Findex",[1462,1463,1469,1475,1481,1487,1493,1499,1504],{"title":1458,"path":1459,"stem":1460,"icon":615},{"title":1464,"path":1465,"stem":1466,"children":1467},"Carriers and tracking","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Fcarriers-and-tracking","docs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Fcarriers-and-tracking\u002Findex",[1468],{"title":1464,"path":1465,"stem":1466},{"title":1470,"path":1471,"stem":1472,"children":1473},"Channels","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Fchannels","docs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Fchannels\u002Findex",[1474],{"title":1470,"path":1471,"stem":1472},{"title":1476,"path":1477,"stem":1478,"children":1479},"Markets","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Fmarkets","docs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Fmarkets\u002Findex",[1480],{"title":1476,"path":1477,"stem":1478},{"title":1482,"path":1483,"stem":1484,"children":1485},"Payment lifecycle","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Fpayment-lifecycle","docs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Fpayment-lifecycle\u002Findex",[1486],{"title":1482,"path":1483,"stem":1484},{"title":1488,"path":1489,"stem":1490,"children":1491},"Payment methods","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Fpayment-methods","docs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Fpayment-methods\u002Findex",[1492],{"title":1488,"path":1489,"stem":1490},{"title":1494,"path":1495,"stem":1496,"children":1497},"Price lists","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Fprice-lists","docs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Fprice-lists\u002Findex",[1498],{"title":1494,"path":1495,"stem":1496},{"title":944,"path":1500,"stem":1501,"children":1502},"\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Fsettings","docs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Fsettings\u002Findex",[1503],{"title":944,"path":1500,"stem":1501},{"title":1505,"path":1506,"stem":1507,"children":1508},"Shipping rates","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Fshipping-rates","docs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Fshipping-rates\u002Findex",[1509],{"title":1505,"path":1506,"stem":1507},{"title":1511,"path":1512,"stem":1513,"children":1514,"icon":1516},"Orders","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Forders","docs\u002Fstudios\u002Fcommerce\u002Forders\u002Findex",[1515,1517,1523,1529,1535,1541,1547,1552,1558],{"title":1511,"path":1512,"stem":1513,"icon":1516},"i-lucide-receipt-text",{"title":1518,"path":1519,"stem":1520,"children":1521},"Carts","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Forders\u002Fcarts","docs\u002Fstudios\u002Fcommerce\u002Forders\u002Fcarts\u002Findex",[1522],{"title":1518,"path":1519,"stem":1520},{"title":1524,"path":1525,"stem":1526,"children":1527},"Documents","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Forders\u002Fdocuments","docs\u002Fstudios\u002Fcommerce\u002Forders\u002Fdocuments\u002Findex",[1528],{"title":1524,"path":1525,"stem":1526},{"title":1530,"path":1531,"stem":1532,"children":1533},"Events and comments","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Forders\u002Fevents-and-comments","docs\u002Fstudios\u002Fcommerce\u002Forders\u002Fevents-and-comments\u002Findex",[1534],{"title":1530,"path":1531,"stem":1532},{"title":1536,"path":1537,"stem":1538,"children":1539},"Number ranges","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Forders\u002Fnumber-ranges","docs\u002Fstudios\u002Fcommerce\u002Forders\u002Fnumber-ranges\u002Findex",[1540],{"title":1536,"path":1537,"stem":1538},{"title":1542,"path":1543,"stem":1544,"children":1545},"Order lists","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Forders\u002Forder-lists","docs\u002Fstudios\u002Fcommerce\u002Forders\u002Forder-lists\u002Findex",[1546],{"title":1542,"path":1543,"stem":1544},{"title":1511,"path":1548,"stem":1549,"children":1550},"\u002Fdocs\u002Fstudios\u002Fcommerce\u002Forders\u002Forders","docs\u002Fstudios\u002Fcommerce\u002Forders\u002Forders\u002Findex",[1551],{"title":1511,"path":1548,"stem":1549},{"title":1553,"path":1554,"stem":1555,"children":1556},"Returns","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Forders\u002Freturns","docs\u002Fstudios\u002Fcommerce\u002Forders\u002Freturns\u002Findex",[1557],{"title":1553,"path":1554,"stem":1555},{"title":1559,"path":1560,"stem":1561,"children":1562},"Stock","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Forders\u002Fstock","docs\u002Fstudios\u002Fcommerce\u002Forders\u002Fstock\u002Findex",[1563],{"title":1559,"path":1560,"stem":1561},{"title":1565,"path":1566,"stem":1567,"children":1568,"icon":1570},"Procurement","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fprocurement","docs\u002Fstudios\u002Fcommerce\u002Fprocurement\u002Findex",[1569,1571,1577],{"title":1565,"path":1566,"stem":1567,"icon":1570},"i-lucide-clipboard-check",{"title":1572,"path":1573,"stem":1574,"children":1575},"Cost centers","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fprocurement\u002Fcost-centers","docs\u002Fstudios\u002Fcommerce\u002Fprocurement\u002Fcost-centers\u002Findex",[1576],{"title":1572,"path":1573,"stem":1574},{"title":1578,"path":1579,"stem":1580,"children":1581,"icon":29},"Punchout","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fprocurement\u002Fpunchout","docs\u002Fstudios\u002Fcommerce\u002Fprocurement\u002Fpunchout\u002Findex",[1582],{"title":1578,"path":1579,"stem":1580,"icon":29},{"title":1584,"path":1585,"stem":1586,"children":1587},"Integration Studio","\u002Fdocs\u002Fstudios\u002Fintegration-studio","docs\u002Fstudios\u002Fintegration-studio\u002Findex",[1588,1589,1626,1663,1693,1698,1728],{"title":1584,"path":1585,"stem":1586},{"title":1590,"path":1591,"stem":1592,"children":1593,"icon":1595},"Build the workflow","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fbuild","docs\u002Fstudios\u002Fintegration-studio\u002Fbuild\u002Findex",[1594,1596,1602,1608,1614,1620],{"title":1590,"path":1591,"stem":1592,"icon":1595},"i-lucide-workflow",{"title":1597,"path":1598,"stem":1599,"children":1600},"Expressions","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fbuild\u002Fexpressions","docs\u002Fstudios\u002Fintegration-studio\u002Fbuild\u002Fexpressions\u002Findex",[1601],{"title":1597,"path":1598,"stem":1599},{"title":1603,"path":1604,"stem":1605,"children":1606},"Node catalog","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fbuild\u002Fnode-catalog","docs\u002Fstudios\u002Fintegration-studio\u002Fbuild\u002Fnode-catalog\u002Findex",[1607],{"title":1603,"path":1604,"stem":1605},{"title":1609,"path":1610,"stem":1611,"children":1612},"Node configuration","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fbuild\u002Fnode-configuration","docs\u002Fstudios\u002Fintegration-studio\u002Fbuild\u002Fnode-configuration\u002Findex",[1613],{"title":1609,"path":1610,"stem":1611},{"title":1615,"path":1616,"stem":1617,"children":1618},"Templates","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fbuild\u002Ftemplates","docs\u002Fstudios\u002Fintegration-studio\u002Fbuild\u002Ftemplates\u002Findex",[1619],{"title":1615,"path":1616,"stem":1617},{"title":1621,"path":1622,"stem":1623,"children":1624},"The workflow document","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fbuild\u002Fworkflow-model","docs\u002Fstudios\u002Fintegration-studio\u002Fbuild\u002Fworkflow-model\u002Findex",[1625],{"title":1621,"path":1622,"stem":1623},{"title":1627,"path":1628,"stem":1629,"children":1630,"icon":1632},"Connect the systems","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fconnect","docs\u002Fstudios\u002Fintegration-studio\u002Fconnect\u002Findex",[1631,1633,1639,1645,1651,1657],{"title":1627,"path":1628,"stem":1629,"icon":1632},"i-lucide-key-round",{"title":1634,"path":1635,"stem":1636,"children":1637},"Credentials","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fconnect\u002Fcredentials","docs\u002Fstudios\u002Fintegration-studio\u002Fconnect\u002Fcredentials\u002Findex",[1638],{"title":1634,"path":1635,"stem":1636},{"title":1640,"path":1641,"stem":1642,"children":1643},"File transfer","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fconnect\u002Ffiles","docs\u002Fstudios\u002Fintegration-studio\u002Fconnect\u002Ffiles\u002Findex",[1644],{"title":1640,"path":1641,"stem":1642},{"title":1646,"path":1647,"stem":1648,"children":1649},"OAuth","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fconnect\u002Foauth","docs\u002Fstudios\u002Fintegration-studio\u002Fconnect\u002Foauth\u002Findex",[1650],{"title":1646,"path":1647,"stem":1648},{"title":1652,"path":1653,"stem":1654,"children":1655},"Reaching Revenue Cloud","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fconnect\u002Freaching-revenue-cloud","docs\u002Fstudios\u002Fintegration-studio\u002Fconnect\u002Freaching-revenue-cloud\u002Findex",[1656],{"title":1652,"path":1653,"stem":1654},{"title":1658,"path":1659,"stem":1660,"children":1661},"Secrets","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fconnect\u002Fsecrets","docs\u002Fstudios\u002Fintegration-studio\u002Fconnect\u002Fsecrets\u002Findex",[1662],{"title":1658,"path":1659,"stem":1660},{"title":1664,"path":1665,"stem":1666,"children":1667,"icon":1349},"Extend the Studio","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fextend","docs\u002Fstudios\u002Fintegration-studio\u002Fextend\u002Findex",[1668,1669,1675,1681,1687],{"title":1664,"path":1665,"stem":1666,"icon":1349},{"title":1670,"path":1671,"stem":1672,"children":1673},"Custom nodes","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fextend\u002Fcustom-nodes","docs\u002Fstudios\u002Fintegration-studio\u002Fextend\u002Fcustom-nodes\u002Findex",[1674],{"title":1670,"path":1671,"stem":1672},{"title":1676,"path":1677,"stem":1678,"children":1679},"Dynamic behaviour","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fextend\u002Fdynamic-behaviour","docs\u002Fstudios\u002Fintegration-studio\u002Fextend\u002Fdynamic-behaviour\u002Findex",[1680],{"title":1676,"path":1677,"stem":1678},{"title":1682,"path":1683,"stem":1684,"children":1685},"Package manifest","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fextend\u002Fpackage-manifest","docs\u002Fstudios\u002Fintegration-studio\u002Fextend\u002Fpackage-manifest\u002Findex",[1686],{"title":1682,"path":1683,"stem":1684},{"title":1688,"path":1689,"stem":1690,"children":1691},"Registration","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fextend\u002Fregistration","docs\u002Fstudios\u002Fintegration-studio\u002Fextend\u002Fregistration\u002Findex",[1692],{"title":1688,"path":1689,"stem":1690},{"title":1097,"path":1694,"stem":1695,"children":1696,"icon":1186},"\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fgetting-started","docs\u002Fstudios\u002Fintegration-studio\u002Fgetting-started\u002Findex",[1697],{"title":1097,"path":1694,"stem":1695,"icon":1186},{"title":1699,"path":1700,"stem":1701,"children":1702,"icon":316},"Run, watch, recover","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Foperate","docs\u002Fstudios\u002Fintegration-studio\u002Foperate\u002Findex",[1703,1704,1710,1716,1722],{"title":1699,"path":1700,"stem":1701,"icon":316},{"title":1705,"path":1706,"stem":1707,"children":1708},"Missed runs","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Foperate\u002Fdead-letters","docs\u002Fstudios\u002Fintegration-studio\u002Foperate\u002Fdead-letters\u002Findex",[1709],{"title":1705,"path":1706,"stem":1707},{"title":1711,"path":1712,"stem":1713,"children":1714},"Failure handling","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Foperate\u002Ffailure-handling","docs\u002Fstudios\u002Fintegration-studio\u002Foperate\u002Ffailure-handling\u002Findex",[1715],{"title":1711,"path":1712,"stem":1713},{"title":1717,"path":1718,"stem":1719,"children":1720},"Revisions and audit","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Foperate\u002Frevisions-and-audit","docs\u002Fstudios\u002Fintegration-studio\u002Foperate\u002Frevisions-and-audit\u002Findex",[1721],{"title":1717,"path":1718,"stem":1719},{"title":1723,"path":1724,"stem":1725,"children":1726},"Runs","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Foperate\u002Fruns","docs\u002Fstudios\u002Fintegration-studio\u002Foperate\u002Fruns\u002Findex",[1727],{"title":1723,"path":1724,"stem":1725},{"title":1729,"path":1730,"stem":1731,"children":1732,"icon":1734},"Start the workflow","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fstart","docs\u002Fstudios\u002Fintegration-studio\u002Fstart\u002Findex",[1733,1735,1741,1747,1753,1759],{"title":1729,"path":1730,"stem":1731,"icon":1734},"i-lucide-zap",{"title":1736,"path":1737,"stem":1738,"children":1739},"Event triggers","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fstart\u002Fevent-triggers","docs\u002Fstudios\u002Fintegration-studio\u002Fstart\u002Fevent-triggers\u002Findex",[1740],{"title":1736,"path":1737,"stem":1738},{"title":1742,"path":1743,"stem":1744,"children":1745},"Execution modes","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fstart\u002Fexecution-modes","docs\u002Fstudios\u002Fintegration-studio\u002Fstart\u002Fexecution-modes\u002Findex",[1746],{"title":1742,"path":1743,"stem":1744},{"title":1748,"path":1749,"stem":1750,"children":1751},"Schedule triggers","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fstart\u002Fschedule-triggers","docs\u002Fstudios\u002Fintegration-studio\u002Fstart\u002Fschedule-triggers\u002Findex",[1752],{"title":1748,"path":1749,"stem":1750},{"title":1754,"path":1755,"stem":1756,"children":1757},"Triggers","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fstart\u002Ftriggers","docs\u002Fstudios\u002Fintegration-studio\u002Fstart\u002Ftriggers\u002Findex",[1758],{"title":1754,"path":1755,"stem":1756},{"title":1760,"path":1761,"stem":1762,"children":1763},"Webhook triggers","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fstart\u002Fwebhook-triggers","docs\u002Fstudios\u002Fintegration-studio\u002Fstart\u002Fwebhook-triggers\u002Findex",[1764],{"title":1760,"path":1761,"stem":1762},{"title":1766,"path":1767,"stem":1768,"children":1769},"Experience Studio","\u002Fdocs\u002Fstudios\u002Fsites","docs\u002Fstudios\u002Fsites\u002Findex",[1770,1771,1819,1871,1997,2003,2045],{"title":1766,"path":1767,"stem":1768},{"title":1772,"path":1773,"stem":1774,"children":1775,"icon":418},"Compose pages","\u002Fdocs\u002Fstudios\u002Fsites\u002Fblocks","docs\u002Fstudios\u002Fsites\u002Fblocks\u002Findex",[1776,1777,1783,1789,1795,1801,1807,1813],{"title":1772,"path":1773,"stem":1774,"icon":418},{"title":1778,"path":1779,"stem":1780,"children":1781},"Block catalog","\u002Fdocs\u002Fstudios\u002Fsites\u002Fblocks\u002Fblock-catalog","docs\u002Fstudios\u002Fsites\u002Fblocks\u002Fblock-catalog\u002Findex",[1782],{"title":1778,"path":1779,"stem":1780},{"title":1784,"path":1785,"stem":1786,"children":1787},"Block options","\u002Fdocs\u002Fstudios\u002Fsites\u002Fblocks\u002Fblock-options","docs\u002Fstudios\u002Fsites\u002Fblocks\u002Fblock-options\u002Findex",[1788],{"title":1784,"path":1785,"stem":1786},{"title":1790,"path":1791,"stem":1792,"children":1793},"How a block works","\u002Fdocs\u002Fstudios\u002Fsites\u002Fblocks\u002Fhow-a-block-works","docs\u002Fstudios\u002Fsites\u002Fblocks\u002Fhow-a-block-works\u002Findex",[1794],{"title":1790,"path":1791,"stem":1792},{"title":1796,"path":1797,"stem":1798,"children":1799},"Inline editing","\u002Fdocs\u002Fstudios\u002Fsites\u002Fblocks\u002Finline-editing","docs\u002Fstudios\u002Fsites\u002Fblocks\u002Finline-editing\u002Findex",[1800],{"title":1796,"path":1797,"stem":1798},{"title":1802,"path":1803,"stem":1804,"children":1805},"Reading published pages","\u002Fdocs\u002Fstudios\u002Fsites\u002Fblocks\u002Freading-pages","docs\u002Fstudios\u002Fsites\u002Fblocks\u002Freading-pages\u002Findex",[1806],{"title":1802,"path":1803,"stem":1804},{"title":1808,"path":1809,"stem":1810,"children":1811},"Registering blocks","\u002Fdocs\u002Fstudios\u002Fsites\u002Fblocks\u002Fregistering","docs\u002Fstudios\u002Fsites\u002Fblocks\u002Fregistering\u002Findex",[1812],{"title":1808,"path":1809,"stem":1810},{"title":1814,"path":1815,"stem":1816,"children":1817},"Shells and fields","\u002Fdocs\u002Fstudios\u002Fsites\u002Fblocks\u002Fshells-and-fields","docs\u002Fstudios\u002Fsites\u002Fblocks\u002Fshells-and-fields\u002Findex",[1818],{"title":1814,"path":1815,"stem":1816},{"title":1820,"path":1821,"stem":1822,"children":1823,"icon":262},"Connect data","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdata","docs\u002Fstudios\u002Fsites\u002Fdata\u002Findex",[1824,1825,1830,1836,1842,1847,1853,1859,1865],{"title":1820,"path":1821,"stem":1822,"icon":262},{"title":550,"path":1826,"stem":1827,"children":1828},"\u002Fdocs\u002Fstudios\u002Fsites\u002Fdata\u002Fauthentication","docs\u002Fstudios\u002Fsites\u002Fdata\u002Fauthentication\u002Findex",[1829],{"title":550,"path":1826,"stem":1827},{"title":1831,"path":1832,"stem":1833,"children":1834},"The BFF pattern","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdata\u002Fbff-pattern","docs\u002Fstudios\u002Fsites\u002Fdata\u002Fbff-pattern\u002Findex",[1835],{"title":1831,"path":1832,"stem":1833},{"title":1837,"path":1838,"stem":1839,"children":1840},"Catalog, cart, checkout","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdata\u002Fcatalog-cart-checkout","docs\u002Fstudios\u002Fsites\u002Fdata\u002Fcatalog-cart-checkout\u002Findex",[1841],{"title":1837,"path":1838,"stem":1839},{"title":1297,"path":1843,"stem":1844,"children":1845},"\u002Fdocs\u002Fstudios\u002Fsites\u002Fdata\u002Fforms","docs\u002Fstudios\u002Fsites\u002Fdata\u002Fforms\u002Findex",[1846],{"title":1297,"path":1843,"stem":1844},{"title":1848,"path":1849,"stem":1850,"children":1851},"Media and assets","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdata\u002Fmedia","docs\u002Fstudios\u002Fsites\u002Fdata\u002Fmedia\u002Findex",[1852],{"title":1848,"path":1849,"stem":1850},{"title":1854,"path":1855,"stem":1856,"children":1857},"Multi-tenant themes","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdata\u002Fmulti-tenant-themes","docs\u002Fstudios\u002Fsites\u002Fdata\u002Fmulti-tenant-themes\u002Findex",[1858],{"title":1854,"path":1855,"stem":1856},{"title":1860,"path":1861,"stem":1862,"children":1863},"Search collections","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdata\u002Fsearch-collections","docs\u002Fstudios\u002Fsites\u002Fdata\u002Fsearch-collections\u002Findex",[1864],{"title":1860,"path":1861,"stem":1862},{"title":1866,"path":1867,"stem":1868,"children":1869},"Search","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdata\u002Fsearch","docs\u002Fstudios\u002Fsites\u002Fdata\u002Fsearch\u002Findex",[1870],{"title":1866,"path":1867,"stem":1868},{"title":1872,"path":1873,"stem":1874,"children":1875,"icon":1186},"Build and deploy","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Findex",[1876,1877,1883,1889,1895,1901,1907,1913,1991],{"title":1872,"path":1873,"stem":1874,"icon":1186},{"title":1878,"path":1879,"stem":1880,"children":1881},"Build configuration","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fbuild-configuration","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fbuild-configuration\u002Findex",[1882],{"title":1878,"path":1879,"stem":1880},{"title":1884,"path":1885,"stem":1886,"children":1887},"Compute specifications","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fcompute-specifications","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fcompute-specifications\u002Findex",[1888],{"title":1884,"path":1885,"stem":1886},{"title":1890,"path":1891,"stem":1892,"children":1893},"Environment variables","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fenvironment-variables","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fenvironment-variables\u002Findex",[1894],{"title":1890,"path":1891,"stem":1892},{"title":1896,"path":1897,"stem":1898,"children":1899},"From Git","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Ffrom-git","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Ffrom-git\u002Findex",[1900],{"title":1896,"path":1897,"stem":1898},{"title":1902,"path":1903,"stem":1904,"children":1905},"From the CLI","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Ffrom-the-cli","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Ffrom-the-cli\u002Findex",[1906],{"title":1902,"path":1903,"stem":1904},{"title":1908,"path":1909,"stem":1910,"children":1911},"Manually","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fmanually","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fmanually\u002Findex",[1912],{"title":1908,"path":1909,"stem":1910},{"title":1914,"path":1915,"stem":1916,"children":1917},"Quick-starts","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Findex",[1918,1919,1925,1931,1937,1943,1949,1955,1961,1967,1973,1979,1985],{"title":1914,"path":1915,"stem":1916},{"title":1920,"path":1921,"stem":1922,"children":1923},"Deploy an Angular app to revenexx Storefronts","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fangular","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fangular\u002Findex",[1924],{"title":1920,"path":1921,"stem":1922},{"title":1926,"path":1927,"stem":1928,"children":1929},"Deploy a Astro app to revenexx Storefronts","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fastro","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fastro\u002Findex",[1930],{"title":1926,"path":1927,"stem":1928},{"title":1932,"path":1933,"stem":1934,"children":1935},"Deploy a Flutter Web app to revenexx Storefronts","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fflutter","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fflutter\u002Findex",[1936],{"title":1932,"path":1933,"stem":1934},{"title":1938,"path":1939,"stem":1940,"children":1941},"Deploy a Next.js app to revenexx Storefronts","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fnextjs","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fnextjs\u002Findex",[1942],{"title":1938,"path":1939,"stem":1940},{"title":1944,"path":1945,"stem":1946,"children":1947},"Deploy a Nuxt app to revenexx Storefronts","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fnuxt","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fnuxt\u002Findex",[1948],{"title":1944,"path":1945,"stem":1946},{"title":1950,"path":1951,"stem":1952,"children":1953},"Deploy a React Native app to revenexx Storefronts","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Freact-native","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Freact-native\u002Findex",[1954],{"title":1950,"path":1951,"stem":1952},{"title":1956,"path":1957,"stem":1958,"children":1959},"Deploy a React app to revenexx Storefronts","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Freact","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Freact\u002Findex",[1960],{"title":1956,"path":1957,"stem":1958},{"title":1962,"path":1963,"stem":1964,"children":1965},"Deploy a Remix app to revenexx Storefronts","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fremix","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fremix\u002Findex",[1966],{"title":1962,"path":1963,"stem":1964},{"title":1968,"path":1969,"stem":1970,"children":1971},"Deploy a SvelteKit app to revenexx Storefronts","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fsveltekit","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fsveltekit\u002Findex",[1972],{"title":1968,"path":1969,"stem":1970},{"title":1974,"path":1975,"stem":1976,"children":1977},"Deploy a TanStack Start app to revenexx Storefronts","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Ftanstack-start","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Ftanstack-start\u002Findex",[1978],{"title":1974,"path":1975,"stem":1976},{"title":1980,"path":1981,"stem":1982,"children":1983},"Deploy a Vanilla JS app to revenexx Storefronts","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fvanilla","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fvanilla\u002Findex",[1984],{"title":1980,"path":1981,"stem":1982},{"title":1986,"path":1987,"stem":1988,"children":1989},"Deploy a Vue.js app to revenexx Storefronts","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fvue","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fvue\u002Findex",[1990],{"title":1986,"path":1987,"stem":1988},{"title":1992,"path":1993,"stem":1994,"children":1995},"Starting points","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fstarting-points","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fstarting-points\u002Findex",[1996],{"title":1992,"path":1993,"stem":1994},{"title":1097,"path":1998,"stem":1999,"children":2000,"icon":2002},"\u002Fdocs\u002Fstudios\u002Fsites\u002Fgetting-started","docs\u002Fstudios\u002Fsites\u002Fgetting-started\u002Findex",[2001],{"title":1097,"path":1998,"stem":1999,"icon":2002},"i-lucide-terminal",{"title":2004,"path":2005,"stem":2006,"children":2007,"icon":615},"Production","\u002Fdocs\u002Fstudios\u002Fsites\u002Fproduction","docs\u002Fstudios\u002Fsites\u002Fproduction\u002Findex",[2008,2009,2015,2021,2027,2033,2039],{"title":2004,"path":2005,"stem":2006,"icon":615},{"title":2010,"path":2011,"stem":2012,"children":2013},"Deployments","\u002Fdocs\u002Fstudios\u002Fsites\u002Fproduction\u002Fdeployments","docs\u002Fstudios\u002Fsites\u002Fproduction\u002Fdeployments\u002Findex",[2014],{"title":2010,"path":2011,"stem":2012},{"title":2016,"path":2017,"stem":2018,"children":2019},"Domains","\u002Fdocs\u002Fstudios\u002Fsites\u002Fproduction\u002Fdomains","docs\u002Fstudios\u002Fsites\u002Fproduction\u002Fdomains\u002Findex",[2020],{"title":2016,"path":2017,"stem":2018},{"title":2022,"path":2023,"stem":2024,"children":2025},"Instant rollbacks","\u002Fdocs\u002Fstudios\u002Fsites\u002Fproduction\u002Finstant-rollbacks","docs\u002Fstudios\u002Fsites\u002Fproduction\u002Finstant-rollbacks\u002Findex",[2026],{"title":2022,"path":2023,"stem":2024},{"title":2028,"path":2029,"stem":2030,"children":2031},"Logs","\u002Fdocs\u002Fstudios\u002Fsites\u002Fproduction\u002Flogs","docs\u002Fstudios\u002Fsites\u002Fproduction\u002Flogs\u002Findex",[2032],{"title":2028,"path":2029,"stem":2030},{"title":2034,"path":2035,"stem":2036,"children":2037},"Previews","\u002Fdocs\u002Fstudios\u002Fsites\u002Fproduction\u002Fpreviews","docs\u002Fstudios\u002Fsites\u002Fproduction\u002Fpreviews\u002Findex",[2038],{"title":2034,"path":2035,"stem":2036},{"title":2040,"path":2041,"stem":2042,"children":2043},"Publishing a theme","\u002Fdocs\u002Fstudios\u002Fsites\u002Fproduction\u002Fpublishing-a-theme","docs\u002Fstudios\u002Fsites\u002Fproduction\u002Fpublishing-a-theme\u002Findex",[2044],{"title":2040,"path":2041,"stem":2042},{"title":2046,"path":2047,"stem":2048,"children":2049,"icon":404},"Build the theme","\u002Fdocs\u002Fstudios\u002Fsites\u002Ftheme","docs\u002Fstudios\u002Fsites\u002Ftheme\u002Findex",[2050,2051,2057,2063,2069,2075,2081,2087,2093,2111],{"title":2046,"path":2047,"stem":2048,"icon":404},{"title":2052,"path":2053,"stem":2054,"children":2055},"Theme anatomy","\u002Fdocs\u002Fstudios\u002Fsites\u002Ftheme\u002Fanatomy","docs\u002Fstudios\u002Fsites\u002Ftheme\u002Fanatomy\u002Findex",[2056],{"title":2052,"path":2053,"stem":2054},{"title":2058,"path":2059,"stem":2060,"children":2061},"Design tokens","\u002Fdocs\u002Fstudios\u002Fsites\u002Ftheme\u002Fdesign-tokens","docs\u002Fstudios\u002Fsites\u002Ftheme\u002Fdesign-tokens\u002Findex",[2062],{"title":2058,"path":2059,"stem":2060},{"title":2064,"path":2065,"stem":2066,"children":2067},"Frameworks","\u002Fdocs\u002Fstudios\u002Fsites\u002Ftheme\u002Fframeworks","docs\u002Fstudios\u002Fsites\u002Ftheme\u002Fframeworks\u002Findex",[2068],{"title":2064,"path":2065,"stem":2066},{"title":2070,"path":2071,"stem":2072,"children":2073},"The layer chain","\u002Fdocs\u002Fstudios\u002Fsites\u002Ftheme\u002Flayer-chain","docs\u002Fstudios\u002Fsites\u002Ftheme\u002Flayer-chain\u002Findex",[2074],{"title":2070,"path":2071,"stem":2072},{"title":2076,"path":2077,"stem":2078,"children":2079},"Local development","\u002Fdocs\u002Fstudios\u002Fsites\u002Ftheme\u002Flocal-development","docs\u002Fstudios\u002Fsites\u002Ftheme\u002Flocal-development\u002Findex",[2080],{"title":2076,"path":2077,"stem":2078},{"title":2082,"path":2083,"stem":2084,"children":2085},"Modules and plugins","\u002Fdocs\u002Fstudios\u002Fsites\u002Ftheme\u002Fmodules-and-plugins","docs\u002Fstudios\u002Fsites\u002Ftheme\u002Fmodules-and-plugins\u002Findex",[2086],{"title":2082,"path":2083,"stem":2084},{"title":2088,"path":2089,"stem":2090,"children":2091},"Overriding","\u002Fdocs\u002Fstudios\u002Fsites\u002Ftheme\u002Foverriding","docs\u002Fstudios\u002Fsites\u002Ftheme\u002Foverriding\u002Findex",[2092],{"title":2088,"path":2089,"stem":2090},{"title":2094,"path":2095,"stem":2096,"children":2097},"Rendering","\u002Fdocs\u002Fstudios\u002Fsites\u002Ftheme\u002Frendering","docs\u002Fstudios\u002Fsites\u002Ftheme\u002Frendering\u002Findex",[2098,2099,2105],{"title":2094,"path":2095,"stem":2096},{"title":2100,"path":2101,"stem":2102,"children":2103},"SSR","\u002Fdocs\u002Fstudios\u002Fsites\u002Ftheme\u002Frendering\u002Fssr","docs\u002Fstudios\u002Fsites\u002Ftheme\u002Frendering\u002Fssr\u002Findex",[2104],{"title":2100,"path":2101,"stem":2102},{"title":2106,"path":2107,"stem":2108,"children":2109},"Static","\u002Fdocs\u002Fstudios\u002Fsites\u002Ftheme\u002Frendering\u002Fstatic","docs\u002Fstudios\u002Fsites\u002Ftheme\u002Frendering\u002Fstatic\u002Findex",[2110],{"title":2106,"path":2107,"stem":2108},{"title":2112,"path":2113,"stem":2114,"children":2115},"Service modes","\u002Fdocs\u002Fstudios\u002Fsites\u002Ftheme\u002Fservice-modes","docs\u002Fstudios\u002Fsites\u002Ftheme\u002Fservice-modes\u002Findex",[2116],{"title":2112,"path":2113,"stem":2114},{"title":2118,"path":2119,"stem":2120,"children":2121},"Tools","\u002Fdocs\u002Ftools","docs\u002Ftools\u002Findex",[2122,2123,2130,2345],{"title":2118,"path":2119,"stem":2120},{"title":2124,"path":2125,"stem":2126,"children":2127,"icon":2129},"AI agents","\u002Fdocs\u002Ftools\u002Fai-agents","docs\u002Ftools\u002Fai-agents\u002Findex",[2128],{"title":2124,"path":2125,"stem":2126,"icon":2129},"i-lucide-shield-alert",{"title":2131,"path":2132,"stem":2133,"children":2134},"Command line","\u002Fdocs\u002Ftools\u002Fcommand-line","docs\u002Ftools\u002Fcommand-line\u002Findex",[2135,2136,2142,2147,2153,2159,2165,2171,2177,2183,2303,2309,2315,2321,2327,2333,2339],{"title":2131,"path":2132,"stem":2133},{"title":2137,"path":2138,"stem":2139,"children":2140},"Aliases","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Faliases","docs\u002Ftools\u002Fcommand-line\u002Faliases\u002Findex",[2141],{"title":2137,"path":2138,"stem":2139},{"title":550,"path":2143,"stem":2144,"children":2145},"\u002Fdocs\u002Ftools\u002Fcommand-line\u002Fauthentication","docs\u002Ftools\u002Fcommand-line\u002Fauthentication\u002Findex",[2146],{"title":550,"path":2143,"stem":2144},{"title":2148,"path":2149,"stem":2150,"children":2151},"Commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Fcommands","docs\u002Ftools\u002Fcommand-line\u002Fcommands\u002Findex",[2152],{"title":2148,"path":2149,"stem":2150},{"title":2154,"path":2155,"stem":2156,"children":2157},"Global commands reference","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Fglobal-commands","docs\u002Ftools\u002Fcommand-line\u002Fglobal-commands\u002Findex",[2158],{"title":2154,"path":2155,"stem":2156},{"title":2160,"path":2161,"stem":2162,"children":2163},"Installation","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Finstallation","docs\u002Ftools\u002Fcommand-line\u002Finstallation\u002Findex",[2164],{"title":2160,"path":2161,"stem":2162},{"title":2166,"path":2167,"stem":2168,"children":2169},"Interactive use","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Finteractive","docs\u002Ftools\u002Fcommand-line\u002Finteractive\u002Findex",[2170],{"title":2166,"path":2167,"stem":2168},{"title":2172,"path":2173,"stem":2174,"children":2175},"Non-interactive use","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Fnon-interactive","docs\u002Ftools\u002Fcommand-line\u002Fnon-interactive\u002Findex",[2176],{"title":2172,"path":2173,"stem":2174},{"title":2178,"path":2179,"stem":2180,"children":2181},"Project configuration","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Fproject-configuration","docs\u002Ftools\u002Fcommand-line\u002Fproject-configuration\u002Findex",[2182],{"title":2178,"path":2179,"stem":2180},{"title":2184,"path":2185,"stem":2186,"children":2187},"Command reference","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Findex",[2188,2189,2195,2201,2207,2213,2219,2225,2231,2237,2243,2249,2255,2261,2267,2273,2279,2285,2291,2297],{"title":2184,"path":2185,"stem":2186},{"title":2190,"path":2191,"stem":2192,"children":2193},"About commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fabout","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fabout\u002Findex",[2194],{"title":2190,"path":2191,"stem":2192},{"title":2196,"path":2197,"stem":2198,"children":2199},"Apps commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fapps","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fapps\u002Findex",[2200],{"title":2196,"path":2197,"stem":2198},{"title":2202,"path":2203,"stem":2204,"children":2205},"Carts commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fcarts","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fcarts\u002Findex",[2206],{"title":2202,"path":2203,"stem":2204},{"title":2208,"path":2209,"stem":2210,"children":2211},"Channels commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fchannels","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fchannels\u002Findex",[2212],{"title":2208,"path":2209,"stem":2210},{"title":2214,"path":2215,"stem":2216,"children":2217},"Create commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fcreate","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fcreate\u002Findex",[2218],{"title":2214,"path":2215,"stem":2216},{"title":2220,"path":2221,"stem":2222,"children":2223},"Customers commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fcustomers","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fcustomers\u002Findex",[2224],{"title":2220,"path":2221,"stem":2222},{"title":2226,"path":2227,"stem":2228,"children":2229},"Deploy commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fdeploy","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fdeploy\u002Findex",[2230],{"title":2226,"path":2227,"stem":2228},{"title":2232,"path":2233,"stem":2234,"children":2235},"Forms commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fforms","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fforms\u002Findex",[2236],{"title":2232,"path":2233,"stem":2234},{"title":2238,"path":2239,"stem":2240,"children":2241},"Markets commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fmarkets","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fmarkets\u002Findex",[2242],{"title":2238,"path":2239,"stem":2240},{"title":2244,"path":2245,"stem":2246,"children":2247},"Order lists commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Forderlists","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Forderlists\u002Findex",[2248],{"title":2244,"path":2245,"stem":2246},{"title":2250,"path":2251,"stem":2252,"children":2253},"Orders commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Forders","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Forders\u002Findex",[2254],{"title":2250,"path":2251,"stem":2252},{"title":2256,"path":2257,"stem":2258,"children":2259},"Pages commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fpages","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fpages\u002Findex",[2260],{"title":2256,"path":2257,"stem":2258},{"title":2262,"path":2263,"stem":2264,"children":2265},"Prices commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fprices","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fprices\u002Findex",[2266],{"title":2262,"path":2263,"stem":2264},{"title":2268,"path":2269,"stem":2270,"children":2271},"Products commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fproducts","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fproducts\u002Findex",[2272],{"title":2268,"path":2269,"stem":2270},{"title":2274,"path":2275,"stem":2276,"children":2277},"Search commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fsearch","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fsearch\u002Findex",[2278],{"title":2274,"path":2275,"stem":2276},{"title":2280,"path":2281,"stem":2282,"children":2283},"Settings commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fsettings","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fsettings\u002Findex",[2284],{"title":2280,"path":2281,"stem":2282},{"title":2286,"path":2287,"stem":2288,"children":2289},"Sites commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fsites","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fsites\u002Findex",[2290],{"title":2286,"path":2287,"stem":2288},{"title":2292,"path":2293,"stem":2294,"children":2295},"Skills commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fskills","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fskills\u002Findex",[2296],{"title":2292,"path":2293,"stem":2294},{"title":2298,"path":2299,"stem":2300,"children":2301},"Storage commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fstorage","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fstorage\u002Findex",[2302],{"title":2298,"path":2299,"stem":2300},{"title":2304,"path":2305,"stem":2306,"children":2307},"Interactive shell (REPL)","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Frepl","docs\u002Ftools\u002Fcommand-line\u002Frepl\u002Findex",[2308],{"title":2304,"path":2305,"stem":2306},{"title":2310,"path":2311,"stem":2312,"children":2313},"Scaffolding","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Fscaffolding","docs\u002Ftools\u002Fcommand-line\u002Fscaffolding\u002Findex",[2314],{"title":2310,"path":2311,"stem":2312},{"title":2316,"path":2317,"stem":2318,"children":2319},"Scripting & output","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Fscripting","docs\u002Ftools\u002Fcommand-line\u002Fscripting\u002Findex",[2320],{"title":2316,"path":2317,"stem":2318},{"title":2322,"path":2323,"stem":2324,"children":2325},"Skills","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Fskills","docs\u002Ftools\u002Fcommand-line\u002Fskills\u002Findex",[2326],{"title":2322,"path":2323,"stem":2324},{"title":2328,"path":2329,"stem":2330,"children":2331},"Full-screen app (TUI)","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Ftui","docs\u002Ftools\u002Fcommand-line\u002Ftui\u002Findex",[2332],{"title":2328,"path":2329,"stem":2330},{"title":2334,"path":2335,"stem":2336,"children":2337},"Type generation","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Ftype-generation","docs\u002Ftools\u002Fcommand-line\u002Ftype-generation\u002Findex",[2338],{"title":2334,"path":2335,"stem":2336},{"title":2340,"path":2341,"stem":2342,"children":2343},"Background watchers","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Fwatch","docs\u002Ftools\u002Fcommand-line\u002Fwatch\u002Findex",[2344],{"title":2340,"path":2341,"stem":2342},{"title":2346,"path":2347,"stem":2348,"children":2349},"Model Context Protocol","\u002Fdocs\u002Ftools\u002Fmcp","docs\u002Ftools\u002Fmcp\u002Findex",[2350,2351,2357,2363,2369,2375,2381,2387,2393],{"title":2346,"path":2347,"stem":2348},{"title":2352,"path":2353,"stem":2354,"children":2355},"revenexx docs MCP in Google Antigravity","\u002Fdocs\u002Ftools\u002Fmcp\u002Fantigravity","docs\u002Ftools\u002Fmcp\u002Fantigravity\u002Findex",[2356],{"title":2352,"path":2353,"stem":2354},{"title":2358,"path":2359,"stem":2360,"children":2361},"revenexx docs MCP in Claude Code","\u002Fdocs\u002Ftools\u002Fmcp\u002Fclaude-code","docs\u002Ftools\u002Fmcp\u002Fclaude-code\u002Findex",[2362],{"title":2358,"path":2359,"stem":2360},{"title":2364,"path":2365,"stem":2366,"children":2367},"revenexx docs MCP in Claude Desktop","\u002Fdocs\u002Ftools\u002Fmcp\u002Fclaude-desktop","docs\u002Ftools\u002Fmcp\u002Fclaude-desktop\u002Findex",[2368],{"title":2364,"path":2365,"stem":2366},{"title":2370,"path":2371,"stem":2372,"children":2373},"revenexx docs MCP in Cursor","\u002Fdocs\u002Ftools\u002Fmcp\u002Fcursor","docs\u002Ftools\u002Fmcp\u002Fcursor\u002Findex",[2374],{"title":2370,"path":2371,"stem":2372},{"title":2376,"path":2377,"stem":2378,"children":2379},"revenexx docs MCP in OpenCode","\u002Fdocs\u002Ftools\u002Fmcp\u002Fopencode","docs\u002Ftools\u002Fmcp\u002Fopencode\u002Findex",[2380],{"title":2376,"path":2377,"stem":2378},{"title":2382,"path":2383,"stem":2384,"children":2385},"revenexx docs MCP in VS Code","\u002Fdocs\u002Ftools\u002Fmcp\u002Fvscode","docs\u002Ftools\u002Fmcp\u002Fvscode\u002Findex",[2386],{"title":2382,"path":2383,"stem":2384},{"title":2388,"path":2389,"stem":2390,"children":2391},"revenexx docs MCP in Windsurf","\u002Fdocs\u002Ftools\u002Fmcp\u002Fwindsurf","docs\u002Ftools\u002Fmcp\u002Fwindsurf\u002Findex",[2392],{"title":2388,"path":2389,"stem":2390},{"title":2394,"path":2395,"stem":2396,"children":2397},"revenexx docs MCP in Zenflow","\u002Fdocs\u002Ftools\u002Fmcp\u002Fzenflow","docs\u002Ftools\u002Fmcp\u002Fzenflow\u002Findex",[2398],{"title":2394,"path":2395,"stem":2396},{"id":2400,"title":2401,"body":2402,"description":5185,"extension":5186,"landing":5187,"links":5187,"meta":5188,"navigation":5189,"path":209,"seo":5190,"sitemap":5191,"stem":210,"__hash__":5192},"docs\u002Fdocs\u002Fguides\u002Fcommerce\u002Fpurchase-approvals\u002Findex.md","Set up purchase approvals and cost-center budgets",{"type":2403,"value":2404,"toc":5169},"minimark",[2405,2409,2467,2521,2534,2539,2546,2574,2578,2592,2677,2689,2692,2787,2791,2803,2916,2964,2968,2975,3097,3166,3180,3210,3215,3247,3323,3350,3356,3407,3411,3425,3512,3605,3628,3662,3760,3763,3785,3789,3807,3925,3931,4055,4060,4122,4131,4163,4181,4215,4219,4261,4396,4409,4415,4568,4585,4603,4607,4610,4646,4674,4685,4688,4777,4847,4851,4858,4905,4981,5008,5012,5123,5127,5165],[2406,2407,2408],"p",{},"In a B2B shop, a buyer's cart often must not become an order straight away. Someone in the buyer's company has to sign it off first, and the spend has to be booked against a cost center with a budget. This guide sets that up. At the end, your checkout submits the cart once, and the platform answers with one of three results: an order placed at once, a purchase request waiting for its approvers, or a refusal naming the rule that stopped it. The budget is held while the request waits and released if the request is declined or cancelled.",[2406,2410,2411,2412,2415,2416,2415,2419,2421,2422,2424,2425,2428,2429,2415,2433,2421,2436,2439,2440,2444,2445,2448,2449,2415,2453,2457,2458,2462,2463,2466],{},"This is for developers wiring a B2B storefront's checkout and the back office that configures it. You need a tenant with the ",[2413,2414,1565],"strong",{},", ",[2413,2417,2418],{},"Cost Centers",[2413,2420,1404],{}," and ",[2413,2423,1511],{}," apps, organizations and contacts for your buyers (see ",[2426,2427,1411],"a",{"href":1412},"), and an API key for your checkout server with the ",[2430,2431,2432],"code",{},"procurement.*",[2430,2434,2435],{},"cost_centers.*",[2430,2437,2438],{},"customers.*"," scopes (see ",[2426,2441,2443],{"href":2442},"\u002Fdocs\u002Fgetting-started\u002Fprerequisites#which-scope-covers-which-app","which scope covers which app","). New to the platform? ",[2426,2446,64],{"href":2447},"\u002Fdocs\u002Fgetting-started\u002Fprerequisites#cockpit-and-who-grants-access"," covers Cockpit, your ",[2426,2450,2452],{"href":2451},"\u002Fdocs\u002Fgetting-started\u002Fprerequisites#find-your-tenant-slug","tenant slug",[2426,2454,2456],{"href":2455},"\u002Fdocs\u002Fgetting-started\u002Fprerequisites#check-and-install-an-app","installing an app"," and a ",[2426,2459,2461],{"href":2460},"\u002Fdocs\u002Fgetting-started\u002Fprerequisites#get-a-test-tenant","test tenant",". Every call goes through the ",[2426,2464,2465],{"href":508},"API gateway",":",[2468,2469,2475],"pre",{"className":2470,"code":2471,"filename":2472,"language":2473,"meta":2474,"style":2474},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","export REVENEXX_TENANT=\"\u003CTENANT_SLUG>\"\nexport REVENEXX_API_KEY=\"rvxk_...\"\n","Environment","bash","",[2430,2476,2477,2504],{"__ignoreMap":2474},[2478,2479,2482,2486,2490,2494,2497,2501],"span",{"class":2480,"line":2481},"line",1,[2478,2483,2485],{"class":2484},"spNyl","export",[2478,2487,2489],{"class":2488},"sTEyZ"," REVENEXX_TENANT",[2478,2491,2493],{"class":2492},"sMK4o","=",[2478,2495,2496],{"class":2492},"\"",[2478,2498,2500],{"class":2499},"sfazB","\u003CTENANT_SLUG>",[2478,2502,2503],{"class":2492},"\"\n",[2478,2505,2507,2509,2512,2514,2516,2519],{"class":2480,"line":2506},2,[2478,2508,2485],{"class":2484},[2478,2510,2511],{"class":2488}," REVENEXX_API_KEY",[2478,2513,2493],{"class":2492},[2478,2515,2496],{"class":2492},[2478,2517,2518],{"class":2499},"rvxk_...",[2478,2520,2503],{"class":2492},[2406,2522,2523,2524,2527,2528,2530,2531,2533],{},"This is not the order-value threshold of the Orders app, which accepts an order as ",[2430,2525,2526],{},"pending"," instead of placing it (see ",[2426,2529,1511],{"href":1548},"). A purchase request is a separate record, owned by the Procurement app, and there is no order until it is approved. Leave that Orders threshold off on a tenant that approves through Procurement: an order Procurement places above it is held as ",[2430,2532,2526],{}," a second time.",[2535,2536,2538],"h2",{"id":2537},"how-a-submission-is-decided","How a submission is decided",[2406,2540,2541,2542,2545],{},"Your checkout sends the cart to ",[2430,2543,2544],{},"POST \u002Fv1\u002Fprocurement\u002Fsubmit"," instead of placing an order. The Procurement app then:",[2547,2548,2549,2556,2562,2568],"ol",{},[2550,2551,2552,2555],"li",{},[2413,2553,2554],{},"Reads the buyer."," It takes the contact's role from the Customers app, and each line's cost center from the cart.",[2550,2557,2558,2561],{},[2413,2559,2560],{},"Evaluates every active approval rule."," Each rule has a condition, an effect and an approver.",[2550,2563,2564,2567],{},[2413,2565,2566],{},"Answers with one outcome."," If a rule prevents the purchase, nothing is created. If one or more rules require approval, a purchase request is created with one pending approval per rule. If no rule fires, the order is placed at once.",[2550,2569,2570,2573],{},[2413,2571,2572],{},"Moves the budget."," A direct order spends it on the spot. A purchase request reserves it, and the reservation becomes spend when the order is placed or goes back to the budget when the request is declined or cancelled.",[2535,2575,2577],{"id":2576},"_1-give-buyers-the-right-role","1. Give buyers the right role",[2406,2579,2580,2581,2584,2585,2421,2588,2591],{},"Procurement decides what a buyer may do from one field, the contact's ",[2430,2582,2583],{},"role",". It honours four roles. The middle two columns are the permissions your approval rules check in step 5, ",[2430,2586,2587],{},"place-order",[2430,2589,2590],{},"approve-order",". A role routes nothing to approval on its own: without a rule, every cart becomes an order.",[2593,2594,2595,2617],"table",{},[2596,2597,2598],"thead",{},[2599,2600,2601,2605,2610,2614],"tr",{},[2602,2603,2604],"th",{},"Role",[2602,2606,2608],{"align":2607},"center",[2430,2609,2587],{},[2602,2611,2612],{"align":2607},[2430,2613,2590],{},[2602,2615,2616],{},"Also",[2618,2619,2620,2636,2650,2663],"tbody",{},[2599,2621,2622,2628,2631,2633],{},[2623,2624,2625],"td",{},[2430,2626,2627],{},"requester",[2623,2629,2630],{"align":2607},"No",[2623,2632,2630],{"align":2607},[2623,2634,2635],{},"Can fill a cart and submit it",[2599,2637,2638,2643,2646,2648],{},[2623,2639,2640],{},[2430,2641,2642],{},"buyer",[2623,2644,2645],{"align":2607},"Yes",[2623,2647,2630],{"align":2607},[2623,2649],{},[2599,2651,2652,2657,2659,2661],{},[2623,2653,2654],{},[2430,2655,2656],{},"approver",[2623,2658,2645],{"align":2607},[2623,2660,2645],{"align":2607},[2623,2662],{},[2599,2664,2665,2670,2672,2674],{},[2623,2666,2667],{},[2430,2668,2669],{},"admin",[2623,2671,2645],{"align":2607},[2623,2673,2645],{"align":2607},[2623,2675,2676],{},"May approve a whole request at once, and cancel anyone's request",[2406,2678,2679,2682,2683,2685,2686,2688],{},[2430,2680,2681],{},"viewer",", and any custom role your tenant defines in the Customers app, grant nothing in Procurement. A contact holding one can submit, but a rule like \"missing permission to place an order\" fires for them every time. The mapping above is fixed (as of 2026-10). It does not follow the role-to-permission table you edit in ",[2426,2684,1423],{"href":1424},". ",[2426,2687,166],{"href":167}," walks the whole buyer side.",[2406,2690,2691],{},"Set the role on the contact:",[2468,2693,2696],{"className":2470,"code":2694,"filename":2695,"language":2473,"meta":2474,"style":2474},"curl -s -X PUT \"https:\u002F\u002Fapi.revenexx.com\u002Fv1\u002Fcustomers\u002Fcontacts\u002F\u003CCONTACT_ID>\" \\\n  -H \"X-Revenexx-Tenant: $REVENEXX_TENANT\" \\\n  -H \"X-Revenexx-Api-Key: $REVENEXX_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{ \"role\": \"approver\" }'\n","Set the buyer's role",[2430,2697,2698,2724,2741,2758,2772],{"__ignoreMap":2474},[2478,2699,2700,2704,2707,2710,2713,2716,2719,2721],{"class":2480,"line":2481},[2478,2701,2703],{"class":2702},"sBMFI","curl",[2478,2705,2706],{"class":2499}," -s",[2478,2708,2709],{"class":2499}," -X",[2478,2711,2712],{"class":2499}," PUT",[2478,2714,2715],{"class":2492}," \"",[2478,2717,2718],{"class":2499},"https:\u002F\u002Fapi.revenexx.com\u002Fv1\u002Fcustomers\u002Fcontacts\u002F\u003CCONTACT_ID>",[2478,2720,2496],{"class":2492},[2478,2722,2723],{"class":2488}," \\\n",[2478,2725,2726,2729,2731,2734,2737,2739],{"class":2480,"line":2506},[2478,2727,2728],{"class":2499},"  -H",[2478,2730,2715],{"class":2492},[2478,2732,2733],{"class":2499},"X-Revenexx-Tenant: ",[2478,2735,2736],{"class":2488},"$REVENEXX_TENANT",[2478,2738,2496],{"class":2492},[2478,2740,2723],{"class":2488},[2478,2742,2744,2746,2748,2751,2754,2756],{"class":2480,"line":2743},3,[2478,2745,2728],{"class":2499},[2478,2747,2715],{"class":2492},[2478,2749,2750],{"class":2499},"X-Revenexx-Api-Key: ",[2478,2752,2753],{"class":2488},"$REVENEXX_API_KEY",[2478,2755,2496],{"class":2492},[2478,2757,2723],{"class":2488},[2478,2759,2761,2763,2765,2768,2770],{"class":2480,"line":2760},4,[2478,2762,2728],{"class":2499},[2478,2764,2715],{"class":2492},[2478,2766,2767],{"class":2499},"Content-Type: application\u002Fjson",[2478,2769,2496],{"class":2492},[2478,2771,2723],{"class":2488},[2478,2773,2775,2778,2781,2784],{"class":2480,"line":2774},5,[2478,2776,2777],{"class":2499},"  -d",[2478,2779,2780],{"class":2492}," '",[2478,2782,2783],{"class":2499},"{ \"role\": \"approver\" }",[2478,2785,2786],{"class":2492},"'\n",[2535,2788,2790],{"id":2789},"_2-create-a-cost-center","2. Create a cost center",[2406,2792,2793,2794,2421,2796,2799,2800,2802],{},"A cost center is what a cart line is booked to. ",[2430,2795,2430],{},[2430,2797,2798],{},"name"," are required, and ",[2430,2801,2430],{}," is unique on the tenant. The code is what your storefront and the buyer's ERP see, so use the one the buyer's company already uses.",[2468,2804,2807],{"className":2470,"code":2805,"filename":2806,"language":2473,"meta":2474,"style":2474},"curl -s -X POST \"https:\u002F\u002Fapi.revenexx.com\u002Fv1\u002Fcost-centers\u002Fcost-centers\" \\\n  -H \"X-Revenexx-Tenant: $REVENEXX_TENANT\" \\\n  -H \"X-Revenexx-Api-Key: $REVENEXX_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n        \"code\": \"CC-4711\",\n        \"name\": \"Maintenance, plant 2\",\n        \"organization_id\": \"\u003CORGANIZATION_ID>\",\n        \"accountable_contact_id\": \"\u003CCONTACT_ID>\",\n        \"currency\": \"EUR\"\n      }'\n","Create the cost center",[2430,2808,2809,2829,2843,2857,2869,2878,2884,2890,2896,2902,2908],{"__ignoreMap":2474},[2478,2810,2811,2813,2815,2817,2820,2822,2825,2827],{"class":2480,"line":2481},[2478,2812,2703],{"class":2702},[2478,2814,2706],{"class":2499},[2478,2816,2709],{"class":2499},[2478,2818,2819],{"class":2499}," POST",[2478,2821,2715],{"class":2492},[2478,2823,2824],{"class":2499},"https:\u002F\u002Fapi.revenexx.com\u002Fv1\u002Fcost-centers\u002Fcost-centers",[2478,2826,2496],{"class":2492},[2478,2828,2723],{"class":2488},[2478,2830,2831,2833,2835,2837,2839,2841],{"class":2480,"line":2506},[2478,2832,2728],{"class":2499},[2478,2834,2715],{"class":2492},[2478,2836,2733],{"class":2499},[2478,2838,2736],{"class":2488},[2478,2840,2496],{"class":2492},[2478,2842,2723],{"class":2488},[2478,2844,2845,2847,2849,2851,2853,2855],{"class":2480,"line":2743},[2478,2846,2728],{"class":2499},[2478,2848,2715],{"class":2492},[2478,2850,2750],{"class":2499},[2478,2852,2753],{"class":2488},[2478,2854,2496],{"class":2492},[2478,2856,2723],{"class":2488},[2478,2858,2859,2861,2863,2865,2867],{"class":2480,"line":2760},[2478,2860,2728],{"class":2499},[2478,2862,2715],{"class":2492},[2478,2864,2767],{"class":2499},[2478,2866,2496],{"class":2492},[2478,2868,2723],{"class":2488},[2478,2870,2871,2873,2875],{"class":2480,"line":2774},[2478,2872,2777],{"class":2499},[2478,2874,2780],{"class":2492},[2478,2876,2877],{"class":2499},"{\n",[2478,2879,2881],{"class":2480,"line":2880},6,[2478,2882,2883],{"class":2499},"        \"code\": \"CC-4711\",\n",[2478,2885,2887],{"class":2480,"line":2886},7,[2478,2888,2889],{"class":2499},"        \"name\": \"Maintenance, plant 2\",\n",[2478,2891,2893],{"class":2480,"line":2892},8,[2478,2894,2895],{"class":2499},"        \"organization_id\": \"\u003CORGANIZATION_ID>\",\n",[2478,2897,2899],{"class":2480,"line":2898},9,[2478,2900,2901],{"class":2499},"        \"accountable_contact_id\": \"\u003CCONTACT_ID>\",\n",[2478,2903,2905],{"class":2480,"line":2904},10,[2478,2906,2907],{"class":2499},"        \"currency\": \"EUR\"\n",[2478,2909,2911,2914],{"class":2480,"line":2910},11,[2478,2912,2913],{"class":2499},"      }",[2478,2915,2786],{"class":2492},[2917,2918,2919,2937,2945],"ul",{},[2550,2920,2921,2926,2927,2930,2931,2933,2934,2936],{},[2413,2922,2923],{},[2430,2924,2925],{},"accountable_contact_id"," is the person responsible for this cost center. An approval rule whose approver is ",[2430,2928,2929],{},"default"," resolves to this contact (see step 5), so give this contact the ",[2430,2932,2656],{}," or ",[2430,2935,2669],{}," role, or nobody but an admin override can decide those approvals.",[2550,2938,2939,2944],{},[2413,2940,2941],{},[2430,2942,2943],{},"currency"," defaults to the tenant's default currency. Every amount booked to the center is in this currency, and nothing converts: a cart submitted in another currency is refused.",[2550,2946,2947,2952,2953,2956,2957,2960,2961,2963],{},[2413,2948,2949],{},[2430,2950,2951],{},"budget_type"," is ",[2430,2954,2955],{},"monetary"," (the default) or ",[2430,2958,2959],{},"tracking_only",". A tracking-only center records which cost center a line was booked to, but holds no budget. You cannot change ",[2430,2962,2951],{}," after the center is created.",[2535,2965,2967],{"id":2966},"_3-give-the-cost-center-a-budget","3. Give the cost center a budget",[2406,2969,2970,2971,2974],{},"A budget holds an amount for a period. A cost center can have several, and it has no money of its own without one: a cart that books to a monetary center with no active budget is refused with ",[2430,2972,2973],{},"409",".",[2468,2976,2979],{"className":2470,"code":2977,"filename":2978,"language":2473,"meta":2474,"style":2474},"curl -s -X POST \"https:\u002F\u002Fapi.revenexx.com\u002Fv1\u002Fcost-centers\u002Fbudgets\" \\\n  -H \"X-Revenexx-Tenant: $REVENEXX_TENANT\" \\\n  -H \"X-Revenexx-Api-Key: $REVENEXX_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n        \"cost_center_id\": \"\u003CCOST_CENTER_ID>\",\n        \"name\": \"Q4 2026\",\n        \"initial_value\": 25000,\n        \"sequence\": 0,\n        \"period_start\": \"2026-10-01\",\n        \"period_length\": 3,\n        \"recurring\": true,\n        \"takeover\": { \"mode\": \"limited\", \"limit\": 5000 }\n      }'\n","Give it a budget",[2430,2980,2981,3000,3014,3028,3040,3048,3053,3058,3063,3068,3073,3078,3084,3090],{"__ignoreMap":2474},[2478,2982,2983,2985,2987,2989,2991,2993,2996,2998],{"class":2480,"line":2481},[2478,2984,2703],{"class":2702},[2478,2986,2706],{"class":2499},[2478,2988,2709],{"class":2499},[2478,2990,2819],{"class":2499},[2478,2992,2715],{"class":2492},[2478,2994,2995],{"class":2499},"https:\u002F\u002Fapi.revenexx.com\u002Fv1\u002Fcost-centers\u002Fbudgets",[2478,2997,2496],{"class":2492},[2478,2999,2723],{"class":2488},[2478,3001,3002,3004,3006,3008,3010,3012],{"class":2480,"line":2506},[2478,3003,2728],{"class":2499},[2478,3005,2715],{"class":2492},[2478,3007,2733],{"class":2499},[2478,3009,2736],{"class":2488},[2478,3011,2496],{"class":2492},[2478,3013,2723],{"class":2488},[2478,3015,3016,3018,3020,3022,3024,3026],{"class":2480,"line":2743},[2478,3017,2728],{"class":2499},[2478,3019,2715],{"class":2492},[2478,3021,2750],{"class":2499},[2478,3023,2753],{"class":2488},[2478,3025,2496],{"class":2492},[2478,3027,2723],{"class":2488},[2478,3029,3030,3032,3034,3036,3038],{"class":2480,"line":2760},[2478,3031,2728],{"class":2499},[2478,3033,2715],{"class":2492},[2478,3035,2767],{"class":2499},[2478,3037,2496],{"class":2492},[2478,3039,2723],{"class":2488},[2478,3041,3042,3044,3046],{"class":2480,"line":2774},[2478,3043,2777],{"class":2499},[2478,3045,2780],{"class":2492},[2478,3047,2877],{"class":2499},[2478,3049,3050],{"class":2480,"line":2880},[2478,3051,3052],{"class":2499},"        \"cost_center_id\": \"\u003CCOST_CENTER_ID>\",\n",[2478,3054,3055],{"class":2480,"line":2886},[2478,3056,3057],{"class":2499},"        \"name\": \"Q4 2026\",\n",[2478,3059,3060],{"class":2480,"line":2892},[2478,3061,3062],{"class":2499},"        \"initial_value\": 25000,\n",[2478,3064,3065],{"class":2480,"line":2898},[2478,3066,3067],{"class":2499},"        \"sequence\": 0,\n",[2478,3069,3070],{"class":2480,"line":2904},[2478,3071,3072],{"class":2499},"        \"period_start\": \"2026-10-01\",\n",[2478,3074,3075],{"class":2480,"line":2910},[2478,3076,3077],{"class":2499},"        \"period_length\": 3,\n",[2478,3079,3081],{"class":2480,"line":3080},12,[2478,3082,3083],{"class":2499},"        \"recurring\": true,\n",[2478,3085,3087],{"class":2480,"line":3086},13,[2478,3088,3089],{"class":2499},"        \"takeover\": { \"mode\": \"limited\", \"limit\": 5000 }\n",[2478,3091,3093,3095],{"class":2480,"line":3092},14,[2478,3094,2913],{"class":2499},[2478,3096,2786],{"class":2492},[2917,3098,3099,3107,3121,3132,3142],{},[2550,3100,3101,3106],{},[2413,3102,3103],{},[2430,3104,3105],{},"initial_value"," is the amount. The budget takes its currency from the cost center.",[2550,3108,3109,3117,3118,2974],{},[2413,3110,3111,2421,3114],{},[2430,3112,3113],{},"period_start",[2430,3115,3116],{},"period_length"," set the period, in whole months. The end date is derived for you and returned as ",[2430,3119,3120],{},"period_end",[2550,3122,3123,3128,3129,2974],{},[2413,3124,3125],{},[2430,3126,3127],{},"sequence"," decides the spending order when a center has several active budgets. The lowest is spent first, and each one gives up what it has left before the next is touched. The last one takes whatever remains, and ",[2413,3130,3131],{},"it may go negative",[2550,3133,3134,3139,3140,2974],{},[2413,3135,3136],{},[2430,3137,3138],{},"recurring: true"," starts a new period when this one ends. It requires ",[2430,3141,3116],{},[2550,3143,3144,3149,3150,3153,3154,3157,3158,3161,3162,3165],{},[2413,3145,3146],{},[2430,3147,3148],{},"takeover"," decides what the new period inherits from the old one. ",[2430,3151,3152],{},"never"," (the default) carries nothing over. ",[2430,3155,3156],{},"always"," carries the whole unspent amount. ",[2430,3159,3160],{},"limited"," carries the unspent amount up to ",[2430,3163,3164],{},"limit",". An overspent budget carries nothing, not a debt.",[2406,3167,3168,3169,3172,3173,3175,3176,3179],{},"The rollover runs once a day (as of 2026-10). It closes the ended period (",[2430,3170,3171],{},"active: false","), opens the next one with ",[2430,3174,3105],{}," plus what was carried over, and writes off the rest. To run it on demand, for example after correcting a period, call ",[2430,3177,3178],{},"POST \u002Fv1\u002Fcost-centers\u002Fbudgets\u002Frollover\u002Frun",". It is safe to repeat.",[2406,3181,3182,3183,3186,3187,3190,3191,3194,3195,3198,3199,3202,3203,3206,3207,3209],{},"To correct a budget by hand, call ",[2430,3184,3185],{},"POST \u002Fv1\u002Fcost-centers\u002Fbudgets\u002F\u003CBUDGET_ID>\u002Fadjust"," with ",[2430,3188,3189],{},"actor"," and either ",[2430,3192,3193],{},"amount"," (a signed change) or ",[2430,3196,3197],{},"target"," (the new remaining value). Every movement, whether manual, from an order or from a rollover, is recorded in ",[2430,3200,3201],{},"GET \u002Fv1\u002Fcost-centers\u002Fbudget-changes"," with its ",[2430,3204,3205],{},"reason",", old and new value, and the order or purchase request behind it. A budget that has moved is never deleted: retire it with ",[2430,3208,3171],{},". A draft nobody has used can be discarded instead, as described below.",[3211,3212,3214],"h3",{"id":3213},"discard-a-draft-budget-or-archive-a-cost-center","Discard a draft budget or archive a cost center",[2406,3216,3217,3218,3221,3222,3186,3225,2421,3228,3231,3232,3235,3236,2421,3238,3241,3242,3186,3244,2974],{},"A budget that has not been used yet can be discarded. Discarding is only for a draft, one that holds just its initial ledger entry and no rollover chain. The call sets the budget to zero, stamps it with ",[2430,3219,3220],{},"discarded_at"," and makes it inactive. It answers ",[2430,3223,3224],{},"200",[2430,3226,3227],{},"budget",[2430,3229,3230],{},"change",", the same shape as ",[2430,3233,3234],{},"adjust",". Once anything has moved, the call is refused with ",[2430,3237,2973],{},[2430,3239,3240],{},"budget_in_use",". Discarding a budget that is already discarded answers ",[2430,3243,2973],{},[2430,3245,3246],{},"budget_discarded",[2468,3248,3251],{"className":2470,"code":3249,"filename":3250,"language":2473,"meta":2474,"style":2474},"curl -s -X POST \"https:\u002F\u002Fapi.revenexx.com\u002Fv1\u002Fcost-centers\u002Fbudgets\u002F\u003CBUDGET_ID>\u002Fdiscard\" \\\n  -H \"X-Revenexx-Tenant: $REVENEXX_TENANT\" \\\n  -H \"X-Revenexx-Api-Key: $REVENEXX_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{}'\n","Discard a draft budget",[2430,3252,3253,3272,3286,3300,3312],{"__ignoreMap":2474},[2478,3254,3255,3257,3259,3261,3263,3265,3268,3270],{"class":2480,"line":2481},[2478,3256,2703],{"class":2702},[2478,3258,2706],{"class":2499},[2478,3260,2709],{"class":2499},[2478,3262,2819],{"class":2499},[2478,3264,2715],{"class":2492},[2478,3266,3267],{"class":2499},"https:\u002F\u002Fapi.revenexx.com\u002Fv1\u002Fcost-centers\u002Fbudgets\u002F\u003CBUDGET_ID>\u002Fdiscard",[2478,3269,2496],{"class":2492},[2478,3271,2723],{"class":2488},[2478,3273,3274,3276,3278,3280,3282,3284],{"class":2480,"line":2506},[2478,3275,2728],{"class":2499},[2478,3277,2715],{"class":2492},[2478,3279,2733],{"class":2499},[2478,3281,2736],{"class":2488},[2478,3283,2496],{"class":2492},[2478,3285,2723],{"class":2488},[2478,3287,3288,3290,3292,3294,3296,3298],{"class":2480,"line":2743},[2478,3289,2728],{"class":2499},[2478,3291,2715],{"class":2492},[2478,3293,2750],{"class":2499},[2478,3295,2753],{"class":2488},[2478,3297,2496],{"class":2492},[2478,3299,2723],{"class":2488},[2478,3301,3302,3304,3306,3308,3310],{"class":2480,"line":2760},[2478,3303,2728],{"class":2499},[2478,3305,2715],{"class":2492},[2478,3307,2767],{"class":2499},[2478,3309,2496],{"class":2492},[2478,3311,2723],{"class":2488},[2478,3313,3314,3316,3318,3321],{"class":2480,"line":2774},[2478,3315,2777],{"class":2499},[2478,3317,2780],{"class":2492},[2478,3319,3320],{"class":2499},"{}",[2478,3322,2786],{"class":2492},[2406,3324,3325,3326,3328,3329,2421,3331,3334,3335,3338,3339,3342,3343,3346,3347,2974],{},"Send a JSON body; ",[2430,3327,3320],{}," is enough. ",[2430,3330,3189],{},[2430,3332,3333],{},"note"," are both optional, and anything you send is written onto the discarded entry. Discarded drafts are left out of ",[2430,3336,3337],{},"GET \u002Fv1\u002Fcost-centers\u002Fbudgets"," by default. Pass ",[2430,3340,3341],{},"discarded=include"," to list them among the rest, or ",[2430,3344,3345],{},"discarded=only"," to list nothing but them. Any other value is refused with ",[2430,3348,3349],{},"400",[2406,3351,3352,3353,3355],{},"To stop a cost center from taking bookings, archive it. Archiving sets it inactive, so nothing books to it. The call is idempotent and takes no body. It answers ",[2430,3354,3224],{}," with the cost center. Use it for a cost center that has ever held a budget, since deleting such a cost center is not the way out.",[2468,3357,3360],{"className":2470,"code":3358,"filename":3359,"language":2473,"meta":2474,"style":2474},"curl -s -X POST \"https:\u002F\u002Fapi.revenexx.com\u002Fv1\u002Fcost-centers\u002Fcost-centers\u002F\u003CCOST_CENTER_ID>\u002Farchive\" \\\n  -H \"X-Revenexx-Tenant: $REVENEXX_TENANT\" \\\n  -H \"X-Revenexx-Api-Key: $REVENEXX_API_KEY\"\n","Archive a cost center",[2430,3361,3362,3381,3395],{"__ignoreMap":2474},[2478,3363,3364,3366,3368,3370,3372,3374,3377,3379],{"class":2480,"line":2481},[2478,3365,2703],{"class":2702},[2478,3367,2706],{"class":2499},[2478,3369,2709],{"class":2499},[2478,3371,2819],{"class":2499},[2478,3373,2715],{"class":2492},[2478,3375,3376],{"class":2499},"https:\u002F\u002Fapi.revenexx.com\u002Fv1\u002Fcost-centers\u002Fcost-centers\u002F\u003CCOST_CENTER_ID>\u002Farchive",[2478,3378,2496],{"class":2492},[2478,3380,2723],{"class":2488},[2478,3382,3383,3385,3387,3389,3391,3393],{"class":2480,"line":2506},[2478,3384,2728],{"class":2499},[2478,3386,2715],{"class":2492},[2478,3388,2733],{"class":2499},[2478,3390,2736],{"class":2488},[2478,3392,2496],{"class":2492},[2478,3394,2723],{"class":2488},[2478,3396,3397,3399,3401,3403,3405],{"class":2480,"line":2743},[2478,3398,2728],{"class":2499},[2478,3400,2715],{"class":2492},[2478,3402,2750],{"class":2499},[2478,3404,2753],{"class":2488},[2478,3406,2503],{"class":2492},[2535,3408,3410],{"id":3409},"_4-decide-who-may-book-to-the-cost-center","4. Decide who may book to the cost center",[2406,3412,3413,3414,3417,3418,2457,3421,3424],{},"A cost center is ",[2413,3415,3416],{},"open by default",": any buyer may book any product to it. Restrictions narrow that. Each restriction has a ",[2430,3419,3420],{},"type",[2430,3422,3423],{},"parameters"," object:",[2593,3426,3427,3439],{},[2596,3428,3429],{},[2599,3430,3431,3435],{},[2602,3432,3433],{},[2430,3434,3420],{},[2602,3436,3437],{},[2430,3438,3423],{},[2618,3440,3441,3453,3464,3476,3488,3500],{},[2599,3442,3443,3448],{},[2623,3444,3445],{},[2430,3446,3447],{},"contact",[2623,3449,3450],{},[2430,3451,3452],{},"{ \"contact_ids\": [...] }",[2599,3454,3455,3459],{},[2623,3456,3457],{},[2430,3458,2583],{},[2623,3460,3461],{},[2430,3462,3463],{},"{ \"roles\": [...] }",[2599,3465,3466,3471],{},[2623,3467,3468],{},[2430,3469,3470],{},"product",[2623,3472,3473],{},[2430,3474,3475],{},"{ \"product_ids\": [...] }",[2599,3477,3478,3483],{},[2623,3479,3480],{},[2430,3481,3482],{},"category",[2623,3484,3485],{},[2430,3486,3487],{},"{ \"category_ids\": [...] }",[2599,3489,3490,3495],{},[2623,3491,3492],{},[2430,3493,3494],{},"catalog",[2623,3496,3497],{},[2430,3498,3499],{},"{ \"catalog_ids\": [...] }",[2599,3501,3502,3507],{},[2623,3503,3504],{},[2430,3505,3506],{},"punchout",[2623,3508,3509],{},[2430,3510,3511],{},"{ \"mode\": \"only\" | \"except\", \"account_codes\": [...] }",[2468,3513,3516],{"className":2470,"code":3514,"filename":3515,"language":2473,"meta":2474,"style":2474},"curl -s -X POST \"https:\u002F\u002Fapi.revenexx.com\u002Fv1\u002Fcost-centers\u002Frestrictions\" \\\n  -H \"X-Revenexx-Tenant: $REVENEXX_TENANT\" \\\n  -H \"X-Revenexx-Api-Key: $REVENEXX_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n        \"cost_center_id\": \"\u003CCOST_CENTER_ID>\",\n        \"type\": \"role\",\n        \"parameters\": { \"roles\": [\"requester\", \"buyer\", \"approver\", \"admin\"] }\n      }'\n","Restrict who may book",[2430,3517,3518,3537,3551,3565,3577,3585,3589,3594,3599],{"__ignoreMap":2474},[2478,3519,3520,3522,3524,3526,3528,3530,3533,3535],{"class":2480,"line":2481},[2478,3521,2703],{"class":2702},[2478,3523,2706],{"class":2499},[2478,3525,2709],{"class":2499},[2478,3527,2819],{"class":2499},[2478,3529,2715],{"class":2492},[2478,3531,3532],{"class":2499},"https:\u002F\u002Fapi.revenexx.com\u002Fv1\u002Fcost-centers\u002Frestrictions",[2478,3534,2496],{"class":2492},[2478,3536,2723],{"class":2488},[2478,3538,3539,3541,3543,3545,3547,3549],{"class":2480,"line":2506},[2478,3540,2728],{"class":2499},[2478,3542,2715],{"class":2492},[2478,3544,2733],{"class":2499},[2478,3546,2736],{"class":2488},[2478,3548,2496],{"class":2492},[2478,3550,2723],{"class":2488},[2478,3552,3553,3555,3557,3559,3561,3563],{"class":2480,"line":2743},[2478,3554,2728],{"class":2499},[2478,3556,2715],{"class":2492},[2478,3558,2750],{"class":2499},[2478,3560,2753],{"class":2488},[2478,3562,2496],{"class":2492},[2478,3564,2723],{"class":2488},[2478,3566,3567,3569,3571,3573,3575],{"class":2480,"line":2760},[2478,3568,2728],{"class":2499},[2478,3570,2715],{"class":2492},[2478,3572,2767],{"class":2499},[2478,3574,2496],{"class":2492},[2478,3576,2723],{"class":2488},[2478,3578,3579,3581,3583],{"class":2480,"line":2774},[2478,3580,2777],{"class":2499},[2478,3582,2780],{"class":2492},[2478,3584,2877],{"class":2499},[2478,3586,3587],{"class":2480,"line":2880},[2478,3588,3052],{"class":2499},[2478,3590,3591],{"class":2480,"line":2886},[2478,3592,3593],{"class":2499},"        \"type\": \"role\",\n",[2478,3595,3596],{"class":2480,"line":2892},[2478,3597,3598],{"class":2499},"        \"parameters\": { \"roles\": [\"requester\", \"buyer\", \"approver\", \"admin\"] }\n",[2478,3600,3601,3603],{"class":2480,"line":2898},[2478,3602,2913],{"class":2499},[2478,3604,2786],{"class":2492},[2406,3606,3607,3610,3611,3613,3614,3616,3617,3619,3620,3186,3622,3625,3626,2974],{},[2413,3608,3609],{},"Values of one type are alternatives, and types combine."," Two ",[2430,3612,2583],{}," restrictions allow either role. A ",[2430,3615,2583],{}," restriction and a ",[2430,3618,3482],{}," restriction allow only a buyer with that role, booking a product in that category. A type with no restriction is unrestricted. ",[2430,3621,3506],{},[2430,3623,3624],{},"except"," excludes accounts, and an exclusion wins. The account codes are the ones you create in ",[2426,3627,264],{"href":265},[2406,3629,3630,3631,3634,3635,3638,3639,3642,3643,2421,3646,3648,3649,3651,3652,3655,3656,3658,3659,3661],{},"Your storefront asks which cost centers a buyer may pick with ",[2430,3632,3633],{},"POST \u002Fv1\u002Fcost-centers\u002Fusable",". Send the buyer and the cart lines, and it answers the usable centers per line. Send ",[2430,3636,3637],{},"roles"," as the contact's role from the Customers app, because the call does not look it up, and note that ",[2430,3640,3641],{},"organization_id"," limits the answer to that organization's centers. Each usable center comes with its ",[2430,3644,3645],{},"id",[2430,3647,2430],{},". When exactly one fits, its ",[2430,3650,3645],{}," is returned as ",[2430,3653,3654],{},"auto_select",", so the picker can be skipped. Submit takes the ",[2430,3657,2430],{},", not the ",[2430,3660,3645],{}," (see step 6):",[2468,3663,3666],{"className":2470,"code":3664,"filename":3665,"language":2473,"meta":2474,"style":2474},"curl -s -X POST \"https:\u002F\u002Fapi.revenexx.com\u002Fv1\u002Fcost-centers\u002Fusable\" \\\n  -H \"X-Revenexx-Tenant: $REVENEXX_TENANT\" \\\n  -H \"X-Revenexx-Api-Key: $REVENEXX_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n        \"organization_id\": \"\u003CORGANIZATION_ID>\",\n        \"contact_id\": \"\u003CCONTACT_ID>\",\n        \"roles\": [\"buyer\"],\n        \"lines\": [ { \"ref\": \"1\", \"product_id\": \"\u003CPRODUCT_ID>\", \"category_id\": \"\u003CCATEGORY_ID>\" } ]\n      }'\n","List the cost centers a buyer may use",[2430,3667,3668,3687,3701,3715,3727,3735,3739,3744,3749,3754],{"__ignoreMap":2474},[2478,3669,3670,3672,3674,3676,3678,3680,3683,3685],{"class":2480,"line":2481},[2478,3671,2703],{"class":2702},[2478,3673,2706],{"class":2499},[2478,3675,2709],{"class":2499},[2478,3677,2819],{"class":2499},[2478,3679,2715],{"class":2492},[2478,3681,3682],{"class":2499},"https:\u002F\u002Fapi.revenexx.com\u002Fv1\u002Fcost-centers\u002Fusable",[2478,3684,2496],{"class":2492},[2478,3686,2723],{"class":2488},[2478,3688,3689,3691,3693,3695,3697,3699],{"class":2480,"line":2506},[2478,3690,2728],{"class":2499},[2478,3692,2715],{"class":2492},[2478,3694,2733],{"class":2499},[2478,3696,2736],{"class":2488},[2478,3698,2496],{"class":2492},[2478,3700,2723],{"class":2488},[2478,3702,3703,3705,3707,3709,3711,3713],{"class":2480,"line":2743},[2478,3704,2728],{"class":2499},[2478,3706,2715],{"class":2492},[2478,3708,2750],{"class":2499},[2478,3710,2753],{"class":2488},[2478,3712,2496],{"class":2492},[2478,3714,2723],{"class":2488},[2478,3716,3717,3719,3721,3723,3725],{"class":2480,"line":2760},[2478,3718,2728],{"class":2499},[2478,3720,2715],{"class":2492},[2478,3722,2767],{"class":2499},[2478,3724,2496],{"class":2492},[2478,3726,2723],{"class":2488},[2478,3728,3729,3731,3733],{"class":2480,"line":2774},[2478,3730,2777],{"class":2499},[2478,3732,2780],{"class":2492},[2478,3734,2877],{"class":2499},[2478,3736,3737],{"class":2480,"line":2880},[2478,3738,2895],{"class":2499},[2478,3740,3741],{"class":2480,"line":2886},[2478,3742,3743],{"class":2499},"        \"contact_id\": \"\u003CCONTACT_ID>\",\n",[2478,3745,3746],{"class":2480,"line":2892},[2478,3747,3748],{"class":2499},"        \"roles\": [\"buyer\"],\n",[2478,3750,3751],{"class":2480,"line":2898},[2478,3752,3753],{"class":2499},"        \"lines\": [ { \"ref\": \"1\", \"product_id\": \"\u003CPRODUCT_ID>\", \"category_id\": \"\u003CCATEGORY_ID>\" } ]\n",[2478,3755,3756,3758],{"class":2480,"line":2904},[2478,3757,2913],{"class":2499},[2478,3759,2786],{"class":2492},[2406,3761,3762],{},"A monetary center with no active budget is left out of the answer.",[2406,3764,3765,3768,3769,3186,3772,2415,3775,2421,3778,3780,3781,3784],{},[2413,3766,3767],{},"Personal limits"," are the other per-person control. A contact limit (",[2430,3770,3771],{},"POST \u002Fv1\u002Fcost-centers\u002Fcontact-limits",[2430,3773,3774],{},"contact_id",[2430,3776,3777],{},"monetary_limit",[2430,3779,2943],{},") is the most one contact may submit in one purchase. It applies per submission and has no period. It is only checked by an approval rule with the ",[2430,3782,3783],{},"personalLimit"," condition (see step 5), and a contact without a limit is not limited.",[2535,3786,3788],{"id":3787},"_5-write-the-approval-rules","5. Write the approval rules",[2406,3790,3791,3792,3795,3796,3799,3800,3802,3803,3806],{},"A rule says: when this ",[2413,3793,3794],{},"condition"," is true, apply this ",[2413,3797,3798],{},"effect",", and send the approval to this ",[2413,3801,2656],{},". Rules are created in Cockpit under ",[2413,3804,3805],{},"Approval rules",", or over the API:",[2468,3808,3811],{"className":2470,"code":3809,"filename":3810,"language":2473,"meta":2474,"style":2474},"curl -s -X POST \"https:\u002F\u002Fapi.revenexx.com\u002Fv1\u002Fprocurement\u002Fapproval-rules\" \\\n  -H \"X-Revenexx-Tenant: $REVENEXX_TENANT\" \\\n  -H \"X-Revenexx-Api-Key: $REVENEXX_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n        \"name\": \"Over 1,000 needs the cost-center owner\",\n        \"cost_center_id\": \"\u003CCOST_CENTER_ID>\",\n        \"condition\": \"constantLimit\",\n        \"condition_parameters\": { \"limit\": 1000 },\n        \"effect\": \"pendingOrder\",\n        \"approver_type\": \"default\",\n        \"sequence\": 10,\n        \"active\": true\n      }'\n","Create an approval rule",[2430,3812,3813,3832,3846,3860,3872,3880,3885,3889,3894,3899,3904,3909,3914,3919],{"__ignoreMap":2474},[2478,3814,3815,3817,3819,3821,3823,3825,3828,3830],{"class":2480,"line":2481},[2478,3816,2703],{"class":2702},[2478,3818,2706],{"class":2499},[2478,3820,2709],{"class":2499},[2478,3822,2819],{"class":2499},[2478,3824,2715],{"class":2492},[2478,3826,3827],{"class":2499},"https:\u002F\u002Fapi.revenexx.com\u002Fv1\u002Fprocurement\u002Fapproval-rules",[2478,3829,2496],{"class":2492},[2478,3831,2723],{"class":2488},[2478,3833,3834,3836,3838,3840,3842,3844],{"class":2480,"line":2506},[2478,3835,2728],{"class":2499},[2478,3837,2715],{"class":2492},[2478,3839,2733],{"class":2499},[2478,3841,2736],{"class":2488},[2478,3843,2496],{"class":2492},[2478,3845,2723],{"class":2488},[2478,3847,3848,3850,3852,3854,3856,3858],{"class":2480,"line":2743},[2478,3849,2728],{"class":2499},[2478,3851,2715],{"class":2492},[2478,3853,2750],{"class":2499},[2478,3855,2753],{"class":2488},[2478,3857,2496],{"class":2492},[2478,3859,2723],{"class":2488},[2478,3861,3862,3864,3866,3868,3870],{"class":2480,"line":2760},[2478,3863,2728],{"class":2499},[2478,3865,2715],{"class":2492},[2478,3867,2767],{"class":2499},[2478,3869,2496],{"class":2492},[2478,3871,2723],{"class":2488},[2478,3873,3874,3876,3878],{"class":2480,"line":2774},[2478,3875,2777],{"class":2499},[2478,3877,2780],{"class":2492},[2478,3879,2877],{"class":2499},[2478,3881,3882],{"class":2480,"line":2880},[2478,3883,3884],{"class":2499},"        \"name\": \"Over 1,000 needs the cost-center owner\",\n",[2478,3886,3887],{"class":2480,"line":2886},[2478,3888,3052],{"class":2499},[2478,3890,3891],{"class":2480,"line":2892},[2478,3892,3893],{"class":2499},"        \"condition\": \"constantLimit\",\n",[2478,3895,3896],{"class":2480,"line":2898},[2478,3897,3898],{"class":2499},"        \"condition_parameters\": { \"limit\": 1000 },\n",[2478,3900,3901],{"class":2480,"line":2904},[2478,3902,3903],{"class":2499},"        \"effect\": \"pendingOrder\",\n",[2478,3905,3906],{"class":2480,"line":2910},[2478,3907,3908],{"class":2499},"        \"approver_type\": \"default\",\n",[2478,3910,3911],{"class":2480,"line":3080},[2478,3912,3913],{"class":2499},"        \"sequence\": 10,\n",[2478,3915,3916],{"class":2480,"line":3086},[2478,3917,3918],{"class":2499},"        \"active\": true\n",[2478,3920,3921,3923],{"class":2480,"line":3092},[2478,3922,2913],{"class":2499},[2478,3924,2786],{"class":2492},[2406,3926,3927,3930],{},[2413,3928,3929],{},"Conditions"," measure the net line total: quantity × unit price, before tax and shipping, for the whole cart or for the rule's cost-center lines.",[2593,3932,3933,3949],{},[2596,3934,3935],{},[2599,3936,3937,3941,3946],{},[2602,3938,3939],{},[2430,3940,3794],{},[2602,3942,3943],{},[2430,3944,3945],{},"condition_parameters",[2602,3947,3948],{},"True when",[2618,3950,3951,3963,3988,4005,4028,4044],{},[2599,3952,3953,3957,3960],{},[2623,3954,3955],{},[2430,3956,3156],{},[2623,3958,3959],{},"none",[2623,3961,3962],{},"Every submission",[2599,3964,3965,3970,3975],{},[2623,3966,3967],{},[2430,3968,3969],{},"constantLimit",[2623,3971,3972],{},[2430,3973,3974],{},"{ \"limit\": 1000 }",[2623,3976,3977,3978,3981,3982,3984,3985,3987],{},"The amount is ",[2413,3979,3980],{},"above"," ",[2430,3983,3164],{},". Exactly ",[2430,3986,3164],{}," does not fire.",[2599,3989,3990,3995,4002],{},[2623,3991,3992],{},[2430,3993,3994],{},"contactHasRole",[2623,3996,3997,2933,4000],{},[2430,3998,3999],{},"{ \"role\": \"requester\" }",[2430,4001,3463],{},[2623,4003,4004],{},"The buyer holds any of the roles",[2599,4006,4007,4012,4020],{},[2623,4008,4009],{},[2430,4010,4011],{},"contactMissingPermission",[2623,4013,4014,2933,4017],{},[2430,4015,4016],{},"{ \"permission\": \"place-order\" }",[2430,4018,4019],{},"{ \"permissions\": [...] }",[2623,4021,4022,4023,2421,4025,4027],{},"The buyer lacks any of them. The values are ",[2430,4024,2587],{},[2430,4026,2590],{},", granted by the roles in step 1.",[2599,4029,4030,4035,4037],{},[2623,4031,4032],{},[2430,4033,4034],{},"availableBudget",[2623,4036,3959],{},[2623,4038,4039,4040,4043],{},"The cost center's active budgets do not cover the amount. Needs ",[2430,4041,4042],{},"cost_center_id"," on the rule.",[2599,4045,4046,4050,4052],{},[2623,4047,4048],{},[2430,4049,3783],{},[2623,4051,3959],{},[2623,4053,4054],{},"The amount is above the buyer's contact limit from step 4",[2406,4056,4057],{},[2413,4058,4059],{},"Effects",[2593,4061,4062,4073],{},[2596,4063,4064],{},[2599,4065,4066,4070],{},[2602,4067,4068],{},[2430,4069,3798],{},[2602,4071,4072],{},"What happens",[2618,4074,4075,4085,4104],{},[2599,4076,4077,4082],{},[2623,4078,4079],{},[2430,4080,4081],{},"pendingOrder",[2623,4083,4084],{},"A pending approval is created for this rule's approver.",[2599,4086,4087,4092],{},[2623,4088,4089],{},[2430,4090,4091],{},"prevent",[2623,4093,4094,4095,4097,4098,2685,4101,4103],{},"The submission is refused with ",[2430,4096,2973],{}," and nothing is created. Put the text the buyer should see in ",[2430,4099,4100],{},"effect_parameters.reason",[2430,4102,4091],{}," beats every other rule.",[2599,4105,4106,4111],{},[2623,4107,4108],{},[2430,4109,4110],{},"sendEmail",[2623,4112,4113,4114,4117,4118,4121],{},"Adds ",[2430,4115,4116],{},"effect_parameters"," to the ",[2430,4119,4120],{},"emails"," list in the submit answer, and, when a purchase request is created, records a notification on it. Deliver the mail from your own code.",[2406,4123,4124,4127,4128,2466],{},[2413,4125,4126],{},"Approvers"," are set with ",[2430,4129,4130],{},"approver_type",[2917,4132,4133,4143,4153],{},[2550,4134,4135,4139,4140,2974],{},[2413,4136,4137],{},[2430,4138,3447],{}," — one person, named in ",[2430,4141,4142],{},"approver_contact_id",[2550,4144,4145,4149,4150,2974],{},[2413,4146,4147],{},[2430,4148,2583],{}," — anyone holding the role in ",[2430,4151,4152],{},"approver_role",[2550,4154,4155,4159,4160,4162],{},[2413,4156,4157],{},[2430,4158,2929],{}," — the cost center's ",[2430,4161,2925],{},". On a global rule, or a center without one, anyone who may approve can decide it.",[2406,4164,4165,4168,4169,4171,4172,4174,4175,4177,4178,4180],{},[2413,4166,4167],{},"Global or per cost center."," A rule with no ",[2430,4170,4042],{}," is global and measures the whole cart. A rule with ",[2430,4173,4042],{}," measures only the lines booked to that center, and is skipped when the cart books nothing to it. Within one cost center, approvals run in ",[2430,4176,3127],{}," order, so a low ",[2430,4179,3127],{}," is the first sign-off. Rules with no cost center form their own chain, which runs alongside the cost-center chains rather than before them.",[2406,4182,4183,4184,4186,4187,4189,4190,4192,4193,4192,4195,4197,4198,4200,4201,4192,4203,4205,4206,4208,4209,4211,4212,4214],{},"A common starting set, created once per cost center with its ",[2430,4185,4042],{},": ",[2430,4188,4011],{}," \u002F ",[2430,4191,2587],{}," → ",[2430,4194,4081],{},[2430,4196,2929],{},", so every requester's cart goes to that center's owner, and ",[2430,4199,3969],{}," 10,000 → ",[2430,4202,4081],{},[2430,4204,3447],{}," with a named ",[2430,4207,4142],{}," and a higher ",[2430,4210,3127],{},", as a second layer for large purchases. ",[2430,4213,2929],{}," only reaches the owner on a rule scoped to a cost center.",[2535,4216,4218],{"id":4217},"_6-submit-the-cart-from-your-checkout","6. Submit the cart from your checkout",[2406,4220,4221,4222,2421,4225,4228,4229,2421,4231,2685,4234,4237,4238,4240,4241,4244,4245,4247,4248,4250,4251,4254,4255,4258,4259,2466],{},"At checkout, your server calls submit instead of placing the order. ",[2430,4223,4224],{},"cart_id",[2430,4226,4227],{},"items"," are required, and each item needs ",[2430,4230,2798],{},[2430,4232,4233],{},"quantity",[2430,4235,4236],{},"sender_country"," is optional: the country the goods are sent from, as an ISO 3166-1 alpha-2 code. It decides how the frozen address lines print in capitals (the destination's capitalised fields when the request goes abroad, none at home), and anything that is not a country's code is a ",[2430,4239,3349],{},". When you omit it, the market's ship-from country counts, else the market code when it is a country's code. The request stores it with its market. The order an approval places, and a direct order, is handed it. ",[2430,4242,4243],{},"PUT \u002Fv1\u002Fprocurement\u002Fpurchase-requests\u002F{id}"," accepts it too, only to print a correction and never stored; omitted there, the sender country the request was submitted with counts (for a request stored without one, the market the correction is made in), and a body with only ",[2430,4246,4236],{}," is a ",[2430,4249,3349],{},". Details are on ",[2426,4252,1511],{"href":4253},"\u002Fdocs\u002Fstudios\u002Fcommerce\u002Forders\u002Forders#sender-country",". Book each line to a cost center with ",[2430,4256,4257],{},"cost_center",", the center's ",[2413,4260,2430],{},[2468,4262,4265],{"className":2470,"code":4263,"filename":4264,"language":2473,"meta":2474,"style":2474},"curl -s -X POST \"https:\u002F\u002Fapi.revenexx.com\u002Fv1\u002Fprocurement\u002Fsubmit\" \\\n  -H \"X-Revenexx-Tenant: $REVENEXX_TENANT\" \\\n  -H \"X-Revenexx-Api-Key: $REVENEXX_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n        \"cart_id\": \"\u003CCART_ID>\",\n        \"contact_id\": \"\u003CCONTACT_ID>\",\n        \"organization_id\": \"\u003CORGANIZATION_ID>\",\n        \"currency\": \"EUR\",\n        \"customer_order_number\": \"PO-88213\",\n        \"items\": [\n          { \"name\": \"Safety gloves, size 9\", \"sku\": \"SG-9\", \"product_id\": \"\u003CPRODUCT_ID>\",\n            \"quantity\": 200, \"unit_price\": 7.5, \"cost_center\": \"CC-4711\" }\n        ],\n        \"billing_address\": { \"…\": \"…\" },\n        \"shipping_address\": { \"…\": \"…\" }\n      }'\n","Submit the cart",[2430,4266,4267,4286,4300,4314,4326,4334,4339,4343,4347,4352,4357,4362,4367,4372,4377,4383,4389],{"__ignoreMap":2474},[2478,4268,4269,4271,4273,4275,4277,4279,4282,4284],{"class":2480,"line":2481},[2478,4270,2703],{"class":2702},[2478,4272,2706],{"class":2499},[2478,4274,2709],{"class":2499},[2478,4276,2819],{"class":2499},[2478,4278,2715],{"class":2492},[2478,4280,4281],{"class":2499},"https:\u002F\u002Fapi.revenexx.com\u002Fv1\u002Fprocurement\u002Fsubmit",[2478,4283,2496],{"class":2492},[2478,4285,2723],{"class":2488},[2478,4287,4288,4290,4292,4294,4296,4298],{"class":2480,"line":2506},[2478,4289,2728],{"class":2499},[2478,4291,2715],{"class":2492},[2478,4293,2733],{"class":2499},[2478,4295,2736],{"class":2488},[2478,4297,2496],{"class":2492},[2478,4299,2723],{"class":2488},[2478,4301,4302,4304,4306,4308,4310,4312],{"class":2480,"line":2743},[2478,4303,2728],{"class":2499},[2478,4305,2715],{"class":2492},[2478,4307,2750],{"class":2499},[2478,4309,2753],{"class":2488},[2478,4311,2496],{"class":2492},[2478,4313,2723],{"class":2488},[2478,4315,4316,4318,4320,4322,4324],{"class":2480,"line":2760},[2478,4317,2728],{"class":2499},[2478,4319,2715],{"class":2492},[2478,4321,2767],{"class":2499},[2478,4323,2496],{"class":2492},[2478,4325,2723],{"class":2488},[2478,4327,4328,4330,4332],{"class":2480,"line":2774},[2478,4329,2777],{"class":2499},[2478,4331,2780],{"class":2492},[2478,4333,2877],{"class":2499},[2478,4335,4336],{"class":2480,"line":2880},[2478,4337,4338],{"class":2499},"        \"cart_id\": \"\u003CCART_ID>\",\n",[2478,4340,4341],{"class":2480,"line":2886},[2478,4342,3743],{"class":2499},[2478,4344,4345],{"class":2480,"line":2892},[2478,4346,2895],{"class":2499},[2478,4348,4349],{"class":2480,"line":2898},[2478,4350,4351],{"class":2499},"        \"currency\": \"EUR\",\n",[2478,4353,4354],{"class":2480,"line":2904},[2478,4355,4356],{"class":2499},"        \"customer_order_number\": \"PO-88213\",\n",[2478,4358,4359],{"class":2480,"line":2910},[2478,4360,4361],{"class":2499},"        \"items\": [\n",[2478,4363,4364],{"class":2480,"line":3080},[2478,4365,4366],{"class":2499},"          { \"name\": \"Safety gloves, size 9\", \"sku\": \"SG-9\", \"product_id\": \"\u003CPRODUCT_ID>\",\n",[2478,4368,4369],{"class":2480,"line":3086},[2478,4370,4371],{"class":2499},"            \"quantity\": 200, \"unit_price\": 7.5, \"cost_center\": \"CC-4711\" }\n",[2478,4373,4374],{"class":2480,"line":3092},[2478,4375,4376],{"class":2499},"        ],\n",[2478,4378,4380],{"class":2480,"line":4379},15,[2478,4381,4382],{"class":2499},"        \"billing_address\": { \"…\": \"…\" },\n",[2478,4384,4386],{"class":2480,"line":4385},16,[2478,4387,4388],{"class":2499},"        \"shipping_address\": { \"…\": \"…\" }\n",[2478,4390,4392,4394],{"class":2480,"line":4391},17,[2478,4393,2913],{"class":2499},[2478,4395,2786],{"class":2492},[4397,4398,4399,4405,4406,2974],"warning",{},[2413,4400,4401,4402,4404],{},"Take ",[2430,4403,3774],{}," from the session your server holds, never from the browser."," The contact decides which rules fire and which roles apply, so a buyer who could change it could submit as their own approver. See ",[2426,4407,4408],{"href":441},"Sign a buyer in",[2406,4410,4411,4412,2466],{},"The answer tells you which way it went, in ",[2430,4413,4414],{},"outcome",[2593,4416,4417,4434],{},[2596,4418,4419],{},[2599,4420,4421,4424,4428,4431],{},[2602,4422,4423],{},"Status",[2602,4425,4426],{},[2430,4427,4414],{},[2602,4429,4430],{},"Body",[2602,4432,4433],{},"Show the buyer",[2618,4435,4436,4456,4481,4503,4525,4547],{},[2599,4437,4438,4443,4448,4453],{},[2623,4439,4440],{},[2430,4441,4442],{},"201",[2623,4444,4445],{},[2430,4446,4447],{},"direct",[2623,4449,4450],{},[2430,4451,4452],{},"order",[2623,4454,4455],{},"The order confirmation",[2599,4457,4458,4462,4467,4475],{},[2623,4459,4460],{},[2430,4461,4442],{},[2623,4463,4464],{},[2430,4465,4466],{},"approval",[2623,4468,4469,2415,4472],{},[2430,4470,4471],{},"purchase_request",[2430,4473,4474],{},"pending_approvals",[2623,4476,4477,4478],{},"\"Sent for approval\", with ",[2430,4479,4480],{},"purchase_request.number",[2599,4482,4483,4487,4491,4499],{},[2623,4484,4485],{},[2430,4486,2973],{},[2623,4488,4489],{},[2430,4490,4091],{},[2623,4492,4493,2415,4496],{},[2430,4494,4495],{},"prevent.rule_id",[2430,4497,4498],{},"prevent.reason",[2623,4500,4501],{},[2430,4502,4498],{},[2599,4504,4505,4509,4514,4522],{},[2623,4506,4507],{},[2430,4508,2973],{},[2623,4510,4511],{},[2430,4512,4513],{},"no_budget",[2623,4515,4516,2415,4519],{},[2430,4517,4518],{},"no_budget.cost_center_code",[2430,4520,4521],{},"no_budget.reason",[2623,4523,4524],{},"That the cost center has no budget",[2599,4526,4527,4531,4536,4544],{},[2623,4528,4529],{},[2430,4530,2973],{},[2623,4532,4533],{},[2430,4534,4535],{},"currency_mismatch",[2623,4537,4538,2415,4541],{},[2430,4539,4540],{},"currency_mismatch.requested",[2430,4542,4543],{},".actual",[2623,4545,4546],{},"That the cart's currency does not match the cost center",[2599,4548,4549,4553,4558,4565],{},[2623,4550,4551],{},[2430,4552,2973],{},[2623,4554,4555],{},[2430,4556,4557],{},"decided",[2623,4559,4560,2415,4562],{},[2430,4561,4471],{},[2430,4563,4564],{},"decided.status",[2623,4566,4567],{},"That this cart was already declined or cancelled. Start a new cart.",[2406,4569,4570,3981,4573,4575,4576,3186,4578,4581,4582,4584],{},[2413,4571,4572],{},"Submitting the same cart again is safe.",[2430,4574,4224],{}," identifies the submission: a repeat answers ",[2430,4577,3224],{},[2430,4579,4580],{},"idempotent: true"," and the request or order the first call created, and completes any step the first call did not finish. So on a timeout, retry with the same ",[2430,4583,4224],{}," rather than a new one.",[2406,4586,4587,4588,4590,4591,2933,4593,4595,4596,4599,4600,2974],{},"A ",[2430,4589,3349],{}," means ",[2430,4592,4224],{},[2430,4594,4227],{}," is missing, or a line names a cost center code that does not exist, or that is excluded for this punchout session. A ",[2430,4597,4598],{},"502"," names another app that refused the call, in ",[2430,4601,4602],{},"error",[2535,4604,4606],{"id":4605},"_7-let-approvers-decide","7. Let approvers decide",[2406,4608,4609],{},"Each pending approval belongs to one cost center's chain, and the chain runs in order:",[2917,4611,4612,4618,4628],{},[2550,4613,4614,4617],{},[2413,4615,4616],{},"Only the first pending approval in a chain can be decided."," The next one opens when it is approved. Chains of different cost centers run side by side.",[2550,4619,4620,4623,4624,4627],{},[2413,4621,4622],{},"One decline ends the whole request."," It becomes ",[2430,4625,4626],{},"declined",", and its reserved budget goes back.",[2550,4629,4630,4633,4634,4637,4638,4641,4642,4645],{},[2413,4631,4632],{},"The order is placed when the last approval is approved."," The request moves to ",[2430,4635,4636],{},"approved",", then ",[2430,4639,4640],{},"ordered",", and its ",[2430,4643,4644],{},"order_id"," points at the new order. The reserved budget becomes spend.",[2406,4647,4648,4649,4652,4653,4656,4657,4659,4660,4662,4663,2933,4665,4667,4668,4670,4671,2974],{},"A decision is a person's act. The approver decides signed in as themselves, which is why the approval screen belongs in your storefront's account area (the ",[2426,4650,4651],{"href":1779},"block catalog"," has an ",[2430,4654,4655],{},"account_approvals"," block). Only the contact a ",[2430,4658,3447],{}," approval names may decide it, and only a holder of the role for a ",[2430,4661,2583],{}," approval. Both need ",[2430,4664,2656],{},[2430,4666,2669],{},". A decision may carry a ",[2430,4669,3205],{},". A decline's reason is stored on the request as ",[2430,4672,4673],{},"decline_reason",[2406,4675,4676,4677,4680,4681,4684],{},"In Cockpit, a merchant's operator has two overrides on a purchase request: ",[2413,4678,4679],{},"Super-approve"," clears every remaining approval and places the order, and ",[2413,4682,4683],{},"Cancel request"," ends a pending request and releases its budget. A buyer can also cancel their own pending request.",[2406,4686,4687],{},"A purchase request moves through these statuses:",[2593,4689,4690,4705],{},[2596,4691,4692],{},[2599,4693,4694,4699,4702],{},[2602,4695,4696],{},[2430,4697,4698],{},"status",[2602,4700,4701],{},"Means",[2602,4703,4704],{},"Next",[2618,4706,4707,4725,4738,4752,4763],{},[2599,4708,4709,4713,4716],{},[2623,4710,4711],{},[2430,4712,2526],{},[2623,4714,4715],{},"Waiting for approvals",[2623,4717,4718,2415,4720,2415,4722],{},[2430,4719,4636],{},[2430,4721,4626],{},[2430,4723,4724],{},"cancelled",[2599,4726,4727,4731,4734],{},[2623,4728,4729],{},[2430,4730,4636],{},[2623,4732,4733],{},"Every approval given, order being placed",[2623,4735,4736],{},[2430,4737,4640],{},[2599,4739,4740,4744,4749],{},[2623,4741,4742],{},[2430,4743,4640],{},[2623,4745,4746,4747],{},"The order exists, see ",[2430,4748,4644],{},[2623,4750,4751],{},"final",[2599,4753,4754,4758,4761],{},[2623,4755,4756],{},[2430,4757,4626],{},[2623,4759,4760],{},"An approver declined",[2623,4762,4751],{},[2599,4764,4765,4769,4775],{},[2623,4766,4767],{},[2430,4768,4724],{},[2623,4770,4771,4772,4774],{},"Cancelled by the buyer, an ",[2430,4773,2669],{}," contact or the merchant",[2623,4776,4751],{},[2406,4778,4779,4780,4785,4786,4186,4788,2415,4791,2415,4794,2415,4797,2415,4800,2933,4803,4806,4807,2421,4810,4813,4814,4817,4818,2415,4821,2415,4824,2415,4826,2415,4828,2415,4830,2415,4832,2415,4835,2421,4837,4839,4840,4843,4844,2974],{},"To react to a decision, for example to email the buyer, subscribe to ",[2413,4781,4782],{},[2430,4783,4784],{},"purchase_request_event.created"," and read ",[2430,4787,2798],{},[2430,4789,4790],{},"purchase_request.requested",[2430,4792,4793],{},".approved",[2430,4795,4796],{},".declined",[2430,4798,4799],{},".cancelled",[2430,4801,4802],{},".ordered",[2430,4804,4805],{},".notification",", plus ",[2430,4808,4809],{},"budget.confirmed",[2430,4811,4812],{},"budget.withdrawn"," for the budget moves. Each event's ",[2430,4815,4816],{},"payload"," holds a snapshot of the request: ",[2430,4819,4820],{},"purchase_request_id",[2430,4822,4823],{},"number",[2430,4825,4698],{},[2430,4827,3774],{},[2430,4829,3641],{},[2430,4831,2943],{},[2430,4833,4834],{},"grand_total",[2430,4836,4644],{},[2430,4838,4224],{},". Subscribe from an App or a ",[2426,4841,4842],{"href":720},"webhook endpoint",". The same history is readable at ",[2430,4845,4846],{},"GET \u002Fv1\u002Fprocurement\u002Fpurchase-request-events",[3211,4848,4850],{"id":4849},"find-the-open-requests-for-a-product","Find the open requests for a product",[2406,4852,4853,4854,4857],{},"Before you delete a product for good, check which purchase requests still name it. A request that names a deleted product would turn into an order line that points at nothing. ",[2430,4855,4856],{},"GET \u002Fv1\u002Fprocurement\u002Fopen-request-items"," lists the lines of requests that are still going somewhere, meaning waiting for approval, or approved and not yet ordered:",[2468,4859,4862],{"className":2470,"code":4860,"filename":4861,"language":2473,"meta":2474,"style":2474},"curl -s \"https:\u002F\u002Fapi.revenexx.com\u002Fv1\u002Fprocurement\u002Fopen-request-items?product_id=\u003CPRODUCT_ID>\" \\\n  -H \"X-Revenexx-Tenant: $REVENEXX_TENANT\" \\\n  -H \"X-Revenexx-Api-Key: $REVENEXX_API_KEY\"\n","List the open lines for a product",[2430,4863,4864,4879,4893],{"__ignoreMap":2474},[2478,4865,4866,4868,4870,4872,4875,4877],{"class":2480,"line":2481},[2478,4867,2703],{"class":2702},[2478,4869,2706],{"class":2499},[2478,4871,2715],{"class":2492},[2478,4873,4874],{"class":2499},"https:\u002F\u002Fapi.revenexx.com\u002Fv1\u002Fprocurement\u002Fopen-request-items?product_id=\u003CPRODUCT_ID>",[2478,4876,2496],{"class":2492},[2478,4878,2723],{"class":2488},[2478,4880,4881,4883,4885,4887,4889,4891],{"class":2480,"line":2506},[2478,4882,2728],{"class":2499},[2478,4884,2715],{"class":2492},[2478,4886,2733],{"class":2499},[2478,4888,2736],{"class":2488},[2478,4890,2496],{"class":2492},[2478,4892,2723],{"class":2488},[2478,4894,4895,4897,4899,4901,4903],{"class":2480,"line":2743},[2478,4896,2728],{"class":2499},[2478,4898,2715],{"class":2492},[2478,4900,2750],{"class":2499},[2478,4902,2753],{"class":2488},[2478,4904,2503],{"class":2492},[2917,4906,4907,4917,4948,4964],{},[2550,4908,4909,4914,4915,2974],{},[2413,4910,4911],{},[2430,4912,4913],{},"product_id"," is required and must be a UUID. Without it, or with a value that is not a UUID, the call answers ",[2430,4916,3349],{},[2550,4918,4919,4923,4924,2415,4926,2415,4928,2415,4930,2421,4932,4934,4935,4938,4939,2415,4941,2933,4943,4945,4946,2974],{},[2413,4920,4921],{},[2430,4922,4698],{}," sets which request states count, as a comma-separated list of ",[2430,4925,2526],{},[2430,4927,4636],{},[2430,4929,4640],{},[2430,4931,4626],{},[2430,4933,4724],{},". The default is ",[2430,4936,4937],{},"pending,approved",", the requests still going somewhere; add ",[2430,4940,4640],{},[2430,4942,4626],{},[2430,4944,4724],{}," to see finished ones too. Any other value answers ",[2430,4947,3349],{},[2550,4949,4950,4953,4954,2421,4957,4960,4961,4963],{},[2413,4951,4952],{},"Each item"," carries its request's ",[2430,4955,4956],{},"request_number",[2430,4958,4959],{},"request_status",", and the list is ordered by request number, then position. An item's ",[2430,4962,4820],{}," is the request to open.",[2550,4965,4966,4970,4971,4976,4977,4980],{},[2413,4967,4968],{},[2430,4969,3164],{}," (default 50, max 200) and ",[2413,4972,4973],{},[2430,4974,4975],{},"offset"," (default 0) page through the list. ",[2430,4978,4979],{},"page.hasMore"," tells you whether another page exists.",[2406,4982,4983,4984,4986,4987,4989,4990,4992,4993,4996,4997,5000,5001,5004,5005,5007],{},"No item in ",[2430,4985,4227],{}," means no request in the counted states names the product. The call is not narrowed for a storefront contact, so it returns every buyer's lines to any caller with the key: run it from your server, as with the other calls in this guide. Deleting a product for good is refused with ",[2430,4988,2973],{}," while a line of an open purchase request holds it, and this call is how you find those lines. Besides ",[2430,4991,3349],{},", it can answer ",[2430,4994,4995],{},"401"," (missing or invalid authentication), ",[2430,4998,4999],{},"403"," (not permitted), ",[2430,5002,5003],{},"429"," (rate limit exceeded) or ",[2430,5006,4598],{}," (an upstream service failed).",[2535,5009,5011],{"id":5010},"troubleshooting","Troubleshooting",[2917,5013,5014,5027,5044,5057,5073,5087,5098,5110],{},[2550,5015,5016,5019,5020,5023,5024,5026],{},[2413,5017,5018],{},"Every cart is ordered directly, even with rules."," Check that the rules are ",[2430,5021,5022],{},"active",", and that a per-cost-center rule's ",[2430,5025,4042],{}," is the center the lines book to. A scoped rule is skipped for a cart that books nothing to its center.",[2550,5028,5029,5032,5033,5035,5036,5038,5039,5041,5042,2974],{},[2413,5030,5031],{},"A requester's cart goes through without approval."," Nothing requires approval for a role on its own: add a ",[2430,5034,4011],{}," rule with ",[2430,5037,2587],{},", or a ",[2430,5040,3994],{}," rule for ",[2430,5043,2627],{},[2550,5045,5046,5053,5054,5056],{},[2413,5047,5048,3186,5050,2974],{},[2430,5049,2973],{},[2430,5051,5052],{},"outcome: \"no_budget\""," The center is monetary and has no active budget. Create one, or check that the current period's budget is ",[2430,5055,5022],{}," after the rollover.",[2550,5058,5059,5066,5067,5069,5070,5072],{},[2413,5060,5061,3186,5063,2974],{},[2430,5062,2973],{},[2430,5064,5065],{},"outcome: \"currency_mismatch\""," The cart's ",[2430,5068,2943],{}," differs from the cost center's, or from the buyer's contact limit. Nothing converts. Always send ",[2430,5071,2943],{},", set to the cost center's currency.",[2550,5074,5075,5080,5081,5083,5084,5086],{},[2413,5076,5077,2974],{},[2430,5078,5079],{},"400 unknown cost centre code"," The line's ",[2430,5082,4257],{}," is not a code on this tenant, or it is excluded for this punchout session. Offer only what ",[2430,5085,3633],{}," returns.",[2550,5088,5089,5094,5095,5097],{},[2413,5090,5091,5093],{},[2430,5092,2973],{}," on approve: an earlier approval in this cost centre is still pending."," The chain is in order. Decide the lower-",[2430,5096,3127],{}," approval first.",[2550,5099,5100,5105,5106,2933,5108,2974],{},[2413,5101,5102,5104],{},[2430,5103,4999],{}," on approve or decline."," The call was not made as the approving contact, or that contact is not ",[2430,5107,2656],{},[2430,5109,2669],{},[2550,5111,5112,5118,5119,5122],{},[2413,5113,5114,5115,5117],{},"The request is ",[2430,5116,4636],{}," but has no order."," Placing the order failed after the decision, and the decision stands. The platform retries every hour (as of 2026-10). To complete it at once, call ",[2430,5120,5121],{},"POST \u002Fv1\u002Fprocurement\u002Fpurchase-requests\u002F\u003CID>\u002Forder",", which is safe to repeat.",[2535,5124,5126],{"id":5125},"where-to-go-next","Where to go next",[2917,5128,5129,5134,5142,5147,5152,5157],{},[2550,5130,5131,5133],{},[2426,5132,1423],{"href":1424}," — the roles contacts hold, and what they grant in the other commerce apps.",[2550,5135,5136,5138,5139,5141],{},[2426,5137,4408],{"href":441}," — the server-held session your checkout takes ",[2430,5140,3774],{}," from.",[2550,5143,5144,5146],{},[2426,5145,1511],{"href":1548}," — the order a purchase request becomes.",[2550,5148,5149,5151],{},[2426,5150,159],{"href":160}," — the prices on the lines you submit.",[2550,5153,5154,5156],{},[2426,5155,215],{"href":216}," — the other way a B2B order waits for someone: a buyer and a seller agree a price first.",[2550,5158,5159,5161,5162,5164],{},[2426,5160,264],{"href":265}," — the buyer sessions a ",[2430,5163,3506],{}," restriction applies to.",[5166,5167,5168],"style",{},"html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}",{"title":2474,"searchDepth":2506,"depth":2506,"links":5170},[5171,5172,5173,5174,5177,5178,5179,5180,5183,5184],{"id":2537,"depth":2506,"text":2538},{"id":2576,"depth":2506,"text":2577},{"id":2789,"depth":2506,"text":2790},{"id":2966,"depth":2506,"text":2967,"children":5175},[5176],{"id":3213,"depth":2743,"text":3214},{"id":3409,"depth":2506,"text":3410},{"id":3787,"depth":2506,"text":3788},{"id":4217,"depth":2506,"text":4218},{"id":4605,"depth":2506,"text":4606,"children":5181},[5182],{"id":4849,"depth":2743,"text":4850},{"id":5010,"depth":2506,"text":5011},{"id":5125,"depth":2506,"text":5126},"Route B2B checkouts through approval before they become orders — buyer roles, cost centers with budgets and rollover, restrictions, approval rules, the submit call your checkout makes, and how a request is decided.","md",null,{},{"title":208,"icon":213},{"title":2401,"description":5185},{"loc":209},"tRopNUGvDC0U4-U8oI6_RgpP5lptmvtBgi4HVjnqJpQ",1792158131337]