[{"data":1,"prerenderedAt":3969},["ShallowReactive",2],{"navigation_docs":3,"-docs-products-apps-schema-reference":984},[4,8,44,50,86,583,625,918],{"title":5,"path":6,"stem":7},"Home","\u002Fdocs","docs\u002Findex",{"title":9,"path":10,"stem":11,"children":12},"API usage","\u002Fdocs\u002Fapi-usage","docs\u002Fapi-usage\u002Findex",[13,14,20,26,32,38],{"title":9,"path":10,"stem":11},{"title":15,"path":16,"stem":17,"children":18},"Errors","\u002Fdocs\u002Fapi-usage\u002Ferrors","docs\u002Fapi-usage\u002Ferrors\u002Findex",[19],{"title":15,"path":16,"stem":17},{"title":21,"path":22,"stem":23,"children":24},"Retries & idempotency","\u002Fdocs\u002Fapi-usage\u002Fidempotency","docs\u002Fapi-usage\u002Fidempotency\u002Findex",[25],{"title":21,"path":22,"stem":23},{"title":27,"path":28,"stem":29,"children":30},"Pagination & filtering","\u002Fdocs\u002Fapi-usage\u002Fpagination","docs\u002Fapi-usage\u002Fpagination\u002Findex",[31],{"title":27,"path":28,"stem":29},{"title":33,"path":34,"stem":35,"children":36},"Rate limits","\u002Fdocs\u002Fapi-usage\u002Frate-limits","docs\u002Fapi-usage\u002Frate-limits\u002Findex",[37],{"title":33,"path":34,"stem":35},{"title":39,"path":40,"stem":41,"children":42},"Versioning & stability","\u002Fdocs\u002Fapi-usage\u002Fversioning","docs\u002Fapi-usage\u002Fversioning\u002Findex",[43],{"title":39,"path":40,"stem":41},{"title":45,"path":46,"stem":47,"children":48},"What's new","\u002Fdocs\u002Fchangelog","docs\u002Fchangelog\u002Findex",[49],{"title":45,"path":46,"stem":47},{"title":51,"path":52,"stem":53,"children":54},"Getting Started","\u002Fdocs\u002Fgetting-started","docs\u002Fgetting-started\u002Findex",[55,56,62,68,74,80],{"title":51,"path":52,"stem":53},{"title":57,"path":58,"stem":59,"children":60},"Architecture Overview","\u002Fdocs\u002Fgetting-started\u002Farchitecture","docs\u002Fgetting-started\u002Farchitecture\u002Findex",[61],{"title":57,"path":58,"stem":59},{"title":63,"path":64,"stem":65,"children":66},"Glossary","\u002Fdocs\u002Fgetting-started\u002Fglossary","docs\u002Fgetting-started\u002Fglossary\u002Findex",[67],{"title":63,"path":64,"stem":65},{"title":69,"path":70,"stem":71,"children":72},"Platform Overview","\u002Fdocs\u002Fgetting-started\u002Fplatform-overview","docs\u002Fgetting-started\u002Fplatform-overview\u002Findex",[73],{"title":69,"path":70,"stem":71},{"title":75,"path":76,"stem":77,"children":78},"Prerequisites","\u002Fdocs\u002Fgetting-started\u002Fprerequisites","docs\u002Fgetting-started\u002Fprerequisites\u002Findex",[79],{"title":75,"path":76,"stem":77},{"title":81,"path":82,"stem":83,"children":84},"Your First App in 15 Minutes","\u002Fdocs\u002Fgetting-started\u002Fquick-start","docs\u002Fgetting-started\u002Fquick-start\u002Findex",[85],{"title":81,"path":82,"stem":83},{"title":87,"path":88,"stem":89,"children":90},"Products","\u002Fdocs\u002Fproducts","docs\u002Fproducts\u002Findex",[91,92,98,170,200,218,254,320,517,565],{"title":87,"path":88,"stem":89},{"title":93,"path":94,"stem":95,"children":96},"AI Studio","\u002Fdocs\u002Fproducts\u002Fai","docs\u002Fproducts\u002Fai\u002Findex",[97],{"title":93,"path":94,"stem":95},{"title":99,"path":100,"stem":101,"children":102},"App Studio","\u002Fdocs\u002Fproducts\u002Fapps","docs\u002Fproducts\u002Fapps\u002Findex",[103,104,110,116,122,128,134,140,146,152,158,164],{"title":99,"path":100,"stem":101},{"title":105,"path":106,"stem":107,"children":108},"App Model","\u002Fdocs\u002Fproducts\u002Fapps\u002Fapp-model","docs\u002Fproducts\u002Fapps\u002Fapp-model\u002Findex",[109],{"title":105,"path":106,"stem":107},{"title":111,"path":112,"stem":113,"children":114},"Auto-generated data APIs","\u002Fdocs\u002Fproducts\u002Fapps\u002Fauto-generated-data-apis","docs\u002Fproducts\u002Fapps\u002Fauto-generated-data-apis\u002Findex",[115],{"title":111,"path":112,"stem":113},{"title":117,"path":118,"stem":119,"children":120},"Billing & Events","\u002Fdocs\u002Fproducts\u002Fapps\u002Fbilling-events","docs\u002Fproducts\u002Fapps\u002Fbilling-events\u002Findex",[121],{"title":117,"path":118,"stem":119},{"title":123,"path":124,"stem":125,"children":126},"Cockpit Integration","\u002Fdocs\u002Fproducts\u002Fapps\u002Fcockpit-integration","docs\u002Fproducts\u002Fapps\u002Fcockpit-integration\u002Findex",[127],{"title":123,"path":124,"stem":125},{"title":129,"path":130,"stem":131,"children":132},"App Model Concept","\u002Fdocs\u002Fproducts\u002Fapps\u002Fconcept","docs\u002Fproducts\u002Fapps\u002Fconcept\u002Findex",[133],{"title":129,"path":130,"stem":131},{"title":135,"path":136,"stem":137,"children":138},"App Lifecycle","\u002Fdocs\u002Fproducts\u002Fapps\u002Flifecycle","docs\u002Fproducts\u002Fapps\u002Flifecycle\u002Findex",[139],{"title":135,"path":136,"stem":137},{"title":141,"path":142,"stem":143,"children":144},"Manifest Reference","\u002Fdocs\u002Fproducts\u002Fapps\u002Fmanifest-reference","docs\u002Fproducts\u002Fapps\u002Fmanifest-reference\u002Findex",[145],{"title":141,"path":142,"stem":143},{"title":147,"path":148,"stem":149,"children":150},"Market Concept","\u002Fdocs\u002Fproducts\u002Fapps\u002Fmarket-concept","docs\u002Fproducts\u002Fapps\u002Fmarket-concept\u002Findex",[151],{"title":147,"path":148,"stem":149},{"title":153,"path":154,"stem":155,"children":156},"Policies","\u002Fdocs\u002Fproducts\u002Fapps\u002Fpolicies","docs\u002Fproducts\u002Fapps\u002Fpolicies\u002Findex",[157],{"title":153,"path":154,"stem":155},{"title":159,"path":160,"stem":161,"children":162},"Schema migrations","\u002Fdocs\u002Fproducts\u002Fapps\u002Fschema-migrator","docs\u002Fproducts\u002Fapps\u002Fschema-migrator\u002Findex",[163],{"title":159,"path":160,"stem":161},{"title":165,"path":166,"stem":167,"children":168},"Schema Reference","\u002Fdocs\u002Fproducts\u002Fapps\u002Fschema-reference","docs\u002Fproducts\u002Fapps\u002Fschema-reference\u002Findex",[169],{"title":165,"path":166,"stem":167},{"title":171,"path":172,"stem":173,"children":174},"Authentication","\u002Fdocs\u002Fproducts\u002Fauth","docs\u002Fproducts\u002Fauth\u002Findex",[175,176,182,188,194],{"title":171,"path":172,"stem":173},{"title":177,"path":178,"stem":179,"children":180},"API keys","\u002Fdocs\u002Fproducts\u002Fauth\u002Fapi-keys","docs\u002Fproducts\u002Fauth\u002Fapi-keys\u002Findex",[181],{"title":177,"path":178,"stem":179},{"title":183,"path":184,"stem":185,"children":186},"Multi-factor authentication","\u002Fdocs\u002Fproducts\u002Fauth\u002Fmfa","docs\u002Fproducts\u002Fauth\u002Fmfa\u002Findex",[187],{"title":183,"path":184,"stem":185},{"title":189,"path":190,"stem":191,"children":192},"Social sign-in","\u002Fdocs\u002Fproducts\u002Fauth\u002Foauth2","docs\u002Fproducts\u002Fauth\u002Foauth2\u002Findex",[193],{"title":189,"path":190,"stem":191},{"title":195,"path":196,"stem":197,"children":198},"Sessions","\u002Fdocs\u002Fproducts\u002Fauth\u002Fsessions","docs\u002Fproducts\u002Fauth\u002Fsessions\u002Findex",[199],{"title":195,"path":196,"stem":197},{"title":201,"path":202,"stem":203,"children":204},"Events","\u002Fdocs\u002Fproducts\u002Fevents","docs\u002Fproducts\u002Fevents\u002Findex",[205,206,212],{"title":201,"path":202,"stem":203},{"title":207,"path":208,"stem":209,"children":210},"Consuming events","\u002Fdocs\u002Fproducts\u002Fevents\u002Fconsuming-events","docs\u002Fproducts\u002Fevents\u002Fconsuming-events\u002Findex",[211],{"title":207,"path":208,"stem":209},{"title":213,"path":214,"stem":215,"children":216},"Event types","\u002Fdocs\u002Fproducts\u002Fevents\u002Fevent-types","docs\u002Fproducts\u002Fevents\u002Fevent-types\u002Findex",[217],{"title":213,"path":214,"stem":215},{"title":219,"path":220,"stem":221,"children":222},"Integration Studio","\u002Fdocs\u002Fproducts\u002Fintegration-studio","docs\u002Fproducts\u002Fintegration-studio\u002Findex",[223,224,230,236,242,248],{"title":219,"path":220,"stem":221},{"title":225,"path":226,"stem":227,"children":228},"Expression Syntax","\u002Fdocs\u002Fproducts\u002Fintegration-studio\u002Fexpression-syntax","docs\u002Fproducts\u002Fintegration-studio\u002Fexpression-syntax\u002Findex",[229],{"title":225,"path":226,"stem":227},{"title":231,"path":232,"stem":233,"children":234},"Node Types","\u002Fdocs\u002Fproducts\u002Fintegration-studio\u002Fnode-types","docs\u002Fproducts\u002Fintegration-studio\u002Fnode-types\u002Findex",[235],{"title":231,"path":232,"stem":233},{"title":237,"path":238,"stem":239,"children":240},"Dual-engine architecture","\u002Fdocs\u002Fproducts\u002Fintegration-studio\u002Foverview","docs\u002Fproducts\u002Fintegration-studio\u002Foverview\u002Findex",[241],{"title":237,"path":238,"stem":239},{"title":243,"path":244,"stem":245,"children":246},"Triggers","\u002Fdocs\u002Fproducts\u002Fintegration-studio\u002Ftriggers","docs\u002Fproducts\u002Fintegration-studio\u002Ftriggers\u002Findex",[247],{"title":243,"path":244,"stem":245},{"title":249,"path":250,"stem":251,"children":252},"Workflow Builder","\u002Fdocs\u002Fproducts\u002Fintegration-studio\u002Fworkflow-builder","docs\u002Fproducts\u002Fintegration-studio\u002Fworkflow-builder\u002Findex",[253],{"title":249,"path":250,"stem":251},{"title":255,"path":256,"stem":257,"children":258},"Network","\u002Fdocs\u002Fproducts\u002Fnetwork","docs\u002Fproducts\u002Fnetwork\u002Findex",[259,260,266,272,278,284,290,296,302,308,314],{"title":255,"path":256,"stem":257},{"title":261,"path":262,"stem":263,"children":264},"Caching","\u002Fdocs\u002Fproducts\u002Fnetwork\u002Fcaching","docs\u002Fproducts\u002Fnetwork\u002Fcaching\u002Findex",[265],{"title":261,"path":262,"stem":263},{"title":267,"path":268,"stem":269,"children":270},"Content delivery (CDN)","\u002Fdocs\u002Fproducts\u002Fnetwork\u002Fcdn","docs\u002Fproducts\u002Fnetwork\u002Fcdn\u002Findex",[271],{"title":267,"path":268,"stem":269},{"title":273,"path":274,"stem":275,"children":276},"Compression","\u002Fdocs\u002Fproducts\u002Fnetwork\u002Fcompression","docs\u002Fproducts\u002Fnetwork\u002Fcompression\u002Findex",[277],{"title":273,"path":274,"stem":275},{"title":279,"path":280,"stem":281,"children":282},"DDoS mitigation","\u002Fdocs\u002Fproducts\u002Fnetwork\u002Fddos","docs\u002Fproducts\u002Fnetwork\u002Fddos\u002Findex",[283],{"title":279,"path":280,"stem":281},{"title":285,"path":286,"stem":287,"children":288},"revenexx DNS service","\u002Fdocs\u002Fproducts\u002Fnetwork\u002Fdns","docs\u002Fproducts\u002Fnetwork\u002Fdns\u002Findex",[289],{"title":285,"path":286,"stem":287},{"title":291,"path":292,"stem":293,"children":294},"Edges","\u002Fdocs\u002Fproducts\u002Fnetwork\u002Fedges","docs\u002Fproducts\u002Fnetwork\u002Fedges\u002Findex",[295],{"title":291,"path":292,"stem":293},{"title":297,"path":298,"stem":299,"children":300},"Endpoints","\u002Fdocs\u002Fproducts\u002Fnetwork\u002Fendpoints","docs\u002Fproducts\u002Fnetwork\u002Fendpoints\u002Findex",[301],{"title":297,"path":298,"stem":299},{"title":303,"path":304,"stem":305,"children":306},"Regions","\u002Fdocs\u002Fproducts\u002Fnetwork\u002Fregions","docs\u002Fproducts\u002Fnetwork\u002Fregions\u002Findex",[307],{"title":303,"path":304,"stem":305},{"title":309,"path":310,"stem":311,"children":312},"Transport Layer Security (TLS)","\u002Fdocs\u002Fproducts\u002Fnetwork\u002Ftls","docs\u002Fproducts\u002Fnetwork\u002Ftls\u002Findex",[313],{"title":309,"path":310,"stem":311},{"title":315,"path":316,"stem":317,"children":318},"Web application firewall (WAF)","\u002Fdocs\u002Fproducts\u002Fnetwork\u002Fwaf","docs\u002Fproducts\u002Fnetwork\u002Fwaf\u002Findex",[319],{"title":315,"path":316,"stem":317},{"title":321,"path":322,"stem":323,"children":324},"Experience Studio","\u002Fdocs\u002Fproducts\u002Fsites","docs\u002Fproducts\u002Fsites\u002Findex",[325,326,332,337,343,349,355,361,367,373,379,385,391,397,403,409,487,505,511],{"title":321,"path":322,"stem":323},{"title":327,"path":328,"stem":329,"children":330},"Storefront Architecture","\u002Fdocs\u002Fproducts\u002Fsites\u002Farchitecture","docs\u002Fproducts\u002Fsites\u002Farchitecture\u002Findex",[331],{"title":327,"path":328,"stem":329},{"title":171,"path":333,"stem":334,"children":335},"\u002Fdocs\u002Fproducts\u002Fsites\u002Fauthentication","docs\u002Fproducts\u002Fsites\u002Fauthentication\u002Findex",[336],{"title":171,"path":333,"stem":334},{"title":338,"path":339,"stem":340,"children":341},"Blökkli Blocks","\u002Fdocs\u002Fproducts\u002Fsites\u002Fblokki-blocks","docs\u002Fproducts\u002Fsites\u002Fblokki-blocks\u002Findex",[342],{"title":338,"path":339,"stem":340},{"title":344,"path":345,"stem":346,"children":347},"Checkout","\u002Fdocs\u002Fproducts\u002Fsites\u002Fcheckout","docs\u002Fproducts\u002Fsites\u002Fcheckout\u002Findex",[348],{"title":344,"path":345,"stem":346},{"title":350,"path":351,"stem":352,"children":353},"Deploy from CLI","\u002Fdocs\u002Fproducts\u002Fsites\u002Fdeploy-from-cli","docs\u002Fproducts\u002Fsites\u002Fdeploy-from-cli\u002Findex",[354],{"title":350,"path":351,"stem":352},{"title":356,"path":357,"stem":358,"children":359},"Deploy from Git","\u002Fdocs\u002Fproducts\u002Fsites\u002Fdeploy-from-git","docs\u002Fproducts\u002Fsites\u002Fdeploy-from-git\u002Findex",[360],{"title":356,"path":357,"stem":358},{"title":362,"path":363,"stem":364,"children":365},"Deploy manually","\u002Fdocs\u002Fproducts\u002Fsites\u002Fdeploy-manually","docs\u002Fproducts\u002Fsites\u002Fdeploy-manually\u002Findex",[366],{"title":362,"path":363,"stem":364},{"title":368,"path":369,"stem":370,"children":371},"Deployments","\u002Fdocs\u002Fproducts\u002Fsites\u002Fdeployments","docs\u002Fproducts\u002Fsites\u002Fdeployments\u002Findex",[372],{"title":368,"path":369,"stem":370},{"title":374,"path":375,"stem":376,"children":377},"Develop revenexx Storefronts","\u002Fdocs\u002Fproducts\u002Fsites\u002Fdevelop","docs\u002Fproducts\u002Fsites\u002Fdevelop\u002Findex",[378],{"title":374,"path":375,"stem":376},{"title":380,"path":381,"stem":382,"children":383},"Domains","\u002Fdocs\u002Fproducts\u002Fsites\u002Fdomains","docs\u002Fproducts\u002Fsites\u002Fdomains\u002Findex",[384],{"title":380,"path":381,"stem":382},{"title":386,"path":387,"stem":388,"children":389},"Frameworks","\u002Fdocs\u002Fproducts\u002Fsites\u002Fframeworks","docs\u002Fproducts\u002Fsites\u002Fframeworks\u002Findex",[390],{"title":386,"path":387,"stem":388},{"title":392,"path":393,"stem":394,"children":395},"Instant rollbacks","\u002Fdocs\u002Fproducts\u002Fsites\u002Finstant-rollbacks","docs\u002Fproducts\u002Fsites\u002Finstant-rollbacks\u002Findex",[396],{"title":392,"path":393,"stem":394},{"title":398,"path":399,"stem":400,"children":401},"Logs","\u002Fdocs\u002Fproducts\u002Fsites\u002Flogs","docs\u002Fproducts\u002Fsites\u002Flogs\u002Findex",[402],{"title":398,"path":399,"stem":400},{"title":404,"path":405,"stem":406,"children":407},"Previews","\u002Fdocs\u002Fproducts\u002Fsites\u002Fpreviews","docs\u002Fproducts\u002Fsites\u002Fpreviews\u002Findex",[408],{"title":404,"path":405,"stem":406},{"title":410,"path":411,"stem":412,"children":413},"Start with Sites","\u002Fdocs\u002Fproducts\u002Fsites\u002Fquick-start","docs\u002Fproducts\u002Fsites\u002Fquick-start\u002Findex",[414,415,421,427,433,439,445,451,457,463,469,475,481],{"title":410,"path":411,"stem":412},{"title":416,"path":417,"stem":418,"children":419},"Deploy an Angular app to revenexx Storefronts","\u002Fdocs\u002Fproducts\u002Fsites\u002Fquick-start\u002Fangular","docs\u002Fproducts\u002Fsites\u002Fquick-start\u002Fangular\u002Findex",[420],{"title":416,"path":417,"stem":418},{"title":422,"path":423,"stem":424,"children":425},"Deploy a Astro app to revenexx Storefronts","\u002Fdocs\u002Fproducts\u002Fsites\u002Fquick-start\u002Fastro","docs\u002Fproducts\u002Fsites\u002Fquick-start\u002Fastro\u002Findex",[426],{"title":422,"path":423,"stem":424},{"title":428,"path":429,"stem":430,"children":431},"Deploy a Flutter Web app to revenexx Storefronts","\u002Fdocs\u002Fproducts\u002Fsites\u002Fquick-start\u002Fflutter","docs\u002Fproducts\u002Fsites\u002Fquick-start\u002Fflutter\u002Findex",[432],{"title":428,"path":429,"stem":430},{"title":434,"path":435,"stem":436,"children":437},"Deploy a Next.js app to revenexx Storefronts","\u002Fdocs\u002Fproducts\u002Fsites\u002Fquick-start\u002Fnextjs","docs\u002Fproducts\u002Fsites\u002Fquick-start\u002Fnextjs\u002Findex",[438],{"title":434,"path":435,"stem":436},{"title":440,"path":441,"stem":442,"children":443},"Deploy a Nuxt app to revenexx Storefronts","\u002Fdocs\u002Fproducts\u002Fsites\u002Fquick-start\u002Fnuxt","docs\u002Fproducts\u002Fsites\u002Fquick-start\u002Fnuxt\u002Findex",[444],{"title":440,"path":441,"stem":442},{"title":446,"path":447,"stem":448,"children":449},"Deploy a React Native app to revenexx Storefronts","\u002Fdocs\u002Fproducts\u002Fsites\u002Fquick-start\u002Freact-native","docs\u002Fproducts\u002Fsites\u002Fquick-start\u002Freact-native\u002Findex",[450],{"title":446,"path":447,"stem":448},{"title":452,"path":453,"stem":454,"children":455},"Deploy a React app to revenexx Storefronts","\u002Fdocs\u002Fproducts\u002Fsites\u002Fquick-start\u002Freact","docs\u002Fproducts\u002Fsites\u002Fquick-start\u002Freact\u002Findex",[456],{"title":452,"path":453,"stem":454},{"title":458,"path":459,"stem":460,"children":461},"Deploy a Remix app to revenexx Storefronts","\u002Fdocs\u002Fproducts\u002Fsites\u002Fquick-start\u002Fremix","docs\u002Fproducts\u002Fsites\u002Fquick-start\u002Fremix\u002Findex",[462],{"title":458,"path":459,"stem":460},{"title":464,"path":465,"stem":466,"children":467},"Deploy a SvelteKit app to revenexx Storefronts","\u002Fdocs\u002Fproducts\u002Fsites\u002Fquick-start\u002Fsveltekit","docs\u002Fproducts\u002Fsites\u002Fquick-start\u002Fsveltekit\u002Findex",[468],{"title":464,"path":465,"stem":466},{"title":470,"path":471,"stem":472,"children":473},"Deploy a TanStack Start app to revenexx Storefronts","\u002Fdocs\u002Fproducts\u002Fsites\u002Fquick-start\u002Ftanstack-start","docs\u002Fproducts\u002Fsites\u002Fquick-start\u002Ftanstack-start\u002Findex",[474],{"title":470,"path":471,"stem":472},{"title":476,"path":477,"stem":478,"children":479},"Deploy a Vanilla JS app to revenexx Storefronts","\u002Fdocs\u002Fproducts\u002Fsites\u002Fquick-start\u002Fvanilla","docs\u002Fproducts\u002Fsites\u002Fquick-start\u002Fvanilla\u002Findex",[480],{"title":476,"path":477,"stem":478},{"title":482,"path":483,"stem":484,"children":485},"Deploy a Vue.js app to revenexx Storefronts","\u002Fdocs\u002Fproducts\u002Fsites\u002Fquick-start\u002Fvue","docs\u002Fproducts\u002Fsites\u002Fquick-start\u002Fvue\u002Findex",[486],{"title":482,"path":483,"stem":484},{"title":488,"path":489,"stem":490,"children":491},"Rendering","\u002Fdocs\u002Fproducts\u002Fsites\u002Frendering","docs\u002Fproducts\u002Fsites\u002Frendering\u002Findex",[492,493,499],{"title":488,"path":489,"stem":490},{"title":494,"path":495,"stem":496,"children":497},"Server Side Rendering","\u002Fdocs\u002Fproducts\u002Fsites\u002Frendering\u002Fssr","docs\u002Fproducts\u002Fsites\u002Frendering\u002Fssr\u002Findex",[498],{"title":494,"path":495,"stem":496},{"title":500,"path":501,"stem":502,"children":503},"Static","\u002Fdocs\u002Fproducts\u002Fsites\u002Frendering\u002Fstatic","docs\u002Fproducts\u002Fsites\u002Frendering\u002Fstatic\u002Findex",[504],{"title":500,"path":501,"stem":502},{"title":506,"path":507,"stem":508,"children":509},"Templates","\u002Fdocs\u002Fproducts\u002Fsites\u002Ftemplates","docs\u002Fproducts\u002Fsites\u002Ftemplates\u002Findex",[510],{"title":506,"path":507,"stem":508},{"title":512,"path":513,"stem":514,"children":515},"Theming","\u002Fdocs\u002Fproducts\u002Fsites\u002Ftheming","docs\u002Fproducts\u002Fsites\u002Ftheming\u002Findex",[516],{"title":512,"path":513,"stem":514},{"title":518,"path":519,"stem":520,"children":521},"Storage","\u002Fdocs\u002Fproducts\u002Fstorage","docs\u002Fproducts\u002Fstorage\u002Findex",[522,523,529,535,541,547,553,559],{"title":518,"path":519,"stem":520},{"title":524,"path":525,"stem":526,"children":527},"Folders","\u002Fdocs\u002Fproducts\u002Fstorage\u002Fbuckets","docs\u002Fproducts\u002Fstorage\u002Fbuckets\u002Findex",[528],{"title":524,"path":525,"stem":526},{"title":530,"path":531,"stem":532,"children":533},"Signed URLs and access","\u002Fdocs\u002Fproducts\u002Fstorage\u002Ffile-tokens","docs\u002Fproducts\u002Fstorage\u002Ffile-tokens\u002Findex",[534],{"title":530,"path":531,"stem":532},{"title":536,"path":537,"stem":538,"children":539},"Serve and transform images","\u002Fdocs\u002Fproducts\u002Fstorage\u002Fimages","docs\u002Fproducts\u002Fstorage\u002Fimages\u002Findex",[540],{"title":536,"path":537,"stem":538},{"title":542,"path":543,"stem":544,"children":545},"3D assets","\u002Fdocs\u002Fproducts\u002Fstorage\u002Fmodel-viewer","docs\u002Fproducts\u002Fstorage\u002Fmodel-viewer\u002Findex",[546],{"title":542,"path":543,"stem":544},{"title":548,"path":549,"stem":550,"children":551},"Access control and visibility","\u002Fdocs\u002Fproducts\u002Fstorage\u002Fpermissions","docs\u002Fproducts\u002Fstorage\u002Fpermissions\u002Findex",[552],{"title":548,"path":549,"stem":550},{"title":554,"path":555,"stem":556,"children":557},"Quick start","\u002Fdocs\u002Fproducts\u002Fstorage\u002Fquick-start","docs\u002Fproducts\u002Fstorage\u002Fquick-start\u002Findex",[558],{"title":554,"path":555,"stem":556},{"title":560,"path":561,"stem":562,"children":563},"Upload and manage files","\u002Fdocs\u002Fproducts\u002Fstorage\u002Fupload-download","docs\u002Fproducts\u002Fstorage\u002Fupload-download\u002Findex",[564],{"title":560,"path":561,"stem":562},{"title":566,"path":567,"stem":568,"children":569},"Webhooks","\u002Fdocs\u002Fproducts\u002Fwebhooks","docs\u002Fproducts\u002Fwebhooks\u002Findex",[570,571,577],{"title":566,"path":567,"stem":568},{"title":572,"path":573,"stem":574,"children":575},"Delivery","\u002Fdocs\u002Fproducts\u002Fwebhooks\u002Fdelivery","docs\u002Fproducts\u002Fwebhooks\u002Fdelivery\u002Findex",[576],{"title":572,"path":573,"stem":574},{"title":578,"path":579,"stem":580,"children":581},"Security","\u002Fdocs\u002Fproducts\u002Fwebhooks\u002Fsecurity","docs\u002Fproducts\u002Fwebhooks\u002Fsecurity\u002Findex",[582],{"title":578,"path":579,"stem":580},{"title":584,"path":585,"stem":586,"children":587},"SDKs","\u002Fdocs\u002Fsdks","docs\u002Fsdks\u002Findex",[588,589,595,601,607,613,619],{"title":584,"path":585,"stem":586},{"title":590,"path":591,"stem":592,"children":593},"App SDK","\u002Fdocs\u002Fsdks\u002Fapp-sdk","docs\u002Fsdks\u002Fapp-sdk\u002Findex",[594],{"title":590,"path":591,"stem":592},{"title":596,"path":597,"stem":598,"children":599},"CLI","\u002Fdocs\u002Fsdks\u002Fcli","docs\u002Fsdks\u002Fcli\u002Findex",[600],{"title":596,"path":597,"stem":598},{"title":602,"path":603,"stem":604,"children":605},"Integration Node SDK","\u002Fdocs\u002Fsdks\u002Fintegration-nodes","docs\u002Fsdks\u002Fintegration-nodes\u002Findex",[606],{"title":602,"path":603,"stem":604},{"title":608,"path":609,"stem":610,"children":611},"Node SDK","\u002Fdocs\u002Fsdks\u002Fnode","docs\u002Fsdks\u002Fnode\u002Findex",[612],{"title":608,"path":609,"stem":610},{"title":614,"path":615,"stem":616,"children":617},"PHP SDK","\u002Fdocs\u002Fsdks\u002Fphp","docs\u002Fsdks\u002Fphp\u002Findex",[618],{"title":614,"path":615,"stem":616},{"title":620,"path":621,"stem":622,"children":623},"Web \u002F JavaScript SDK","\u002Fdocs\u002Fsdks\u002Fweb","docs\u002Fsdks\u002Fweb\u002Findex",[624],{"title":620,"path":621,"stem":622},{"title":626,"path":627,"stem":628,"children":629},"Tooling","\u002Fdocs\u002Ftooling","docs\u002Ftooling\u002Findex",[630,631,637,864],{"title":626,"path":627,"stem":628},{"title":632,"path":633,"stem":634,"children":635},"Command Center","\u002Fdocs\u002Ftooling\u002Fcommand-center","docs\u002Ftooling\u002Fcommand-center\u002Findex",[636],{"title":632,"path":633,"stem":634},{"title":638,"path":639,"stem":640,"children":641},"Command line","\u002Fdocs\u002Ftooling\u002Fcommand-line","docs\u002Ftooling\u002Fcommand-line\u002Findex",[642,643,649,654,660,666,672,678,684,828,834,840,846,852,858],{"title":638,"path":639,"stem":640},{"title":644,"path":645,"stem":646,"children":647},"Aliases","\u002Fdocs\u002Ftooling\u002Fcommand-line\u002Faliases","docs\u002Ftooling\u002Fcommand-line\u002Faliases\u002Findex",[648],{"title":644,"path":645,"stem":646},{"title":171,"path":650,"stem":651,"children":652},"\u002Fdocs\u002Ftooling\u002Fcommand-line\u002Fauthentication","docs\u002Ftooling\u002Fcommand-line\u002Fauthentication\u002Findex",[653],{"title":171,"path":650,"stem":651},{"title":655,"path":656,"stem":657,"children":658},"Commands","\u002Fdocs\u002Ftooling\u002Fcommand-line\u002Fcommands","docs\u002Ftooling\u002Fcommand-line\u002Fcommands\u002Findex",[659],{"title":655,"path":656,"stem":657},{"title":661,"path":662,"stem":663,"children":664},"Installation","\u002Fdocs\u002Ftooling\u002Fcommand-line\u002Finstallation","docs\u002Ftooling\u002Fcommand-line\u002Finstallation\u002Findex",[665],{"title":661,"path":662,"stem":663},{"title":667,"path":668,"stem":669,"children":670},"Interactive use","\u002Fdocs\u002Ftooling\u002Fcommand-line\u002Finteractive","docs\u002Ftooling\u002Fcommand-line\u002Finteractive\u002Findex",[671],{"title":667,"path":668,"stem":669},{"title":673,"path":674,"stem":675,"children":676},"Non-interactive use","\u002Fdocs\u002Ftooling\u002Fcommand-line\u002Fnon-interactive","docs\u002Ftooling\u002Fcommand-line\u002Fnon-interactive\u002Findex",[677],{"title":673,"path":674,"stem":675},{"title":679,"path":680,"stem":681,"children":682},"Project configuration","\u002Fdocs\u002Ftooling\u002Fcommand-line\u002Fproject-configuration","docs\u002Ftooling\u002Fcommand-line\u002Fproject-configuration\u002Findex",[683],{"title":679,"path":680,"stem":681},{"title":685,"path":686,"stem":687,"children":688},"Command reference","\u002Fdocs\u002Ftooling\u002Fcommand-line\u002Freference","docs\u002Ftooling\u002Fcommand-line\u002Freference\u002Findex",[689,690,696,702,708,714,720,726,732,738,744,750,756,762,768,774,780,786,792,798,804,810,816,822],{"title":685,"path":686,"stem":687},{"title":691,"path":692,"stem":693,"children":694},"About commands","\u002Fdocs\u002Ftooling\u002Fcommand-line\u002Freference\u002Fabout","docs\u002Ftooling\u002Fcommand-line\u002Freference\u002Fabout\u002Findex",[695],{"title":691,"path":692,"stem":693},{"title":697,"path":698,"stem":699,"children":700},"Apps commands","\u002Fdocs\u002Ftooling\u002Fcommand-line\u002Freference\u002Fapps","docs\u002Ftooling\u002Fcommand-line\u002Freference\u002Fapps\u002Findex",[701],{"title":697,"path":698,"stem":699},{"title":703,"path":704,"stem":705,"children":706},"Carts commands","\u002Fdocs\u002Ftooling\u002Fcommand-line\u002Freference\u002Fcarts","docs\u002Ftooling\u002Fcommand-line\u002Freference\u002Fcarts\u002Findex",[707],{"title":703,"path":704,"stem":705},{"title":709,"path":710,"stem":711,"children":712},"Channels commands","\u002Fdocs\u002Ftooling\u002Fcommand-line\u002Freference\u002Fchannels","docs\u002Ftooling\u002Fcommand-line\u002Freference\u002Fchannels\u002Findex",[713],{"title":709,"path":710,"stem":711},{"title":715,"path":716,"stem":717,"children":718},"Create commands","\u002Fdocs\u002Ftooling\u002Fcommand-line\u002Freference\u002Fcreate","docs\u002Ftooling\u002Fcommand-line\u002Freference\u002Fcreate\u002Findex",[719],{"title":715,"path":716,"stem":717},{"title":721,"path":722,"stem":723,"children":724},"Customers commands","\u002Fdocs\u002Ftooling\u002Fcommand-line\u002Freference\u002Fcustomers","docs\u002Ftooling\u002Fcommand-line\u002Freference\u002Fcustomers\u002Findex",[725],{"title":721,"path":722,"stem":723},{"title":727,"path":728,"stem":729,"children":730},"Deploy commands","\u002Fdocs\u002Ftooling\u002Fcommand-line\u002Freference\u002Fdeploy","docs\u002Ftooling\u002Fcommand-line\u002Freference\u002Fdeploy\u002Findex",[731],{"title":727,"path":728,"stem":729},{"title":733,"path":734,"stem":735,"children":736},"Forms commands","\u002Fdocs\u002Ftooling\u002Fcommand-line\u002Freference\u002Fforms","docs\u002Ftooling\u002Fcommand-line\u002Freference\u002Fforms\u002Findex",[737],{"title":733,"path":734,"stem":735},{"title":739,"path":740,"stem":741,"children":742},"Inventories commands","\u002Fdocs\u002Ftooling\u002Fcommand-line\u002Freference\u002Finventories","docs\u002Ftooling\u002Fcommand-line\u002Freference\u002Finventories\u002Findex",[743],{"title":739,"path":740,"stem":741},{"title":745,"path":746,"stem":747,"children":748},"Markets commands","\u002Fdocs\u002Ftooling\u002Fcommand-line\u002Freference\u002Fmarkets","docs\u002Ftooling\u002Fcommand-line\u002Freference\u002Fmarkets\u002Findex",[749],{"title":745,"path":746,"stem":747},{"title":751,"path":752,"stem":753,"children":754},"Order lists commands","\u002Fdocs\u002Ftooling\u002Fcommand-line\u002Freference\u002Forderlists","docs\u002Ftooling\u002Fcommand-line\u002Freference\u002Forderlists\u002Findex",[755],{"title":751,"path":752,"stem":753},{"title":757,"path":758,"stem":759,"children":760},"Orders commands","\u002Fdocs\u002Ftooling\u002Fcommand-line\u002Freference\u002Forders","docs\u002Ftooling\u002Fcommand-line\u002Freference\u002Forders\u002Findex",[761],{"title":757,"path":758,"stem":759},{"title":763,"path":764,"stem":765,"children":766},"Pages commands","\u002Fdocs\u002Ftooling\u002Fcommand-line\u002Freference\u002Fpages","docs\u002Ftooling\u002Fcommand-line\u002Freference\u002Fpages\u002Findex",[767],{"title":763,"path":764,"stem":765},{"title":769,"path":770,"stem":771,"children":772},"Payments commands","\u002Fdocs\u002Ftooling\u002Fcommand-line\u002Freference\u002Fpayments","docs\u002Ftooling\u002Fcommand-line\u002Freference\u002Fpayments\u002Findex",[773],{"title":769,"path":770,"stem":771},{"title":775,"path":776,"stem":777,"children":778},"Prices commands","\u002Fdocs\u002Ftooling\u002Fcommand-line\u002Freference\u002Fprices","docs\u002Ftooling\u002Fcommand-line\u002Freference\u002Fprices\u002Findex",[779],{"title":775,"path":776,"stem":777},{"title":781,"path":782,"stem":783,"children":784},"Products commands","\u002Fdocs\u002Ftooling\u002Fcommand-line\u002Freference\u002Fproducts","docs\u002Ftooling\u002Fcommand-line\u002Freference\u002Fproducts\u002Findex",[785],{"title":781,"path":782,"stem":783},{"title":787,"path":788,"stem":789,"children":790},"Search commands","\u002Fdocs\u002Ftooling\u002Fcommand-line\u002Freference\u002Fsearch","docs\u002Ftooling\u002Fcommand-line\u002Freference\u002Fsearch\u002Findex",[791],{"title":787,"path":788,"stem":789},{"title":793,"path":794,"stem":795,"children":796},"Settings commands","\u002Fdocs\u002Ftooling\u002Fcommand-line\u002Freference\u002Fsettings","docs\u002Ftooling\u002Fcommand-line\u002Freference\u002Fsettings\u002Findex",[797],{"title":793,"path":794,"stem":795},{"title":799,"path":800,"stem":801,"children":802},"Shipping commands","\u002Fdocs\u002Ftooling\u002Fcommand-line\u002Freference\u002Fshipping","docs\u002Ftooling\u002Fcommand-line\u002Freference\u002Fshipping\u002Findex",[803],{"title":799,"path":800,"stem":801},{"title":805,"path":806,"stem":807,"children":808},"Sites commands","\u002Fdocs\u002Ftooling\u002Fcommand-line\u002Freference\u002Fsites","docs\u002Ftooling\u002Fcommand-line\u002Freference\u002Fsites\u002Findex",[809],{"title":805,"path":806,"stem":807},{"title":811,"path":812,"stem":813,"children":814},"Skills commands","\u002Fdocs\u002Ftooling\u002Fcommand-line\u002Freference\u002Fskills","docs\u002Ftooling\u002Fcommand-line\u002Freference\u002Fskills\u002Findex",[815],{"title":811,"path":812,"stem":813},{"title":817,"path":818,"stem":819,"children":820},"Storage commands","\u002Fdocs\u002Ftooling\u002Fcommand-line\u002Freference\u002Fstorage","docs\u002Ftooling\u002Fcommand-line\u002Freference\u002Fstorage\u002Findex",[821],{"title":817,"path":818,"stem":819},{"title":823,"path":824,"stem":825,"children":826},"Tokens commands","\u002Fdocs\u002Ftooling\u002Fcommand-line\u002Freference\u002Ftokens","docs\u002Ftooling\u002Fcommand-line\u002Freference\u002Ftokens\u002Findex",[827],{"title":823,"path":824,"stem":825},{"title":829,"path":830,"stem":831,"children":832},"Interactive shell (REPL)","\u002Fdocs\u002Ftooling\u002Fcommand-line\u002Frepl","docs\u002Ftooling\u002Fcommand-line\u002Frepl\u002Findex",[833],{"title":829,"path":830,"stem":831},{"title":835,"path":836,"stem":837,"children":838},"Scaffolding","\u002Fdocs\u002Ftooling\u002Fcommand-line\u002Fscaffolding","docs\u002Ftooling\u002Fcommand-line\u002Fscaffolding\u002Findex",[839],{"title":835,"path":836,"stem":837},{"title":841,"path":842,"stem":843,"children":844},"Scripting & output","\u002Fdocs\u002Ftooling\u002Fcommand-line\u002Fscripting","docs\u002Ftooling\u002Fcommand-line\u002Fscripting\u002Findex",[845],{"title":841,"path":842,"stem":843},{"title":847,"path":848,"stem":849,"children":850},"Skills","\u002Fdocs\u002Ftooling\u002Fcommand-line\u002Fskills","docs\u002Ftooling\u002Fcommand-line\u002Fskills\u002Findex",[851],{"title":847,"path":848,"stem":849},{"title":853,"path":854,"stem":855,"children":856},"Full-screen app (TUI)","\u002Fdocs\u002Ftooling\u002Fcommand-line\u002Ftui","docs\u002Ftooling\u002Fcommand-line\u002Ftui\u002Findex",[857],{"title":853,"path":854,"stem":855},{"title":859,"path":860,"stem":861,"children":862},"Type generation","\u002Fdocs\u002Ftooling\u002Fcommand-line\u002Ftype-generation","docs\u002Ftooling\u002Fcommand-line\u002Ftype-generation\u002Findex",[863],{"title":859,"path":860,"stem":861},{"title":865,"path":866,"stem":867,"children":868},"Model Context Protocol","\u002Fdocs\u002Ftooling\u002Fmcp","docs\u002Ftooling\u002Fmcp\u002Findex",[869,870,876,882,888,894,900,906,912],{"title":865,"path":866,"stem":867},{"title":871,"path":872,"stem":873,"children":874},"revenexx docs MCP in Google Antigravity","\u002Fdocs\u002Ftooling\u002Fmcp\u002Fantigravity","docs\u002Ftooling\u002Fmcp\u002Fantigravity\u002Findex",[875],{"title":871,"path":872,"stem":873},{"title":877,"path":878,"stem":879,"children":880},"revenexx docs MCP in Claude Code","\u002Fdocs\u002Ftooling\u002Fmcp\u002Fclaude-code","docs\u002Ftooling\u002Fmcp\u002Fclaude-code\u002Findex",[881],{"title":877,"path":878,"stem":879},{"title":883,"path":884,"stem":885,"children":886},"revenexx docs MCP in Claude Desktop","\u002Fdocs\u002Ftooling\u002Fmcp\u002Fclaude-desktop","docs\u002Ftooling\u002Fmcp\u002Fclaude-desktop\u002Findex",[887],{"title":883,"path":884,"stem":885},{"title":889,"path":890,"stem":891,"children":892},"revenexx docs MCP in Cursor","\u002Fdocs\u002Ftooling\u002Fmcp\u002Fcursor","docs\u002Ftooling\u002Fmcp\u002Fcursor\u002Findex",[893],{"title":889,"path":890,"stem":891},{"title":895,"path":896,"stem":897,"children":898},"revenexx docs MCP in OpenCode","\u002Fdocs\u002Ftooling\u002Fmcp\u002Fopencode","docs\u002Ftooling\u002Fmcp\u002Fopencode\u002Findex",[899],{"title":895,"path":896,"stem":897},{"title":901,"path":902,"stem":903,"children":904},"revenexx docs MCP in VS Code","\u002Fdocs\u002Ftooling\u002Fmcp\u002Fvscode","docs\u002Ftooling\u002Fmcp\u002Fvscode\u002Findex",[905],{"title":901,"path":902,"stem":903},{"title":907,"path":908,"stem":909,"children":910},"revenexx docs MCP in Windsurf","\u002Fdocs\u002Ftooling\u002Fmcp\u002Fwindsurf","docs\u002Ftooling\u002Fmcp\u002Fwindsurf\u002Findex",[911],{"title":907,"path":908,"stem":909},{"title":913,"path":914,"stem":915,"children":916},"revenexx docs MCP in Zenflow","\u002Fdocs\u002Ftooling\u002Fmcp\u002Fzenflow","docs\u002Ftooling\u002Fmcp\u002Fzenflow\u002Findex",[917],{"title":913,"path":914,"stem":915},{"title":919,"path":920,"stem":921,"children":922},"Tutorials","\u002Fdocs\u002Ftutorials","docs\u002Ftutorials\u002Findex",[923,924,948,954],{"title":919,"path":920,"stem":921},{"title":925,"path":926,"stem":927,"children":928},"Build a revenexx App","\u002Fdocs\u002Ftutorials\u002Fapps","docs\u002Ftutorials\u002Fapps\u002Findex",[929,930,936,942],{"title":925,"path":926,"stem":927},{"title":931,"path":932,"stem":933,"children":934},"Add a data model","\u002Fdocs\u002Ftutorials\u002Fapps\u002Fadd-a-data-model","docs\u002Ftutorials\u002Fapps\u002Fadd-a-data-model\u002Findex",[935],{"title":931,"path":932,"stem":933},{"title":937,"path":938,"stem":939,"children":940},"Build your first app","\u002Fdocs\u002Ftutorials\u002Fapps\u002Fbuild-your-first-app","docs\u002Ftutorials\u002Fapps\u002Fbuild-your-first-app\u002Findex",[941],{"title":937,"path":938,"stem":939},{"title":943,"path":944,"stem":945,"children":946},"Deploy with the CLI","\u002Fdocs\u002Ftutorials\u002Fapps\u002Fdeploy-with-the-cli","docs\u002Ftutorials\u002Fapps\u002Fdeploy-with-the-cli\u002Findex",[947],{"title":943,"path":944,"stem":945},{"title":949,"path":950,"stem":951,"children":952},"Examples","\u002Fdocs\u002Ftutorials\u002Fexamples","docs\u002Ftutorials\u002Fexamples\u002Findex",[953],{"title":949,"path":950,"stem":951},{"title":955,"path":956,"stem":957,"children":958},"Build a storefront Theme","\u002Fdocs\u002Ftutorials\u002Fthemes","docs\u002Ftutorials\u002Fthemes\u002Findex",[959,960,966,972,978],{"title":955,"path":956,"stem":957},{"title":961,"path":962,"stem":963,"children":964},"Build your first Theme","\u002Fdocs\u002Ftutorials\u002Fthemes\u002Fbuild-your-first-theme","docs\u002Ftutorials\u002Fthemes\u002Fbuild-your-first-theme\u002Findex",[965],{"title":961,"path":962,"stem":963},{"title":967,"path":968,"stem":969,"children":970},"Customize blocks","\u002Fdocs\u002Ftutorials\u002Fthemes\u002Fcustomize-blocks","docs\u002Ftutorials\u002Fthemes\u002Fcustomize-blocks\u002Findex",[971],{"title":967,"path":968,"stem":969},{"title":973,"path":974,"stem":975,"children":976},"Deploy your storefront","\u002Fdocs\u002Ftutorials\u002Fthemes\u002Fdeploy-your-storefront","docs\u002Ftutorials\u002Fthemes\u002Fdeploy-your-storefront\u002Findex",[977],{"title":973,"path":974,"stem":975},{"title":979,"path":980,"stem":981,"children":982},"Theme tokens and styling","\u002Fdocs\u002Ftutorials\u002Fthemes\u002Ftheme-tokens-and-styling","docs\u002Ftutorials\u002Fthemes\u002Ftheme-tokens-and-styling\u002Findex",[983],{"title":979,"path":980,"stem":981},{"id":985,"title":165,"body":986,"description":3961,"extension":3962,"landing":3963,"links":3963,"meta":3964,"navigation":2752,"path":166,"seo":3966,"sitemap":3967,"stem":167,"__hash__":3968},"docs\u002Fdocs\u002Fproducts\u002Fapps\u002Fschema-reference\u002Findex.md",{"type":987,"value":988,"toc":3938},"minimark",[989,1003,1009,1029,1032,1054,1059,2250,2254,2412,2416,2551,2556,2659,2669,2673,2686,2759,2762,2765,2772,2906,2925,2929,2932,3031,3042,3046,3052,3120,3131,3135,3142,3250,3256,3260,3266,3270,3280,3372,3375,3393,3397,3400,3525,3529,3535,3624,3627,3631,3634,3638,3759,3763,3857,3860,3864,3867,3887,3893,3902,3906,3934],[990,991,992,993,997,998,1002],"p",{},"This is the field-by-field reference for ",[994,995,996],"code",{},"schema.json"," — for ",[999,1000,1001],"strong",{},"app developers"," defining their app's database tables. If you're new to revenexx Apps, this is probably where you feel the platform's value most directly: instead of learning a migration tool, defining tables in code, scoping data to the tenant by hand, and writing CRUD endpoints, you write one JSON file and deploy.",[990,1004,1005,1006,1008],{},"When you ship a ",[994,1007,996],{},", the platform does four things automatically:",[1010,1011,1012,1016,1023,1026],"ul",{},[1013,1014,1015],"li",{},"Creates or updates the tables.",[1013,1017,1018,1019,1022],{},"Adds the ",[994,1020,1021],{},"tenant_id"," column to every table — invisible to you, protected from accidental modification.",[1013,1024,1025],{},"Scopes every query to the current tenant, so your data is automatically scoped to your tenant.",[1013,1027,1028],{},"Generates a REST and GraphQL API from the tables. You don't write endpoint code.",[990,1030,1031],{},"The generated endpoints support filtering, sorting, pagination, and joins; complex business logic you still write in your app's functions.",[990,1033,1034,1037,1038,1041,1042,1045,1046,1048,1049,1053],{},[999,1035,1036],{},"Migration history lives in git."," No embedded version numbers, no ",[994,1039,1040],{},"up()","\u002F",[994,1043,1044],{},"down()"," migration files. The diff between your current ",[994,1047,996],{}," and the deployed version ",[1050,1051,1052],"em",{},"is"," the migration; the platform computes it at deploy time.",[1055,1056,1058],"h2",{"id":1057},"complete-example","Complete Example",[1060,1061,1066],"pre",{"className":1062,"code":1063,"language":1064,"meta":1065,"style":1065},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"$schema\": \"https:\u002F\u002Frevenexx.com\u002Fschemas\u002Fschema.schema.json\",\n  \"tables\": {\n    \"orders\": {\n      \"columns\": {\n        \"id\": {\n          \"type\": \"uuid\",\n          \"primary\": true,\n          \"default\": \"gen_random_uuid()\"\n        },\n        \"customer_id\": {\n          \"type\": \"uuid\",\n          \"required\": true,\n          \"references\": { \"table\": \"customers\", \"column\": \"id\" }\n        },\n        \"status\": {\n          \"type\": \"string\",\n          \"enum\": [\"draft\", \"confirmed\", \"shipped\", \"cancelled\"],\n          \"default\": \"draft\"\n        },\n        \"total_amount\": {\n          \"type\": \"decimal\",\n          \"precision\": 10,\n          \"scale\": 2\n        },\n        \"po_number\": {\n          \"type\": \"string\",\n          \"required\": false\n        },\n        \"created_at\": {\n          \"type\": \"timestamp\",\n          \"default\": \"now()\"\n        },\n        \"updated_at\": {\n          \"type\": \"timestamp\",\n          \"default\": \"now()\"\n        }\n      },\n      \"indexes\": [\n        { \"columns\": [\"customer_id\"], \"unique\": false },\n        { \"columns\": [\"status\"], \"unique\": false },\n        { \"columns\": [\"created_at\"], \"unique\": false }\n      ]\n    },\n    \"order_items\": {\n      \"columns\": {\n        \"id\": { \"type\": \"uuid\", \"primary\": true },\n        \"order_id\": {\n          \"type\": \"uuid\",\n          \"required\": true,\n          \"references\": { \"table\": \"orders\", \"column\": \"id\" }\n        },\n        \"product_id\": { \"type\": \"uuid\", \"required\": true },\n        \"quantity\": { \"type\": \"integer\", \"required\": true },\n        \"unit_price\": { \"type\": \"decimal\", \"precision\": 10, \"scale\": 2 },\n        \"created_at\": { \"type\": \"timestamp\", \"default\": \"now()\" }\n      },\n      \"indexes\": [\n        { \"columns\": [\"order_id\"], \"unique\": false }\n      ]\n    }\n  }\n}\n","json","",[994,1067,1068,1077,1105,1120,1136,1152,1168,1191,1206,1226,1232,1246,1265,1279,1332,1337,1351,1371,1423,1440,1445,1459,1479,1496,1511,1516,1530,1549,1563,1568,1582,1602,1620,1625,1639,1658,1675,1681,1687,1702,1742,1777,1812,1818,1824,1838,1851,1893,1907,1926,1939,1984,1989,2031,2074,2129,2174,2179,2192,2227,2232,2238,2244],{"__ignoreMap":1065},[1069,1070,1073],"span",{"class":1071,"line":1072},"line",1,[1069,1074,1076],{"class":1075},"sMK4o","{\n",[1069,1078,1080,1083,1087,1090,1093,1096,1100,1102],{"class":1071,"line":1079},2,[1069,1081,1082],{"class":1075},"  \"",[1069,1084,1086],{"class":1085},"spNyl","$schema",[1069,1088,1089],{"class":1075},"\"",[1069,1091,1092],{"class":1075},":",[1069,1094,1095],{"class":1075}," \"",[1069,1097,1099],{"class":1098},"sfazB","https:\u002F\u002Frevenexx.com\u002Fschemas\u002Fschema.schema.json",[1069,1101,1089],{"class":1075},[1069,1103,1104],{"class":1075},",\n",[1069,1106,1108,1110,1113,1115,1117],{"class":1071,"line":1107},3,[1069,1109,1082],{"class":1075},[1069,1111,1112],{"class":1085},"tables",[1069,1114,1089],{"class":1075},[1069,1116,1092],{"class":1075},[1069,1118,1119],{"class":1075}," {\n",[1069,1121,1123,1126,1130,1132,1134],{"class":1071,"line":1122},4,[1069,1124,1125],{"class":1075},"    \"",[1069,1127,1129],{"class":1128},"sBMFI","orders",[1069,1131,1089],{"class":1075},[1069,1133,1092],{"class":1075},[1069,1135,1119],{"class":1075},[1069,1137,1139,1142,1146,1148,1150],{"class":1071,"line":1138},5,[1069,1140,1141],{"class":1075},"      \"",[1069,1143,1145],{"class":1144},"sbssI","columns",[1069,1147,1089],{"class":1075},[1069,1149,1092],{"class":1075},[1069,1151,1119],{"class":1075},[1069,1153,1155,1158,1162,1164,1166],{"class":1071,"line":1154},6,[1069,1156,1157],{"class":1075},"        \"",[1069,1159,1161],{"class":1160},"swJcz","id",[1069,1163,1089],{"class":1075},[1069,1165,1092],{"class":1075},[1069,1167,1119],{"class":1075},[1069,1169,1171,1174,1178,1180,1182,1184,1187,1189],{"class":1071,"line":1170},7,[1069,1172,1173],{"class":1075},"          \"",[1069,1175,1177],{"class":1176},"su27w","type",[1069,1179,1089],{"class":1075},[1069,1181,1092],{"class":1075},[1069,1183,1095],{"class":1075},[1069,1185,1186],{"class":1098},"uuid",[1069,1188,1089],{"class":1075},[1069,1190,1104],{"class":1075},[1069,1192,1194,1196,1199,1201,1203],{"class":1071,"line":1193},8,[1069,1195,1173],{"class":1075},[1069,1197,1198],{"class":1176},"primary",[1069,1200,1089],{"class":1075},[1069,1202,1092],{"class":1075},[1069,1204,1205],{"class":1075}," true,\n",[1069,1207,1209,1211,1214,1216,1218,1220,1223],{"class":1071,"line":1208},9,[1069,1210,1173],{"class":1075},[1069,1212,1213],{"class":1176},"default",[1069,1215,1089],{"class":1075},[1069,1217,1092],{"class":1075},[1069,1219,1095],{"class":1075},[1069,1221,1222],{"class":1098},"gen_random_uuid()",[1069,1224,1225],{"class":1075},"\"\n",[1069,1227,1229],{"class":1071,"line":1228},10,[1069,1230,1231],{"class":1075},"        },\n",[1069,1233,1235,1237,1240,1242,1244],{"class":1071,"line":1234},11,[1069,1236,1157],{"class":1075},[1069,1238,1239],{"class":1160},"customer_id",[1069,1241,1089],{"class":1075},[1069,1243,1092],{"class":1075},[1069,1245,1119],{"class":1075},[1069,1247,1249,1251,1253,1255,1257,1259,1261,1263],{"class":1071,"line":1248},12,[1069,1250,1173],{"class":1075},[1069,1252,1177],{"class":1176},[1069,1254,1089],{"class":1075},[1069,1256,1092],{"class":1075},[1069,1258,1095],{"class":1075},[1069,1260,1186],{"class":1098},[1069,1262,1089],{"class":1075},[1069,1264,1104],{"class":1075},[1069,1266,1268,1270,1273,1275,1277],{"class":1071,"line":1267},13,[1069,1269,1173],{"class":1075},[1069,1271,1272],{"class":1176},"required",[1069,1274,1089],{"class":1075},[1069,1276,1092],{"class":1075},[1069,1278,1205],{"class":1075},[1069,1280,1282,1284,1287,1289,1291,1294,1296,1300,1302,1304,1306,1309,1311,1314,1316,1319,1321,1323,1325,1327,1329],{"class":1071,"line":1281},14,[1069,1283,1173],{"class":1075},[1069,1285,1286],{"class":1176},"references",[1069,1288,1089],{"class":1075},[1069,1290,1092],{"class":1075},[1069,1292,1293],{"class":1075}," {",[1069,1295,1095],{"class":1075},[1069,1297,1299],{"class":1298},"s2Zo4","table",[1069,1301,1089],{"class":1075},[1069,1303,1092],{"class":1075},[1069,1305,1095],{"class":1075},[1069,1307,1308],{"class":1098},"customers",[1069,1310,1089],{"class":1075},[1069,1312,1313],{"class":1075},",",[1069,1315,1095],{"class":1075},[1069,1317,1318],{"class":1298},"column",[1069,1320,1089],{"class":1075},[1069,1322,1092],{"class":1075},[1069,1324,1095],{"class":1075},[1069,1326,1161],{"class":1098},[1069,1328,1089],{"class":1075},[1069,1330,1331],{"class":1075}," }\n",[1069,1333,1335],{"class":1071,"line":1334},15,[1069,1336,1231],{"class":1075},[1069,1338,1340,1342,1345,1347,1349],{"class":1071,"line":1339},16,[1069,1341,1157],{"class":1075},[1069,1343,1344],{"class":1160},"status",[1069,1346,1089],{"class":1075},[1069,1348,1092],{"class":1075},[1069,1350,1119],{"class":1075},[1069,1352,1354,1356,1358,1360,1362,1364,1367,1369],{"class":1071,"line":1353},17,[1069,1355,1173],{"class":1075},[1069,1357,1177],{"class":1176},[1069,1359,1089],{"class":1075},[1069,1361,1092],{"class":1075},[1069,1363,1095],{"class":1075},[1069,1365,1366],{"class":1098},"string",[1069,1368,1089],{"class":1075},[1069,1370,1104],{"class":1075},[1069,1372,1374,1376,1379,1381,1383,1386,1388,1391,1393,1395,1397,1400,1402,1404,1406,1409,1411,1413,1415,1418,1420],{"class":1071,"line":1373},18,[1069,1375,1173],{"class":1075},[1069,1377,1378],{"class":1176},"enum",[1069,1380,1089],{"class":1075},[1069,1382,1092],{"class":1075},[1069,1384,1385],{"class":1075}," [",[1069,1387,1089],{"class":1075},[1069,1389,1390],{"class":1098},"draft",[1069,1392,1089],{"class":1075},[1069,1394,1313],{"class":1075},[1069,1396,1095],{"class":1075},[1069,1398,1399],{"class":1098},"confirmed",[1069,1401,1089],{"class":1075},[1069,1403,1313],{"class":1075},[1069,1405,1095],{"class":1075},[1069,1407,1408],{"class":1098},"shipped",[1069,1410,1089],{"class":1075},[1069,1412,1313],{"class":1075},[1069,1414,1095],{"class":1075},[1069,1416,1417],{"class":1098},"cancelled",[1069,1419,1089],{"class":1075},[1069,1421,1422],{"class":1075},"],\n",[1069,1424,1426,1428,1430,1432,1434,1436,1438],{"class":1071,"line":1425},19,[1069,1427,1173],{"class":1075},[1069,1429,1213],{"class":1176},[1069,1431,1089],{"class":1075},[1069,1433,1092],{"class":1075},[1069,1435,1095],{"class":1075},[1069,1437,1390],{"class":1098},[1069,1439,1225],{"class":1075},[1069,1441,1443],{"class":1071,"line":1442},20,[1069,1444,1231],{"class":1075},[1069,1446,1448,1450,1453,1455,1457],{"class":1071,"line":1447},21,[1069,1449,1157],{"class":1075},[1069,1451,1452],{"class":1160},"total_amount",[1069,1454,1089],{"class":1075},[1069,1456,1092],{"class":1075},[1069,1458,1119],{"class":1075},[1069,1460,1462,1464,1466,1468,1470,1472,1475,1477],{"class":1071,"line":1461},22,[1069,1463,1173],{"class":1075},[1069,1465,1177],{"class":1176},[1069,1467,1089],{"class":1075},[1069,1469,1092],{"class":1075},[1069,1471,1095],{"class":1075},[1069,1473,1474],{"class":1098},"decimal",[1069,1476,1089],{"class":1075},[1069,1478,1104],{"class":1075},[1069,1480,1482,1484,1487,1489,1491,1494],{"class":1071,"line":1481},23,[1069,1483,1173],{"class":1075},[1069,1485,1486],{"class":1176},"precision",[1069,1488,1089],{"class":1075},[1069,1490,1092],{"class":1075},[1069,1492,1493],{"class":1144}," 10",[1069,1495,1104],{"class":1075},[1069,1497,1499,1501,1504,1506,1508],{"class":1071,"line":1498},24,[1069,1500,1173],{"class":1075},[1069,1502,1503],{"class":1176},"scale",[1069,1505,1089],{"class":1075},[1069,1507,1092],{"class":1075},[1069,1509,1510],{"class":1144}," 2\n",[1069,1512,1514],{"class":1071,"line":1513},25,[1069,1515,1231],{"class":1075},[1069,1517,1519,1521,1524,1526,1528],{"class":1071,"line":1518},26,[1069,1520,1157],{"class":1075},[1069,1522,1523],{"class":1160},"po_number",[1069,1525,1089],{"class":1075},[1069,1527,1092],{"class":1075},[1069,1529,1119],{"class":1075},[1069,1531,1533,1535,1537,1539,1541,1543,1545,1547],{"class":1071,"line":1532},27,[1069,1534,1173],{"class":1075},[1069,1536,1177],{"class":1176},[1069,1538,1089],{"class":1075},[1069,1540,1092],{"class":1075},[1069,1542,1095],{"class":1075},[1069,1544,1366],{"class":1098},[1069,1546,1089],{"class":1075},[1069,1548,1104],{"class":1075},[1069,1550,1552,1554,1556,1558,1560],{"class":1071,"line":1551},28,[1069,1553,1173],{"class":1075},[1069,1555,1272],{"class":1176},[1069,1557,1089],{"class":1075},[1069,1559,1092],{"class":1075},[1069,1561,1562],{"class":1075}," false\n",[1069,1564,1566],{"class":1071,"line":1565},29,[1069,1567,1231],{"class":1075},[1069,1569,1571,1573,1576,1578,1580],{"class":1071,"line":1570},30,[1069,1572,1157],{"class":1075},[1069,1574,1575],{"class":1160},"created_at",[1069,1577,1089],{"class":1075},[1069,1579,1092],{"class":1075},[1069,1581,1119],{"class":1075},[1069,1583,1585,1587,1589,1591,1593,1595,1598,1600],{"class":1071,"line":1584},31,[1069,1586,1173],{"class":1075},[1069,1588,1177],{"class":1176},[1069,1590,1089],{"class":1075},[1069,1592,1092],{"class":1075},[1069,1594,1095],{"class":1075},[1069,1596,1597],{"class":1098},"timestamp",[1069,1599,1089],{"class":1075},[1069,1601,1104],{"class":1075},[1069,1603,1605,1607,1609,1611,1613,1615,1618],{"class":1071,"line":1604},32,[1069,1606,1173],{"class":1075},[1069,1608,1213],{"class":1176},[1069,1610,1089],{"class":1075},[1069,1612,1092],{"class":1075},[1069,1614,1095],{"class":1075},[1069,1616,1617],{"class":1098},"now()",[1069,1619,1225],{"class":1075},[1069,1621,1623],{"class":1071,"line":1622},33,[1069,1624,1231],{"class":1075},[1069,1626,1628,1630,1633,1635,1637],{"class":1071,"line":1627},34,[1069,1629,1157],{"class":1075},[1069,1631,1632],{"class":1160},"updated_at",[1069,1634,1089],{"class":1075},[1069,1636,1092],{"class":1075},[1069,1638,1119],{"class":1075},[1069,1640,1642,1644,1646,1648,1650,1652,1654,1656],{"class":1071,"line":1641},35,[1069,1643,1173],{"class":1075},[1069,1645,1177],{"class":1176},[1069,1647,1089],{"class":1075},[1069,1649,1092],{"class":1075},[1069,1651,1095],{"class":1075},[1069,1653,1597],{"class":1098},[1069,1655,1089],{"class":1075},[1069,1657,1104],{"class":1075},[1069,1659,1661,1663,1665,1667,1669,1671,1673],{"class":1071,"line":1660},36,[1069,1662,1173],{"class":1075},[1069,1664,1213],{"class":1176},[1069,1666,1089],{"class":1075},[1069,1668,1092],{"class":1075},[1069,1670,1095],{"class":1075},[1069,1672,1617],{"class":1098},[1069,1674,1225],{"class":1075},[1069,1676,1678],{"class":1071,"line":1677},37,[1069,1679,1680],{"class":1075},"        }\n",[1069,1682,1684],{"class":1071,"line":1683},38,[1069,1685,1686],{"class":1075},"      },\n",[1069,1688,1690,1692,1695,1697,1699],{"class":1071,"line":1689},39,[1069,1691,1141],{"class":1075},[1069,1693,1694],{"class":1144},"indexes",[1069,1696,1089],{"class":1075},[1069,1698,1092],{"class":1075},[1069,1700,1701],{"class":1075}," [\n",[1069,1703,1705,1708,1710,1712,1714,1716,1718,1720,1722,1724,1727,1729,1732,1734,1736,1739],{"class":1071,"line":1704},40,[1069,1706,1707],{"class":1075},"        {",[1069,1709,1095],{"class":1075},[1069,1711,1145],{"class":1160},[1069,1713,1089],{"class":1075},[1069,1715,1092],{"class":1075},[1069,1717,1385],{"class":1075},[1069,1719,1089],{"class":1075},[1069,1721,1239],{"class":1098},[1069,1723,1089],{"class":1075},[1069,1725,1726],{"class":1075},"],",[1069,1728,1095],{"class":1075},[1069,1730,1731],{"class":1160},"unique",[1069,1733,1089],{"class":1075},[1069,1735,1092],{"class":1075},[1069,1737,1738],{"class":1075}," false",[1069,1740,1741],{"class":1075}," },\n",[1069,1743,1745,1747,1749,1751,1753,1755,1757,1759,1761,1763,1765,1767,1769,1771,1773,1775],{"class":1071,"line":1744},41,[1069,1746,1707],{"class":1075},[1069,1748,1095],{"class":1075},[1069,1750,1145],{"class":1160},[1069,1752,1089],{"class":1075},[1069,1754,1092],{"class":1075},[1069,1756,1385],{"class":1075},[1069,1758,1089],{"class":1075},[1069,1760,1344],{"class":1098},[1069,1762,1089],{"class":1075},[1069,1764,1726],{"class":1075},[1069,1766,1095],{"class":1075},[1069,1768,1731],{"class":1160},[1069,1770,1089],{"class":1075},[1069,1772,1092],{"class":1075},[1069,1774,1738],{"class":1075},[1069,1776,1741],{"class":1075},[1069,1778,1780,1782,1784,1786,1788,1790,1792,1794,1796,1798,1800,1802,1804,1806,1808,1810],{"class":1071,"line":1779},42,[1069,1781,1707],{"class":1075},[1069,1783,1095],{"class":1075},[1069,1785,1145],{"class":1160},[1069,1787,1089],{"class":1075},[1069,1789,1092],{"class":1075},[1069,1791,1385],{"class":1075},[1069,1793,1089],{"class":1075},[1069,1795,1575],{"class":1098},[1069,1797,1089],{"class":1075},[1069,1799,1726],{"class":1075},[1069,1801,1095],{"class":1075},[1069,1803,1731],{"class":1160},[1069,1805,1089],{"class":1075},[1069,1807,1092],{"class":1075},[1069,1809,1738],{"class":1075},[1069,1811,1331],{"class":1075},[1069,1813,1815],{"class":1071,"line":1814},43,[1069,1816,1817],{"class":1075},"      ]\n",[1069,1819,1821],{"class":1071,"line":1820},44,[1069,1822,1823],{"class":1075},"    },\n",[1069,1825,1827,1829,1832,1834,1836],{"class":1071,"line":1826},45,[1069,1828,1125],{"class":1075},[1069,1830,1831],{"class":1128},"order_items",[1069,1833,1089],{"class":1075},[1069,1835,1092],{"class":1075},[1069,1837,1119],{"class":1075},[1069,1839,1841,1843,1845,1847,1849],{"class":1071,"line":1840},46,[1069,1842,1141],{"class":1075},[1069,1844,1145],{"class":1144},[1069,1846,1089],{"class":1075},[1069,1848,1092],{"class":1075},[1069,1850,1119],{"class":1075},[1069,1852,1854,1856,1858,1860,1862,1864,1866,1868,1870,1872,1874,1876,1878,1880,1882,1884,1886,1888,1891],{"class":1071,"line":1853},47,[1069,1855,1157],{"class":1075},[1069,1857,1161],{"class":1160},[1069,1859,1089],{"class":1075},[1069,1861,1092],{"class":1075},[1069,1863,1293],{"class":1075},[1069,1865,1095],{"class":1075},[1069,1867,1177],{"class":1176},[1069,1869,1089],{"class":1075},[1069,1871,1092],{"class":1075},[1069,1873,1095],{"class":1075},[1069,1875,1186],{"class":1098},[1069,1877,1089],{"class":1075},[1069,1879,1313],{"class":1075},[1069,1881,1095],{"class":1075},[1069,1883,1198],{"class":1176},[1069,1885,1089],{"class":1075},[1069,1887,1092],{"class":1075},[1069,1889,1890],{"class":1075}," true",[1069,1892,1741],{"class":1075},[1069,1894,1896,1898,1901,1903,1905],{"class":1071,"line":1895},48,[1069,1897,1157],{"class":1075},[1069,1899,1900],{"class":1160},"order_id",[1069,1902,1089],{"class":1075},[1069,1904,1092],{"class":1075},[1069,1906,1119],{"class":1075},[1069,1908,1910,1912,1914,1916,1918,1920,1922,1924],{"class":1071,"line":1909},49,[1069,1911,1173],{"class":1075},[1069,1913,1177],{"class":1176},[1069,1915,1089],{"class":1075},[1069,1917,1092],{"class":1075},[1069,1919,1095],{"class":1075},[1069,1921,1186],{"class":1098},[1069,1923,1089],{"class":1075},[1069,1925,1104],{"class":1075},[1069,1927,1929,1931,1933,1935,1937],{"class":1071,"line":1928},50,[1069,1930,1173],{"class":1075},[1069,1932,1272],{"class":1176},[1069,1934,1089],{"class":1075},[1069,1936,1092],{"class":1075},[1069,1938,1205],{"class":1075},[1069,1940,1942,1944,1946,1948,1950,1952,1954,1956,1958,1960,1962,1964,1966,1968,1970,1972,1974,1976,1978,1980,1982],{"class":1071,"line":1941},51,[1069,1943,1173],{"class":1075},[1069,1945,1286],{"class":1176},[1069,1947,1089],{"class":1075},[1069,1949,1092],{"class":1075},[1069,1951,1293],{"class":1075},[1069,1953,1095],{"class":1075},[1069,1955,1299],{"class":1298},[1069,1957,1089],{"class":1075},[1069,1959,1092],{"class":1075},[1069,1961,1095],{"class":1075},[1069,1963,1129],{"class":1098},[1069,1965,1089],{"class":1075},[1069,1967,1313],{"class":1075},[1069,1969,1095],{"class":1075},[1069,1971,1318],{"class":1298},[1069,1973,1089],{"class":1075},[1069,1975,1092],{"class":1075},[1069,1977,1095],{"class":1075},[1069,1979,1161],{"class":1098},[1069,1981,1089],{"class":1075},[1069,1983,1331],{"class":1075},[1069,1985,1987],{"class":1071,"line":1986},52,[1069,1988,1231],{"class":1075},[1069,1990,1992,1994,1997,1999,2001,2003,2005,2007,2009,2011,2013,2015,2017,2019,2021,2023,2025,2027,2029],{"class":1071,"line":1991},53,[1069,1993,1157],{"class":1075},[1069,1995,1996],{"class":1160},"product_id",[1069,1998,1089],{"class":1075},[1069,2000,1092],{"class":1075},[1069,2002,1293],{"class":1075},[1069,2004,1095],{"class":1075},[1069,2006,1177],{"class":1176},[1069,2008,1089],{"class":1075},[1069,2010,1092],{"class":1075},[1069,2012,1095],{"class":1075},[1069,2014,1186],{"class":1098},[1069,2016,1089],{"class":1075},[1069,2018,1313],{"class":1075},[1069,2020,1095],{"class":1075},[1069,2022,1272],{"class":1176},[1069,2024,1089],{"class":1075},[1069,2026,1092],{"class":1075},[1069,2028,1890],{"class":1075},[1069,2030,1741],{"class":1075},[1069,2032,2034,2036,2039,2041,2043,2045,2047,2049,2051,2053,2055,2058,2060,2062,2064,2066,2068,2070,2072],{"class":1071,"line":2033},54,[1069,2035,1157],{"class":1075},[1069,2037,2038],{"class":1160},"quantity",[1069,2040,1089],{"class":1075},[1069,2042,1092],{"class":1075},[1069,2044,1293],{"class":1075},[1069,2046,1095],{"class":1075},[1069,2048,1177],{"class":1176},[1069,2050,1089],{"class":1075},[1069,2052,1092],{"class":1075},[1069,2054,1095],{"class":1075},[1069,2056,2057],{"class":1098},"integer",[1069,2059,1089],{"class":1075},[1069,2061,1313],{"class":1075},[1069,2063,1095],{"class":1075},[1069,2065,1272],{"class":1176},[1069,2067,1089],{"class":1075},[1069,2069,1092],{"class":1075},[1069,2071,1890],{"class":1075},[1069,2073,1741],{"class":1075},[1069,2075,2077,2079,2082,2084,2086,2088,2090,2092,2094,2096,2098,2100,2102,2104,2106,2108,2110,2112,2114,2116,2118,2120,2122,2124,2127],{"class":1071,"line":2076},55,[1069,2078,1157],{"class":1075},[1069,2080,2081],{"class":1160},"unit_price",[1069,2083,1089],{"class":1075},[1069,2085,1092],{"class":1075},[1069,2087,1293],{"class":1075},[1069,2089,1095],{"class":1075},[1069,2091,1177],{"class":1176},[1069,2093,1089],{"class":1075},[1069,2095,1092],{"class":1075},[1069,2097,1095],{"class":1075},[1069,2099,1474],{"class":1098},[1069,2101,1089],{"class":1075},[1069,2103,1313],{"class":1075},[1069,2105,1095],{"class":1075},[1069,2107,1486],{"class":1176},[1069,2109,1089],{"class":1075},[1069,2111,1092],{"class":1075},[1069,2113,1493],{"class":1144},[1069,2115,1313],{"class":1075},[1069,2117,1095],{"class":1075},[1069,2119,1503],{"class":1176},[1069,2121,1089],{"class":1075},[1069,2123,1092],{"class":1075},[1069,2125,2126],{"class":1144}," 2",[1069,2128,1741],{"class":1075},[1069,2130,2132,2134,2136,2138,2140,2142,2144,2146,2148,2150,2152,2154,2156,2158,2160,2162,2164,2166,2168,2170,2172],{"class":1071,"line":2131},56,[1069,2133,1157],{"class":1075},[1069,2135,1575],{"class":1160},[1069,2137,1089],{"class":1075},[1069,2139,1092],{"class":1075},[1069,2141,1293],{"class":1075},[1069,2143,1095],{"class":1075},[1069,2145,1177],{"class":1176},[1069,2147,1089],{"class":1075},[1069,2149,1092],{"class":1075},[1069,2151,1095],{"class":1075},[1069,2153,1597],{"class":1098},[1069,2155,1089],{"class":1075},[1069,2157,1313],{"class":1075},[1069,2159,1095],{"class":1075},[1069,2161,1213],{"class":1176},[1069,2163,1089],{"class":1075},[1069,2165,1092],{"class":1075},[1069,2167,1095],{"class":1075},[1069,2169,1617],{"class":1098},[1069,2171,1089],{"class":1075},[1069,2173,1331],{"class":1075},[1069,2175,2177],{"class":1071,"line":2176},57,[1069,2178,1686],{"class":1075},[1069,2180,2182,2184,2186,2188,2190],{"class":1071,"line":2181},58,[1069,2183,1141],{"class":1075},[1069,2185,1694],{"class":1144},[1069,2187,1089],{"class":1075},[1069,2189,1092],{"class":1075},[1069,2191,1701],{"class":1075},[1069,2193,2195,2197,2199,2201,2203,2205,2207,2209,2211,2213,2215,2217,2219,2221,2223,2225],{"class":1071,"line":2194},59,[1069,2196,1707],{"class":1075},[1069,2198,1095],{"class":1075},[1069,2200,1145],{"class":1160},[1069,2202,1089],{"class":1075},[1069,2204,1092],{"class":1075},[1069,2206,1385],{"class":1075},[1069,2208,1089],{"class":1075},[1069,2210,1900],{"class":1098},[1069,2212,1089],{"class":1075},[1069,2214,1726],{"class":1075},[1069,2216,1095],{"class":1075},[1069,2218,1731],{"class":1160},[1069,2220,1089],{"class":1075},[1069,2222,1092],{"class":1075},[1069,2224,1738],{"class":1075},[1069,2226,1331],{"class":1075},[1069,2228,2230],{"class":1071,"line":2229},60,[1069,2231,1817],{"class":1075},[1069,2233,2235],{"class":1071,"line":2234},61,[1069,2236,2237],{"class":1075},"    }\n",[1069,2239,2241],{"class":1071,"line":2240},62,[1069,2242,2243],{"class":1075},"  }\n",[1069,2245,2247],{"class":1071,"line":2246},63,[1069,2248,2249],{"class":1075},"}\n",[1055,2251,2253],{"id":2252},"column-types","Column Types",[1299,2255,2256,2272],{},[2257,2258,2259],"thead",{},[2260,2261,2262,2266,2269],"tr",{},[2263,2264,2265],"th",{},"Type",[2263,2267,2268],{},"PostgreSQL",[2263,2270,2271],{},"Notes",[2273,2274,2275,2292,2307,2319,2336,2349,2362,2375,2387,2399],"tbody",{},[2260,2276,2277,2282,2285],{},[2278,2279,2280],"td",{},[994,2281,1186],{},[2278,2283,2284],{},"UUID",[2278,2286,2287,2288,2291],{},"Use for IDs (with ",[994,2289,2290],{},"default: \"gen_random_uuid()\"",")",[2260,2293,2294,2298,2301],{},[2278,2295,2296],{},[994,2297,1366],{},[2278,2299,2300],{},"VARCHAR",[2278,2302,2303,2304,2291],{},"Text, no length limit (or specify ",[994,2305,2306],{},"max_length",[2260,2308,2309,2313,2316],{},[2278,2310,2311],{},[994,2312,2057],{},[2278,2314,2315],{},"INTEGER",[2278,2317,2318],{},"Whole numbers",[2260,2320,2321,2325,2328],{},[2278,2322,2323],{},[994,2324,1474],{},[2278,2326,2327],{},"DECIMAL(p,s)",[2278,2329,2330,2331,2333,2334],{},"Fixed-point numbers (prices, quantities) — specify ",[994,2332,1486],{}," and ",[994,2335,1503],{},[2260,2337,2338,2343,2346],{},[2278,2339,2340],{},[994,2341,2342],{},"float",[2278,2344,2345],{},"FLOAT",[2278,2347,2348],{},"Floating-point (use decimal for financial data)",[2260,2350,2351,2356,2359],{},[2278,2352,2353],{},[994,2354,2355],{},"boolean",[2278,2357,2358],{},"BOOLEAN",[2278,2360,2361],{},"True\u002Ffalse",[2260,2363,2364,2369,2372],{},[2278,2365,2366],{},[994,2367,2368],{},"date",[2278,2370,2371],{},"DATE",[2278,2373,2374],{},"Date only (YYYY-MM-DD)",[2260,2376,2377,2381,2384],{},[2278,2378,2379],{},[994,2380,1597],{},[2278,2382,2383],{},"TIMESTAMP",[2278,2385,2386],{},"Date and time with timezone",[2260,2388,2389,2393,2396],{},[2278,2390,2391],{},[994,2392,1064],{},[2278,2394,2395],{},"JSONB",[2278,2397,2398],{},"Structured data (queries supported)",[2260,2400,2401,2406,2409],{},[2278,2402,2403],{},[994,2404,2405],{},"text",[2278,2407,2408],{},"TEXT",[2278,2410,2411],{},"Long text (no length limit)",[1055,2413,2415],{"id":2414},"column-properties","Column Properties",[1299,2417,2418,2430],{},[2257,2419,2420],{},[2260,2421,2422,2425,2427],{},[2263,2423,2424],{},"Property",[2263,2426,2265],{},[2263,2428,2429],{},"Description",[2273,2431,2432,2443,2454,2465,2476,2494,2505,2517,2528,2539],{},[2260,2433,2434,2438,2440],{},[2278,2435,2436],{},[994,2437,1177],{},[2278,2439,1366],{},[2278,2441,2442],{},"Column data type (required)",[2260,2444,2445,2449,2451],{},[2278,2446,2447],{},[994,2448,1198],{},[2278,2450,2355],{},[2278,2452,2453],{},"Is this the primary key? (one per table)",[2260,2455,2456,2460,2462],{},[2278,2457,2458],{},[994,2459,1272],{},[2278,2461,2355],{},[2278,2463,2464],{},"NOT NULL constraint",[2260,2466,2467,2471,2473],{},[2278,2468,2469],{},[994,2470,1731],{},[2278,2472,2355],{},[2278,2474,2475],{},"UNIQUE constraint",[2260,2477,2478,2482,2484],{},[2278,2479,2480],{},[994,2481,1213],{},[2278,2483,1366],{},[2278,2485,2486,2487,2490,2491,2291],{},"Default value or SQL expression (e.g., ",[994,2488,2489],{},"\"now()\"",", ",[994,2492,2493],{},"\"gen_random_uuid()\"",[2260,2495,2496,2500,2502],{},[2278,2497,2498],{},[994,2499,2306],{},[2278,2501,2057],{},[2278,2503,2504],{},"For strings: max length",[2260,2506,2507,2511,2514],{},[2278,2508,2509],{},[994,2510,1378],{},[2278,2512,2513],{},"array",[2278,2515,2516],{},"Allowed values for string fields",[2260,2518,2519,2523,2525],{},[2278,2520,2521],{},[994,2522,1486],{},[2278,2524,2057],{},[2278,2526,2527],{},"For decimals: total digits",[2260,2529,2530,2534,2536],{},[2278,2531,2532],{},[994,2533,1503],{},[2278,2535,2057],{},[2278,2537,2538],{},"For decimals: decimal places",[2260,2540,2541,2545,2548],{},[2278,2542,2543],{},[994,2544,1286],{},[2278,2546,2547],{},"object",[2278,2549,2550],{},"Foreign key to another table",[2552,2553,2555],"h3",{"id":2554},"foreign-keys-references","Foreign Keys (references)",[1060,2557,2559],{"className":1062,"code":2558,"language":1064,"meta":1065,"style":1065},"\"customer_id\": {\n  \"type\": \"uuid\",\n  \"required\": true,\n  \"references\": {\n    \"table\": \"customers\",\n    \"column\": \"id\"\n  }\n}\n",[994,2560,2561,2575,2593,2605,2617,2635,2651,2655],{"__ignoreMap":1065},[1069,2562,2563,2565,2567,2569,2573],{"class":1071,"line":1072},[1069,2564,1089],{"class":1075},[1069,2566,1239],{"class":1098},[1069,2568,1089],{"class":1075},[1069,2570,2572],{"class":2571},"sTEyZ",": ",[1069,2574,1076],{"class":1075},[1069,2576,2577,2579,2581,2583,2585,2587,2589,2591],{"class":1071,"line":1079},[1069,2578,1082],{"class":1075},[1069,2580,1177],{"class":1085},[1069,2582,1089],{"class":1075},[1069,2584,1092],{"class":1075},[1069,2586,1095],{"class":1075},[1069,2588,1186],{"class":1098},[1069,2590,1089],{"class":1075},[1069,2592,1104],{"class":1075},[1069,2594,2595,2597,2599,2601,2603],{"class":1071,"line":1107},[1069,2596,1082],{"class":1075},[1069,2598,1272],{"class":1085},[1069,2600,1089],{"class":1075},[1069,2602,1092],{"class":1075},[1069,2604,1205],{"class":1075},[1069,2606,2607,2609,2611,2613,2615],{"class":1071,"line":1122},[1069,2608,1082],{"class":1075},[1069,2610,1286],{"class":1085},[1069,2612,1089],{"class":1075},[1069,2614,1092],{"class":1075},[1069,2616,1119],{"class":1075},[1069,2618,2619,2621,2623,2625,2627,2629,2631,2633],{"class":1071,"line":1138},[1069,2620,1125],{"class":1075},[1069,2622,1299],{"class":1128},[1069,2624,1089],{"class":1075},[1069,2626,1092],{"class":1075},[1069,2628,1095],{"class":1075},[1069,2630,1308],{"class":1098},[1069,2632,1089],{"class":1075},[1069,2634,1104],{"class":1075},[1069,2636,2637,2639,2641,2643,2645,2647,2649],{"class":1071,"line":1154},[1069,2638,1125],{"class":1075},[1069,2640,1318],{"class":1128},[1069,2642,1089],{"class":1075},[1069,2644,1092],{"class":1075},[1069,2646,1095],{"class":1075},[1069,2648,1161],{"class":1098},[1069,2650,1225],{"class":1075},[1069,2652,2653],{"class":1071,"line":1170},[1069,2654,2243],{"class":1075},[1069,2656,2657],{"class":1071,"line":1193},[1069,2658,2249],{"class":1075},[990,2660,2661,2662,2664,2665,2668],{},"From that one ",[994,2663,1286],{}," block the platform creates the foreign-key constraint, enables cascading deletes if you've asked for them, and enforces referential integrity at the database level — so an ",[994,2666,2667],{},"order_item"," can never point at an order that doesn't exist.",[1055,2670,2672],{"id":2671},"the-tenant_id-column","The tenant_id Column",[990,2674,2675,2676,2679,2680,2685],{},"This is the single most important thing the schema does ",[1050,2677,2678],{},"not"," contain. ",[999,2681,2682,2683],{},"You never define ",[994,2684,1021],{},", and yet every one of your tables has it — the platform adds the column, indexes it, and scopes every query on the table to the current tenant automatically:",[1060,2687,2691],{"className":2688,"code":2689,"language":2690,"meta":1065,"style":1065},"language-sql shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","-- Your schema defines:\nCREATE TABLE orders (\n  id UUID PRIMARY KEY,\n  customer_id UUID,\n  status TEXT,\n  ...\n)\n\n-- The platform adds a tenant_id column and scopes every query to the tenant.\n","sql",[994,2692,2693,2699,2713,2723,2728,2738,2743,2748,2754],{"__ignoreMap":1065},[1069,2694,2695],{"class":1071,"line":1072},[1069,2696,2698],{"class":2697},"sHwdD","-- Your schema defines:\n",[1069,2700,2701,2704,2707,2710],{"class":1071,"line":1079},[1069,2702,2703],{"class":1144},"CREATE",[1069,2705,2706],{"class":1144}," TABLE",[1069,2708,2709],{"class":1298}," orders",[1069,2711,2712],{"class":2571}," (\n",[1069,2714,2715,2718,2721],{"class":1071,"line":1107},[1069,2716,2717],{"class":2571},"  id UUID ",[1069,2719,2720],{"class":1085},"PRIMARY KEY",[1069,2722,1104],{"class":2571},[1069,2724,2725],{"class":1071,"line":1122},[1069,2726,2727],{"class":2571},"  customer_id UUID,\n",[1069,2729,2730,2733,2736],{"class":1071,"line":1138},[1069,2731,2732],{"class":1144},"  status",[1069,2734,2735],{"class":1085}," TEXT",[1069,2737,1104],{"class":2571},[1069,2739,2740],{"class":1071,"line":1154},[1069,2741,2742],{"class":2571},"  ...\n",[1069,2744,2745],{"class":1071,"line":1170},[1069,2746,2747],{"class":2571},")\n",[1069,2749,2750],{"class":1071,"line":1193},[1069,2751,2753],{"emptyLinePlaceholder":2752},true,"\n",[1069,2755,2756],{"class":1071,"line":1208},[1069,2757,2758],{"class":2697},"-- The platform adds a tenant_id column and scopes every query to the tenant.\n",[990,2760,2761],{},"Handing this to the platform rather than the developer is a deliberate safety decision. Multi-tenant data leaks almost always trace back to a single query that forgot its tenant filter — and you can't forget a filter you never write. Because the scoping is enforced by the platform itself, every query is scoped to the current tenant whether it comes from your app, the generated API, or a hand-written query, and there's no application-level mistake that can bypass it.",[1055,2763,2764],{"id":1694},"Indexes",[990,2766,2767,2768,2771],{},"Indexes are how you keep queries fast as a table grows, declared alongside the columns they cover. A single-column index speeds lookups on that column; a multi-column index covers queries that filter or sort on those columns together; and ",[994,2769,2770],{},"unique: true"," doubles as a constraint that forbids duplicate values:",[1060,2773,2775],{"className":1062,"code":2774,"language":1064,"meta":1065,"style":1065},"\"indexes\": [\n  { \"columns\": [\"customer_id\"], \"unique\": false },\n  { \"columns\": [\"status\", \"created_at\"], \"unique\": false },\n  { \"columns\": [\"po_number\"], \"unique\": true }\n]\n",[994,2776,2777,2790,2825,2867,2901],{"__ignoreMap":1065},[1069,2778,2779,2781,2783,2785,2787],{"class":1071,"line":1072},[1069,2780,1089],{"class":1075},[1069,2782,1694],{"class":1098},[1069,2784,1089],{"class":1075},[1069,2786,2572],{"class":2571},[1069,2788,2789],{"class":1075},"[\n",[1069,2791,2792,2795,2797,2799,2801,2803,2805,2807,2809,2811,2813,2815,2817,2819,2821,2823],{"class":1071,"line":1079},[1069,2793,2794],{"class":1075},"  {",[1069,2796,1095],{"class":1075},[1069,2798,1145],{"class":1085},[1069,2800,1089],{"class":1075},[1069,2802,1092],{"class":1075},[1069,2804,1385],{"class":1075},[1069,2806,1089],{"class":1075},[1069,2808,1239],{"class":1098},[1069,2810,1089],{"class":1075},[1069,2812,1726],{"class":1075},[1069,2814,1095],{"class":1075},[1069,2816,1731],{"class":1085},[1069,2818,1089],{"class":1075},[1069,2820,1092],{"class":1075},[1069,2822,1738],{"class":1075},[1069,2824,1741],{"class":1075},[1069,2826,2827,2829,2831,2833,2835,2837,2839,2841,2843,2845,2847,2849,2851,2853,2855,2857,2859,2861,2863,2865],{"class":1071,"line":1107},[1069,2828,2794],{"class":1075},[1069,2830,1095],{"class":1075},[1069,2832,1145],{"class":1085},[1069,2834,1089],{"class":1075},[1069,2836,1092],{"class":1075},[1069,2838,1385],{"class":1075},[1069,2840,1089],{"class":1075},[1069,2842,1344],{"class":1098},[1069,2844,1089],{"class":1075},[1069,2846,1313],{"class":1075},[1069,2848,1095],{"class":1075},[1069,2850,1575],{"class":1098},[1069,2852,1089],{"class":1075},[1069,2854,1726],{"class":1075},[1069,2856,1095],{"class":1075},[1069,2858,1731],{"class":1085},[1069,2860,1089],{"class":1075},[1069,2862,1092],{"class":1075},[1069,2864,1738],{"class":1075},[1069,2866,1741],{"class":1075},[1069,2868,2869,2871,2873,2875,2877,2879,2881,2883,2885,2887,2889,2891,2893,2895,2897,2899],{"class":1071,"line":1122},[1069,2870,2794],{"class":1075},[1069,2872,1095],{"class":1075},[1069,2874,1145],{"class":1085},[1069,2876,1089],{"class":1075},[1069,2878,1092],{"class":1075},[1069,2880,1385],{"class":1075},[1069,2882,1089],{"class":1075},[1069,2884,1523],{"class":1098},[1069,2886,1089],{"class":1075},[1069,2888,1726],{"class":1075},[1069,2890,1095],{"class":1075},[1069,2892,1731],{"class":1085},[1069,2894,1089],{"class":1075},[1069,2896,1092],{"class":1075},[1069,2898,1890],{"class":1075},[1069,2900,1331],{"class":1075},[1069,2902,2903],{"class":1071,"line":1138},[1069,2904,2905],{"class":1075},"]\n",[990,2907,2908,2909,2912,2913,2916,2917,2920,2921,2924],{},"The columns worth indexing are the ones the database has to ",[1050,2910,2911],{},"search"," or ",[1050,2914,2915],{},"order"," by: foreign keys, so joins don't scan the whole table; columns you frequently filter on, like a ",[994,2918,2919],{},"WHERE status = ...","; columns you sort by, like ",[994,2922,2923],{},"ORDER BY created_at","; and anything that must stay unique. But indexes aren't free — each one adds work on every insert and update — so resist the urge to index everything and let real query patterns, not guesses, tell you what to add.",[1055,2926,2928],{"id":2927},"enums","Enums",[990,2930,2931],{},"An enum constrains a string column to a fixed set of allowed values, which is the cleanest way to model something like an order's status:",[1060,2933,2935],{"className":1062,"code":2934,"language":1064,"meta":1065,"style":1065},"\"status\": {\n  \"type\": \"string\",\n  \"enum\": [\"draft\", \"confirmed\", \"shipped\", \"cancelled\"],\n  \"default\": \"draft\"\n}\n",[994,2936,2937,2949,2967,3011,3027],{"__ignoreMap":1065},[1069,2938,2939,2941,2943,2945,2947],{"class":1071,"line":1072},[1069,2940,1089],{"class":1075},[1069,2942,1344],{"class":1098},[1069,2944,1089],{"class":1075},[1069,2946,2572],{"class":2571},[1069,2948,1076],{"class":1075},[1069,2950,2951,2953,2955,2957,2959,2961,2963,2965],{"class":1071,"line":1079},[1069,2952,1082],{"class":1075},[1069,2954,1177],{"class":1085},[1069,2956,1089],{"class":1075},[1069,2958,1092],{"class":1075},[1069,2960,1095],{"class":1075},[1069,2962,1366],{"class":1098},[1069,2964,1089],{"class":1075},[1069,2966,1104],{"class":1075},[1069,2968,2969,2971,2973,2975,2977,2979,2981,2983,2985,2987,2989,2991,2993,2995,2997,2999,3001,3003,3005,3007,3009],{"class":1071,"line":1107},[1069,2970,1082],{"class":1075},[1069,2972,1378],{"class":1085},[1069,2974,1089],{"class":1075},[1069,2976,1092],{"class":1075},[1069,2978,1385],{"class":1075},[1069,2980,1089],{"class":1075},[1069,2982,1390],{"class":1098},[1069,2984,1089],{"class":1075},[1069,2986,1313],{"class":1075},[1069,2988,1095],{"class":1075},[1069,2990,1399],{"class":1098},[1069,2992,1089],{"class":1075},[1069,2994,1313],{"class":1075},[1069,2996,1095],{"class":1075},[1069,2998,1408],{"class":1098},[1069,3000,1089],{"class":1075},[1069,3002,1313],{"class":1075},[1069,3004,1095],{"class":1075},[1069,3006,1417],{"class":1098},[1069,3008,1089],{"class":1075},[1069,3010,1422],{"class":1075},[1069,3012,3013,3015,3017,3019,3021,3023,3025],{"class":1071,"line":1122},[1069,3014,1082],{"class":1075},[1069,3016,1213],{"class":1085},[1069,3018,1089],{"class":1075},[1069,3020,1092],{"class":1075},[1069,3022,1095],{"class":1075},[1069,3024,1390],{"class":1098},[1069,3026,1225],{"class":1075},[1069,3028,3029],{"class":1071,"line":1138},[1069,3030,2249],{"class":1075},[990,3032,3033,3034,3037,3038,3041],{},"The platform validates every insert and update against that list and can enforce it at the database level with a PostgreSQL ",[994,3035,3036],{},"CHECK"," constraint. The payoff is that an impossible state — a typo'd ",[994,3039,3040],{},"\"shiped\"",", a status your code never anticipated — can't reach the table in the first place, rather than surfacing as a confusing bug somewhere downstream.",[1055,3043,3045],{"id":3044},"decimal-vs-float","Decimal vs Float",[990,3047,3048,3049,1092],{},"For financial data (prices, amounts), ",[999,3050,3051],{},"always use decimal",[1060,3053,3055],{"className":1062,"code":3054,"language":1064,"meta":1065,"style":1065},"\"total_amount\": {\n  \"type\": \"decimal\",\n  \"precision\": 10,\n  \"scale\": 2  \u002F\u002F Two decimal places (cents)\n}\n",[994,3056,3057,3069,3087,3101,3116],{"__ignoreMap":1065},[1069,3058,3059,3061,3063,3065,3067],{"class":1071,"line":1072},[1069,3060,1089],{"class":1075},[1069,3062,1452],{"class":1098},[1069,3064,1089],{"class":1075},[1069,3066,2572],{"class":2571},[1069,3068,1076],{"class":1075},[1069,3070,3071,3073,3075,3077,3079,3081,3083,3085],{"class":1071,"line":1079},[1069,3072,1082],{"class":1075},[1069,3074,1177],{"class":1085},[1069,3076,1089],{"class":1075},[1069,3078,1092],{"class":1075},[1069,3080,1095],{"class":1075},[1069,3082,1474],{"class":1098},[1069,3084,1089],{"class":1075},[1069,3086,1104],{"class":1075},[1069,3088,3089,3091,3093,3095,3097,3099],{"class":1071,"line":1107},[1069,3090,1082],{"class":1075},[1069,3092,1486],{"class":1085},[1069,3094,1089],{"class":1075},[1069,3096,1092],{"class":1075},[1069,3098,1493],{"class":1144},[1069,3100,1104],{"class":1075},[1069,3102,3103,3105,3107,3109,3111,3113],{"class":1071,"line":1122},[1069,3104,1082],{"class":1075},[1069,3106,1503],{"class":1085},[1069,3108,1089],{"class":1075},[1069,3110,1092],{"class":1075},[1069,3112,2126],{"class":1144},[1069,3114,3115],{"class":2697},"  \u002F\u002F Two decimal places (cents)\n",[1069,3117,3118],{"class":1071,"line":1138},[1069,3119,2249],{"class":1075},[990,3121,3122,3123,3126,3127,3130],{},"Floats have precision issues. ",[994,3124,3125],{},"1.23 + 4.56"," might equal ",[994,3128,3129],{},"5.7899999999",".",[1055,3132,3134],{"id":3133},"timestamps-with-defaults","Timestamps with Defaults",[990,3136,3137,3138,2333,3140,1092],{},"Always include ",[994,3139,1575],{},[994,3141,1632],{},[1060,3143,3145],{"className":1062,"code":3144,"language":1064,"meta":1065,"style":1065},"\"created_at\": {\n  \"type\": \"timestamp\",\n  \"default\": \"now()\"\n},\n\"updated_at\": {\n  \"type\": \"timestamp\",\n  \"default\": \"now()\"\n}\n",[994,3146,3147,3159,3177,3193,3200,3212,3230,3246],{"__ignoreMap":1065},[1069,3148,3149,3151,3153,3155,3157],{"class":1071,"line":1072},[1069,3150,1089],{"class":1075},[1069,3152,1575],{"class":1098},[1069,3154,1089],{"class":1075},[1069,3156,2572],{"class":2571},[1069,3158,1076],{"class":1075},[1069,3160,3161,3163,3165,3167,3169,3171,3173,3175],{"class":1071,"line":1079},[1069,3162,1082],{"class":1075},[1069,3164,1177],{"class":1085},[1069,3166,1089],{"class":1075},[1069,3168,1092],{"class":1075},[1069,3170,1095],{"class":1075},[1069,3172,1597],{"class":1098},[1069,3174,1089],{"class":1075},[1069,3176,1104],{"class":1075},[1069,3178,3179,3181,3183,3185,3187,3189,3191],{"class":1071,"line":1107},[1069,3180,1082],{"class":1075},[1069,3182,1213],{"class":1085},[1069,3184,1089],{"class":1075},[1069,3186,1092],{"class":1075},[1069,3188,1095],{"class":1075},[1069,3190,1617],{"class":1098},[1069,3192,1225],{"class":1075},[1069,3194,3195,3198],{"class":1071,"line":1122},[1069,3196,3197],{"class":1075},"}",[1069,3199,1104],{"class":2571},[1069,3201,3202,3204,3206,3208,3210],{"class":1071,"line":1138},[1069,3203,1089],{"class":1075},[1069,3205,1632],{"class":1098},[1069,3207,1089],{"class":1075},[1069,3209,2572],{"class":2571},[1069,3211,1076],{"class":1075},[1069,3213,3214,3216,3218,3220,3222,3224,3226,3228],{"class":1071,"line":1154},[1069,3215,1082],{"class":1075},[1069,3217,1177],{"class":1085},[1069,3219,1089],{"class":1075},[1069,3221,1092],{"class":1075},[1069,3223,1095],{"class":1075},[1069,3225,1597],{"class":1098},[1069,3227,1089],{"class":1075},[1069,3229,1104],{"class":1075},[1069,3231,3232,3234,3236,3238,3240,3242,3244],{"class":1071,"line":1170},[1069,3233,1082],{"class":1075},[1069,3235,1213],{"class":1085},[1069,3237,1089],{"class":1075},[1069,3239,1092],{"class":1075},[1069,3241,1095],{"class":1075},[1069,3243,1617],{"class":1098},[1069,3245,1225],{"class":1075},[1069,3247,3248],{"class":1071,"line":1193},[1069,3249,2249],{"class":1075},[990,3251,3252,3253,3255],{},"Your app can update ",[994,3254,1632],{}," on record changes, or the platform can do it automatically.",[1055,3257,3259],{"id":3258},"migrations","Migrations",[990,3261,3262,3263,3265],{},"Changing a schema after it's live is just editing ",[994,3264,996],{}," and deploying again — the platform diffs the new version against the deployed one and applies the difference. But not all changes are equally safe. Adding things is harmless; renaming and removing things can strand existing data, so they need a little more care. The next three sections walk through each case.",[2552,3267,3269],{"id":3268},"add-a-column","Add a Column",[990,3271,3272,3273,3275,3276,3279],{},"Adding a column is the safe, everyday case. You add it to ",[994,3274,996],{}," and mark it ",[994,3277,3278],{},"required: false"," so existing rows, which have no value for it, remain valid:",[1060,3281,3283],{"className":1062,"code":3282,"language":1064,"meta":1065,"style":1065},"\"orders\": {\n  \"columns\": {\n    \u002F\u002F ... existing columns ...\n    \"expected_delivery\": {\n      \"type\": \"date\",\n      \"required\": false  \u002F\u002F ← Non-required for existing rows\n    }\n  }\n}\n",[994,3284,3285,3297,3309,3314,3327,3345,3360,3364,3368],{"__ignoreMap":1065},[1069,3286,3287,3289,3291,3293,3295],{"class":1071,"line":1072},[1069,3288,1089],{"class":1075},[1069,3290,1129],{"class":1098},[1069,3292,1089],{"class":1075},[1069,3294,2572],{"class":2571},[1069,3296,1076],{"class":1075},[1069,3298,3299,3301,3303,3305,3307],{"class":1071,"line":1079},[1069,3300,1082],{"class":1075},[1069,3302,1145],{"class":1085},[1069,3304,1089],{"class":1075},[1069,3306,1092],{"class":1075},[1069,3308,1119],{"class":1075},[1069,3310,3311],{"class":1071,"line":1107},[1069,3312,3313],{"class":2697},"    \u002F\u002F ... existing columns ...\n",[1069,3315,3316,3318,3321,3323,3325],{"class":1071,"line":1122},[1069,3317,1125],{"class":1075},[1069,3319,3320],{"class":1128},"expected_delivery",[1069,3322,1089],{"class":1075},[1069,3324,1092],{"class":1075},[1069,3326,1119],{"class":1075},[1069,3328,3329,3331,3333,3335,3337,3339,3341,3343],{"class":1071,"line":1138},[1069,3330,1141],{"class":1075},[1069,3332,1177],{"class":1144},[1069,3334,1089],{"class":1075},[1069,3336,1092],{"class":1075},[1069,3338,1095],{"class":1075},[1069,3340,2368],{"class":1098},[1069,3342,1089],{"class":1075},[1069,3344,1104],{"class":1075},[1069,3346,3347,3349,3351,3353,3355,3357],{"class":1071,"line":1154},[1069,3348,1141],{"class":1075},[1069,3350,1272],{"class":1144},[1069,3352,1089],{"class":1075},[1069,3354,1092],{"class":1075},[1069,3356,1738],{"class":1075},[1069,3358,3359],{"class":2697},"  \u002F\u002F ← Non-required for existing rows\n",[1069,3361,3362],{"class":1071,"line":1170},[1069,3363,2237],{"class":1075},[1069,3365,3366],{"class":1071,"line":1193},[1069,3367,2243],{"class":1075},[1069,3369,3370],{"class":1071,"line":1208},[1069,3371,2249],{"class":1075},[990,3373,3374],{},"When you deploy, the platform:",[3376,3377,3378,3381,3387,3390],"ol",{},[1013,3379,3380],{},"Detects the new column",[1013,3382,3383,3384],{},"Generates ",[994,3385,3386],{},"ALTER TABLE orders ADD COLUMN expected_delivery DATE",[1013,3388,3389],{},"Applies the migration",[1013,3391,3392],{},"Discovers the new column and exposes it on the REST\u002FGraphQL endpoints",[2552,3394,3396],{"id":3395},"rename-a-column","Rename a Column",[990,3398,3399],{},"There's no in-place rename, because to the migrator a rename is indistinguishable from \"drop one column, add another\" — and that would throw away the data. So you rename in three deliberate steps, spread across more than one deploy: add the new column alongside the old one, copy the data across in your app logic, and only once the data is safely moved do you remove the old column in a later schema update.",[1060,3401,3403],{"className":1062,"code":3402,"language":1064,"meta":1065,"style":1065},"\u002F\u002F Old version:\n\"po_number\": { \"type\": \"string\" }\n\n\u002F\u002F New version:\n\"po_number\": { \"type\": \"string\" },\n\"purchase_order_number\": { \"type\": \"string\" }  \u002F\u002F New name\n\n\u002F\u002F After data migration:\n\u002F\u002F Remove \"po_number\" from schema\n",[994,3404,3405,3410,3439,3443,3448,3479,3511,3515,3520],{"__ignoreMap":1065},[1069,3406,3407],{"class":1071,"line":1072},[1069,3408,3409],{"class":2697},"\u002F\u002F Old version:\n",[1069,3411,3412,3414,3416,3418,3420,3423,3425,3427,3429,3431,3433,3435,3437],{"class":1071,"line":1079},[1069,3413,1089],{"class":1075},[1069,3415,1523],{"class":1098},[1069,3417,1089],{"class":1075},[1069,3419,2572],{"class":2571},[1069,3421,3422],{"class":1075},"{",[1069,3424,1095],{"class":1075},[1069,3426,1177],{"class":1085},[1069,3428,1089],{"class":1075},[1069,3430,1092],{"class":1075},[1069,3432,1095],{"class":1075},[1069,3434,1366],{"class":1098},[1069,3436,1089],{"class":1075},[1069,3438,1331],{"class":1075},[1069,3440,3441],{"class":1071,"line":1107},[1069,3442,2753],{"emptyLinePlaceholder":2752},[1069,3444,3445],{"class":1071,"line":1122},[1069,3446,3447],{"class":2697},"\u002F\u002F New version:\n",[1069,3449,3450,3452,3454,3456,3458,3460,3462,3464,3466,3468,3470,3472,3474,3477],{"class":1071,"line":1138},[1069,3451,1089],{"class":1075},[1069,3453,1523],{"class":1098},[1069,3455,1089],{"class":1075},[1069,3457,2572],{"class":2571},[1069,3459,3422],{"class":1075},[1069,3461,1095],{"class":1075},[1069,3463,1177],{"class":1085},[1069,3465,1089],{"class":1075},[1069,3467,1092],{"class":1075},[1069,3469,1095],{"class":1075},[1069,3471,1366],{"class":1098},[1069,3473,1089],{"class":1075},[1069,3475,3476],{"class":1075}," }",[1069,3478,1104],{"class":2571},[1069,3480,3481,3483,3486,3488,3490,3492,3494,3496,3498,3500,3502,3504,3506,3508],{"class":1071,"line":1154},[1069,3482,1089],{"class":1075},[1069,3484,3485],{"class":1098},"purchase_order_number",[1069,3487,1089],{"class":1075},[1069,3489,2572],{"class":2571},[1069,3491,3422],{"class":1075},[1069,3493,1095],{"class":1075},[1069,3495,1177],{"class":1085},[1069,3497,1089],{"class":1075},[1069,3499,1092],{"class":1075},[1069,3501,1095],{"class":1075},[1069,3503,1366],{"class":1098},[1069,3505,1089],{"class":1075},[1069,3507,3476],{"class":1075},[1069,3509,3510],{"class":2697},"  \u002F\u002F New name\n",[1069,3512,3513],{"class":1071,"line":1170},[1069,3514,2753],{"emptyLinePlaceholder":2752},[1069,3516,3517],{"class":1071,"line":1193},[1069,3518,3519],{"class":2697},"\u002F\u002F After data migration:\n",[1069,3521,3522],{"class":1071,"line":1208},[1069,3523,3524],{"class":2697},"\u002F\u002F Remove \"po_number\" from schema\n",[2552,3526,3528],{"id":3527},"delete-a-column","Delete a Column",[990,3530,3531,3532,3534],{},"Deleting is the simplest edit and the most final one: remove the column from ",[994,3533,996],{}," and the platform drops it on the next deploy, taking its data with it.",[1060,3536,3538],{"className":1062,"code":3537,"language":1064,"meta":1065,"style":1065},"\u002F\u002F Before:\n{\n  \"id\": { ... },\n  \"deprecated_field\": { ... }  \u002F\u002F ← Remove this line\n}\n\n\u002F\u002F After:\n{\n  \"id\": { ... }\n}\n",[994,3539,3540,3545,3549,3567,3587,3591,3595,3600,3604,3620],{"__ignoreMap":1065},[1069,3541,3542],{"class":1071,"line":1072},[1069,3543,3544],{"class":2697},"\u002F\u002F Before:\n",[1069,3546,3547],{"class":1071,"line":1079},[1069,3548,1076],{"class":1075},[1069,3550,3551,3553,3555,3557,3559,3561,3564],{"class":1071,"line":1107},[1069,3552,1082],{"class":1075},[1069,3554,1161],{"class":1085},[1069,3556,1089],{"class":1075},[1069,3558,1092],{"class":1075},[1069,3560,1293],{"class":1075},[1069,3562,3563],{"class":2571}," ... ",[1069,3565,3566],{"class":1075},"},\n",[1069,3568,3569,3571,3574,3576,3578,3580,3582,3584],{"class":1071,"line":1122},[1069,3570,1082],{"class":1075},[1069,3572,3573],{"class":1085},"deprecated_field",[1069,3575,1089],{"class":1075},[1069,3577,1092],{"class":1075},[1069,3579,1293],{"class":1075},[1069,3581,3563],{"class":2571},[1069,3583,3197],{"class":1075},[1069,3585,3586],{"class":2697},"  \u002F\u002F ← Remove this line\n",[1069,3588,3589],{"class":1071,"line":1138},[1069,3590,2249],{"class":1075},[1069,3592,3593],{"class":1071,"line":1154},[1069,3594,2753],{"emptyLinePlaceholder":2752},[1069,3596,3597],{"class":1071,"line":1170},[1069,3598,3599],{"class":2697},"\u002F\u002F After:\n",[1069,3601,3602],{"class":1071,"line":1193},[1069,3603,1076],{"class":1075},[1069,3605,3606,3608,3610,3612,3614,3616,3618],{"class":1071,"line":1208},[1069,3607,1082],{"class":1075},[1069,3609,1161],{"class":1085},[1069,3611,1089],{"class":1075},[1069,3613,1092],{"class":1075},[1069,3615,1293],{"class":1075},[1069,3617,3563],{"class":2571},[1069,3619,2249],{"class":1075},[1069,3621,3622],{"class":1071,"line":1228},[1069,3623,2249],{"class":1075},[990,3625,3626],{},"Because the data is gone for good, treat a drop as a one-way door — make sure nothing still reads the column, and consider keeping it through one release as unused before removing it.",[1055,3628,3630],{"id":3629},"api-generation","API Generation",[990,3632,3633],{},"Once your schema is deployed, the platform automatically generates:",[2552,3635,3637],{"id":3636},"rest-endpoints","REST Endpoints",[1060,3639,3643],{"className":3640,"code":3641,"language":3642,"meta":1065,"style":1065},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# Read\nGET \u002Fapi\u002Forders?status=eq.confirmed\n\n# Create\nPOST \u002Fapi\u002Forders\n{ \"customer_id\": \"...\", \"status\": \"draft\" }\n\n# Update\nPATCH \u002Fapi\u002Forders?id=eq.123\n{ \"status\": \"shipped\" }\n\n# Delete\nDELETE \u002Fapi\u002Forders?id=eq.123\n","bash",[994,3644,3645,3650,3658,3662,3667,3675,3709,3713,3718,3726,3743,3747,3752],{"__ignoreMap":1065},[1069,3646,3647],{"class":1071,"line":1072},[1069,3648,3649],{"class":2697},"# Read\n",[1069,3651,3652,3655],{"class":1071,"line":1079},[1069,3653,3654],{"class":1128},"GET",[1069,3656,3657],{"class":1098}," \u002Fapi\u002Forders?status=eq.confirmed\n",[1069,3659,3660],{"class":1071,"line":1107},[1069,3661,2753],{"emptyLinePlaceholder":2752},[1069,3663,3664],{"class":1071,"line":1122},[1069,3665,3666],{"class":2697},"# Create\n",[1069,3668,3669,3672],{"class":1071,"line":1138},[1069,3670,3671],{"class":1128},"POST",[1069,3673,3674],{"class":1098}," \u002Fapi\u002Forders\n",[1069,3676,3677,3679,3682,3684,3686,3689,3691,3693,3695,3697,3699,3701,3703,3705,3707],{"class":1071,"line":1154},[1069,3678,3422],{"class":1075},[1069,3680,3681],{"class":1128}," \"customer_id\"",[1069,3683,1092],{"class":1298},[1069,3685,1095],{"class":1075},[1069,3687,3688],{"class":1098},"...",[1069,3690,1089],{"class":1075},[1069,3692,1313],{"class":1098},[1069,3694,1095],{"class":1075},[1069,3696,1344],{"class":1098},[1069,3698,1089],{"class":1075},[1069,3700,1092],{"class":1098},[1069,3702,1095],{"class":1075},[1069,3704,1390],{"class":1098},[1069,3706,1089],{"class":1075},[1069,3708,1331],{"class":1098},[1069,3710,3711],{"class":1071,"line":1170},[1069,3712,2753],{"emptyLinePlaceholder":2752},[1069,3714,3715],{"class":1071,"line":1193},[1069,3716,3717],{"class":2697},"# Update\n",[1069,3719,3720,3723],{"class":1071,"line":1208},[1069,3721,3722],{"class":1128},"PATCH",[1069,3724,3725],{"class":1098}," \u002Fapi\u002Forders?id=eq.123\n",[1069,3727,3728,3730,3733,3735,3737,3739,3741],{"class":1071,"line":1228},[1069,3729,3422],{"class":1075},[1069,3731,3732],{"class":1128}," \"status\"",[1069,3734,1092],{"class":1298},[1069,3736,1095],{"class":1075},[1069,3738,1408],{"class":1098},[1069,3740,1089],{"class":1075},[1069,3742,1331],{"class":1098},[1069,3744,3745],{"class":1071,"line":1234},[1069,3746,2753],{"emptyLinePlaceholder":2752},[1069,3748,3749],{"class":1071,"line":1248},[1069,3750,3751],{"class":2697},"# Delete\n",[1069,3753,3754,3757],{"class":1071,"line":1267},[1069,3755,3756],{"class":1128},"DELETE",[1069,3758,3725],{"class":1098},[2552,3760,3762],{"id":3761},"graphql-queries","GraphQL Queries",[1060,3764,3768],{"className":3765,"code":3766,"language":3767,"meta":1065,"style":1065},"language-graphql shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","query {\n  orders(where: { status: { eq: \"confirmed\" } }) {\n    id\n    customer_id\n    status\n    order_items {\n      product_id\n      quantity\n    }\n  }\n}\n","graphql",[994,3769,3770,3777,3813,3818,3823,3828,3835,3840,3845,3849,3853],{"__ignoreMap":1065},[1069,3771,3772,3775],{"class":1071,"line":1072},[1069,3773,3774],{"class":1075},"query",[1069,3776,1119],{"class":1075},[1069,3778,3779,3782,3786,3788,3791,3793,3795,3797,3800,3802,3804,3806,3808,3811],{"class":1071,"line":1079},[1069,3780,3781],{"class":2571},"  orders(",[1069,3783,3785],{"class":3784},"sHdIc","where",[1069,3787,1092],{"class":1075},[1069,3789,3790],{"class":2571}," { ",[1069,3792,1344],{"class":1098},[1069,3794,1092],{"class":1075},[1069,3796,3790],{"class":2571},[1069,3798,3799],{"class":1098},"eq",[1069,3801,1092],{"class":1075},[1069,3803,1095],{"class":1075},[1069,3805,1399],{"class":1098},[1069,3807,1089],{"class":1075},[1069,3809,3810],{"class":2571}," } }) ",[1069,3812,1076],{"class":1075},[1069,3814,3815],{"class":1071,"line":1107},[1069,3816,3817],{"class":2571},"    id\n",[1069,3819,3820],{"class":1071,"line":1122},[1069,3821,3822],{"class":2571},"    customer_id\n",[1069,3824,3825],{"class":1071,"line":1138},[1069,3826,3827],{"class":2571},"    status\n",[1069,3829,3830,3833],{"class":1071,"line":1154},[1069,3831,3832],{"class":2571},"    order_items ",[1069,3834,1076],{"class":1075},[1069,3836,3837],{"class":1071,"line":1170},[1069,3838,3839],{"class":2571},"      product_id\n",[1069,3841,3842],{"class":1071,"line":1193},[1069,3843,3844],{"class":2571},"      quantity\n",[1069,3846,3847],{"class":1071,"line":1208},[1069,3848,2237],{"class":1075},[1069,3850,3851],{"class":1071,"line":1228},[1069,3852,2243],{"class":1075},[1069,3854,3855],{"class":1071,"line":1234},[1069,3856,2249],{"class":1075},[990,3858,3859],{},"All endpoints are automatically scoped to your tenant — no app-level filtering needed.",[1055,3861,3863],{"id":3862},"best-practices","Best Practices",[990,3865,3866],{},"Most of what makes a schema age well comes down to a few choices made at the start.",[990,3868,3869,3872,3873,3875,3876,3878,3879,3881,3882,2333,3884,3886],{},[999,3870,3871],{},"Pick durable types for the things that matter."," Use UUIDs for primary keys rather than sequential integers — they're immutable and safe to generate anywhere, where auto-incrementing integers collide across distributed systems. Use ",[994,3874,1474],{}," for anything financial; floats will quietly turn ",[994,3877,3125],{}," into ",[994,3880,3129],{},", which is the last thing you want on an invoice. And give every table ",[994,3883,1575],{},[994,3885,1632],{}," timestamps from day one, because retrofitting them later is far more painful.",[990,3888,3889,3892],{},[999,3890,3891],{},"Index with intent and reference responsibly."," Always index your foreign keys and the columns you filter on most, so joins and lookups stay fast as data grows. When you reference another table, keep to tables in your own app or in well-known platform apps — pointing at an uncommitted or private app couples you to something that may not exist for every tenant.",[990,3894,3895,3898,3899,3901],{},[999,3896,3897],{},"Treat schema changes as migrations, not edits."," New columns should be ",[994,3900,3278],{}," so existing rows stay valid, and any removal or rename should follow the staged process above rather than a quick delete. The git diff is your migration history, so a careless edit is a careless migration.",[1055,3903,3905],{"id":3904},"next-steps","Next Steps",[1010,3907,3908,3918,3926],{},[1013,3909,3910,3917],{},[999,3911,3912],{},[3913,3914,3916],"a",{"href":3915},"\u002Fdocs\u002Fproducts\u002Fapps\u002Fconcept\u002F","Concept"," — Understand the declarative app model",[1013,3919,3920,3925],{},[999,3921,3922],{},[3913,3923,141],{"href":3924},"\u002Fdocs\u002Fproducts\u002Fapps\u002Fmanifest-reference\u002F"," — App metadata and permissions",[1013,3927,3928,3933],{},[999,3929,3930],{},[3913,3931,123],{"href":3932},"\u002Fdocs\u002Fproducts\u002Fapps\u002Fcockpit-integration\u002F"," — UI extension points",[3935,3936,3937],"style",{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .su27w, html code.shiki .su27w{--shiki-light:#916B53;--shiki-default:#916B53;--shiki-dark:#916B53}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}",{"title":1065,"searchDepth":1079,"depth":1079,"links":3939},[3940,3941,3942,3945,3946,3947,3948,3949,3950,3955,3959,3960],{"id":1057,"depth":1079,"text":1058},{"id":2252,"depth":1079,"text":2253},{"id":2414,"depth":1079,"text":2415,"children":3943},[3944],{"id":2554,"depth":1107,"text":2555},{"id":2671,"depth":1079,"text":2672},{"id":1694,"depth":1079,"text":2764},{"id":2927,"depth":1079,"text":2928},{"id":3044,"depth":1079,"text":3045},{"id":3133,"depth":1079,"text":3134},{"id":3258,"depth":1079,"text":3259,"children":3951},[3952,3953,3954],{"id":3268,"depth":1107,"text":3269},{"id":3395,"depth":1107,"text":3396},{"id":3527,"depth":1107,"text":3528},{"id":3629,"depth":1079,"text":3630,"children":3956},[3957,3958],{"id":3636,"depth":1107,"text":3637},{"id":3761,"depth":1107,"text":3762},{"id":3862,"depth":1079,"text":3863},{"id":3904,"depth":1079,"text":3905},"Define database tables, columns, and relationships with schema.json","md",null,{"status":3965},"published",{"title":165,"description":3961},{"loc":166},"CQ_xsQcSDJ5Tgi5Ff1OCgvp1xAP4VHRBi52XnRxXlIE",1785229260358]