[{"data":1,"prerenderedAt":8802},["ShallowReactive",2],{"navigation_docs":3,"-docs-guides-apps-add-a-data-model":3376},[4,82,509,570,819,2290],{"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,102,172,284,291,366,420,447],{"title":83,"path":84,"stem":85},{"title":89,"path":90,"stem":91,"children":92,"icon":94},"Extend Analytics Studio","\u002Fdocs\u002Fguides\u002Fanalytics","docs\u002Fguides\u002Fanalytics\u002Findex",[93,95],{"title":89,"path":90,"stem":91,"icon":94},"i-lucide-chart-column",{"title":96,"path":97,"stem":98,"children":99,"icon":101},"Deploy and release a Cube","\u002Fdocs\u002Fguides\u002Fanalytics\u002Fdeploy-a-cube","docs\u002Fguides\u002Fanalytics\u002Fdeploy-a-cube\u002Findex",[100],{"title":96,"path":97,"stem":98,"icon":101},"i-lucide-box",{"title":103,"path":104,"stem":105,"children":106,"icon":108},"Build an App","\u002Fdocs\u002Fguides\u002Fapps","docs\u002Fguides\u002Fapps\u002Findex",[107,109,116,123,130,137,144,151,158,165],{"title":103,"path":104,"stem":105,"icon":108},"i-lucide-layout-grid",{"title":110,"path":111,"stem":112,"children":113,"icon":115},"Give your App a Cockpit screen","\u002Fdocs\u002Fguides\u002Fapps\u002Fadd-a-cockpit-screen","docs\u002Fguides\u002Fapps\u002Fadd-a-cockpit-screen\u002Findex",[114],{"title":110,"path":111,"stem":112,"icon":115},"i-lucide-layout-dashboard",{"title":117,"path":118,"stem":119,"children":120,"icon":122},"Add a data model","\u002Fdocs\u002Fguides\u002Fapps\u002Fadd-a-data-model","docs\u002Fguides\u002Fapps\u002Fadd-a-data-model\u002Findex",[121],{"title":117,"path":118,"stem":119,"icon":122},"i-lucide-database",{"title":124,"path":125,"stem":126,"children":127,"icon":129},"Build your first App","\u002Fdocs\u002Fguides\u002Fapps\u002Fbuild-your-first-app","docs\u002Fguides\u002Fapps\u002Fbuild-your-first-app\u002Findex",[128],{"title":124,"path":125,"stem":126,"icon":129},"i-lucide-hammer",{"title":131,"path":132,"stem":133,"children":134,"icon":136},"Deploy and verify an App","\u002Fdocs\u002Fguides\u002Fapps\u002Fdeploy-with-the-cli","docs\u002Fguides\u002Fapps\u002Fdeploy-with-the-cli\u002Findex",[135],{"title":131,"path":132,"stem":133,"icon":136},"i-lucide-square-terminal",{"title":138,"path":139,"stem":140,"children":141,"icon":143},"Publish a business event from your App","\u002Fdocs\u002Fguides\u002Fapps\u002Fpublish-a-business-event","docs\u002Fguides\u002Fapps\u002Fpublish-a-business-event\u002Findex",[142],{"title":138,"path":139,"stem":140,"icon":143},"i-lucide-megaphone",{"title":145,"path":146,"stem":147,"children":148,"icon":150},"Publish on the Marketplace","\u002Fdocs\u002Fguides\u002Fapps\u002Fpublish-on-the-marketplace","docs\u002Fguides\u002Fapps\u002Fpublish-on-the-marketplace\u002Findex",[149],{"title":145,"path":146,"stem":147,"icon":150},"i-lucide-store",{"title":152,"path":153,"stem":154,"children":155,"icon":157},"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",[156],{"title":152,"path":153,"stem":154,"icon":157},"i-lucide-timer",{"title":159,"path":160,"stem":161,"children":162,"icon":164},"Ship a breaking change to an App","\u002Fdocs\u002Fguides\u002Fapps\u002Fship-a-breaking-change","docs\u002Fguides\u002Fapps\u002Fship-a-breaking-change\u002Findex",[163],{"title":159,"path":160,"stem":161,"icon":164},"i-lucide-split",{"title":166,"path":167,"stem":168,"children":169,"icon":171},"Ship a schema change","\u002Fdocs\u002Fguides\u002Fapps\u002Fship-a-schema-change","docs\u002Fguides\u002Fapps\u002Fship-a-schema-change\u002Findex",[170],{"title":166,"path":167,"stem":168,"icon":171},"i-lucide-git-branch",{"title":173,"path":174,"stem":175,"children":176,"icon":178},"Set up selling","\u002Fdocs\u002Fguides\u002Fcommerce","docs\u002Fguides\u002Fcommerce\u002Findex",[177,179,186,193,200,207,214,221,228,235,242,249,256,263,270,277],{"title":173,"path":174,"stem":175,"icon":178},"i-lucide-shopping-cart",{"title":180,"path":181,"stem":182,"children":183,"icon":185},"Set up B2B pricing","\u002Fdocs\u002Fguides\u002Fcommerce\u002Fb2b-pricing","docs\u002Fguides\u002Fcommerce\u002Fb2b-pricing\u002Findex",[184],{"title":180,"path":181,"stem":182,"icon":185},"i-lucide-circle-dollar-sign",{"title":187,"path":188,"stem":189,"children":190,"icon":192},"Give buyer staff the right permissions","\u002Fdocs\u002Fguides\u002Fcommerce\u002Fbuyer-permissions","docs\u002Fguides\u002Fcommerce\u002Fbuyer-permissions\u002Findex",[191],{"title":187,"path":188,"stem":189,"icon":192},"i-lucide-user-cog",{"title":194,"path":195,"stem":196,"children":197,"icon":199},"Correct, hold or cancel an order after it is placed","\u002Fdocs\u002Fguides\u002Fcommerce\u002Fchange-hold-or-cancel-an-order","docs\u002Fguides\u002Fcommerce\u002Fchange-hold-or-cancel-an-order\u002Findex",[198],{"title":194,"path":195,"stem":196,"icon":199},"i-lucide-pencil-line",{"title":201,"path":202,"stem":203,"children":204,"icon":206},"Confirm invoice payments","\u002Fdocs\u002Fguides\u002Fcommerce\u002Fconfirm-invoice-payments","docs\u002Fguides\u002Fcommerce\u002Fconfirm-invoice-payments\u002Findex",[205],{"title":201,"path":202,"stem":203,"icon":206},"i-lucide-receipt",{"title":208,"path":209,"stem":210,"children":211,"icon":213},"Load a sample shop into a test tenant","\u002Fdocs\u002Fguides\u002Fcommerce\u002Fload-sample-data","docs\u002Fguides\u002Fcommerce\u002Fload-sample-data\u002Findex",[212],{"title":208,"path":209,"stem":210,"icon":213},"i-lucide-package-open",{"title":215,"path":216,"stem":217,"children":218,"icon":220},"Model a catalog with attributes, families and variants","\u002Fdocs\u002Fguides\u002Fcommerce\u002Fmodel-a-catalog","docs\u002Fguides\u002Fcommerce\u002Fmodel-a-catalog\u002Findex",[219],{"title":215,"path":216,"stem":217,"icon":220},"i-lucide-boxes",{"title":222,"path":223,"stem":224,"children":225,"icon":227},"Order and quote numbers","\u002Fdocs\u002Fguides\u002Fcommerce\u002Fnumber-ranges","docs\u002Fguides\u002Fcommerce\u002Fnumber-ranges\u002Findex",[226],{"title":222,"path":223,"stem":224,"icon":227},"i-lucide-hash",{"title":229,"path":230,"stem":231,"children":232,"icon":234},"Manage product images and documents","\u002Fdocs\u002Fguides\u002Fcommerce\u002Fproduct-media","docs\u002Fguides\u002Fcommerce\u002Fproduct-media\u002Findex",[233],{"title":229,"path":230,"stem":231,"icon":234},"i-lucide-image",{"title":236,"path":237,"stem":238,"children":239,"icon":241},"Run promotions and voucher codes","\u002Fdocs\u002Fguides\u002Fcommerce\u002Fpromotions-and-vouchers","docs\u002Fguides\u002Fcommerce\u002Fpromotions-and-vouchers\u002Findex",[240],{"title":236,"path":237,"stem":238,"icon":241},"i-lucide-ticket-percent",{"title":243,"path":244,"stem":245,"children":246,"icon":248},"Set up purchase approvals","\u002Fdocs\u002Fguides\u002Fcommerce\u002Fpurchase-approvals","docs\u002Fguides\u002Fcommerce\u002Fpurchase-approvals\u002Findex",[247],{"title":243,"path":244,"stem":245,"icon":248},"i-lucide-stamp",{"title":250,"path":251,"stem":252,"children":253,"icon":255},"Turn an accepted quote into an order","\u002Fdocs\u002Fguides\u002Fcommerce\u002Fquotes-to-orders","docs\u002Fguides\u002Fcommerce\u002Fquotes-to-orders\u002Findex",[254],{"title":250,"path":251,"stem":252,"icon":255},"i-lucide-handshake",{"title":257,"path":258,"stem":259,"children":260,"icon":262},"Build categories from rules","\u002Fdocs\u002Fguides\u002Fcommerce\u002Frule-based-categories","docs\u002Fguides\u002Fcommerce\u002Frule-based-categories\u002Findex",[261],{"title":257,"path":258,"stem":259,"icon":262},"i-lucide-list-filter",{"title":264,"path":265,"stem":266,"children":267,"icon":269},"Ship, cancel and return an order","\u002Fdocs\u002Fguides\u002Fcommerce\u002Fship-cancel-and-return","docs\u002Fguides\u002Fcommerce\u002Fship-cancel-and-return\u002Findex",[268],{"title":264,"path":265,"stem":266,"icon":269},"i-lucide-package-check",{"title":271,"path":272,"stem":273,"children":274,"icon":276},"Set up shipping rates and tax","\u002Fdocs\u002Fguides\u002Fcommerce\u002Fshipping-rates","docs\u002Fguides\u002Fcommerce\u002Fshipping-rates\u002Findex",[275],{"title":271,"path":272,"stem":273,"icon":276},"i-lucide-truck",{"title":278,"path":279,"stem":280,"children":281,"icon":283},"Connect a payment provider and take a test payment","\u002Fdocs\u002Fguides\u002Fcommerce\u002Ftest-payments","docs\u002Fguides\u002Fcommerce\u002Ftest-payments\u002Findex",[282],{"title":278,"path":279,"stem":280,"icon":283},"i-lucide-credit-card",{"title":285,"path":286,"stem":287,"children":288,"icon":290},"Start from an example","\u002Fdocs\u002Fguides\u002Fexamples","docs\u002Fguides\u002Fexamples\u002Findex",[289],{"title":285,"path":286,"stem":287,"icon":290},"i-lucide-folder-code",{"title":292,"path":293,"stem":294,"children":295,"icon":297},"Connect a system","\u002Fdocs\u002Fguides\u002Fintegrations","docs\u002Fguides\u002Fintegrations\u002Findex",[296,298,304,311,318,325,331,338,345,352,359],{"title":292,"path":293,"stem":294,"icon":297},"i-lucide-plug",{"title":299,"path":300,"stem":301,"children":302,"icon":29},"Connect a procurement system by punchout","\u002Fdocs\u002Fguides\u002Fintegrations\u002Fconnect-by-punchout","docs\u002Fguides\u002Fintegrations\u002Fconnect-by-punchout\u002Findex",[303],{"title":299,"path":300,"stem":301,"icon":29},{"title":305,"path":306,"stem":307,"children":308,"icon":310},"Deploy and release a node package","\u002Fdocs\u002Fguides\u002Fintegrations\u002Fdeploy-a-node-package","docs\u002Fguides\u002Fintegrations\u002Fdeploy-a-node-package\u002Findex",[309],{"title":305,"path":306,"stem":307,"icon":310},"i-lucide-package",{"title":312,"path":313,"stem":314,"children":315,"icon":317},"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",[316],{"title":312,"path":313,"stem":314,"icon":317},"i-lucide-arrow-left-right",{"title":319,"path":320,"stem":321,"children":322,"icon":324},"Import a BMECAT catalog","\u002Fdocs\u002Fguides\u002Fintegrations\u002Fimport-a-bmecat-catalog","docs\u002Fguides\u002Fintegrations\u002Fimport-a-bmecat-catalog\u002Findex",[323],{"title":319,"path":320,"stem":321,"icon":324},"i-lucide-package-plus",{"title":326,"path":327,"stem":328,"children":329,"icon":50},"Keep an Integration Studio workflow running","\u002Fdocs\u002Fguides\u002Fintegrations\u002Fkeep-a-workflow-running","docs\u002Fguides\u002Fintegrations\u002Fkeep-a-workflow-running\u002Findex",[330],{"title":326,"path":327,"stem":328,"icon":50},{"title":332,"path":333,"stem":334,"children":335,"icon":337},"Receive platform events at your own endpoint","\u002Fdocs\u002Fguides\u002Fintegrations\u002Freceive-platform-events","docs\u002Fguides\u002Fintegrations\u002Freceive-platform-events\u002Findex",[336],{"title":332,"path":333,"stem":334,"icon":337},"i-lucide-webhook",{"title":339,"path":340,"stem":341,"children":342,"icon":344},"Recover abandoned carts with a workflow","\u002Fdocs\u002Fguides\u002Fintegrations\u002Frecover-abandoned-carts","docs\u002Fguides\u002Fintegrations\u002Frecover-abandoned-carts\u002Findex",[343],{"title":339,"path":340,"stem":341,"icon":344},"i-lucide-mail-check",{"title":346,"path":347,"stem":348,"children":349,"icon":351},"Run a nightly price and stock sync from a supplier file","\u002Fdocs\u002Fguides\u002Fintegrations\u002Frun-a-nightly-price-and-stock-sync","docs\u002Fguides\u002Fintegrations\u002Frun-a-nightly-price-and-stock-sync\u002Findex",[350],{"title":346,"path":347,"stem":348,"icon":351},"i-lucide-calendar-clock",{"title":353,"path":354,"stem":355,"children":356,"icon":358},"Send a nightly order export to a partner's SFTP","\u002Fdocs\u002Fguides\u002Fintegrations\u002Fsend-a-nightly-order-export-to-sftp","docs\u002Fguides\u002Fintegrations\u002Fsend-a-nightly-order-export-to-sftp\u002Findex",[357],{"title":353,"path":354,"stem":355,"icon":358},"i-lucide-folder-up",{"title":360,"path":361,"stem":362,"children":363,"icon":365},"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",[364],{"title":360,"path":361,"stem":362,"icon":365},"i-lucide-bell-ring",{"title":367,"path":368,"stem":369,"children":370,"icon":372},"Operate & go live","\u002Fdocs\u002Fguides\u002Foperate","docs\u002Fguides\u002Foperate\u002Findex",[371,373,379,386,393,400,407,413],{"title":367,"path":368,"stem":369,"icon":372},"i-lucide-activity",{"title":374,"path":375,"stem":376,"children":377,"icon":81},"Answer a customer's security questionnaire","\u002Fdocs\u002Fguides\u002Foperate\u002Fanswer-a-security-questionnaire","docs\u002Fguides\u002Foperate\u002Fanswer-a-security-questionnaire\u002Findex",[378],{"title":374,"path":375,"stem":376,"icon":81},{"title":380,"path":381,"stem":382,"children":383,"icon":385},"Debug a failed request","\u002Fdocs\u002Fguides\u002Foperate\u002Fdebug-a-failed-request","docs\u002Fguides\u002Foperate\u002Fdebug-a-failed-request\u002Findex",[384],{"title":380,"path":381,"stem":382,"icon":385},"i-lucide-bug",{"title":387,"path":388,"stem":389,"children":390,"icon":392},"Go live with a project","\u002Fdocs\u002Fguides\u002Foperate\u002Fgo-live-checklist","docs\u002Fguides\u002Foperate\u002Fgo-live-checklist\u002Findex",[391],{"title":387,"path":388,"stem":389,"icon":392},"i-lucide-list-checks",{"title":394,"path":395,"stem":396,"children":397,"icon":399},"Migrate from an existing shop","\u002Fdocs\u002Fguides\u002Foperate\u002Fmigrate-from-an-existing-shop","docs\u002Fguides\u002Foperate\u002Fmigrate-from-an-existing-shop\u002Findex",[398],{"title":394,"path":395,"stem":396,"icon":399},"i-lucide-route",{"title":401,"path":402,"stem":403,"children":404,"icon":406},"Size a launch","\u002Fdocs\u002Fguides\u002Foperate\u002Fplan-for-limits","docs\u002Fguides\u002Foperate\u002Fplan-for-limits\u002Findex",[405],{"title":401,"path":402,"stem":403,"icon":406},"i-lucide-gauge",{"title":408,"path":409,"stem":410,"children":411,"icon":392},"Script a bulk change","\u002Fdocs\u002Fguides\u002Foperate\u002Fscript-a-bulk-change","docs\u002Fguides\u002Foperate\u002Fscript-a-bulk-change\u002Findex",[412],{"title":408,"path":409,"stem":410,"icon":392},{"title":414,"path":415,"stem":416,"children":417,"icon":419},"Stay current","\u002Fdocs\u002Fguides\u002Foperate\u002Fstay-current","docs\u002Fguides\u002Foperate\u002Fstay-current\u002Findex",[418],{"title":414,"path":415,"stem":416,"icon":419},"i-lucide-refresh-cw",{"title":421,"path":422,"stem":423,"children":424,"icon":426},"Plan before you build","\u002Fdocs\u002Fguides\u002Fplan","docs\u002Fguides\u002Fplan\u002Findex",[425,427,434,441],{"title":421,"path":422,"stem":423,"icon":426},"i-lucide-map",{"title":428,"path":429,"stem":430,"children":431,"icon":433},"Choose a system of record","\u002Fdocs\u002Fguides\u002Fplan\u002Fchoose-a-system-of-record","docs\u002Fguides\u002Fplan\u002Fchoose-a-system-of-record\u002Findex",[432],{"title":428,"path":429,"stem":430,"icon":433},"i-lucide-network",{"title":435,"path":436,"stem":437,"children":438,"icon":440},"Choose an event surface","\u002Fdocs\u002Fguides\u002Fplan\u002Fchoose-an-event-surface","docs\u002Fguides\u002Fplan\u002Fchoose-an-event-surface\u002Findex",[439],{"title":435,"path":436,"stem":437,"icon":440},"i-lucide-signpost",{"title":442,"path":443,"stem":444,"children":445,"icon":399},"Choose where the logic goes","\u002Fdocs\u002Fguides\u002Fplan\u002Fchoose-where-the-logic-goes","docs\u002Fguides\u002Fplan\u002Fchoose-where-the-logic-goes\u002Findex",[446],{"title":442,"path":443,"stem":444,"icon":399},{"title":448,"path":449,"stem":450,"children":451,"icon":453},"Build a storefront","\u002Fdocs\u002Fguides\u002Fstorefronts","docs\u002Fguides\u002Fstorefronts\u002Findex",[452,454,461,468,475,482,489,495,502],{"title":448,"path":449,"stem":450,"icon":453},"i-lucide-paintbrush",{"title":455,"path":456,"stem":457,"children":458,"icon":460},"Brand a Theme with design tokens","\u002Fdocs\u002Fguides\u002Fstorefronts\u002Fbrand-with-tokens","docs\u002Fguides\u002Fstorefronts\u002Fbrand-with-tokens\u002Findex",[459],{"title":455,"path":456,"stem":457,"icon":460},"i-lucide-palette",{"title":462,"path":463,"stem":464,"children":465,"icon":467},"Build a block","\u002Fdocs\u002Fguides\u002Fstorefronts\u002Fbuild-a-block","docs\u002Fguides\u002Fstorefronts\u002Fbuild-a-block\u002Findex",[466],{"title":462,"path":463,"stem":464,"icon":467},"i-lucide-blocks",{"title":469,"path":470,"stem":471,"children":472,"icon":474},"Build a signed-in buyer account area","\u002Fdocs\u002Fguides\u002Fstorefronts\u002Fbuild-a-buyer-account-area","docs\u002Fguides\u002Fstorefronts\u002Fbuild-a-buyer-account-area\u002Findex",[473],{"title":469,"path":470,"stem":471,"icon":474},"i-lucide-user-round",{"title":476,"path":477,"stem":478,"children":479,"icon":481},"Build your first Theme","\u002Fdocs\u002Fguides\u002Fstorefronts\u002Fbuild-your-first-theme","docs\u002Fguides\u002Fstorefronts\u002Fbuild-your-first-theme\u002Findex",[480],{"title":476,"path":477,"stem":478,"icon":481},"i-lucide-layout-template",{"title":483,"path":484,"stem":485,"children":486,"icon":488},"Connect your own frontend","\u002Fdocs\u002Fguides\u002Fstorefronts\u002Fconnect-a-frontend","docs\u002Fguides\u002Fstorefronts\u002Fconnect-a-frontend\u002Findex",[487],{"title":483,"path":484,"stem":485,"icon":488},"i-lucide-plug-zap",{"title":490,"path":491,"stem":492,"children":493,"icon":419},"Refresh price caches when a price list changes","\u002Fdocs\u002Fguides\u002Fstorefronts\u002Frefresh-price-caches","docs\u002Fguides\u002Fstorefronts\u002Frefresh-price-caches\u002Findex",[494],{"title":490,"path":491,"stem":492,"icon":419},{"title":496,"path":497,"stem":498,"children":499,"icon":501},"Reorder and quick order","\u002Fdocs\u002Fguides\u002Fstorefronts\u002Freorder-and-quick-order","docs\u002Fguides\u002Fstorefronts\u002Freorder-and-quick-order\u002Findex",[500],{"title":496,"path":497,"stem":498,"icon":501},"i-lucide-repeat",{"title":503,"path":504,"stem":505,"children":506,"icon":508},"Sign a buyer in from your server","\u002Fdocs\u002Fguides\u002Fstorefronts\u002Fsign-a-buyer-in","docs\u002Fguides\u002Fstorefronts\u002Fsign-a-buyer-in\u002Findex",[507],{"title":503,"path":504,"stem":505,"icon":508},"i-lucide-log-in",{"title":510,"path":511,"stem":512,"children":513},"SDKs","\u002Fdocs\u002Fsdks","docs\u002Fsdks\u002Findex",[514,515,521,528,534,540,546,552,558,564],{"title":510,"path":511,"stem":512},{"title":516,"path":517,"stem":518,"children":519},"App SDK","\u002Fdocs\u002Fsdks\u002Fapp-sdk","docs\u002Fsdks\u002Fapp-sdk\u002Findex",[520],{"title":516,"path":517,"stem":518},{"title":522,"path":523,"stem":524,"children":525,"icon":527},"Aria SDK","\u002Fdocs\u002Fsdks\u002Faria","docs\u002Fsdks\u002Faria\u002Findex",[526],{"title":522,"path":523,"stem":524,"icon":527},"i-lucide-bot",{"title":529,"path":530,"stem":531,"children":532},"CLI","\u002Fdocs\u002Fsdks\u002Fcli","docs\u002Fsdks\u002Fcli\u002Findex",[533],{"title":529,"path":530,"stem":531},{"title":535,"path":536,"stem":537,"children":538},"Design systems","\u002Fdocs\u002Fsdks\u002Fdesign-systems","docs\u002Fsdks\u002Fdesign-systems\u002Findex",[539],{"title":535,"path":536,"stem":537},{"title":541,"path":542,"stem":543,"children":544},"Integration Node SDK","\u002Fdocs\u002Fsdks\u002Fintegration-nodes","docs\u002Fsdks\u002Fintegration-nodes\u002Findex",[545],{"title":541,"path":542,"stem":543},{"title":547,"path":548,"stem":549,"children":550},"Node SDK","\u002Fdocs\u002Fsdks\u002Fnode","docs\u002Fsdks\u002Fnode\u002Findex",[551],{"title":547,"path":548,"stem":549},{"title":553,"path":554,"stem":555,"children":556},"PHP SDK","\u002Fdocs\u002Fsdks\u002Fphp","docs\u002Fsdks\u002Fphp\u002Findex",[557],{"title":553,"path":554,"stem":555},{"title":559,"path":560,"stem":561,"children":562,"icon":171},"Versioning","\u002Fdocs\u002Fsdks\u002Fversioning","docs\u002Fsdks\u002Fversioning\u002Findex",[563],{"title":559,"path":560,"stem":561,"icon":171},{"title":565,"path":566,"stem":567,"children":568},"Web \u002F JavaScript SDK","\u002Fdocs\u002Fsdks\u002Fweb","docs\u002Fsdks\u002Fweb\u002Findex",[569],{"title":565,"path":566,"stem":567},{"title":571,"path":572,"stem":573,"children":574},"Services","\u002Fdocs\u002Fservices","docs\u002Fservices\u002Findex",[575,576,618,625,655,661,685,692,699,753,801],{"title":571,"path":572,"stem":573},{"title":577,"path":578,"stem":579,"children":580},"API usage","\u002Fdocs\u002Fservices\u002Fapi-usage","docs\u002Fservices\u002Fapi-usage\u002Findex",[581,582,588,594,600,606,612],{"title":577,"path":578,"stem":579},{"title":583,"path":584,"stem":585,"children":586},"Errors","\u002Fdocs\u002Fservices\u002Fapi-usage\u002Ferrors","docs\u002Fservices\u002Fapi-usage\u002Ferrors\u002Findex",[587],{"title":583,"path":584,"stem":585},{"title":589,"path":590,"stem":591,"children":592},"Retries & idempotency","\u002Fdocs\u002Fservices\u002Fapi-usage\u002Fidempotency","docs\u002Fservices\u002Fapi-usage\u002Fidempotency\u002Findex",[593],{"title":589,"path":590,"stem":591},{"title":595,"path":596,"stem":597,"children":598},"Pagination & filtering","\u002Fdocs\u002Fservices\u002Fapi-usage\u002Fpagination","docs\u002Fservices\u002Fapi-usage\u002Fpagination\u002Findex",[599],{"title":595,"path":596,"stem":597},{"title":601,"path":602,"stem":603,"children":604},"Rate limits","\u002Fdocs\u002Fservices\u002Fapi-usage\u002Frate-limits","docs\u002Fservices\u002Fapi-usage\u002Frate-limits\u002Findex",[605],{"title":601,"path":602,"stem":603},{"title":607,"path":608,"stem":609,"children":610},"Trash","\u002Fdocs\u002Fservices\u002Fapi-usage\u002Ftrash","docs\u002Fservices\u002Fapi-usage\u002Ftrash\u002Findex",[611],{"title":607,"path":608,"stem":609},{"title":613,"path":614,"stem":615,"children":616},"Versioning & stability","\u002Fdocs\u002Fservices\u002Fapi-usage\u002Fversioning","docs\u002Fservices\u002Fapi-usage\u002Fversioning\u002Findex",[617],{"title":613,"path":614,"stem":615},{"title":619,"path":620,"stem":621,"children":622,"icon":624},"Record history","\u002Fdocs\u002Fservices\u002Faudit","docs\u002Fservices\u002Faudit\u002Findex",[623],{"title":619,"path":620,"stem":621,"icon":624},"i-lucide-history",{"title":626,"path":627,"stem":628,"children":629},"Authentication","\u002Fdocs\u002Fservices\u002Fauth","docs\u002Fservices\u002Fauth\u002Findex",[630,631,637,643,649],{"title":626,"path":627,"stem":628},{"title":632,"path":633,"stem":634,"children":635},"API keys","\u002Fdocs\u002Fservices\u002Fauth\u002Fapi-keys","docs\u002Fservices\u002Fauth\u002Fapi-keys\u002Findex",[636],{"title":632,"path":633,"stem":634},{"title":638,"path":639,"stem":640,"children":641},"Multi-factor authentication","\u002Fdocs\u002Fservices\u002Fauth\u002Fmfa","docs\u002Fservices\u002Fauth\u002Fmfa\u002Findex",[642],{"title":638,"path":639,"stem":640},{"title":644,"path":645,"stem":646,"children":647},"Social sign-in","\u002Fdocs\u002Fservices\u002Fauth\u002Foauth2","docs\u002Fservices\u002Fauth\u002Foauth2\u002Findex",[648],{"title":644,"path":645,"stem":646},{"title":650,"path":651,"stem":652,"children":653},"Sessions","\u002Fdocs\u002Fservices\u002Fauth\u002Fsessions","docs\u002Fservices\u002Fauth\u002Fsessions\u002Findex",[654],{"title":650,"path":651,"stem":652},{"title":656,"path":657,"stem":658,"children":659,"icon":234},"Avatars","\u002Fdocs\u002Fservices\u002Favatars","docs\u002Fservices\u002Favatars\u002Findex",[660],{"title":656,"path":657,"stem":658,"icon":234},{"title":662,"path":663,"stem":664,"children":665},"Events","\u002Fdocs\u002Fservices\u002Fevents","docs\u002Fservices\u002Fevents\u002Findex",[666,667,673,679],{"title":662,"path":663,"stem":664},{"title":668,"path":669,"stem":670,"children":671},"Consuming events","\u002Fdocs\u002Fservices\u002Fevents\u002Fconsuming-events","docs\u002Fservices\u002Fevents\u002Fconsuming-events\u002Findex",[672],{"title":668,"path":669,"stem":670},{"title":674,"path":675,"stem":676,"children":677},"Event catalog","\u002Fdocs\u002Fservices\u002Fevents\u002Fevent-catalog","docs\u002Fservices\u002Fevents\u002Fevent-catalog\u002Findex",[678],{"title":674,"path":675,"stem":676},{"title":680,"path":681,"stem":682,"children":683},"Event types","\u002Fdocs\u002Fservices\u002Fevents\u002Fevent-types","docs\u002Fservices\u002Fevents\u002Fevent-types\u002Findex",[684],{"title":680,"path":681,"stem":682},{"title":686,"path":687,"stem":688,"children":689,"icon":691},"Locale","\u002Fdocs\u002Fservices\u002Flocale","docs\u002Fservices\u002Flocale\u002Findex",[690],{"title":686,"path":687,"stem":688,"icon":691},"i-lucide-globe",{"title":693,"path":694,"stem":695,"children":696,"icon":698},"Messaging","\u002Fdocs\u002Fservices\u002Fmessaging","docs\u002Fservices\u002Fmessaging\u002Findex",[697],{"title":693,"path":694,"stem":695,"icon":698},"i-lucide-mail",{"title":700,"path":701,"stem":702,"children":703},"Network","\u002Fdocs\u002Fservices\u002Fnetwork","docs\u002Fservices\u002Fnetwork\u002Findex",[704,705,711,717,723,729,735,741,747],{"title":700,"path":701,"stem":702},{"title":706,"path":707,"stem":708,"children":709},"Caching","\u002Fdocs\u002Fservices\u002Fnetwork\u002Fcaching","docs\u002Fservices\u002Fnetwork\u002Fcaching\u002Findex",[710],{"title":706,"path":707,"stem":708},{"title":712,"path":713,"stem":714,"children":715},"Content delivery (CDN)","\u002Fdocs\u002Fservices\u002Fnetwork\u002Fcdn","docs\u002Fservices\u002Fnetwork\u002Fcdn\u002Findex",[716],{"title":712,"path":713,"stem":714},{"title":718,"path":719,"stem":720,"children":721},"Compression","\u002Fdocs\u002Fservices\u002Fnetwork\u002Fcompression","docs\u002Fservices\u002Fnetwork\u002Fcompression\u002Findex",[722],{"title":718,"path":719,"stem":720},{"title":724,"path":725,"stem":726,"children":727},"DDoS mitigation","\u002Fdocs\u002Fservices\u002Fnetwork\u002Fddos","docs\u002Fservices\u002Fnetwork\u002Fddos\u002Findex",[728],{"title":724,"path":725,"stem":726},{"title":730,"path":731,"stem":732,"children":733},"Edge network","\u002Fdocs\u002Fservices\u002Fnetwork\u002Fedges","docs\u002Fservices\u002Fnetwork\u002Fedges\u002Findex",[734],{"title":730,"path":731,"stem":732},{"title":736,"path":737,"stem":738,"children":739},"Endpoints","\u002Fdocs\u002Fservices\u002Fnetwork\u002Fendpoints","docs\u002Fservices\u002Fnetwork\u002Fendpoints\u002Findex",[740],{"title":736,"path":737,"stem":738},{"title":742,"path":743,"stem":744,"children":745},"Transport Layer Security (TLS)","\u002Fdocs\u002Fservices\u002Fnetwork\u002Ftls","docs\u002Fservices\u002Fnetwork\u002Ftls\u002Findex",[746],{"title":742,"path":743,"stem":744},{"title":748,"path":749,"stem":750,"children":751},"Web application firewall (WAF)","\u002Fdocs\u002Fservices\u002Fnetwork\u002Fwaf","docs\u002Fservices\u002Fnetwork\u002Fwaf\u002Findex",[752],{"title":748,"path":749,"stem":750},{"title":754,"path":755,"stem":756,"children":757},"Storage","\u002Fdocs\u002Fservices\u002Fstorage","docs\u002Fservices\u002Fstorage\u002Findex",[758,759,765,771,777,783,789,795],{"title":754,"path":755,"stem":756},{"title":760,"path":761,"stem":762,"children":763},"Folders","\u002Fdocs\u002Fservices\u002Fstorage\u002Fbuckets","docs\u002Fservices\u002Fstorage\u002Fbuckets\u002Findex",[764],{"title":760,"path":761,"stem":762},{"title":766,"path":767,"stem":768,"children":769},"Signed URLs and access","\u002Fdocs\u002Fservices\u002Fstorage\u002Ffile-tokens","docs\u002Fservices\u002Fstorage\u002Ffile-tokens\u002Findex",[770],{"title":766,"path":767,"stem":768},{"title":772,"path":773,"stem":774,"children":775},"Serve and transform images","\u002Fdocs\u002Fservices\u002Fstorage\u002Fimages","docs\u002Fservices\u002Fstorage\u002Fimages\u002Findex",[776],{"title":772,"path":773,"stem":774},{"title":778,"path":779,"stem":780,"children":781},"3D assets","\u002Fdocs\u002Fservices\u002Fstorage\u002Fmodel-viewer","docs\u002Fservices\u002Fstorage\u002Fmodel-viewer\u002Findex",[782],{"title":778,"path":779,"stem":780},{"title":784,"path":785,"stem":786,"children":787},"Access control and visibility","\u002Fdocs\u002Fservices\u002Fstorage\u002Fpermissions","docs\u002Fservices\u002Fstorage\u002Fpermissions\u002Findex",[788],{"title":784,"path":785,"stem":786},{"title":790,"path":791,"stem":792,"children":793},"Quick start","\u002Fdocs\u002Fservices\u002Fstorage\u002Fquick-start","docs\u002Fservices\u002Fstorage\u002Fquick-start\u002Findex",[794],{"title":790,"path":791,"stem":792},{"title":796,"path":797,"stem":798,"children":799},"Upload and manage files","\u002Fdocs\u002Fservices\u002Fstorage\u002Fupload-download","docs\u002Fservices\u002Fstorage\u002Fupload-download\u002Findex",[800],{"title":796,"path":797,"stem":798},{"title":802,"path":803,"stem":804,"children":805},"Webhooks","\u002Fdocs\u002Fservices\u002Fwebhooks","docs\u002Fservices\u002Fwebhooks\u002Findex",[806,807,813],{"title":802,"path":803,"stem":804},{"title":808,"path":809,"stem":810,"children":811},"Delivery","\u002Fdocs\u002Fservices\u002Fwebhooks\u002Fdelivery","docs\u002Fservices\u002Fwebhooks\u002Fdelivery\u002Findex",[812],{"title":808,"path":809,"stem":810},{"title":814,"path":815,"stem":816,"children":817},"Security","\u002Fdocs\u002Fservices\u002Fwebhooks\u002Fsecurity","docs\u002Fservices\u002Fwebhooks\u002Fsecurity\u002Findex",[818],{"title":814,"path":815,"stem":816},{"title":820,"path":821,"stem":822,"children":823},"Studios","\u002Fdocs\u002Fstudios","docs\u002Fstudios\u002Findex",[824,825,831,995,1346,1738,1920],{"title":820,"path":821,"stem":822},{"title":826,"path":827,"stem":828,"children":829},"AI Studio","\u002Fdocs\u002Fstudios\u002Fai","docs\u002Fstudios\u002Fai\u002Findex",[830],{"title":826,"path":827,"stem":828},{"title":832,"path":833,"stem":834,"children":835,"icon":94},"Analytics Studio","\u002Fdocs\u002Fstudios\u002Fanalytics","docs\u002Fstudios\u002Fanalytics\u002Findex",[836,837,880,917,923,941,971],{"title":832,"path":833,"stem":834,"icon":94},{"title":838,"path":839,"stem":840,"children":841,"icon":843},"Make your app's data analyzable","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fanalytics-json","docs\u002Fstudios\u002Fanalytics\u002Fanalytics-json\u002Findex",[842,844,850,856,862,868,874],{"title":838,"path":839,"stem":840,"icon":843},"i-lucide-table-2",{"title":845,"path":846,"stem":847,"children":848},"Column locators","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fanalytics-json\u002Fcolumn-locators","docs\u002Fstudios\u002Fanalytics\u002Fanalytics-json\u002Fcolumn-locators\u002Findex",[849],{"title":845,"path":846,"stem":847},{"title":851,"path":852,"stem":853,"children":854},"Declaring a view","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fanalytics-json\u002Fdeclaring-a-view","docs\u002Fstudios\u002Fanalytics\u002Fanalytics-json\u002Fdeclaring-a-view\u002Findex",[855],{"title":851,"path":852,"stem":853},{"title":857,"path":858,"stem":859,"children":860},"Example","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fanalytics-json\u002Fexample","docs\u002Fstudios\u002Fanalytics\u002Fanalytics-json\u002Fexample\u002Findex",[861],{"title":857,"path":858,"stem":859},{"title":863,"path":864,"stem":865,"children":866},"Semantic roles","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fanalytics-json\u002Fsemantic-roles","docs\u002Fstudios\u002Fanalytics\u002Fanalytics-json\u002Fsemantic-roles\u002Findex",[867],{"title":863,"path":864,"stem":865},{"title":869,"path":870,"stem":871,"children":872},"Tenant isolation","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fanalytics-json\u002Ftenant-isolation","docs\u002Fstudios\u002Fanalytics\u002Fanalytics-json\u002Ftenant-isolation\u002Findex",[873],{"title":869,"path":870,"stem":871},{"title":875,"path":876,"stem":877,"children":878},"The contract","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fanalytics-json\u002Fthe-contract","docs\u002Fstudios\u002Fanalytics\u002Fanalytics-json\u002Fthe-contract\u002Findex",[879],{"title":875,"path":876,"stem":877},{"title":881,"path":882,"stem":883,"children":884,"icon":886},"Stream commerce activity","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fevents","docs\u002Fstudios\u002Fanalytics\u002Fevents\u002Findex",[885,887,893,899,905,911],{"title":881,"path":882,"stem":883,"icon":886},"i-lucide-radio",{"title":888,"path":889,"stem":890,"children":891},"Delivery guarantees","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fevents\u002Fdelivery-guarantees","docs\u002Fstudios\u002Fanalytics\u002Fevents\u002Fdelivery-guarantees\u002Findex",[892],{"title":888,"path":889,"stem":890},{"title":894,"path":895,"stem":896,"children":897},"Event types for reporting","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fevents\u002Fevent-types-for-reporting","docs\u002Fstudios\u002Fanalytics\u002Fevents\u002Fevent-types-for-reporting\u002Findex",[898],{"title":894,"path":895,"stem":896},{"title":900,"path":901,"stem":902,"children":903},"Register an endpoint","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fevents\u002Fregister-an-endpoint","docs\u002Fstudios\u002Fanalytics\u002Fevents\u002Fregister-an-endpoint\u002Findex",[904],{"title":900,"path":901,"stem":902},{"title":906,"path":907,"stem":908,"children":909},"The event stream","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fevents\u002Fthe-event-stream","docs\u002Fstudios\u002Fanalytics\u002Fevents\u002Fthe-event-stream\u002Findex",[910],{"title":906,"path":907,"stem":908},{"title":912,"path":913,"stem":914,"children":915},"Verify a delivery","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fevents\u002Fverify-a-delivery","docs\u002Fstudios\u002Fanalytics\u002Fevents\u002Fverify-a-delivery\u002Findex",[916],{"title":912,"path":913,"stem":914},{"title":918,"path":919,"stem":920,"children":921,"icon":29},"Getting data out","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fgetting-data-out","docs\u002Fstudios\u002Fanalytics\u002Fgetting-data-out\u002Findex",[922],{"title":918,"path":919,"stem":920,"icon":29},{"title":924,"path":925,"stem":926,"children":927,"icon":392},"Limits and what's next","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Flimits","docs\u002Fstudios\u002Fanalytics\u002Flimits\u002Findex",[928,929,935],{"title":924,"path":925,"stem":926,"icon":392},{"title":930,"path":931,"stem":932,"children":933},"Designing for what's coming","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Flimits\u002Fdesigning-for-whats-coming","docs\u002Fstudios\u002Fanalytics\u002Flimits\u002Fdesigning-for-whats-coming\u002Findex",[934],{"title":930,"path":931,"stem":932},{"title":936,"path":937,"stem":938,"children":939},"What does not exist yet","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Flimits\u002Fwhat-does-not-exist-yet","docs\u002Fstudios\u002Fanalytics\u002Flimits\u002Fwhat-does-not-exist-yet\u002Findex",[940],{"title":936,"path":937,"stem":938},{"title":942,"path":943,"stem":944,"children":945,"icon":122},"Build your own reporting store","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fown-store","docs\u002Fstudios\u002Fanalytics\u002Fown-store\u002Findex",[946,947,953,959,965],{"title":942,"path":943,"stem":944,"icon":122},{"title":948,"path":949,"stem":950,"children":951},"Backfill","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fown-store\u002Fbackfill","docs\u002Fstudios\u002Fanalytics\u002Fown-store\u002Fbackfill\u002Findex",[952],{"title":948,"path":949,"stem":950},{"title":954,"path":955,"stem":956,"children":957},"Incremental sync","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fown-store\u002Fincremental-sync","docs\u002Fstudios\u002Fanalytics\u002Fown-store\u002Fincremental-sync\u002Findex",[958],{"title":954,"path":955,"stem":956},{"title":960,"path":961,"stem":962,"children":963},"Modelling","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fown-store\u002Fmodelling","docs\u002Fstudios\u002Fanalytics\u002Fown-store\u002Fmodelling\u002Findex",[964],{"title":960,"path":961,"stem":962},{"title":966,"path":967,"stem":968,"children":969},"Pull versus push","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fown-store\u002Fpull-vs-push","docs\u002Fstudios\u002Fanalytics\u002Fown-store\u002Fpull-vs-push\u002Findex",[970],{"title":966,"path":967,"stem":968},{"title":972,"path":973,"stem":974,"children":975,"icon":94},"What the tenant sees","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fwhat-the-tenant-sees","docs\u002Fstudios\u002Fanalytics\u002Fwhat-the-tenant-sees\u002Findex",[976,977,983,989],{"title":972,"path":973,"stem":974,"icon":94},{"title":978,"path":979,"stem":980,"children":981},"Cohorts","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fwhat-the-tenant-sees\u002Fcohorts","docs\u002Fstudios\u002Fanalytics\u002Fwhat-the-tenant-sees\u002Fcohorts\u002Findex",[982],{"title":978,"path":979,"stem":980},{"title":984,"path":985,"stem":986,"children":987},"Datasets and charts","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fwhat-the-tenant-sees\u002Fdatasets-and-charts","docs\u002Fstudios\u002Fanalytics\u002Fwhat-the-tenant-sees\u002Fdatasets-and-charts\u002Findex",[988],{"title":984,"path":985,"stem":986},{"title":990,"path":991,"stem":992,"children":993},"Studio overview","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fwhat-the-tenant-sees\u002Fstudio-overview","docs\u002Fstudios\u002Fanalytics\u002Fwhat-the-tenant-sees\u002Fstudio-overview\u002Findex",[994],{"title":990,"path":991,"stem":992},{"title":996,"path":997,"stem":998,"children":999},"App Studio","\u002Fdocs\u002Fstudios\u002Fapps","docs\u002Fstudios\u002Fapps\u002Findex",[1000,1001,1037,1107,1178,1196,1262],{"title":996,"path":997,"stem":998},{"title":1002,"path":1003,"stem":1004,"children":1005,"icon":115},"Admin UI","\u002Fdocs\u002Fstudios\u002Fapps\u002Fadmin-ui","docs\u002Fstudios\u002Fapps\u002Fadmin-ui\u002Findex",[1006,1007,1013,1019,1025,1031],{"title":1002,"path":1003,"stem":1004,"icon":115},{"title":1008,"path":1009,"stem":1010,"children":1011},"How the Cockpit renders","\u002Fdocs\u002Fstudios\u002Fapps\u002Fadmin-ui\u002Fhow-cockpit-renders","docs\u002Fstudios\u002Fapps\u002Fadmin-ui\u002Fhow-cockpit-renders\u002Findex",[1012],{"title":1008,"path":1009,"stem":1010},{"title":1014,"path":1015,"stem":1016,"children":1017},"Preview locally","\u002Fdocs\u002Fstudios\u002Fapps\u002Fadmin-ui\u002Fpreview-locally","docs\u002Fstudios\u002Fapps\u002Fadmin-ui\u002Fpreview-locally\u002Findex",[1018],{"title":1014,"path":1015,"stem":1016},{"title":1020,"path":1021,"stem":1022,"children":1023},"Reading settings","\u002Fdocs\u002Fstudios\u002Fapps\u002Fadmin-ui\u002Freading-settings","docs\u002Fstudios\u002Fapps\u002Fadmin-ui\u002Freading-settings\u002Findex",[1024],{"title":1020,"path":1021,"stem":1022},{"title":1026,"path":1027,"stem":1028,"children":1029},"Settings","\u002Fdocs\u002Fstudios\u002Fapps\u002Fadmin-ui\u002Fsettings","docs\u002Fstudios\u002Fapps\u002Fadmin-ui\u002Fsettings\u002Findex",[1030],{"title":1026,"path":1027,"stem":1028},{"title":1032,"path":1033,"stem":1034,"children":1035},"Vocabularies","\u002Fdocs\u002Fstudios\u002Fapps\u002Fadmin-ui\u002Fvocabularies","docs\u002Fstudios\u002Fapps\u002Fadmin-ui\u002Fvocabularies\u002Findex",[1036],{"title":1032,"path":1033,"stem":1034},{"title":1038,"path":1039,"stem":1040,"children":1041,"icon":399},"Your app's API","\u002Fdocs\u002Fstudios\u002Fapps\u002Fapi","docs\u002Fstudios\u002Fapps\u002Fapi\u002Findex",[1042,1043,1048,1054,1060,1066,1072,1077,1083,1089,1095,1101],{"title":1038,"path":1039,"stem":1040,"icon":399},{"title":706,"path":1044,"stem":1045,"children":1046},"\u002Fdocs\u002Fstudios\u002Fapps\u002Fapi\u002Fcaching","docs\u002Fstudios\u002Fapps\u002Fapi\u002Fcaching\u002Findex",[1047],{"title":706,"path":1044,"stem":1045},{"title":1049,"path":1050,"stem":1051,"children":1052},"Calling another app","\u002Fdocs\u002Fstudios\u002Fapps\u002Fapi\u002Fcalling-another-app","docs\u002Fstudios\u002Fapps\u002Fapi\u002Fcalling-another-app\u002Findex",[1053],{"title":1049,"path":1050,"stem":1051},{"title":1055,"path":1056,"stem":1057,"children":1058},"Capabilities","\u002Fdocs\u002Fstudios\u002Fapps\u002Fapi\u002Fcapabilities","docs\u002Fstudios\u002Fapps\u002Fapi\u002Fcapabilities\u002Findex",[1059],{"title":1055,"path":1056,"stem":1057},{"title":1061,"path":1062,"stem":1063,"children":1064},"Capability reference","\u002Fdocs\u002Fstudios\u002Fapps\u002Fapi\u002Fcapability-reference","docs\u002Fstudios\u002Fapps\u002Fapi\u002Fcapability-reference\u002Findex",[1065],{"title":1061,"path":1062,"stem":1063},{"title":1067,"path":1068,"stem":1069,"children":1070},"CRUD","\u002Fdocs\u002Fstudios\u002Fapps\u002Fapi\u002Fcrud","docs\u002Fstudios\u002Fapps\u002Fapi\u002Fcrud\u002Findex",[1071],{"title":1067,"path":1068,"stem":1069},{"title":583,"path":1073,"stem":1074,"children":1075},"\u002Fdocs\u002Fstudios\u002Fapps\u002Fapi\u002Ferrors","docs\u002Fstudios\u002Fapps\u002Fapi\u002Ferrors\u002Findex",[1076],{"title":583,"path":1073,"stem":1074},{"title":1078,"path":1079,"stem":1080,"children":1081},"Overriding a capability","\u002Fdocs\u002Fstudios\u002Fapps\u002Fapi\u002Foverriding-a-capability","docs\u002Fstudios\u002Fapps\u002Fapi\u002Foverriding-a-capability\u002Findex",[1082],{"title":1078,"path":1079,"stem":1080},{"title":1084,"path":1085,"stem":1086,"children":1087},"Pagination and filtering","\u002Fdocs\u002Fstudios\u002Fapps\u002Fapi\u002Fpagination-and-filtering","docs\u002Fstudios\u002Fapps\u002Fapi\u002Fpagination-and-filtering\u002Findex",[1088],{"title":1084,"path":1085,"stem":1086},{"title":1090,"path":1091,"stem":1092,"children":1093},"Published OpenAPI","\u002Fdocs\u002Fstudios\u002Fapps\u002Fapi\u002Fpublished-openapi","docs\u002Fstudios\u002Fapps\u002Fapi\u002Fpublished-openapi\u002Findex",[1094],{"title":1090,"path":1091,"stem":1092},{"title":1096,"path":1097,"stem":1098,"children":1099},"The router","\u002Fdocs\u002Fstudios\u002Fapps\u002Fapi\u002Frouter","docs\u002Fstudios\u002Fapps\u002Fapi\u002Frouter\u002Findex",[1100],{"title":1096,"path":1097,"stem":1098},{"title":1102,"path":1103,"stem":1104,"children":1105},"Tags","\u002Fdocs\u002Fstudios\u002Fapps\u002Fapi\u002Ftags","docs\u002Fstudios\u002Fapps\u002Fapi\u002Ftags\u002Findex",[1106],{"title":1102,"path":1103,"stem":1104},{"title":1108,"path":1109,"stem":1110,"children":1111,"icon":122},"Data model","\u002Fdocs\u002Fstudios\u002Fapps\u002Fdata-model","docs\u002Fstudios\u002Fapps\u002Fdata-model\u002Findex",[1112,1113,1119,1125,1131,1137,1143,1149,1155,1161,1167,1172],{"title":1108,"path":1109,"stem":1110,"icon":122},{"title":1114,"path":1115,"stem":1116,"children":1117},"Adapters","\u002Fdocs\u002Fstudios\u002Fapps\u002Fdata-model\u002Fadapters","docs\u002Fstudios\u002Fapps\u002Fdata-model\u002Fadapters\u002Findex",[1118],{"title":1114,"path":1115,"stem":1116},{"title":1120,"path":1121,"stem":1122,"children":1123},"Column types","\u002Fdocs\u002Fstudios\u002Fapps\u002Fdata-model\u002Fcolumn-types","docs\u002Fstudios\u002Fapps\u002Fdata-model\u002Fcolumn-types\u002Findex",[1124],{"title":1120,"path":1121,"stem":1122},{"title":1126,"path":1127,"stem":1128,"children":1129},"Cross-app lookups","\u002Fdocs\u002Fstudios\u002Fapps\u002Fdata-model\u002Fcross-app-lookups","docs\u002Fstudios\u002Fapps\u002Fdata-model\u002Fcross-app-lookups\u002Findex",[1130],{"title":1126,"path":1127,"stem":1128},{"title":1132,"path":1133,"stem":1134,"children":1135},"Migrations","\u002Fdocs\u002Fstudios\u002Fapps\u002Fdata-model\u002Fmigrations","docs\u002Fstudios\u002Fapps\u002Fdata-model\u002Fmigrations\u002Findex",[1136],{"title":1132,"path":1133,"stem":1134},{"title":1138,"path":1139,"stem":1140,"children":1141},"Projections","\u002Fdocs\u002Fstudios\u002Fapps\u002Fdata-model\u002Fprojections","docs\u002Fstudios\u002Fapps\u002Fdata-model\u002Fprojections\u002Findex",[1142],{"title":1138,"path":1139,"stem":1140},{"title":1144,"path":1145,"stem":1146,"children":1147},"Relationships","\u002Fdocs\u002Fstudios\u002Fapps\u002Fdata-model\u002Frelationships","docs\u002Fstudios\u002Fapps\u002Fdata-model\u002Frelationships\u002Findex",[1148],{"title":1144,"path":1145,"stem":1146},{"title":1150,"path":1151,"stem":1152,"children":1153},"Schema reference","\u002Fdocs\u002Fstudios\u002Fapps\u002Fdata-model\u002Fschema-reference","docs\u002Fstudios\u002Fapps\u002Fdata-model\u002Fschema-reference\u002Findex",[1154],{"title":1150,"path":1151,"stem":1152},{"title":1156,"path":1157,"stem":1158,"children":1159},"Scoping","\u002Fdocs\u002Fstudios\u002Fapps\u002Fdata-model\u002Fscoping","docs\u002Fstudios\u002Fapps\u002Fdata-model\u002Fscoping\u002Findex",[1160],{"title":1156,"path":1157,"stem":1158},{"title":1162,"path":1163,"stem":1164,"children":1165},"search.json reference","\u002Fdocs\u002Fstudios\u002Fapps\u002Fdata-model\u002Fsearch-json","docs\u002Fstudios\u002Fapps\u002Fdata-model\u002Fsearch-json\u002Findex",[1166],{"title":1162,"path":1163,"stem":1164},{"title":869,"path":1168,"stem":1169,"children":1170},"\u002Fdocs\u002Fstudios\u002Fapps\u002Fdata-model\u002Ftenant-isolation","docs\u002Fstudios\u002Fapps\u002Fdata-model\u002Ftenant-isolation\u002Findex",[1171],{"title":869,"path":1168,"stem":1169},{"title":1173,"path":1174,"stem":1175,"children":1176},"The typed client","\u002Fdocs\u002Fstudios\u002Fapps\u002Fdata-model\u002Ftyped-client","docs\u002Fstudios\u002Fapps\u002Fdata-model\u002Ftyped-client\u002Findex",[1177],{"title":1173,"path":1174,"stem":1175},{"title":1179,"path":1180,"stem":1181,"children":1182},"Getting started","\u002Fdocs\u002Fstudios\u002Fapps\u002Fgetting-started","docs\u002Fstudios\u002Fapps\u002Fgetting-started\u002Findex",[1183,1184,1190],{"title":1179,"path":1180,"stem":1181},{"title":1185,"path":1186,"stem":1187,"children":1188},"App model","\u002Fdocs\u002Fstudios\u002Fapps\u002Fgetting-started\u002Fapp-model","docs\u002Fstudios\u002Fapps\u002Fgetting-started\u002Fapp-model\u002Findex",[1189],{"title":1185,"path":1186,"stem":1187},{"title":1191,"path":1192,"stem":1193,"children":1194},"App isolation","\u002Fdocs\u002Fstudios\u002Fapps\u002Fgetting-started\u002Fisolation","docs\u002Fstudios\u002Fapps\u002Fgetting-started\u002Fisolation\u002Findex",[1195],{"title":1191,"path":1192,"stem":1193},{"title":1197,"path":1198,"stem":1199,"children":1200,"icon":220},"Platform services","\u002Fdocs\u002Fstudios\u002Fapps\u002Fplatform-services","docs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Findex",[1201,1202,1208,1214,1220,1226,1232,1238,1244,1250,1256],{"title":1197,"path":1198,"stem":1199,"icon":220},{"title":1203,"path":1204,"stem":1205,"children":1206},"Entity access","\u002Fdocs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Fentity-access","docs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Fentity-access\u002Findex",[1207],{"title":1203,"path":1204,"stem":1205},{"title":1209,"path":1210,"stem":1211,"children":1212},"Events you emit","\u002Fdocs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Fevents-you-emit","docs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Fevents-you-emit\u002Findex",[1213],{"title":1209,"path":1210,"stem":1211},{"title":1215,"path":1216,"stem":1217,"children":1218},"Events you receive","\u002Fdocs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Fevents-you-receive","docs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Fevents-you-receive\u002Findex",[1219],{"title":1215,"path":1216,"stem":1217},{"title":1221,"path":1222,"stem":1223,"children":1224},"Not yet proven","\u002Fdocs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Fnot-yet-proven","docs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Fnot-yet-proven\u002Findex",[1225],{"title":1221,"path":1222,"stem":1223},{"title":1227,"path":1228,"stem":1229,"children":1230},"Outbound HTTP","\u002Fdocs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Foutbound-http","docs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Foutbound-http\u002Findex",[1231],{"title":1227,"path":1228,"stem":1229},{"title":1233,"path":1234,"stem":1235,"children":1236},"Permissions","\u002Fdocs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Fpermissions","docs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Fpermissions\u002Findex",[1237],{"title":1233,"path":1234,"stem":1235},{"title":1239,"path":1240,"stem":1241,"children":1242},"Person permissions","\u002Fdocs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Fperson-permissions","docs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Fperson-permissions\u002Findex",[1243],{"title":1239,"path":1240,"stem":1241},{"title":1245,"path":1246,"stem":1247,"children":1248},"Scheduled work","\u002Fdocs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Fscheduled-work","docs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Fscheduled-work\u002Findex",[1249],{"title":1245,"path":1246,"stem":1247},{"title":1251,"path":1252,"stem":1253,"children":1254},"Tenant identity","\u002Fdocs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Ftenant-identity","docs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Ftenant-identity\u002Findex",[1255],{"title":1251,"path":1252,"stem":1253},{"title":1257,"path":1258,"stem":1259,"children":1260},"Tracing","\u002Fdocs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Ftracing","docs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Ftracing\u002Findex",[1261],{"title":1257,"path":1258,"stem":1259},{"title":1263,"path":1264,"stem":1265,"children":1266,"icon":1268},"Ship and operate","\u002Fdocs\u002Fstudios\u002Fapps\u002Fship-and-operate","docs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Findex",[1267,1269,1275,1281,1287,1293,1299,1305,1311,1317,1323,1329,1335,1341],{"title":1263,"path":1264,"stem":1265,"icon":1268},"i-lucide-rocket",{"title":1270,"path":1271,"stem":1272,"children":1273},"Billing","\u002Fdocs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fbilling","docs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fbilling\u002Findex",[1274],{"title":1270,"path":1271,"stem":1272},{"title":1276,"path":1277,"stem":1278,"children":1279},"Consent","\u002Fdocs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fconsent","docs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fconsent\u002Findex",[1280],{"title":1276,"path":1277,"stem":1278},{"title":1282,"path":1283,"stem":1284,"children":1285},"Dependencies","\u002Fdocs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fdependencies","docs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fdependencies\u002Findex",[1286],{"title":1282,"path":1283,"stem":1284},{"title":1288,"path":1289,"stem":1290,"children":1291},"Deploying","\u002Fdocs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fdeploying","docs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fdeploying\u002Findex",[1292],{"title":1288,"path":1289,"stem":1290},{"title":1294,"path":1295,"stem":1296,"children":1297},"Manifest reference","\u002Fdocs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fmanifest-reference","docs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fmanifest-reference\u002Findex",[1298],{"title":1294,"path":1295,"stem":1296},{"title":1300,"path":1301,"stem":1302,"children":1303},"Operating","\u002Fdocs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Foperating","docs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Foperating\u002Findex",[1304],{"title":1300,"path":1301,"stem":1302},{"title":1306,"path":1307,"stem":1308,"children":1309},"Pairing a frontend","\u002Fdocs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fpairing-a-frontend","docs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fpairing-a-frontend\u002Findex",[1310],{"title":1306,"path":1307,"stem":1308},{"title":1312,"path":1313,"stem":1314,"children":1315},"Private or Marketplace","\u002Fdocs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fprivate-vs-marketplace","docs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fprivate-vs-marketplace\u002Findex",[1316],{"title":1312,"path":1313,"stem":1314},{"title":1318,"path":1319,"stem":1320,"children":1321},"Publish and install","\u002Fdocs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fpublish-and-install","docs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fpublish-and-install\u002Findex",[1322],{"title":1318,"path":1319,"stem":1320},{"title":1324,"path":1325,"stem":1326,"children":1327},"Testing","\u002Fdocs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Ftesting","docs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Ftesting\u002Findex",[1328],{"title":1324,"path":1325,"stem":1326},{"title":1330,"path":1331,"stem":1332,"children":1333},"Validate","\u002Fdocs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fvalidate","docs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fvalidate\u002Findex",[1334],{"title":1330,"path":1331,"stem":1332},{"title":1336,"path":1337,"stem":1338,"children":1339},"Verifying live","\u002Fdocs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fverifying-live","docs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fverifying-live\u002Findex",[1340],{"title":1336,"path":1337,"stem":1338},{"title":559,"path":1342,"stem":1343,"children":1344},"\u002Fdocs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fversioning","docs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fversioning\u002Findex",[1345],{"title":559,"path":1342,"stem":1343},{"title":1347,"path":1348,"stem":1349,"children":1350,"icon":1352},"Commerce Studio","\u002Fdocs\u002Fstudios\u002Fcommerce","docs\u002Fstudios\u002Fcommerce\u002Findex",[1351,1353,1431,1490,1539,1544,1598,1657,1711],{"title":1347,"path":1348,"stem":1349,"icon":1352},"i-lucide-shopping-bag",{"title":1354,"path":1355,"stem":1356,"children":1357,"icon":1359},"Build an app","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app","docs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Findex",[1358,1360,1366,1372,1378,1384,1390,1396,1402,1408,1414,1420,1425],{"title":1354,"path":1355,"stem":1356,"icon":1359},"i-lucide-puzzle",{"title":1361,"path":1362,"stem":1363,"children":1364},"Actions and writes","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Factions-and-writes","docs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Factions-and-writes\u002Findex",[1365],{"title":1361,"path":1362,"stem":1363},{"title":1367,"path":1368,"stem":1369,"children":1370},"Apps API","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Fapps-api","docs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Fapps-api\u002Findex",[1371],{"title":1367,"path":1368,"stem":1369},{"title":1373,"path":1374,"stem":1375,"children":1376},"cockpit.json reference","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Fcockpit-json-reference","docs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Fcockpit-json-reference\u002Findex",[1377],{"title":1373,"path":1374,"stem":1375},{"title":1379,"path":1380,"stem":1381,"children":1382},"Detail views","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Fdetail-views","docs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Fdetail-views\u002Findex",[1383],{"title":1379,"path":1380,"stem":1381},{"title":1385,"path":1386,"stem":1387,"children":1388},"Forms","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Fforms","docs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Fforms\u002Findex",[1389],{"title":1385,"path":1386,"stem":1387},{"title":1391,"path":1392,"stem":1393,"children":1394},"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",[1395],{"title":1391,"path":1392,"stem":1393},{"title":1397,"path":1398,"stem":1399,"children":1400},"How it renders","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Fhow-it-renders","docs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Fhow-it-renders\u002Findex",[1401],{"title":1397,"path":1398,"stem":1399},{"title":1403,"path":1404,"stem":1405,"children":1406},"List views","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Flist-views","docs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Flist-views\u002Findex",[1407],{"title":1403,"path":1404,"stem":1405},{"title":1409,"path":1410,"stem":1411,"children":1412},"Navigation","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Fnavigation","docs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Fnavigation\u002Findex",[1413],{"title":1409,"path":1410,"stem":1411},{"title":1415,"path":1416,"stem":1417,"children":1418},"Permissions and scope","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Fpermissions-and-scope","docs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Fpermissions-and-scope\u002Findex",[1419],{"title":1415,"path":1416,"stem":1417},{"title":1014,"path":1421,"stem":1422,"children":1423},"\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Fpreview-locally","docs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Fpreview-locally\u002Findex",[1424],{"title":1014,"path":1421,"stem":1422},{"title":1426,"path":1427,"stem":1428,"children":1429},"Widgets","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Fwidgets","docs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Fwidgets\u002Findex",[1430],{"title":1426,"path":1427,"stem":1428},{"title":1432,"path":1433,"stem":1434,"children":1435,"icon":310},"Catalog","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fcatalog","docs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Findex",[1436,1437,1443,1449,1455,1461,1466,1472,1478,1484],{"title":1432,"path":1433,"stem":1434,"icon":310},{"title":1438,"path":1439,"stem":1440,"children":1441},"Assets","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Fassets","docs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Fassets\u002Findex",[1442],{"title":1438,"path":1439,"stem":1440},{"title":1444,"path":1445,"stem":1446,"children":1447},"Associations","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Fassociations","docs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Fassociations\u002Findex",[1448],{"title":1444,"path":1445,"stem":1446},{"title":1450,"path":1451,"stem":1452,"children":1453},"Categories","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Fcategories","docs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Fcategories\u002Findex",[1454],{"title":1450,"path":1451,"stem":1452},{"title":1456,"path":1457,"stem":1458,"children":1459},"Completeness","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Fcompleteness","docs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Fcompleteness\u002Findex",[1460],{"title":1456,"path":1457,"stem":1458},{"title":1108,"path":1462,"stem":1463,"children":1464},"\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Fdata-model","docs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Fdata-model\u002Findex",[1465],{"title":1108,"path":1462,"stem":1463},{"title":1467,"path":1468,"stem":1469,"children":1470},"Import and export","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Fimport-and-export","docs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Fimport-and-export\u002Findex",[1471],{"title":1467,"path":1468,"stem":1469},{"title":1473,"path":1474,"stem":1475,"children":1476},"Languages and locale codes","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Flanguages-and-locale-codes","docs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Flanguages-and-locale-codes\u002Findex",[1477],{"title":1473,"path":1474,"stem":1475},{"title":1479,"path":1480,"stem":1481,"children":1482},"Products","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Fproducts","docs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Fproducts\u002Findex",[1483],{"title":1479,"path":1480,"stem":1481},{"title":1485,"path":1486,"stem":1487,"children":1488},"References","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Freferences","docs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Freferences\u002Findex",[1489],{"title":1485,"path":1486,"stem":1487},{"title":1491,"path":1492,"stem":1493,"children":1494,"icon":1496},"Customers","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fcustomers","docs\u002Fstudios\u002Fcommerce\u002Fcustomers\u002Findex",[1495,1497,1503,1509,1515,1521,1527,1533],{"title":1491,"path":1492,"stem":1493,"icon":1496},"i-lucide-building-2",{"title":1498,"path":1499,"stem":1500,"children":1501},"Contacts","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fcustomers\u002Fcontacts","docs\u002Fstudios\u002Fcommerce\u002Fcustomers\u002Fcontacts\u002Findex",[1502],{"title":1498,"path":1499,"stem":1500},{"title":1504,"path":1505,"stem":1506,"children":1507},"Organizations","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fcustomers\u002Forganizations","docs\u002Fstudios\u002Fcommerce\u002Fcustomers\u002Forganizations\u002Findex",[1508],{"title":1504,"path":1505,"stem":1506},{"title":1510,"path":1511,"stem":1512,"children":1513},"Roles and permissions","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fcustomers\u002Froles-and-permissions","docs\u002Fstudios\u002Fcommerce\u002Fcustomers\u002Froles-and-permissions\u002Findex",[1514],{"title":1510,"path":1511,"stem":1512},{"title":1516,"path":1517,"stem":1518,"children":1519},"Sales reps","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fcustomers\u002Fsales-reps","docs\u002Fstudios\u002Fcommerce\u002Fcustomers\u002Fsales-reps\u002Findex",[1520],{"title":1516,"path":1517,"stem":1518},{"title":1522,"path":1523,"stem":1524,"children":1525},"Segments","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fcustomers\u002Fsegments","docs\u002Fstudios\u002Fcommerce\u002Fcustomers\u002Fsegments\u002Findex",[1526],{"title":1522,"path":1523,"stem":1524},{"title":1528,"path":1529,"stem":1530,"children":1531},"Storefront accounts","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fcustomers\u002Fstorefront-accounts","docs\u002Fstudios\u002Fcommerce\u002Fcustomers\u002Fstorefront-accounts\u002Findex",[1532],{"title":1528,"path":1529,"stem":1530},{"title":1534,"path":1535,"stem":1536,"children":1537},"Value lists","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fcustomers\u002Fvalue-lists","docs\u002Fstudios\u002Fcommerce\u002Fcustomers\u002Fvalue-lists\u002Findex",[1538],{"title":1534,"path":1535,"stem":1536},{"title":1179,"path":1540,"stem":1541,"children":1542,"icon":1268},"\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fgetting-started","docs\u002Fstudios\u002Fcommerce\u002Fgetting-started\u002Findex",[1543],{"title":1179,"path":1540,"stem":1541,"icon":1268},{"title":1545,"path":1546,"stem":1547,"children":1548,"icon":143},"Marketing","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fmarketing","docs\u002Fstudios\u002Fcommerce\u002Fmarketing\u002Findex",[1549,1550,1556,1562,1568,1574,1580,1586,1592],{"title":1545,"path":1546,"stem":1547,"icon":143},{"title":1551,"path":1552,"stem":1553,"children":1554},"Ads","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fmarketing\u002Fads","docs\u002Fstudios\u002Fcommerce\u002Fmarketing\u002Fads\u002Findex",[1555],{"title":1551,"path":1552,"stem":1553},{"title":1557,"path":1558,"stem":1559,"children":1560},"Audiences","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fmarketing\u002Faudiences","docs\u002Fstudios\u002Fcommerce\u002Fmarketing\u002Faudiences\u002Findex",[1561],{"title":1557,"path":1558,"stem":1559},{"title":1563,"path":1564,"stem":1565,"children":1566},"Campaigns","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fmarketing\u002Fcampaigns","docs\u002Fstudios\u002Fcommerce\u002Fmarketing\u002Fcampaigns\u002Findex",[1567],{"title":1563,"path":1564,"stem":1565},{"title":1569,"path":1570,"stem":1571,"children":1572},"Journeys","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fmarketing\u002Fjourneys","docs\u002Fstudios\u002Fcommerce\u002Fmarketing\u002Fjourneys\u002Findex",[1573],{"title":1569,"path":1570,"stem":1571},{"title":1575,"path":1576,"stem":1577,"children":1578},"Loyalty","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fmarketing\u002Floyalty","docs\u002Fstudios\u002Fcommerce\u002Fmarketing\u002Floyalty\u002Findex",[1579],{"title":1575,"path":1576,"stem":1577},{"title":1581,"path":1582,"stem":1583,"children":1584},"Mailings","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fmarketing\u002Fmailings","docs\u002Fstudios\u002Fcommerce\u002Fmarketing\u002Fmailings\u002Findex",[1585],{"title":1581,"path":1582,"stem":1583},{"title":1587,"path":1588,"stem":1589,"children":1590,"icon":344},"Marketing consents","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fmarketing\u002Fmarketing-consents","docs\u002Fstudios\u002Fcommerce\u002Fmarketing\u002Fmarketing-consents\u002Findex",[1591],{"title":1587,"path":1588,"stem":1589,"icon":344},{"title":1593,"path":1594,"stem":1595,"children":1596},"Reviews","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fmarketing\u002Freviews","docs\u002Fstudios\u002Fcommerce\u002Fmarketing\u002Freviews\u002Findex",[1597],{"title":1593,"path":1594,"stem":1595},{"title":1599,"path":1600,"stem":1601,"children":1602,"icon":691},"Markets and pricing","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing","docs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Findex",[1603,1604,1610,1616,1622,1628,1634,1640,1646,1651],{"title":1599,"path":1600,"stem":1601,"icon":691},{"title":1605,"path":1606,"stem":1607,"children":1608},"Carriers and tracking","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Fcarriers-and-tracking","docs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Fcarriers-and-tracking\u002Findex",[1609],{"title":1605,"path":1606,"stem":1607},{"title":1611,"path":1612,"stem":1613,"children":1614},"Channels","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Fchannels","docs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Fchannels\u002Findex",[1615],{"title":1611,"path":1612,"stem":1613},{"title":1617,"path":1618,"stem":1619,"children":1620},"Markets","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Fmarkets","docs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Fmarkets\u002Findex",[1621],{"title":1617,"path":1618,"stem":1619},{"title":1623,"path":1624,"stem":1625,"children":1626},"Payment lifecycle","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Fpayment-lifecycle","docs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Fpayment-lifecycle\u002Findex",[1627],{"title":1623,"path":1624,"stem":1625},{"title":1629,"path":1630,"stem":1631,"children":1632},"Payment methods","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Fpayment-methods","docs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Fpayment-methods\u002Findex",[1633],{"title":1629,"path":1630,"stem":1631},{"title":1635,"path":1636,"stem":1637,"children":1638},"Price lists","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Fprice-lists","docs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Fprice-lists\u002Findex",[1639],{"title":1635,"path":1636,"stem":1637},{"title":1641,"path":1642,"stem":1643,"children":1644},"Promotions","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Fpromotions","docs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Fpromotions\u002Findex",[1645],{"title":1641,"path":1642,"stem":1643},{"title":1026,"path":1647,"stem":1648,"children":1649},"\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Fsettings","docs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Fsettings\u002Findex",[1650],{"title":1026,"path":1647,"stem":1648},{"title":1652,"path":1653,"stem":1654,"children":1655},"Shipping rates","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Fshipping-rates","docs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Fshipping-rates\u002Findex",[1656],{"title":1652,"path":1653,"stem":1654},{"title":1658,"path":1659,"stem":1660,"children":1661,"icon":1663},"Orders","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Forders","docs\u002Fstudios\u002Fcommerce\u002Forders\u002Findex",[1662,1664,1670,1676,1682,1688,1694,1699,1705],{"title":1658,"path":1659,"stem":1660,"icon":1663},"i-lucide-receipt-text",{"title":1665,"path":1666,"stem":1667,"children":1668},"Carts","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Forders\u002Fcarts","docs\u002Fstudios\u002Fcommerce\u002Forders\u002Fcarts\u002Findex",[1669],{"title":1665,"path":1666,"stem":1667},{"title":1671,"path":1672,"stem":1673,"children":1674},"Documents","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Forders\u002Fdocuments","docs\u002Fstudios\u002Fcommerce\u002Forders\u002Fdocuments\u002Findex",[1675],{"title":1671,"path":1672,"stem":1673},{"title":1677,"path":1678,"stem":1679,"children":1680},"Events and comments","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Forders\u002Fevents-and-comments","docs\u002Fstudios\u002Fcommerce\u002Forders\u002Fevents-and-comments\u002Findex",[1681],{"title":1677,"path":1678,"stem":1679},{"title":1683,"path":1684,"stem":1685,"children":1686},"Number ranges","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Forders\u002Fnumber-ranges","docs\u002Fstudios\u002Fcommerce\u002Forders\u002Fnumber-ranges\u002Findex",[1687],{"title":1683,"path":1684,"stem":1685},{"title":1689,"path":1690,"stem":1691,"children":1692},"Order lists","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Forders\u002Forder-lists","docs\u002Fstudios\u002Fcommerce\u002Forders\u002Forder-lists\u002Findex",[1693],{"title":1689,"path":1690,"stem":1691},{"title":1658,"path":1695,"stem":1696,"children":1697},"\u002Fdocs\u002Fstudios\u002Fcommerce\u002Forders\u002Forders","docs\u002Fstudios\u002Fcommerce\u002Forders\u002Forders\u002Findex",[1698],{"title":1658,"path":1695,"stem":1696},{"title":1700,"path":1701,"stem":1702,"children":1703},"Returns","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Forders\u002Freturns","docs\u002Fstudios\u002Fcommerce\u002Forders\u002Freturns\u002Findex",[1704],{"title":1700,"path":1701,"stem":1702},{"title":1706,"path":1707,"stem":1708,"children":1709},"Stock","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Forders\u002Fstock","docs\u002Fstudios\u002Fcommerce\u002Forders\u002Fstock\u002Findex",[1710],{"title":1706,"path":1707,"stem":1708},{"title":1712,"path":1713,"stem":1714,"children":1715,"icon":1717},"Procurement","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fprocurement","docs\u002Fstudios\u002Fcommerce\u002Fprocurement\u002Findex",[1716,1718,1725,1732],{"title":1712,"path":1713,"stem":1714,"icon":1717},"i-lucide-clipboard-check",{"title":1719,"path":1720,"stem":1721,"children":1722,"icon":1724},"Approvals","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fprocurement\u002Fapprovals","docs\u002Fstudios\u002Fcommerce\u002Fprocurement\u002Fapprovals\u002Findex",[1723],{"title":1719,"path":1720,"stem":1721,"icon":1724},"i-lucide-badge-check",{"title":1726,"path":1727,"stem":1728,"children":1729,"icon":1731},"Cost centers","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fprocurement\u002Fcost-centers","docs\u002Fstudios\u002Fcommerce\u002Fprocurement\u002Fcost-centers\u002Findex",[1730],{"title":1726,"path":1727,"stem":1728,"icon":1731},"i-lucide-wallet",{"title":1733,"path":1734,"stem":1735,"children":1736,"icon":29},"Punchout","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fprocurement\u002Fpunchout","docs\u002Fstudios\u002Fcommerce\u002Fprocurement\u002Fpunchout\u002Findex",[1737],{"title":1733,"path":1734,"stem":1735,"icon":29},{"title":1739,"path":1740,"stem":1741,"children":1742},"Integration Studio","\u002Fdocs\u002Fstudios\u002Fintegration-studio","docs\u002Fstudios\u002Fintegration-studio\u002Findex",[1743,1744,1781,1818,1848,1853,1883],{"title":1739,"path":1740,"stem":1741},{"title":1745,"path":1746,"stem":1747,"children":1748,"icon":1750},"Build the workflow","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fbuild","docs\u002Fstudios\u002Fintegration-studio\u002Fbuild\u002Findex",[1749,1751,1757,1763,1769,1775],{"title":1745,"path":1746,"stem":1747,"icon":1750},"i-lucide-workflow",{"title":1752,"path":1753,"stem":1754,"children":1755},"Expressions","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fbuild\u002Fexpressions","docs\u002Fstudios\u002Fintegration-studio\u002Fbuild\u002Fexpressions\u002Findex",[1756],{"title":1752,"path":1753,"stem":1754},{"title":1758,"path":1759,"stem":1760,"children":1761},"Node catalog","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fbuild\u002Fnode-catalog","docs\u002Fstudios\u002Fintegration-studio\u002Fbuild\u002Fnode-catalog\u002Findex",[1762],{"title":1758,"path":1759,"stem":1760},{"title":1764,"path":1765,"stem":1766,"children":1767},"Node configuration","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fbuild\u002Fnode-configuration","docs\u002Fstudios\u002Fintegration-studio\u002Fbuild\u002Fnode-configuration\u002Findex",[1768],{"title":1764,"path":1765,"stem":1766},{"title":1770,"path":1771,"stem":1772,"children":1773},"Templates","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fbuild\u002Ftemplates","docs\u002Fstudios\u002Fintegration-studio\u002Fbuild\u002Ftemplates\u002Findex",[1774],{"title":1770,"path":1771,"stem":1772},{"title":1776,"path":1777,"stem":1778,"children":1779},"The workflow document","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fbuild\u002Fworkflow-model","docs\u002Fstudios\u002Fintegration-studio\u002Fbuild\u002Fworkflow-model\u002Findex",[1780],{"title":1776,"path":1777,"stem":1778},{"title":1782,"path":1783,"stem":1784,"children":1785,"icon":1787},"Connect the systems","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fconnect","docs\u002Fstudios\u002Fintegration-studio\u002Fconnect\u002Findex",[1786,1788,1794,1800,1806,1812],{"title":1782,"path":1783,"stem":1784,"icon":1787},"i-lucide-key-round",{"title":1789,"path":1790,"stem":1791,"children":1792},"Credentials","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fconnect\u002Fcredentials","docs\u002Fstudios\u002Fintegration-studio\u002Fconnect\u002Fcredentials\u002Findex",[1793],{"title":1789,"path":1790,"stem":1791},{"title":1795,"path":1796,"stem":1797,"children":1798},"File transfer","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fconnect\u002Ffiles","docs\u002Fstudios\u002Fintegration-studio\u002Fconnect\u002Ffiles\u002Findex",[1799],{"title":1795,"path":1796,"stem":1797},{"title":1801,"path":1802,"stem":1803,"children":1804},"OAuth","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fconnect\u002Foauth","docs\u002Fstudios\u002Fintegration-studio\u002Fconnect\u002Foauth\u002Findex",[1805],{"title":1801,"path":1802,"stem":1803},{"title":1807,"path":1808,"stem":1809,"children":1810},"Reaching Revenue Cloud","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fconnect\u002Freaching-revenue-cloud","docs\u002Fstudios\u002Fintegration-studio\u002Fconnect\u002Freaching-revenue-cloud\u002Findex",[1811],{"title":1807,"path":1808,"stem":1809},{"title":1813,"path":1814,"stem":1815,"children":1816},"Secrets","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fconnect\u002Fsecrets","docs\u002Fstudios\u002Fintegration-studio\u002Fconnect\u002Fsecrets\u002Findex",[1817],{"title":1813,"path":1814,"stem":1815},{"title":1819,"path":1820,"stem":1821,"children":1822,"icon":310},"Extend the Studio","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fextend","docs\u002Fstudios\u002Fintegration-studio\u002Fextend\u002Findex",[1823,1824,1830,1836,1842],{"title":1819,"path":1820,"stem":1821,"icon":310},{"title":1825,"path":1826,"stem":1827,"children":1828},"Custom nodes","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fextend\u002Fcustom-nodes","docs\u002Fstudios\u002Fintegration-studio\u002Fextend\u002Fcustom-nodes\u002Findex",[1829],{"title":1825,"path":1826,"stem":1827},{"title":1831,"path":1832,"stem":1833,"children":1834},"Dynamic behaviour","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fextend\u002Fdynamic-behaviour","docs\u002Fstudios\u002Fintegration-studio\u002Fextend\u002Fdynamic-behaviour\u002Findex",[1835],{"title":1831,"path":1832,"stem":1833},{"title":1837,"path":1838,"stem":1839,"children":1840},"Package manifest","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fextend\u002Fpackage-manifest","docs\u002Fstudios\u002Fintegration-studio\u002Fextend\u002Fpackage-manifest\u002Findex",[1841],{"title":1837,"path":1838,"stem":1839},{"title":1843,"path":1844,"stem":1845,"children":1846},"Registration","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fextend\u002Fregistration","docs\u002Fstudios\u002Fintegration-studio\u002Fextend\u002Fregistration\u002Findex",[1847],{"title":1843,"path":1844,"stem":1845},{"title":1179,"path":1849,"stem":1850,"children":1851,"icon":1268},"\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fgetting-started","docs\u002Fstudios\u002Fintegration-studio\u002Fgetting-started\u002Findex",[1852],{"title":1179,"path":1849,"stem":1850,"icon":1268},{"title":1854,"path":1855,"stem":1856,"children":1857,"icon":372},"Run, watch, recover","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Foperate","docs\u002Fstudios\u002Fintegration-studio\u002Foperate\u002Findex",[1858,1859,1865,1871,1877],{"title":1854,"path":1855,"stem":1856,"icon":372},{"title":1860,"path":1861,"stem":1862,"children":1863},"Missed runs","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Foperate\u002Fdead-letters","docs\u002Fstudios\u002Fintegration-studio\u002Foperate\u002Fdead-letters\u002Findex",[1864],{"title":1860,"path":1861,"stem":1862},{"title":1866,"path":1867,"stem":1868,"children":1869},"Failure handling","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Foperate\u002Ffailure-handling","docs\u002Fstudios\u002Fintegration-studio\u002Foperate\u002Ffailure-handling\u002Findex",[1870],{"title":1866,"path":1867,"stem":1868},{"title":1872,"path":1873,"stem":1874,"children":1875},"Revisions and audit","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Foperate\u002Frevisions-and-audit","docs\u002Fstudios\u002Fintegration-studio\u002Foperate\u002Frevisions-and-audit\u002Findex",[1876],{"title":1872,"path":1873,"stem":1874},{"title":1878,"path":1879,"stem":1880,"children":1881},"Runs","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Foperate\u002Fruns","docs\u002Fstudios\u002Fintegration-studio\u002Foperate\u002Fruns\u002Findex",[1882],{"title":1878,"path":1879,"stem":1880},{"title":1884,"path":1885,"stem":1886,"children":1887,"icon":1889},"Start the workflow","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fstart","docs\u002Fstudios\u002Fintegration-studio\u002Fstart\u002Findex",[1888,1890,1896,1902,1908,1914],{"title":1884,"path":1885,"stem":1886,"icon":1889},"i-lucide-zap",{"title":1891,"path":1892,"stem":1893,"children":1894},"Event triggers","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fstart\u002Fevent-triggers","docs\u002Fstudios\u002Fintegration-studio\u002Fstart\u002Fevent-triggers\u002Findex",[1895],{"title":1891,"path":1892,"stem":1893},{"title":1897,"path":1898,"stem":1899,"children":1900},"Execution modes","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fstart\u002Fexecution-modes","docs\u002Fstudios\u002Fintegration-studio\u002Fstart\u002Fexecution-modes\u002Findex",[1901],{"title":1897,"path":1898,"stem":1899},{"title":1903,"path":1904,"stem":1905,"children":1906},"Schedule triggers","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fstart\u002Fschedule-triggers","docs\u002Fstudios\u002Fintegration-studio\u002Fstart\u002Fschedule-triggers\u002Findex",[1907],{"title":1903,"path":1904,"stem":1905},{"title":1909,"path":1910,"stem":1911,"children":1912},"Triggers","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fstart\u002Ftriggers","docs\u002Fstudios\u002Fintegration-studio\u002Fstart\u002Ftriggers\u002Findex",[1913],{"title":1909,"path":1910,"stem":1911},{"title":1915,"path":1916,"stem":1917,"children":1918},"Webhook triggers","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fstart\u002Fwebhook-triggers","docs\u002Fstudios\u002Fintegration-studio\u002Fstart\u002Fwebhook-triggers\u002Findex",[1919],{"title":1915,"path":1916,"stem":1917},{"title":1921,"path":1922,"stem":1923,"children":1924},"Experience Studio","\u002Fdocs\u002Fstudios\u002Fsites","docs\u002Fstudios\u002Fsites\u002Findex",[1925,1926,1980,2044,2170,2176,2218],{"title":1921,"path":1922,"stem":1923},{"title":1927,"path":1928,"stem":1929,"children":1930,"icon":481},"Compose pages","\u002Fdocs\u002Fstudios\u002Fsites\u002Fblocks","docs\u002Fstudios\u002Fsites\u002Fblocks\u002Findex",[1931,1932,1938,1944,1950,1956,1962,1968,1974],{"title":1927,"path":1928,"stem":1929,"icon":481},{"title":1933,"path":1934,"stem":1935,"children":1936},"Block catalog","\u002Fdocs\u002Fstudios\u002Fsites\u002Fblocks\u002Fblock-catalog","docs\u002Fstudios\u002Fsites\u002Fblocks\u002Fblock-catalog\u002Findex",[1937],{"title":1933,"path":1934,"stem":1935},{"title":1939,"path":1940,"stem":1941,"children":1942},"Block options","\u002Fdocs\u002Fstudios\u002Fsites\u002Fblocks\u002Fblock-options","docs\u002Fstudios\u002Fsites\u002Fblocks\u002Fblock-options\u002Findex",[1943],{"title":1939,"path":1940,"stem":1941},{"title":1945,"path":1946,"stem":1947,"children":1948},"How a block works","\u002Fdocs\u002Fstudios\u002Fsites\u002Fblocks\u002Fhow-a-block-works","docs\u002Fstudios\u002Fsites\u002Fblocks\u002Fhow-a-block-works\u002Findex",[1949],{"title":1945,"path":1946,"stem":1947},{"title":1951,"path":1952,"stem":1953,"children":1954},"Inline editing","\u002Fdocs\u002Fstudios\u002Fsites\u002Fblocks\u002Finline-editing","docs\u002Fstudios\u002Fsites\u002Fblocks\u002Finline-editing\u002Findex",[1955],{"title":1951,"path":1952,"stem":1953},{"title":1957,"path":1958,"stem":1959,"children":1960},"Managing pages","\u002Fdocs\u002Fstudios\u002Fsites\u002Fblocks\u002Fmanaging-pages","docs\u002Fstudios\u002Fsites\u002Fblocks\u002Fmanaging-pages\u002Findex",[1961],{"title":1957,"path":1958,"stem":1959},{"title":1963,"path":1964,"stem":1965,"children":1966},"Reading published pages","\u002Fdocs\u002Fstudios\u002Fsites\u002Fblocks\u002Freading-pages","docs\u002Fstudios\u002Fsites\u002Fblocks\u002Freading-pages\u002Findex",[1967],{"title":1963,"path":1964,"stem":1965},{"title":1969,"path":1970,"stem":1971,"children":1972},"Registering blocks","\u002Fdocs\u002Fstudios\u002Fsites\u002Fblocks\u002Fregistering","docs\u002Fstudios\u002Fsites\u002Fblocks\u002Fregistering\u002Findex",[1973],{"title":1969,"path":1970,"stem":1971},{"title":1975,"path":1976,"stem":1977,"children":1978},"Shells and fields","\u002Fdocs\u002Fstudios\u002Fsites\u002Fblocks\u002Fshells-and-fields","docs\u002Fstudios\u002Fsites\u002Fblocks\u002Fshells-and-fields\u002Findex",[1979],{"title":1975,"path":1976,"stem":1977},{"title":1981,"path":1982,"stem":1983,"children":1984,"icon":297},"Connect data","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdata","docs\u002Fstudios\u002Fsites\u002Fdata\u002Findex",[1985,1986,1991,1997,2003,2009,2014,2020,2026,2032,2038],{"title":1981,"path":1982,"stem":1983,"icon":297},{"title":626,"path":1987,"stem":1988,"children":1989},"\u002Fdocs\u002Fstudios\u002Fsites\u002Fdata\u002Fauthentication","docs\u002Fstudios\u002Fsites\u002Fdata\u002Fauthentication\u002Findex",[1990],{"title":626,"path":1987,"stem":1988},{"title":1992,"path":1993,"stem":1994,"children":1995},"The BFF pattern","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdata\u002Fbff-pattern","docs\u002Fstudios\u002Fsites\u002Fdata\u002Fbff-pattern\u002Findex",[1996],{"title":1992,"path":1993,"stem":1994},{"title":1998,"path":1999,"stem":2000,"children":2001},"Catalog, cart, checkout","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdata\u002Fcatalog-cart-checkout","docs\u002Fstudios\u002Fsites\u002Fdata\u002Fcatalog-cart-checkout\u002Findex",[2002],{"title":1998,"path":1999,"stem":2000},{"title":2004,"path":2005,"stem":2006,"children":2007},"Consent manager","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdata\u002Fconsent-manager","docs\u002Fstudios\u002Fsites\u002Fdata\u002Fconsent-manager\u002Findex",[2008],{"title":2004,"path":2005,"stem":2006},{"title":1385,"path":2010,"stem":2011,"children":2012},"\u002Fdocs\u002Fstudios\u002Fsites\u002Fdata\u002Fforms","docs\u002Fstudios\u002Fsites\u002Fdata\u002Fforms\u002Findex",[2013],{"title":1385,"path":2010,"stem":2011},{"title":2015,"path":2016,"stem":2017,"children":2018},"Media and assets","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdata\u002Fmedia","docs\u002Fstudios\u002Fsites\u002Fdata\u002Fmedia\u002Findex",[2019],{"title":2015,"path":2016,"stem":2017},{"title":2021,"path":2022,"stem":2023,"children":2024},"Multi-tenant themes","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdata\u002Fmulti-tenant-themes","docs\u002Fstudios\u002Fsites\u002Fdata\u002Fmulti-tenant-themes\u002Findex",[2025],{"title":2021,"path":2022,"stem":2023},{"title":2027,"path":2028,"stem":2029,"children":2030},"Search collections","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdata\u002Fsearch-collections","docs\u002Fstudios\u002Fsites\u002Fdata\u002Fsearch-collections\u002Findex",[2031],{"title":2027,"path":2028,"stem":2029},{"title":2033,"path":2034,"stem":2035,"children":2036},"Search","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdata\u002Fsearch","docs\u002Fstudios\u002Fsites\u002Fdata\u002Fsearch\u002Findex",[2037],{"title":2033,"path":2034,"stem":2035},{"title":2039,"path":2040,"stem":2041,"children":2042},"Tag manager","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdata\u002Ftag-manager","docs\u002Fstudios\u002Fsites\u002Fdata\u002Ftag-manager\u002Findex",[2043],{"title":2039,"path":2040,"stem":2041},{"title":2045,"path":2046,"stem":2047,"children":2048,"icon":1268},"Build and deploy","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Findex",[2049,2050,2056,2062,2068,2074,2080,2086,2164],{"title":2045,"path":2046,"stem":2047,"icon":1268},{"title":2051,"path":2052,"stem":2053,"children":2054},"Build configuration","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fbuild-configuration","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fbuild-configuration\u002Findex",[2055],{"title":2051,"path":2052,"stem":2053},{"title":2057,"path":2058,"stem":2059,"children":2060},"Compute specifications","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fcompute-specifications","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fcompute-specifications\u002Findex",[2061],{"title":2057,"path":2058,"stem":2059},{"title":2063,"path":2064,"stem":2065,"children":2066},"Environment variables","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fenvironment-variables","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fenvironment-variables\u002Findex",[2067],{"title":2063,"path":2064,"stem":2065},{"title":2069,"path":2070,"stem":2071,"children":2072},"From Git","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Ffrom-git","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Ffrom-git\u002Findex",[2073],{"title":2069,"path":2070,"stem":2071},{"title":2075,"path":2076,"stem":2077,"children":2078},"From the CLI","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Ffrom-the-cli","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Ffrom-the-cli\u002Findex",[2079],{"title":2075,"path":2076,"stem":2077},{"title":2081,"path":2082,"stem":2083,"children":2084},"Manually","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fmanually","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fmanually\u002Findex",[2085],{"title":2081,"path":2082,"stem":2083},{"title":2087,"path":2088,"stem":2089,"children":2090},"Quick-starts","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Findex",[2091,2092,2098,2104,2110,2116,2122,2128,2134,2140,2146,2152,2158],{"title":2087,"path":2088,"stem":2089},{"title":2093,"path":2094,"stem":2095,"children":2096},"Deploy an Angular app to revenexx Storefronts","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fangular","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fangular\u002Findex",[2097],{"title":2093,"path":2094,"stem":2095},{"title":2099,"path":2100,"stem":2101,"children":2102},"Deploy a Astro app to revenexx Storefronts","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fastro","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fastro\u002Findex",[2103],{"title":2099,"path":2100,"stem":2101},{"title":2105,"path":2106,"stem":2107,"children":2108},"Deploy a Flutter Web app to revenexx Storefronts","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fflutter","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fflutter\u002Findex",[2109],{"title":2105,"path":2106,"stem":2107},{"title":2111,"path":2112,"stem":2113,"children":2114},"Deploy a Next.js app to revenexx Storefronts","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fnextjs","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fnextjs\u002Findex",[2115],{"title":2111,"path":2112,"stem":2113},{"title":2117,"path":2118,"stem":2119,"children":2120},"Deploy a Nuxt app to revenexx Storefronts","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fnuxt","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fnuxt\u002Findex",[2121],{"title":2117,"path":2118,"stem":2119},{"title":2123,"path":2124,"stem":2125,"children":2126},"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",[2127],{"title":2123,"path":2124,"stem":2125},{"title":2129,"path":2130,"stem":2131,"children":2132},"Deploy a React app to revenexx Storefronts","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Freact","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Freact\u002Findex",[2133],{"title":2129,"path":2130,"stem":2131},{"title":2135,"path":2136,"stem":2137,"children":2138},"Deploy a Remix app to revenexx Storefronts","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fremix","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fremix\u002Findex",[2139],{"title":2135,"path":2136,"stem":2137},{"title":2141,"path":2142,"stem":2143,"children":2144},"Deploy a SvelteKit app to revenexx Storefronts","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fsveltekit","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fsveltekit\u002Findex",[2145],{"title":2141,"path":2142,"stem":2143},{"title":2147,"path":2148,"stem":2149,"children":2150},"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",[2151],{"title":2147,"path":2148,"stem":2149},{"title":2153,"path":2154,"stem":2155,"children":2156},"Deploy a Vanilla JS app to revenexx Storefronts","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fvanilla","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fvanilla\u002Findex",[2157],{"title":2153,"path":2154,"stem":2155},{"title":2159,"path":2160,"stem":2161,"children":2162},"Deploy a Vue.js app to revenexx Storefronts","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fvue","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fvue\u002Findex",[2163],{"title":2159,"path":2160,"stem":2161},{"title":2165,"path":2166,"stem":2167,"children":2168},"Starting points","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fstarting-points","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fstarting-points\u002Findex",[2169],{"title":2165,"path":2166,"stem":2167},{"title":1179,"path":2171,"stem":2172,"children":2173,"icon":2175},"\u002Fdocs\u002Fstudios\u002Fsites\u002Fgetting-started","docs\u002Fstudios\u002Fsites\u002Fgetting-started\u002Findex",[2174],{"title":1179,"path":2171,"stem":2172,"icon":2175},"i-lucide-terminal",{"title":2177,"path":2178,"stem":2179,"children":2180,"icon":691},"Production","\u002Fdocs\u002Fstudios\u002Fsites\u002Fproduction","docs\u002Fstudios\u002Fsites\u002Fproduction\u002Findex",[2181,2182,2188,2194,2200,2206,2212],{"title":2177,"path":2178,"stem":2179,"icon":691},{"title":2183,"path":2184,"stem":2185,"children":2186},"Deployments","\u002Fdocs\u002Fstudios\u002Fsites\u002Fproduction\u002Fdeployments","docs\u002Fstudios\u002Fsites\u002Fproduction\u002Fdeployments\u002Findex",[2187],{"title":2183,"path":2184,"stem":2185},{"title":2189,"path":2190,"stem":2191,"children":2192},"Domains","\u002Fdocs\u002Fstudios\u002Fsites\u002Fproduction\u002Fdomains","docs\u002Fstudios\u002Fsites\u002Fproduction\u002Fdomains\u002Findex",[2193],{"title":2189,"path":2190,"stem":2191},{"title":2195,"path":2196,"stem":2197,"children":2198},"Instant rollbacks","\u002Fdocs\u002Fstudios\u002Fsites\u002Fproduction\u002Finstant-rollbacks","docs\u002Fstudios\u002Fsites\u002Fproduction\u002Finstant-rollbacks\u002Findex",[2199],{"title":2195,"path":2196,"stem":2197},{"title":2201,"path":2202,"stem":2203,"children":2204},"Logs","\u002Fdocs\u002Fstudios\u002Fsites\u002Fproduction\u002Flogs","docs\u002Fstudios\u002Fsites\u002Fproduction\u002Flogs\u002Findex",[2205],{"title":2201,"path":2202,"stem":2203},{"title":2207,"path":2208,"stem":2209,"children":2210},"Previews","\u002Fdocs\u002Fstudios\u002Fsites\u002Fproduction\u002Fpreviews","docs\u002Fstudios\u002Fsites\u002Fproduction\u002Fpreviews\u002Findex",[2211],{"title":2207,"path":2208,"stem":2209},{"title":2213,"path":2214,"stem":2215,"children":2216},"Publishing a theme","\u002Fdocs\u002Fstudios\u002Fsites\u002Fproduction\u002Fpublishing-a-theme","docs\u002Fstudios\u002Fsites\u002Fproduction\u002Fpublishing-a-theme\u002Findex",[2217],{"title":2213,"path":2214,"stem":2215},{"title":2219,"path":2220,"stem":2221,"children":2222,"icon":460},"Build the theme","\u002Fdocs\u002Fstudios\u002Fsites\u002Ftheme","docs\u002Fstudios\u002Fsites\u002Ftheme\u002Findex",[2223,2224,2230,2236,2242,2248,2254,2260,2266,2284],{"title":2219,"path":2220,"stem":2221,"icon":460},{"title":2225,"path":2226,"stem":2227,"children":2228},"Theme anatomy","\u002Fdocs\u002Fstudios\u002Fsites\u002Ftheme\u002Fanatomy","docs\u002Fstudios\u002Fsites\u002Ftheme\u002Fanatomy\u002Findex",[2229],{"title":2225,"path":2226,"stem":2227},{"title":2231,"path":2232,"stem":2233,"children":2234},"Design tokens","\u002Fdocs\u002Fstudios\u002Fsites\u002Ftheme\u002Fdesign-tokens","docs\u002Fstudios\u002Fsites\u002Ftheme\u002Fdesign-tokens\u002Findex",[2235],{"title":2231,"path":2232,"stem":2233},{"title":2237,"path":2238,"stem":2239,"children":2240},"Frameworks","\u002Fdocs\u002Fstudios\u002Fsites\u002Ftheme\u002Fframeworks","docs\u002Fstudios\u002Fsites\u002Ftheme\u002Fframeworks\u002Findex",[2241],{"title":2237,"path":2238,"stem":2239},{"title":2243,"path":2244,"stem":2245,"children":2246},"The layer chain","\u002Fdocs\u002Fstudios\u002Fsites\u002Ftheme\u002Flayer-chain","docs\u002Fstudios\u002Fsites\u002Ftheme\u002Flayer-chain\u002Findex",[2247],{"title":2243,"path":2244,"stem":2245},{"title":2249,"path":2250,"stem":2251,"children":2252},"Local development","\u002Fdocs\u002Fstudios\u002Fsites\u002Ftheme\u002Flocal-development","docs\u002Fstudios\u002Fsites\u002Ftheme\u002Flocal-development\u002Findex",[2253],{"title":2249,"path":2250,"stem":2251},{"title":2255,"path":2256,"stem":2257,"children":2258},"Modules and plugins","\u002Fdocs\u002Fstudios\u002Fsites\u002Ftheme\u002Fmodules-and-plugins","docs\u002Fstudios\u002Fsites\u002Ftheme\u002Fmodules-and-plugins\u002Findex",[2259],{"title":2255,"path":2256,"stem":2257},{"title":2261,"path":2262,"stem":2263,"children":2264},"Overriding","\u002Fdocs\u002Fstudios\u002Fsites\u002Ftheme\u002Foverriding","docs\u002Fstudios\u002Fsites\u002Ftheme\u002Foverriding\u002Findex",[2265],{"title":2261,"path":2262,"stem":2263},{"title":2267,"path":2268,"stem":2269,"children":2270},"Rendering","\u002Fdocs\u002Fstudios\u002Fsites\u002Ftheme\u002Frendering","docs\u002Fstudios\u002Fsites\u002Ftheme\u002Frendering\u002Findex",[2271,2272,2278],{"title":2267,"path":2268,"stem":2269},{"title":2273,"path":2274,"stem":2275,"children":2276},"SSR","\u002Fdocs\u002Fstudios\u002Fsites\u002Ftheme\u002Frendering\u002Fssr","docs\u002Fstudios\u002Fsites\u002Ftheme\u002Frendering\u002Fssr\u002Findex",[2277],{"title":2273,"path":2274,"stem":2275},{"title":2279,"path":2280,"stem":2281,"children":2282},"Static","\u002Fdocs\u002Fstudios\u002Fsites\u002Ftheme\u002Frendering\u002Fstatic","docs\u002Fstudios\u002Fsites\u002Ftheme\u002Frendering\u002Fstatic\u002Findex",[2283],{"title":2279,"path":2280,"stem":2281},{"title":2285,"path":2286,"stem":2287,"children":2288},"Service modes","\u002Fdocs\u002Fstudios\u002Fsites\u002Ftheme\u002Fservice-modes","docs\u002Fstudios\u002Fsites\u002Ftheme\u002Fservice-modes\u002Findex",[2289],{"title":2285,"path":2286,"stem":2287},{"title":2291,"path":2292,"stem":2293,"children":2294},"Tools","\u002Fdocs\u002Ftools","docs\u002Ftools\u002Findex",[2295,2296,2303,2309,3322],{"title":2291,"path":2292,"stem":2293},{"title":2297,"path":2298,"stem":2299,"children":2300,"icon":2302},"AI agents","\u002Fdocs\u002Ftools\u002Fai-agents","docs\u002Ftools\u002Fai-agents\u002Findex",[2301],{"title":2297,"path":2298,"stem":2299,"icon":2302},"i-lucide-shield-alert",{"title":2304,"path":2305,"stem":2306,"children":2307,"icon":527},"Aria API","\u002Fdocs\u002Ftools\u002Faria-api","docs\u002Ftools\u002Faria-api\u002Findex",[2308],{"title":2304,"path":2305,"stem":2306,"icon":527},{"title":2310,"path":2311,"stem":2312,"children":2313},"Command line","\u002Fdocs\u002Ftools\u002Fcommand-line","docs\u002Ftools\u002Fcommand-line\u002Findex",[2314,2315,2321,2326,2332,2338,2344,2350,2356,2362,3280,3286,3292,3298,3304,3310,3316],{"title":2310,"path":2311,"stem":2312},{"title":2316,"path":2317,"stem":2318,"children":2319},"Aliases","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Faliases","docs\u002Ftools\u002Fcommand-line\u002Faliases\u002Findex",[2320],{"title":2316,"path":2317,"stem":2318},{"title":626,"path":2322,"stem":2323,"children":2324},"\u002Fdocs\u002Ftools\u002Fcommand-line\u002Fauthentication","docs\u002Ftools\u002Fcommand-line\u002Fauthentication\u002Findex",[2325],{"title":626,"path":2322,"stem":2323},{"title":2327,"path":2328,"stem":2329,"children":2330},"Commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Fcommands","docs\u002Ftools\u002Fcommand-line\u002Fcommands\u002Findex",[2331],{"title":2327,"path":2328,"stem":2329},{"title":2333,"path":2334,"stem":2335,"children":2336},"Global commands reference","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Fglobal-commands","docs\u002Ftools\u002Fcommand-line\u002Fglobal-commands\u002Findex",[2337],{"title":2333,"path":2334,"stem":2335},{"title":2339,"path":2340,"stem":2341,"children":2342},"Installation","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Finstallation","docs\u002Ftools\u002Fcommand-line\u002Finstallation\u002Findex",[2343],{"title":2339,"path":2340,"stem":2341},{"title":2345,"path":2346,"stem":2347,"children":2348},"Interactive use","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Finteractive","docs\u002Ftools\u002Fcommand-line\u002Finteractive\u002Findex",[2349],{"title":2345,"path":2346,"stem":2347},{"title":2351,"path":2352,"stem":2353,"children":2354},"Non-interactive use","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Fnon-interactive","docs\u002Ftools\u002Fcommand-line\u002Fnon-interactive\u002Findex",[2355],{"title":2351,"path":2352,"stem":2353},{"title":2357,"path":2358,"stem":2359,"children":2360},"Project configuration","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Fproject-configuration","docs\u002Ftools\u002Fcommand-line\u002Fproject-configuration\u002Findex",[2361],{"title":2357,"path":2358,"stem":2359},{"title":2363,"path":2364,"stem":2365,"children":2366},"Command reference","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Findex",[2367,2368,2374,2434,2440,2464,2470,2476,2536,2554,2560,2590,2596,2602,2650,2656,2674,2680,2686,2692,2716,2722,2788,2794,2854,2908,2932,2938,2944,2950,2956,2980,3004,3010,3016,3052,3082,3088,3124,3178,3202,3208,3214,3238,3244,3250,3256],{"title":2363,"path":2364,"stem":2365},{"title":2369,"path":2370,"stem":2371,"children":2372},"About commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fabout","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fabout\u002Findex",[2373],{"title":2369,"path":2370,"stem":2371},{"title":2375,"path":2376,"stem":2377,"children":2378},"Ads commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fads","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fads\u002Findex",[2379,2380,2386,2392,2398,2404,2410,2416,2422,2428],{"title":2375,"path":2376,"stem":2377},{"title":2381,"path":2382,"stem":2383,"children":2384},"Ads: accounts commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fads\u002Faccounts","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fads\u002Faccounts\u002Findex",[2385],{"title":2381,"path":2382,"stem":2383},{"title":2387,"path":2388,"stem":2389,"children":2390},"Ads: conversions commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fads\u002Fconversions","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fads\u002Fconversions\u002Findex",[2391],{"title":2387,"path":2388,"stem":2389},{"title":2393,"path":2394,"stem":2395,"children":2396},"Ads: feeds commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fads\u002Ffeeds","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fads\u002Ffeeds\u002Findex",[2397],{"title":2393,"path":2394,"stem":2395},{"title":2399,"path":2400,"stem":2401,"children":2402},"Ads: jobs commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fads\u002Fjobs","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fads\u002Fjobs\u002Findex",[2403],{"title":2399,"path":2400,"stem":2401},{"title":2405,"path":2406,"stem":2407,"children":2408},"Ads: links commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fads\u002Flinks","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fads\u002Flinks\u002Findex",[2409],{"title":2405,"path":2406,"stem":2407},{"title":2411,"path":2412,"stem":2413,"children":2414},"Ads: rules commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fads\u002Frules","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fads\u002Frules\u002Findex",[2415],{"title":2411,"path":2412,"stem":2413},{"title":2417,"path":2418,"stem":2419,"children":2420},"Ads: spend commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fads\u002Fspend","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fads\u002Fspend\u002Findex",[2421],{"title":2417,"path":2418,"stem":2419},{"title":2423,"path":2424,"stem":2425,"children":2426},"Ads: syncs commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fads\u002Fsyncs","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fads\u002Fsyncs\u002Findex",[2427],{"title":2423,"path":2424,"stem":2425},{"title":2429,"path":2430,"stem":2431,"children":2432},"Ads: vocabularies commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fads\u002Fvocabularies","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fads\u002Fvocabularies\u002Findex",[2433],{"title":2429,"path":2430,"stem":2431},{"title":2435,"path":2436,"stem":2437,"children":2438},"Apps commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fapps","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fapps\u002Findex",[2439],{"title":2435,"path":2436,"stem":2437},{"title":2441,"path":2442,"stem":2443,"children":2444},"Audiences commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Faudiences","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Faudiences\u002Findex",[2445,2446,2452,2458],{"title":2441,"path":2442,"stem":2443},{"title":2447,"path":2448,"stem":2449,"children":2450},"Audiences: audiences commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Faudiences\u002Faudiences","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Faudiences\u002Faudiences\u002Findex",[2451],{"title":2447,"path":2448,"stem":2449},{"title":2453,"path":2454,"stem":2455,"children":2456},"Audiences: members commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Faudiences\u002Fmembers","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Faudiences\u002Fmembers\u002Findex",[2457],{"title":2453,"path":2454,"stem":2455},{"title":2459,"path":2460,"stem":2461,"children":2462},"Audiences: rules commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Faudiences\u002Frules","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Faudiences\u002Frules\u002Findex",[2463],{"title":2459,"path":2460,"stem":2461},{"title":2465,"path":2466,"stem":2467,"children":2468},"Audit commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Faudit","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Faudit\u002Findex",[2469],{"title":2465,"path":2466,"stem":2467},{"title":2471,"path":2472,"stem":2473,"children":2474},"Avatars commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Favatars","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Favatars\u002Findex",[2475],{"title":2471,"path":2472,"stem":2473},{"title":2477,"path":2478,"stem":2479,"children":2480},"Campaigns commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fcampaigns","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fcampaigns\u002Findex",[2481,2482,2488,2494,2500,2506,2512,2518,2524,2530],{"title":2477,"path":2478,"stem":2479},{"title":2483,"path":2484,"stem":2485,"children":2486},"Campaigns: assets commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fcampaigns\u002Fassets","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fcampaigns\u002Fassets\u002Findex",[2487],{"title":2483,"path":2484,"stem":2485},{"title":2489,"path":2490,"stem":2491,"children":2492},"Campaigns: attribution commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fcampaigns\u002Fattribution","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fcampaigns\u002Fattribution\u002Findex",[2493],{"title":2489,"path":2490,"stem":2491},{"title":2495,"path":2496,"stem":2497,"children":2498},"Campaigns: budgets commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fcampaigns\u002Fbudgets","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fcampaigns\u002Fbudgets\u002Findex",[2499],{"title":2495,"path":2496,"stem":2497},{"title":2501,"path":2502,"stem":2503,"children":2504},"Campaigns: calendar commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fcampaigns\u002Fcalendar","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fcampaigns\u002Fcalendar\u002Findex",[2505],{"title":2501,"path":2502,"stem":2503},{"title":2507,"path":2508,"stem":2509,"children":2510},"Campaigns: campaigns commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fcampaigns\u002Fcampaigns","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fcampaigns\u002Fcampaigns\u002Findex",[2511],{"title":2507,"path":2508,"stem":2509},{"title":2513,"path":2514,"stem":2515,"children":2516},"Campaigns: spend commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fcampaigns\u002Fspend","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fcampaigns\u002Fspend\u002Findex",[2517],{"title":2513,"path":2514,"stem":2515},{"title":2519,"path":2520,"stem":2521,"children":2522},"Campaigns: tasks commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fcampaigns\u002Ftasks","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fcampaigns\u002Ftasks\u002Findex",[2523],{"title":2519,"path":2520,"stem":2521},{"title":2525,"path":2526,"stem":2527,"children":2528},"Campaigns: touches commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fcampaigns\u002Ftouches","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fcampaigns\u002Ftouches\u002Findex",[2529],{"title":2525,"path":2526,"stem":2527},{"title":2531,"path":2532,"stem":2533,"children":2534},"Campaigns: vocabularies commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fcampaigns\u002Fvocabularies","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fcampaigns\u002Fvocabularies\u002Findex",[2535],{"title":2531,"path":2532,"stem":2533},{"title":2537,"path":2538,"stem":2539,"children":2540},"Carts commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fcarts","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fcarts\u002Findex",[2541,2542,2548],{"title":2537,"path":2538,"stem":2539},{"title":2543,"path":2544,"stem":2545,"children":2546},"Carts: import and export commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fcarts\u002Fio","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fcarts\u002Fio\u002Findex",[2547],{"title":2543,"path":2544,"stem":2545},{"title":2549,"path":2550,"stem":2551,"children":2552},"Carts: items commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fcarts\u002Fitems","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fcarts\u002Fitems\u002Findex",[2553],{"title":2549,"path":2550,"stem":2551},{"title":2555,"path":2556,"stem":2557,"children":2558},"Channels commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fchannels","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fchannels\u002Findex",[2559],{"title":2555,"path":2556,"stem":2557},{"title":2561,"path":2562,"stem":2563,"children":2564},"Consent manager commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fconsent-manager","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fconsent-manager\u002Findex",[2565,2566,2572,2578,2584],{"title":2561,"path":2562,"stem":2563},{"title":2567,"path":2568,"stem":2569,"children":2570},"Consent manager: delivery commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fconsent-manager\u002Fdelivery","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fconsent-manager\u002Fdelivery\u002Findex",[2571],{"title":2567,"path":2568,"stem":2569},{"title":2573,"path":2574,"stem":2575,"children":2576},"Consent manager: policy commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fconsent-manager\u002Fpolicy","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fconsent-manager\u002Fpolicy\u002Findex",[2577],{"title":2573,"path":2574,"stem":2575},{"title":2579,"path":2580,"stem":2581,"children":2582},"Consent manager: records commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fconsent-manager\u002Frecords","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fconsent-manager\u002Frecords\u002Findex",[2583],{"title":2579,"path":2580,"stem":2581},{"title":2585,"path":2586,"stem":2587,"children":2588},"Consent manager: registry commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fconsent-manager\u002Fregistry","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fconsent-manager\u002Fregistry\u002Findex",[2589],{"title":2585,"path":2586,"stem":2587},{"title":2591,"path":2592,"stem":2593,"children":2594},"Cost centers commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fcost-centers","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fcost-centers\u002Findex",[2595],{"title":2591,"path":2592,"stem":2593},{"title":2597,"path":2598,"stem":2599,"children":2600},"Create commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fcreate","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fcreate\u002Findex",[2601],{"title":2597,"path":2598,"stem":2599},{"title":2603,"path":2604,"stem":2605,"children":2606},"Customers commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fcustomers","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fcustomers\u002Findex",[2607,2608,2614,2620,2626,2632,2638,2644],{"title":2603,"path":2604,"stem":2605},{"title":2609,"path":2610,"stem":2611,"children":2612},"Customers: contacts commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fcustomers\u002Fcontacts","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fcustomers\u002Fcontacts\u002Findex",[2613],{"title":2609,"path":2610,"stem":2611},{"title":2615,"path":2616,"stem":2617,"children":2618},"Customers: follow ups commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fcustomers\u002Ffollow-ups","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fcustomers\u002Ffollow-ups\u002Findex",[2619],{"title":2615,"path":2616,"stem":2617},{"title":2621,"path":2622,"stem":2623,"children":2624},"Customers: leads commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fcustomers\u002Fleads","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fcustomers\u002Fleads\u002Findex",[2625],{"title":2621,"path":2622,"stem":2623},{"title":2627,"path":2628,"stem":2629,"children":2630},"Customers: organizations commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fcustomers\u002Forganizations","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fcustomers\u002Forganizations\u002Findex",[2631],{"title":2627,"path":2628,"stem":2629},{"title":2633,"path":2634,"stem":2635,"children":2636},"Customers: roles commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fcustomers\u002Froles","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fcustomers\u002Froles\u002Findex",[2637],{"title":2633,"path":2634,"stem":2635},{"title":2639,"path":2640,"stem":2641,"children":2642},"Customers: segments commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fcustomers\u002Fsegments","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fcustomers\u002Fsegments\u002Findex",[2643],{"title":2639,"path":2640,"stem":2641},{"title":2645,"path":2646,"stem":2647,"children":2648},"Customers: value lists commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fcustomers\u002Fvalue-lists","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fcustomers\u002Fvalue-lists\u002Findex",[2649],{"title":2645,"path":2646,"stem":2647},{"title":2651,"path":2652,"stem":2653,"children":2654},"Deploy commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fdeploy","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fdeploy\u002Findex",[2655],{"title":2651,"path":2652,"stem":2653},{"title":2657,"path":2658,"stem":2659,"children":2660},"Documents commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fdocuments","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fdocuments\u002Findex",[2661,2662,2668],{"title":2657,"path":2658,"stem":2659},{"title":2663,"path":2664,"stem":2665,"children":2666},"Documents: kinds commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fdocuments\u002Fkinds","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fdocuments\u002Fkinds\u002Findex",[2667],{"title":2663,"path":2664,"stem":2665},{"title":2669,"path":2670,"stem":2671,"children":2672},"Documents: register commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fdocuments\u002Fregister","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fdocuments\u002Fregister\u002Findex",[2673],{"title":2669,"path":2670,"stem":2671},{"title":2675,"path":2676,"stem":2677,"children":2678},"Events commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fevents","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fevents\u002Findex",[2679],{"title":2675,"path":2676,"stem":2677},{"title":2681,"path":2682,"stem":2683,"children":2684},"Forms commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fforms","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fforms\u002Findex",[2685],{"title":2681,"path":2682,"stem":2683},{"title":2687,"path":2688,"stem":2689,"children":2690},"Health commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fhealth","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fhealth\u002Findex",[2691],{"title":2687,"path":2688,"stem":2689},{"title":2693,"path":2694,"stem":2695,"children":2696},"Inventories commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Finventories","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Finventories\u002Findex",[2697,2698,2704,2710],{"title":2693,"path":2694,"stem":2695},{"title":2699,"path":2700,"stem":2701,"children":2702},"Inventories: locations commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Finventories\u002Flocations","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Finventories\u002Flocations\u002Findex",[2703],{"title":2699,"path":2700,"stem":2701},{"title":2705,"path":2706,"stem":2707,"children":2708},"Inventories: reservations commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Finventories\u002Freservations","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Finventories\u002Freservations\u002Findex",[2709],{"title":2705,"path":2706,"stem":2707},{"title":2711,"path":2712,"stem":2713,"children":2714},"Inventories: stock commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Finventories\u002Fstock","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Finventories\u002Fstock\u002Findex",[2715],{"title":2711,"path":2712,"stem":2713},{"title":2717,"path":2718,"stem":2719,"children":2720},"Import and export commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fio","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fio\u002Findex",[2721],{"title":2717,"path":2718,"stem":2719},{"title":2723,"path":2724,"stem":2725,"children":2726},"Journeys commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fjourneys","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fjourneys\u002Findex",[2727,2728,2734,2740,2746,2752,2758,2764,2770,2776,2782],{"title":2723,"path":2724,"stem":2725},{"title":2729,"path":2730,"stem":2731,"children":2732},"Journeys: enrollments commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fjourneys\u002Fenrollments","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fjourneys\u002Fenrollments\u002Findex",[2733],{"title":2729,"path":2730,"stem":2731},{"title":2735,"path":2736,"stem":2737,"children":2738},"Journeys: jobs commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fjourneys\u002Fjobs","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fjourneys\u002Fjobs\u002Findex",[2739],{"title":2735,"path":2736,"stem":2737},{"title":2741,"path":2742,"stem":2743,"children":2744},"Journeys: journeys commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fjourneys\u002Fjourneys","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fjourneys\u002Fjourneys\u002Findex",[2745],{"title":2741,"path":2742,"stem":2743},{"title":2747,"path":2748,"stem":2749,"children":2750},"Journeys: stats commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fjourneys\u002Fstats","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fjourneys\u002Fstats\u002Findex",[2751],{"title":2747,"path":2748,"stem":2749},{"title":2753,"path":2754,"stem":2755,"children":2756},"Journeys: steps commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fjourneys\u002Fsteps","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fjourneys\u002Fsteps\u002Findex",[2757],{"title":2753,"path":2754,"stem":2755},{"title":2759,"path":2760,"stem":2761,"children":2762},"Journeys: templates commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fjourneys\u002Ftemplates","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fjourneys\u002Ftemplates\u002Findex",[2763],{"title":2759,"path":2760,"stem":2761},{"title":2765,"path":2766,"stem":2767,"children":2768},"Journeys: timeline commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fjourneys\u002Ftimeline","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fjourneys\u002Ftimeline\u002Findex",[2769],{"title":2765,"path":2766,"stem":2767},{"title":2771,"path":2772,"stem":2773,"children":2774},"Journeys: versions commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fjourneys\u002Fversions","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fjourneys\u002Fversions\u002Findex",[2775],{"title":2771,"path":2772,"stem":2773},{"title":2777,"path":2778,"stem":2779,"children":2780},"Journeys: vocabularies commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fjourneys\u002Fvocabularies","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fjourneys\u002Fvocabularies\u002Findex",[2781],{"title":2777,"path":2778,"stem":2779},{"title":2783,"path":2784,"stem":2785,"children":2786},"Journeys: watches commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fjourneys\u002Fwatches","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fjourneys\u002Fwatches\u002Findex",[2787],{"title":2783,"path":2784,"stem":2785},{"title":2789,"path":2790,"stem":2791,"children":2792},"Locale commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Flocale","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Flocale\u002Findex",[2793],{"title":2789,"path":2790,"stem":2791},{"title":2795,"path":2796,"stem":2797,"children":2798},"Loyalty commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Floyalty","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Floyalty\u002Findex",[2799,2800,2806,2812,2818,2824,2830,2836,2842,2848],{"title":2795,"path":2796,"stem":2797},{"title":2801,"path":2802,"stem":2803,"children":2804},"Loyalty: bonus commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Floyalty\u002Fbonus","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Floyalty\u002Fbonus\u002Findex",[2805],{"title":2801,"path":2802,"stem":2803},{"title":2807,"path":2808,"stem":2809,"children":2810},"Loyalty: jobs commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Floyalty\u002Fjobs","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Floyalty\u002Fjobs\u002Findex",[2811],{"title":2807,"path":2808,"stem":2809},{"title":2813,"path":2814,"stem":2815,"children":2816},"Loyalty: memberships commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Floyalty\u002Fmemberships","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Floyalty\u002Fmemberships\u002Findex",[2817],{"title":2813,"path":2814,"stem":2815},{"title":2819,"path":2820,"stem":2821,"children":2822},"Loyalty: points commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Floyalty\u002Fpoints","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Floyalty\u002Fpoints\u002Findex",[2823],{"title":2819,"path":2820,"stem":2821},{"title":2825,"path":2826,"stem":2827,"children":2828},"Loyalty: programs commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Floyalty\u002Fprograms","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Floyalty\u002Fprograms\u002Findex",[2829],{"title":2825,"path":2826,"stem":2827},{"title":2831,"path":2832,"stem":2833,"children":2834},"Loyalty: referrals commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Floyalty\u002Freferrals","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Floyalty\u002Freferrals\u002Findex",[2835],{"title":2831,"path":2832,"stem":2833},{"title":2837,"path":2838,"stem":2839,"children":2840},"Loyalty: rewards commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Floyalty\u002Frewards","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Floyalty\u002Frewards\u002Findex",[2841],{"title":2837,"path":2838,"stem":2839},{"title":2843,"path":2844,"stem":2845,"children":2846},"Loyalty: tiers commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Floyalty\u002Ftiers","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Floyalty\u002Ftiers\u002Findex",[2847],{"title":2843,"path":2844,"stem":2845},{"title":2849,"path":2850,"stem":2851,"children":2852},"Loyalty: vocabularies commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Floyalty\u002Fvocabularies","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Floyalty\u002Fvocabularies\u002Findex",[2853],{"title":2849,"path":2850,"stem":2851},{"title":2855,"path":2856,"stem":2857,"children":2858},"Mailings commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fmailings","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fmailings\u002Findex",[2859,2860,2866,2872,2878,2884,2890,2896,2902],{"title":2855,"path":2856,"stem":2857},{"title":2861,"path":2862,"stem":2863,"children":2864},"Mailings: analysis commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fmailings\u002Fanalysis","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fmailings\u002Fanalysis\u002Findex",[2865],{"title":2861,"path":2862,"stem":2863},{"title":2867,"path":2868,"stem":2869,"children":2870},"Mailings: blocks commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fmailings\u002Fblocks","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fmailings\u002Fblocks\u002Findex",[2871],{"title":2867,"path":2868,"stem":2869},{"title":2873,"path":2874,"stem":2875,"children":2876},"Mailings: health commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fmailings\u002Fhealth","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fmailings\u002Fhealth\u002Findex",[2877],{"title":2873,"path":2874,"stem":2875},{"title":2879,"path":2880,"stem":2881,"children":2882},"Mailings: mailings commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fmailings\u002Fmailings","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fmailings\u002Fmailings\u002Findex",[2883],{"title":2879,"path":2880,"stem":2881},{"title":2885,"path":2886,"stem":2887,"children":2888},"Mailings: recipients commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fmailings\u002Frecipients","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fmailings\u002Frecipients\u002Findex",[2889],{"title":2885,"path":2886,"stem":2887},{"title":2891,"path":2892,"stem":2893,"children":2894},"Mailings: send commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fmailings\u002Fsend","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fmailings\u002Fsend\u002Findex",[2895],{"title":2891,"path":2892,"stem":2893},{"title":2897,"path":2898,"stem":2899,"children":2900},"Mailings: variants commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fmailings\u002Fvariants","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fmailings\u002Fvariants\u002Findex",[2901],{"title":2897,"path":2898,"stem":2899},{"title":2903,"path":2904,"stem":2905,"children":2906},"Mailings: vocabularies commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fmailings\u002Fvocabularies","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fmailings\u002Fvocabularies\u002Findex",[2907],{"title":2903,"path":2904,"stem":2905},{"title":2909,"path":2910,"stem":2911,"children":2912},"Marketing consents commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fmarketing-consents","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fmarketing-consents\u002Findex",[2913,2914,2920,2926],{"title":2909,"path":2910,"stem":2911},{"title":2915,"path":2916,"stem":2917,"children":2918},"Marketing consents: evidence commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fmarketing-consents\u002Fevidence","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fmarketing-consents\u002Fevidence\u002Findex",[2919],{"title":2915,"path":2916,"stem":2917},{"title":2921,"path":2922,"stem":2923,"children":2924},"Marketing consents: subscriptions commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fmarketing-consents\u002Fsubscriptions","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fmarketing-consents\u002Fsubscriptions\u002Findex",[2925],{"title":2921,"path":2922,"stem":2923},{"title":2927,"path":2928,"stem":2929,"children":2930},"Marketing consents: types commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fmarketing-consents\u002Ftypes","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fmarketing-consents\u002Ftypes\u002Findex",[2931],{"title":2927,"path":2928,"stem":2929},{"title":2933,"path":2934,"stem":2935,"children":2936},"Markets commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fmarkets","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fmarkets\u002Findex",[2937],{"title":2933,"path":2934,"stem":2935},{"title":2939,"path":2940,"stem":2941,"children":2942},"Messaging commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fmessaging","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fmessaging\u002Findex",[2943],{"title":2939,"path":2940,"stem":2941},{"title":2945,"path":2946,"stem":2947,"children":2948},"Order lists commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Forderlists","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Forderlists\u002Findex",[2949],{"title":2945,"path":2946,"stem":2947},{"title":2951,"path":2952,"stem":2953,"children":2954},"Orders commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Forders","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Forders\u002Findex",[2955],{"title":2951,"path":2952,"stem":2953},{"title":2957,"path":2958,"stem":2959,"children":2960},"Pages commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fpages","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fpages\u002Findex",[2961,2962,2968,2974],{"title":2957,"path":2958,"stem":2959},{"title":2963,"path":2964,"stem":2965,"children":2966},"Pages: collaboration commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fpages\u002Fcollaboration","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fpages\u002Fcollaboration\u002Findex",[2967],{"title":2963,"path":2964,"stem":2965},{"title":2969,"path":2970,"stem":2971,"children":2972},"Pages: delivery commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fpages\u002Fdelivery","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fpages\u002Fdelivery\u002Findex",[2973],{"title":2969,"path":2970,"stem":2971},{"title":2975,"path":2976,"stem":2977,"children":2978},"Pages: editor commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fpages\u002Feditor","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fpages\u002Feditor\u002Findex",[2979],{"title":2975,"path":2976,"stem":2977},{"title":2981,"path":2982,"stem":2983,"children":2984},"Payments commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fpayments","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fpayments\u002Findex",[2985,2986,2992,2998],{"title":2981,"path":2982,"stem":2983},{"title":2987,"path":2988,"stem":2989,"children":2990},"Payments: ledger commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fpayments\u002Fledger","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fpayments\u002Fledger\u002Findex",[2991],{"title":2987,"path":2988,"stem":2989},{"title":2993,"path":2994,"stem":2995,"children":2996},"Payments: methods commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fpayments\u002Fmethods","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fpayments\u002Fmethods\u002Findex",[2997],{"title":2993,"path":2994,"stem":2995},{"title":2999,"path":3000,"stem":3001,"children":3002},"Payments: providers commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fpayments\u002Fproviders","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fpayments\u002Fproviders\u002Findex",[3003],{"title":2999,"path":3000,"stem":3001},{"title":3005,"path":3006,"stem":3007,"children":3008},"Prices commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fprices","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fprices\u002Findex",[3009],{"title":3005,"path":3006,"stem":3007},{"title":3011,"path":3012,"stem":3013,"children":3014},"Procurement commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fprocurement","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fprocurement\u002Findex",[3015],{"title":3011,"path":3012,"stem":3013},{"title":3017,"path":3018,"stem":3019,"children":3020},"Products commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fproducts","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fproducts\u002Findex",[3021,3022,3028,3034,3040,3046],{"title":3017,"path":3018,"stem":3019},{"title":3023,"path":3024,"stem":3025,"children":3026},"Products: assets commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fproducts\u002Fassets","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fproducts\u002Fassets\u002Findex",[3027],{"title":3023,"path":3024,"stem":3025},{"title":3029,"path":3030,"stem":3031,"children":3032},"Products: categories commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fproducts\u002Fcategories","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fproducts\u002Fcategories\u002Findex",[3033],{"title":3029,"path":3030,"stem":3031},{"title":3035,"path":3036,"stem":3037,"children":3038},"Products: data model commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fproducts\u002Fdata-model","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fproducts\u002Fdata-model\u002Findex",[3039],{"title":3035,"path":3036,"stem":3037},{"title":3041,"path":3042,"stem":3043,"children":3044},"Products: manufacturers commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fproducts\u002Fmanufacturers","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fproducts\u002Fmanufacturers\u002Findex",[3045],{"title":3041,"path":3042,"stem":3043},{"title":3047,"path":3048,"stem":3049,"children":3050},"Products: references commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fproducts\u002Freferences","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fproducts\u002Freferences\u002Findex",[3051],{"title":3047,"path":3048,"stem":3049},{"title":3053,"path":3054,"stem":3055,"children":3056},"Promotions commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fpromotions","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fpromotions\u002Findex",[3057,3058,3064,3070,3076],{"title":3053,"path":3054,"stem":3055},{"title":3059,"path":3060,"stem":3061,"children":3062},"Promotions: evaluation commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fpromotions\u002Fevaluation","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fpromotions\u002Fevaluation\u002Findex",[3063],{"title":3059,"path":3060,"stem":3061},{"title":3065,"path":3066,"stem":3067,"children":3068},"Promotions: promotions commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fpromotions\u002Fpromotions","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fpromotions\u002Fpromotions\u002Findex",[3069],{"title":3065,"path":3066,"stem":3067},{"title":3071,"path":3072,"stem":3073,"children":3074},"Promotions: redemptions commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fpromotions\u002Fredemptions","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fpromotions\u002Fredemptions\u002Findex",[3075],{"title":3071,"path":3072,"stem":3073},{"title":3077,"path":3078,"stem":3079,"children":3080},"Promotions: vouchers commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fpromotions\u002Fvouchers","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fpromotions\u002Fvouchers\u002Findex",[3081],{"title":3077,"path":3078,"stem":3079},{"title":3083,"path":3084,"stem":3085,"children":3086},"Punchout commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fpunchout","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fpunchout\u002Findex",[3087],{"title":3083,"path":3084,"stem":3085},{"title":3089,"path":3090,"stem":3091,"children":3092},"Quotes commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fquotes","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fquotes\u002Findex",[3093,3094,3100,3106,3112,3118],{"title":3089,"path":3090,"stem":3091},{"title":3095,"path":3096,"stem":3097,"children":3098},"Quotes: acceptance commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fquotes\u002Facceptance","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fquotes\u002Facceptance\u002Findex",[3099],{"title":3095,"path":3096,"stem":3097},{"title":3101,"path":3102,"stem":3103,"children":3104},"Quotes: pricing commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fquotes\u002Fpricing","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fquotes\u002Fpricing\u002Findex",[3105],{"title":3101,"path":3102,"stem":3103},{"title":3107,"path":3108,"stem":3109,"children":3110},"Quotes: quotes commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fquotes\u002Fquotes","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fquotes\u002Fquotes\u002Findex",[3111],{"title":3107,"path":3108,"stem":3109},{"title":3113,"path":3114,"stem":3115,"children":3116},"Quotes: ranges commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fquotes\u002Franges","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fquotes\u002Franges\u002Findex",[3117],{"title":3113,"path":3114,"stem":3115},{"title":3119,"path":3120,"stem":3121,"children":3122},"Quotes: trail commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fquotes\u002Ftrail","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fquotes\u002Ftrail\u002Findex",[3123],{"title":3119,"path":3120,"stem":3121},{"title":3125,"path":3126,"stem":3127,"children":3128},"Reviews commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Freviews","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Freviews\u002Findex",[3129,3130,3136,3142,3148,3154,3160,3166,3172],{"title":3125,"path":3126,"stem":3127},{"title":3131,"path":3132,"stem":3133,"children":3134},"Reviews: aggregates commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Freviews\u002Faggregates","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Freviews\u002Faggregates\u002Findex",[3135],{"title":3131,"path":3132,"stem":3133},{"title":3137,"path":3138,"stem":3139,"children":3140},"Reviews: jobs commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Freviews\u002Fjobs","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Freviews\u002Fjobs\u002Findex",[3141],{"title":3137,"path":3138,"stem":3139},{"title":3143,"path":3144,"stem":3145,"children":3146},"Reviews: moderation commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Freviews\u002Fmoderation","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Freviews\u002Fmoderation\u002Findex",[3147],{"title":3143,"path":3144,"stem":3145},{"title":3149,"path":3150,"stem":3151,"children":3152},"Reviews: privacy commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Freviews\u002Fprivacy","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Freviews\u002Fprivacy\u002Findex",[3153],{"title":3149,"path":3150,"stem":3151},{"title":3155,"path":3156,"stem":3157,"children":3158},"Reviews: products commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Freviews\u002Fproducts","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Freviews\u002Fproducts\u002Findex",[3159],{"title":3155,"path":3156,"stem":3157},{"title":3161,"path":3162,"stem":3163,"children":3164},"Reviews: requests commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Freviews\u002Frequests","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Freviews\u002Frequests\u002Findex",[3165],{"title":3161,"path":3162,"stem":3163},{"title":3167,"path":3168,"stem":3169,"children":3170},"Reviews: reviews commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Freviews\u002Freviews","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Freviews\u002Freviews\u002Findex",[3171],{"title":3167,"path":3168,"stem":3169},{"title":3173,"path":3174,"stem":3175,"children":3176},"Reviews: vocabularies commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Freviews\u002Fvocabularies","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Freviews\u002Fvocabularies\u002Findex",[3177],{"title":3173,"path":3174,"stem":3175},{"title":3179,"path":3180,"stem":3181,"children":3182},"Sales reps commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fsales-reps","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fsales-reps\u002Findex",[3183,3184,3190,3196],{"title":3179,"path":3180,"stem":3181},{"title":3185,"path":3186,"stem":3187,"children":3188},"Sales reps: acting for commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fsales-reps\u002Facting-for","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fsales-reps\u002Facting-for\u002Findex",[3189],{"title":3185,"path":3186,"stem":3187},{"title":3191,"path":3192,"stem":3193,"children":3194},"Sales reps: coverage commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fsales-reps\u002Fcoverage","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fsales-reps\u002Fcoverage\u002Findex",[3195],{"title":3191,"path":3192,"stem":3193},{"title":3197,"path":3198,"stem":3199,"children":3200},"Sales reps: roster commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fsales-reps\u002Froster","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fsales-reps\u002Froster\u002Findex",[3201],{"title":3197,"path":3198,"stem":3199},{"title":3203,"path":3204,"stem":3205,"children":3206},"Search commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fsearch","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fsearch\u002Findex",[3207],{"title":3203,"path":3204,"stem":3205},{"title":3209,"path":3210,"stem":3211,"children":3212},"Settings commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fsettings","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fsettings\u002Findex",[3213],{"title":3209,"path":3210,"stem":3211},{"title":3215,"path":3216,"stem":3217,"children":3218},"Shipping commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fshipping","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fshipping\u002Findex",[3219,3220,3226,3232],{"title":3215,"path":3216,"stem":3217},{"title":3221,"path":3222,"stem":3223,"children":3224},"Shipping: carriers commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fshipping\u002Fcarriers","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fshipping\u002Fcarriers\u002Findex",[3225],{"title":3221,"path":3222,"stem":3223},{"title":3227,"path":3228,"stem":3229,"children":3230},"Shipping: methods commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fshipping\u002Fmethods","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fshipping\u002Fmethods\u002Findex",[3231],{"title":3227,"path":3228,"stem":3229},{"title":3233,"path":3234,"stem":3235,"children":3236},"Shipping: value lists commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fshipping\u002Fvalue-lists","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fshipping\u002Fvalue-lists\u002Findex",[3237],{"title":3233,"path":3234,"stem":3235},{"title":3239,"path":3240,"stem":3241,"children":3242},"Sites commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fsites","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fsites\u002Findex",[3243],{"title":3239,"path":3240,"stem":3241},{"title":3245,"path":3246,"stem":3247,"children":3248},"Skills commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fskills","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fskills\u002Findex",[3249],{"title":3245,"path":3246,"stem":3247},{"title":3251,"path":3252,"stem":3253,"children":3254},"Storage commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fstorage","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fstorage\u002Findex",[3255],{"title":3251,"path":3252,"stem":3253},{"title":3257,"path":3258,"stem":3259,"children":3260},"Tag manager commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Ftag-manager","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Ftag-manager\u002Findex",[3261,3262,3268,3274],{"title":3257,"path":3258,"stem":3259},{"title":3263,"path":3264,"stem":3265,"children":3266},"Tag manager: container commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Ftag-manager\u002Fcontainer","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Ftag-manager\u002Fcontainer\u002Findex",[3267],{"title":3263,"path":3264,"stem":3265},{"title":3269,"path":3270,"stem":3271,"children":3272},"Tag manager: delivery commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Ftag-manager\u002Fdelivery","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Ftag-manager\u002Fdelivery\u002Findex",[3273],{"title":3269,"path":3270,"stem":3271},{"title":3275,"path":3276,"stem":3277,"children":3278},"Tag manager: tags commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Ftag-manager\u002Ftags","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Ftag-manager\u002Ftags\u002Findex",[3279],{"title":3275,"path":3276,"stem":3277},{"title":3281,"path":3282,"stem":3283,"children":3284},"Interactive shell (REPL)","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Frepl","docs\u002Ftools\u002Fcommand-line\u002Frepl\u002Findex",[3285],{"title":3281,"path":3282,"stem":3283},{"title":3287,"path":3288,"stem":3289,"children":3290},"Scaffolding","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Fscaffolding","docs\u002Ftools\u002Fcommand-line\u002Fscaffolding\u002Findex",[3291],{"title":3287,"path":3288,"stem":3289},{"title":3293,"path":3294,"stem":3295,"children":3296},"Scripting & output","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Fscripting","docs\u002Ftools\u002Fcommand-line\u002Fscripting\u002Findex",[3297],{"title":3293,"path":3294,"stem":3295},{"title":3299,"path":3300,"stem":3301,"children":3302},"Skills","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Fskills","docs\u002Ftools\u002Fcommand-line\u002Fskills\u002Findex",[3303],{"title":3299,"path":3300,"stem":3301},{"title":3305,"path":3306,"stem":3307,"children":3308},"Full-screen app (TUI)","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Ftui","docs\u002Ftools\u002Fcommand-line\u002Ftui\u002Findex",[3309],{"title":3305,"path":3306,"stem":3307},{"title":3311,"path":3312,"stem":3313,"children":3314},"Type generation","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Ftype-generation","docs\u002Ftools\u002Fcommand-line\u002Ftype-generation\u002Findex",[3315],{"title":3311,"path":3312,"stem":3313},{"title":3317,"path":3318,"stem":3319,"children":3320},"Background watchers","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Fwatch","docs\u002Ftools\u002Fcommand-line\u002Fwatch\u002Findex",[3321],{"title":3317,"path":3318,"stem":3319},{"title":3323,"path":3324,"stem":3325,"children":3326},"Model Context Protocol","\u002Fdocs\u002Ftools\u002Fmcp","docs\u002Ftools\u002Fmcp\u002Findex",[3327,3328,3334,3340,3346,3352,3358,3364,3370],{"title":3323,"path":3324,"stem":3325},{"title":3329,"path":3330,"stem":3331,"children":3332},"revenexx docs MCP in Google Antigravity","\u002Fdocs\u002Ftools\u002Fmcp\u002Fantigravity","docs\u002Ftools\u002Fmcp\u002Fantigravity\u002Findex",[3333],{"title":3329,"path":3330,"stem":3331},{"title":3335,"path":3336,"stem":3337,"children":3338},"revenexx docs MCP in Claude Code","\u002Fdocs\u002Ftools\u002Fmcp\u002Fclaude-code","docs\u002Ftools\u002Fmcp\u002Fclaude-code\u002Findex",[3339],{"title":3335,"path":3336,"stem":3337},{"title":3341,"path":3342,"stem":3343,"children":3344},"revenexx docs MCP in Claude Desktop","\u002Fdocs\u002Ftools\u002Fmcp\u002Fclaude-desktop","docs\u002Ftools\u002Fmcp\u002Fclaude-desktop\u002Findex",[3345],{"title":3341,"path":3342,"stem":3343},{"title":3347,"path":3348,"stem":3349,"children":3350},"revenexx docs MCP in Cursor","\u002Fdocs\u002Ftools\u002Fmcp\u002Fcursor","docs\u002Ftools\u002Fmcp\u002Fcursor\u002Findex",[3351],{"title":3347,"path":3348,"stem":3349},{"title":3353,"path":3354,"stem":3355,"children":3356},"revenexx docs MCP in OpenCode","\u002Fdocs\u002Ftools\u002Fmcp\u002Fopencode","docs\u002Ftools\u002Fmcp\u002Fopencode\u002Findex",[3357],{"title":3353,"path":3354,"stem":3355},{"title":3359,"path":3360,"stem":3361,"children":3362},"revenexx docs MCP in VS Code","\u002Fdocs\u002Ftools\u002Fmcp\u002Fvscode","docs\u002Ftools\u002Fmcp\u002Fvscode\u002Findex",[3363],{"title":3359,"path":3360,"stem":3361},{"title":3365,"path":3366,"stem":3367,"children":3368},"revenexx docs MCP in Windsurf","\u002Fdocs\u002Ftools\u002Fmcp\u002Fwindsurf","docs\u002Ftools\u002Fmcp\u002Fwindsurf\u002Findex",[3369],{"title":3365,"path":3366,"stem":3367},{"title":3371,"path":3372,"stem":3373,"children":3374},"revenexx docs MCP in Zenflow","\u002Fdocs\u002Ftools\u002Fmcp\u002Fzenflow","docs\u002Ftools\u002Fmcp\u002Fzenflow\u002Findex",[3375],{"title":3371,"path":3372,"stem":3373},{"id":3377,"title":117,"body":3378,"description":8794,"extension":8795,"landing":8796,"links":8796,"meta":8797,"navigation":8798,"path":118,"seo":8799,"sitemap":8800,"stem":119,"__hash__":8801},"docs\u002Fdocs\u002Fguides\u002Fapps\u002Fadd-a-data-model\u002Findex.md",{"type":3379,"value":3380,"toc":8785},"minimark",[3381,3403,3421,3426,3432,3451,3481,4938,4945,5273,5276,5313,5317,5323,5522,5525,5599,5603,5612,5636,5650,6830,6846,6849,6874,6914,6918,6924,7631,7648,8027,8040,8054,8064,8068,8075,8679,8693,8697,8754,8758,8781],[3382,3383,3384,3385,3389,3390,3394,3395,3398,3399,3402],"p",{},"The ",[3386,3387,3388],"a",{"href":125},"first tutorial"," built a Locations app with one entity and plain CRUD. Real apps have more than one table, relationships between them, and custom endpoints that do something CRUD can't. This tutorial grows the Locations app into a small inventory: it adds a ",[3391,3392,3393],"code",{},"stock_levels"," entity related to ",[3391,3396,3397],{},"locations",", a custom batch ",[3391,3400,3401],{},"availability"," endpoint with input guards, and shows the typed data client in full.",[3382,3404,3405,3406,3409,3410,3409,3413,3416,3417,3420],{},"This is for backend developers continuing from the first tutorial. You'll edit ",[3391,3407,3408],{},"schema.json",", ",[3391,3411,3412],{},"manifest.json",[3391,3414,3415],{},"src\u002Fmain.js",", and ",[3391,3418,3419],{},"scripts\u002Fcapabilities.js",", then regenerate and test.",[3422,3423,3425],"h2",{"id":3424},"_1-add-a-second-entity-with-a-relationship","1. Add a second entity with a relationship",[3382,3427,3428,3429,3431],{},"A relationship is a column that references another entity. Add a ",[3391,3430,3393],{}," entity: each row belongs to one location and tracks the on-hand and reserved quantity for a product or SKU.",[3382,3433,3384,3434,3436,3437,3409,3440,3443,3444,3447,3448,3450],{},[3391,3435,3397],{}," entity below is the one from the first tutorial, unchanged: it keeps ",[3391,3438,3439],{},"labels",[3391,3441,3442],{},"address"," and ",[3391,3445,3446],{},"metadata",", and the later guides rely on them. Only ",[3391,3449,3393],{}," is new.",[3382,3452,3384,3453,3456,3457,3460,3461,3464,3465,3468,3469,3472,3473,3476,3477,3480],{},[3391,3454,3455],{},"references"," block makes ",[3391,3458,3459],{},"location_id"," a foreign key onto ",[3391,3462,3463],{},"locations.id",". ",[3391,3466,3467],{},"onDelete: \"cascade\""," means deleting a location removes its stock rows. A row tracks an item by ",[3391,3470,3471],{},"product_id"," or ",[3391,3474,3475],{},"sku"," — the ",[3391,3478,3479],{},"checks"," block enforces that at least one is present.",[3482,3483,3488],"pre",{"className":3484,"code":3485,"filename":3408,"language":3486,"meta":3487,"style":3487},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"$schema\": \"https:\u002F\u002Fschemas.revenexx.com\u002Fschema.schema.json\",\n  \"entities\": {\n    \"locations\": {\n      \"columns\": {\n        \"id\":        { \"type\": \"uuid\", \"pk\": true, \"default\": \"gen_random_uuid()\" },\n        \"code\":      { \"type\": \"text\", \"notNull\": true, \"check\": \"length(code) > 0\" },\n        \"name\":      { \"type\": \"text\", \"notNull\": true, \"check\": \"length(name) > 0\" },\n        \"labels\":    { \"type\": \"jsonb\" },\n        \"type\":      { \"type\": \"text\", \"notNull\": true, \"default\": \"'warehouse'\", \"check\": \"type in ('warehouse', 'store', 'dropship', 'virtual')\" },\n        \"priority\":  { \"type\": \"integer\", \"notNull\": true, \"default\": \"0\" },\n        \"enabled\":   { \"type\": \"boolean\", \"notNull\": true, \"default\": \"true\" },\n        \"address\":   { \"type\": \"jsonb\" },\n        \"metadata\":  { \"type\": \"jsonb\" },\n        \"created_at\": { \"type\": \"timestamptz\", \"notNull\": true, \"default\": \"now()\" },\n        \"updated_at\": { \"type\": \"timestamptz\", \"notNull\": true, \"default\": \"now()\" }\n      },\n      \"indexes\": [\n        { \"columns\": [\"tenant_id\", \"code\"], \"unique\": true },\n        { \"columns\": [\"enabled\"] }\n      ]\n    },\n    \"stock_levels\": {\n      \"columns\": {\n        \"id\": { \"type\": \"uuid\", \"pk\": true, \"default\": \"gen_random_uuid()\" },\n        \"location_id\": {\n          \"type\": \"uuid\",\n          \"notNull\": true,\n          \"references\": { \"entity\": \"locations\", \"column\": \"id\", \"onDelete\": \"cascade\" }\n        },\n        \"product_id\": { \"type\": \"uuid\" },\n        \"sku\":        { \"type\": \"text\" },\n        \"on_hand\":    { \"type\": \"numeric(14,3)\", \"notNull\": true, \"default\": \"0\", \"check\": \"on_hand >= 0\" },\n        \"reserved\":   { \"type\": \"numeric(14,3)\", \"notNull\": true, \"default\": \"0\", \"check\": \"reserved >= 0\" },\n        \"created_at\": { \"type\": \"timestamptz\", \"notNull\": true, \"default\": \"now()\" },\n        \"updated_at\": { \"type\": \"timestamptz\", \"notNull\": true, \"default\": \"now()\" }\n      },\n      \"checks\": [\n        \"product_id is not null or sku is not null\"\n      ],\n      \"indexes\": [\n        { \"columns\": [\"location_id\"] },\n        { \"columns\": [\"tenant_id\", \"product_id\"] },\n        { \"columns\": [\"tenant_id\", \"sku\"] }\n      ]\n    }\n  }\n}\n","json","",[3391,3489,3490,3499,3527,3542,3557,3573,3641,3701,3758,3789,3862,3921,3980,4009,4038,4097,4154,4160,4175,4223,4249,4255,4261,4274,4287,4342,4355,4375,4389,4455,4461,4490,4519,4593,4666,4721,4776,4781,4794,4805,4811,4824,4849,4882,4915,4920,4926,4932],{"__ignoreMap":3487},[3491,3492,3495],"span",{"class":3493,"line":3494},"line",1,[3491,3496,3498],{"class":3497},"sMK4o","{\n",[3491,3500,3502,3505,3509,3512,3515,3518,3522,3524],{"class":3493,"line":3501},2,[3491,3503,3504],{"class":3497},"  \"",[3491,3506,3508],{"class":3507},"spNyl","$schema",[3491,3510,3511],{"class":3497},"\"",[3491,3513,3514],{"class":3497},":",[3491,3516,3517],{"class":3497}," \"",[3491,3519,3521],{"class":3520},"sfazB","https:\u002F\u002Fschemas.revenexx.com\u002Fschema.schema.json",[3491,3523,3511],{"class":3497},[3491,3525,3526],{"class":3497},",\n",[3491,3528,3530,3532,3535,3537,3539],{"class":3493,"line":3529},3,[3491,3531,3504],{"class":3497},[3491,3533,3534],{"class":3507},"entities",[3491,3536,3511],{"class":3497},[3491,3538,3514],{"class":3497},[3491,3540,3541],{"class":3497}," {\n",[3491,3543,3545,3548,3551,3553,3555],{"class":3493,"line":3544},4,[3491,3546,3547],{"class":3497},"    \"",[3491,3549,3397],{"class":3550},"sBMFI",[3491,3552,3511],{"class":3497},[3491,3554,3514],{"class":3497},[3491,3556,3541],{"class":3497},[3491,3558,3560,3563,3567,3569,3571],{"class":3493,"line":3559},5,[3491,3561,3562],{"class":3497},"      \"",[3491,3564,3566],{"class":3565},"sbssI","columns",[3491,3568,3511],{"class":3497},[3491,3570,3514],{"class":3497},[3491,3572,3541],{"class":3497},[3491,3574,3576,3579,3583,3585,3587,3590,3592,3596,3598,3600,3602,3605,3607,3610,3612,3615,3617,3619,3622,3624,3627,3629,3631,3633,3636,3638],{"class":3493,"line":3575},6,[3491,3577,3578],{"class":3497},"        \"",[3491,3580,3582],{"class":3581},"swJcz","id",[3491,3584,3511],{"class":3497},[3491,3586,3514],{"class":3497},[3491,3588,3589],{"class":3497},"        {",[3491,3591,3517],{"class":3497},[3491,3593,3595],{"class":3594},"su27w","type",[3491,3597,3511],{"class":3497},[3491,3599,3514],{"class":3497},[3491,3601,3517],{"class":3497},[3491,3603,3604],{"class":3520},"uuid",[3491,3606,3511],{"class":3497},[3491,3608,3609],{"class":3497},",",[3491,3611,3517],{"class":3497},[3491,3613,3614],{"class":3594},"pk",[3491,3616,3511],{"class":3497},[3491,3618,3514],{"class":3497},[3491,3620,3621],{"class":3497}," true,",[3491,3623,3517],{"class":3497},[3491,3625,3626],{"class":3594},"default",[3491,3628,3511],{"class":3497},[3491,3630,3514],{"class":3497},[3491,3632,3517],{"class":3497},[3491,3634,3635],{"class":3520},"gen_random_uuid()",[3491,3637,3511],{"class":3497},[3491,3639,3640],{"class":3497}," },\n",[3491,3642,3644,3646,3648,3650,3652,3655,3657,3659,3661,3663,3665,3668,3670,3672,3674,3677,3679,3681,3683,3685,3688,3690,3692,3694,3697,3699],{"class":3493,"line":3643},7,[3491,3645,3578],{"class":3497},[3491,3647,3391],{"class":3581},[3491,3649,3511],{"class":3497},[3491,3651,3514],{"class":3497},[3491,3653,3654],{"class":3497},"      {",[3491,3656,3517],{"class":3497},[3491,3658,3595],{"class":3594},[3491,3660,3511],{"class":3497},[3491,3662,3514],{"class":3497},[3491,3664,3517],{"class":3497},[3491,3666,3667],{"class":3520},"text",[3491,3669,3511],{"class":3497},[3491,3671,3609],{"class":3497},[3491,3673,3517],{"class":3497},[3491,3675,3676],{"class":3594},"notNull",[3491,3678,3511],{"class":3497},[3491,3680,3514],{"class":3497},[3491,3682,3621],{"class":3497},[3491,3684,3517],{"class":3497},[3491,3686,3687],{"class":3594},"check",[3491,3689,3511],{"class":3497},[3491,3691,3514],{"class":3497},[3491,3693,3517],{"class":3497},[3491,3695,3696],{"class":3520},"length(code) > 0",[3491,3698,3511],{"class":3497},[3491,3700,3640],{"class":3497},[3491,3702,3704,3706,3709,3711,3713,3715,3717,3719,3721,3723,3725,3727,3729,3731,3733,3735,3737,3739,3741,3743,3745,3747,3749,3751,3754,3756],{"class":3493,"line":3703},8,[3491,3705,3578],{"class":3497},[3491,3707,3708],{"class":3581},"name",[3491,3710,3511],{"class":3497},[3491,3712,3514],{"class":3497},[3491,3714,3654],{"class":3497},[3491,3716,3517],{"class":3497},[3491,3718,3595],{"class":3594},[3491,3720,3511],{"class":3497},[3491,3722,3514],{"class":3497},[3491,3724,3517],{"class":3497},[3491,3726,3667],{"class":3520},[3491,3728,3511],{"class":3497},[3491,3730,3609],{"class":3497},[3491,3732,3517],{"class":3497},[3491,3734,3676],{"class":3594},[3491,3736,3511],{"class":3497},[3491,3738,3514],{"class":3497},[3491,3740,3621],{"class":3497},[3491,3742,3517],{"class":3497},[3491,3744,3687],{"class":3594},[3491,3746,3511],{"class":3497},[3491,3748,3514],{"class":3497},[3491,3750,3517],{"class":3497},[3491,3752,3753],{"class":3520},"length(name) > 0",[3491,3755,3511],{"class":3497},[3491,3757,3640],{"class":3497},[3491,3759,3761,3763,3765,3767,3769,3772,3774,3776,3778,3780,3782,3785,3787],{"class":3493,"line":3760},9,[3491,3762,3578],{"class":3497},[3491,3764,3439],{"class":3581},[3491,3766,3511],{"class":3497},[3491,3768,3514],{"class":3497},[3491,3770,3771],{"class":3497},"    {",[3491,3773,3517],{"class":3497},[3491,3775,3595],{"class":3594},[3491,3777,3511],{"class":3497},[3491,3779,3514],{"class":3497},[3491,3781,3517],{"class":3497},[3491,3783,3784],{"class":3520},"jsonb",[3491,3786,3511],{"class":3497},[3491,3788,3640],{"class":3497},[3491,3790,3792,3794,3796,3798,3800,3802,3804,3806,3808,3810,3812,3814,3816,3818,3820,3822,3824,3826,3828,3830,3832,3834,3836,3838,3841,3843,3845,3847,3849,3851,3853,3855,3858,3860],{"class":3493,"line":3791},10,[3491,3793,3578],{"class":3497},[3491,3795,3595],{"class":3581},[3491,3797,3511],{"class":3497},[3491,3799,3514],{"class":3497},[3491,3801,3654],{"class":3497},[3491,3803,3517],{"class":3497},[3491,3805,3595],{"class":3594},[3491,3807,3511],{"class":3497},[3491,3809,3514],{"class":3497},[3491,3811,3517],{"class":3497},[3491,3813,3667],{"class":3520},[3491,3815,3511],{"class":3497},[3491,3817,3609],{"class":3497},[3491,3819,3517],{"class":3497},[3491,3821,3676],{"class":3594},[3491,3823,3511],{"class":3497},[3491,3825,3514],{"class":3497},[3491,3827,3621],{"class":3497},[3491,3829,3517],{"class":3497},[3491,3831,3626],{"class":3594},[3491,3833,3511],{"class":3497},[3491,3835,3514],{"class":3497},[3491,3837,3517],{"class":3497},[3491,3839,3840],{"class":3520},"'warehouse'",[3491,3842,3511],{"class":3497},[3491,3844,3609],{"class":3497},[3491,3846,3517],{"class":3497},[3491,3848,3687],{"class":3594},[3491,3850,3511],{"class":3497},[3491,3852,3514],{"class":3497},[3491,3854,3517],{"class":3497},[3491,3856,3857],{"class":3520},"type in ('warehouse', 'store', 'dropship', 'virtual')",[3491,3859,3511],{"class":3497},[3491,3861,3640],{"class":3497},[3491,3863,3865,3867,3870,3872,3874,3877,3879,3881,3883,3885,3887,3890,3892,3894,3896,3898,3900,3902,3904,3906,3908,3910,3912,3914,3917,3919],{"class":3493,"line":3864},11,[3491,3866,3578],{"class":3497},[3491,3868,3869],{"class":3581},"priority",[3491,3871,3511],{"class":3497},[3491,3873,3514],{"class":3497},[3491,3875,3876],{"class":3497},"  {",[3491,3878,3517],{"class":3497},[3491,3880,3595],{"class":3594},[3491,3882,3511],{"class":3497},[3491,3884,3514],{"class":3497},[3491,3886,3517],{"class":3497},[3491,3888,3889],{"class":3520},"integer",[3491,3891,3511],{"class":3497},[3491,3893,3609],{"class":3497},[3491,3895,3517],{"class":3497},[3491,3897,3676],{"class":3594},[3491,3899,3511],{"class":3497},[3491,3901,3514],{"class":3497},[3491,3903,3621],{"class":3497},[3491,3905,3517],{"class":3497},[3491,3907,3626],{"class":3594},[3491,3909,3511],{"class":3497},[3491,3911,3514],{"class":3497},[3491,3913,3517],{"class":3497},[3491,3915,3916],{"class":3520},"0",[3491,3918,3511],{"class":3497},[3491,3920,3640],{"class":3497},[3491,3922,3924,3926,3929,3931,3933,3936,3938,3940,3942,3944,3946,3949,3951,3953,3955,3957,3959,3961,3963,3965,3967,3969,3971,3973,3976,3978],{"class":3493,"line":3923},12,[3491,3925,3578],{"class":3497},[3491,3927,3928],{"class":3581},"enabled",[3491,3930,3511],{"class":3497},[3491,3932,3514],{"class":3497},[3491,3934,3935],{"class":3497},"   {",[3491,3937,3517],{"class":3497},[3491,3939,3595],{"class":3594},[3491,3941,3511],{"class":3497},[3491,3943,3514],{"class":3497},[3491,3945,3517],{"class":3497},[3491,3947,3948],{"class":3520},"boolean",[3491,3950,3511],{"class":3497},[3491,3952,3609],{"class":3497},[3491,3954,3517],{"class":3497},[3491,3956,3676],{"class":3594},[3491,3958,3511],{"class":3497},[3491,3960,3514],{"class":3497},[3491,3962,3621],{"class":3497},[3491,3964,3517],{"class":3497},[3491,3966,3626],{"class":3594},[3491,3968,3511],{"class":3497},[3491,3970,3514],{"class":3497},[3491,3972,3517],{"class":3497},[3491,3974,3975],{"class":3520},"true",[3491,3977,3511],{"class":3497},[3491,3979,3640],{"class":3497},[3491,3981,3983,3985,3987,3989,3991,3993,3995,3997,3999,4001,4003,4005,4007],{"class":3493,"line":3982},13,[3491,3984,3578],{"class":3497},[3491,3986,3442],{"class":3581},[3491,3988,3511],{"class":3497},[3491,3990,3514],{"class":3497},[3491,3992,3935],{"class":3497},[3491,3994,3517],{"class":3497},[3491,3996,3595],{"class":3594},[3491,3998,3511],{"class":3497},[3491,4000,3514],{"class":3497},[3491,4002,3517],{"class":3497},[3491,4004,3784],{"class":3520},[3491,4006,3511],{"class":3497},[3491,4008,3640],{"class":3497},[3491,4010,4012,4014,4016,4018,4020,4022,4024,4026,4028,4030,4032,4034,4036],{"class":3493,"line":4011},14,[3491,4013,3578],{"class":3497},[3491,4015,3446],{"class":3581},[3491,4017,3511],{"class":3497},[3491,4019,3514],{"class":3497},[3491,4021,3876],{"class":3497},[3491,4023,3517],{"class":3497},[3491,4025,3595],{"class":3594},[3491,4027,3511],{"class":3497},[3491,4029,3514],{"class":3497},[3491,4031,3517],{"class":3497},[3491,4033,3784],{"class":3520},[3491,4035,3511],{"class":3497},[3491,4037,3640],{"class":3497},[3491,4039,4041,4043,4046,4048,4050,4053,4055,4057,4059,4061,4063,4066,4068,4070,4072,4074,4076,4078,4080,4082,4084,4086,4088,4090,4093,4095],{"class":3493,"line":4040},15,[3491,4042,3578],{"class":3497},[3491,4044,4045],{"class":3581},"created_at",[3491,4047,3511],{"class":3497},[3491,4049,3514],{"class":3497},[3491,4051,4052],{"class":3497}," {",[3491,4054,3517],{"class":3497},[3491,4056,3595],{"class":3594},[3491,4058,3511],{"class":3497},[3491,4060,3514],{"class":3497},[3491,4062,3517],{"class":3497},[3491,4064,4065],{"class":3520},"timestamptz",[3491,4067,3511],{"class":3497},[3491,4069,3609],{"class":3497},[3491,4071,3517],{"class":3497},[3491,4073,3676],{"class":3594},[3491,4075,3511],{"class":3497},[3491,4077,3514],{"class":3497},[3491,4079,3621],{"class":3497},[3491,4081,3517],{"class":3497},[3491,4083,3626],{"class":3594},[3491,4085,3511],{"class":3497},[3491,4087,3514],{"class":3497},[3491,4089,3517],{"class":3497},[3491,4091,4092],{"class":3520},"now()",[3491,4094,3511],{"class":3497},[3491,4096,3640],{"class":3497},[3491,4098,4100,4102,4105,4107,4109,4111,4113,4115,4117,4119,4121,4123,4125,4127,4129,4131,4133,4135,4137,4139,4141,4143,4145,4147,4149,4151],{"class":3493,"line":4099},16,[3491,4101,3578],{"class":3497},[3491,4103,4104],{"class":3581},"updated_at",[3491,4106,3511],{"class":3497},[3491,4108,3514],{"class":3497},[3491,4110,4052],{"class":3497},[3491,4112,3517],{"class":3497},[3491,4114,3595],{"class":3594},[3491,4116,3511],{"class":3497},[3491,4118,3514],{"class":3497},[3491,4120,3517],{"class":3497},[3491,4122,4065],{"class":3520},[3491,4124,3511],{"class":3497},[3491,4126,3609],{"class":3497},[3491,4128,3517],{"class":3497},[3491,4130,3676],{"class":3594},[3491,4132,3511],{"class":3497},[3491,4134,3514],{"class":3497},[3491,4136,3621],{"class":3497},[3491,4138,3517],{"class":3497},[3491,4140,3626],{"class":3594},[3491,4142,3511],{"class":3497},[3491,4144,3514],{"class":3497},[3491,4146,3517],{"class":3497},[3491,4148,4092],{"class":3520},[3491,4150,3511],{"class":3497},[3491,4152,4153],{"class":3497}," }\n",[3491,4155,4157],{"class":3493,"line":4156},17,[3491,4158,4159],{"class":3497},"      },\n",[3491,4161,4163,4165,4168,4170,4172],{"class":3493,"line":4162},18,[3491,4164,3562],{"class":3497},[3491,4166,4167],{"class":3565},"indexes",[3491,4169,3511],{"class":3497},[3491,4171,3514],{"class":3497},[3491,4173,4174],{"class":3497}," [\n",[3491,4176,4178,4180,4182,4184,4186,4188,4191,4193,4196,4198,4200,4202,4204,4206,4209,4211,4214,4216,4218,4221],{"class":3493,"line":4177},19,[3491,4179,3589],{"class":3497},[3491,4181,3517],{"class":3497},[3491,4183,3566],{"class":3581},[3491,4185,3511],{"class":3497},[3491,4187,3514],{"class":3497},[3491,4189,4190],{"class":3497}," [",[3491,4192,3511],{"class":3497},[3491,4194,4195],{"class":3520},"tenant_id",[3491,4197,3511],{"class":3497},[3491,4199,3609],{"class":3497},[3491,4201,3517],{"class":3497},[3491,4203,3391],{"class":3520},[3491,4205,3511],{"class":3497},[3491,4207,4208],{"class":3497},"],",[3491,4210,3517],{"class":3497},[3491,4212,4213],{"class":3581},"unique",[3491,4215,3511],{"class":3497},[3491,4217,3514],{"class":3497},[3491,4219,4220],{"class":3497}," true",[3491,4222,3640],{"class":3497},[3491,4224,4226,4228,4230,4232,4234,4236,4238,4240,4242,4244,4247],{"class":3493,"line":4225},20,[3491,4227,3589],{"class":3497},[3491,4229,3517],{"class":3497},[3491,4231,3566],{"class":3581},[3491,4233,3511],{"class":3497},[3491,4235,3514],{"class":3497},[3491,4237,4190],{"class":3497},[3491,4239,3511],{"class":3497},[3491,4241,3928],{"class":3520},[3491,4243,3511],{"class":3497},[3491,4245,4246],{"class":3497},"]",[3491,4248,4153],{"class":3497},[3491,4250,4252],{"class":3493,"line":4251},21,[3491,4253,4254],{"class":3497},"      ]\n",[3491,4256,4258],{"class":3493,"line":4257},22,[3491,4259,4260],{"class":3497},"    },\n",[3491,4262,4264,4266,4268,4270,4272],{"class":3493,"line":4263},23,[3491,4265,3547],{"class":3497},[3491,4267,3393],{"class":3550},[3491,4269,3511],{"class":3497},[3491,4271,3514],{"class":3497},[3491,4273,3541],{"class":3497},[3491,4275,4277,4279,4281,4283,4285],{"class":3493,"line":4276},24,[3491,4278,3562],{"class":3497},[3491,4280,3566],{"class":3565},[3491,4282,3511],{"class":3497},[3491,4284,3514],{"class":3497},[3491,4286,3541],{"class":3497},[3491,4288,4290,4292,4294,4296,4298,4300,4302,4304,4306,4308,4310,4312,4314,4316,4318,4320,4322,4324,4326,4328,4330,4332,4334,4336,4338,4340],{"class":3493,"line":4289},25,[3491,4291,3578],{"class":3497},[3491,4293,3582],{"class":3581},[3491,4295,3511],{"class":3497},[3491,4297,3514],{"class":3497},[3491,4299,4052],{"class":3497},[3491,4301,3517],{"class":3497},[3491,4303,3595],{"class":3594},[3491,4305,3511],{"class":3497},[3491,4307,3514],{"class":3497},[3491,4309,3517],{"class":3497},[3491,4311,3604],{"class":3520},[3491,4313,3511],{"class":3497},[3491,4315,3609],{"class":3497},[3491,4317,3517],{"class":3497},[3491,4319,3614],{"class":3594},[3491,4321,3511],{"class":3497},[3491,4323,3514],{"class":3497},[3491,4325,3621],{"class":3497},[3491,4327,3517],{"class":3497},[3491,4329,3626],{"class":3594},[3491,4331,3511],{"class":3497},[3491,4333,3514],{"class":3497},[3491,4335,3517],{"class":3497},[3491,4337,3635],{"class":3520},[3491,4339,3511],{"class":3497},[3491,4341,3640],{"class":3497},[3491,4343,4345,4347,4349,4351,4353],{"class":3493,"line":4344},26,[3491,4346,3578],{"class":3497},[3491,4348,3459],{"class":3581},[3491,4350,3511],{"class":3497},[3491,4352,3514],{"class":3497},[3491,4354,3541],{"class":3497},[3491,4356,4358,4361,4363,4365,4367,4369,4371,4373],{"class":3493,"line":4357},27,[3491,4359,4360],{"class":3497},"          \"",[3491,4362,3595],{"class":3594},[3491,4364,3511],{"class":3497},[3491,4366,3514],{"class":3497},[3491,4368,3517],{"class":3497},[3491,4370,3604],{"class":3520},[3491,4372,3511],{"class":3497},[3491,4374,3526],{"class":3497},[3491,4376,4378,4380,4382,4384,4386],{"class":3493,"line":4377},28,[3491,4379,4360],{"class":3497},[3491,4381,3676],{"class":3594},[3491,4383,3511],{"class":3497},[3491,4385,3514],{"class":3497},[3491,4387,4388],{"class":3497}," true,\n",[3491,4390,4392,4394,4396,4398,4400,4402,4404,4408,4410,4412,4414,4416,4418,4420,4422,4425,4427,4429,4431,4433,4435,4437,4439,4442,4444,4446,4448,4451,4453],{"class":3493,"line":4391},29,[3491,4393,4360],{"class":3497},[3491,4395,3455],{"class":3594},[3491,4397,3511],{"class":3497},[3491,4399,3514],{"class":3497},[3491,4401,4052],{"class":3497},[3491,4403,3517],{"class":3497},[3491,4405,4407],{"class":4406},"s2Zo4","entity",[3491,4409,3511],{"class":3497},[3491,4411,3514],{"class":3497},[3491,4413,3517],{"class":3497},[3491,4415,3397],{"class":3520},[3491,4417,3511],{"class":3497},[3491,4419,3609],{"class":3497},[3491,4421,3517],{"class":3497},[3491,4423,4424],{"class":4406},"column",[3491,4426,3511],{"class":3497},[3491,4428,3514],{"class":3497},[3491,4430,3517],{"class":3497},[3491,4432,3582],{"class":3520},[3491,4434,3511],{"class":3497},[3491,4436,3609],{"class":3497},[3491,4438,3517],{"class":3497},[3491,4440,4441],{"class":4406},"onDelete",[3491,4443,3511],{"class":3497},[3491,4445,3514],{"class":3497},[3491,4447,3517],{"class":3497},[3491,4449,4450],{"class":3520},"cascade",[3491,4452,3511],{"class":3497},[3491,4454,4153],{"class":3497},[3491,4456,4458],{"class":3493,"line":4457},30,[3491,4459,4460],{"class":3497},"        },\n",[3491,4462,4464,4466,4468,4470,4472,4474,4476,4478,4480,4482,4484,4486,4488],{"class":3493,"line":4463},31,[3491,4465,3578],{"class":3497},[3491,4467,3471],{"class":3581},[3491,4469,3511],{"class":3497},[3491,4471,3514],{"class":3497},[3491,4473,4052],{"class":3497},[3491,4475,3517],{"class":3497},[3491,4477,3595],{"class":3594},[3491,4479,3511],{"class":3497},[3491,4481,3514],{"class":3497},[3491,4483,3517],{"class":3497},[3491,4485,3604],{"class":3520},[3491,4487,3511],{"class":3497},[3491,4489,3640],{"class":3497},[3491,4491,4493,4495,4497,4499,4501,4503,4505,4507,4509,4511,4513,4515,4517],{"class":3493,"line":4492},32,[3491,4494,3578],{"class":3497},[3491,4496,3475],{"class":3581},[3491,4498,3511],{"class":3497},[3491,4500,3514],{"class":3497},[3491,4502,3589],{"class":3497},[3491,4504,3517],{"class":3497},[3491,4506,3595],{"class":3594},[3491,4508,3511],{"class":3497},[3491,4510,3514],{"class":3497},[3491,4512,3517],{"class":3497},[3491,4514,3667],{"class":3520},[3491,4516,3511],{"class":3497},[3491,4518,3640],{"class":3497},[3491,4520,4522,4524,4527,4529,4531,4533,4535,4537,4539,4541,4543,4546,4548,4550,4552,4554,4556,4558,4560,4562,4564,4566,4568,4570,4572,4574,4576,4578,4580,4582,4584,4586,4589,4591],{"class":3493,"line":4521},33,[3491,4523,3578],{"class":3497},[3491,4525,4526],{"class":3581},"on_hand",[3491,4528,3511],{"class":3497},[3491,4530,3514],{"class":3497},[3491,4532,3771],{"class":3497},[3491,4534,3517],{"class":3497},[3491,4536,3595],{"class":3594},[3491,4538,3511],{"class":3497},[3491,4540,3514],{"class":3497},[3491,4542,3517],{"class":3497},[3491,4544,4545],{"class":3520},"numeric(14,3)",[3491,4547,3511],{"class":3497},[3491,4549,3609],{"class":3497},[3491,4551,3517],{"class":3497},[3491,4553,3676],{"class":3594},[3491,4555,3511],{"class":3497},[3491,4557,3514],{"class":3497},[3491,4559,3621],{"class":3497},[3491,4561,3517],{"class":3497},[3491,4563,3626],{"class":3594},[3491,4565,3511],{"class":3497},[3491,4567,3514],{"class":3497},[3491,4569,3517],{"class":3497},[3491,4571,3916],{"class":3520},[3491,4573,3511],{"class":3497},[3491,4575,3609],{"class":3497},[3491,4577,3517],{"class":3497},[3491,4579,3687],{"class":3594},[3491,4581,3511],{"class":3497},[3491,4583,3514],{"class":3497},[3491,4585,3517],{"class":3497},[3491,4587,4588],{"class":3520},"on_hand >= 0",[3491,4590,3511],{"class":3497},[3491,4592,3640],{"class":3497},[3491,4594,4596,4598,4601,4603,4605,4607,4609,4611,4613,4615,4617,4619,4621,4623,4625,4627,4629,4631,4633,4635,4637,4639,4641,4643,4645,4647,4649,4651,4653,4655,4657,4659,4662,4664],{"class":3493,"line":4595},34,[3491,4597,3578],{"class":3497},[3491,4599,4600],{"class":3581},"reserved",[3491,4602,3511],{"class":3497},[3491,4604,3514],{"class":3497},[3491,4606,3935],{"class":3497},[3491,4608,3517],{"class":3497},[3491,4610,3595],{"class":3594},[3491,4612,3511],{"class":3497},[3491,4614,3514],{"class":3497},[3491,4616,3517],{"class":3497},[3491,4618,4545],{"class":3520},[3491,4620,3511],{"class":3497},[3491,4622,3609],{"class":3497},[3491,4624,3517],{"class":3497},[3491,4626,3676],{"class":3594},[3491,4628,3511],{"class":3497},[3491,4630,3514],{"class":3497},[3491,4632,3621],{"class":3497},[3491,4634,3517],{"class":3497},[3491,4636,3626],{"class":3594},[3491,4638,3511],{"class":3497},[3491,4640,3514],{"class":3497},[3491,4642,3517],{"class":3497},[3491,4644,3916],{"class":3520},[3491,4646,3511],{"class":3497},[3491,4648,3609],{"class":3497},[3491,4650,3517],{"class":3497},[3491,4652,3687],{"class":3594},[3491,4654,3511],{"class":3497},[3491,4656,3514],{"class":3497},[3491,4658,3517],{"class":3497},[3491,4660,4661],{"class":3520},"reserved >= 0",[3491,4663,3511],{"class":3497},[3491,4665,3640],{"class":3497},[3491,4667,4669,4671,4673,4675,4677,4679,4681,4683,4685,4687,4689,4691,4693,4695,4697,4699,4701,4703,4705,4707,4709,4711,4713,4715,4717,4719],{"class":3493,"line":4668},35,[3491,4670,3578],{"class":3497},[3491,4672,4045],{"class":3581},[3491,4674,3511],{"class":3497},[3491,4676,3514],{"class":3497},[3491,4678,4052],{"class":3497},[3491,4680,3517],{"class":3497},[3491,4682,3595],{"class":3594},[3491,4684,3511],{"class":3497},[3491,4686,3514],{"class":3497},[3491,4688,3517],{"class":3497},[3491,4690,4065],{"class":3520},[3491,4692,3511],{"class":3497},[3491,4694,3609],{"class":3497},[3491,4696,3517],{"class":3497},[3491,4698,3676],{"class":3594},[3491,4700,3511],{"class":3497},[3491,4702,3514],{"class":3497},[3491,4704,3621],{"class":3497},[3491,4706,3517],{"class":3497},[3491,4708,3626],{"class":3594},[3491,4710,3511],{"class":3497},[3491,4712,3514],{"class":3497},[3491,4714,3517],{"class":3497},[3491,4716,4092],{"class":3520},[3491,4718,3511],{"class":3497},[3491,4720,3640],{"class":3497},[3491,4722,4724,4726,4728,4730,4732,4734,4736,4738,4740,4742,4744,4746,4748,4750,4752,4754,4756,4758,4760,4762,4764,4766,4768,4770,4772,4774],{"class":3493,"line":4723},36,[3491,4725,3578],{"class":3497},[3491,4727,4104],{"class":3581},[3491,4729,3511],{"class":3497},[3491,4731,3514],{"class":3497},[3491,4733,4052],{"class":3497},[3491,4735,3517],{"class":3497},[3491,4737,3595],{"class":3594},[3491,4739,3511],{"class":3497},[3491,4741,3514],{"class":3497},[3491,4743,3517],{"class":3497},[3491,4745,4065],{"class":3520},[3491,4747,3511],{"class":3497},[3491,4749,3609],{"class":3497},[3491,4751,3517],{"class":3497},[3491,4753,3676],{"class":3594},[3491,4755,3511],{"class":3497},[3491,4757,3514],{"class":3497},[3491,4759,3621],{"class":3497},[3491,4761,3517],{"class":3497},[3491,4763,3626],{"class":3594},[3491,4765,3511],{"class":3497},[3491,4767,3514],{"class":3497},[3491,4769,3517],{"class":3497},[3491,4771,4092],{"class":3520},[3491,4773,3511],{"class":3497},[3491,4775,4153],{"class":3497},[3491,4777,4779],{"class":3493,"line":4778},37,[3491,4780,4159],{"class":3497},[3491,4782,4784,4786,4788,4790,4792],{"class":3493,"line":4783},38,[3491,4785,3562],{"class":3497},[3491,4787,3479],{"class":3565},[3491,4789,3511],{"class":3497},[3491,4791,3514],{"class":3497},[3491,4793,4174],{"class":3497},[3491,4795,4797,4799,4802],{"class":3493,"line":4796},39,[3491,4798,3578],{"class":3497},[3491,4800,4801],{"class":3520},"product_id is not null or sku is not null",[3491,4803,4804],{"class":3497},"\"\n",[3491,4806,4808],{"class":3493,"line":4807},40,[3491,4809,4810],{"class":3497},"      ],\n",[3491,4812,4814,4816,4818,4820,4822],{"class":3493,"line":4813},41,[3491,4815,3562],{"class":3497},[3491,4817,4167],{"class":3565},[3491,4819,3511],{"class":3497},[3491,4821,3514],{"class":3497},[3491,4823,4174],{"class":3497},[3491,4825,4827,4829,4831,4833,4835,4837,4839,4841,4843,4845,4847],{"class":3493,"line":4826},42,[3491,4828,3589],{"class":3497},[3491,4830,3517],{"class":3497},[3491,4832,3566],{"class":3581},[3491,4834,3511],{"class":3497},[3491,4836,3514],{"class":3497},[3491,4838,4190],{"class":3497},[3491,4840,3511],{"class":3497},[3491,4842,3459],{"class":3520},[3491,4844,3511],{"class":3497},[3491,4846,4246],{"class":3497},[3491,4848,3640],{"class":3497},[3491,4850,4852,4854,4856,4858,4860,4862,4864,4866,4868,4870,4872,4874,4876,4878,4880],{"class":3493,"line":4851},43,[3491,4853,3589],{"class":3497},[3491,4855,3517],{"class":3497},[3491,4857,3566],{"class":3581},[3491,4859,3511],{"class":3497},[3491,4861,3514],{"class":3497},[3491,4863,4190],{"class":3497},[3491,4865,3511],{"class":3497},[3491,4867,4195],{"class":3520},[3491,4869,3511],{"class":3497},[3491,4871,3609],{"class":3497},[3491,4873,3517],{"class":3497},[3491,4875,3471],{"class":3520},[3491,4877,3511],{"class":3497},[3491,4879,4246],{"class":3497},[3491,4881,3640],{"class":3497},[3491,4883,4885,4887,4889,4891,4893,4895,4897,4899,4901,4903,4905,4907,4909,4911,4913],{"class":3493,"line":4884},44,[3491,4886,3589],{"class":3497},[3491,4888,3517],{"class":3497},[3491,4890,3566],{"class":3581},[3491,4892,3511],{"class":3497},[3491,4894,3514],{"class":3497},[3491,4896,4190],{"class":3497},[3491,4898,3511],{"class":3497},[3491,4900,4195],{"class":3520},[3491,4902,3511],{"class":3497},[3491,4904,3609],{"class":3497},[3491,4906,3517],{"class":3497},[3491,4908,3475],{"class":3520},[3491,4910,3511],{"class":3497},[3491,4912,4246],{"class":3497},[3491,4914,4153],{"class":3497},[3491,4916,4918],{"class":3493,"line":4917},45,[3491,4919,4254],{"class":3497},[3491,4921,4923],{"class":3493,"line":4922},46,[3491,4924,4925],{"class":3497},"    }\n",[3491,4927,4929],{"class":3493,"line":4928},47,[3491,4930,4931],{"class":3497},"  }\n",[3491,4933,4935],{"class":3493,"line":4934},48,[3491,4936,4937],{"class":3497},"}\n",[3382,4939,4940,4941,4944],{},"Grant the new entity in the manifest. Bump the version — every schema change is a new version. Keep the rest of the manifest as the first tutorial left it, including ",[3391,4942,4943],{},"events",".",[3482,4946,4948],{"className":3484,"code":4947,"filename":3412,"language":3486,"meta":3487,"style":3487},"{\n  \"$schema\": \"https:\u002F\u002Fschemas.revenexx.com\u002Fmanifest.schema.json\",\n  \"name\": \"locations\",\n  \"vendor\": \"acme\",\n  \"version\": \"0.2.0\",\n  \"title\": \"Locations\",\n  \"type\": \"public\",\n  \"permissions\": [\n    { \"entity\": \"locations\",    \"access\": [\"read\", \"create\", \"update\", \"delete\"] },\n    { \"entity\": \"stock_levels\", \"access\": [\"read\", \"create\", \"update\", \"delete\"] }\n  ],\n  \"events\": {\n    \"listens\": [\"app.installed\", \"app.uninstalled\"]\n  }\n}\n",[3391,4949,4950,4954,4973,4991,5011,5031,5051,5070,5083,5152,5216,5221,5233,5265,5269],{"__ignoreMap":3487},[3491,4951,4952],{"class":3493,"line":3494},[3491,4953,3498],{"class":3497},[3491,4955,4956,4958,4960,4962,4964,4966,4969,4971],{"class":3493,"line":3501},[3491,4957,3504],{"class":3497},[3491,4959,3508],{"class":3507},[3491,4961,3511],{"class":3497},[3491,4963,3514],{"class":3497},[3491,4965,3517],{"class":3497},[3491,4967,4968],{"class":3520},"https:\u002F\u002Fschemas.revenexx.com\u002Fmanifest.schema.json",[3491,4970,3511],{"class":3497},[3491,4972,3526],{"class":3497},[3491,4974,4975,4977,4979,4981,4983,4985,4987,4989],{"class":3493,"line":3529},[3491,4976,3504],{"class":3497},[3491,4978,3708],{"class":3507},[3491,4980,3511],{"class":3497},[3491,4982,3514],{"class":3497},[3491,4984,3517],{"class":3497},[3491,4986,3397],{"class":3520},[3491,4988,3511],{"class":3497},[3491,4990,3526],{"class":3497},[3491,4992,4993,4995,4998,5000,5002,5004,5007,5009],{"class":3493,"line":3544},[3491,4994,3504],{"class":3497},[3491,4996,4997],{"class":3507},"vendor",[3491,4999,3511],{"class":3497},[3491,5001,3514],{"class":3497},[3491,5003,3517],{"class":3497},[3491,5005,5006],{"class":3520},"acme",[3491,5008,3511],{"class":3497},[3491,5010,3526],{"class":3497},[3491,5012,5013,5015,5018,5020,5022,5024,5027,5029],{"class":3493,"line":3559},[3491,5014,3504],{"class":3497},[3491,5016,5017],{"class":3507},"version",[3491,5019,3511],{"class":3497},[3491,5021,3514],{"class":3497},[3491,5023,3517],{"class":3497},[3491,5025,5026],{"class":3520},"0.2.0",[3491,5028,3511],{"class":3497},[3491,5030,3526],{"class":3497},[3491,5032,5033,5035,5038,5040,5042,5044,5047,5049],{"class":3493,"line":3575},[3491,5034,3504],{"class":3497},[3491,5036,5037],{"class":3507},"title",[3491,5039,3511],{"class":3497},[3491,5041,3514],{"class":3497},[3491,5043,3517],{"class":3497},[3491,5045,5046],{"class":3520},"Locations",[3491,5048,3511],{"class":3497},[3491,5050,3526],{"class":3497},[3491,5052,5053,5055,5057,5059,5061,5063,5066,5068],{"class":3493,"line":3643},[3491,5054,3504],{"class":3497},[3491,5056,3595],{"class":3507},[3491,5058,3511],{"class":3497},[3491,5060,3514],{"class":3497},[3491,5062,3517],{"class":3497},[3491,5064,5065],{"class":3520},"public",[3491,5067,3511],{"class":3497},[3491,5069,3526],{"class":3497},[3491,5071,5072,5074,5077,5079,5081],{"class":3493,"line":3703},[3491,5073,3504],{"class":3497},[3491,5075,5076],{"class":3507},"permissions",[3491,5078,3511],{"class":3497},[3491,5080,3514],{"class":3497},[3491,5082,4174],{"class":3497},[3491,5084,5085,5087,5089,5091,5093,5095,5097,5099,5101,5103,5105,5108,5110,5112,5114,5116,5119,5121,5123,5125,5128,5130,5132,5134,5137,5139,5141,5143,5146,5148,5150],{"class":3493,"line":3760},[3491,5086,3771],{"class":3497},[3491,5088,3517],{"class":3497},[3491,5090,4407],{"class":3550},[3491,5092,3511],{"class":3497},[3491,5094,3514],{"class":3497},[3491,5096,3517],{"class":3497},[3491,5098,3397],{"class":3520},[3491,5100,3511],{"class":3497},[3491,5102,3609],{"class":3497},[3491,5104,3547],{"class":3497},[3491,5106,5107],{"class":3550},"access",[3491,5109,3511],{"class":3497},[3491,5111,3514],{"class":3497},[3491,5113,4190],{"class":3497},[3491,5115,3511],{"class":3497},[3491,5117,5118],{"class":3520},"read",[3491,5120,3511],{"class":3497},[3491,5122,3609],{"class":3497},[3491,5124,3517],{"class":3497},[3491,5126,5127],{"class":3520},"create",[3491,5129,3511],{"class":3497},[3491,5131,3609],{"class":3497},[3491,5133,3517],{"class":3497},[3491,5135,5136],{"class":3520},"update",[3491,5138,3511],{"class":3497},[3491,5140,3609],{"class":3497},[3491,5142,3517],{"class":3497},[3491,5144,5145],{"class":3520},"delete",[3491,5147,3511],{"class":3497},[3491,5149,4246],{"class":3497},[3491,5151,3640],{"class":3497},[3491,5153,5154,5156,5158,5160,5162,5164,5166,5168,5170,5172,5174,5176,5178,5180,5182,5184,5186,5188,5190,5192,5194,5196,5198,5200,5202,5204,5206,5208,5210,5212,5214],{"class":3493,"line":3791},[3491,5155,3771],{"class":3497},[3491,5157,3517],{"class":3497},[3491,5159,4407],{"class":3550},[3491,5161,3511],{"class":3497},[3491,5163,3514],{"class":3497},[3491,5165,3517],{"class":3497},[3491,5167,3393],{"class":3520},[3491,5169,3511],{"class":3497},[3491,5171,3609],{"class":3497},[3491,5173,3517],{"class":3497},[3491,5175,5107],{"class":3550},[3491,5177,3511],{"class":3497},[3491,5179,3514],{"class":3497},[3491,5181,4190],{"class":3497},[3491,5183,3511],{"class":3497},[3491,5185,5118],{"class":3520},[3491,5187,3511],{"class":3497},[3491,5189,3609],{"class":3497},[3491,5191,3517],{"class":3497},[3491,5193,5127],{"class":3520},[3491,5195,3511],{"class":3497},[3491,5197,3609],{"class":3497},[3491,5199,3517],{"class":3497},[3491,5201,5136],{"class":3520},[3491,5203,3511],{"class":3497},[3491,5205,3609],{"class":3497},[3491,5207,3517],{"class":3497},[3491,5209,5145],{"class":3520},[3491,5211,3511],{"class":3497},[3491,5213,4246],{"class":3497},[3491,5215,4153],{"class":3497},[3491,5217,5218],{"class":3493,"line":3864},[3491,5219,5220],{"class":3497},"  ],\n",[3491,5222,5223,5225,5227,5229,5231],{"class":3493,"line":3923},[3491,5224,3504],{"class":3497},[3491,5226,4943],{"class":3507},[3491,5228,3511],{"class":3497},[3491,5230,3514],{"class":3497},[3491,5232,3541],{"class":3497},[3491,5234,5235,5237,5240,5242,5244,5246,5248,5251,5253,5255,5257,5260,5262],{"class":3493,"line":3982},[3491,5236,3547],{"class":3497},[3491,5238,5239],{"class":3550},"listens",[3491,5241,3511],{"class":3497},[3491,5243,3514],{"class":3497},[3491,5245,4190],{"class":3497},[3491,5247,3511],{"class":3497},[3491,5249,5250],{"class":3520},"app.installed",[3491,5252,3511],{"class":3497},[3491,5254,3609],{"class":3497},[3491,5256,3517],{"class":3497},[3491,5258,5259],{"class":3520},"app.uninstalled",[3491,5261,3511],{"class":3497},[3491,5263,5264],{"class":3497},"]\n",[3491,5266,5267],{"class":3493,"line":4011},[3491,5268,4931],{"class":3497},[3491,5270,5271],{"class":3493,"line":4040},[3491,5272,4937],{"class":3497},[3382,5274,5275],{},"Regenerate the typed client so it knows the new entity:",[3482,5277,5282],{"className":5278,"code":5279,"filename":5280,"language":5281,"meta":3487,"style":3487},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","revenexx apps generate --schema .\u002Fschema.json --manifest .\u002Fmanifest.json --out .\u002Fsrc\n","Regenerate the client","bash",[3391,5283,5284],{"__ignoreMap":3487},[3491,5285,5286,5289,5292,5295,5298,5301,5304,5307,5310],{"class":3493,"line":3494},[3491,5287,5288],{"class":3550},"revenexx",[3491,5290,5291],{"class":3520}," apps",[3491,5293,5294],{"class":3520}," generate",[3491,5296,5297],{"class":3520}," --schema",[3491,5299,5300],{"class":3520}," .\u002Fschema.json",[3491,5302,5303],{"class":3520}," --manifest",[3491,5305,5306],{"class":3520}," .\u002Fmanifest.json",[3491,5308,5309],{"class":3520}," --out",[3491,5311,5312],{"class":3520}," .\u002Fsrc\n",[3422,5314,5316],{"id":5315},"_2-the-typed-data-client-in-depth","2. The typed data client in depth",[3382,5318,5319,5322],{},[3391,5320,5321],{},"createDb()"," returns one client per entity. The surface is the same for every entity, and it's worth knowing exactly, because the shapes are easy to get wrong.",[3482,5324,5329],{"className":5325,"code":5326,"filename":5327,"language":5328,"meta":3487,"style":3487},"language-js shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","await db.stock_levels.list({ where, order, limit, offset }); \u002F\u002F → Row[]  (an array)\nawait db.stock_levels.page({ where, order, limit, offset }); \u002F\u002F → { items, total, limit, offset }\nawait db.stock_levels.get(id);                               \u002F\u002F → Row | null  (null if missing — never throws)\nawait db.stock_levels.create(data);                          \u002F\u002F → Row\nawait db.stock_levels.update(id, patch);                     \u002F\u002F → Row\nawait db.stock_levels.delete(id);                            \u002F\u002F → void\n","Data client surface","js",[3391,5330,5331,5387,5429,5452,5474,5501],{"__ignoreMap":3487},[3491,5332,5333,5337,5341,5343,5345,5347,5350,5353,5356,5359,5361,5364,5366,5369,5371,5374,5377,5380,5383],{"class":3493,"line":3494},[3491,5334,5336],{"class":5335},"s7zQu","await",[3491,5338,5340],{"class":5339},"sTEyZ"," db",[3491,5342,4944],{"class":3497},[3491,5344,3393],{"class":5339},[3491,5346,4944],{"class":3497},[3491,5348,5349],{"class":4406},"list",[3491,5351,5352],{"class":5339},"(",[3491,5354,5355],{"class":3497},"{",[3491,5357,5358],{"class":5339}," where",[3491,5360,3609],{"class":3497},[3491,5362,5363],{"class":5339}," order",[3491,5365,3609],{"class":3497},[3491,5367,5368],{"class":5339}," limit",[3491,5370,3609],{"class":3497},[3491,5372,5373],{"class":5339}," offset ",[3491,5375,5376],{"class":3497},"}",[3491,5378,5379],{"class":5339},")",[3491,5381,5382],{"class":3497},";",[3491,5384,5386],{"class":5385},"sHwdD"," \u002F\u002F → Row[]  (an array)\n",[3491,5388,5389,5391,5393,5395,5397,5399,5402,5404,5406,5408,5410,5412,5414,5416,5418,5420,5422,5424,5426],{"class":3493,"line":3501},[3491,5390,5336],{"class":5335},[3491,5392,5340],{"class":5339},[3491,5394,4944],{"class":3497},[3491,5396,3393],{"class":5339},[3491,5398,4944],{"class":3497},[3491,5400,5401],{"class":4406},"page",[3491,5403,5352],{"class":5339},[3491,5405,5355],{"class":3497},[3491,5407,5358],{"class":5339},[3491,5409,3609],{"class":3497},[3491,5411,5363],{"class":5339},[3491,5413,3609],{"class":3497},[3491,5415,5368],{"class":5339},[3491,5417,3609],{"class":3497},[3491,5419,5373],{"class":5339},[3491,5421,5376],{"class":3497},[3491,5423,5379],{"class":5339},[3491,5425,5382],{"class":3497},[3491,5427,5428],{"class":5385}," \u002F\u002F → { items, total, limit, offset }\n",[3491,5430,5431,5433,5435,5437,5439,5441,5444,5447,5449],{"class":3493,"line":3529},[3491,5432,5336],{"class":5335},[3491,5434,5340],{"class":5339},[3491,5436,4944],{"class":3497},[3491,5438,3393],{"class":5339},[3491,5440,4944],{"class":3497},[3491,5442,5443],{"class":4406},"get",[3491,5445,5446],{"class":5339},"(id)",[3491,5448,5382],{"class":3497},[3491,5450,5451],{"class":5385},"                               \u002F\u002F → Row | null  (null if missing — never throws)\n",[3491,5453,5454,5456,5458,5460,5462,5464,5466,5469,5471],{"class":3493,"line":3544},[3491,5455,5336],{"class":5335},[3491,5457,5340],{"class":5339},[3491,5459,4944],{"class":3497},[3491,5461,3393],{"class":5339},[3491,5463,4944],{"class":3497},[3491,5465,5127],{"class":4406},[3491,5467,5468],{"class":5339},"(data)",[3491,5470,5382],{"class":3497},[3491,5472,5473],{"class":5385},"                          \u002F\u002F → Row\n",[3491,5475,5476,5478,5480,5482,5484,5486,5488,5491,5493,5496,5498],{"class":3493,"line":3559},[3491,5477,5336],{"class":5335},[3491,5479,5340],{"class":5339},[3491,5481,4944],{"class":3497},[3491,5483,3393],{"class":5339},[3491,5485,4944],{"class":3497},[3491,5487,5136],{"class":4406},[3491,5489,5490],{"class":5339},"(id",[3491,5492,3609],{"class":3497},[3491,5494,5495],{"class":5339}," patch)",[3491,5497,5382],{"class":3497},[3491,5499,5500],{"class":5385},"                     \u002F\u002F → Row\n",[3491,5502,5503,5505,5507,5509,5511,5513,5515,5517,5519],{"class":3493,"line":3575},[3491,5504,5336],{"class":5335},[3491,5506,5340],{"class":5339},[3491,5508,4944],{"class":3497},[3491,5510,3393],{"class":5339},[3491,5512,4944],{"class":3497},[3491,5514,5145],{"class":4406},[3491,5516,5446],{"class":5339},[3491,5518,5382],{"class":3497},[3491,5520,5521],{"class":5385},"                            \u002F\u002F → void\n",[3382,5523,5524],{},"The details that bite:",[5526,5527,5528,5555,5574,5587],"ul",{},[5529,5530,5531,5538,5539,5542,5543,5546,5547,5551,5552,4944],"li",{},[5532,5533,5534,5537],"strong",{},[3391,5535,5536],{},"list()"," returns an array, not a tuple."," Write ",[3391,5540,5541],{},"const rows = await db.x.list(...)",". Never ",[3391,5544,5545],{},"const [rows] = await db.x.list(...)"," — that destructures the first ",[5548,5549,5550],"em",{},"row",", not the array. When you need a total, use ",[3391,5553,5554],{},"page()",[5529,5556,5557,3409,5563,5566,5567,3472,5570,5573],{},[5532,5558,5559,5562],{},[3391,5560,5561],{},"order"," is a string",[3391,5564,5565],{},"'column.direction'",", e.g. ",[3391,5568,5569],{},"'created_at.desc'",[3391,5571,5572],{},"'priority.asc'",". Never an array.",[5529,5575,5576,5582,5583,5586],{},[5532,5577,5578,5581],{},[3391,5579,5580],{},"where"," values are equality filters only"," — ",[3391,5584,5585],{},"{ where: { location_id: id, enabled: true } }",". For anything richer, fetch and filter in code, or model it as a custom route.",[5529,5588,5589,5598],{},[5532,5590,5591,5594,5595],{},[3391,5592,5593],{},"get()"," returns ",[3391,5596,5597],{},"null"," for a missing id; it never throws a 404. Check the result.",[3422,5600,5602],{"id":5601},"_3-a-custom-action-route-with-guards","3. A custom action route with guards",[3382,5604,5605,5606,5608,5609,4944],{},"CRUD covers reading and writing rows. An ",[5548,5607,3401],{}," check is different: it takes a batch of items, sums stock across locations, and answers whether each item is orderable. That's a custom route — your own logic, mounted with ",[3391,5610,5611],{},"app.post",[3382,5613,5614,5615,5618,5619,3409,5622,3409,5625,3409,5628,5631,5632,5635],{},"The job of a custom route's first few lines is ",[5532,5616,5617],{},"guarding the input",": reject bad requests with a clear 4xx before touching data. The router gives you ",[3391,5620,5621],{},"badRequest",[3391,5623,5624],{},"notFound",[3391,5626,5627],{},"forbidden",[3391,5629,5630],{},"conflict",", and the ",[3391,5633,5634],{},"HttpError"," class for exact status codes.",[3382,5637,5638,5639,5642,5643,5645,5646,5649],{},"Add this to ",[3391,5640,5641],{},"buildApp(db)"," in ",[3391,5644,3415],{},", after the ",[3391,5647,5648],{},"mountCrud"," calls:",[3482,5651,5653],{"className":5325,"code":5652,"filename":3415,"language":5328,"meta":3487,"style":3487},"const { createApp, mountCrud, badRequest } = require('@revenexx\u002Fapp-sdk\u002Frouter');\n\nconst num = (v) => Math.round(Number(v) * 1000) \u002F 1000;\n\n\u002F\u002F Guard + normalize the request body into a clean list of items.\nfunction parseItems(body) {\n  const items = Array.isArray(body?.items) ? body.items : null;\n  if (!items || items.length === 0) throw badRequest(\"'items' array is required\");\n  if (items.length > 200) throw badRequest('at most 200 items per call');\n  return items.map((raw, i) => {\n    if (!raw.product_id && !raw.sku) throw badRequest(`items[${i}] needs 'product_id' or 'sku'`);\n    return { product_id: raw.product_id ?? null, sku: raw.sku ?? null, quantity: num(raw.quantity ?? 1) };\n  });\n}\n\n\u002F\u002F Inside buildApp(db), after the mountCrud calls:\nmountCrud(app, db.stock_levels, { path: '\u002Flocations\u002Fstock', columns: ENTITIES.stock_levels.columns });\n\napp.post('\u002Flocations\u002Favailability', async (c) => {\n  const items = parseItems(c.body);\n\n  \u002F\u002F One read for enabled locations, one for stock — not a query per item.\n  const locations = await db.locations.list({ where: { enabled: true }, order: 'priority.asc', limit: 1000 });\n  const locationIds = new Set(locations.map((l) => l.id));\n  const allStock = (await db.stock_levels.list({ limit: 10000 })).filter((r) => locationIds.has(r.location_id));\n\n  const availability = items.map((item) => {\n    const rows = allStock.filter((r) =>\n      (item.product_id && r.product_id === item.product_id) ||\n      (item.sku && r.sku === item.sku));\n    const onHand = rows.reduce((sum, r) => sum + Number(r.on_hand), 0);\n    const reserved = rows.reduce((sum, r) => sum + Number(r.reserved), 0);\n    const available = num(onHand - reserved);\n    return {\n      product_id: item.product_id,\n      sku: item.sku,\n      requested: item.quantity,\n      available,\n      tracked: rows.length > 0,\n      orderable: rows.length > 0 ? available >= item.quantity : false,\n    };\n  });\n\n  return c.json({ availability });\n});\n",[3391,5654,5655,5698,5704,5758,5762,5767,5784,5830,5879,5916,5946,6004,6071,6080,6084,6088,6093,6150,6154,6189,6211,6215,6220,6289,6335,6408,6412,6440,6467,6501,6531,6589,6642,6667,6673,6688,6703,6718,6725,6744,6782,6787,6795,6799,6822],{"__ignoreMap":3487},[3491,5656,5657,5660,5662,5665,5667,5670,5672,5675,5677,5680,5683,5685,5688,5691,5693,5695],{"class":3493,"line":3494},[3491,5658,5659],{"class":3507},"const",[3491,5661,4052],{"class":3497},[3491,5663,5664],{"class":5339}," createApp",[3491,5666,3609],{"class":3497},[3491,5668,5669],{"class":5339}," mountCrud",[3491,5671,3609],{"class":3497},[3491,5673,5674],{"class":5339}," badRequest ",[3491,5676,5376],{"class":3497},[3491,5678,5679],{"class":3497}," =",[3491,5681,5682],{"class":4406}," require",[3491,5684,5352],{"class":5339},[3491,5686,5687],{"class":3497},"'",[3491,5689,5690],{"class":3520},"@revenexx\u002Fapp-sdk\u002Frouter",[3491,5692,5687],{"class":3497},[3491,5694,5379],{"class":5339},[3491,5696,5697],{"class":3497},";\n",[3491,5699,5700],{"class":3493,"line":3501},[3491,5701,5703],{"emptyLinePlaceholder":5702},true,"\n",[3491,5705,5706,5708,5711,5714,5717,5721,5723,5726,5729,5731,5734,5736,5739,5742,5745,5748,5751,5754,5756],{"class":3493,"line":3529},[3491,5707,5659],{"class":3507},[3491,5709,5710],{"class":5339}," num ",[3491,5712,5713],{"class":3497},"=",[3491,5715,5716],{"class":3497}," (",[3491,5718,5720],{"class":5719},"sHdIc","v",[3491,5722,5379],{"class":3497},[3491,5724,5725],{"class":3507}," =>",[3491,5727,5728],{"class":5339}," Math",[3491,5730,4944],{"class":3497},[3491,5732,5733],{"class":4406},"round",[3491,5735,5352],{"class":5339},[3491,5737,5738],{"class":4406},"Number",[3491,5740,5741],{"class":5339},"(v) ",[3491,5743,5744],{"class":3497},"*",[3491,5746,5747],{"class":3565}," 1000",[3491,5749,5750],{"class":5339},") ",[3491,5752,5753],{"class":3497},"\u002F",[3491,5755,5747],{"class":3565},[3491,5757,5697],{"class":3497},[3491,5759,5760],{"class":3493,"line":3544},[3491,5761,5703],{"emptyLinePlaceholder":5702},[3491,5763,5764],{"class":3493,"line":3559},[3491,5765,5766],{"class":5385},"\u002F\u002F Guard + normalize the request body into a clean list of items.\n",[3491,5768,5769,5772,5775,5777,5780,5782],{"class":3493,"line":3575},[3491,5770,5771],{"class":3507},"function",[3491,5773,5774],{"class":4406}," parseItems",[3491,5776,5352],{"class":3497},[3491,5778,5779],{"class":5719},"body",[3491,5781,5379],{"class":3497},[3491,5783,3541],{"class":3497},[3491,5785,5786,5789,5792,5794,5797,5799,5802,5804,5806,5809,5812,5814,5817,5820,5822,5824,5827],{"class":3493,"line":3643},[3491,5787,5788],{"class":3507},"  const",[3491,5790,5791],{"class":5339}," items",[3491,5793,5679],{"class":3497},[3491,5795,5796],{"class":5339}," Array",[3491,5798,4944],{"class":3497},[3491,5800,5801],{"class":4406},"isArray",[3491,5803,5352],{"class":3581},[3491,5805,5779],{"class":5339},[3491,5807,5808],{"class":3497},"?.",[3491,5810,5811],{"class":5339},"items",[3491,5813,5750],{"class":3581},[3491,5815,5816],{"class":3497},"?",[3491,5818,5819],{"class":5339}," body",[3491,5821,4944],{"class":3497},[3491,5823,5811],{"class":5339},[3491,5825,5826],{"class":3497}," :",[3491,5828,5829],{"class":3497}," null;\n",[3491,5831,5832,5835,5837,5840,5842,5845,5847,5849,5852,5855,5858,5860,5863,5866,5868,5870,5873,5875,5877],{"class":3493,"line":3703},[3491,5833,5834],{"class":5335},"  if",[3491,5836,5716],{"class":3581},[3491,5838,5839],{"class":3497},"!",[3491,5841,5811],{"class":5339},[3491,5843,5844],{"class":3497}," ||",[3491,5846,5791],{"class":5339},[3491,5848,4944],{"class":3497},[3491,5850,5851],{"class":5339},"length",[3491,5853,5854],{"class":3497}," ===",[3491,5856,5857],{"class":3565}," 0",[3491,5859,5750],{"class":3581},[3491,5861,5862],{"class":5335},"throw",[3491,5864,5865],{"class":4406}," badRequest",[3491,5867,5352],{"class":3581},[3491,5869,3511],{"class":3497},[3491,5871,5872],{"class":3520},"'items' array is required",[3491,5874,3511],{"class":3497},[3491,5876,5379],{"class":3581},[3491,5878,5697],{"class":3497},[3491,5880,5881,5883,5885,5887,5889,5891,5894,5897,5899,5901,5903,5905,5907,5910,5912,5914],{"class":3493,"line":3760},[3491,5882,5834],{"class":5335},[3491,5884,5716],{"class":3581},[3491,5886,5811],{"class":5339},[3491,5888,4944],{"class":3497},[3491,5890,5851],{"class":5339},[3491,5892,5893],{"class":3497}," >",[3491,5895,5896],{"class":3565}," 200",[3491,5898,5750],{"class":3581},[3491,5900,5862],{"class":5335},[3491,5902,5865],{"class":4406},[3491,5904,5352],{"class":3581},[3491,5906,5687],{"class":3497},[3491,5908,5909],{"class":3520},"at most 200 items per call",[3491,5911,5687],{"class":3497},[3491,5913,5379],{"class":3581},[3491,5915,5697],{"class":3497},[3491,5917,5918,5921,5923,5925,5928,5930,5932,5935,5937,5940,5942,5944],{"class":3493,"line":3791},[3491,5919,5920],{"class":5335},"  return",[3491,5922,5791],{"class":5339},[3491,5924,4944],{"class":3497},[3491,5926,5927],{"class":4406},"map",[3491,5929,5352],{"class":3581},[3491,5931,5352],{"class":3497},[3491,5933,5934],{"class":5719},"raw",[3491,5936,3609],{"class":3497},[3491,5938,5939],{"class":5719}," i",[3491,5941,5379],{"class":3497},[3491,5943,5725],{"class":3507},[3491,5945,3541],{"class":3497},[3491,5947,5948,5951,5953,5955,5957,5959,5961,5964,5967,5969,5971,5973,5975,5977,5979,5981,5984,5987,5990,5993,5995,5998,6000,6002],{"class":3493,"line":3864},[3491,5949,5950],{"class":5335},"    if",[3491,5952,5716],{"class":3581},[3491,5954,5839],{"class":3497},[3491,5956,5934],{"class":5339},[3491,5958,4944],{"class":3497},[3491,5960,3471],{"class":5339},[3491,5962,5963],{"class":3497}," &&",[3491,5965,5966],{"class":3497}," !",[3491,5968,5934],{"class":5339},[3491,5970,4944],{"class":3497},[3491,5972,3475],{"class":5339},[3491,5974,5750],{"class":3581},[3491,5976,5862],{"class":5335},[3491,5978,5865],{"class":4406},[3491,5980,5352],{"class":3581},[3491,5982,5983],{"class":3497},"`",[3491,5985,5986],{"class":3520},"items[",[3491,5988,5989],{"class":3497},"${",[3491,5991,5992],{"class":5339},"i",[3491,5994,5376],{"class":3497},[3491,5996,5997],{"class":3520},"] needs 'product_id' or 'sku'",[3491,5999,5983],{"class":3497},[3491,6001,5379],{"class":3581},[3491,6003,5697],{"class":3497},[3491,6005,6006,6009,6011,6014,6016,6019,6021,6023,6026,6029,6032,6034,6036,6038,6040,6042,6044,6047,6049,6052,6054,6056,6058,6061,6063,6066,6068],{"class":3493,"line":3923},[3491,6007,6008],{"class":5335},"    return",[3491,6010,4052],{"class":3497},[3491,6012,6013],{"class":3581}," product_id",[3491,6015,3514],{"class":3497},[3491,6017,6018],{"class":5339}," raw",[3491,6020,4944],{"class":3497},[3491,6022,3471],{"class":5339},[3491,6024,6025],{"class":3497}," ??",[3491,6027,6028],{"class":3497}," null,",[3491,6030,6031],{"class":3581}," sku",[3491,6033,3514],{"class":3497},[3491,6035,6018],{"class":5339},[3491,6037,4944],{"class":3497},[3491,6039,3475],{"class":5339},[3491,6041,6025],{"class":3497},[3491,6043,6028],{"class":3497},[3491,6045,6046],{"class":3581}," quantity",[3491,6048,3514],{"class":3497},[3491,6050,6051],{"class":4406}," num",[3491,6053,5352],{"class":3581},[3491,6055,5934],{"class":5339},[3491,6057,4944],{"class":3497},[3491,6059,6060],{"class":5339},"quantity",[3491,6062,6025],{"class":3497},[3491,6064,6065],{"class":3565}," 1",[3491,6067,5750],{"class":3581},[3491,6069,6070],{"class":3497},"};\n",[3491,6072,6073,6076,6078],{"class":3493,"line":3982},[3491,6074,6075],{"class":3497},"  }",[3491,6077,5379],{"class":3581},[3491,6079,5697],{"class":3497},[3491,6081,6082],{"class":3493,"line":4011},[3491,6083,4937],{"class":3497},[3491,6085,6086],{"class":3493,"line":4040},[3491,6087,5703],{"emptyLinePlaceholder":5702},[3491,6089,6090],{"class":3493,"line":4099},[3491,6091,6092],{"class":5385},"\u002F\u002F Inside buildApp(db), after the mountCrud calls:\n",[3491,6094,6095,6097,6100,6102,6104,6106,6108,6110,6112,6115,6117,6120,6123,6125,6127,6130,6132,6135,6137,6139,6141,6144,6146,6148],{"class":3493,"line":4156},[3491,6096,5648],{"class":4406},[3491,6098,6099],{"class":5339},"(app",[3491,6101,3609],{"class":3497},[3491,6103,5340],{"class":5339},[3491,6105,4944],{"class":3497},[3491,6107,3393],{"class":5339},[3491,6109,3609],{"class":3497},[3491,6111,4052],{"class":3497},[3491,6113,6114],{"class":3581}," path",[3491,6116,3514],{"class":3497},[3491,6118,6119],{"class":3497}," '",[3491,6121,6122],{"class":3520},"\u002Flocations\u002Fstock",[3491,6124,5687],{"class":3497},[3491,6126,3609],{"class":3497},[3491,6128,6129],{"class":3581}," columns",[3491,6131,3514],{"class":3497},[3491,6133,6134],{"class":5339}," ENTITIES",[3491,6136,4944],{"class":3497},[3491,6138,3393],{"class":5339},[3491,6140,4944],{"class":3497},[3491,6142,6143],{"class":5339},"columns ",[3491,6145,5376],{"class":3497},[3491,6147,5379],{"class":5339},[3491,6149,5697],{"class":3497},[3491,6151,6152],{"class":3493,"line":4162},[3491,6153,5703],{"emptyLinePlaceholder":5702},[3491,6155,6156,6159,6161,6164,6166,6168,6171,6173,6175,6178,6180,6183,6185,6187],{"class":3493,"line":4177},[3491,6157,6158],{"class":5339},"app",[3491,6160,4944],{"class":3497},[3491,6162,6163],{"class":4406},"post",[3491,6165,5352],{"class":5339},[3491,6167,5687],{"class":3497},[3491,6169,6170],{"class":3520},"\u002Flocations\u002Favailability",[3491,6172,5687],{"class":3497},[3491,6174,3609],{"class":3497},[3491,6176,6177],{"class":3507}," async",[3491,6179,5716],{"class":3497},[3491,6181,6182],{"class":5719},"c",[3491,6184,5379],{"class":3497},[3491,6186,5725],{"class":3507},[3491,6188,3541],{"class":3497},[3491,6190,6191,6193,6195,6197,6199,6201,6203,6205,6207,6209],{"class":3493,"line":4225},[3491,6192,5788],{"class":3507},[3491,6194,5791],{"class":5339},[3491,6196,5679],{"class":3497},[3491,6198,5774],{"class":4406},[3491,6200,5352],{"class":3581},[3491,6202,6182],{"class":5339},[3491,6204,4944],{"class":3497},[3491,6206,5779],{"class":5339},[3491,6208,5379],{"class":3581},[3491,6210,5697],{"class":3497},[3491,6212,6213],{"class":3493,"line":4251},[3491,6214,5703],{"emptyLinePlaceholder":5702},[3491,6216,6217],{"class":3493,"line":4257},[3491,6218,6219],{"class":5385},"  \u002F\u002F One read for enabled locations, one for stock — not a query per item.\n",[3491,6221,6222,6224,6227,6229,6232,6234,6236,6238,6240,6242,6244,6246,6248,6250,6252,6255,6257,6260,6263,6265,6267,6269,6272,6274,6276,6278,6280,6282,6285,6287],{"class":3493,"line":4263},[3491,6223,5788],{"class":3507},[3491,6225,6226],{"class":5339}," locations",[3491,6228,5679],{"class":3497},[3491,6230,6231],{"class":5335}," await",[3491,6233,5340],{"class":5339},[3491,6235,4944],{"class":3497},[3491,6237,3397],{"class":5339},[3491,6239,4944],{"class":3497},[3491,6241,5349],{"class":4406},[3491,6243,5352],{"class":3581},[3491,6245,5355],{"class":3497},[3491,6247,5358],{"class":3581},[3491,6249,3514],{"class":3497},[3491,6251,4052],{"class":3497},[3491,6253,6254],{"class":3581}," enabled",[3491,6256,3514],{"class":3497},[3491,6258,4220],{"class":6259},"sfNiH",[3491,6261,6262],{"class":3497}," },",[3491,6264,5363],{"class":3581},[3491,6266,3514],{"class":3497},[3491,6268,6119],{"class":3497},[3491,6270,6271],{"class":3520},"priority.asc",[3491,6273,5687],{"class":3497},[3491,6275,3609],{"class":3497},[3491,6277,5368],{"class":3581},[3491,6279,3514],{"class":3497},[3491,6281,5747],{"class":3565},[3491,6283,6284],{"class":3497}," }",[3491,6286,5379],{"class":3581},[3491,6288,5697],{"class":3497},[3491,6290,6291,6293,6296,6298,6301,6304,6306,6308,6310,6312,6314,6316,6319,6321,6323,6326,6328,6330,6333],{"class":3493,"line":4276},[3491,6292,5788],{"class":3507},[3491,6294,6295],{"class":5339}," locationIds",[3491,6297,5679],{"class":3497},[3491,6299,6300],{"class":3497}," new",[3491,6302,6303],{"class":4406}," Set",[3491,6305,5352],{"class":3581},[3491,6307,3397],{"class":5339},[3491,6309,4944],{"class":3497},[3491,6311,5927],{"class":4406},[3491,6313,5352],{"class":3581},[3491,6315,5352],{"class":3497},[3491,6317,6318],{"class":5719},"l",[3491,6320,5379],{"class":3497},[3491,6322,5725],{"class":3507},[3491,6324,6325],{"class":5339}," l",[3491,6327,4944],{"class":3497},[3491,6329,3582],{"class":5339},[3491,6331,6332],{"class":3581},"))",[3491,6334,5697],{"class":3497},[3491,6336,6337,6339,6342,6344,6346,6348,6350,6352,6354,6356,6358,6360,6362,6364,6366,6369,6371,6373,6375,6378,6380,6382,6385,6387,6389,6391,6393,6396,6398,6400,6402,6404,6406],{"class":3493,"line":4289},[3491,6338,5788],{"class":3507},[3491,6340,6341],{"class":5339}," allStock",[3491,6343,5679],{"class":3497},[3491,6345,5716],{"class":3581},[3491,6347,5336],{"class":5335},[3491,6349,5340],{"class":5339},[3491,6351,4944],{"class":3497},[3491,6353,3393],{"class":5339},[3491,6355,4944],{"class":3497},[3491,6357,5349],{"class":4406},[3491,6359,5352],{"class":3581},[3491,6361,5355],{"class":3497},[3491,6363,5368],{"class":3581},[3491,6365,3514],{"class":3497},[3491,6367,6368],{"class":3565}," 10000",[3491,6370,6284],{"class":3497},[3491,6372,6332],{"class":3581},[3491,6374,4944],{"class":3497},[3491,6376,6377],{"class":4406},"filter",[3491,6379,5352],{"class":3581},[3491,6381,5352],{"class":3497},[3491,6383,6384],{"class":5719},"r",[3491,6386,5379],{"class":3497},[3491,6388,5725],{"class":3507},[3491,6390,6295],{"class":5339},[3491,6392,4944],{"class":3497},[3491,6394,6395],{"class":4406},"has",[3491,6397,5352],{"class":3581},[3491,6399,6384],{"class":5339},[3491,6401,4944],{"class":3497},[3491,6403,3459],{"class":5339},[3491,6405,6332],{"class":3581},[3491,6407,5697],{"class":3497},[3491,6409,6410],{"class":3493,"line":4344},[3491,6411,5703],{"emptyLinePlaceholder":5702},[3491,6413,6414,6416,6419,6421,6423,6425,6427,6429,6431,6434,6436,6438],{"class":3493,"line":4357},[3491,6415,5788],{"class":3507},[3491,6417,6418],{"class":5339}," availability",[3491,6420,5679],{"class":3497},[3491,6422,5791],{"class":5339},[3491,6424,4944],{"class":3497},[3491,6426,5927],{"class":4406},[3491,6428,5352],{"class":3581},[3491,6430,5352],{"class":3497},[3491,6432,6433],{"class":5719},"item",[3491,6435,5379],{"class":3497},[3491,6437,5725],{"class":3507},[3491,6439,3541],{"class":3497},[3491,6441,6442,6445,6448,6450,6452,6454,6456,6458,6460,6462,6464],{"class":3493,"line":4377},[3491,6443,6444],{"class":3507},"    const",[3491,6446,6447],{"class":5339}," rows",[3491,6449,5679],{"class":3497},[3491,6451,6341],{"class":5339},[3491,6453,4944],{"class":3497},[3491,6455,6377],{"class":4406},[3491,6457,5352],{"class":3581},[3491,6459,5352],{"class":3497},[3491,6461,6384],{"class":5719},[3491,6463,5379],{"class":3497},[3491,6465,6466],{"class":3507}," =>\n",[3491,6468,6469,6472,6474,6476,6478,6480,6483,6485,6487,6489,6492,6494,6496,6498],{"class":3493,"line":4391},[3491,6470,6471],{"class":3581},"      (",[3491,6473,6433],{"class":5339},[3491,6475,4944],{"class":3497},[3491,6477,3471],{"class":5339},[3491,6479,5963],{"class":3497},[3491,6481,6482],{"class":5339}," r",[3491,6484,4944],{"class":3497},[3491,6486,3471],{"class":5339},[3491,6488,5854],{"class":3497},[3491,6490,6491],{"class":5339}," item",[3491,6493,4944],{"class":3497},[3491,6495,3471],{"class":5339},[3491,6497,5750],{"class":3581},[3491,6499,6500],{"class":3497},"||\n",[3491,6502,6503,6505,6507,6509,6511,6513,6515,6517,6519,6521,6523,6525,6527,6529],{"class":3493,"line":4457},[3491,6504,6471],{"class":3581},[3491,6506,6433],{"class":5339},[3491,6508,4944],{"class":3497},[3491,6510,3475],{"class":5339},[3491,6512,5963],{"class":3497},[3491,6514,6482],{"class":5339},[3491,6516,4944],{"class":3497},[3491,6518,3475],{"class":5339},[3491,6520,5854],{"class":3497},[3491,6522,6491],{"class":5339},[3491,6524,4944],{"class":3497},[3491,6526,3475],{"class":5339},[3491,6528,6332],{"class":3581},[3491,6530,5697],{"class":3497},[3491,6532,6533,6535,6538,6540,6542,6544,6547,6549,6551,6554,6556,6558,6560,6562,6565,6568,6571,6573,6575,6577,6579,6581,6583,6585,6587],{"class":3493,"line":4463},[3491,6534,6444],{"class":3507},[3491,6536,6537],{"class":5339}," onHand",[3491,6539,5679],{"class":3497},[3491,6541,6447],{"class":5339},[3491,6543,4944],{"class":3497},[3491,6545,6546],{"class":4406},"reduce",[3491,6548,5352],{"class":3581},[3491,6550,5352],{"class":3497},[3491,6552,6553],{"class":5719},"sum",[3491,6555,3609],{"class":3497},[3491,6557,6482],{"class":5719},[3491,6559,5379],{"class":3497},[3491,6561,5725],{"class":3507},[3491,6563,6564],{"class":5339}," sum",[3491,6566,6567],{"class":3497}," +",[3491,6569,6570],{"class":4406}," Number",[3491,6572,5352],{"class":3581},[3491,6574,6384],{"class":5339},[3491,6576,4944],{"class":3497},[3491,6578,4526],{"class":5339},[3491,6580,5379],{"class":3581},[3491,6582,3609],{"class":3497},[3491,6584,5857],{"class":3565},[3491,6586,5379],{"class":3581},[3491,6588,5697],{"class":3497},[3491,6590,6591,6593,6596,6598,6600,6602,6604,6606,6608,6610,6612,6614,6616,6618,6620,6622,6624,6626,6628,6630,6632,6634,6636,6638,6640],{"class":3493,"line":4492},[3491,6592,6444],{"class":3507},[3491,6594,6595],{"class":5339}," reserved",[3491,6597,5679],{"class":3497},[3491,6599,6447],{"class":5339},[3491,6601,4944],{"class":3497},[3491,6603,6546],{"class":4406},[3491,6605,5352],{"class":3581},[3491,6607,5352],{"class":3497},[3491,6609,6553],{"class":5719},[3491,6611,3609],{"class":3497},[3491,6613,6482],{"class":5719},[3491,6615,5379],{"class":3497},[3491,6617,5725],{"class":3507},[3491,6619,6564],{"class":5339},[3491,6621,6567],{"class":3497},[3491,6623,6570],{"class":4406},[3491,6625,5352],{"class":3581},[3491,6627,6384],{"class":5339},[3491,6629,4944],{"class":3497},[3491,6631,4600],{"class":5339},[3491,6633,5379],{"class":3581},[3491,6635,3609],{"class":3497},[3491,6637,5857],{"class":3565},[3491,6639,5379],{"class":3581},[3491,6641,5697],{"class":3497},[3491,6643,6644,6646,6649,6651,6653,6655,6658,6661,6663,6665],{"class":3493,"line":4521},[3491,6645,6444],{"class":3507},[3491,6647,6648],{"class":5339}," available",[3491,6650,5679],{"class":3497},[3491,6652,6051],{"class":4406},[3491,6654,5352],{"class":3581},[3491,6656,6657],{"class":5339},"onHand",[3491,6659,6660],{"class":3497}," -",[3491,6662,6595],{"class":5339},[3491,6664,5379],{"class":3581},[3491,6666,5697],{"class":3497},[3491,6668,6669,6671],{"class":3493,"line":4595},[3491,6670,6008],{"class":5335},[3491,6672,3541],{"class":3497},[3491,6674,6675,6678,6680,6682,6684,6686],{"class":3493,"line":4668},[3491,6676,6677],{"class":3581},"      product_id",[3491,6679,3514],{"class":3497},[3491,6681,6491],{"class":5339},[3491,6683,4944],{"class":3497},[3491,6685,3471],{"class":5339},[3491,6687,3526],{"class":3497},[3491,6689,6690,6693,6695,6697,6699,6701],{"class":3493,"line":4723},[3491,6691,6692],{"class":3581},"      sku",[3491,6694,3514],{"class":3497},[3491,6696,6491],{"class":5339},[3491,6698,4944],{"class":3497},[3491,6700,3475],{"class":5339},[3491,6702,3526],{"class":3497},[3491,6704,6705,6708,6710,6712,6714,6716],{"class":3493,"line":4778},[3491,6706,6707],{"class":3581},"      requested",[3491,6709,3514],{"class":3497},[3491,6711,6491],{"class":5339},[3491,6713,4944],{"class":3497},[3491,6715,6060],{"class":5339},[3491,6717,3526],{"class":3497},[3491,6719,6720,6723],{"class":3493,"line":4783},[3491,6721,6722],{"class":5339},"      available",[3491,6724,3526],{"class":3497},[3491,6726,6727,6730,6732,6734,6736,6738,6740,6742],{"class":3493,"line":4796},[3491,6728,6729],{"class":3581},"      tracked",[3491,6731,3514],{"class":3497},[3491,6733,6447],{"class":5339},[3491,6735,4944],{"class":3497},[3491,6737,5851],{"class":5339},[3491,6739,5893],{"class":3497},[3491,6741,5857],{"class":3565},[3491,6743,3526],{"class":3497},[3491,6745,6746,6749,6751,6753,6755,6757,6759,6761,6764,6766,6769,6771,6773,6775,6777,6780],{"class":3493,"line":4807},[3491,6747,6748],{"class":3581},"      orderable",[3491,6750,3514],{"class":3497},[3491,6752,6447],{"class":5339},[3491,6754,4944],{"class":3497},[3491,6756,5851],{"class":5339},[3491,6758,5893],{"class":3497},[3491,6760,5857],{"class":3565},[3491,6762,6763],{"class":3497}," ?",[3491,6765,6648],{"class":5339},[3491,6767,6768],{"class":3497}," >=",[3491,6770,6491],{"class":5339},[3491,6772,4944],{"class":3497},[3491,6774,6060],{"class":5339},[3491,6776,5826],{"class":3497},[3491,6778,6779],{"class":6259}," false",[3491,6781,3526],{"class":3497},[3491,6783,6784],{"class":3493,"line":4813},[3491,6785,6786],{"class":3497},"    };\n",[3491,6788,6789,6791,6793],{"class":3493,"line":4826},[3491,6790,6075],{"class":3497},[3491,6792,5379],{"class":3581},[3491,6794,5697],{"class":3497},[3491,6796,6797],{"class":3493,"line":4851},[3491,6798,5703],{"emptyLinePlaceholder":5702},[3491,6800,6801,6803,6806,6808,6810,6812,6814,6816,6818,6820],{"class":3493,"line":4884},[3491,6802,5920],{"class":5335},[3491,6804,6805],{"class":5339}," c",[3491,6807,4944],{"class":3497},[3491,6809,3486],{"class":4406},[3491,6811,5352],{"class":3581},[3491,6813,5355],{"class":3497},[3491,6815,6418],{"class":5339},[3491,6817,6284],{"class":3497},[3491,6819,5379],{"class":3581},[3491,6821,5697],{"class":3497},[3491,6823,6824,6826,6828],{"class":3493,"line":4917},[3491,6825,5376],{"class":3497},[3491,6827,5379],{"class":5339},[3491,6829,5697],{"class":3497},[3382,6831,6832,6834,6835,6838,6839,6842,6843,6845],{},[3391,6833,6122],{}," is mounted beside the ",[3391,6836,6837],{},"\u002Flocations\u002F{id}"," route from the first tutorial. This page does not document how the router ranks a literal segment against ",[3391,6840,6841],{},"{id}"," (as of 2026-10). The tests in step 5 call ",[3391,6844,6122],{}," directly, which is how you confirm it on your SDK version.",[3382,6847,6848],{},"Two patterns worth keeping:",[5526,6850,6851,6864],{},[5529,6852,6853,6856,6857,6860,6861,6863],{},[5532,6854,6855],{},"Guard first, work second."," ",[3391,6858,6859],{},"parseItems"," throws a ",[3391,6862,5621],{}," for every shape of bad input. By the time the handler runs, the data is clean.",[5529,6865,6866,6869,6870,6873],{},[5532,6867,6868],{},"Read in bulk, not per item."," The handler issues one query for locations and one for stock, then matches in memory. A query per item (an N+1 loop) is the classic latency trap. When a handler needs data from several sources, run the reads in parallel with ",[3391,6871,6872],{},"Promise.all"," rather than awaiting them back to back.",[6875,6876,6877,6896,6911],"note",{},[3382,6878,6879,6882,6883,3443,6885,6887,6888,6891,6892,6895],{},[5532,6880,6881],{},"This keeps stock as plain columns so the tutorial stays short."," The CRUD mount lets any caller set ",[3391,6884,4526],{},[3391,6886,4600],{}," directly. That's fine for learning the data client, but not for real stock. A production inventory treats ",[5532,6889,6890],{},"every stock change as a movement",", and the platform's own ",[3386,6893,6894],{"href":1707},"Inventories App"," does exactly this:",[5526,6897,6898,6905,6908],{},[5529,6899,6900,3443,6902,6904],{},[3391,6901,4526],{},[3391,6903,4600],{}," are left out of the create and update bodies.",[5529,6906,6907],{},"They change only through dedicated routes (goods in, correction, reserve, release, commit, restock), and each of those writes a movement row to a ledger.",[5529,6909,6910],{},"That way a sale can be told apart from a correction, and a correction can refuse to go below what is reserved.",[3382,6912,6913],{},"If your App tracks stock a merchant sells from, build it that way from the start.",[3422,6915,6917],{"id":6916},"_4-declare-the-new-capabilities","4. Declare the new capabilities",[3382,6919,6920,6921,6923],{},"The gateway only exposes capabilities your manifest declares, so add the new routes to ",[3391,6922,3419],{},". A custom route declares its request and response schemas; the gateway validates live requests against the request schema, so it must match exactly what your handler requires — never stricter.",[3482,6925,6927],{"className":5325,"code":6926,"filename":3419,"language":5328,"meta":3487,"style":3487},"const AVAILABILITY_ITEM = {\n  title: 'AvailabilityItem',\n  type: 'object',\n  properties: {\n    product_id: { type: ['string', 'null'], format: 'uuid' },\n    sku: { type: ['string', 'null'] },\n    quantity: { type: ['number', 'null'], description: 'Requested quantity (default 1).' },\n  },\n  anyOf: [{ required: ['product_id'] }, { required: ['sku'] }],\n};\n\nconst AVAILABILITY_REQUEST = {\n  title: 'AvailabilityRequest',\n  type: 'object',\n  required: ['items'],\n  properties: {\n    items: { type: 'array', items: AVAILABILITY_ITEM, minItems: 1, maxItems: 200 },\n  },\n};\n\nconst AVAILABILITY_RESPONSE = {\n  type: 'object',\n  properties: {\n    availability: {\n      type: 'array',\n      items: {\n        title: 'ItemAvailability',\n        type: 'object',\n        properties: {\n          product_id: { type: ['string', 'null'], format: 'uuid' },\n          sku: { type: ['string', 'null'] },\n          requested: { type: 'number' },\n          available: { type: 'number' },\n          tracked: { type: 'boolean' },\n          orderable: { type: 'boolean' },\n        },\n      },\n    },\n  },\n};\n\n\u002F\u002F Add to the capabilities array:\n\u002F\u002F   def('locations.stock.list',   'List stock levels', { method: 'GET',  path: '\u002Flocations\u002Fstock' },       { parameters: PAGINATION_PARAMS, response: pageOf(STOCK) }),\n\u002F\u002F   def('locations.stock.get',    'Read one stock level', { method: 'GET',  path: '\u002Flocations\u002Fstock\u002F{id}' }, { response: STOCK }),\n\u002F\u002F   def('locations.stock.create', 'Create a stock level', { method: 'POST', path: '\u002Flocations\u002Fstock' },      { request: STOCK_INPUT, response: STOCK }),\n\u002F\u002F   def('locations.stock.update', 'Update a stock level', { method: 'PUT',  path: '\u002Flocations\u002Fstock\u002F{id}' }, { request: STOCK_INPUT, response: STOCK }),\n\u002F\u002F   def('locations.stock.delete', 'Delete a stock level', { method: 'DELETE', path: '\u002Flocations\u002Fstock\u002F{id}' }, { response: DELETED }),\n\u002F\u002F   def('locations.availability', 'Batch availability across locations', { method: 'POST', path: '\u002Flocations\u002Favailability' }, { request: AVAILABILITY_REQUEST, response: AVAILABILITY_RESPONSE }),\n",[3391,6928,6929,6940,6956,6972,6981,7029,7064,7112,7117,7168,7172,7176,7187,7202,7216,7235,7243,7292,7296,7300,7304,7315,7329,7337,7346,7361,7370,7386,7401,7410,7455,7488,7509,7530,7551,7572,7576,7580,7584,7588,7592,7596,7601,7606,7611,7616,7621,7626],{"__ignoreMap":3487},[3491,6930,6931,6933,6936,6938],{"class":3493,"line":3494},[3491,6932,5659],{"class":3507},[3491,6934,6935],{"class":5339}," AVAILABILITY_ITEM ",[3491,6937,5713],{"class":3497},[3491,6939,3541],{"class":3497},[3491,6941,6942,6945,6947,6949,6952,6954],{"class":3493,"line":3501},[3491,6943,6944],{"class":3581},"  title",[3491,6946,3514],{"class":3497},[3491,6948,6119],{"class":3497},[3491,6950,6951],{"class":3520},"AvailabilityItem",[3491,6953,5687],{"class":3497},[3491,6955,3526],{"class":3497},[3491,6957,6958,6961,6963,6965,6968,6970],{"class":3493,"line":3529},[3491,6959,6960],{"class":3581},"  type",[3491,6962,3514],{"class":3497},[3491,6964,6119],{"class":3497},[3491,6966,6967],{"class":3520},"object",[3491,6969,5687],{"class":3497},[3491,6971,3526],{"class":3497},[3491,6973,6974,6977,6979],{"class":3493,"line":3544},[3491,6975,6976],{"class":3581},"  properties",[3491,6978,3514],{"class":3497},[3491,6980,3541],{"class":3497},[3491,6982,6983,6986,6988,6990,6993,6995,6997,6999,7002,7004,7006,7008,7010,7012,7014,7016,7019,7021,7023,7025,7027],{"class":3493,"line":3559},[3491,6984,6985],{"class":3581},"    product_id",[3491,6987,3514],{"class":3497},[3491,6989,4052],{"class":3497},[3491,6991,6992],{"class":3581}," type",[3491,6994,3514],{"class":3497},[3491,6996,4190],{"class":5339},[3491,6998,5687],{"class":3497},[3491,7000,7001],{"class":3520},"string",[3491,7003,5687],{"class":3497},[3491,7005,3609],{"class":3497},[3491,7007,6119],{"class":3497},[3491,7009,5597],{"class":3520},[3491,7011,5687],{"class":3497},[3491,7013,4246],{"class":5339},[3491,7015,3609],{"class":3497},[3491,7017,7018],{"class":3581}," format",[3491,7020,3514],{"class":3497},[3491,7022,6119],{"class":3497},[3491,7024,3604],{"class":3520},[3491,7026,5687],{"class":3497},[3491,7028,3640],{"class":3497},[3491,7030,7031,7034,7036,7038,7040,7042,7044,7046,7048,7050,7052,7054,7056,7058,7061],{"class":3493,"line":3575},[3491,7032,7033],{"class":3581},"    sku",[3491,7035,3514],{"class":3497},[3491,7037,4052],{"class":3497},[3491,7039,6992],{"class":3581},[3491,7041,3514],{"class":3497},[3491,7043,4190],{"class":5339},[3491,7045,5687],{"class":3497},[3491,7047,7001],{"class":3520},[3491,7049,5687],{"class":3497},[3491,7051,3609],{"class":3497},[3491,7053,6119],{"class":3497},[3491,7055,5597],{"class":3520},[3491,7057,5687],{"class":3497},[3491,7059,7060],{"class":5339},"] ",[3491,7062,7063],{"class":3497},"},\n",[3491,7065,7066,7069,7071,7073,7075,7077,7079,7081,7084,7086,7088,7090,7092,7094,7096,7098,7101,7103,7105,7108,7110],{"class":3493,"line":3643},[3491,7067,7068],{"class":3581},"    quantity",[3491,7070,3514],{"class":3497},[3491,7072,4052],{"class":3497},[3491,7074,6992],{"class":3581},[3491,7076,3514],{"class":3497},[3491,7078,4190],{"class":5339},[3491,7080,5687],{"class":3497},[3491,7082,7083],{"class":3520},"number",[3491,7085,5687],{"class":3497},[3491,7087,3609],{"class":3497},[3491,7089,6119],{"class":3497},[3491,7091,5597],{"class":3520},[3491,7093,5687],{"class":3497},[3491,7095,4246],{"class":5339},[3491,7097,3609],{"class":3497},[3491,7099,7100],{"class":3581}," description",[3491,7102,3514],{"class":3497},[3491,7104,6119],{"class":3497},[3491,7106,7107],{"class":3520},"Requested quantity (default 1).",[3491,7109,5687],{"class":3497},[3491,7111,3640],{"class":3497},[3491,7113,7114],{"class":3493,"line":3703},[3491,7115,7116],{"class":3497},"  },\n",[3491,7118,7119,7122,7124,7126,7128,7131,7133,7135,7137,7139,7141,7143,7146,7148,7150,7152,7154,7156,7158,7160,7162,7164,7166],{"class":3493,"line":3760},[3491,7120,7121],{"class":3581},"  anyOf",[3491,7123,3514],{"class":3497},[3491,7125,4190],{"class":5339},[3491,7127,5355],{"class":3497},[3491,7129,7130],{"class":3581}," required",[3491,7132,3514],{"class":3497},[3491,7134,4190],{"class":5339},[3491,7136,5687],{"class":3497},[3491,7138,3471],{"class":3520},[3491,7140,5687],{"class":3497},[3491,7142,7060],{"class":5339},[3491,7144,7145],{"class":3497},"},",[3491,7147,4052],{"class":3497},[3491,7149,7130],{"class":3581},[3491,7151,3514],{"class":3497},[3491,7153,4190],{"class":5339},[3491,7155,5687],{"class":3497},[3491,7157,3475],{"class":3520},[3491,7159,5687],{"class":3497},[3491,7161,7060],{"class":5339},[3491,7163,5376],{"class":3497},[3491,7165,4246],{"class":5339},[3491,7167,3526],{"class":3497},[3491,7169,7170],{"class":3493,"line":3791},[3491,7171,6070],{"class":3497},[3491,7173,7174],{"class":3493,"line":3864},[3491,7175,5703],{"emptyLinePlaceholder":5702},[3491,7177,7178,7180,7183,7185],{"class":3493,"line":3923},[3491,7179,5659],{"class":3507},[3491,7181,7182],{"class":5339}," AVAILABILITY_REQUEST ",[3491,7184,5713],{"class":3497},[3491,7186,3541],{"class":3497},[3491,7188,7189,7191,7193,7195,7198,7200],{"class":3493,"line":3982},[3491,7190,6944],{"class":3581},[3491,7192,3514],{"class":3497},[3491,7194,6119],{"class":3497},[3491,7196,7197],{"class":3520},"AvailabilityRequest",[3491,7199,5687],{"class":3497},[3491,7201,3526],{"class":3497},[3491,7203,7204,7206,7208,7210,7212,7214],{"class":3493,"line":4011},[3491,7205,6960],{"class":3581},[3491,7207,3514],{"class":3497},[3491,7209,6119],{"class":3497},[3491,7211,6967],{"class":3520},[3491,7213,5687],{"class":3497},[3491,7215,3526],{"class":3497},[3491,7217,7218,7221,7223,7225,7227,7229,7231,7233],{"class":3493,"line":4040},[3491,7219,7220],{"class":3581},"  required",[3491,7222,3514],{"class":3497},[3491,7224,4190],{"class":5339},[3491,7226,5687],{"class":3497},[3491,7228,5811],{"class":3520},[3491,7230,5687],{"class":3497},[3491,7232,4246],{"class":5339},[3491,7234,3526],{"class":3497},[3491,7236,7237,7239,7241],{"class":3493,"line":4099},[3491,7238,6976],{"class":3581},[3491,7240,3514],{"class":3497},[3491,7242,3541],{"class":3497},[3491,7244,7245,7248,7250,7252,7254,7256,7258,7261,7263,7265,7267,7269,7272,7274,7277,7279,7281,7283,7286,7288,7290],{"class":3493,"line":4156},[3491,7246,7247],{"class":3581},"    items",[3491,7249,3514],{"class":3497},[3491,7251,4052],{"class":3497},[3491,7253,6992],{"class":3581},[3491,7255,3514],{"class":3497},[3491,7257,6119],{"class":3497},[3491,7259,7260],{"class":3520},"array",[3491,7262,5687],{"class":3497},[3491,7264,3609],{"class":3497},[3491,7266,5791],{"class":3581},[3491,7268,3514],{"class":3497},[3491,7270,7271],{"class":5339}," AVAILABILITY_ITEM",[3491,7273,3609],{"class":3497},[3491,7275,7276],{"class":3581}," minItems",[3491,7278,3514],{"class":3497},[3491,7280,6065],{"class":3565},[3491,7282,3609],{"class":3497},[3491,7284,7285],{"class":3581}," maxItems",[3491,7287,3514],{"class":3497},[3491,7289,5896],{"class":3565},[3491,7291,3640],{"class":3497},[3491,7293,7294],{"class":3493,"line":4162},[3491,7295,7116],{"class":3497},[3491,7297,7298],{"class":3493,"line":4177},[3491,7299,6070],{"class":3497},[3491,7301,7302],{"class":3493,"line":4225},[3491,7303,5703],{"emptyLinePlaceholder":5702},[3491,7305,7306,7308,7311,7313],{"class":3493,"line":4251},[3491,7307,5659],{"class":3507},[3491,7309,7310],{"class":5339}," AVAILABILITY_RESPONSE ",[3491,7312,5713],{"class":3497},[3491,7314,3541],{"class":3497},[3491,7316,7317,7319,7321,7323,7325,7327],{"class":3493,"line":4257},[3491,7318,6960],{"class":3581},[3491,7320,3514],{"class":3497},[3491,7322,6119],{"class":3497},[3491,7324,6967],{"class":3520},[3491,7326,5687],{"class":3497},[3491,7328,3526],{"class":3497},[3491,7330,7331,7333,7335],{"class":3493,"line":4263},[3491,7332,6976],{"class":3581},[3491,7334,3514],{"class":3497},[3491,7336,3541],{"class":3497},[3491,7338,7339,7342,7344],{"class":3493,"line":4276},[3491,7340,7341],{"class":3581},"    availability",[3491,7343,3514],{"class":3497},[3491,7345,3541],{"class":3497},[3491,7347,7348,7351,7353,7355,7357,7359],{"class":3493,"line":4289},[3491,7349,7350],{"class":3581},"      type",[3491,7352,3514],{"class":3497},[3491,7354,6119],{"class":3497},[3491,7356,7260],{"class":3520},[3491,7358,5687],{"class":3497},[3491,7360,3526],{"class":3497},[3491,7362,7363,7366,7368],{"class":3493,"line":4344},[3491,7364,7365],{"class":3581},"      items",[3491,7367,3514],{"class":3497},[3491,7369,3541],{"class":3497},[3491,7371,7372,7375,7377,7379,7382,7384],{"class":3493,"line":4357},[3491,7373,7374],{"class":3581},"        title",[3491,7376,3514],{"class":3497},[3491,7378,6119],{"class":3497},[3491,7380,7381],{"class":3520},"ItemAvailability",[3491,7383,5687],{"class":3497},[3491,7385,3526],{"class":3497},[3491,7387,7388,7391,7393,7395,7397,7399],{"class":3493,"line":4377},[3491,7389,7390],{"class":3581},"        type",[3491,7392,3514],{"class":3497},[3491,7394,6119],{"class":3497},[3491,7396,6967],{"class":3520},[3491,7398,5687],{"class":3497},[3491,7400,3526],{"class":3497},[3491,7402,7403,7406,7408],{"class":3493,"line":4391},[3491,7404,7405],{"class":3581},"        properties",[3491,7407,3514],{"class":3497},[3491,7409,3541],{"class":3497},[3491,7411,7412,7415,7417,7419,7421,7423,7425,7427,7429,7431,7433,7435,7437,7439,7441,7443,7445,7447,7449,7451,7453],{"class":3493,"line":4457},[3491,7413,7414],{"class":3581},"          product_id",[3491,7416,3514],{"class":3497},[3491,7418,4052],{"class":3497},[3491,7420,6992],{"class":3581},[3491,7422,3514],{"class":3497},[3491,7424,4190],{"class":5339},[3491,7426,5687],{"class":3497},[3491,7428,7001],{"class":3520},[3491,7430,5687],{"class":3497},[3491,7432,3609],{"class":3497},[3491,7434,6119],{"class":3497},[3491,7436,5597],{"class":3520},[3491,7438,5687],{"class":3497},[3491,7440,4246],{"class":5339},[3491,7442,3609],{"class":3497},[3491,7444,7018],{"class":3581},[3491,7446,3514],{"class":3497},[3491,7448,6119],{"class":3497},[3491,7450,3604],{"class":3520},[3491,7452,5687],{"class":3497},[3491,7454,3640],{"class":3497},[3491,7456,7457,7460,7462,7464,7466,7468,7470,7472,7474,7476,7478,7480,7482,7484,7486],{"class":3493,"line":4463},[3491,7458,7459],{"class":3581},"          sku",[3491,7461,3514],{"class":3497},[3491,7463,4052],{"class":3497},[3491,7465,6992],{"class":3581},[3491,7467,3514],{"class":3497},[3491,7469,4190],{"class":5339},[3491,7471,5687],{"class":3497},[3491,7473,7001],{"class":3520},[3491,7475,5687],{"class":3497},[3491,7477,3609],{"class":3497},[3491,7479,6119],{"class":3497},[3491,7481,5597],{"class":3520},[3491,7483,5687],{"class":3497},[3491,7485,7060],{"class":5339},[3491,7487,7063],{"class":3497},[3491,7489,7490,7493,7495,7497,7499,7501,7503,7505,7507],{"class":3493,"line":4492},[3491,7491,7492],{"class":3581},"          requested",[3491,7494,3514],{"class":3497},[3491,7496,4052],{"class":3497},[3491,7498,6992],{"class":3581},[3491,7500,3514],{"class":3497},[3491,7502,6119],{"class":3497},[3491,7504,7083],{"class":3520},[3491,7506,5687],{"class":3497},[3491,7508,3640],{"class":3497},[3491,7510,7511,7514,7516,7518,7520,7522,7524,7526,7528],{"class":3493,"line":4521},[3491,7512,7513],{"class":3581},"          available",[3491,7515,3514],{"class":3497},[3491,7517,4052],{"class":3497},[3491,7519,6992],{"class":3581},[3491,7521,3514],{"class":3497},[3491,7523,6119],{"class":3497},[3491,7525,7083],{"class":3520},[3491,7527,5687],{"class":3497},[3491,7529,3640],{"class":3497},[3491,7531,7532,7535,7537,7539,7541,7543,7545,7547,7549],{"class":3493,"line":4595},[3491,7533,7534],{"class":3581},"          tracked",[3491,7536,3514],{"class":3497},[3491,7538,4052],{"class":3497},[3491,7540,6992],{"class":3581},[3491,7542,3514],{"class":3497},[3491,7544,6119],{"class":3497},[3491,7546,3948],{"class":3520},[3491,7548,5687],{"class":3497},[3491,7550,3640],{"class":3497},[3491,7552,7553,7556,7558,7560,7562,7564,7566,7568,7570],{"class":3493,"line":4668},[3491,7554,7555],{"class":3581},"          orderable",[3491,7557,3514],{"class":3497},[3491,7559,4052],{"class":3497},[3491,7561,6992],{"class":3581},[3491,7563,3514],{"class":3497},[3491,7565,6119],{"class":3497},[3491,7567,3948],{"class":3520},[3491,7569,5687],{"class":3497},[3491,7571,3640],{"class":3497},[3491,7573,7574],{"class":3493,"line":4723},[3491,7575,4460],{"class":3497},[3491,7577,7578],{"class":3493,"line":4778},[3491,7579,4159],{"class":3497},[3491,7581,7582],{"class":3493,"line":4783},[3491,7583,4260],{"class":3497},[3491,7585,7586],{"class":3493,"line":4796},[3491,7587,7116],{"class":3497},[3491,7589,7590],{"class":3493,"line":4807},[3491,7591,6070],{"class":3497},[3491,7593,7594],{"class":3493,"line":4813},[3491,7595,5703],{"emptyLinePlaceholder":5702},[3491,7597,7598],{"class":3493,"line":4826},[3491,7599,7600],{"class":5385},"\u002F\u002F Add to the capabilities array:\n",[3491,7602,7603],{"class":3493,"line":4851},[3491,7604,7605],{"class":5385},"\u002F\u002F   def('locations.stock.list',   'List stock levels', { method: 'GET',  path: '\u002Flocations\u002Fstock' },       { parameters: PAGINATION_PARAMS, response: pageOf(STOCK) }),\n",[3491,7607,7608],{"class":3493,"line":4884},[3491,7609,7610],{"class":5385},"\u002F\u002F   def('locations.stock.get',    'Read one stock level', { method: 'GET',  path: '\u002Flocations\u002Fstock\u002F{id}' }, { response: STOCK }),\n",[3491,7612,7613],{"class":3493,"line":4917},[3491,7614,7615],{"class":5385},"\u002F\u002F   def('locations.stock.create', 'Create a stock level', { method: 'POST', path: '\u002Flocations\u002Fstock' },      { request: STOCK_INPUT, response: STOCK }),\n",[3491,7617,7618],{"class":3493,"line":4922},[3491,7619,7620],{"class":5385},"\u002F\u002F   def('locations.stock.update', 'Update a stock level', { method: 'PUT',  path: '\u002Flocations\u002Fstock\u002F{id}' }, { request: STOCK_INPUT, response: STOCK }),\n",[3491,7622,7623],{"class":3493,"line":4928},[3491,7624,7625],{"class":5385},"\u002F\u002F   def('locations.stock.delete', 'Delete a stock level', { method: 'DELETE', path: '\u002Flocations\u002Fstock\u002F{id}' }, { response: DELETED }),\n",[3491,7627,7628],{"class":3493,"line":4934},[3491,7629,7630],{"class":5385},"\u002F\u002F   def('locations.availability', 'Batch availability across locations', { method: 'POST', path: '\u002Flocations\u002Favailability' }, { request: AVAILABILITY_REQUEST, response: AVAILABILITY_RESPONSE }),\n",[3382,7632,7633,7636,7637,3443,7640,7643,7644,7647],{},[3391,7634,7635],{},"DELETED"," already exists from the first tutorial. Define ",[3391,7638,7639],{},"STOCK",[3391,7641,7642],{},"STOCK_INPUT"," in the same file, above the ",[3391,7645,7646],{},"capabilities"," array:",[3482,7649,7651],{"className":5325,"code":7650,"filename":3419,"language":5328,"meta":3487,"style":3487},"const STOCK = {\n  title: 'StockLevel',\n  type: 'object',\n  properties: Object.fromEntries(\n    Object.entries(schema.entities.stock_levels.columns).map(([name, col]) => [name, columnSchema(col)]),\n  ),\n};\n\nconst STOCK_INPUT = {\n  title: 'StockLevelInput',\n  type: 'object',\n  required: ['location_id'],\n  properties: {\n    location_id: { type: 'string', format: 'uuid' },\n    product_id: { type: ['string', 'null'], format: 'uuid' },\n    sku: { type: ['string', 'null'] },\n    on_hand: { type: 'number', minimum: 0 },\n    reserved: { type: 'number', minimum: 0 },\n  },\n};\n",[3391,7652,7653,7664,7679,7693,7710,7770,7777,7781,7785,7796,7811,7825,7843,7851,7884,7928,7960,7990,8019,8023],{"__ignoreMap":3487},[3491,7654,7655,7657,7660,7662],{"class":3493,"line":3494},[3491,7656,5659],{"class":3507},[3491,7658,7659],{"class":5339}," STOCK ",[3491,7661,5713],{"class":3497},[3491,7663,3541],{"class":3497},[3491,7665,7666,7668,7670,7672,7675,7677],{"class":3493,"line":3501},[3491,7667,6944],{"class":3581},[3491,7669,3514],{"class":3497},[3491,7671,6119],{"class":3497},[3491,7673,7674],{"class":3520},"StockLevel",[3491,7676,5687],{"class":3497},[3491,7678,3526],{"class":3497},[3491,7680,7681,7683,7685,7687,7689,7691],{"class":3493,"line":3529},[3491,7682,6960],{"class":3581},[3491,7684,3514],{"class":3497},[3491,7686,6119],{"class":3497},[3491,7688,6967],{"class":3520},[3491,7690,5687],{"class":3497},[3491,7692,3526],{"class":3497},[3491,7694,7695,7697,7699,7702,7704,7707],{"class":3493,"line":3544},[3491,7696,6976],{"class":3581},[3491,7698,3514],{"class":3497},[3491,7700,7701],{"class":5339}," Object",[3491,7703,4944],{"class":3497},[3491,7705,7706],{"class":4406},"fromEntries",[3491,7708,7709],{"class":5339},"(\n",[3491,7711,7712,7715,7717,7720,7723,7725,7727,7729,7731,7733,7736,7738,7740,7742,7745,7747,7749,7752,7755,7757,7760,7762,7765,7768],{"class":3493,"line":3559},[3491,7713,7714],{"class":5339},"    Object",[3491,7716,4944],{"class":3497},[3491,7718,7719],{"class":4406},"entries",[3491,7721,7722],{"class":5339},"(schema",[3491,7724,4944],{"class":3497},[3491,7726,3534],{"class":5339},[3491,7728,4944],{"class":3497},[3491,7730,3393],{"class":5339},[3491,7732,4944],{"class":3497},[3491,7734,7735],{"class":5339},"columns)",[3491,7737,4944],{"class":3497},[3491,7739,5927],{"class":4406},[3491,7741,5352],{"class":5339},[3491,7743,7744],{"class":3497},"([",[3491,7746,3708],{"class":5719},[3491,7748,3609],{"class":3497},[3491,7750,7751],{"class":5719}," col",[3491,7753,7754],{"class":3497},"])",[3491,7756,5725],{"class":3507},[3491,7758,7759],{"class":5339}," [name",[3491,7761,3609],{"class":3497},[3491,7763,7764],{"class":4406}," columnSchema",[3491,7766,7767],{"class":5339},"(col)])",[3491,7769,3526],{"class":3497},[3491,7771,7772,7775],{"class":3493,"line":3575},[3491,7773,7774],{"class":5339},"  )",[3491,7776,3526],{"class":3497},[3491,7778,7779],{"class":3493,"line":3643},[3491,7780,6070],{"class":3497},[3491,7782,7783],{"class":3493,"line":3703},[3491,7784,5703],{"emptyLinePlaceholder":5702},[3491,7786,7787,7789,7792,7794],{"class":3493,"line":3760},[3491,7788,5659],{"class":3507},[3491,7790,7791],{"class":5339}," STOCK_INPUT ",[3491,7793,5713],{"class":3497},[3491,7795,3541],{"class":3497},[3491,7797,7798,7800,7802,7804,7807,7809],{"class":3493,"line":3791},[3491,7799,6944],{"class":3581},[3491,7801,3514],{"class":3497},[3491,7803,6119],{"class":3497},[3491,7805,7806],{"class":3520},"StockLevelInput",[3491,7808,5687],{"class":3497},[3491,7810,3526],{"class":3497},[3491,7812,7813,7815,7817,7819,7821,7823],{"class":3493,"line":3864},[3491,7814,6960],{"class":3581},[3491,7816,3514],{"class":3497},[3491,7818,6119],{"class":3497},[3491,7820,6967],{"class":3520},[3491,7822,5687],{"class":3497},[3491,7824,3526],{"class":3497},[3491,7826,7827,7829,7831,7833,7835,7837,7839,7841],{"class":3493,"line":3923},[3491,7828,7220],{"class":3581},[3491,7830,3514],{"class":3497},[3491,7832,4190],{"class":5339},[3491,7834,5687],{"class":3497},[3491,7836,3459],{"class":3520},[3491,7838,5687],{"class":3497},[3491,7840,4246],{"class":5339},[3491,7842,3526],{"class":3497},[3491,7844,7845,7847,7849],{"class":3493,"line":3982},[3491,7846,6976],{"class":3581},[3491,7848,3514],{"class":3497},[3491,7850,3541],{"class":3497},[3491,7852,7853,7856,7858,7860,7862,7864,7866,7868,7870,7872,7874,7876,7878,7880,7882],{"class":3493,"line":4011},[3491,7854,7855],{"class":3581},"    location_id",[3491,7857,3514],{"class":3497},[3491,7859,4052],{"class":3497},[3491,7861,6992],{"class":3581},[3491,7863,3514],{"class":3497},[3491,7865,6119],{"class":3497},[3491,7867,7001],{"class":3520},[3491,7869,5687],{"class":3497},[3491,7871,3609],{"class":3497},[3491,7873,7018],{"class":3581},[3491,7875,3514],{"class":3497},[3491,7877,6119],{"class":3497},[3491,7879,3604],{"class":3520},[3491,7881,5687],{"class":3497},[3491,7883,3640],{"class":3497},[3491,7885,7886,7888,7890,7892,7894,7896,7898,7900,7902,7904,7906,7908,7910,7912,7914,7916,7918,7920,7922,7924,7926],{"class":3493,"line":4040},[3491,7887,6985],{"class":3581},[3491,7889,3514],{"class":3497},[3491,7891,4052],{"class":3497},[3491,7893,6992],{"class":3581},[3491,7895,3514],{"class":3497},[3491,7897,4190],{"class":5339},[3491,7899,5687],{"class":3497},[3491,7901,7001],{"class":3520},[3491,7903,5687],{"class":3497},[3491,7905,3609],{"class":3497},[3491,7907,6119],{"class":3497},[3491,7909,5597],{"class":3520},[3491,7911,5687],{"class":3497},[3491,7913,4246],{"class":5339},[3491,7915,3609],{"class":3497},[3491,7917,7018],{"class":3581},[3491,7919,3514],{"class":3497},[3491,7921,6119],{"class":3497},[3491,7923,3604],{"class":3520},[3491,7925,5687],{"class":3497},[3491,7927,3640],{"class":3497},[3491,7929,7930,7932,7934,7936,7938,7940,7942,7944,7946,7948,7950,7952,7954,7956,7958],{"class":3493,"line":4099},[3491,7931,7033],{"class":3581},[3491,7933,3514],{"class":3497},[3491,7935,4052],{"class":3497},[3491,7937,6992],{"class":3581},[3491,7939,3514],{"class":3497},[3491,7941,4190],{"class":5339},[3491,7943,5687],{"class":3497},[3491,7945,7001],{"class":3520},[3491,7947,5687],{"class":3497},[3491,7949,3609],{"class":3497},[3491,7951,6119],{"class":3497},[3491,7953,5597],{"class":3520},[3491,7955,5687],{"class":3497},[3491,7957,7060],{"class":5339},[3491,7959,7063],{"class":3497},[3491,7961,7962,7965,7967,7969,7971,7973,7975,7977,7979,7981,7984,7986,7988],{"class":3493,"line":4156},[3491,7963,7964],{"class":3581},"    on_hand",[3491,7966,3514],{"class":3497},[3491,7968,4052],{"class":3497},[3491,7970,6992],{"class":3581},[3491,7972,3514],{"class":3497},[3491,7974,6119],{"class":3497},[3491,7976,7083],{"class":3520},[3491,7978,5687],{"class":3497},[3491,7980,3609],{"class":3497},[3491,7982,7983],{"class":3581}," minimum",[3491,7985,3514],{"class":3497},[3491,7987,5857],{"class":3565},[3491,7989,3640],{"class":3497},[3491,7991,7992,7995,7997,7999,8001,8003,8005,8007,8009,8011,8013,8015,8017],{"class":3493,"line":4162},[3491,7993,7994],{"class":3581},"    reserved",[3491,7996,3514],{"class":3497},[3491,7998,4052],{"class":3497},[3491,8000,6992],{"class":3581},[3491,8002,3514],{"class":3497},[3491,8004,6119],{"class":3497},[3491,8006,7083],{"class":3520},[3491,8008,5687],{"class":3497},[3491,8010,3609],{"class":3497},[3491,8012,7983],{"class":3581},[3491,8014,3514],{"class":3497},[3491,8016,5857],{"class":3565},[3491,8018,3640],{"class":3497},[3491,8020,8021],{"class":3493,"line":4177},[3491,8022,7116],{"class":3497},[3491,8024,8025],{"class":3493,"line":4225},[3491,8026,6070],{"class":3497},[3382,8028,8029,8031,8032,8035,8036,8039],{},[3391,8030,7639],{}," is built the way ",[3391,8033,8034],{},"LOCATION"," was in the first tutorial, from ",[3391,8037,8038],{},"schema.entities.stock_levels.columns",". Then regenerate:",[3482,8041,8044],{"className":5278,"code":8042,"filename":8043,"language":5281,"meta":3487,"style":3487},"node scripts\u002Fcapabilities.js\n","Regenerate capabilities",[3391,8045,8046],{"__ignoreMap":3487},[3491,8047,8048,8051],{"class":3493,"line":3494},[3491,8049,8050],{"class":3550},"node",[3491,8052,8053],{"class":3520}," scripts\u002Fcapabilities.js\n",[3382,8055,8056,8057,8060,8061,8063],{},"Add pagination params only to the ",[3391,8058,8059],{},"stock.list"," capability. The ",[3391,8062,3401],{}," route is a batch read with a single response object, so it takes no pagination params.",[3422,8065,8067],{"id":8066},"_5-test-the-new-surface","5. Test the new surface",[3382,8069,8070,8071,8074],{},"Extend ",[3391,8072,8073],{},"test\u002Flocations.test.js"," with the relationship and the guarded route. Test the 4xx paths too — a guard you never test is a guard that can rot.",[3482,8076,8078],{"className":5325,"code":8077,"filename":8073,"language":5328,"meta":3487,"style":3487},"test('availability sums stock across locations', async () => {\n  await call('POST', '\u002Flocations\u002Fdefaults');\n  const [loc] = (await call('GET', '\u002Flocations')).body.items;\n\n  await call('POST', '\u002Flocations\u002Fstock', { body: { location_id: loc.id, sku: 'WIDGET-1', on_hand: 10, reserved: 2 } });\n\n  const r = await call('POST', '\u002Flocations\u002Favailability', { body: { items: [{ sku: 'WIDGET-1', quantity: 5 }] } });\n  assert.equal(r.body.availability[0].available, 8);\n  assert.equal(r.body.availability[0].orderable, true);\n});\n\ntest('availability rejects an empty items array', async () => {\n  const r = await call('POST', '\u002Flocations\u002Favailability', { body: { items: [] } });\n  assert.equal(r.code, 400);\n});\n\ntest('an item with neither product_id nor sku is a 400', async () => {\n  const r = await call('POST', '\u002Flocations\u002Favailability', { body: { items: [{ quantity: 1 }] } });\n  assert.equal(r.code, 400);\n});\n",[3391,8079,8080,8105,8135,8184,8188,8272,8276,8353,8396,8435,8443,8447,8470,8523,8548,8556,8560,8583,8647,8671],{"__ignoreMap":3487},[3491,8081,8082,8085,8087,8089,8092,8094,8096,8098,8101,8103],{"class":3493,"line":3494},[3491,8083,8084],{"class":4406},"test",[3491,8086,5352],{"class":5339},[3491,8088,5687],{"class":3497},[3491,8090,8091],{"class":3520},"availability sums stock across locations",[3491,8093,5687],{"class":3497},[3491,8095,3609],{"class":3497},[3491,8097,6177],{"class":3507},[3491,8099,8100],{"class":3497}," ()",[3491,8102,5725],{"class":3507},[3491,8104,3541],{"class":3497},[3491,8106,8107,8110,8113,8115,8117,8120,8122,8124,8126,8129,8131,8133],{"class":3493,"line":3501},[3491,8108,8109],{"class":5335},"  await",[3491,8111,8112],{"class":4406}," call",[3491,8114,5352],{"class":3581},[3491,8116,5687],{"class":3497},[3491,8118,8119],{"class":3520},"POST",[3491,8121,5687],{"class":3497},[3491,8123,3609],{"class":3497},[3491,8125,6119],{"class":3497},[3491,8127,8128],{"class":3520},"\u002Flocations\u002Fdefaults",[3491,8130,5687],{"class":3497},[3491,8132,5379],{"class":3581},[3491,8134,5697],{"class":3497},[3491,8136,8137,8139,8141,8144,8146,8148,8150,8152,8154,8156,8158,8161,8163,8165,8167,8170,8172,8174,8176,8178,8180,8182],{"class":3493,"line":3529},[3491,8138,5788],{"class":3507},[3491,8140,4190],{"class":3497},[3491,8142,8143],{"class":5339},"loc",[3491,8145,4246],{"class":3497},[3491,8147,5679],{"class":3497},[3491,8149,5716],{"class":3581},[3491,8151,5336],{"class":5335},[3491,8153,8112],{"class":4406},[3491,8155,5352],{"class":3581},[3491,8157,5687],{"class":3497},[3491,8159,8160],{"class":3520},"GET",[3491,8162,5687],{"class":3497},[3491,8164,3609],{"class":3497},[3491,8166,6119],{"class":3497},[3491,8168,8169],{"class":3520},"\u002Flocations",[3491,8171,5687],{"class":3497},[3491,8173,6332],{"class":3581},[3491,8175,4944],{"class":3497},[3491,8177,5779],{"class":5339},[3491,8179,4944],{"class":3497},[3491,8181,5811],{"class":5339},[3491,8183,5697],{"class":3497},[3491,8185,8186],{"class":3493,"line":3544},[3491,8187,5703],{"emptyLinePlaceholder":5702},[3491,8189,8190,8192,8194,8196,8198,8200,8202,8204,8206,8208,8210,8212,8214,8216,8218,8220,8223,8225,8228,8230,8232,8234,8236,8238,8240,8243,8245,8247,8250,8252,8255,8257,8259,8261,8264,8266,8268,8270],{"class":3493,"line":3559},[3491,8191,8109],{"class":5335},[3491,8193,8112],{"class":4406},[3491,8195,5352],{"class":3581},[3491,8197,5687],{"class":3497},[3491,8199,8119],{"class":3520},[3491,8201,5687],{"class":3497},[3491,8203,3609],{"class":3497},[3491,8205,6119],{"class":3497},[3491,8207,6122],{"class":3520},[3491,8209,5687],{"class":3497},[3491,8211,3609],{"class":3497},[3491,8213,4052],{"class":3497},[3491,8215,5819],{"class":3581},[3491,8217,3514],{"class":3497},[3491,8219,4052],{"class":3497},[3491,8221,8222],{"class":3581}," location_id",[3491,8224,3514],{"class":3497},[3491,8226,8227],{"class":5339}," loc",[3491,8229,4944],{"class":3497},[3491,8231,3582],{"class":5339},[3491,8233,3609],{"class":3497},[3491,8235,6031],{"class":3581},[3491,8237,3514],{"class":3497},[3491,8239,6119],{"class":3497},[3491,8241,8242],{"class":3520},"WIDGET-1",[3491,8244,5687],{"class":3497},[3491,8246,3609],{"class":3497},[3491,8248,8249],{"class":3581}," on_hand",[3491,8251,3514],{"class":3497},[3491,8253,8254],{"class":3565}," 10",[3491,8256,3609],{"class":3497},[3491,8258,6595],{"class":3581},[3491,8260,3514],{"class":3497},[3491,8262,8263],{"class":3565}," 2",[3491,8265,6284],{"class":3497},[3491,8267,6284],{"class":3497},[3491,8269,5379],{"class":3581},[3491,8271,5697],{"class":3497},[3491,8273,8274],{"class":3493,"line":3575},[3491,8275,5703],{"emptyLinePlaceholder":5702},[3491,8277,8278,8280,8282,8284,8286,8288,8290,8292,8294,8296,8298,8300,8302,8304,8306,8308,8310,8312,8314,8316,8318,8320,8322,8324,8326,8328,8330,8332,8334,8336,8338,8341,8343,8345,8347,8349,8351],{"class":3493,"line":3643},[3491,8279,5788],{"class":3507},[3491,8281,6482],{"class":5339},[3491,8283,5679],{"class":3497},[3491,8285,6231],{"class":5335},[3491,8287,8112],{"class":4406},[3491,8289,5352],{"class":3581},[3491,8291,5687],{"class":3497},[3491,8293,8119],{"class":3520},[3491,8295,5687],{"class":3497},[3491,8297,3609],{"class":3497},[3491,8299,6119],{"class":3497},[3491,8301,6170],{"class":3520},[3491,8303,5687],{"class":3497},[3491,8305,3609],{"class":3497},[3491,8307,4052],{"class":3497},[3491,8309,5819],{"class":3581},[3491,8311,3514],{"class":3497},[3491,8313,4052],{"class":3497},[3491,8315,5791],{"class":3581},[3491,8317,3514],{"class":3497},[3491,8319,4190],{"class":3581},[3491,8321,5355],{"class":3497},[3491,8323,6031],{"class":3581},[3491,8325,3514],{"class":3497},[3491,8327,6119],{"class":3497},[3491,8329,8242],{"class":3520},[3491,8331,5687],{"class":3497},[3491,8333,3609],{"class":3497},[3491,8335,6046],{"class":3581},[3491,8337,3514],{"class":3497},[3491,8339,8340],{"class":3565}," 5",[3491,8342,6284],{"class":3497},[3491,8344,7060],{"class":3581},[3491,8346,5376],{"class":3497},[3491,8348,6284],{"class":3497},[3491,8350,5379],{"class":3581},[3491,8352,5697],{"class":3497},[3491,8354,8355,8358,8360,8363,8365,8367,8369,8371,8373,8375,8378,8380,8382,8384,8387,8389,8392,8394],{"class":3493,"line":3703},[3491,8356,8357],{"class":5339},"  assert",[3491,8359,4944],{"class":3497},[3491,8361,8362],{"class":4406},"equal",[3491,8364,5352],{"class":3581},[3491,8366,6384],{"class":5339},[3491,8368,4944],{"class":3497},[3491,8370,5779],{"class":5339},[3491,8372,4944],{"class":3497},[3491,8374,3401],{"class":5339},[3491,8376,8377],{"class":3581},"[",[3491,8379,3916],{"class":3565},[3491,8381,4246],{"class":3581},[3491,8383,4944],{"class":3497},[3491,8385,8386],{"class":5339},"available",[3491,8388,3609],{"class":3497},[3491,8390,8391],{"class":3565}," 8",[3491,8393,5379],{"class":3581},[3491,8395,5697],{"class":3497},[3491,8397,8398,8400,8402,8404,8406,8408,8410,8412,8414,8416,8418,8420,8422,8424,8427,8429,8431,8433],{"class":3493,"line":3760},[3491,8399,8357],{"class":5339},[3491,8401,4944],{"class":3497},[3491,8403,8362],{"class":4406},[3491,8405,5352],{"class":3581},[3491,8407,6384],{"class":5339},[3491,8409,4944],{"class":3497},[3491,8411,5779],{"class":5339},[3491,8413,4944],{"class":3497},[3491,8415,3401],{"class":5339},[3491,8417,8377],{"class":3581},[3491,8419,3916],{"class":3565},[3491,8421,4246],{"class":3581},[3491,8423,4944],{"class":3497},[3491,8425,8426],{"class":5339},"orderable",[3491,8428,3609],{"class":3497},[3491,8430,4220],{"class":6259},[3491,8432,5379],{"class":3581},[3491,8434,5697],{"class":3497},[3491,8436,8437,8439,8441],{"class":3493,"line":3791},[3491,8438,5376],{"class":3497},[3491,8440,5379],{"class":5339},[3491,8442,5697],{"class":3497},[3491,8444,8445],{"class":3493,"line":3864},[3491,8446,5703],{"emptyLinePlaceholder":5702},[3491,8448,8449,8451,8453,8455,8458,8460,8462,8464,8466,8468],{"class":3493,"line":3923},[3491,8450,8084],{"class":4406},[3491,8452,5352],{"class":5339},[3491,8454,5687],{"class":3497},[3491,8456,8457],{"class":3520},"availability rejects an empty items array",[3491,8459,5687],{"class":3497},[3491,8461,3609],{"class":3497},[3491,8463,6177],{"class":3507},[3491,8465,8100],{"class":3497},[3491,8467,5725],{"class":3507},[3491,8469,3541],{"class":3497},[3491,8471,8472,8474,8476,8478,8480,8482,8484,8486,8488,8490,8492,8494,8496,8498,8500,8502,8504,8506,8508,8510,8512,8515,8517,8519,8521],{"class":3493,"line":3982},[3491,8473,5788],{"class":3507},[3491,8475,6482],{"class":5339},[3491,8477,5679],{"class":3497},[3491,8479,6231],{"class":5335},[3491,8481,8112],{"class":4406},[3491,8483,5352],{"class":3581},[3491,8485,5687],{"class":3497},[3491,8487,8119],{"class":3520},[3491,8489,5687],{"class":3497},[3491,8491,3609],{"class":3497},[3491,8493,6119],{"class":3497},[3491,8495,6170],{"class":3520},[3491,8497,5687],{"class":3497},[3491,8499,3609],{"class":3497},[3491,8501,4052],{"class":3497},[3491,8503,5819],{"class":3581},[3491,8505,3514],{"class":3497},[3491,8507,4052],{"class":3497},[3491,8509,5791],{"class":3581},[3491,8511,3514],{"class":3497},[3491,8513,8514],{"class":3581}," [] ",[3491,8516,5376],{"class":3497},[3491,8518,6284],{"class":3497},[3491,8520,5379],{"class":3581},[3491,8522,5697],{"class":3497},[3491,8524,8525,8527,8529,8531,8533,8535,8537,8539,8541,8544,8546],{"class":3493,"line":4011},[3491,8526,8357],{"class":5339},[3491,8528,4944],{"class":3497},[3491,8530,8362],{"class":4406},[3491,8532,5352],{"class":3581},[3491,8534,6384],{"class":5339},[3491,8536,4944],{"class":3497},[3491,8538,3391],{"class":5339},[3491,8540,3609],{"class":3497},[3491,8542,8543],{"class":3565}," 400",[3491,8545,5379],{"class":3581},[3491,8547,5697],{"class":3497},[3491,8549,8550,8552,8554],{"class":3493,"line":4040},[3491,8551,5376],{"class":3497},[3491,8553,5379],{"class":5339},[3491,8555,5697],{"class":3497},[3491,8557,8558],{"class":3493,"line":4099},[3491,8559,5703],{"emptyLinePlaceholder":5702},[3491,8561,8562,8564,8566,8568,8571,8573,8575,8577,8579,8581],{"class":3493,"line":4156},[3491,8563,8084],{"class":4406},[3491,8565,5352],{"class":5339},[3491,8567,5687],{"class":3497},[3491,8569,8570],{"class":3520},"an item with neither product_id nor sku is a 400",[3491,8572,5687],{"class":3497},[3491,8574,3609],{"class":3497},[3491,8576,6177],{"class":3507},[3491,8578,8100],{"class":3497},[3491,8580,5725],{"class":3507},[3491,8582,3541],{"class":3497},[3491,8584,8585,8587,8589,8591,8593,8595,8597,8599,8601,8603,8605,8607,8609,8611,8613,8615,8617,8619,8621,8623,8625,8627,8629,8631,8633,8635,8637,8639,8641,8643,8645],{"class":3493,"line":4162},[3491,8586,5788],{"class":3507},[3491,8588,6482],{"class":5339},[3491,8590,5679],{"class":3497},[3491,8592,6231],{"class":5335},[3491,8594,8112],{"class":4406},[3491,8596,5352],{"class":3581},[3491,8598,5687],{"class":3497},[3491,8600,8119],{"class":3520},[3491,8602,5687],{"class":3497},[3491,8604,3609],{"class":3497},[3491,8606,6119],{"class":3497},[3491,8608,6170],{"class":3520},[3491,8610,5687],{"class":3497},[3491,8612,3609],{"class":3497},[3491,8614,4052],{"class":3497},[3491,8616,5819],{"class":3581},[3491,8618,3514],{"class":3497},[3491,8620,4052],{"class":3497},[3491,8622,5791],{"class":3581},[3491,8624,3514],{"class":3497},[3491,8626,4190],{"class":3581},[3491,8628,5355],{"class":3497},[3491,8630,6046],{"class":3581},[3491,8632,3514],{"class":3497},[3491,8634,6065],{"class":3565},[3491,8636,6284],{"class":3497},[3491,8638,7060],{"class":3581},[3491,8640,5376],{"class":3497},[3491,8642,6284],{"class":3497},[3491,8644,5379],{"class":3581},[3491,8646,5697],{"class":3497},[3491,8648,8649,8651,8653,8655,8657,8659,8661,8663,8665,8667,8669],{"class":3493,"line":4177},[3491,8650,8357],{"class":5339},[3491,8652,4944],{"class":3497},[3491,8654,8362],{"class":4406},[3491,8656,5352],{"class":3581},[3491,8658,6384],{"class":5339},[3491,8660,4944],{"class":3497},[3491,8662,3391],{"class":5339},[3491,8664,3609],{"class":3497},[3491,8666,8543],{"class":3565},[3491,8668,5379],{"class":3581},[3491,8670,5697],{"class":3497},[3491,8672,8673,8675,8677],{"class":3493,"line":4225},[3491,8674,5376],{"class":3497},[3491,8676,5379],{"class":5339},[3491,8678,5697],{"class":3497},[3482,8680,8683],{"className":5278,"code":8681,"filename":8682,"language":5281,"meta":3487,"style":3487},"npm test\n","Test",[3391,8684,8685],{"__ignoreMap":3487},[3491,8686,8687,8690],{"class":3493,"line":3494},[3491,8688,8689],{"class":3550},"npm",[3491,8691,8692],{"class":3520}," test\n",[3422,8694,8696],{"id":8695},"troubleshooting","Troubleshooting",[5526,8698,8699,8716,8728,8748],{},[5529,8700,8701,8707,8708,8710,8711,5753,8713,8715],{},[5532,8702,8703,8704,8706],{},"A write to ",[3391,8705,3393],{}," is denied."," The manifest grants are per entity — confirm ",[3391,8709,3393],{}," has the ",[3391,8712,5127],{},[3391,8714,5136],{}," access you need, then regenerate the client.",[5529,8717,8718,8724,8725,4944],{},[5532,8719,8720,8723],{},[3391,8721,8722],{},"db.stock_levels"," is undefined."," The client wasn't regenerated after the schema change. Re-run ",[3391,8726,8727],{},"revenexx apps generate",[5529,8729,8730,8733,8734,8737,8738,5753,8741,8744,8745,8747],{},[5532,8731,8732],{},"The gateway rejects a valid availability request."," The request schema in ",[3391,8735,8736],{},"capabilities.js"," is stricter than the handler. Align ",[3391,8739,8740],{},"required",[3391,8742,8743],{},"anyOf"," with what ",[3391,8746,6859],{}," actually enforces, and regenerate.",[5529,8749,8750,8753],{},[5532,8751,8752],{},"The availability check is slow."," Confirm you read locations and stock once each and match in memory, rather than querying per item.",[3422,8755,8757],{"id":8756},"where-to-go-next","Where to go next",[5526,8759,8760,8765,8770,8775],{},[5529,8761,8762,8764],{},[3386,8763,131],{"href":132}," — push the updated app and verify the new capabilities live, plus caching for the read-heavy ones.",[5529,8766,8767,8769],{},[3386,8768,138],{"href":139}," — announce a fact that is not a row change.",[5529,8771,8772,8774],{},[3386,8773,516],{"href":517}," — the full data-client and router reference.",[5529,8776,8777,8780],{},[3386,8778,8779],{"href":997},"App Marketplace"," — publishing and lifecycle.",[8782,8783,8784],"style",{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .su27w, html code.shiki .su27w{--shiki-light:#916B53;--shiki-default:#916B53;--shiki-dark:#916B53}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}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 .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}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}",{"title":3487,"searchDepth":3501,"depth":3501,"links":8786},[8787,8788,8789,8790,8791,8792,8793],{"id":3424,"depth":3501,"text":3425},{"id":5315,"depth":3501,"text":5316},{"id":5601,"depth":3501,"text":5602},{"id":6916,"depth":3501,"text":6917},{"id":8066,"depth":3501,"text":8067},{"id":8695,"depth":3501,"text":8696},{"id":8756,"depth":3501,"text":8757},"Grow a revenexx App with a second entity, a relationship, a custom action route with guards, and the typed data client in depth.","md",null,{},{"icon":122},{"title":117,"description":8794},{"loc":118},"xws-dwY8Hgy5v4GjCnL7DekgRVI6uOdx9BuFlkg-iZk",1793802367589]