[{"data":1,"prerenderedAt":3935},["ShallowReactive",2],{"navigation_docs":3,"-docs-guides-apps-publish-on-the-marketplace":2053},[4,75,172,227,437,1777],{"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],{"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},"Guides","\u002Fdocs\u002Fguides","docs\u002Fguides\u002Findex",[80,81,117,123,129,135,142],{"title":76,"path":77,"stem":78},{"title":82,"path":83,"stem":84,"children":85},"Build a revenexx App","\u002Fdocs\u002Fguides\u002Fapps","docs\u002Fguides\u002Fapps\u002Findex",[86,87,93,99,105,111],{"title":82,"path":83,"stem":84},{"title":88,"path":89,"stem":90,"children":91},"Add a data model","\u002Fdocs\u002Fguides\u002Fapps\u002Fadd-a-data-model","docs\u002Fguides\u002Fapps\u002Fadd-a-data-model\u002Findex",[92],{"title":88,"path":89,"stem":90},{"title":94,"path":95,"stem":96,"children":97},"Build your first app","\u002Fdocs\u002Fguides\u002Fapps\u002Fbuild-your-first-app","docs\u002Fguides\u002Fapps\u002Fbuild-your-first-app\u002Findex",[98],{"title":94,"path":95,"stem":96},{"title":100,"path":101,"stem":102,"children":103},"Deploy with the CLI","\u002Fdocs\u002Fguides\u002Fapps\u002Fdeploy-with-the-cli","docs\u002Fguides\u002Fapps\u002Fdeploy-with-the-cli\u002Findex",[104],{"title":100,"path":101,"stem":102},{"title":106,"path":107,"stem":108,"children":109},"Operate an App in production","\u002Fdocs\u002Fguides\u002Fapps\u002Foperate-in-production","docs\u002Fguides\u002Fapps\u002Foperate-in-production\u002Findex",[110],{"title":106,"path":107,"stem":108},{"title":112,"path":113,"stem":114,"children":115},"Publish an App on the Marketplace","\u002Fdocs\u002Fguides\u002Fapps\u002Fpublish-on-the-marketplace","docs\u002Fguides\u002Fapps\u002Fpublish-on-the-marketplace\u002Findex",[116],{"title":112,"path":113,"stem":114},{"title":118,"path":119,"stem":120,"children":121},"Configure pricing rules","\u002Fdocs\u002Fguides\u002Fconfigure-pricing-rules","docs\u002Fguides\u002Fconfigure-pricing-rules\u002Findex",[122],{"title":118,"path":119,"stem":120},{"title":124,"path":125,"stem":126,"children":127},"Examples","\u002Fdocs\u002Fguides\u002Fexamples","docs\u002Fguides\u002Fexamples\u002Findex",[128],{"title":124,"path":125,"stem":126},{"title":130,"path":131,"stem":132,"children":133},"Import a BMECAT product catalog","\u002Fdocs\u002Fguides\u002Fimport-a-bmecat-catalog","docs\u002Fguides\u002Fimport-a-bmecat-catalog\u002Findex",[134],{"title":130,"path":131,"stem":132},{"title":136,"path":137,"stem":138,"children":139,"icon":141},"Operate & go live","\u002Fdocs\u002Fguides\u002Foperate","docs\u002Fguides\u002Foperate\u002Findex",[140],{"title":136,"path":137,"stem":138,"icon":141},"i-lucide-activity",{"title":143,"path":144,"stem":145,"children":146},"Build a storefront Theme","\u002Fdocs\u002Fguides\u002Fthemes","docs\u002Fguides\u002Fthemes\u002Findex",[147,148,154,160,166],{"title":143,"path":144,"stem":145},{"title":149,"path":150,"stem":151,"children":152},"Build your first Theme","\u002Fdocs\u002Fguides\u002Fthemes\u002Fbuild-your-first-theme","docs\u002Fguides\u002Fthemes\u002Fbuild-your-first-theme\u002Findex",[153],{"title":149,"path":150,"stem":151},{"title":155,"path":156,"stem":157,"children":158},"Customize blocks","\u002Fdocs\u002Fguides\u002Fthemes\u002Fcustomize-blocks","docs\u002Fguides\u002Fthemes\u002Fcustomize-blocks\u002Findex",[159],{"title":155,"path":156,"stem":157},{"title":161,"path":162,"stem":163,"children":164},"Deploy your storefront","\u002Fdocs\u002Fguides\u002Fthemes\u002Fdeploy-your-storefront","docs\u002Fguides\u002Fthemes\u002Fdeploy-your-storefront\u002Findex",[165],{"title":161,"path":162,"stem":163},{"title":167,"path":168,"stem":169,"children":170},"Theme tokens and styling","\u002Fdocs\u002Fguides\u002Fthemes\u002Ftheme-tokens-and-styling","docs\u002Fguides\u002Fthemes\u002Ftheme-tokens-and-styling\u002Findex",[171],{"title":167,"path":168,"stem":169},{"title":173,"path":174,"stem":175,"children":176},"SDKs","\u002Fdocs\u002Fsdks","docs\u002Fsdks\u002Findex",[177,178,184,190,196,202,208,214,221],{"title":173,"path":174,"stem":175},{"title":179,"path":180,"stem":181,"children":182},"App SDK","\u002Fdocs\u002Fsdks\u002Fapp-sdk","docs\u002Fsdks\u002Fapp-sdk\u002Findex",[183],{"title":179,"path":180,"stem":181},{"title":185,"path":186,"stem":187,"children":188},"CLI","\u002Fdocs\u002Fsdks\u002Fcli","docs\u002Fsdks\u002Fcli\u002Findex",[189],{"title":185,"path":186,"stem":187},{"title":191,"path":192,"stem":193,"children":194},"Design systems","\u002Fdocs\u002Fsdks\u002Fdesign-systems","docs\u002Fsdks\u002Fdesign-systems\u002Findex",[195],{"title":191,"path":192,"stem":193},{"title":197,"path":198,"stem":199,"children":200},"Integration Node SDK","\u002Fdocs\u002Fsdks\u002Fintegration-nodes","docs\u002Fsdks\u002Fintegration-nodes\u002Findex",[201],{"title":197,"path":198,"stem":199},{"title":203,"path":204,"stem":205,"children":206},"Node SDK","\u002Fdocs\u002Fsdks\u002Fnode","docs\u002Fsdks\u002Fnode\u002Findex",[207],{"title":203,"path":204,"stem":205},{"title":209,"path":210,"stem":211,"children":212},"PHP SDK","\u002Fdocs\u002Fsdks\u002Fphp","docs\u002Fsdks\u002Fphp\u002Findex",[213],{"title":209,"path":210,"stem":211},{"title":215,"path":216,"stem":217,"children":218,"icon":220},"Versioning","\u002Fdocs\u002Fsdks\u002Fversioning","docs\u002Fsdks\u002Fversioning\u002Findex",[219],{"title":215,"path":216,"stem":217,"icon":220},"i-lucide-git-branch",{"title":222,"path":223,"stem":224,"children":225},"Web \u002F JavaScript SDK","\u002Fdocs\u002Fsdks\u002Fweb","docs\u002Fsdks\u002Fweb\u002Findex",[226],{"title":222,"path":223,"stem":224},{"title":228,"path":229,"stem":230,"children":231},"Services","\u002Fdocs\u002Fservices","docs\u002Fservices\u002Findex",[232,233,269,299,317,371,419],{"title":228,"path":229,"stem":230},{"title":234,"path":235,"stem":236,"children":237},"API usage","\u002Fdocs\u002Fservices\u002Fapi-usage","docs\u002Fservices\u002Fapi-usage\u002Findex",[238,239,245,251,257,263],{"title":234,"path":235,"stem":236},{"title":240,"path":241,"stem":242,"children":243},"Errors","\u002Fdocs\u002Fservices\u002Fapi-usage\u002Ferrors","docs\u002Fservices\u002Fapi-usage\u002Ferrors\u002Findex",[244],{"title":240,"path":241,"stem":242},{"title":246,"path":247,"stem":248,"children":249},"Retries & idempotency","\u002Fdocs\u002Fservices\u002Fapi-usage\u002Fidempotency","docs\u002Fservices\u002Fapi-usage\u002Fidempotency\u002Findex",[250],{"title":246,"path":247,"stem":248},{"title":252,"path":253,"stem":254,"children":255},"Pagination & filtering","\u002Fdocs\u002Fservices\u002Fapi-usage\u002Fpagination","docs\u002Fservices\u002Fapi-usage\u002Fpagination\u002Findex",[256],{"title":252,"path":253,"stem":254},{"title":258,"path":259,"stem":260,"children":261},"Rate limits","\u002Fdocs\u002Fservices\u002Fapi-usage\u002Frate-limits","docs\u002Fservices\u002Fapi-usage\u002Frate-limits\u002Findex",[262],{"title":258,"path":259,"stem":260},{"title":264,"path":265,"stem":266,"children":267},"Versioning & stability","\u002Fdocs\u002Fservices\u002Fapi-usage\u002Fversioning","docs\u002Fservices\u002Fapi-usage\u002Fversioning\u002Findex",[268],{"title":264,"path":265,"stem":266},{"title":270,"path":271,"stem":272,"children":273},"Authentication","\u002Fdocs\u002Fservices\u002Fauth","docs\u002Fservices\u002Fauth\u002Findex",[274,275,281,287,293],{"title":270,"path":271,"stem":272},{"title":276,"path":277,"stem":278,"children":279},"API keys","\u002Fdocs\u002Fservices\u002Fauth\u002Fapi-keys","docs\u002Fservices\u002Fauth\u002Fapi-keys\u002Findex",[280],{"title":276,"path":277,"stem":278},{"title":282,"path":283,"stem":284,"children":285},"Multi-factor authentication","\u002Fdocs\u002Fservices\u002Fauth\u002Fmfa","docs\u002Fservices\u002Fauth\u002Fmfa\u002Findex",[286],{"title":282,"path":283,"stem":284},{"title":288,"path":289,"stem":290,"children":291},"Social sign-in","\u002Fdocs\u002Fservices\u002Fauth\u002Foauth2","docs\u002Fservices\u002Fauth\u002Foauth2\u002Findex",[292],{"title":288,"path":289,"stem":290},{"title":294,"path":295,"stem":296,"children":297},"Sessions","\u002Fdocs\u002Fservices\u002Fauth\u002Fsessions","docs\u002Fservices\u002Fauth\u002Fsessions\u002Findex",[298],{"title":294,"path":295,"stem":296},{"title":300,"path":301,"stem":302,"children":303},"Events","\u002Fdocs\u002Fservices\u002Fevents","docs\u002Fservices\u002Fevents\u002Findex",[304,305,311],{"title":300,"path":301,"stem":302},{"title":306,"path":307,"stem":308,"children":309},"Consuming events","\u002Fdocs\u002Fservices\u002Fevents\u002Fconsuming-events","docs\u002Fservices\u002Fevents\u002Fconsuming-events\u002Findex",[310],{"title":306,"path":307,"stem":308},{"title":312,"path":313,"stem":314,"children":315},"Event types","\u002Fdocs\u002Fservices\u002Fevents\u002Fevent-types","docs\u002Fservices\u002Fevents\u002Fevent-types\u002Findex",[316],{"title":312,"path":313,"stem":314},{"title":318,"path":319,"stem":320,"children":321},"Network","\u002Fdocs\u002Fservices\u002Fnetwork","docs\u002Fservices\u002Fnetwork\u002Findex",[322,323,329,335,341,347,353,359,365],{"title":318,"path":319,"stem":320},{"title":324,"path":325,"stem":326,"children":327},"Caching","\u002Fdocs\u002Fservices\u002Fnetwork\u002Fcaching","docs\u002Fservices\u002Fnetwork\u002Fcaching\u002Findex",[328],{"title":324,"path":325,"stem":326},{"title":330,"path":331,"stem":332,"children":333},"Content delivery (CDN)","\u002Fdocs\u002Fservices\u002Fnetwork\u002Fcdn","docs\u002Fservices\u002Fnetwork\u002Fcdn\u002Findex",[334],{"title":330,"path":331,"stem":332},{"title":336,"path":337,"stem":338,"children":339},"Compression","\u002Fdocs\u002Fservices\u002Fnetwork\u002Fcompression","docs\u002Fservices\u002Fnetwork\u002Fcompression\u002Findex",[340],{"title":336,"path":337,"stem":338},{"title":342,"path":343,"stem":344,"children":345},"DDoS mitigation","\u002Fdocs\u002Fservices\u002Fnetwork\u002Fddos","docs\u002Fservices\u002Fnetwork\u002Fddos\u002Findex",[346],{"title":342,"path":343,"stem":344},{"title":348,"path":349,"stem":350,"children":351},"Edge network","\u002Fdocs\u002Fservices\u002Fnetwork\u002Fedges","docs\u002Fservices\u002Fnetwork\u002Fedges\u002Findex",[352],{"title":348,"path":349,"stem":350},{"title":354,"path":355,"stem":356,"children":357},"Endpoints","\u002Fdocs\u002Fservices\u002Fnetwork\u002Fendpoints","docs\u002Fservices\u002Fnetwork\u002Fendpoints\u002Findex",[358],{"title":354,"path":355,"stem":356},{"title":360,"path":361,"stem":362,"children":363},"Transport Layer Security (TLS)","\u002Fdocs\u002Fservices\u002Fnetwork\u002Ftls","docs\u002Fservices\u002Fnetwork\u002Ftls\u002Findex",[364],{"title":360,"path":361,"stem":362},{"title":366,"path":367,"stem":368,"children":369},"Web application firewall (WAF)","\u002Fdocs\u002Fservices\u002Fnetwork\u002Fwaf","docs\u002Fservices\u002Fnetwork\u002Fwaf\u002Findex",[370],{"title":366,"path":367,"stem":368},{"title":372,"path":373,"stem":374,"children":375},"Storage","\u002Fdocs\u002Fservices\u002Fstorage","docs\u002Fservices\u002Fstorage\u002Findex",[376,377,383,389,395,401,407,413],{"title":372,"path":373,"stem":374},{"title":378,"path":379,"stem":380,"children":381},"Folders","\u002Fdocs\u002Fservices\u002Fstorage\u002Fbuckets","docs\u002Fservices\u002Fstorage\u002Fbuckets\u002Findex",[382],{"title":378,"path":379,"stem":380},{"title":384,"path":385,"stem":386,"children":387},"Signed URLs and access","\u002Fdocs\u002Fservices\u002Fstorage\u002Ffile-tokens","docs\u002Fservices\u002Fstorage\u002Ffile-tokens\u002Findex",[388],{"title":384,"path":385,"stem":386},{"title":390,"path":391,"stem":392,"children":393},"Serve and transform images","\u002Fdocs\u002Fservices\u002Fstorage\u002Fimages","docs\u002Fservices\u002Fstorage\u002Fimages\u002Findex",[394],{"title":390,"path":391,"stem":392},{"title":396,"path":397,"stem":398,"children":399},"3D assets","\u002Fdocs\u002Fservices\u002Fstorage\u002Fmodel-viewer","docs\u002Fservices\u002Fstorage\u002Fmodel-viewer\u002Findex",[400],{"title":396,"path":397,"stem":398},{"title":402,"path":403,"stem":404,"children":405},"Access control and visibility","\u002Fdocs\u002Fservices\u002Fstorage\u002Fpermissions","docs\u002Fservices\u002Fstorage\u002Fpermissions\u002Findex",[406],{"title":402,"path":403,"stem":404},{"title":408,"path":409,"stem":410,"children":411},"Quick start","\u002Fdocs\u002Fservices\u002Fstorage\u002Fquick-start","docs\u002Fservices\u002Fstorage\u002Fquick-start\u002Findex",[412],{"title":408,"path":409,"stem":410},{"title":414,"path":415,"stem":416,"children":417},"Upload and manage files","\u002Fdocs\u002Fservices\u002Fstorage\u002Fupload-download","docs\u002Fservices\u002Fstorage\u002Fupload-download\u002Findex",[418],{"title":414,"path":415,"stem":416},{"title":420,"path":421,"stem":422,"children":423},"Webhooks","\u002Fdocs\u002Fservices\u002Fwebhooks","docs\u002Fservices\u002Fwebhooks\u002Findex",[424,425,431],{"title":420,"path":421,"stem":422},{"title":426,"path":427,"stem":428,"children":429},"Delivery","\u002Fdocs\u002Fservices\u002Fwebhooks\u002Fdelivery","docs\u002Fservices\u002Fwebhooks\u002Fdelivery\u002Findex",[430],{"title":426,"path":427,"stem":428},{"title":432,"path":433,"stem":434,"children":435},"Security","\u002Fdocs\u002Fservices\u002Fwebhooks\u002Fsecurity","docs\u002Fservices\u002Fwebhooks\u002Fsecurity\u002Findex",[436],{"title":432,"path":433,"stem":434},{"title":438,"path":439,"stem":440,"children":441},"Studios","\u002Fdocs\u002Fstudios","docs\u002Fstudios\u002Findex",[442,443,449,616,964,1246,1428],{"title":438,"path":439,"stem":440},{"title":444,"path":445,"stem":446,"children":447},"AI Studio","\u002Fdocs\u002Fstudios\u002Fai","docs\u002Fstudios\u002Fai\u002Findex",[448],{"title":444,"path":445,"stem":446},{"title":450,"path":451,"stem":452,"children":453},"Analytics Studio","\u002Fdocs\u002Fstudios\u002Fanalytics","docs\u002Fstudios\u002Fanalytics\u002Findex",[454,455,498,535,541,560,591],{"title":450,"path":451,"stem":452},{"title":456,"path":457,"stem":458,"children":459,"icon":461},"Make your app's data analyzable","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fanalytics-json","docs\u002Fstudios\u002Fanalytics\u002Fanalytics-json\u002Findex",[460,462,468,474,480,486,492],{"title":456,"path":457,"stem":458,"icon":461},"i-lucide-table-2",{"title":463,"path":464,"stem":465,"children":466},"Column locators","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fanalytics-json\u002Fcolumn-locators","docs\u002Fstudios\u002Fanalytics\u002Fanalytics-json\u002Fcolumn-locators\u002Findex",[467],{"title":463,"path":464,"stem":465},{"title":469,"path":470,"stem":471,"children":472},"Declaring a view","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fanalytics-json\u002Fdeclaring-a-view","docs\u002Fstudios\u002Fanalytics\u002Fanalytics-json\u002Fdeclaring-a-view\u002Findex",[473],{"title":469,"path":470,"stem":471},{"title":475,"path":476,"stem":477,"children":478},"Example","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fanalytics-json\u002Fexample","docs\u002Fstudios\u002Fanalytics\u002Fanalytics-json\u002Fexample\u002Findex",[479],{"title":475,"path":476,"stem":477},{"title":481,"path":482,"stem":483,"children":484},"Semantic roles","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fanalytics-json\u002Fsemantic-roles","docs\u002Fstudios\u002Fanalytics\u002Fanalytics-json\u002Fsemantic-roles\u002Findex",[485],{"title":481,"path":482,"stem":483},{"title":487,"path":488,"stem":489,"children":490},"Tenant isolation","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fanalytics-json\u002Ftenant-isolation","docs\u002Fstudios\u002Fanalytics\u002Fanalytics-json\u002Ftenant-isolation\u002Findex",[491],{"title":487,"path":488,"stem":489},{"title":493,"path":494,"stem":495,"children":496},"The contract","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fanalytics-json\u002Fthe-contract","docs\u002Fstudios\u002Fanalytics\u002Fanalytics-json\u002Fthe-contract\u002Findex",[497],{"title":493,"path":494,"stem":495},{"title":499,"path":500,"stem":501,"children":502,"icon":504},"Stream commerce activity","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fevents","docs\u002Fstudios\u002Fanalytics\u002Fevents\u002Findex",[503,505,511,517,523,529],{"title":499,"path":500,"stem":501,"icon":504},"i-lucide-radio",{"title":506,"path":507,"stem":508,"children":509},"Delivery guarantees","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fevents\u002Fdelivery-guarantees","docs\u002Fstudios\u002Fanalytics\u002Fevents\u002Fdelivery-guarantees\u002Findex",[510],{"title":506,"path":507,"stem":508},{"title":512,"path":513,"stem":514,"children":515},"Event types for reporting","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fevents\u002Fevent-types-for-reporting","docs\u002Fstudios\u002Fanalytics\u002Fevents\u002Fevent-types-for-reporting\u002Findex",[516],{"title":512,"path":513,"stem":514},{"title":518,"path":519,"stem":520,"children":521},"Register an endpoint","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fevents\u002Fregister-an-endpoint","docs\u002Fstudios\u002Fanalytics\u002Fevents\u002Fregister-an-endpoint\u002Findex",[522],{"title":518,"path":519,"stem":520},{"title":524,"path":525,"stem":526,"children":527},"The event stream","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fevents\u002Fthe-event-stream","docs\u002Fstudios\u002Fanalytics\u002Fevents\u002Fthe-event-stream\u002Findex",[528],{"title":524,"path":525,"stem":526},{"title":530,"path":531,"stem":532,"children":533},"Verify a delivery","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fevents\u002Fverify-a-delivery","docs\u002Fstudios\u002Fanalytics\u002Fevents\u002Fverify-a-delivery\u002Findex",[534],{"title":530,"path":531,"stem":532},{"title":536,"path":537,"stem":538,"children":539,"icon":29},"Getting data out","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fgetting-data-out","docs\u002Fstudios\u002Fanalytics\u002Fgetting-data-out\u002Findex",[540],{"title":536,"path":537,"stem":538,"icon":29},{"title":542,"path":543,"stem":544,"children":545,"icon":547},"Limits and what's next","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Flimits","docs\u002Fstudios\u002Fanalytics\u002Flimits\u002Findex",[546,548,554],{"title":542,"path":543,"stem":544,"icon":547},"i-lucide-list-checks",{"title":549,"path":550,"stem":551,"children":552},"Designing for what's coming","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Flimits\u002Fdesigning-for-whats-coming","docs\u002Fstudios\u002Fanalytics\u002Flimits\u002Fdesigning-for-whats-coming\u002Findex",[553],{"title":549,"path":550,"stem":551},{"title":555,"path":556,"stem":557,"children":558},"What does not exist yet","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Flimits\u002Fwhat-does-not-exist-yet","docs\u002Fstudios\u002Fanalytics\u002Flimits\u002Fwhat-does-not-exist-yet\u002Findex",[559],{"title":555,"path":556,"stem":557},{"title":561,"path":562,"stem":563,"children":564,"icon":566},"Build your own reporting store","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fown-store","docs\u002Fstudios\u002Fanalytics\u002Fown-store\u002Findex",[565,567,573,579,585],{"title":561,"path":562,"stem":563,"icon":566},"i-lucide-database",{"title":568,"path":569,"stem":570,"children":571},"Backfill","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fown-store\u002Fbackfill","docs\u002Fstudios\u002Fanalytics\u002Fown-store\u002Fbackfill\u002Findex",[572],{"title":568,"path":569,"stem":570},{"title":574,"path":575,"stem":576,"children":577},"Incremental sync","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fown-store\u002Fincremental-sync","docs\u002Fstudios\u002Fanalytics\u002Fown-store\u002Fincremental-sync\u002Findex",[578],{"title":574,"path":575,"stem":576},{"title":580,"path":581,"stem":582,"children":583},"Modelling","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fown-store\u002Fmodelling","docs\u002Fstudios\u002Fanalytics\u002Fown-store\u002Fmodelling\u002Findex",[584],{"title":580,"path":581,"stem":582},{"title":586,"path":587,"stem":588,"children":589},"Pull versus push","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fown-store\u002Fpull-vs-push","docs\u002Fstudios\u002Fanalytics\u002Fown-store\u002Fpull-vs-push\u002Findex",[590],{"title":586,"path":587,"stem":588},{"title":592,"path":593,"stem":594,"children":595,"icon":597},"What the tenant sees","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fwhat-the-tenant-sees","docs\u002Fstudios\u002Fanalytics\u002Fwhat-the-tenant-sees\u002Findex",[596,598,604,610],{"title":592,"path":593,"stem":594,"icon":597},"i-lucide-chart-column",{"title":599,"path":600,"stem":601,"children":602},"Cohorts","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fwhat-the-tenant-sees\u002Fcohorts","docs\u002Fstudios\u002Fanalytics\u002Fwhat-the-tenant-sees\u002Fcohorts\u002Findex",[603],{"title":599,"path":600,"stem":601},{"title":605,"path":606,"stem":607,"children":608},"Datasets and charts","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fwhat-the-tenant-sees\u002Fdatasets-and-charts","docs\u002Fstudios\u002Fanalytics\u002Fwhat-the-tenant-sees\u002Fdatasets-and-charts\u002Findex",[609],{"title":605,"path":606,"stem":607},{"title":611,"path":612,"stem":613,"children":614},"Studio overview","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fwhat-the-tenant-sees\u002Fstudio-overview","docs\u002Fstudios\u002Fanalytics\u002Fwhat-the-tenant-sees\u002Fstudio-overview\u002Findex",[615],{"title":611,"path":612,"stem":613},{"title":617,"path":618,"stem":619,"children":620},"App Studio","\u002Fdocs\u002Fstudios\u002Fapps","docs\u002Fstudios\u002Fapps\u002Findex",[621,622,659,730,795,813,880],{"title":617,"path":618,"stem":619},{"title":623,"path":624,"stem":625,"children":626,"icon":628},"Admin UI","\u002Fdocs\u002Fstudios\u002Fapps\u002Fadmin-ui","docs\u002Fstudios\u002Fapps\u002Fadmin-ui\u002Findex",[627,629,635,641,647,653],{"title":623,"path":624,"stem":625,"icon":628},"i-lucide-layout-dashboard",{"title":630,"path":631,"stem":632,"children":633},"How the Cockpit renders","\u002Fdocs\u002Fstudios\u002Fapps\u002Fadmin-ui\u002Fhow-cockpit-renders","docs\u002Fstudios\u002Fapps\u002Fadmin-ui\u002Fhow-cockpit-renders\u002Findex",[634],{"title":630,"path":631,"stem":632},{"title":636,"path":637,"stem":638,"children":639},"Preview locally","\u002Fdocs\u002Fstudios\u002Fapps\u002Fadmin-ui\u002Fpreview-locally","docs\u002Fstudios\u002Fapps\u002Fadmin-ui\u002Fpreview-locally\u002Findex",[640],{"title":636,"path":637,"stem":638},{"title":642,"path":643,"stem":644,"children":645},"Reading settings","\u002Fdocs\u002Fstudios\u002Fapps\u002Fadmin-ui\u002Freading-settings","docs\u002Fstudios\u002Fapps\u002Fadmin-ui\u002Freading-settings\u002Findex",[646],{"title":642,"path":643,"stem":644},{"title":648,"path":649,"stem":650,"children":651},"Settings","\u002Fdocs\u002Fstudios\u002Fapps\u002Fadmin-ui\u002Fsettings","docs\u002Fstudios\u002Fapps\u002Fadmin-ui\u002Fsettings\u002Findex",[652],{"title":648,"path":649,"stem":650},{"title":654,"path":655,"stem":656,"children":657},"Vocabularies","\u002Fdocs\u002Fstudios\u002Fapps\u002Fadmin-ui\u002Fvocabularies","docs\u002Fstudios\u002Fapps\u002Fadmin-ui\u002Fvocabularies\u002Findex",[658],{"title":654,"path":655,"stem":656},{"title":660,"path":661,"stem":662,"children":663,"icon":665},"Your app's API","\u002Fdocs\u002Fstudios\u002Fapps\u002Fapi","docs\u002Fstudios\u002Fapps\u002Fapi\u002Findex",[664,666,671,677,683,689,695,700,706,712,718,724],{"title":660,"path":661,"stem":662,"icon":665},"i-lucide-route",{"title":324,"path":667,"stem":668,"children":669},"\u002Fdocs\u002Fstudios\u002Fapps\u002Fapi\u002Fcaching","docs\u002Fstudios\u002Fapps\u002Fapi\u002Fcaching\u002Findex",[670],{"title":324,"path":667,"stem":668},{"title":672,"path":673,"stem":674,"children":675},"Calling another app","\u002Fdocs\u002Fstudios\u002Fapps\u002Fapi\u002Fcalling-another-app","docs\u002Fstudios\u002Fapps\u002Fapi\u002Fcalling-another-app\u002Findex",[676],{"title":672,"path":673,"stem":674},{"title":678,"path":679,"stem":680,"children":681},"Capabilities","\u002Fdocs\u002Fstudios\u002Fapps\u002Fapi\u002Fcapabilities","docs\u002Fstudios\u002Fapps\u002Fapi\u002Fcapabilities\u002Findex",[682],{"title":678,"path":679,"stem":680},{"title":684,"path":685,"stem":686,"children":687},"Capability reference","\u002Fdocs\u002Fstudios\u002Fapps\u002Fapi\u002Fcapability-reference","docs\u002Fstudios\u002Fapps\u002Fapi\u002Fcapability-reference\u002Findex",[688],{"title":684,"path":685,"stem":686},{"title":690,"path":691,"stem":692,"children":693},"CRUD","\u002Fdocs\u002Fstudios\u002Fapps\u002Fapi\u002Fcrud","docs\u002Fstudios\u002Fapps\u002Fapi\u002Fcrud\u002Findex",[694],{"title":690,"path":691,"stem":692},{"title":240,"path":696,"stem":697,"children":698},"\u002Fdocs\u002Fstudios\u002Fapps\u002Fapi\u002Ferrors","docs\u002Fstudios\u002Fapps\u002Fapi\u002Ferrors\u002Findex",[699],{"title":240,"path":696,"stem":697},{"title":701,"path":702,"stem":703,"children":704},"Overriding a capability","\u002Fdocs\u002Fstudios\u002Fapps\u002Fapi\u002Foverriding-a-capability","docs\u002Fstudios\u002Fapps\u002Fapi\u002Foverriding-a-capability\u002Findex",[705],{"title":701,"path":702,"stem":703},{"title":707,"path":708,"stem":709,"children":710},"Pagination and filtering","\u002Fdocs\u002Fstudios\u002Fapps\u002Fapi\u002Fpagination-and-filtering","docs\u002Fstudios\u002Fapps\u002Fapi\u002Fpagination-and-filtering\u002Findex",[711],{"title":707,"path":708,"stem":709},{"title":713,"path":714,"stem":715,"children":716},"Published OpenAPI","\u002Fdocs\u002Fstudios\u002Fapps\u002Fapi\u002Fpublished-openapi","docs\u002Fstudios\u002Fapps\u002Fapi\u002Fpublished-openapi\u002Findex",[717],{"title":713,"path":714,"stem":715},{"title":719,"path":720,"stem":721,"children":722},"The router","\u002Fdocs\u002Fstudios\u002Fapps\u002Fapi\u002Frouter","docs\u002Fstudios\u002Fapps\u002Fapi\u002Frouter\u002Findex",[723],{"title":719,"path":720,"stem":721},{"title":725,"path":726,"stem":727,"children":728},"Tags","\u002Fdocs\u002Fstudios\u002Fapps\u002Fapi\u002Ftags","docs\u002Fstudios\u002Fapps\u002Fapi\u002Ftags\u002Findex",[729],{"title":725,"path":726,"stem":727},{"title":731,"path":732,"stem":733,"children":734,"icon":566},"Data model","\u002Fdocs\u002Fstudios\u002Fapps\u002Fdata-model","docs\u002Fstudios\u002Fapps\u002Fdata-model\u002Findex",[735,736,742,748,754,760,766,772,778,784,789],{"title":731,"path":732,"stem":733,"icon":566},{"title":737,"path":738,"stem":739,"children":740},"Adapters","\u002Fdocs\u002Fstudios\u002Fapps\u002Fdata-model\u002Fadapters","docs\u002Fstudios\u002Fapps\u002Fdata-model\u002Fadapters\u002Findex",[741],{"title":737,"path":738,"stem":739},{"title":743,"path":744,"stem":745,"children":746},"Column types","\u002Fdocs\u002Fstudios\u002Fapps\u002Fdata-model\u002Fcolumn-types","docs\u002Fstudios\u002Fapps\u002Fdata-model\u002Fcolumn-types\u002Findex",[747],{"title":743,"path":744,"stem":745},{"title":749,"path":750,"stem":751,"children":752},"Cross-app lookups","\u002Fdocs\u002Fstudios\u002Fapps\u002Fdata-model\u002Fcross-app-lookups","docs\u002Fstudios\u002Fapps\u002Fdata-model\u002Fcross-app-lookups\u002Findex",[753],{"title":749,"path":750,"stem":751},{"title":755,"path":756,"stem":757,"children":758},"Migrations","\u002Fdocs\u002Fstudios\u002Fapps\u002Fdata-model\u002Fmigrations","docs\u002Fstudios\u002Fapps\u002Fdata-model\u002Fmigrations\u002Findex",[759],{"title":755,"path":756,"stem":757},{"title":761,"path":762,"stem":763,"children":764},"Projections","\u002Fdocs\u002Fstudios\u002Fapps\u002Fdata-model\u002Fprojections","docs\u002Fstudios\u002Fapps\u002Fdata-model\u002Fprojections\u002Findex",[765],{"title":761,"path":762,"stem":763},{"title":767,"path":768,"stem":769,"children":770},"Relationships","\u002Fdocs\u002Fstudios\u002Fapps\u002Fdata-model\u002Frelationships","docs\u002Fstudios\u002Fapps\u002Fdata-model\u002Frelationships\u002Findex",[771],{"title":767,"path":768,"stem":769},{"title":773,"path":774,"stem":775,"children":776},"Schema reference","\u002Fdocs\u002Fstudios\u002Fapps\u002Fdata-model\u002Fschema-reference","docs\u002Fstudios\u002Fapps\u002Fdata-model\u002Fschema-reference\u002Findex",[777],{"title":773,"path":774,"stem":775},{"title":779,"path":780,"stem":781,"children":782},"Scoping","\u002Fdocs\u002Fstudios\u002Fapps\u002Fdata-model\u002Fscoping","docs\u002Fstudios\u002Fapps\u002Fdata-model\u002Fscoping\u002Findex",[783],{"title":779,"path":780,"stem":781},{"title":487,"path":785,"stem":786,"children":787},"\u002Fdocs\u002Fstudios\u002Fapps\u002Fdata-model\u002Ftenant-isolation","docs\u002Fstudios\u002Fapps\u002Fdata-model\u002Ftenant-isolation\u002Findex",[788],{"title":487,"path":785,"stem":786},{"title":790,"path":791,"stem":792,"children":793},"The typed client","\u002Fdocs\u002Fstudios\u002Fapps\u002Fdata-model\u002Ftyped-client","docs\u002Fstudios\u002Fapps\u002Fdata-model\u002Ftyped-client\u002Findex",[794],{"title":790,"path":791,"stem":792},{"title":796,"path":797,"stem":798,"children":799},"Getting started","\u002Fdocs\u002Fstudios\u002Fapps\u002Fgetting-started","docs\u002Fstudios\u002Fapps\u002Fgetting-started\u002Findex",[800,801,807],{"title":796,"path":797,"stem":798},{"title":802,"path":803,"stem":804,"children":805},"App model","\u002Fdocs\u002Fstudios\u002Fapps\u002Fgetting-started\u002Fapp-model","docs\u002Fstudios\u002Fapps\u002Fgetting-started\u002Fapp-model\u002Findex",[806],{"title":802,"path":803,"stem":804},{"title":808,"path":809,"stem":810,"children":811},"App isolation","\u002Fdocs\u002Fstudios\u002Fapps\u002Fgetting-started\u002Fisolation","docs\u002Fstudios\u002Fapps\u002Fgetting-started\u002Fisolation\u002Findex",[812],{"title":808,"path":809,"stem":810},{"title":814,"path":815,"stem":816,"children":817,"icon":819},"Platform services","\u002Fdocs\u002Fstudios\u002Fapps\u002Fplatform-services","docs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Findex",[818,820,826,832,838,844,850,856,862,868,874],{"title":814,"path":815,"stem":816,"icon":819},"i-lucide-boxes",{"title":821,"path":822,"stem":823,"children":824},"Entity access","\u002Fdocs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Fentity-access","docs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Fentity-access\u002Findex",[825],{"title":821,"path":822,"stem":823},{"title":827,"path":828,"stem":829,"children":830},"Events you emit","\u002Fdocs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Fevents-you-emit","docs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Fevents-you-emit\u002Findex",[831],{"title":827,"path":828,"stem":829},{"title":833,"path":834,"stem":835,"children":836},"Events you receive","\u002Fdocs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Fevents-you-receive","docs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Fevents-you-receive\u002Findex",[837],{"title":833,"path":834,"stem":835},{"title":839,"path":840,"stem":841,"children":842},"Not yet proven","\u002Fdocs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Fnot-yet-proven","docs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Fnot-yet-proven\u002Findex",[843],{"title":839,"path":840,"stem":841},{"title":845,"path":846,"stem":847,"children":848},"Outbound HTTP","\u002Fdocs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Foutbound-http","docs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Foutbound-http\u002Findex",[849],{"title":845,"path":846,"stem":847},{"title":851,"path":852,"stem":853,"children":854},"Permissions","\u002Fdocs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Fpermissions","docs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Fpermissions\u002Findex",[855],{"title":851,"path":852,"stem":853},{"title":857,"path":858,"stem":859,"children":860},"Person permissions","\u002Fdocs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Fperson-permissions","docs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Fperson-permissions\u002Findex",[861],{"title":857,"path":858,"stem":859},{"title":863,"path":864,"stem":865,"children":866},"Scheduled work","\u002Fdocs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Fscheduled-work","docs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Fscheduled-work\u002Findex",[867],{"title":863,"path":864,"stem":865},{"title":869,"path":870,"stem":871,"children":872},"Tenant identity","\u002Fdocs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Ftenant-identity","docs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Ftenant-identity\u002Findex",[873],{"title":869,"path":870,"stem":871},{"title":875,"path":876,"stem":877,"children":878},"Tracing","\u002Fdocs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Ftracing","docs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Ftracing\u002Findex",[879],{"title":875,"path":876,"stem":877},{"title":881,"path":882,"stem":883,"children":884,"icon":886},"Ship and operate","\u002Fdocs\u002Fstudios\u002Fapps\u002Fship-and-operate","docs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Findex",[885,887,893,899,905,911,917,923,929,935,941,947,953,959],{"title":881,"path":882,"stem":883,"icon":886},"i-lucide-rocket",{"title":888,"path":889,"stem":890,"children":891},"Billing","\u002Fdocs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fbilling","docs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fbilling\u002Findex",[892],{"title":888,"path":889,"stem":890},{"title":894,"path":895,"stem":896,"children":897},"Consent","\u002Fdocs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fconsent","docs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fconsent\u002Findex",[898],{"title":894,"path":895,"stem":896},{"title":900,"path":901,"stem":902,"children":903},"Dependencies","\u002Fdocs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fdependencies","docs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fdependencies\u002Findex",[904],{"title":900,"path":901,"stem":902},{"title":906,"path":907,"stem":908,"children":909},"Deploying","\u002Fdocs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fdeploying","docs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fdeploying\u002Findex",[910],{"title":906,"path":907,"stem":908},{"title":912,"path":913,"stem":914,"children":915},"Manifest reference","\u002Fdocs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fmanifest-reference","docs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fmanifest-reference\u002Findex",[916],{"title":912,"path":913,"stem":914},{"title":918,"path":919,"stem":920,"children":921},"Operating","\u002Fdocs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Foperating","docs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Foperating\u002Findex",[922],{"title":918,"path":919,"stem":920},{"title":924,"path":925,"stem":926,"children":927},"Pairing a frontend","\u002Fdocs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fpairing-a-frontend","docs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fpairing-a-frontend\u002Findex",[928],{"title":924,"path":925,"stem":926},{"title":930,"path":931,"stem":932,"children":933},"Private or Marketplace","\u002Fdocs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fprivate-vs-marketplace","docs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fprivate-vs-marketplace\u002Findex",[934],{"title":930,"path":931,"stem":932},{"title":936,"path":937,"stem":938,"children":939},"Publish and install","\u002Fdocs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fpublish-and-install","docs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fpublish-and-install\u002Findex",[940],{"title":936,"path":937,"stem":938},{"title":942,"path":943,"stem":944,"children":945},"Testing","\u002Fdocs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Ftesting","docs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Ftesting\u002Findex",[946],{"title":942,"path":943,"stem":944},{"title":948,"path":949,"stem":950,"children":951},"Validate","\u002Fdocs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fvalidate","docs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fvalidate\u002Findex",[952],{"title":948,"path":949,"stem":950},{"title":954,"path":955,"stem":956,"children":957},"Verifying live","\u002Fdocs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fverifying-live","docs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fverifying-live\u002Findex",[958],{"title":954,"path":955,"stem":956},{"title":215,"path":960,"stem":961,"children":962},"\u002Fdocs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fversioning","docs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fversioning\u002Findex",[963],{"title":215,"path":960,"stem":961},{"title":965,"path":966,"stem":967,"children":968},"Commerce Studio","\u002Fdocs\u002Fstudios\u002Fcommerce","docs\u002Fstudios\u002Fcommerce\u002Findex",[969,970,1042,1096,1139,1144,1198],{"title":965,"path":966,"stem":967},{"title":971,"path":972,"stem":973,"children":974,"icon":976},"Build an app","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app","docs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Findex",[975,977,983,989,995,1001,1007,1013,1019,1025,1031,1036],{"title":971,"path":972,"stem":973,"icon":976},"i-lucide-puzzle",{"title":978,"path":979,"stem":980,"children":981},"Actions and writes","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Factions-and-writes","docs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Factions-and-writes\u002Findex",[982],{"title":978,"path":979,"stem":980},{"title":984,"path":985,"stem":986,"children":987},"cockpit.json reference","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Fcockpit-json-reference","docs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Fcockpit-json-reference\u002Findex",[988],{"title":984,"path":985,"stem":986},{"title":990,"path":991,"stem":992,"children":993},"Detail views","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Fdetail-views","docs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Fdetail-views\u002Findex",[994],{"title":990,"path":991,"stem":992},{"title":996,"path":997,"stem":998,"children":999},"Forms","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Fforms","docs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Fforms\u002Findex",[1000],{"title":996,"path":997,"stem":998},{"title":1002,"path":1003,"stem":1004,"children":1005},"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",[1006],{"title":1002,"path":1003,"stem":1004},{"title":1008,"path":1009,"stem":1010,"children":1011},"How it renders","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Fhow-it-renders","docs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Fhow-it-renders\u002Findex",[1012],{"title":1008,"path":1009,"stem":1010},{"title":1014,"path":1015,"stem":1016,"children":1017},"List views","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Flist-views","docs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Flist-views\u002Findex",[1018],{"title":1014,"path":1015,"stem":1016},{"title":1020,"path":1021,"stem":1022,"children":1023},"Navigation","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Fnavigation","docs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Fnavigation\u002Findex",[1024],{"title":1020,"path":1021,"stem":1022},{"title":1026,"path":1027,"stem":1028,"children":1029},"Permissions and scope","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Fpermissions-and-scope","docs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Fpermissions-and-scope\u002Findex",[1030],{"title":1026,"path":1027,"stem":1028},{"title":636,"path":1032,"stem":1033,"children":1034},"\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Fpreview-locally","docs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Fpreview-locally\u002Findex",[1035],{"title":636,"path":1032,"stem":1033},{"title":1037,"path":1038,"stem":1039,"children":1040},"Widgets","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Fwidgets","docs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Fwidgets\u002Findex",[1041],{"title":1037,"path":1038,"stem":1039},{"title":1043,"path":1044,"stem":1045,"children":1046,"icon":1048},"Catalog","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fcatalog","docs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Findex",[1047,1049,1055,1061,1067,1073,1078,1084,1090],{"title":1043,"path":1044,"stem":1045,"icon":1048},"i-lucide-package",{"title":1050,"path":1051,"stem":1052,"children":1053},"Assets","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Fassets","docs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Fassets\u002Findex",[1054],{"title":1050,"path":1051,"stem":1052},{"title":1056,"path":1057,"stem":1058,"children":1059},"Associations","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Fassociations","docs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Fassociations\u002Findex",[1060],{"title":1056,"path":1057,"stem":1058},{"title":1062,"path":1063,"stem":1064,"children":1065},"Categories","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Fcategories","docs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Fcategories\u002Findex",[1066],{"title":1062,"path":1063,"stem":1064},{"title":1068,"path":1069,"stem":1070,"children":1071},"Completeness","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Fcompleteness","docs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Fcompleteness\u002Findex",[1072],{"title":1068,"path":1069,"stem":1070},{"title":731,"path":1074,"stem":1075,"children":1076},"\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Fdata-model","docs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Fdata-model\u002Findex",[1077],{"title":731,"path":1074,"stem":1075},{"title":1079,"path":1080,"stem":1081,"children":1082},"Import and export","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Fimport-and-export","docs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Fimport-and-export\u002Findex",[1083],{"title":1079,"path":1080,"stem":1081},{"title":1085,"path":1086,"stem":1087,"children":1088},"Products","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Fproducts","docs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Fproducts\u002Findex",[1089],{"title":1085,"path":1086,"stem":1087},{"title":1091,"path":1092,"stem":1093,"children":1094},"References","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Freferences","docs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Freferences\u002Findex",[1095],{"title":1091,"path":1092,"stem":1093},{"title":1097,"path":1098,"stem":1099,"children":1100,"icon":1102},"Customers","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fcustomers","docs\u002Fstudios\u002Fcommerce\u002Fcustomers\u002Findex",[1101,1103,1109,1115,1121,1127,1133],{"title":1097,"path":1098,"stem":1099,"icon":1102},"i-lucide-building-2",{"title":1104,"path":1105,"stem":1106,"children":1107},"Contacts","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fcustomers\u002Fcontacts","docs\u002Fstudios\u002Fcommerce\u002Fcustomers\u002Fcontacts\u002Findex",[1108],{"title":1104,"path":1105,"stem":1106},{"title":1110,"path":1111,"stem":1112,"children":1113},"Organizations","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fcustomers\u002Forganizations","docs\u002Fstudios\u002Fcommerce\u002Fcustomers\u002Forganizations\u002Findex",[1114],{"title":1110,"path":1111,"stem":1112},{"title":1116,"path":1117,"stem":1118,"children":1119},"Roles and permissions","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fcustomers\u002Froles-and-permissions","docs\u002Fstudios\u002Fcommerce\u002Fcustomers\u002Froles-and-permissions\u002Findex",[1120],{"title":1116,"path":1117,"stem":1118},{"title":1122,"path":1123,"stem":1124,"children":1125},"Segments","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fcustomers\u002Fsegments","docs\u002Fstudios\u002Fcommerce\u002Fcustomers\u002Fsegments\u002Findex",[1126],{"title":1122,"path":1123,"stem":1124},{"title":1128,"path":1129,"stem":1130,"children":1131},"Storefront accounts","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fcustomers\u002Fstorefront-accounts","docs\u002Fstudios\u002Fcommerce\u002Fcustomers\u002Fstorefront-accounts\u002Findex",[1132],{"title":1128,"path":1129,"stem":1130},{"title":1134,"path":1135,"stem":1136,"children":1137},"Value lists","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fcustomers\u002Fvalue-lists","docs\u002Fstudios\u002Fcommerce\u002Fcustomers\u002Fvalue-lists\u002Findex",[1138],{"title":1134,"path":1135,"stem":1136},{"title":796,"path":1140,"stem":1141,"children":1142,"icon":886},"\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fgetting-started","docs\u002Fstudios\u002Fcommerce\u002Fgetting-started\u002Findex",[1143],{"title":796,"path":1140,"stem":1141,"icon":886},{"title":1145,"path":1146,"stem":1147,"children":1148,"icon":1150},"Markets and pricing","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing","docs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Findex",[1149,1151,1157,1163,1169,1175,1181,1187,1192],{"title":1145,"path":1146,"stem":1147,"icon":1150},"i-lucide-globe",{"title":1152,"path":1153,"stem":1154,"children":1155},"Carriers and tracking","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Fcarriers-and-tracking","docs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Fcarriers-and-tracking\u002Findex",[1156],{"title":1152,"path":1153,"stem":1154},{"title":1158,"path":1159,"stem":1160,"children":1161},"Channels","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Fchannels","docs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Fchannels\u002Findex",[1162],{"title":1158,"path":1159,"stem":1160},{"title":1164,"path":1165,"stem":1166,"children":1167},"Markets","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Fmarkets","docs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Fmarkets\u002Findex",[1168],{"title":1164,"path":1165,"stem":1166},{"title":1170,"path":1171,"stem":1172,"children":1173},"Payment lifecycle","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Fpayment-lifecycle","docs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Fpayment-lifecycle\u002Findex",[1174],{"title":1170,"path":1171,"stem":1172},{"title":1176,"path":1177,"stem":1178,"children":1179},"Payment methods","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Fpayment-methods","docs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Fpayment-methods\u002Findex",[1180],{"title":1176,"path":1177,"stem":1178},{"title":1182,"path":1183,"stem":1184,"children":1185},"Price lists","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Fprice-lists","docs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Fprice-lists\u002Findex",[1186],{"title":1182,"path":1183,"stem":1184},{"title":648,"path":1188,"stem":1189,"children":1190},"\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Fsettings","docs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Fsettings\u002Findex",[1191],{"title":648,"path":1188,"stem":1189},{"title":1193,"path":1194,"stem":1195,"children":1196},"Shipping rates","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Fshipping-rates","docs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Fshipping-rates\u002Findex",[1197],{"title":1193,"path":1194,"stem":1195},{"title":1199,"path":1200,"stem":1201,"children":1202,"icon":1204},"Orders","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Forders","docs\u002Fstudios\u002Fcommerce\u002Forders\u002Findex",[1203,1205,1211,1217,1223,1229,1234,1240],{"title":1199,"path":1200,"stem":1201,"icon":1204},"i-lucide-receipt-text",{"title":1206,"path":1207,"stem":1208,"children":1209},"Carts","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Forders\u002Fcarts","docs\u002Fstudios\u002Fcommerce\u002Forders\u002Fcarts\u002Findex",[1210],{"title":1206,"path":1207,"stem":1208},{"title":1212,"path":1213,"stem":1214,"children":1215},"Events and comments","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Forders\u002Fevents-and-comments","docs\u002Fstudios\u002Fcommerce\u002Forders\u002Fevents-and-comments\u002Findex",[1216],{"title":1212,"path":1213,"stem":1214},{"title":1218,"path":1219,"stem":1220,"children":1221},"Number ranges","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Forders\u002Fnumber-ranges","docs\u002Fstudios\u002Fcommerce\u002Forders\u002Fnumber-ranges\u002Findex",[1222],{"title":1218,"path":1219,"stem":1220},{"title":1224,"path":1225,"stem":1226,"children":1227},"Order lists","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Forders\u002Forder-lists","docs\u002Fstudios\u002Fcommerce\u002Forders\u002Forder-lists\u002Findex",[1228],{"title":1224,"path":1225,"stem":1226},{"title":1199,"path":1230,"stem":1231,"children":1232},"\u002Fdocs\u002Fstudios\u002Fcommerce\u002Forders\u002Forders","docs\u002Fstudios\u002Fcommerce\u002Forders\u002Forders\u002Findex",[1233],{"title":1199,"path":1230,"stem":1231},{"title":1235,"path":1236,"stem":1237,"children":1238},"Returns","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Forders\u002Freturns","docs\u002Fstudios\u002Fcommerce\u002Forders\u002Freturns\u002Findex",[1239],{"title":1235,"path":1236,"stem":1237},{"title":1241,"path":1242,"stem":1243,"children":1244},"Stock","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Forders\u002Fstock","docs\u002Fstudios\u002Fcommerce\u002Forders\u002Fstock\u002Findex",[1245],{"title":1241,"path":1242,"stem":1243},{"title":1247,"path":1248,"stem":1249,"children":1250},"Integration Studio","\u002Fdocs\u002Fstudios\u002Fintegration-studio","docs\u002Fstudios\u002Fintegration-studio\u002Findex",[1251,1252,1289,1326,1356,1361,1391],{"title":1247,"path":1248,"stem":1249},{"title":1253,"path":1254,"stem":1255,"children":1256,"icon":1258},"Build the workflow","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fbuild","docs\u002Fstudios\u002Fintegration-studio\u002Fbuild\u002Findex",[1257,1259,1265,1271,1277,1283],{"title":1253,"path":1254,"stem":1255,"icon":1258},"i-lucide-workflow",{"title":1260,"path":1261,"stem":1262,"children":1263},"Expressions","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fbuild\u002Fexpressions","docs\u002Fstudios\u002Fintegration-studio\u002Fbuild\u002Fexpressions\u002Findex",[1264],{"title":1260,"path":1261,"stem":1262},{"title":1266,"path":1267,"stem":1268,"children":1269},"Node catalog","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fbuild\u002Fnode-catalog","docs\u002Fstudios\u002Fintegration-studio\u002Fbuild\u002Fnode-catalog\u002Findex",[1270],{"title":1266,"path":1267,"stem":1268},{"title":1272,"path":1273,"stem":1274,"children":1275},"Node configuration","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fbuild\u002Fnode-configuration","docs\u002Fstudios\u002Fintegration-studio\u002Fbuild\u002Fnode-configuration\u002Findex",[1276],{"title":1272,"path":1273,"stem":1274},{"title":1278,"path":1279,"stem":1280,"children":1281},"Templates","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fbuild\u002Ftemplates","docs\u002Fstudios\u002Fintegration-studio\u002Fbuild\u002Ftemplates\u002Findex",[1282],{"title":1278,"path":1279,"stem":1280},{"title":1284,"path":1285,"stem":1286,"children":1287},"The workflow document","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fbuild\u002Fworkflow-model","docs\u002Fstudios\u002Fintegration-studio\u002Fbuild\u002Fworkflow-model\u002Findex",[1288],{"title":1284,"path":1285,"stem":1286},{"title":1290,"path":1291,"stem":1292,"children":1293,"icon":1295},"Connect the systems","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fconnect","docs\u002Fstudios\u002Fintegration-studio\u002Fconnect\u002Findex",[1294,1296,1302,1308,1314,1320],{"title":1290,"path":1291,"stem":1292,"icon":1295},"i-lucide-key-round",{"title":1297,"path":1298,"stem":1299,"children":1300},"Credentials","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fconnect\u002Fcredentials","docs\u002Fstudios\u002Fintegration-studio\u002Fconnect\u002Fcredentials\u002Findex",[1301],{"title":1297,"path":1298,"stem":1299},{"title":1303,"path":1304,"stem":1305,"children":1306},"File transfer","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fconnect\u002Ffiles","docs\u002Fstudios\u002Fintegration-studio\u002Fconnect\u002Ffiles\u002Findex",[1307],{"title":1303,"path":1304,"stem":1305},{"title":1309,"path":1310,"stem":1311,"children":1312},"OAuth","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fconnect\u002Foauth","docs\u002Fstudios\u002Fintegration-studio\u002Fconnect\u002Foauth\u002Findex",[1313],{"title":1309,"path":1310,"stem":1311},{"title":1315,"path":1316,"stem":1317,"children":1318},"Reaching Revenue Cloud","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fconnect\u002Freaching-revenue-cloud","docs\u002Fstudios\u002Fintegration-studio\u002Fconnect\u002Freaching-revenue-cloud\u002Findex",[1319],{"title":1315,"path":1316,"stem":1317},{"title":1321,"path":1322,"stem":1323,"children":1324},"Secrets","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fconnect\u002Fsecrets","docs\u002Fstudios\u002Fintegration-studio\u002Fconnect\u002Fsecrets\u002Findex",[1325],{"title":1321,"path":1322,"stem":1323},{"title":1327,"path":1328,"stem":1329,"children":1330,"icon":1048},"Extend the Studio","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fextend","docs\u002Fstudios\u002Fintegration-studio\u002Fextend\u002Findex",[1331,1332,1338,1344,1350],{"title":1327,"path":1328,"stem":1329,"icon":1048},{"title":1333,"path":1334,"stem":1335,"children":1336},"Custom nodes","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fextend\u002Fcustom-nodes","docs\u002Fstudios\u002Fintegration-studio\u002Fextend\u002Fcustom-nodes\u002Findex",[1337],{"title":1333,"path":1334,"stem":1335},{"title":1339,"path":1340,"stem":1341,"children":1342},"Dynamic behaviour","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fextend\u002Fdynamic-behaviour","docs\u002Fstudios\u002Fintegration-studio\u002Fextend\u002Fdynamic-behaviour\u002Findex",[1343],{"title":1339,"path":1340,"stem":1341},{"title":1345,"path":1346,"stem":1347,"children":1348},"Package manifest","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fextend\u002Fpackage-manifest","docs\u002Fstudios\u002Fintegration-studio\u002Fextend\u002Fpackage-manifest\u002Findex",[1349],{"title":1345,"path":1346,"stem":1347},{"title":1351,"path":1352,"stem":1353,"children":1354},"Registration","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fextend\u002Fregistration","docs\u002Fstudios\u002Fintegration-studio\u002Fextend\u002Fregistration\u002Findex",[1355],{"title":1351,"path":1352,"stem":1353},{"title":796,"path":1357,"stem":1358,"children":1359,"icon":886},"\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fgetting-started","docs\u002Fstudios\u002Fintegration-studio\u002Fgetting-started\u002Findex",[1360],{"title":796,"path":1357,"stem":1358,"icon":886},{"title":1362,"path":1363,"stem":1364,"children":1365,"icon":141},"Run, watch, recover","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Foperate","docs\u002Fstudios\u002Fintegration-studio\u002Foperate\u002Findex",[1366,1367,1373,1379,1385],{"title":1362,"path":1363,"stem":1364,"icon":141},{"title":1368,"path":1369,"stem":1370,"children":1371},"Missed runs","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Foperate\u002Fdead-letters","docs\u002Fstudios\u002Fintegration-studio\u002Foperate\u002Fdead-letters\u002Findex",[1372],{"title":1368,"path":1369,"stem":1370},{"title":1374,"path":1375,"stem":1376,"children":1377},"Failure handling","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Foperate\u002Ffailure-handling","docs\u002Fstudios\u002Fintegration-studio\u002Foperate\u002Ffailure-handling\u002Findex",[1378],{"title":1374,"path":1375,"stem":1376},{"title":1380,"path":1381,"stem":1382,"children":1383},"Revisions and audit","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Foperate\u002Frevisions-and-audit","docs\u002Fstudios\u002Fintegration-studio\u002Foperate\u002Frevisions-and-audit\u002Findex",[1384],{"title":1380,"path":1381,"stem":1382},{"title":1386,"path":1387,"stem":1388,"children":1389},"Runs","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Foperate\u002Fruns","docs\u002Fstudios\u002Fintegration-studio\u002Foperate\u002Fruns\u002Findex",[1390],{"title":1386,"path":1387,"stem":1388},{"title":1392,"path":1393,"stem":1394,"children":1395,"icon":1397},"Start the workflow","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fstart","docs\u002Fstudios\u002Fintegration-studio\u002Fstart\u002Findex",[1396,1398,1404,1410,1416,1422],{"title":1392,"path":1393,"stem":1394,"icon":1397},"i-lucide-zap",{"title":1399,"path":1400,"stem":1401,"children":1402},"Event triggers","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fstart\u002Fevent-triggers","docs\u002Fstudios\u002Fintegration-studio\u002Fstart\u002Fevent-triggers\u002Findex",[1403],{"title":1399,"path":1400,"stem":1401},{"title":1405,"path":1406,"stem":1407,"children":1408},"Execution modes","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fstart\u002Fexecution-modes","docs\u002Fstudios\u002Fintegration-studio\u002Fstart\u002Fexecution-modes\u002Findex",[1409],{"title":1405,"path":1406,"stem":1407},{"title":1411,"path":1412,"stem":1413,"children":1414},"Schedule triggers","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fstart\u002Fschedule-triggers","docs\u002Fstudios\u002Fintegration-studio\u002Fstart\u002Fschedule-triggers\u002Findex",[1415],{"title":1411,"path":1412,"stem":1413},{"title":1417,"path":1418,"stem":1419,"children":1420},"Triggers","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fstart\u002Ftriggers","docs\u002Fstudios\u002Fintegration-studio\u002Fstart\u002Ftriggers\u002Findex",[1421],{"title":1417,"path":1418,"stem":1419},{"title":1423,"path":1424,"stem":1425,"children":1426},"Webhook triggers","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fstart\u002Fwebhook-triggers","docs\u002Fstudios\u002Fintegration-studio\u002Fstart\u002Fwebhook-triggers\u002Findex",[1427],{"title":1423,"path":1424,"stem":1425},{"title":1429,"path":1430,"stem":1431,"children":1432},"Experience Studio","\u002Fdocs\u002Fstudios\u002Fsites","docs\u002Fstudios\u002Fsites\u002Findex",[1433,1434,1483,1530,1656,1662,1704],{"title":1429,"path":1430,"stem":1431},{"title":1435,"path":1436,"stem":1437,"children":1438,"icon":1440},"Compose pages","\u002Fdocs\u002Fstudios\u002Fsites\u002Fblocks","docs\u002Fstudios\u002Fsites\u002Fblocks\u002Findex",[1439,1441,1447,1453,1459,1465,1471,1477],{"title":1435,"path":1436,"stem":1437,"icon":1440},"i-lucide-layout-template",{"title":1442,"path":1443,"stem":1444,"children":1445},"Block catalog","\u002Fdocs\u002Fstudios\u002Fsites\u002Fblocks\u002Fblock-catalog","docs\u002Fstudios\u002Fsites\u002Fblocks\u002Fblock-catalog\u002Findex",[1446],{"title":1442,"path":1443,"stem":1444},{"title":1448,"path":1449,"stem":1450,"children":1451},"Block options","\u002Fdocs\u002Fstudios\u002Fsites\u002Fblocks\u002Fblock-options","docs\u002Fstudios\u002Fsites\u002Fblocks\u002Fblock-options\u002Findex",[1452],{"title":1448,"path":1449,"stem":1450},{"title":1454,"path":1455,"stem":1456,"children":1457},"How a block works","\u002Fdocs\u002Fstudios\u002Fsites\u002Fblocks\u002Fhow-a-block-works","docs\u002Fstudios\u002Fsites\u002Fblocks\u002Fhow-a-block-works\u002Findex",[1458],{"title":1454,"path":1455,"stem":1456},{"title":1460,"path":1461,"stem":1462,"children":1463},"Inline editing","\u002Fdocs\u002Fstudios\u002Fsites\u002Fblocks\u002Finline-editing","docs\u002Fstudios\u002Fsites\u002Fblocks\u002Finline-editing\u002Findex",[1464],{"title":1460,"path":1461,"stem":1462},{"title":1466,"path":1467,"stem":1468,"children":1469},"Reading published pages","\u002Fdocs\u002Fstudios\u002Fsites\u002Fblocks\u002Freading-pages","docs\u002Fstudios\u002Fsites\u002Fblocks\u002Freading-pages\u002Findex",[1470],{"title":1466,"path":1467,"stem":1468},{"title":1472,"path":1473,"stem":1474,"children":1475},"Registering blocks","\u002Fdocs\u002Fstudios\u002Fsites\u002Fblocks\u002Fregistering","docs\u002Fstudios\u002Fsites\u002Fblocks\u002Fregistering\u002Findex",[1476],{"title":1472,"path":1473,"stem":1474},{"title":1478,"path":1479,"stem":1480,"children":1481},"Shells and fields","\u002Fdocs\u002Fstudios\u002Fsites\u002Fblocks\u002Fshells-and-fields","docs\u002Fstudios\u002Fsites\u002Fblocks\u002Fshells-and-fields\u002Findex",[1482],{"title":1478,"path":1479,"stem":1480},{"title":1484,"path":1485,"stem":1486,"children":1487,"icon":1489},"Connect data","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdata","docs\u002Fstudios\u002Fsites\u002Fdata\u002Findex",[1488,1490,1495,1501,1507,1512,1518,1524],{"title":1484,"path":1485,"stem":1486,"icon":1489},"i-lucide-plug",{"title":270,"path":1491,"stem":1492,"children":1493},"\u002Fdocs\u002Fstudios\u002Fsites\u002Fdata\u002Fauthentication","docs\u002Fstudios\u002Fsites\u002Fdata\u002Fauthentication\u002Findex",[1494],{"title":270,"path":1491,"stem":1492},{"title":1496,"path":1497,"stem":1498,"children":1499},"The BFF pattern","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdata\u002Fbff-pattern","docs\u002Fstudios\u002Fsites\u002Fdata\u002Fbff-pattern\u002Findex",[1500],{"title":1496,"path":1497,"stem":1498},{"title":1502,"path":1503,"stem":1504,"children":1505},"Catalog, cart, checkout","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdata\u002Fcatalog-cart-checkout","docs\u002Fstudios\u002Fsites\u002Fdata\u002Fcatalog-cart-checkout\u002Findex",[1506],{"title":1502,"path":1503,"stem":1504},{"title":996,"path":1508,"stem":1509,"children":1510},"\u002Fdocs\u002Fstudios\u002Fsites\u002Fdata\u002Fforms","docs\u002Fstudios\u002Fsites\u002Fdata\u002Fforms\u002Findex",[1511],{"title":996,"path":1508,"stem":1509},{"title":1513,"path":1514,"stem":1515,"children":1516},"Media and assets","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdata\u002Fmedia","docs\u002Fstudios\u002Fsites\u002Fdata\u002Fmedia\u002Findex",[1517],{"title":1513,"path":1514,"stem":1515},{"title":1519,"path":1520,"stem":1521,"children":1522},"Multi-tenant themes","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdata\u002Fmulti-tenant-themes","docs\u002Fstudios\u002Fsites\u002Fdata\u002Fmulti-tenant-themes\u002Findex",[1523],{"title":1519,"path":1520,"stem":1521},{"title":1525,"path":1526,"stem":1527,"children":1528},"Search","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdata\u002Fsearch","docs\u002Fstudios\u002Fsites\u002Fdata\u002Fsearch\u002Findex",[1529],{"title":1525,"path":1526,"stem":1527},{"title":1531,"path":1532,"stem":1533,"children":1534,"icon":886},"Build and deploy","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Findex",[1535,1536,1542,1548,1554,1560,1566,1572,1650],{"title":1531,"path":1532,"stem":1533,"icon":886},{"title":1537,"path":1538,"stem":1539,"children":1540},"Build configuration","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fbuild-configuration","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fbuild-configuration\u002Findex",[1541],{"title":1537,"path":1538,"stem":1539},{"title":1543,"path":1544,"stem":1545,"children":1546},"Compute specifications","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fcompute-specifications","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fcompute-specifications\u002Findex",[1547],{"title":1543,"path":1544,"stem":1545},{"title":1549,"path":1550,"stem":1551,"children":1552},"Environment variables","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fenvironment-variables","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fenvironment-variables\u002Findex",[1553],{"title":1549,"path":1550,"stem":1551},{"title":1555,"path":1556,"stem":1557,"children":1558},"From Git","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Ffrom-git","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Ffrom-git\u002Findex",[1559],{"title":1555,"path":1556,"stem":1557},{"title":1561,"path":1562,"stem":1563,"children":1564},"From the CLI","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Ffrom-the-cli","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Ffrom-the-cli\u002Findex",[1565],{"title":1561,"path":1562,"stem":1563},{"title":1567,"path":1568,"stem":1569,"children":1570},"Manually","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fmanually","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fmanually\u002Findex",[1571],{"title":1567,"path":1568,"stem":1569},{"title":1573,"path":1574,"stem":1575,"children":1576},"Quick-starts","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Findex",[1577,1578,1584,1590,1596,1602,1608,1614,1620,1626,1632,1638,1644],{"title":1573,"path":1574,"stem":1575},{"title":1579,"path":1580,"stem":1581,"children":1582},"Deploy an Angular app to revenexx Storefronts","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fangular","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fangular\u002Findex",[1583],{"title":1579,"path":1580,"stem":1581},{"title":1585,"path":1586,"stem":1587,"children":1588},"Deploy a Astro app to revenexx Storefronts","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fastro","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fastro\u002Findex",[1589],{"title":1585,"path":1586,"stem":1587},{"title":1591,"path":1592,"stem":1593,"children":1594},"Deploy a Flutter Web app to revenexx Storefronts","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fflutter","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fflutter\u002Findex",[1595],{"title":1591,"path":1592,"stem":1593},{"title":1597,"path":1598,"stem":1599,"children":1600},"Deploy a Next.js app to revenexx Storefronts","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fnextjs","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fnextjs\u002Findex",[1601],{"title":1597,"path":1598,"stem":1599},{"title":1603,"path":1604,"stem":1605,"children":1606},"Deploy a Nuxt app to revenexx Storefronts","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fnuxt","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fnuxt\u002Findex",[1607],{"title":1603,"path":1604,"stem":1605},{"title":1609,"path":1610,"stem":1611,"children":1612},"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",[1613],{"title":1609,"path":1610,"stem":1611},{"title":1615,"path":1616,"stem":1617,"children":1618},"Deploy a React app to revenexx Storefronts","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Freact","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Freact\u002Findex",[1619],{"title":1615,"path":1616,"stem":1617},{"title":1621,"path":1622,"stem":1623,"children":1624},"Deploy a Remix app to revenexx Storefronts","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fremix","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fremix\u002Findex",[1625],{"title":1621,"path":1622,"stem":1623},{"title":1627,"path":1628,"stem":1629,"children":1630},"Deploy a SvelteKit app to revenexx Storefronts","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fsveltekit","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fsveltekit\u002Findex",[1631],{"title":1627,"path":1628,"stem":1629},{"title":1633,"path":1634,"stem":1635,"children":1636},"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",[1637],{"title":1633,"path":1634,"stem":1635},{"title":1639,"path":1640,"stem":1641,"children":1642},"Deploy a Vanilla JS app to revenexx Storefronts","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fvanilla","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fvanilla\u002Findex",[1643],{"title":1639,"path":1640,"stem":1641},{"title":1645,"path":1646,"stem":1647,"children":1648},"Deploy a Vue.js app to revenexx Storefronts","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fvue","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fvue\u002Findex",[1649],{"title":1645,"path":1646,"stem":1647},{"title":1651,"path":1652,"stem":1653,"children":1654},"Starting points","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fstarting-points","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fstarting-points\u002Findex",[1655],{"title":1651,"path":1652,"stem":1653},{"title":796,"path":1657,"stem":1658,"children":1659,"icon":1661},"\u002Fdocs\u002Fstudios\u002Fsites\u002Fgetting-started","docs\u002Fstudios\u002Fsites\u002Fgetting-started\u002Findex",[1660],{"title":796,"path":1657,"stem":1658,"icon":1661},"i-lucide-terminal",{"title":1663,"path":1664,"stem":1665,"children":1666,"icon":1150},"Production","\u002Fdocs\u002Fstudios\u002Fsites\u002Fproduction","docs\u002Fstudios\u002Fsites\u002Fproduction\u002Findex",[1667,1668,1674,1680,1686,1692,1698],{"title":1663,"path":1664,"stem":1665,"icon":1150},{"title":1669,"path":1670,"stem":1671,"children":1672},"Deployments","\u002Fdocs\u002Fstudios\u002Fsites\u002Fproduction\u002Fdeployments","docs\u002Fstudios\u002Fsites\u002Fproduction\u002Fdeployments\u002Findex",[1673],{"title":1669,"path":1670,"stem":1671},{"title":1675,"path":1676,"stem":1677,"children":1678},"Domains","\u002Fdocs\u002Fstudios\u002Fsites\u002Fproduction\u002Fdomains","docs\u002Fstudios\u002Fsites\u002Fproduction\u002Fdomains\u002Findex",[1679],{"title":1675,"path":1676,"stem":1677},{"title":1681,"path":1682,"stem":1683,"children":1684},"Instant rollbacks","\u002Fdocs\u002Fstudios\u002Fsites\u002Fproduction\u002Finstant-rollbacks","docs\u002Fstudios\u002Fsites\u002Fproduction\u002Finstant-rollbacks\u002Findex",[1685],{"title":1681,"path":1682,"stem":1683},{"title":1687,"path":1688,"stem":1689,"children":1690},"Logs","\u002Fdocs\u002Fstudios\u002Fsites\u002Fproduction\u002Flogs","docs\u002Fstudios\u002Fsites\u002Fproduction\u002Flogs\u002Findex",[1691],{"title":1687,"path":1688,"stem":1689},{"title":1693,"path":1694,"stem":1695,"children":1696},"Previews","\u002Fdocs\u002Fstudios\u002Fsites\u002Fproduction\u002Fpreviews","docs\u002Fstudios\u002Fsites\u002Fproduction\u002Fpreviews\u002Findex",[1697],{"title":1693,"path":1694,"stem":1695},{"title":1699,"path":1700,"stem":1701,"children":1702},"Publishing a theme","\u002Fdocs\u002Fstudios\u002Fsites\u002Fproduction\u002Fpublishing-a-theme","docs\u002Fstudios\u002Fsites\u002Fproduction\u002Fpublishing-a-theme\u002Findex",[1703],{"title":1699,"path":1700,"stem":1701},{"title":1705,"path":1706,"stem":1707,"children":1708,"icon":1710},"Build the theme","\u002Fdocs\u002Fstudios\u002Fsites\u002Ftheme","docs\u002Fstudios\u002Fsites\u002Ftheme\u002Findex",[1709,1711,1717,1723,1729,1735,1741,1747,1753,1771],{"title":1705,"path":1706,"stem":1707,"icon":1710},"i-lucide-palette",{"title":1712,"path":1713,"stem":1714,"children":1715},"Theme anatomy","\u002Fdocs\u002Fstudios\u002Fsites\u002Ftheme\u002Fanatomy","docs\u002Fstudios\u002Fsites\u002Ftheme\u002Fanatomy\u002Findex",[1716],{"title":1712,"path":1713,"stem":1714},{"title":1718,"path":1719,"stem":1720,"children":1721},"Design tokens","\u002Fdocs\u002Fstudios\u002Fsites\u002Ftheme\u002Fdesign-tokens","docs\u002Fstudios\u002Fsites\u002Ftheme\u002Fdesign-tokens\u002Findex",[1722],{"title":1718,"path":1719,"stem":1720},{"title":1724,"path":1725,"stem":1726,"children":1727},"Frameworks","\u002Fdocs\u002Fstudios\u002Fsites\u002Ftheme\u002Fframeworks","docs\u002Fstudios\u002Fsites\u002Ftheme\u002Fframeworks\u002Findex",[1728],{"title":1724,"path":1725,"stem":1726},{"title":1730,"path":1731,"stem":1732,"children":1733},"The layer chain","\u002Fdocs\u002Fstudios\u002Fsites\u002Ftheme\u002Flayer-chain","docs\u002Fstudios\u002Fsites\u002Ftheme\u002Flayer-chain\u002Findex",[1734],{"title":1730,"path":1731,"stem":1732},{"title":1736,"path":1737,"stem":1738,"children":1739},"Local development","\u002Fdocs\u002Fstudios\u002Fsites\u002Ftheme\u002Flocal-development","docs\u002Fstudios\u002Fsites\u002Ftheme\u002Flocal-development\u002Findex",[1740],{"title":1736,"path":1737,"stem":1738},{"title":1742,"path":1743,"stem":1744,"children":1745},"Modules and plugins","\u002Fdocs\u002Fstudios\u002Fsites\u002Ftheme\u002Fmodules-and-plugins","docs\u002Fstudios\u002Fsites\u002Ftheme\u002Fmodules-and-plugins\u002Findex",[1746],{"title":1742,"path":1743,"stem":1744},{"title":1748,"path":1749,"stem":1750,"children":1751},"Overriding","\u002Fdocs\u002Fstudios\u002Fsites\u002Ftheme\u002Foverriding","docs\u002Fstudios\u002Fsites\u002Ftheme\u002Foverriding\u002Findex",[1752],{"title":1748,"path":1749,"stem":1750},{"title":1754,"path":1755,"stem":1756,"children":1757},"Rendering","\u002Fdocs\u002Fstudios\u002Fsites\u002Ftheme\u002Frendering","docs\u002Fstudios\u002Fsites\u002Ftheme\u002Frendering\u002Findex",[1758,1759,1765],{"title":1754,"path":1755,"stem":1756},{"title":1760,"path":1761,"stem":1762,"children":1763},"SSR","\u002Fdocs\u002Fstudios\u002Fsites\u002Ftheme\u002Frendering\u002Fssr","docs\u002Fstudios\u002Fsites\u002Ftheme\u002Frendering\u002Fssr\u002Findex",[1764],{"title":1760,"path":1761,"stem":1762},{"title":1766,"path":1767,"stem":1768,"children":1769},"Static","\u002Fdocs\u002Fstudios\u002Fsites\u002Ftheme\u002Frendering\u002Fstatic","docs\u002Fstudios\u002Fsites\u002Ftheme\u002Frendering\u002Fstatic\u002Findex",[1770],{"title":1766,"path":1767,"stem":1768},{"title":1772,"path":1773,"stem":1774,"children":1775},"Service modes","\u002Fdocs\u002Fstudios\u002Fsites\u002Ftheme\u002Fservice-modes","docs\u002Fstudios\u002Fsites\u002Ftheme\u002Fservice-modes\u002Findex",[1776],{"title":1772,"path":1773,"stem":1774},{"title":1778,"path":1779,"stem":1780,"children":1781},"Tools","\u002Fdocs\u002Ftools","docs\u002Ftools\u002Findex",[1782,1783,1790,1999],{"title":1778,"path":1779,"stem":1780},{"title":1784,"path":1785,"stem":1786,"children":1787,"icon":1789},"AI agents","\u002Fdocs\u002Ftools\u002Fai-agents","docs\u002Ftools\u002Fai-agents\u002Findex",[1788],{"title":1784,"path":1785,"stem":1786,"icon":1789},"i-lucide-shield-alert",{"title":1791,"path":1792,"stem":1793,"children":1794},"Command line","\u002Fdocs\u002Ftools\u002Fcommand-line","docs\u002Ftools\u002Fcommand-line\u002Findex",[1795,1796,1802,1807,1813,1819,1825,1831,1837,1957,1963,1969,1975,1981,1987,1993],{"title":1791,"path":1792,"stem":1793},{"title":1797,"path":1798,"stem":1799,"children":1800},"Aliases","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Faliases","docs\u002Ftools\u002Fcommand-line\u002Faliases\u002Findex",[1801],{"title":1797,"path":1798,"stem":1799},{"title":270,"path":1803,"stem":1804,"children":1805},"\u002Fdocs\u002Ftools\u002Fcommand-line\u002Fauthentication","docs\u002Ftools\u002Fcommand-line\u002Fauthentication\u002Findex",[1806],{"title":270,"path":1803,"stem":1804},{"title":1808,"path":1809,"stem":1810,"children":1811},"Commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Fcommands","docs\u002Ftools\u002Fcommand-line\u002Fcommands\u002Findex",[1812],{"title":1808,"path":1809,"stem":1810},{"title":1814,"path":1815,"stem":1816,"children":1817},"Installation","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Finstallation","docs\u002Ftools\u002Fcommand-line\u002Finstallation\u002Findex",[1818],{"title":1814,"path":1815,"stem":1816},{"title":1820,"path":1821,"stem":1822,"children":1823},"Interactive use","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Finteractive","docs\u002Ftools\u002Fcommand-line\u002Finteractive\u002Findex",[1824],{"title":1820,"path":1821,"stem":1822},{"title":1826,"path":1827,"stem":1828,"children":1829},"Non-interactive use","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Fnon-interactive","docs\u002Ftools\u002Fcommand-line\u002Fnon-interactive\u002Findex",[1830],{"title":1826,"path":1827,"stem":1828},{"title":1832,"path":1833,"stem":1834,"children":1835},"Project configuration","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Fproject-configuration","docs\u002Ftools\u002Fcommand-line\u002Fproject-configuration\u002Findex",[1836],{"title":1832,"path":1833,"stem":1834},{"title":1838,"path":1839,"stem":1840,"children":1841},"Command reference","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Findex",[1842,1843,1849,1855,1861,1867,1873,1879,1885,1891,1897,1903,1909,1915,1921,1927,1933,1939,1945,1951],{"title":1838,"path":1839,"stem":1840},{"title":1844,"path":1845,"stem":1846,"children":1847},"About commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fabout","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fabout\u002Findex",[1848],{"title":1844,"path":1845,"stem":1846},{"title":1850,"path":1851,"stem":1852,"children":1853},"Apps commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fapps","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fapps\u002Findex",[1854],{"title":1850,"path":1851,"stem":1852},{"title":1856,"path":1857,"stem":1858,"children":1859},"Carts commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fcarts","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fcarts\u002Findex",[1860],{"title":1856,"path":1857,"stem":1858},{"title":1862,"path":1863,"stem":1864,"children":1865},"Channels commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fchannels","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fchannels\u002Findex",[1866],{"title":1862,"path":1863,"stem":1864},{"title":1868,"path":1869,"stem":1870,"children":1871},"Create commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fcreate","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fcreate\u002Findex",[1872],{"title":1868,"path":1869,"stem":1870},{"title":1874,"path":1875,"stem":1876,"children":1877},"Customers commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fcustomers","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fcustomers\u002Findex",[1878],{"title":1874,"path":1875,"stem":1876},{"title":1880,"path":1881,"stem":1882,"children":1883},"Deploy commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fdeploy","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fdeploy\u002Findex",[1884],{"title":1880,"path":1881,"stem":1882},{"title":1886,"path":1887,"stem":1888,"children":1889},"Forms commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fforms","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fforms\u002Findex",[1890],{"title":1886,"path":1887,"stem":1888},{"title":1892,"path":1893,"stem":1894,"children":1895},"Markets commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fmarkets","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fmarkets\u002Findex",[1896],{"title":1892,"path":1893,"stem":1894},{"title":1898,"path":1899,"stem":1900,"children":1901},"Order lists commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Forderlists","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Forderlists\u002Findex",[1902],{"title":1898,"path":1899,"stem":1900},{"title":1904,"path":1905,"stem":1906,"children":1907},"Orders commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Forders","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Forders\u002Findex",[1908],{"title":1904,"path":1905,"stem":1906},{"title":1910,"path":1911,"stem":1912,"children":1913},"Pages commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fpages","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fpages\u002Findex",[1914],{"title":1910,"path":1911,"stem":1912},{"title":1916,"path":1917,"stem":1918,"children":1919},"Prices commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fprices","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fprices\u002Findex",[1920],{"title":1916,"path":1917,"stem":1918},{"title":1922,"path":1923,"stem":1924,"children":1925},"Products commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fproducts","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fproducts\u002Findex",[1926],{"title":1922,"path":1923,"stem":1924},{"title":1928,"path":1929,"stem":1930,"children":1931},"Search commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fsearch","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fsearch\u002Findex",[1932],{"title":1928,"path":1929,"stem":1930},{"title":1934,"path":1935,"stem":1936,"children":1937},"Settings commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fsettings","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fsettings\u002Findex",[1938],{"title":1934,"path":1935,"stem":1936},{"title":1940,"path":1941,"stem":1942,"children":1943},"Sites commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fsites","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fsites\u002Findex",[1944],{"title":1940,"path":1941,"stem":1942},{"title":1946,"path":1947,"stem":1948,"children":1949},"Skills commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fskills","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fskills\u002Findex",[1950],{"title":1946,"path":1947,"stem":1948},{"title":1952,"path":1953,"stem":1954,"children":1955},"Storage commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fstorage","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fstorage\u002Findex",[1956],{"title":1952,"path":1953,"stem":1954},{"title":1958,"path":1959,"stem":1960,"children":1961},"Interactive shell (REPL)","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Frepl","docs\u002Ftools\u002Fcommand-line\u002Frepl\u002Findex",[1962],{"title":1958,"path":1959,"stem":1960},{"title":1964,"path":1965,"stem":1966,"children":1967},"Scaffolding","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Fscaffolding","docs\u002Ftools\u002Fcommand-line\u002Fscaffolding\u002Findex",[1968],{"title":1964,"path":1965,"stem":1966},{"title":1970,"path":1971,"stem":1972,"children":1973},"Scripting & output","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Fscripting","docs\u002Ftools\u002Fcommand-line\u002Fscripting\u002Findex",[1974],{"title":1970,"path":1971,"stem":1972},{"title":1976,"path":1977,"stem":1978,"children":1979},"Skills","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Fskills","docs\u002Ftools\u002Fcommand-line\u002Fskills\u002Findex",[1980],{"title":1976,"path":1977,"stem":1978},{"title":1982,"path":1983,"stem":1984,"children":1985},"Full-screen app (TUI)","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Ftui","docs\u002Ftools\u002Fcommand-line\u002Ftui\u002Findex",[1986],{"title":1982,"path":1983,"stem":1984},{"title":1988,"path":1989,"stem":1990,"children":1991},"Type generation","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Ftype-generation","docs\u002Ftools\u002Fcommand-line\u002Ftype-generation\u002Findex",[1992],{"title":1988,"path":1989,"stem":1990},{"title":1994,"path":1995,"stem":1996,"children":1997},"Background watchers","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Fwatch","docs\u002Ftools\u002Fcommand-line\u002Fwatch\u002Findex",[1998],{"title":1994,"path":1995,"stem":1996},{"title":2000,"path":2001,"stem":2002,"children":2003},"Model Context Protocol","\u002Fdocs\u002Ftools\u002Fmcp","docs\u002Ftools\u002Fmcp\u002Findex",[2004,2005,2011,2017,2023,2029,2035,2041,2047],{"title":2000,"path":2001,"stem":2002},{"title":2006,"path":2007,"stem":2008,"children":2009},"revenexx docs MCP in Google Antigravity","\u002Fdocs\u002Ftools\u002Fmcp\u002Fantigravity","docs\u002Ftools\u002Fmcp\u002Fantigravity\u002Findex",[2010],{"title":2006,"path":2007,"stem":2008},{"title":2012,"path":2013,"stem":2014,"children":2015},"revenexx docs MCP in Claude Code","\u002Fdocs\u002Ftools\u002Fmcp\u002Fclaude-code","docs\u002Ftools\u002Fmcp\u002Fclaude-code\u002Findex",[2016],{"title":2012,"path":2013,"stem":2014},{"title":2018,"path":2019,"stem":2020,"children":2021},"revenexx docs MCP in Claude Desktop","\u002Fdocs\u002Ftools\u002Fmcp\u002Fclaude-desktop","docs\u002Ftools\u002Fmcp\u002Fclaude-desktop\u002Findex",[2022],{"title":2018,"path":2019,"stem":2020},{"title":2024,"path":2025,"stem":2026,"children":2027},"revenexx docs MCP in Cursor","\u002Fdocs\u002Ftools\u002Fmcp\u002Fcursor","docs\u002Ftools\u002Fmcp\u002Fcursor\u002Findex",[2028],{"title":2024,"path":2025,"stem":2026},{"title":2030,"path":2031,"stem":2032,"children":2033},"revenexx docs MCP in OpenCode","\u002Fdocs\u002Ftools\u002Fmcp\u002Fopencode","docs\u002Ftools\u002Fmcp\u002Fopencode\u002Findex",[2034],{"title":2030,"path":2031,"stem":2032},{"title":2036,"path":2037,"stem":2038,"children":2039},"revenexx docs MCP in VS Code","\u002Fdocs\u002Ftools\u002Fmcp\u002Fvscode","docs\u002Ftools\u002Fmcp\u002Fvscode\u002Findex",[2040],{"title":2036,"path":2037,"stem":2038},{"title":2042,"path":2043,"stem":2044,"children":2045},"revenexx docs MCP in Windsurf","\u002Fdocs\u002Ftools\u002Fmcp\u002Fwindsurf","docs\u002Ftools\u002Fmcp\u002Fwindsurf\u002Findex",[2046],{"title":2042,"path":2043,"stem":2044},{"title":2048,"path":2049,"stem":2050,"children":2051},"revenexx docs MCP in Zenflow","\u002Fdocs\u002Ftools\u002Fmcp\u002Fzenflow","docs\u002Ftools\u002Fmcp\u002Fzenflow\u002Findex",[2052],{"title":2048,"path":2049,"stem":2050},{"id":2054,"title":112,"body":2055,"description":3927,"extension":3928,"landing":3929,"links":3929,"meta":3930,"navigation":3931,"path":113,"seo":3932,"sitemap":3933,"stem":114,"__hash__":3934},"docs\u002Fdocs\u002Fguides\u002Fapps\u002Fpublish-on-the-marketplace\u002Findex.md",{"type":2056,"value":2057,"toc":3907},"minimark",[2058,2067,2074,2079,2096,2114,2117,2130,2143,2161,2165,2168,2378,2389,2404,2421,2425,2450,2669,2676,2682,2698,2704,2713,2719,2731,2735,2744,3112,3119,3139,3179,3183,3186,3197,3202,3205,3223,3393,3397,3405,3496,3515,3521,3557,3563,3567,3579,3614,3628,3634,3637,3641,3644,3653,3663,3670,3747,3753,3757,3760,3764,3775,3779,3782,3795,3811,3815,3822,3826,3829,3835,3839,3845,3854,3858,3864,3903],[2059,2060,2061,2062,2066],"p",{},"Most partner work starts as a ",[2063,2064,2065],"code",{},"private"," App built for one named customer. This page is the sequence that turns one into a listing any tenant can find and install: what to decide first, which fields a listing actually needs, how to publish and verify the install, and what stops being optional the moment somebody else's tenant depends on you.",[2059,2068,2069,2070,2073],{},"This is for whoever owns the commercial side of an App that already works. You need an App deployed and verified on its first tenant (see ",[2071,2072,100],"a",{"href":101},") and the authority to make pricing and support commitments on your organisation's behalf.",[2075,2076,2078],"h2",{"id":2077},"decide-whether-it-should-be-public-at-all","Decide whether it should be public at all",[2059,2080,2081,2084,2085,2087,2088,2091,2092,2095],{},[2063,2082,2083],{},"manifest.type"," decides who may ever install your App. ",[2063,2086,2065],{}," means the owner ",[2071,2089,2090],{"href":19},"tenant"," only, never listed. ",[2063,2093,2094],{},"public"," means any tenant, once you publish it — publishing is a step you run yourself, not a review you wait for.",[2059,2097,2098,2099,2101,2102,2105,2106,2109,2110,2113],{},"There is nothing second-class about ",[2063,2100,2065],{},". It is a full ",[2071,2103,2104],{"href":803},"App",": its own tables, its own ",[2071,2107,2108],{"href":679},"capabilities"," on the public gateway, its own ",[2071,2111,2112],{"href":624},"Cockpit"," screens and schedules. The only difference is reach.",[2059,2115,2116],{},"Two things about the decision are easy to get wrong.",[2059,2118,2119,2120,2122,2123,2126,2127,2129],{},"Reach and pricing are independent. ",[2063,2121,2083],{}," declares reach, ",[2063,2124,2125],{},"billing.json"," declares pricing, and neither can be inferred from the other. A public App can be free. An App with no ",[2063,2128,2125],{}," at all is private to you — the file is what a listing is built from, so going public means writing one.",[2059,2131,2132,2136,2137,2139,2140,2142],{},[2133,2134,2135],"strong",{},"Publishing is effectively a one-way door."," Going from ",[2063,2138,2094],{}," back to ",[2063,2141,2065],{}," does not uninstall the App from tenants who already have it.",[2059,2144,2145,2146,2148,2149,2151,2152,2156,2157,2160],{},"You cannot rehearse it on somebody else's tenant first. A ",[2063,2147,2065],{}," App installs only on its owner tenant, and a ",[2063,2150,2094],{}," App cannot be installed until it is published — so the first install by a tenant you do not control happens ",[2153,2154,2155],"em",{},"after"," the door has shut. What you can do beforehand is read ",[2063,2158,2159],{},"schema.json"," for anything specific to one customer's business, read your handlers for hardcoded codes, thresholds and locales, and run the App on your own tenant against data shaped like somebody else's. Step 6 is where the real thing gets tested.",[2075,2162,2164],{"id":2163},"_1-finish-the-manifest-identity","1. Finish the manifest identity",[2059,2166,2167],{},"A listing is rendered from fields you may have left thin while there was one customer who already knew who you were.",[2169,2170,2176],"pre",{"className":2171,"code":2172,"filename":2173,"language":2174,"meta":2175,"style":2175},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"name\": \"serials\",\n  \"vendor\": \"acme\",\n  \"version\": \"1.2.0\",\n  \"type\": \"public\",\n  \"title\": { \"en\": \"Device Serials\", \"de\": \"Seriennummern\" },\n  \"description\": \"Tracks device serial numbers from receipt through sale and into service.\",\n  \"icon\": \"assets\u002Ficon.svg\"\n}\n","manifest.json","json","",[2063,2177,2178,2187,2215,2236,2257,2277,2331,2352,2372],{"__ignoreMap":2175},[2179,2180,2183],"span",{"class":2181,"line":2182},"line",1,[2179,2184,2186],{"class":2185},"sMK4o","{\n",[2179,2188,2190,2193,2197,2200,2203,2206,2210,2212],{"class":2181,"line":2189},2,[2179,2191,2192],{"class":2185},"  \"",[2179,2194,2196],{"class":2195},"spNyl","name",[2179,2198,2199],{"class":2185},"\"",[2179,2201,2202],{"class":2185},":",[2179,2204,2205],{"class":2185}," \"",[2179,2207,2209],{"class":2208},"sfazB","serials",[2179,2211,2199],{"class":2185},[2179,2213,2214],{"class":2185},",\n",[2179,2216,2218,2220,2223,2225,2227,2229,2232,2234],{"class":2181,"line":2217},3,[2179,2219,2192],{"class":2185},[2179,2221,2222],{"class":2195},"vendor",[2179,2224,2199],{"class":2185},[2179,2226,2202],{"class":2185},[2179,2228,2205],{"class":2185},[2179,2230,2231],{"class":2208},"acme",[2179,2233,2199],{"class":2185},[2179,2235,2214],{"class":2185},[2179,2237,2239,2241,2244,2246,2248,2250,2253,2255],{"class":2181,"line":2238},4,[2179,2240,2192],{"class":2185},[2179,2242,2243],{"class":2195},"version",[2179,2245,2199],{"class":2185},[2179,2247,2202],{"class":2185},[2179,2249,2205],{"class":2185},[2179,2251,2252],{"class":2208},"1.2.0",[2179,2254,2199],{"class":2185},[2179,2256,2214],{"class":2185},[2179,2258,2260,2262,2265,2267,2269,2271,2273,2275],{"class":2181,"line":2259},5,[2179,2261,2192],{"class":2185},[2179,2263,2264],{"class":2195},"type",[2179,2266,2199],{"class":2185},[2179,2268,2202],{"class":2185},[2179,2270,2205],{"class":2185},[2179,2272,2094],{"class":2208},[2179,2274,2199],{"class":2185},[2179,2276,2214],{"class":2185},[2179,2278,2280,2282,2285,2287,2289,2292,2294,2298,2300,2302,2304,2307,2309,2312,2314,2317,2319,2321,2323,2326,2328],{"class":2181,"line":2279},6,[2179,2281,2192],{"class":2185},[2179,2283,2284],{"class":2195},"title",[2179,2286,2199],{"class":2185},[2179,2288,2202],{"class":2185},[2179,2290,2291],{"class":2185}," {",[2179,2293,2205],{"class":2185},[2179,2295,2297],{"class":2296},"sBMFI","en",[2179,2299,2199],{"class":2185},[2179,2301,2202],{"class":2185},[2179,2303,2205],{"class":2185},[2179,2305,2306],{"class":2208},"Device Serials",[2179,2308,2199],{"class":2185},[2179,2310,2311],{"class":2185},",",[2179,2313,2205],{"class":2185},[2179,2315,2316],{"class":2296},"de",[2179,2318,2199],{"class":2185},[2179,2320,2202],{"class":2185},[2179,2322,2205],{"class":2185},[2179,2324,2325],{"class":2208},"Seriennummern",[2179,2327,2199],{"class":2185},[2179,2329,2330],{"class":2185}," },\n",[2179,2332,2334,2336,2339,2341,2343,2345,2348,2350],{"class":2181,"line":2333},7,[2179,2335,2192],{"class":2185},[2179,2337,2338],{"class":2195},"description",[2179,2340,2199],{"class":2185},[2179,2342,2202],{"class":2185},[2179,2344,2205],{"class":2185},[2179,2346,2347],{"class":2208},"Tracks device serial numbers from receipt through sale and into service.",[2179,2349,2199],{"class":2185},[2179,2351,2214],{"class":2185},[2179,2353,2355,2357,2360,2362,2364,2366,2369],{"class":2181,"line":2354},8,[2179,2356,2192],{"class":2185},[2179,2358,2359],{"class":2195},"icon",[2179,2361,2199],{"class":2185},[2179,2363,2202],{"class":2185},[2179,2365,2205],{"class":2185},[2179,2367,2368],{"class":2208},"assets\u002Ficon.svg",[2179,2370,2371],{"class":2185},"\"\n",[2179,2373,2375],{"class":2181,"line":2374},9,[2179,2376,2377],{"class":2185},"}\n",[2059,2379,2380,2382,2383,2385,2386,2388],{},[2063,2381,2284],{}," is the display name in Cockpit and the Marketplace, and it is required. ",[2063,2384,2338],{}," and ",[2063,2387,2359],{}," are optional in the schema and not optional in practice: the description is what a merchant reads in a search result, and it doubles as the default OpenAPI tag description.",[2059,2390,2391,2393,2394,2396,2397,2403],{},[2063,2392,2284],{},", ",[2063,2395,2338],{}," and every merchant-facing string accept either a plain string or a map of BCP-47 language tag to text. ",[2133,2398,2399,2400,2402],{},"In the map form, ",[2063,2401,2297],{}," is required"," — Cockpit falls back to it when its UI locale has no entry, so a half-translated manifest degrades to English rather than to a blank label.",[2059,2405,2406,2411,2412,2414,2415,2417,2418,2420],{},[2133,2407,2408,2410],{},[2063,2409,2196],{}," can never change",", and treat ",[2063,2413,2222],{}," the same way. Together they namespace your tables, prefix your event names and identify the App in the registry; a push whose ",[2063,2416,2196],{}," does not match the registered App is rejected outright. If you are renaming anything, do it before you publish, not after. The same holds for anything else a caller can see once tenants you do not control are calling you: a break is a new route, never a changed one. See ",[2071,2419,215],{"href":960},".",[2075,2422,2424],{"id":2423},"_2-declare-pricing","2. Declare pricing",[2059,2426,2427,2429,2430,2432,2433,2393,2436,2439,2440,2443,2444,2446,2447,2420],{},[2063,2428,2125],{}," carries everything the Marketplace shows that is not identity — pricing here, and the listing copy and your grant reasons further down this page. ",[2063,2431,2264],{}," is the field every App must declare: ",[2063,2434,2435],{},"free",[2063,2437,2438],{},"paid"," or ",[2063,2441,2442],{},"included",". A ",[2063,2445,2438],{}," App must also declare ",[2063,2448,2449],{},"price",[2169,2451,2453],{"className":2171,"code":2452,"filename":2125,"language":2174,"meta":2175,"style":2175},"{\n  \"$schema\": \"https:\u002F\u002Fschemas.revenexx.com\u002Fbilling.schema.json\",\n  \"type\": \"paid\",\n  \"price\": { \"currency\": \"EUR\", \"monthly\": 49 },\n  \"support\": { \"email\": \"support@acme.example\", \"url\": \"https:\u002F\u002Fdocs.acme.example\" },\n  \"trial\": { \"days\": 14 },\n  \"categories\": [\"commerce\"],\n  \"available_countries\": [\"*\"]\n}\n",[2063,2454,2455,2459,2479,2497,2542,2591,2618,2642,2665],{"__ignoreMap":2175},[2179,2456,2457],{"class":2181,"line":2182},[2179,2458,2186],{"class":2185},[2179,2460,2461,2463,2466,2468,2470,2472,2475,2477],{"class":2181,"line":2189},[2179,2462,2192],{"class":2185},[2179,2464,2465],{"class":2195},"$schema",[2179,2467,2199],{"class":2185},[2179,2469,2202],{"class":2185},[2179,2471,2205],{"class":2185},[2179,2473,2474],{"class":2208},"https:\u002F\u002Fschemas.revenexx.com\u002Fbilling.schema.json",[2179,2476,2199],{"class":2185},[2179,2478,2214],{"class":2185},[2179,2480,2481,2483,2485,2487,2489,2491,2493,2495],{"class":2181,"line":2217},[2179,2482,2192],{"class":2185},[2179,2484,2264],{"class":2195},[2179,2486,2199],{"class":2185},[2179,2488,2202],{"class":2185},[2179,2490,2205],{"class":2185},[2179,2492,2438],{"class":2208},[2179,2494,2199],{"class":2185},[2179,2496,2214],{"class":2185},[2179,2498,2499,2501,2503,2505,2507,2509,2511,2514,2516,2518,2520,2523,2525,2527,2529,2532,2534,2536,2540],{"class":2181,"line":2238},[2179,2500,2192],{"class":2185},[2179,2502,2449],{"class":2195},[2179,2504,2199],{"class":2185},[2179,2506,2202],{"class":2185},[2179,2508,2291],{"class":2185},[2179,2510,2205],{"class":2185},[2179,2512,2513],{"class":2296},"currency",[2179,2515,2199],{"class":2185},[2179,2517,2202],{"class":2185},[2179,2519,2205],{"class":2185},[2179,2521,2522],{"class":2208},"EUR",[2179,2524,2199],{"class":2185},[2179,2526,2311],{"class":2185},[2179,2528,2205],{"class":2185},[2179,2530,2531],{"class":2296},"monthly",[2179,2533,2199],{"class":2185},[2179,2535,2202],{"class":2185},[2179,2537,2539],{"class":2538},"sbssI"," 49",[2179,2541,2330],{"class":2185},[2179,2543,2544,2546,2549,2551,2553,2555,2557,2560,2562,2564,2566,2569,2571,2573,2575,2578,2580,2582,2584,2587,2589],{"class":2181,"line":2259},[2179,2545,2192],{"class":2185},[2179,2547,2548],{"class":2195},"support",[2179,2550,2199],{"class":2185},[2179,2552,2202],{"class":2185},[2179,2554,2291],{"class":2185},[2179,2556,2205],{"class":2185},[2179,2558,2559],{"class":2296},"email",[2179,2561,2199],{"class":2185},[2179,2563,2202],{"class":2185},[2179,2565,2205],{"class":2185},[2179,2567,2568],{"class":2208},"support@acme.example",[2179,2570,2199],{"class":2185},[2179,2572,2311],{"class":2185},[2179,2574,2205],{"class":2185},[2179,2576,2577],{"class":2296},"url",[2179,2579,2199],{"class":2185},[2179,2581,2202],{"class":2185},[2179,2583,2205],{"class":2185},[2179,2585,2586],{"class":2208},"https:\u002F\u002Fdocs.acme.example",[2179,2588,2199],{"class":2185},[2179,2590,2330],{"class":2185},[2179,2592,2593,2595,2598,2600,2602,2604,2606,2609,2611,2613,2616],{"class":2181,"line":2279},[2179,2594,2192],{"class":2185},[2179,2596,2597],{"class":2195},"trial",[2179,2599,2199],{"class":2185},[2179,2601,2202],{"class":2185},[2179,2603,2291],{"class":2185},[2179,2605,2205],{"class":2185},[2179,2607,2608],{"class":2296},"days",[2179,2610,2199],{"class":2185},[2179,2612,2202],{"class":2185},[2179,2614,2615],{"class":2538}," 14",[2179,2617,2330],{"class":2185},[2179,2619,2620,2622,2625,2627,2629,2632,2634,2637,2639],{"class":2181,"line":2333},[2179,2621,2192],{"class":2185},[2179,2623,2624],{"class":2195},"categories",[2179,2626,2199],{"class":2185},[2179,2628,2202],{"class":2185},[2179,2630,2631],{"class":2185}," [",[2179,2633,2199],{"class":2185},[2179,2635,2636],{"class":2208},"commerce",[2179,2638,2199],{"class":2185},[2179,2640,2641],{"class":2185},"],\n",[2179,2643,2644,2646,2649,2651,2653,2655,2657,2660,2662],{"class":2181,"line":2354},[2179,2645,2192],{"class":2185},[2179,2647,2648],{"class":2195},"available_countries",[2179,2650,2199],{"class":2185},[2179,2652,2202],{"class":2185},[2179,2654,2631],{"class":2185},[2179,2656,2199],{"class":2185},[2179,2658,2659],{"class":2208},"*",[2179,2661,2199],{"class":2185},[2179,2663,2664],{"class":2185},"]\n",[2179,2666,2667],{"class":2181,"line":2374},[2179,2668,2377],{"class":2185},[2059,2670,2671,2672,2675],{},"The schema rejects any field it does not name, so the shape above is the whole of it. What costs time is what is ",[2153,2673,2674],{},"not"," in it.",[2059,2677,2678,2681],{},[2133,2679,2680],{},"One App, one price."," There are no plan tiers to choose between, so there is nothing to name them and no plan id to keep stable. If your product needs two price points, that is two Apps.",[2059,2683,2684,2689,2690,2693,2694,2697],{},[2133,2685,2686,2688],{},[2063,2687,2531],{}," is in whole units of the declared currency, not cents."," ",[2063,2691,2692],{},"\"monthly\": 49"," with ",[2063,2695,2696],{},"\"currency\": \"EUR\""," is forty-nine euros.",[2059,2699,2700,2703],{},[2133,2701,2702],{},"There is no yearly price to declare."," A yearly price is derived from the monthly one, not written down by you.",[2059,2705,2706,2709,2710,2420],{},[2133,2707,2708],{},"Usage limits are yours to enforce, and there is no field for them."," If your pricing implies a cap, nothing counts on your behalf — your handler is what refuses the write, with a status the caller can act on and a message that names the limit. Advertise a cap only if you will enforce it, and enforce it on the write rather than the read: blocking a list punishes a merchant for data they already have. See ",[2071,2711,888],{"href":2712},"\u002Fdocs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fbilling#usage-limits-are-your-apps-job-to-enforce",[2059,2714,2715,2716,2718],{},"Fill in ",[2063,2717,2548],{},". It is where the merchant's own staff look when something breaks at 4 p.m., and an empty block sends them to whoever sold the project.",[2059,2720,2721,2723,2724,2726,2727,2730],{},[2063,2722,2624],{}," is how a merchant finds you; pick the ones that describe what the App does, because a listing in six categories reads as a listing in none. ",[2063,2725,2648],{}," takes ISO 3166-1 alpha-2 codes, and ",[2063,2728,2729],{},"[\"*\"]"," or omitting it means everywhere.",[2075,2732,2734],{"id":2733},"_3-write-the-listing","3. Write the listing",[2059,2736,2737,2739,2740,2743],{},[2063,2738,2125],{},"'s ",[2063,2741,2742],{},"listing"," block is the Marketplace copy. Every field in it is optional in the schema and not optional in practice, and all merchant-facing text accepts a locale map.",[2169,2745,2747],{"className":2171,"code":2746,"filename":2125,"language":2174,"meta":2175,"style":2175},"\"listing\": {\n  \"longDescription\": {\n    \"en\": \"# Device Serials\\n\\nTrack serial numbers from receipt through sale and into service.\"\n  },\n  \"highlights\": [\n    { \"en\": \"Serial registry with full service history\" },\n    { \"en\": \"Warranty windows resolved per market\" }\n  ],\n  \"features\": [\n    {\n      \"title\": { \"en\": \"Serial registry\" },\n      \"description\": { \"en\": \"Register, look up and retire device serials.\" },\n      \"icon\": \"hashtag\"\n    }\n  ],\n  \"publisher\": { \"name\": \"Acme GmbH\", \"kind\": \"partner\", \"website\": \"https:\u002F\u002Facme.example\" },\n  \"languages\": [\"de\", \"en\"],\n  \"compatibility\": { \"min_platform_version\": \"1.0.0\" }\n}\n",[2063,2748,2749,2763,2777,2801,2806,2820,2842,2864,2869,2882,2888,2919,2949,2967,2973,2978,3045,3075,3107],{"__ignoreMap":2175},[2179,2750,2751,2753,2755,2757,2761],{"class":2181,"line":2182},[2179,2752,2199],{"class":2185},[2179,2754,2742],{"class":2208},[2179,2756,2199],{"class":2185},[2179,2758,2760],{"class":2759},"sTEyZ",": ",[2179,2762,2186],{"class":2185},[2179,2764,2765,2767,2770,2772,2774],{"class":2181,"line":2189},[2179,2766,2192],{"class":2185},[2179,2768,2769],{"class":2195},"longDescription",[2179,2771,2199],{"class":2185},[2179,2773,2202],{"class":2185},[2179,2775,2776],{"class":2185}," {\n",[2179,2778,2779,2782,2784,2786,2788,2790,2793,2796,2799],{"class":2181,"line":2217},[2179,2780,2781],{"class":2185},"    \"",[2179,2783,2297],{"class":2296},[2179,2785,2199],{"class":2185},[2179,2787,2202],{"class":2185},[2179,2789,2205],{"class":2185},[2179,2791,2792],{"class":2208},"# Device Serials",[2179,2794,2795],{"class":2759},"\\n\\n",[2179,2797,2798],{"class":2208},"Track serial numbers from receipt through sale and into service.",[2179,2800,2371],{"class":2185},[2179,2802,2803],{"class":2181,"line":2238},[2179,2804,2805],{"class":2185},"  },\n",[2179,2807,2808,2810,2813,2815,2817],{"class":2181,"line":2259},[2179,2809,2192],{"class":2185},[2179,2811,2812],{"class":2195},"highlights",[2179,2814,2199],{"class":2185},[2179,2816,2202],{"class":2185},[2179,2818,2819],{"class":2185}," [\n",[2179,2821,2822,2825,2827,2829,2831,2833,2835,2838,2840],{"class":2181,"line":2279},[2179,2823,2824],{"class":2185},"    {",[2179,2826,2205],{"class":2185},[2179,2828,2297],{"class":2296},[2179,2830,2199],{"class":2185},[2179,2832,2202],{"class":2185},[2179,2834,2205],{"class":2185},[2179,2836,2837],{"class":2208},"Serial registry with full service history",[2179,2839,2199],{"class":2185},[2179,2841,2330],{"class":2185},[2179,2843,2844,2846,2848,2850,2852,2854,2856,2859,2861],{"class":2181,"line":2333},[2179,2845,2824],{"class":2185},[2179,2847,2205],{"class":2185},[2179,2849,2297],{"class":2296},[2179,2851,2199],{"class":2185},[2179,2853,2202],{"class":2185},[2179,2855,2205],{"class":2185},[2179,2857,2858],{"class":2208},"Warranty windows resolved per market",[2179,2860,2199],{"class":2185},[2179,2862,2863],{"class":2185}," }\n",[2179,2865,2866],{"class":2181,"line":2354},[2179,2867,2868],{"class":2185},"  ],\n",[2179,2870,2871,2873,2876,2878,2880],{"class":2181,"line":2374},[2179,2872,2192],{"class":2185},[2179,2874,2875],{"class":2195},"features",[2179,2877,2199],{"class":2185},[2179,2879,2202],{"class":2185},[2179,2881,2819],{"class":2185},[2179,2883,2885],{"class":2181,"line":2884},10,[2179,2886,2887],{"class":2185},"    {\n",[2179,2889,2891,2894,2896,2898,2900,2902,2904,2906,2908,2910,2912,2915,2917],{"class":2181,"line":2890},11,[2179,2892,2893],{"class":2185},"      \"",[2179,2895,2284],{"class":2296},[2179,2897,2199],{"class":2185},[2179,2899,2202],{"class":2185},[2179,2901,2291],{"class":2185},[2179,2903,2205],{"class":2185},[2179,2905,2297],{"class":2538},[2179,2907,2199],{"class":2185},[2179,2909,2202],{"class":2185},[2179,2911,2205],{"class":2185},[2179,2913,2914],{"class":2208},"Serial registry",[2179,2916,2199],{"class":2185},[2179,2918,2330],{"class":2185},[2179,2920,2922,2924,2926,2928,2930,2932,2934,2936,2938,2940,2942,2945,2947],{"class":2181,"line":2921},12,[2179,2923,2893],{"class":2185},[2179,2925,2338],{"class":2296},[2179,2927,2199],{"class":2185},[2179,2929,2202],{"class":2185},[2179,2931,2291],{"class":2185},[2179,2933,2205],{"class":2185},[2179,2935,2297],{"class":2538},[2179,2937,2199],{"class":2185},[2179,2939,2202],{"class":2185},[2179,2941,2205],{"class":2185},[2179,2943,2944],{"class":2208},"Register, look up and retire device serials.",[2179,2946,2199],{"class":2185},[2179,2948,2330],{"class":2185},[2179,2950,2952,2954,2956,2958,2960,2962,2965],{"class":2181,"line":2951},13,[2179,2953,2893],{"class":2185},[2179,2955,2359],{"class":2296},[2179,2957,2199],{"class":2185},[2179,2959,2202],{"class":2185},[2179,2961,2205],{"class":2185},[2179,2963,2964],{"class":2208},"hashtag",[2179,2966,2371],{"class":2185},[2179,2968,2970],{"class":2181,"line":2969},14,[2179,2971,2972],{"class":2185},"    }\n",[2179,2974,2976],{"class":2181,"line":2975},15,[2179,2977,2868],{"class":2185},[2179,2979,2981,2983,2986,2988,2990,2992,2994,2996,2998,3000,3002,3005,3007,3009,3011,3014,3016,3018,3020,3023,3025,3027,3029,3032,3034,3036,3038,3041,3043],{"class":2181,"line":2980},16,[2179,2982,2192],{"class":2185},[2179,2984,2985],{"class":2195},"publisher",[2179,2987,2199],{"class":2185},[2179,2989,2202],{"class":2185},[2179,2991,2291],{"class":2185},[2179,2993,2205],{"class":2185},[2179,2995,2196],{"class":2296},[2179,2997,2199],{"class":2185},[2179,2999,2202],{"class":2185},[2179,3001,2205],{"class":2185},[2179,3003,3004],{"class":2208},"Acme GmbH",[2179,3006,2199],{"class":2185},[2179,3008,2311],{"class":2185},[2179,3010,2205],{"class":2185},[2179,3012,3013],{"class":2296},"kind",[2179,3015,2199],{"class":2185},[2179,3017,2202],{"class":2185},[2179,3019,2205],{"class":2185},[2179,3021,3022],{"class":2208},"partner",[2179,3024,2199],{"class":2185},[2179,3026,2311],{"class":2185},[2179,3028,2205],{"class":2185},[2179,3030,3031],{"class":2296},"website",[2179,3033,2199],{"class":2185},[2179,3035,2202],{"class":2185},[2179,3037,2205],{"class":2185},[2179,3039,3040],{"class":2208},"https:\u002F\u002Facme.example",[2179,3042,2199],{"class":2185},[2179,3044,2330],{"class":2185},[2179,3046,3048,3050,3053,3055,3057,3059,3061,3063,3065,3067,3069,3071,3073],{"class":2181,"line":3047},17,[2179,3049,2192],{"class":2185},[2179,3051,3052],{"class":2195},"languages",[2179,3054,2199],{"class":2185},[2179,3056,2202],{"class":2185},[2179,3058,2631],{"class":2185},[2179,3060,2199],{"class":2185},[2179,3062,2316],{"class":2208},[2179,3064,2199],{"class":2185},[2179,3066,2311],{"class":2185},[2179,3068,2205],{"class":2185},[2179,3070,2297],{"class":2208},[2179,3072,2199],{"class":2185},[2179,3074,2641],{"class":2185},[2179,3076,3078,3080,3083,3085,3087,3089,3091,3094,3096,3098,3100,3103,3105],{"class":2181,"line":3077},18,[2179,3079,2192],{"class":2185},[2179,3081,3082],{"class":2195},"compatibility",[2179,3084,2199],{"class":2185},[2179,3086,2202],{"class":2185},[2179,3088,2291],{"class":2185},[2179,3090,2205],{"class":2185},[2179,3092,3093],{"class":2296},"min_platform_version",[2179,3095,2199],{"class":2185},[2179,3097,2202],{"class":2185},[2179,3099,2205],{"class":2185},[2179,3101,3102],{"class":2208},"1.0.0",[2179,3104,2199],{"class":2185},[2179,3106,2863],{"class":2185},[2179,3108,3110],{"class":2181,"line":3109},19,[2179,3111,2377],{"class":2185},[2059,3113,3114,3115,3118],{},"Keep it honest about what is built. A highlight describing a feature that depends on an ",[2071,3116,3117],{"href":840},"unproven platform grant"," is a promise you cannot keep yet, and the merchant finds out during the trial.",[2059,3120,3121,3123,3124,2393,3127,2393,3130,2393,3133,2385,3136,2420],{},[2063,3122,2742],{}," also accepts ",[2063,3125,3126],{},"media",[2063,3128,3129],{},"industries",[2063,3131,3132],{},"vendors",[2063,3134,3135],{},"rating",[2063,3137,3138],{},"changelog",[2059,3140,3141,3142,2393,3144,3146,3147,3150,3151,2393,3154,2393,3157,3160,3161,3164,3165,3168,3169,3171,3172,3175,3176,2420],{},"Alongside ",[2063,3143,2742],{},[2063,3145,2125],{}," takes a ",[2063,3148,3149],{},"legal"," block — ",[2063,3152,3153],{},"privacy_policy",[2063,3155,3156],{},"terms",[2063,3158,3159],{},"dpa"," and a ",[2063,3162,3163],{},"subprocessors"," list. These are what a customer has to be able to read ",[2153,3166,3167],{},"before"," installing, so each is a URL that opens without an account. ",[2063,3170,3163],{}," names who is behind each host you declared as an ",[2063,3173,3174],{},"outbound"," grant, and your privacy policy is where deletion belongs, because nothing on the platform answers an erasure request for you. See ",[2071,3177,888],{"href":3178},"\u002Fdocs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fbilling#legal",[2075,3180,3182],{"id":3181},"_4-explain-every-grant","4. Explain every grant",[2059,3184,3185],{},"This is the step most Apps neglect, and it is the one that decides installs.",[2059,3187,3188,3189,3192,3193,3196],{},"Your App gets no access by default. Everything it may reach is in ",[2063,3190,3191],{},"manifest.permissions"," — the ",[2071,3194,3195],{"href":852},"access register"," the gateway enforces at runtime and the platform shows the merchant when they install.",[3198,3199,3201],"h3",{"id":3200},"claim-less-first","Claim less first",[2059,3203,3204],{},"Editing the register is cheaper than justifying it, so do it before you write a word of explanation.",[2059,3206,3207,3208,3211,3212,3215,3216,3218,3219,3222],{},"Grant per operation, so ",[2063,3209,3210],{},"[\"read\", \"create\"]"," on a ledger is a safety property you can point at rather than a habit; ",[2063,3213,3214],{},"[\"read\", \"create\", \"update\", \"delete\"]"," everywhere tells the merchant you did not think about it. Narrow an ",[2063,3217,3174],{}," host and its paths, because ",[2063,3220,3221],{},"{ \"outbound\": \"*\" }"," makes the register unanswerable. And do not declare an unproven grant speculatively — a merchant consenting to something that does not work yet will ask why.",[2169,3224,3226],{"className":2171,"code":3225,"filename":2173,"language":2174,"meta":2175,"style":2175},"\"permissions\": [\n  { \"entity\": \"device_serials\", \"access\": [\"read\", \"create\", \"update\"] },\n  { \"capability\": \"orders.get\", \"compatible\": \"^1.0\" },\n  { \"outbound\": \"api.acme-service.example\", \"paths\": [\"\u002Fv2\u002Fwarranties\u002F*\"] }\n]\n",[2063,3227,3228,3242,3306,3346,3389],{"__ignoreMap":2175},[2179,3229,3230,3232,3235,3237,3239],{"class":2181,"line":2182},[2179,3231,2199],{"class":2185},[2179,3233,3234],{"class":2208},"permissions",[2179,3236,2199],{"class":2185},[2179,3238,2760],{"class":2759},[2179,3240,3241],{"class":2185},"[\n",[2179,3243,3244,3247,3249,3252,3254,3256,3258,3261,3263,3265,3267,3270,3272,3274,3276,3278,3281,3283,3285,3287,3290,3292,3294,3296,3299,3301,3304],{"class":2181,"line":2189},[2179,3245,3246],{"class":2185},"  {",[2179,3248,2205],{"class":2185},[2179,3250,3251],{"class":2195},"entity",[2179,3253,2199],{"class":2185},[2179,3255,2202],{"class":2185},[2179,3257,2205],{"class":2185},[2179,3259,3260],{"class":2208},"device_serials",[2179,3262,2199],{"class":2185},[2179,3264,2311],{"class":2185},[2179,3266,2205],{"class":2185},[2179,3268,3269],{"class":2195},"access",[2179,3271,2199],{"class":2185},[2179,3273,2202],{"class":2185},[2179,3275,2631],{"class":2185},[2179,3277,2199],{"class":2185},[2179,3279,3280],{"class":2208},"read",[2179,3282,2199],{"class":2185},[2179,3284,2311],{"class":2185},[2179,3286,2205],{"class":2185},[2179,3288,3289],{"class":2208},"create",[2179,3291,2199],{"class":2185},[2179,3293,2311],{"class":2185},[2179,3295,2205],{"class":2185},[2179,3297,3298],{"class":2208},"update",[2179,3300,2199],{"class":2185},[2179,3302,3303],{"class":2185},"]",[2179,3305,2330],{"class":2185},[2179,3307,3308,3310,3312,3315,3317,3319,3321,3324,3326,3328,3330,3333,3335,3337,3339,3342,3344],{"class":2181,"line":2217},[2179,3309,3246],{"class":2185},[2179,3311,2205],{"class":2185},[2179,3313,3314],{"class":2195},"capability",[2179,3316,2199],{"class":2185},[2179,3318,2202],{"class":2185},[2179,3320,2205],{"class":2185},[2179,3322,3323],{"class":2208},"orders.get",[2179,3325,2199],{"class":2185},[2179,3327,2311],{"class":2185},[2179,3329,2205],{"class":2185},[2179,3331,3332],{"class":2195},"compatible",[2179,3334,2199],{"class":2185},[2179,3336,2202],{"class":2185},[2179,3338,2205],{"class":2185},[2179,3340,3341],{"class":2208},"^1.0",[2179,3343,2199],{"class":2185},[2179,3345,2330],{"class":2185},[2179,3347,3348,3350,3352,3354,3356,3358,3360,3363,3365,3367,3369,3372,3374,3376,3378,3380,3383,3385,3387],{"class":2181,"line":2238},[2179,3349,3246],{"class":2185},[2179,3351,2205],{"class":2185},[2179,3353,3174],{"class":2195},[2179,3355,2199],{"class":2185},[2179,3357,2202],{"class":2185},[2179,3359,2205],{"class":2185},[2179,3361,3362],{"class":2208},"api.acme-service.example",[2179,3364,2199],{"class":2185},[2179,3366,2311],{"class":2185},[2179,3368,2205],{"class":2185},[2179,3370,3371],{"class":2195},"paths",[2179,3373,2199],{"class":2185},[2179,3375,2202],{"class":2185},[2179,3377,2631],{"class":2185},[2179,3379,2199],{"class":2185},[2179,3381,3382],{"class":2208},"\u002Fv2\u002Fwarranties\u002F*",[2179,3384,2199],{"class":2185},[2179,3386,3303],{"class":2185},[2179,3388,2863],{"class":2185},[2179,3390,3391],{"class":2181,"line":2259},[2179,3392,2664],{"class":2185},[3198,3394,3396],{"id":3395},"then-explain-what-is-left","Then explain what is left",[2059,3398,3399,2739,3401,3404],{},[2063,3400,2125],{},[2063,3402,3403],{},"listing.scopes"," carries one entry per grant you want explained:",[2169,3406,3408],{"className":2171,"code":3407,"filename":2125,"language":2174,"meta":2175,"style":2175},"\"listing\": {\n  \"scopes\": [\n    { \"scope\": \"orders.get\", \"reason\": { \"en\": \"Link a registered serial to the order that sold it.\" } }\n  ]\n}\n",[2063,3409,3410,3422,3435,3487,3492],{"__ignoreMap":2175},[2179,3411,3412,3414,3416,3418,3420],{"class":2181,"line":2182},[2179,3413,2199],{"class":2185},[2179,3415,2742],{"class":2208},[2179,3417,2199],{"class":2185},[2179,3419,2760],{"class":2759},[2179,3421,2186],{"class":2185},[2179,3423,3424,3426,3429,3431,3433],{"class":2181,"line":2189},[2179,3425,2192],{"class":2185},[2179,3427,3428],{"class":2195},"scopes",[2179,3430,2199],{"class":2185},[2179,3432,2202],{"class":2185},[2179,3434,2819],{"class":2185},[2179,3436,3437,3439,3441,3444,3446,3448,3450,3452,3454,3456,3458,3461,3463,3465,3467,3469,3471,3473,3475,3477,3480,3482,3485],{"class":2181,"line":2217},[2179,3438,2824],{"class":2185},[2179,3440,2205],{"class":2185},[2179,3442,3443],{"class":2296},"scope",[2179,3445,2199],{"class":2185},[2179,3447,2202],{"class":2185},[2179,3449,2205],{"class":2185},[2179,3451,3323],{"class":2208},[2179,3453,2199],{"class":2185},[2179,3455,2311],{"class":2185},[2179,3457,2205],{"class":2185},[2179,3459,3460],{"class":2296},"reason",[2179,3462,2199],{"class":2185},[2179,3464,2202],{"class":2185},[2179,3466,2291],{"class":2185},[2179,3468,2205],{"class":2185},[2179,3470,2297],{"class":2538},[2179,3472,2199],{"class":2185},[2179,3474,2202],{"class":2185},[2179,3476,2205],{"class":2185},[2179,3478,3479],{"class":2208},"Link a registered serial to the order that sold it.",[2179,3481,2199],{"class":2185},[2179,3483,3484],{"class":2185}," }",[2179,3486,2863],{"class":2185},[2179,3488,3489],{"class":2181,"line":2238},[2179,3490,3491],{"class":2185},"  ]\n",[2179,3493,3494],{"class":2181,"line":2259},[2179,3495,2377],{"class":2185},[2059,3497,3498,3504,3505,3507,3508,3511,3512,3514],{},[2133,3499,3500,3501,3503],{},"Nothing joins a ",[2063,3502,3443],{}," string to a grant automatically."," It is a label you choose and the merchant sees verbatim, so write the grant's own key — ",[2063,3506,3323],{}," for ",[2063,3509,3510],{},"{ \"capability\": \"orders.get\" }"," — and the two read as one thing. A ",[2063,3513,3443],{}," naming no grant you hold is just a different string on the page.",[2059,3516,3517,3518,3520],{},"Write one for every grant, including the ",[2063,3519,3174],{}," ones. A reason is a sentence about the merchant's business, not about your architecture.",[3522,3523,3524,3537],"table",{},[3525,3526,3527],"thead",{},[3528,3529,3530,3534],"tr",{},[3531,3532,3533],"th",{},"Write",[3531,3535,3536],{},"Not",[3538,3539,3540,3549],"tbody",{},[3528,3541,3542,3546],{},[3543,3544,3545],"td",{},"\"Link a registered serial to the order that sold it.\"",[3543,3547,3548],{},"\"Requires read on orders.\"",[3528,3550,3551,3554],{},[3543,3552,3553],{},"\"Register warranties with the manufacturer.\"",[3543,3555,3556],{},"\"Outbound HTTP to api.acme-service.example.\"",[2059,3558,3559,3560,3562],{},"An unexplained grant is not neutral. A merchant reading a bare ",[2063,3561,3323],{}," with no reason has to decide what you might do with it, and the safe assumption is rarely the flattering one.",[2075,3564,3566],{"id":3565},"_5-publish-a-version","5. Publish a version",[2059,3568,3569,3570,3572,3573,3575,3576,3578],{},"Flip ",[2063,3571,2264],{}," to ",[2063,3574,2094],{},", bump ",[2063,3577,2243],{},", and deploy. Publishing is what lists the App in the Marketplace; a tenant who installs it gets your latest published version.",[2169,3580,3585],{"className":3581,"code":3582,"filename":3583,"language":3584,"meta":2175,"style":2175},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# \"type\": \"public\" and a bumped \"version\" in manifest.json\nrevenexx deploy app --owner \"$REVENEXX_TENANT\"\n","Terminal","bash",[2063,3586,3587,3593],{"__ignoreMap":2175},[2179,3588,3589],{"class":2181,"line":2182},[2179,3590,3592],{"class":3591},"sHwdD","# \"type\": \"public\" and a bumped \"version\" in manifest.json\n",[2179,3594,3595,3598,3601,3604,3607,3609,3612],{"class":2181,"line":2189},[2179,3596,3597],{"class":2296},"revenexx",[2179,3599,3600],{"class":2208}," deploy",[2179,3602,3603],{"class":2208}," app",[2179,3605,3606],{"class":2208}," --owner",[2179,3608,2205],{"class":2185},[2179,3610,3611],{"class":2759},"$REVENEXX_TENANT",[2179,3613,2371],{"class":2185},[2059,3615,3616,3619,3620,3623,3624,3627],{},[2063,3617,3618],{},"revenexx deploy app"," builds, publishes and installs by default. ",[2063,3621,3622],{},"--no-publish"," skips the Marketplace publish and still installs; ",[2063,3625,3626],{},"--no-publish --no-install"," builds and stops there. Skipping the publish on a public App's first deploy fails the install that follows it, because a public App that is not published yet cannot be installed.",[2059,3629,3630,3633],{},[2133,3631,3632],{},"Unpublishing is not a recall."," It takes the App off the Marketplace so nobody new can install it. It does not uninstall it from tenants who already have it, and it does not stop their traffic.",[2059,3635,3636],{},"It is also a switch on the App rather than on one version, so it withdraws your last good version along with the bad one — there is nothing left listed for a new merchant to install. When you find a bad version, unpublishing stops the bleeding for new installs; fixing the tenants already on it means shipping a new version.",[2075,3638,3640],{"id":3639},"_6-verify-the-install-path-not-just-your-install","6. Verify the install path, not just your install",[2059,3642,3643],{},"You have only ever installed this App yourself. A Marketplace install differs in one way that bites:",[2059,3645,3646,3652],{},[2133,3647,3648,3651],{},[2063,3649,3650],{},"app.installed"," does not reliably fire on a Marketplace install."," An App that seeds its defaults only in an install-event handler reaches a merchant with an empty configuration and no obvious reason why.",[2059,3654,3655,3656,3659,3660,3662],{},"You cannot reach in and fix that from outside. An API key identifies one tenant, so no credential you hold points at a merchant's tenant, and nobody is going to call a seeding route there on your behalf — see ",[2071,3657,3658],{"href":19},"Architecture",". Seeding is the App's own job, on two paths: seed on the ",[2063,3661,3650],{}," event, and have the App ensure its defaults on first use as well, so a missed event costs nothing. Make both idempotent by checking before you write, because both may land.",[2059,3664,3665,3666,3669],{},"On a tenant you own, expose that seed as an idempotent ",[2063,3667,3668],{},"\u002Fdefaults"," capability too. It is how you prove the seeding works without waiting for an install:",[2169,3671,3674],{"className":3581,"code":3672,"filename":3673,"language":3584,"meta":2175,"style":2175},"curl -X POST https:\u002F\u002Fapi.revenexx.com\u002Fv1\u002Fserials\u002Fdefaults \\\n  -H \"X-Revenexx-Tenant: \u003CYOUR_TENANT_SLUG>\" \\\n  -H \"X-Revenexx-Api-Key: rvxk_...\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{}'\n","Request",[2063,3675,3676,3693,3707,3720,3733],{"__ignoreMap":2175},[2179,3677,3678,3681,3684,3687,3690],{"class":2181,"line":2182},[2179,3679,3680],{"class":2296},"curl",[2179,3682,3683],{"class":2208}," -X",[2179,3685,3686],{"class":2208}," POST",[2179,3688,3689],{"class":2208}," https:\u002F\u002Fapi.revenexx.com\u002Fv1\u002Fserials\u002Fdefaults",[2179,3691,3692],{"class":2759}," \\\n",[2179,3694,3695,3698,3700,3703,3705],{"class":2181,"line":2189},[2179,3696,3697],{"class":2208},"  -H",[2179,3699,2205],{"class":2185},[2179,3701,3702],{"class":2208},"X-Revenexx-Tenant: \u003CYOUR_TENANT_SLUG>",[2179,3704,2199],{"class":2185},[2179,3706,3692],{"class":2759},[2179,3708,3709,3711,3713,3716,3718],{"class":2181,"line":2217},[2179,3710,3697],{"class":2208},[2179,3712,2205],{"class":2185},[2179,3714,3715],{"class":2208},"X-Revenexx-Api-Key: rvxk_...",[2179,3717,2199],{"class":2185},[2179,3719,3692],{"class":2759},[2179,3721,3722,3724,3726,3729,3731],{"class":2181,"line":2238},[2179,3723,3697],{"class":2208},[2179,3725,2205],{"class":2185},[2179,3727,3728],{"class":2208},"Content-Type: application\u002Fjson",[2179,3730,2199],{"class":2185},[2179,3732,3692],{"class":2759},[2179,3734,3735,3738,3741,3744],{"class":2181,"line":2259},[2179,3736,3737],{"class":2208},"  -d",[2179,3739,3740],{"class":2185}," '",[2179,3742,3743],{"class":2208},"{}",[2179,3745,3746],{"class":2185},"'\n",[2059,3748,3749,3750,3752],{},"Then install onto a staging tenant that is not the one you built the App for, and work through ",[2071,3751,954],{"href":955}," there. That is the first honest test of everything you assumed about the data.",[2075,3754,3756],{"id":3755},"what-changes-once-other-peoples-tenants-depend-on-you","What changes once other people's tenants depend on you",[2059,3758,3759],{},"Five things change.",[3198,3761,3763],{"id":3762},"you-no-longer-know-the-data","You no longer know the data",[2059,3765,3766,3767,3770,3771,3774],{},"Row counts, label lengths, null columns, locales and currencies all vary, and a screen that renders beautifully for your first customer is the one every other merchant judges you by. Every business rule you hardcoded becomes a ",[2071,3768,3769],{"href":649},"setting",", a ",[2071,3772,3773],{"href":655},"vocabulary",", or a decision you make for everybody and defend.",[3198,3776,3778],{"id":3777},"versioning-discipline","Versioning discipline",[2059,3780,3781],{},"With one customer you can coordinate a change. With fifty you cannot. A breaking change is three things at once:",[3783,3784,3785,3789,3792],"ul",{},[3786,3787,3788],"li",{},"a new major version,",[3786,3790,3791],{},"a new capability key,",[3786,3793,3794],{},"and a new route.",[2059,3796,3797,3798,3801,3802,3805,3806,3808,3809,2420],{},"You do not change the meaning of ",[2063,3799,3800],{},"serials.list"," at ",[2063,3803,3804],{},"GET \u002Fv1\u002Fserials","; you define a new capability on its own path, and both serve traffic until callers move. Deprecating the old one is a documentation act — say so in its ",[2063,3807,2338],{},", point at the replacement, leave the route serving. See ",[2071,3810,215],{"href":960},[3198,3812,3814],{"id":3813},"you-cannot-assume-which-version-a-tenant-is-on","You cannot assume which version a tenant is on",[2059,3816,3817,3818,3821],{},"Whether and when an installed tenant moves to your next version is decided outside your App, and not something this page can state accurately today. Do not design around an assumed upgrade window. What you can rely on is the contract discipline above — and it is discipline, not a platform property: ",[2153,3819,3820],{},"if"," you keep every break on a new route, a tenant on an older version keeps working whether or not anybody upgrades them. Break that rule once and nothing catches it for you.",[3198,3823,3825],{"id":3824},"consent-drift-becomes-a-real-risk","Consent drift becomes a real risk",[2059,3827,3828],{},"A new grant is a new thing the merchant consents to, whatever the version number says — and this one is not left to your conscience. The platform records which register a tenant consented to and flags an install whose grants have since widened, so an escalation waits on the merchant rather than taking effect quietly.",[2059,3830,3831,3832,3834],{},"That makes the discipline cheap to keep and expensive to skip. Add the ",[2063,3833,3460],{}," in the same commit as the grant, remove the grant in the same version you remove the code, and say what changed in the release notes. Six versions of drift and your register describes an App that no longer exists.",[3198,3836,3838],{"id":3837},"an-uninstall-is-your-handlers-decision","An uninstall is your handler's decision",[2059,3840,3841,3844],{},[2063,3842,3843],{},"app.uninstalled"," is delivered to Apps that listen for it. What that handler does is yours to decide, and the usual right answer is nothing destructive: cancel outbound work, stop expecting to be called, leave the rows alone, so a merchant who uninstalls and reinstalls still has their data.",[2059,3846,3847,3848,2739,3850,3853],{},"That is a choice you are making, not a platform retention rule and not an answer to an erasure request. If a merchant asks you to delete their data, that is yours to handle — which is why ",[2063,3849,2125],{},[2063,3851,3852],{},"legal.privacy_policy"," is where you say how, in a document they could read before they installed.",[2075,3855,3857],{"id":3856},"whats-next","What's next",[2059,3859,3860,3861,3863],{},"If you read one more page before publishing, make it ",[2071,3862,894],{"href":895}," — step 4 is the one that decides installs.",[3783,3865,3866,3873,3882,3889,3896],{},[3786,3867,3868,3872],{},[2133,3869,3870],{},[2071,3871,930],{"href":931}," — the reach decision in full.",[3786,3874,3875,3879,3880,2420],{},[2133,3876,3877],{},[2071,3878,888],{"href":889}," — every field of ",[2063,3881,2125],{},[3786,3883,3884,3888],{},[2133,3885,3886],{},[2071,3887,894],{"href":895}," — what the merchant reads before installing.",[3786,3890,3891,3895],{},[2133,3892,3893],{},[2071,3894,936],{"href":937}," — what publish, install and uninstall each do.",[3786,3897,3898,3902],{},[2133,3899,3900],{},[2071,3901,215],{"href":960}," — what counts as a break, and what does not.",[3904,3905,3906],"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 .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .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}",{"title":2175,"searchDepth":2189,"depth":2189,"links":3908},[3909,3910,3911,3912,3913,3917,3918,3919,3926],{"id":2077,"depth":2189,"text":2078},{"id":2163,"depth":2189,"text":2164},{"id":2423,"depth":2189,"text":2424},{"id":2733,"depth":2189,"text":2734},{"id":3181,"depth":2189,"text":3182,"children":3914},[3915,3916],{"id":3200,"depth":2217,"text":3201},{"id":3395,"depth":2217,"text":3396},{"id":3565,"depth":2189,"text":3566},{"id":3639,"depth":2189,"text":3640},{"id":3755,"depth":2189,"text":3756,"children":3920},[3921,3922,3923,3924,3925],{"id":3762,"depth":2217,"text":3763},{"id":3777,"depth":2217,"text":3778},{"id":3813,"depth":2217,"text":3814},{"id":3824,"depth":2217,"text":3825},{"id":3837,"depth":2217,"text":3838},{"id":3856,"depth":2189,"text":3857},"Take a private App to a listing any tenant can install — the manifest fields a listing needs, pricing in billing.json, the consent screen you are writing, publishing the version, and what changes once other people's tenants depend on you.","md",null,{},true,{"title":112,"description":3927},{"loc":113},"xRJwBaSC14v0wmwRy_7vNy8H0Gyf0O1yy7m7wbVrlJE",1790006879364]