[{"data":1,"prerenderedAt":4462},["ShallowReactive",2],{"navigation_docs":3,"-docs-guides-integrations-connect-by-punchout":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":264,"body":2401,"description":4454,"extension":4455,"landing":4456,"links":4456,"meta":4457,"navigation":4458,"path":265,"seo":4459,"sitemap":4460,"stem":266,"__hash__":4461},"docs\u002Fdocs\u002Fguides\u002Fintegrations\u002Fconnect-by-punchout\u002Findex.md",{"type":2402,"value":2403,"toc":4442},"minimark",[2404,2408,2429,2434,2552,2623,2641,2645,2659,2887,2898,2902,2934,2937,3245,3251,3286,3311,3315,3322,3387,3417,3490,3504,3540,3550,3554,3557,3615,3666,3670,3673,3731,3749,3759,3904,3921,3927,4014,4033,4037,4040,4111,4114,4118,4130,4163,4172,4176,4403,4407,4438],[2405,2406,2407],"p",{},"A buyer's purchasing team works in SAP, Ariba or Coupa, and they want to order from your storefront without leaving it. With punchout, they open your catalogue from inside their own system, land signed in on your storefront with their assortment and prices, fill a cart, and send it back to their system with one button. Their system approves and orders on its side.",[2405,2409,2410,2411,2415,2416,2419,2420,2423,2424,2428],{},"This guide is for the supplier side: the developer or integrator who runs the storefront and holds an API key for its tenant. It connects one buyer's system: an account for it, a check that your storefront answers the entry call, a mapping for any field their system expects, and the handful of values their procurement team types into their own configuration. The protocols are ",[2412,2413,2414],"strong",{},"OCI"," (Open Catalog Interface, what SAP speaks), ",[2412,2417,2418],{},"cXML"," (what Ariba and Coupa speak) and ",[2412,2421,2422],{},"IDS"," (a German wholesale standard, covered in the ",[2425,2426,2427],"a",{"href":1579},"reference"," but not walked through here).",[2430,2431,2433],"h2",{"id":2432},"before-you-start","Before you start",[2435,2436,2437,2463,2481,2494,2515,2521],"ul",{},[2438,2439,2440,2447,2448,2451,2452,2455,2456,2458,2459,2462],"li",{},[2412,2441,2442,2443],{},"A storefront on a theme built on ",[2444,2445,2446],"code",{},"@revenexx\u002Fcover"," (or ",[2444,2449,2450],{},"@revenexx\u002Fcover-theme",", which extends it), deployed with the ",[2444,2453,2454],{},"ssr"," runtime adapter on a host the buyer can reach. See ",[2425,2457,2040],{"href":2041}," and ",[2425,2460,2461],{"href":1897},"Deploy from Git",". The theme serves the entry addresses, signs the buyer in and builds the hand-back form, so you don't write any of that yourself.",[2438,2464,2465,2468,2469,2472,2473,2476,2477,2480],{},[2412,2466,2467],{},"Mailed-link sign-in switched on for the tenant."," It is the Customers setting ",[2412,2470,2471],{},"Sign in with a mailed link"," (",[2444,2474,2475],{},"login_magic_link",") in Cockpit, it is ",[2412,2478,2479],{},"off by default"," (as of 2026-09), and a buyer arriving by punchout cannot be signed in without it. Set it at tenant level rather than for one market. An organization that has switched it off for itself blocks punchout too. Switching it on also lets buyers sign in, and register a new address, with a link sent by email.",[2438,2482,2483,2489,2490,2493],{},[2412,2484,2485,2486],{},"The buyer's ",[2425,2487,2488],{"href":1418},"organization"," with at least one ",[2425,2491,2492],{"href":1412},"contact"," who has a storefront account. Visits that can't be matched to a person shop as that contact.",[2438,2495,2496,2503,2504,2507,2508,2511,2512,2514],{},[2412,2497,2498,2499,2502],{},"A ",[2425,2500,2501],{"href":1471},"channel"," for punchout visits."," It decides the assortment and prices the buyer sees. A fresh tenant has only a ",[2444,2505,2506],{},"shop"," channel. The channels page shows how to create one of type ",[2444,2509,2510],{},"punchout"," with the code ",[2444,2513,2510],{},", which the examples here use.",[2438,2516,2517,2520],{},[2412,2518,2519],{},"From the buyer:"," which protocol their system speaks.",[2438,2522,2523,2458,2526,2529,2530,2533,2534,2537,2538,2542,2543,2546,2547,2551],{},[2444,2524,2525],{},"curl",[2444,2527,2528],{},"jq",", and an ",[2425,2531,2532],{"href":557},"API key"," for the tenant with the ",[2444,2535,2536],{},"punchout.*"," scope (see ",[2425,2539,2541],{"href":2540},"\u002Fdocs\u002Fgetting-started\u002Fprerequisites#which-scope-covers-which-app","which scope covers which app","). ",[2425,2544,64],{"href":2545},"\u002Fdocs\u002Fgetting-started\u002Fprerequisites#find-your-tenant-slug"," shows where the tenant slug comes from, and the same page explains how to ",[2425,2548,2550],{"href":2549},"\u002Fdocs\u002Fgetting-started\u002Fprerequisites#create-an-api-key","create an API key",".",[2553,2554,2560],"pre",{"className":2555,"code":2556,"filename":2557,"language":2558,"meta":2559,"style":2559},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","export REVENEXX_TENANT=\"\u003CTENANT_SLUG>\"\nexport REVENEXX_API_KEY=\"rvxk_...\"\nexport SHOP=\"https:\u002F\u002Fshop.example.com\"\n","Environment","bash","",[2444,2561,2562,2589,2606],{"__ignoreMap":2559},[2563,2564,2567,2571,2575,2579,2582,2586],"span",{"class":2565,"line":2566},"line",1,[2563,2568,2570],{"class":2569},"spNyl","export",[2563,2572,2574],{"class":2573},"sTEyZ"," REVENEXX_TENANT",[2563,2576,2578],{"class":2577},"sMK4o","=",[2563,2580,2581],{"class":2577},"\"",[2563,2583,2585],{"class":2584},"sfazB","\u003CTENANT_SLUG>",[2563,2587,2588],{"class":2577},"\"\n",[2563,2590,2592,2594,2597,2599,2601,2604],{"class":2565,"line":2591},2,[2563,2593,2570],{"class":2569},[2563,2595,2596],{"class":2573}," REVENEXX_API_KEY",[2563,2598,2578],{"class":2577},[2563,2600,2581],{"class":2577},[2563,2602,2603],{"class":2584},"rvxk_...",[2563,2605,2588],{"class":2577},[2563,2607,2609,2611,2614,2616,2618,2621],{"class":2565,"line":2608},3,[2563,2610,2570],{"class":2569},[2563,2612,2613],{"class":2573}," SHOP",[2563,2615,2578],{"class":2577},[2563,2617,2581],{"class":2577},[2563,2619,2620],{"class":2584},"https:\u002F\u002Fshop.example.com",[2563,2622,2588],{"class":2577},[2405,2624,2625,2626,2629,2630,2633,2634,2637,2638,2551],{},"Every call goes through the ",[2425,2627,2628],{"href":508},"API gateway"," with the same two headers. The examples use ",[2444,2631,2632],{},"curl -s"," to stay short. In a script, add ",[2444,2635,2636],{},"--fail-with-body"," so an error doesn't turn into an id of ",[2444,2639,2640],{},"null",[2430,2642,2644],{"id":2643},"_1-check-the-themes-permissions","1. Check the theme's permissions",[2405,2646,2647,2648,2458,2651,2654,2655,2658],{},"Serving the entry addresses isn't enough on its own: the theme also has to be allowed to call the punchout capabilities behind them. The ",[2444,2649,2650],{},"cover-theme",[2444,2652,2653],{},"custom-theme"," starting points already declare all five, so check that your ",[2444,2656,2657],{},"theme.json"," still has them:",[2553,2660,2664],{"className":2661,"code":2662,"filename":2657,"language":2663,"meta":2559,"style":2559},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\"permissions\": [\n  { \"capability\": \"punchout.entry.oci\",       \"compatible\": \"^1.0\" },\n  { \"capability\": \"punchout.entry.cxml\",      \"compatible\": \"^1.0\" },\n  { \"capability\": \"punchout.entry.ids\",       \"compatible\": \"^1.0\" },\n  { \"capability\": \"punchout.sessions.claim\",  \"compatible\": \"^1.0\" },\n  { \"capability\": \"punchout.sessions.return\", \"compatible\": \"^1.0\" }\n]\n","json",[2444,2665,2666,2681,2727,2765,2803,2842,2881],{"__ignoreMap":2559},[2563,2667,2668,2670,2673,2675,2678],{"class":2565,"line":2566},[2563,2669,2581],{"class":2577},[2563,2671,2672],{"class":2584},"permissions",[2563,2674,2581],{"class":2577},[2563,2676,2677],{"class":2573},": ",[2563,2679,2680],{"class":2577},"[\n",[2563,2682,2683,2686,2689,2692,2694,2697,2699,2702,2704,2707,2710,2713,2715,2717,2719,2722,2724],{"class":2565,"line":2591},[2563,2684,2685],{"class":2577},"  {",[2563,2687,2688],{"class":2577}," \"",[2563,2690,2691],{"class":2569},"capability",[2563,2693,2581],{"class":2577},[2563,2695,2696],{"class":2577},":",[2563,2698,2688],{"class":2577},[2563,2700,2701],{"class":2584},"punchout.entry.oci",[2563,2703,2581],{"class":2577},[2563,2705,2706],{"class":2577},",",[2563,2708,2709],{"class":2577},"       \"",[2563,2711,2712],{"class":2569},"compatible",[2563,2714,2581],{"class":2577},[2563,2716,2696],{"class":2577},[2563,2718,2688],{"class":2577},[2563,2720,2721],{"class":2584},"^1.0",[2563,2723,2581],{"class":2577},[2563,2725,2726],{"class":2577}," },\n",[2563,2728,2729,2731,2733,2735,2737,2739,2741,2744,2746,2748,2751,2753,2755,2757,2759,2761,2763],{"class":2565,"line":2608},[2563,2730,2685],{"class":2577},[2563,2732,2688],{"class":2577},[2563,2734,2691],{"class":2569},[2563,2736,2581],{"class":2577},[2563,2738,2696],{"class":2577},[2563,2740,2688],{"class":2577},[2563,2742,2743],{"class":2584},"punchout.entry.cxml",[2563,2745,2581],{"class":2577},[2563,2747,2706],{"class":2577},[2563,2749,2750],{"class":2577},"      \"",[2563,2752,2712],{"class":2569},[2563,2754,2581],{"class":2577},[2563,2756,2696],{"class":2577},[2563,2758,2688],{"class":2577},[2563,2760,2721],{"class":2584},[2563,2762,2581],{"class":2577},[2563,2764,2726],{"class":2577},[2563,2766,2768,2770,2772,2774,2776,2778,2780,2783,2785,2787,2789,2791,2793,2795,2797,2799,2801],{"class":2565,"line":2767},4,[2563,2769,2685],{"class":2577},[2563,2771,2688],{"class":2577},[2563,2773,2691],{"class":2569},[2563,2775,2581],{"class":2577},[2563,2777,2696],{"class":2577},[2563,2779,2688],{"class":2577},[2563,2781,2782],{"class":2584},"punchout.entry.ids",[2563,2784,2581],{"class":2577},[2563,2786,2706],{"class":2577},[2563,2788,2709],{"class":2577},[2563,2790,2712],{"class":2569},[2563,2792,2581],{"class":2577},[2563,2794,2696],{"class":2577},[2563,2796,2688],{"class":2577},[2563,2798,2721],{"class":2584},[2563,2800,2581],{"class":2577},[2563,2802,2726],{"class":2577},[2563,2804,2806,2808,2810,2812,2814,2816,2818,2821,2823,2825,2828,2830,2832,2834,2836,2838,2840],{"class":2565,"line":2805},5,[2563,2807,2685],{"class":2577},[2563,2809,2688],{"class":2577},[2563,2811,2691],{"class":2569},[2563,2813,2581],{"class":2577},[2563,2815,2696],{"class":2577},[2563,2817,2688],{"class":2577},[2563,2819,2820],{"class":2584},"punchout.sessions.claim",[2563,2822,2581],{"class":2577},[2563,2824,2706],{"class":2577},[2563,2826,2827],{"class":2577},"  \"",[2563,2829,2712],{"class":2569},[2563,2831,2581],{"class":2577},[2563,2833,2696],{"class":2577},[2563,2835,2688],{"class":2577},[2563,2837,2721],{"class":2584},[2563,2839,2581],{"class":2577},[2563,2841,2726],{"class":2577},[2563,2843,2845,2847,2849,2851,2853,2855,2857,2860,2862,2864,2866,2868,2870,2872,2874,2876,2878],{"class":2565,"line":2844},6,[2563,2846,2685],{"class":2577},[2563,2848,2688],{"class":2577},[2563,2850,2691],{"class":2569},[2563,2852,2581],{"class":2577},[2563,2854,2696],{"class":2577},[2563,2856,2688],{"class":2577},[2563,2858,2859],{"class":2584},"punchout.sessions.return",[2563,2861,2581],{"class":2577},[2563,2863,2706],{"class":2577},[2563,2865,2688],{"class":2577},[2563,2867,2712],{"class":2569},[2563,2869,2581],{"class":2577},[2563,2871,2696],{"class":2577},[2563,2873,2688],{"class":2577},[2563,2875,2721],{"class":2584},[2563,2877,2581],{"class":2577},[2563,2879,2880],{"class":2577}," }\n",[2563,2882,2884],{"class":2565,"line":2883},7,[2563,2885,2886],{"class":2577},"]\n",[2405,2888,2889,2890,2893,2894,2897],{},"The three ",[2444,2891,2892],{},"entry"," capabilities receive the procurement system's calls, and the two ",[2444,2895,2896],{},"sessions"," capabilities sign the buyer in and hand the cart back. If one is missing, that leg fails: an entry permission shows up in step 3, and the other two only when a real buyer arrives.",[2430,2899,2901],{"id":2900},"_2-create-the-account","2. Create the account",[2405,2903,2904,2907,2908,2911,2912,2915,2916,2919,2920,2923,2924,2472,2927,2929,2930,2933],{},[2412,2905,2906],{},"First, set the storefront address once for the tenant."," In Cockpit, open the settings of the punchout App and set ",[2412,2909,2910],{},"Storefront address"," to ",[2444,2913,2914],{},"https:\u002F\u002F\u003Cyour-storefront-host>\u002Fpunchout\u002Fstart",", the same value as ",[2444,2917,2918],{},"$SHOP\u002Fpunchout\u002Fstart",". Every account's entry address is derived from its origin, and the buyer lands on exactly this address after entry. Cockpit's hint shows a bare host, but that is not enough: ",[2444,2921,2922],{},"\u002Fpunchout\u002Fstart"," is the page that signs them in, so the bare host leaves every buyer signed out, even though the probe passes. Check the value in force with ",[2444,2925,2926],{},"GET \u002Fv1\u002Fsettings\u002Fapps\u002Fpunchout",[2425,2928,944],{"href":1500},"). An account's own ",[2444,2931,2932],{},"start_page_url"," overrides it, which you need only for a buyer who should land somewhere else.",[2405,2935,2936],{},"One account is one buyer's procurement system. Create it disabled, because it can't be enabled until the probe in step 3 has passed.",[2938,2939,2940,3111],"code-group",{},[2553,2941,2944],{"className":2555,"code":2942,"filename":2943,"language":2558,"meta":2559,"style":2559},"ACCOUNT_ID=$(curl -s -X POST https:\u002F\u002Fapi.revenexx.com\u002Fv1\u002Fpunchout\u002Faccounts \\\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\": \"acme-ariba\",\n    \"name\": \"ACME Corp — Ariba\",\n    \"protocol\": \"cxml\",\n    \"channel_code\": \"punchout\",\n    \"organization_id\": \"\u003CORGANIZATION_ID>\",\n    \"fallback_contact_id\": \"\u003CCONTACT_ID>\",\n    \"unknown_user_policy\": \"fallback\",\n    \"credential_identity\": \"AN01234567890\",\n    \"credential_domain\": \"NetworkID\",\n    \"shared_secret\": \"\u003CA_LONG_RANDOM_SECRET>\"\n  }' | jq -r .id)\n","cXML (Ariba, Coupa)",[2444,2945,2946,2972,2989,3005,3018,3029,3034,3039,3045,3051,3057,3063,3069,3075,3081,3087],{"__ignoreMap":2559},[2563,2947,2948,2951,2954,2957,2960,2963,2966,2969],{"class":2565,"line":2566},[2563,2949,2950],{"class":2573},"ACCOUNT_ID",[2563,2952,2953],{"class":2577},"=$(",[2563,2955,2525],{"class":2956},"sBMFI",[2563,2958,2959],{"class":2584}," -s",[2563,2961,2962],{"class":2584}," -X",[2563,2964,2965],{"class":2584}," POST",[2563,2967,2968],{"class":2584}," https:\u002F\u002Fapi.revenexx.com\u002Fv1\u002Fpunchout\u002Faccounts",[2563,2970,2971],{"class":2573}," \\\n",[2563,2973,2974,2977,2979,2982,2985,2987],{"class":2565,"line":2591},[2563,2975,2976],{"class":2584},"  -H",[2563,2978,2688],{"class":2577},[2563,2980,2981],{"class":2584},"X-Revenexx-Tenant: ",[2563,2983,2984],{"class":2573},"$REVENEXX_TENANT",[2563,2986,2581],{"class":2577},[2563,2988,2971],{"class":2573},[2563,2990,2991,2993,2995,2998,3001,3003],{"class":2565,"line":2608},[2563,2992,2976],{"class":2584},[2563,2994,2688],{"class":2577},[2563,2996,2997],{"class":2584},"X-Revenexx-Api-Key: ",[2563,2999,3000],{"class":2573},"$REVENEXX_API_KEY",[2563,3002,2581],{"class":2577},[2563,3004,2971],{"class":2573},[2563,3006,3007,3009,3011,3014,3016],{"class":2565,"line":2767},[2563,3008,2976],{"class":2584},[2563,3010,2688],{"class":2577},[2563,3012,3013],{"class":2584},"Content-Type: application\u002Fjson",[2563,3015,2581],{"class":2577},[2563,3017,2971],{"class":2573},[2563,3019,3020,3023,3026],{"class":2565,"line":2805},[2563,3021,3022],{"class":2584},"  -d",[2563,3024,3025],{"class":2577}," '",[2563,3027,3028],{"class":2584},"{\n",[2563,3030,3031],{"class":2565,"line":2844},[2563,3032,3033],{"class":2584},"    \"code\": \"acme-ariba\",\n",[2563,3035,3036],{"class":2565,"line":2883},[2563,3037,3038],{"class":2584},"    \"name\": \"ACME Corp — Ariba\",\n",[2563,3040,3042],{"class":2565,"line":3041},8,[2563,3043,3044],{"class":2584},"    \"protocol\": \"cxml\",\n",[2563,3046,3048],{"class":2565,"line":3047},9,[2563,3049,3050],{"class":2584},"    \"channel_code\": \"punchout\",\n",[2563,3052,3054],{"class":2565,"line":3053},10,[2563,3055,3056],{"class":2584},"    \"organization_id\": \"\u003CORGANIZATION_ID>\",\n",[2563,3058,3060],{"class":2565,"line":3059},11,[2563,3061,3062],{"class":2584},"    \"fallback_contact_id\": \"\u003CCONTACT_ID>\",\n",[2563,3064,3066],{"class":2565,"line":3065},12,[2563,3067,3068],{"class":2584},"    \"unknown_user_policy\": \"fallback\",\n",[2563,3070,3072],{"class":2565,"line":3071},13,[2563,3073,3074],{"class":2584},"    \"credential_identity\": \"AN01234567890\",\n",[2563,3076,3078],{"class":2565,"line":3077},14,[2563,3079,3080],{"class":2584},"    \"credential_domain\": \"NetworkID\",\n",[2563,3082,3084],{"class":2565,"line":3083},15,[2563,3085,3086],{"class":2584},"    \"shared_secret\": \"\u003CA_LONG_RANDOM_SECRET>\"\n",[2563,3088,3090,3093,3096,3099,3102,3105,3108],{"class":2565,"line":3089},16,[2563,3091,3092],{"class":2584},"  }",[2563,3094,3095],{"class":2577},"'",[2563,3097,3098],{"class":2577}," |",[2563,3100,3101],{"class":2956}," jq",[2563,3103,3104],{"class":2584}," -r",[2563,3106,3107],{"class":2584}," .id",[2563,3109,3110],{"class":2577},")\n",[2553,3112,3115],{"className":2555,"code":3113,"filename":3114,"language":2558,"meta":2559,"style":2559},"ACCOUNT_ID=$(curl -s -X POST https:\u002F\u002Fapi.revenexx.com\u002Fv1\u002Fpunchout\u002Faccounts \\\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\": \"acme-sap\",\n    \"name\": \"ACME Corp — SAP SRM\",\n    \"protocol\": \"oci\",\n    \"channel_code\": \"punchout\",\n    \"organization_id\": \"\u003CORGANIZATION_ID>\",\n    \"fallback_contact_id\": \"\u003CCONTACT_ID>\",\n    \"unknown_user_policy\": \"fallback\",\n    \"auth_strategy\": \"password\",\n    \"credential_identity\": \"ACME_SRM\",\n    \"credential_secret\": \"\u003CA_LONG_RANDOM_PASSWORD>\"\n  }' | jq -r .id)\n","OCI (SAP)",[2444,3116,3117,3135,3149,3163,3175,3183,3188,3193,3198,3202,3206,3210,3214,3219,3224,3229],{"__ignoreMap":2559},[2563,3118,3119,3121,3123,3125,3127,3129,3131,3133],{"class":2565,"line":2566},[2563,3120,2950],{"class":2573},[2563,3122,2953],{"class":2577},[2563,3124,2525],{"class":2956},[2563,3126,2959],{"class":2584},[2563,3128,2962],{"class":2584},[2563,3130,2965],{"class":2584},[2563,3132,2968],{"class":2584},[2563,3134,2971],{"class":2573},[2563,3136,3137,3139,3141,3143,3145,3147],{"class":2565,"line":2591},[2563,3138,2976],{"class":2584},[2563,3140,2688],{"class":2577},[2563,3142,2981],{"class":2584},[2563,3144,2984],{"class":2573},[2563,3146,2581],{"class":2577},[2563,3148,2971],{"class":2573},[2563,3150,3151,3153,3155,3157,3159,3161],{"class":2565,"line":2608},[2563,3152,2976],{"class":2584},[2563,3154,2688],{"class":2577},[2563,3156,2997],{"class":2584},[2563,3158,3000],{"class":2573},[2563,3160,2581],{"class":2577},[2563,3162,2971],{"class":2573},[2563,3164,3165,3167,3169,3171,3173],{"class":2565,"line":2767},[2563,3166,2976],{"class":2584},[2563,3168,2688],{"class":2577},[2563,3170,3013],{"class":2584},[2563,3172,2581],{"class":2577},[2563,3174,2971],{"class":2573},[2563,3176,3177,3179,3181],{"class":2565,"line":2805},[2563,3178,3022],{"class":2584},[2563,3180,3025],{"class":2577},[2563,3182,3028],{"class":2584},[2563,3184,3185],{"class":2565,"line":2844},[2563,3186,3187],{"class":2584},"    \"code\": \"acme-sap\",\n",[2563,3189,3190],{"class":2565,"line":2883},[2563,3191,3192],{"class":2584},"    \"name\": \"ACME Corp — SAP SRM\",\n",[2563,3194,3195],{"class":2565,"line":3041},[2563,3196,3197],{"class":2584},"    \"protocol\": \"oci\",\n",[2563,3199,3200],{"class":2565,"line":3047},[2563,3201,3050],{"class":2584},[2563,3203,3204],{"class":2565,"line":3053},[2563,3205,3056],{"class":2584},[2563,3207,3208],{"class":2565,"line":3059},[2563,3209,3062],{"class":2584},[2563,3211,3212],{"class":2565,"line":3065},[2563,3213,3068],{"class":2584},[2563,3215,3216],{"class":2565,"line":3071},[2563,3217,3218],{"class":2584},"    \"auth_strategy\": \"password\",\n",[2563,3220,3221],{"class":2565,"line":3077},[2563,3222,3223],{"class":2584},"    \"credential_identity\": \"ACME_SRM\",\n",[2563,3225,3226],{"class":2565,"line":3083},[2563,3227,3228],{"class":2584},"    \"credential_secret\": \"\u003CA_LONG_RANDOM_PASSWORD>\"\n",[2563,3230,3231,3233,3235,3237,3239,3241,3243],{"class":2565,"line":3089},[2563,3232,3092],{"class":2584},[2563,3234,3095],{"class":2577},[2563,3236,3098],{"class":2577},[2563,3238,3101],{"class":2956},[2563,3240,3104],{"class":2584},[2563,3242,3107],{"class":2584},[2563,3244,3110],{"class":2577},[2405,3246,3247,3248,3250],{},"Each block sets ",[2444,3249,2950],{},". If you connect both systems, run the steps below once per account.",[2405,3252,3253,3256,3257,2458,3260,3263,3264,3267,3268,3271,3272,3274,3275,3278,3279,3274,3282,3285],{},[2412,3254,3255],{},"Who chooses the credentials:"," for cXML, ",[2444,3258,3259],{},"credential_identity",[2444,3261,3262],{},"credential_domain"," are the ",[2444,3265,3266],{},"Sender"," identity the buyer's system sends, often their network ID, so ask their team for it. You choose the shared secret. For OCI with ",[2444,3269,3270],{},"auth_strategy: password",", ",[2444,3273,3259],{}," is the ",[2444,3276,3277],{},"USERNAME"," their system sends and ",[2444,3280,3281],{},"credential_secret",[2444,3283,3284],{},"PASSWORD",". You choose both. No API response ever returns a secret, so keep your copy until step 6.",[2405,3287,3288,3294,3295,3298,3299,3302,3303,3306,3307,3310],{},[2412,3289,3290,3291,2551],{},"Set ",[2444,3292,3293],{},"fallback_contact_id"," An arriving user is matched to a contact only when their system sends an email address that belongs to the organization. SAP user names are rarely email addresses, so without a fallback contact those visits can't be signed in. ",[2444,3296,3297],{},"unknown_user_policy"," decides what happens to a name that doesn't match: ",[2444,3300,3301],{},"fallback"," shops as the fallback contact, ",[2444,3304,3305],{},"refuse"," ends the visit, and ",[2444,3308,3309],{},"create"," makes a new contact, but only from an email address.",[2430,3312,3314],{"id":3313},"_3-probe-the-entry-address-then-enable","3. Probe the entry address, then enable",[2405,3316,3317,3318,3321],{},"The probe calls your storefront's entry address from outside, the way the buyer's system will, and passes only if the entry route itself answers. A shop page that returns ",[2444,3319,3320],{},"200"," doesn't count.",[2553,3323,3326],{"className":2555,"code":3324,"filename":3325,"language":2558,"meta":2559,"style":2559},"curl -s -X POST https:\u002F\u002Fapi.revenexx.com\u002Fv1\u002Fpunchout\u002Faccounts\u002F$ACCOUNT_ID\u002Fprobe \\\n  -H \"X-Revenexx-Tenant: $REVENEXX_TENANT\" \\\n  -H \"X-Revenexx-Api-Key: $REVENEXX_API_KEY\" | jq '{passed, entry_probe_status, entry_probe_url, cause}'\n","Probe",[2444,3327,3328,3349,3363],{"__ignoreMap":2559},[2563,3329,3330,3332,3334,3336,3338,3341,3344,3347],{"class":2565,"line":2566},[2563,3331,2525],{"class":2956},[2563,3333,2959],{"class":2584},[2563,3335,2962],{"class":2584},[2563,3337,2965],{"class":2584},[2563,3339,3340],{"class":2584}," https:\u002F\u002Fapi.revenexx.com\u002Fv1\u002Fpunchout\u002Faccounts\u002F",[2563,3342,3343],{"class":2573},"$ACCOUNT_ID",[2563,3345,3346],{"class":2584},"\u002Fprobe",[2563,3348,2971],{"class":2573},[2563,3350,3351,3353,3355,3357,3359,3361],{"class":2565,"line":2591},[2563,3352,2976],{"class":2584},[2563,3354,2688],{"class":2577},[2563,3356,2981],{"class":2584},[2563,3358,2984],{"class":2573},[2563,3360,2581],{"class":2577},[2563,3362,2971],{"class":2573},[2563,3364,3365,3367,3369,3371,3373,3375,3377,3379,3381,3384],{"class":2565,"line":2608},[2563,3366,2976],{"class":2584},[2563,3368,2688],{"class":2577},[2563,3370,2997],{"class":2584},[2563,3372,3000],{"class":2573},[2563,3374,2581],{"class":2577},[2563,3376,3098],{"class":2577},[2563,3378,3101],{"class":2956},[2563,3380,3025],{"class":2577},[2563,3382,3383],{"class":2584},"{passed, entry_probe_status, entry_probe_url, cause}",[2563,3385,3386],{"class":2577},"'\n",[2405,3388,3389,3392,3393,3396,3397,3400,3401,3404,3405,3408,3409,3412,3413,3416],{},[2444,3390,3391],{},"entry_probe_url"," is the address the buyer's system will call: ",[2444,3394,3395],{},"$SHOP\u002Fpunchout\u002Fcxml\u002Facme-ariba"," or ",[2444,3398,3399],{},"$SHOP\u002Fpunchout\u002Foci\u002Facme-sap",". Every account answer also carries the current address as ",[2444,3402,3403],{},"entry_url",". When ",[2444,3406,3407],{},"passed"," is ",[2444,3410,3411],{},"true",", enable the account. A ",[2444,3414,3415],{},"PUT"," changes only the fields you send, so the secrets stay as they are:",[2553,3418,3421],{"className":2555,"code":3419,"filename":3420,"language":2558,"meta":2559,"style":2559},"curl -s -X PUT https:\u002F\u002Fapi.revenexx.com\u002Fv1\u002Fpunchout\u002Faccounts\u002F$ACCOUNT_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 '{\"enabled\": true}'\n","Enable",[2444,3422,3423,3439,3453,3467,3479],{"__ignoreMap":2559},[2563,3424,3425,3427,3429,3431,3434,3436],{"class":2565,"line":2566},[2563,3426,2525],{"class":2956},[2563,3428,2959],{"class":2584},[2563,3430,2962],{"class":2584},[2563,3432,3433],{"class":2584}," PUT",[2563,3435,3340],{"class":2584},[2563,3437,3438],{"class":2573},"$ACCOUNT_ID \\\n",[2563,3440,3441,3443,3445,3447,3449,3451],{"class":2565,"line":2591},[2563,3442,2976],{"class":2584},[2563,3444,2688],{"class":2577},[2563,3446,2981],{"class":2584},[2563,3448,2984],{"class":2573},[2563,3450,2581],{"class":2577},[2563,3452,2971],{"class":2573},[2563,3454,3455,3457,3459,3461,3463,3465],{"class":2565,"line":2608},[2563,3456,2976],{"class":2584},[2563,3458,2688],{"class":2577},[2563,3460,2997],{"class":2584},[2563,3462,3000],{"class":2573},[2563,3464,2581],{"class":2577},[2563,3466,2971],{"class":2573},[2563,3468,3469,3471,3473,3475,3477],{"class":2565,"line":2767},[2563,3470,2976],{"class":2584},[2563,3472,2688],{"class":2577},[2563,3474,3013],{"class":2584},[2563,3476,2581],{"class":2577},[2563,3478,2971],{"class":2573},[2563,3480,3481,3483,3485,3488],{"class":2565,"line":2805},[2563,3482,3022],{"class":2584},[2563,3484,3025],{"class":2577},[2563,3486,3487],{"class":2584},"{\"enabled\": true}",[2563,3489,3386],{"class":2577},[2405,3491,3492,3493,3271,3496,3499,3500,3503],{},"Enabling before the probe has passed answers ",[2444,3494,3495],{},"409",[2444,3497,3498],{},"punchout account '\u003Ccode>' cannot be enabled until its entry URL answers",", followed by the cause. The gate is on by default. It follows the tenant setting ",[2444,3501,3502],{},"entry_probe_required",". The statuses you'll meet first:",[2435,3505,3506,3523,3528,3534],{},[2438,3507,3508,3511,3512,3515,3516,3518,3519,3522],{},[2444,3509,3510],{},"not_found",": nothing serves ",[2444,3513,3514],{},"\u002Fpunchout\u002F…",", because the theme is static or isn't built on ",[2444,3517,2446],{},". A static theme with a fallback file shows up as ",[2444,3520,3521],{},"not_entry"," instead.",[2438,3524,3525,3527],{},[2444,3526,3521],{},": something answered, but not the entry route. A missing entry permission from step 1 shows up here.",[2438,3529,3530,3533],{},[2444,3531,3532],{},"wrong_host",": the entry address redirected off its host, or the host serves another tenant.",[2438,3535,3536,3539],{},[2444,3537,3538],{},"tls",": the certificate was refused.",[2405,3541,3542,3543,3546,3547,3549],{},"The ",[2425,3544,2427],{"href":3545},"\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fprocurement\u002Fpunchout#probe-test-and-preview"," lists every status. If you change the storefront address or ",[2444,3548,2932],{}," later, probe again: an account that is already enabled isn't re-checked.",[2430,3551,3553],{"id":3552},"_4-test-an-entry-the-way-their-system-will","4. Test an entry the way their system will",[2405,3555,3556],{},"The test sends one synthetic entry call with the account's own credentials and returns what the buyer's system would get back:",[2553,3558,3561],{"className":2555,"code":3559,"filename":3560,"language":2558,"meta":2559,"style":2559},"curl -s -X POST https:\u002F\u002Fapi.revenexx.com\u002Fv1\u002Fpunchout\u002Faccounts\u002F$ACCOUNT_ID\u002Ftest \\\n  -H \"X-Revenexx-Tenant: $REVENEXX_TENANT\" \\\n  -H \"X-Revenexx-Api-Key: $REVENEXX_API_KEY\" | jq .response\n","Test",[2444,3562,3563,3582,3596],{"__ignoreMap":2559},[2563,3564,3565,3567,3569,3571,3573,3575,3577,3580],{"class":2565,"line":2566},[2563,3566,2525],{"class":2956},[2563,3568,2959],{"class":2584},[2563,3570,2962],{"class":2584},[2563,3572,2965],{"class":2584},[2563,3574,3340],{"class":2584},[2563,3576,3343],{"class":2573},[2563,3578,3579],{"class":2584},"\u002Ftest",[2563,3581,2971],{"class":2573},[2563,3583,3584,3586,3588,3590,3592,3594],{"class":2565,"line":2591},[2563,3585,2976],{"class":2584},[2563,3587,2688],{"class":2577},[2563,3589,2981],{"class":2584},[2563,3591,2984],{"class":2573},[2563,3593,2581],{"class":2577},[2563,3595,2971],{"class":2573},[2563,3597,3598,3600,3602,3604,3606,3608,3610,3612],{"class":2565,"line":2608},[2563,3599,2976],{"class":2584},[2563,3601,2688],{"class":2577},[2563,3603,2997],{"class":2584},[2563,3605,3000],{"class":2573},[2563,3607,2581],{"class":2577},[2563,3609,3098],{"class":2577},[2563,3611,3101],{"class":2956},[2563,3613,3614],{"class":2584}," .response\n",[2405,3616,3617,3618,3621,3622,3625,3626,3629,3630,3632,3633,3408,3636,3625,3639,3642,3643,3625,3645,3648,3649,3396,3651,3653,3654,3657,3658,3661,3662,3665],{},"For cXML, ",[2444,3619,3620],{},"response.body"," is a ",[2444,3623,3624],{},"PunchOutSetupResponse"," with a ",[2444,3627,3628],{},"StartPage"," URL and Status ",[2444,3631,3320],{},". For OCI, ",[2444,3634,3635],{},"response.status",[2444,3637,3638],{},"302",[2444,3640,3641],{},"Location"," on your storefront (for Secure OCI, ",[2444,3644,3320],{},[2444,3646,3647],{},"SecureOCI"," document). For cXML and plain OCI, the ",[2444,3650,3628],{},[2444,3652,3641],{}," must start with ",[2444,3655,3656],{},"$SHOP\u002Fpunchout\u002Fstart?psid=",". If it points anywhere else, fix the storefront address before a buyer arrives signed out. A refusal here means the account can't satisfy its own protocol. For example, an OCI account with ",[2444,3659,3660],{},"auth_strategy: token"," and no ",[2444,3663,3664],{},"login_token"," is refused. The test visit is revoked straight away and doesn't count toward the lockout.",[2430,3667,3669],{"id":3668},"_5-map-the-fields-their-system-expects","5. Map the fields their system expects",[2405,3671,3672],{},"The App ships default mappings for the standard fields of each protocol. Seed them once. The call is safe to repeat and never overwrites a row you've edited:",[2553,3674,3677],{"className":2555,"code":3675,"filename":3676,"language":2558,"meta":2559,"style":2559},"curl -s -X POST https:\u002F\u002Fapi.revenexx.com\u002Fv1\u002Fpunchout\u002Fdefaults \\\n  -H \"X-Revenexx-Tenant: $REVENEXX_TENANT\" \\\n  -H \"X-Revenexx-Api-Key: $REVENEXX_API_KEY\" | jq '{created: (.created | length), existing: (.existing | length)}'\n","Seed defaults",[2444,3678,3679,3694,3708],{"__ignoreMap":2559},[2563,3680,3681,3683,3685,3687,3689,3692],{"class":2565,"line":2566},[2563,3682,2525],{"class":2956},[2563,3684,2959],{"class":2584},[2563,3686,2962],{"class":2584},[2563,3688,2965],{"class":2584},[2563,3690,3691],{"class":2584}," https:\u002F\u002Fapi.revenexx.com\u002Fv1\u002Fpunchout\u002Fdefaults",[2563,3693,2971],{"class":2573},[2563,3695,3696,3698,3700,3702,3704,3706],{"class":2565,"line":2591},[2563,3697,2976],{"class":2584},[2563,3699,2688],{"class":2577},[2563,3701,2981],{"class":2584},[2563,3703,2984],{"class":2573},[2563,3705,2581],{"class":2577},[2563,3707,2971],{"class":2573},[2563,3709,3710,3712,3714,3716,3718,3720,3722,3724,3726,3729],{"class":2565,"line":2608},[2563,3711,2976],{"class":2584},[2563,3713,2688],{"class":2577},[2563,3715,2997],{"class":2584},[2563,3717,3000],{"class":2573},[2563,3719,2581],{"class":2577},[2563,3721,3098],{"class":2577},[2563,3723,3101],{"class":2956},[2563,3725,3025],{"class":2577},[2563,3727,3728],{"class":2584},"{created: (.created | length), existing: (.existing | length)}",[2563,3730,3386],{"class":2577},[2405,3732,3733,3734,3737,3738,3740,3741,3744,3745,3748],{},"Buyers' systems often want one extra field on every line. A common case is the buyer's cost centre as a cXML ",[2444,3735,3736],{},"Extrinsic",", which is cXML's element for a named value outside the standard. Each mapping row fills one target from one source. An ",[2444,3739,3736],{}," needs two rows, one for its ",[2444,3742,3743],{},"name"," attribute and one for its value. The key in brackets, ",[2444,3746,3747],{},"[CostCenter]",", tells the two rows they belong to the same element, and it never appears in the document.",[2405,3750,3751,3752,3755,3756,2696],{},"This example adds ",[2444,3753,3754],{},"\u003CExtrinsic name=\"CostCenter\">"," to each line for this account only. It assumes your storefront stores the buyer's cost centre on the cart line's ",[2444,3757,3758],{},"metadata.cost_center",[2553,3760,3763],{"className":2555,"code":3761,"filename":3762,"language":2558,"meta":2559,"style":2559},"for ROW in \\\n  '{\"target\": \"ItemDetail\u002FExtrinsic[CostCenter]\u002F@name\", \"source\": \"constant\", \"source_config\": {\"value\": \"CostCenter\"}}' \\\n  '{\"target\": \"ItemDetail\u002FExtrinsic[CostCenter]\", \"source\": \"line\", \"source_config\": {\"field\": \"metadata.cost_center\"}}'\ndo\n  curl -s -X POST https:\u002F\u002Fapi.revenexx.com\u002Fv1\u002Fpunchout\u002Ffield-mappings \\\n    -H \"X-Revenexx-Tenant: $REVENEXX_TENANT\" \\\n    -H \"X-Revenexx-Api-Key: $REVENEXX_API_KEY\" \\\n    -H \"Content-Type: application\u002Fjson\" \\\n    -d \"$(jq -c --arg acc \"$ACCOUNT_ID\" '. + {account_id: $acc, protocol: \"cxml\", document: \"return\", scope: \"line\", target_kind: \"path\"}' \u003C\u003C\u003C \"$ROW\")\"\ndone\n","Add an Extrinsic",[2444,3764,3765,3779,3791,3800,3805,3821,3836,3850,3862,3899],{"__ignoreMap":2559},[2563,3766,3767,3771,3774,3777],{"class":2565,"line":2566},[2563,3768,3770],{"class":3769},"s7zQu","for",[2563,3772,3773],{"class":2573}," ROW ",[2563,3775,3776],{"class":3769},"in",[2563,3778,2971],{"class":2573},[2563,3780,3781,3784,3787,3789],{"class":2565,"line":2591},[2563,3782,3783],{"class":2577},"  '",[2563,3785,3786],{"class":2584},"{\"target\": \"ItemDetail\u002FExtrinsic[CostCenter]\u002F@name\", \"source\": \"constant\", \"source_config\": {\"value\": \"CostCenter\"}}",[2563,3788,3095],{"class":2577},[2563,3790,2971],{"class":2573},[2563,3792,3793,3795,3798],{"class":2565,"line":2608},[2563,3794,3783],{"class":2577},[2563,3796,3797],{"class":2584},"{\"target\": \"ItemDetail\u002FExtrinsic[CostCenter]\", \"source\": \"line\", \"source_config\": {\"field\": \"metadata.cost_center\"}}",[2563,3799,3386],{"class":2577},[2563,3801,3802],{"class":2565,"line":2767},[2563,3803,3804],{"class":3769},"do\n",[2563,3806,3807,3810,3812,3814,3816,3819],{"class":2565,"line":2805},[2563,3808,3809],{"class":2956},"  curl",[2563,3811,2959],{"class":2584},[2563,3813,2962],{"class":2584},[2563,3815,2965],{"class":2584},[2563,3817,3818],{"class":2584}," https:\u002F\u002Fapi.revenexx.com\u002Fv1\u002Fpunchout\u002Ffield-mappings",[2563,3820,2971],{"class":2573},[2563,3822,3823,3826,3828,3830,3832,3834],{"class":2565,"line":2844},[2563,3824,3825],{"class":2584},"    -H",[2563,3827,2688],{"class":2577},[2563,3829,2981],{"class":2584},[2563,3831,2984],{"class":2573},[2563,3833,2581],{"class":2577},[2563,3835,2971],{"class":2573},[2563,3837,3838,3840,3842,3844,3846,3848],{"class":2565,"line":2883},[2563,3839,3825],{"class":2584},[2563,3841,2688],{"class":2577},[2563,3843,2997],{"class":2584},[2563,3845,3000],{"class":2573},[2563,3847,2581],{"class":2577},[2563,3849,2971],{"class":2573},[2563,3851,3852,3854,3856,3858,3860],{"class":2565,"line":3041},[2563,3853,3825],{"class":2584},[2563,3855,2688],{"class":2577},[2563,3857,3013],{"class":2584},[2563,3859,2581],{"class":2577},[2563,3861,2971],{"class":2573},[2563,3863,3864,3867,3870,3872,3875,3877,3879,3881,3883,3886,3888,3891,3893,3896],{"class":2565,"line":3047},[2563,3865,3866],{"class":2584},"    -d",[2563,3868,3869],{"class":2577}," \"$(",[2563,3871,2528],{"class":2956},[2563,3873,3874],{"class":2584}," -c --arg acc ",[2563,3876,2581],{"class":2577},[2563,3878,3343],{"class":2573},[2563,3880,2581],{"class":2577},[2563,3882,3025],{"class":2577},[2563,3884,3885],{"class":2584},". + {account_id: $acc, protocol: \"cxml\", document: \"return\", scope: \"line\", target_kind: \"path\"}",[2563,3887,3095],{"class":2577},[2563,3889,3890],{"class":2577}," \u003C\u003C\u003C",[2563,3892,2688],{"class":2577},[2563,3894,3895],{"class":2573},"$ROW",[2563,3897,3898],{"class":2577},"\")\"\n",[2563,3900,3901],{"class":2565,"line":3053},[2563,3902,3903],{"class":3769},"done\n",[2405,3905,3542,3906,3908,3909,3912,3913,3916,3917,3920],{},[2444,3907,3743],{}," row is a constant, so every line carries the element, empty where a line has no cost centre. You can add elements this way, but you can't reorder the ones the standard names. For OCI, the target is a field name such as ",[2444,3910,3911],{},"NEW_ITEM-CUST_FIELD1"," with ",[2444,3914,3915],{},"target_kind: \"field\"",". ",[2444,3918,3919],{},"GET \u002Fv1\u002Fpunchout\u002Fvocabularies\u002Fmapping-sources"," lists every source and its options.",[2405,3922,3923,3924,3926],{},"Now check the result without touching the buyer's system. Build a cart on the punchout channel (see ",[2425,3925,1518],{"href":1519},") and preview its hand-back:",[2553,3928,3931],{"className":2555,"code":3929,"filename":3930,"language":2558,"meta":2559,"style":2559},"curl -s -X POST https:\u002F\u002Fapi.revenexx.com\u002Fv1\u002Fpunchout\u002Faccounts\u002F$ACCOUNT_ID\u002Fpreview \\\n  -H \"X-Revenexx-Tenant: $REVENEXX_TENANT\" \\\n  -H \"X-Revenexx-Api-Key: $REVENEXX_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"cart_id\": \"\u003CCART_ID>\"}' | jq '{target_url, fields, document}'\n","Preview",[2444,3932,3933,3952,3966,3980,3992],{"__ignoreMap":2559},[2563,3934,3935,3937,3939,3941,3943,3945,3947,3950],{"class":2565,"line":2566},[2563,3936,2525],{"class":2956},[2563,3938,2959],{"class":2584},[2563,3940,2962],{"class":2584},[2563,3942,2965],{"class":2584},[2563,3944,3340],{"class":2584},[2563,3946,3343],{"class":2573},[2563,3948,3949],{"class":2584},"\u002Fpreview",[2563,3951,2971],{"class":2573},[2563,3953,3954,3956,3958,3960,3962,3964],{"class":2565,"line":2591},[2563,3955,2976],{"class":2584},[2563,3957,2688],{"class":2577},[2563,3959,2981],{"class":2584},[2563,3961,2984],{"class":2573},[2563,3963,2581],{"class":2577},[2563,3965,2971],{"class":2573},[2563,3967,3968,3970,3972,3974,3976,3978],{"class":2565,"line":2608},[2563,3969,2976],{"class":2584},[2563,3971,2688],{"class":2577},[2563,3973,2997],{"class":2584},[2563,3975,3000],{"class":2573},[2563,3977,2581],{"class":2577},[2563,3979,2971],{"class":2573},[2563,3981,3982,3984,3986,3988,3990],{"class":2565,"line":2767},[2563,3983,2976],{"class":2584},[2563,3985,2688],{"class":2577},[2563,3987,3013],{"class":2584},[2563,3989,2581],{"class":2577},[2563,3991,2971],{"class":2573},[2563,3993,3994,3996,3998,4001,4003,4005,4007,4009,4012],{"class":2565,"line":2805},[2563,3995,3022],{"class":2584},[2563,3997,3025],{"class":2577},[2563,3999,4000],{"class":2584},"{\"cart_id\": \"\u003CCART_ID>\"}",[2563,4002,3095],{"class":2577},[2563,4004,3098],{"class":2577},[2563,4006,3101],{"class":2956},[2563,4008,3025],{"class":2577},[2563,4010,4011],{"class":2584},"{target_url, fields, document}",[2563,4013,3386],{"class":2577},[2405,4015,4016,4017,4020,4021,4024,4025,4028,4029,4032],{},"For OCI, the lines are in ",[2444,4018,4019],{},"fields",", one ",[2444,4022,4023],{},"NEW_ITEM-…[n]"," entry per line. For cXML, the whole ",[2444,4026,4027],{},"PunchOutOrderMessage"," is in ",[2444,4030,4031],{},"document",". The preview writes nothing, so run it as often as you like while you adjust.",[2430,4034,4036],{"id":4035},"_6-hand-the-connection-details-to-their-procurement-team","6. Hand the connection details to their procurement team",[2405,4038,4039],{},"Their team enters these values in their own system. Send the secret through a different channel from the address.",[4041,4042,4043,4056],"table",{},[4044,4045,4046],"thead",{},[4047,4048,4049,4053],"tr",{},[4050,4051,4052],"th",{},"Their system",[4050,4054,4055],{},"Values to send",[4057,4058,4059,4077],"tbody",{},[4047,4060,4061,4067],{},[4062,4063,4064],"td",{},[2412,4065,4066],{},"Ariba, Coupa (cXML)",[4062,4068,4069,4070,4073,4074,4076],{},"The punchout URL ",[2444,4071,4072],{},"$SHOP\u002Fpunchout\u002Fcxml\u002F\u003Ccode>"," and the shared secret. The ",[2444,4075,3266],{}," identity is theirs already.",[4047,4078,4079,4084],{},[4062,4080,4081],{},[2412,4082,4083],{},"SAP (OCI)",[4062,4085,4086,4087,4090,4091,4093,4094,4096,4097,4099,4100,4103,4104,4106,4107,4110],{},"The catalogue URL ",[2444,4088,4089],{},"$SHOP\u002Fpunchout\u002Foci\u002F\u003Ccode>",", plus the parameters ",[2444,4092,3277],{}," (your ",[2444,4095,3259],{},") and ",[2444,4098,3284],{},", or ",[2444,4101,4102],{},"LOGINTOKEN"," for ",[2444,4105,3660],{},". Their system adds ",[2444,4108,4109],{},"HOOK_URL"," itself.",[2405,4112,4113],{},"Then run one visit together from their system. It's the only test that covers their side.",[2430,4115,4117],{"id":4116},"after-the-hand-back","After the hand-back",[2405,4119,4120,4123,4124,3396,4126,4129],{},[2412,4121,4122],{},"The cart goes back as a form the buyer's browser submits,"," to the ",[2444,4125,4109],{},[2444,4127,4128],{},"BrowserFormPost"," address their system sent with the entry call. Their firewall doesn't need to let anything in from you. The browser does have to accept cookies, because the visit is held in one.",[2405,4131,4132,4135,4136,4140,4141,4143,4144,4147,4148,4151,4152,4154,4155,4158,4159,4162],{},[2412,4133,4134],{},"The order does not come back through punchout."," For OCI and cXML, and for IDS unless the account sets a ",[2425,4137,4139],{"href":4138},"\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fprocurement\u002Fpunchout#purchase-mode-ids","purchase mode"," that lets the buyer check out in your shop (which ",[2444,4142,2446],{}," does not offer yet, as of 2026-10), their system turns the returned cart into a purchase order on its own side and sends it to you by whatever route you've agreed: email, EDI, or an integration of your own. cXML ",[2444,4145,4146],{},"OrderRequest"," is not handled by the punchout App (as of 2026-10). To match an incoming order to its cart, use the hand-back's ",[2444,4149,4150],{},"correlation_key",". The seeded cXML defaults send it as a header ",[2444,4153,3736],{}," named ",[2444,4156,4157],{},"CorrelationKey",", and ",[2444,4160,4161],{},"GET \u002Fv1\u002Fpunchout\u002Ftransfers"," lists every hand-back with its key.",[2405,4164,4165,4166,4168,4169,2551],{},"If the buyer's spend must be approved or booked to a cost center, a ",[2444,4167,2510],{}," restriction on the cost center limits it to, or keeps it out of, a punchout account by code. See ",[2425,4170,4171],{"href":209},"Set up purchase approvals and cost-center budgets",[2430,4173,4175],{"id":4174},"troubleshooting","Troubleshooting",[2435,4177,4178,4188,4237,4278,4295,4307,4340,4353,4367],{},[2438,4179,4180,4187],{},[2412,4181,4182,4183,3396,4185,2551],{},"The probe says ",[2444,4184,3510],{},[2444,4186,3521],{}," See step 3. A static theme can't serve entry at all, whatever it declares.",[2438,4189,4190,4193,4194],{},[2412,4191,4192],{},"The probe passes, but buyers aren't signed in."," Match what the buyer sees:\n",[2435,4195,4196,4208,4226],{},[2438,4197,4198,4201,4202,4204,4205,4207],{},[2412,4199,4200],{},"The storefront, signed out:"," the Storefront address setting (or the account's ",[2444,4203,2932],{},") isn't the ",[2444,4206,2922],{}," page.",[2438,4209,4210,4213,4214,4217,4218,4221,4222,4225],{},[2412,4211,4212],{},"\"This punchout session cannot be opened\", straight after a fresh entry:"," the sign-in was refused. Read ",[2444,4215,4216],{},"entry-refusals"," as in the next bullet. ",[2444,4219,4220],{},"misconfigured"," there usually means mailed-link sign-in is off (see ",[4223,4224,2433],"em",{},").",[2438,4227,4228,4231,4232,4028,4234,4236],{},[2412,4229,4230],{},"\"This shop could not sign you in\":"," check that ",[2444,4233,2820],{},[2444,4235,2657],{}," (step 1), then retry.",[2438,4238,4239,4242,4243,4246,4247,4249,4250,4253,4254,4257,4258,2677,4261,3271,4264,3271,4267,4270,4271,4273,4274,4277],{},[2412,4240,4241],{},"The buyer's first click is refused."," Their system sent credentials that don't match the account. OCI and IDS answer ",[2444,4244,4245],{},"401",", and cXML answers Status ",[2444,4248,4245],{}," ",[2444,4251,4252],{},"Sender identity or shared secret is invalid",". A wrong secret and an unknown account code answer identically, on purpose. ",[2444,4255,4256],{},"GET \u002Fv1\u002Fpunchout\u002Fentry-refusals"," gives the ",[2444,4259,4260],{},"reason",[2444,4262,4263],{},"wrong_credential",[2444,4265,4266],{},"unknown_account",[2444,4268,4269],{},"disabled"," (step 3's enable didn't happen), ",[2444,4272,4220],{}," (the account lacks the credential its protocol needs), or ",[2444,4275,4276],{},"rate_limited"," once the lockout below has started.",[2438,4279,4280,4289,4290,4103,4292,4294],{},[2412,4281,4282,4283,3912,4286,2551],{},"OCI entry answers ",[2444,4284,4285],{},"503",[2444,4287,4288],{},"Retry-After: 300"," Ten refused entries for one account code within five minutes lock it out (as of 2026-09). cXML and IDS don't answer differently while locked out, so check ",[2444,4291,4216],{},[2444,4293,4276],{},". Refused calls during the lockout count too, so their system has to stop retrying until the credentials are fixed.",[2438,4296,4297,4306],{},[2412,4298,4299,4300,3396,4303,2551],{},"Entry answers ",[2444,4301,4302],{},"429",[2444,4304,4305],{},"413"," The storefront's own limits: by default 60 requests per minute per source IP plus a burst of 20, and bodies up to 64 KB for OCI, 256 KB for cXML and 2 MB for IDS (as of 2026-09).",[2438,4308,4309,4312,4313,4315,4316],{},[2412,4310,4311],{},"Entry succeeds, but the buyer isn't signed in."," Read ",[2444,4314,4216],{}," for that account:\n",[2435,4317,4318,4323,4334],{},[2438,4319,4320,4322],{},[2444,4321,4220],{},": mailed-link sign-in is off, the account has no fallback contact, or the contact has no storefront account.",[2438,4324,4325,4328,4329,4099,4331,4333],{},[2444,4326,4327],{},"unknown_buyer",": no contact matched, and the policy is ",[2444,4330,3305],{},[2444,4332,3309],{}," got a name that isn't an email address. Change the policy.",[2438,4335,4336,4339],{},[2444,4337,4338],{},"buyer_refused",": the contact is blocked, or its registration is still pending.",[2438,4341,4342,4345,4346,4349,4350,4352],{},[2412,4343,4344],{},"The buyer sees the whole catalogue or the wrong prices."," The visit shops in the account's ",[2444,4347,4348],{},"channel_code",". Set up that channel's assortment and price list, and see ",[2425,4351,1470],{"href":1471}," to make it an allow-list.",[2438,4354,4355,4358,4359,4362,4363,4366],{},[2412,4356,4357],{},"Their system shows an empty cart."," For Secure OCI (",[2444,4360,4361],{},"secure_oci: true",") that's expected: the browser posts nothing, and their system fetches the cart with its own ",[2444,4364,4365],{},"RETRIEVEOCI"," call. Otherwise, preview the same cart (step 5) and check the mapping.",[2438,4368,4369,4372,4373,3271,4376,4379,4380,4383,4384,4387,4388,4391,4392,4395,4396,4398,4399,4402],{},[2412,4370,4371],{},"Their system asks for something other than a shopping visit."," OCI ",[2444,4374,4375],{},"VALIDATE",[2444,4377,4378],{},"DETAIL"," and the other non-shopping functions answer ",[2444,4381,4382],{},"501",", cXML ",[2444,4385,4386],{},"source"," answers Status ",[2444,4389,4390],{},"450",", and IDS ",[2444,4393,4394],{},"HLS"," answers ",[2444,4397,4382],{},". These aren't supported. The ",[2425,4400,2427],{"href":4401},"\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fprocurement\u002Fpunchout#protocols"," lists the operations that are.",[2430,4404,4406],{"id":4405},"where-to-go-next","Where to go next",[2435,4408,4409,4415,4420,4428],{},[2438,4410,4411,4414],{},[2425,4412,4413],{"href":1579},"Punchout reference"," — every account field, probe status, mapping source and refusal. Read it next if the buyer asked for Secure OCI or IDS.",[2438,4416,4417,4419],{},[2425,4418,1470],{"href":1471}," — the assortment and prices a punchout visit shops in.",[2438,4421,4422,4424,4425,4427],{},[2425,4423,208],{"href":209}," — cost-center budgets and the ",[2444,4426,2510],{}," restriction that ties a cost center to an account.",[2438,4429,4430,4432,4433,4435,4436,2551],{},[2425,4431,2052],{"href":2053}," — ",[2444,4434,2657],{}," and its ",[2444,4437,2672],{},[4439,4440,4441],"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}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}",{"title":2559,"searchDepth":2591,"depth":2591,"links":4443},[4444,4445,4446,4447,4448,4449,4450,4451,4452,4453],{"id":2432,"depth":2591,"text":2433},{"id":2643,"depth":2591,"text":2644},{"id":2900,"depth":2591,"text":2901},{"id":3313,"depth":2591,"text":3314},{"id":3552,"depth":2591,"text":3553},{"id":3668,"depth":2591,"text":3669},{"id":4035,"depth":2591,"text":4036},{"id":4116,"depth":2591,"text":4117},{"id":4174,"depth":2591,"text":4175},{"id":4405,"depth":2591,"text":4406},"Let a buyer shop your storefront from inside SAP, Ariba or Coupa and send the cart back — a punchout account for OCI or cXML, the probe that proves your storefront answers, a mapping for the fields their system expects, and what to hand their procurement team.","md",null,{},{"icon":29},{"title":264,"description":4454},{"loc":265},"veZiMSBLnh5_BthgexwDZVwrlPkxFNQKgdlZ800FDwA",1792158130193]