[{"data":1,"prerenderedAt":2638},["ShallowReactive",2],{"navigation-landing-en":3,"navigation-nuxt-auto-en":180,"navigation-nuxt-protokit-en":365,"\u002Fdocs\u002Fnuxt-auto\u002Fauto-api\u002Fconfiguration-en":507,"\u002Fdocs\u002Fnuxt-auto\u002Fauto-api\u002Fconfiguration-surround-en":2633},[4,8,13,28,41,51,64,77,94,110,134,150,157,172],{"title":5,"path":6,"stem":7},"Overview","\u002Fdocs\u002Flanding","0.docs\u002F1.landing\u002F001.index",{"title":9,"path":10,"stem":11,"badge":12},"Built-in Features","\u002Fdocs\u002Flanding\u002Fbuilt-in-features","0.docs\u002F1.landing\u002F002.built-in-features","New",{"title":14,"path":15,"stem":16,"children":17,"icon":27},"Content Foundation","\u002Fdocs\u002Flanding\u002Fcontent","0.docs\u002F1.landing\u002F02.content\u002F1.index",[18,19,23],{"title":5,"path":15,"stem":16},{"title":20,"path":21,"stem":22},"Details","\u002Fdocs\u002Flanding\u002Fcontent\u002Fdetails","0.docs\u002F1.landing\u002F02.content\u002F2.details",{"title":24,"path":25,"stem":26},"Technical","\u002Fdocs\u002Flanding\u002Fcontent\u002Ftechnical","0.docs\u002F1.landing\u002F02.content\u002F4.technical","i-heroicons-document-text",{"title":29,"path":30,"stem":31,"children":32,"icon":40},"Regional Content","\u002Fdocs\u002Flanding\u002Fregional","0.docs\u002F1.landing\u002F03.regional\u002F1.index",[33,34,37],{"title":5,"path":30,"stem":31},{"title":20,"path":35,"stem":36},"\u002Fdocs\u002Flanding\u002Fregional\u002Fdetails","0.docs\u002F1.landing\u002F03.regional\u002F2.details",{"title":24,"path":38,"stem":39},"\u002Fdocs\u002Flanding\u002Fregional\u002Ftechnical","0.docs\u002F1.landing\u002F03.regional\u002F4.technical","i-heroicons-globe-alt",{"title":42,"path":43,"stem":44,"children":45,"icon":50},"Multi-language","\u002Fdocs\u002Flanding\u002Fmultilang","0.docs\u002F1.landing\u002F04.multilang\u002F1.index",[46,47],{"title":5,"path":43,"stem":44},{"title":20,"path":48,"stem":49},"\u002Fdocs\u002Flanding\u002Fmultilang\u002Fdetails","0.docs\u002F1.landing\u002F04.multilang\u002F2.details","i-heroicons-language",{"title":52,"path":53,"stem":54,"children":55,"icon":63},"Blog","\u002Fdocs\u002Flanding\u002Fblog","0.docs\u002F1.landing\u002F05.blog\u002F1.index",[56,57,60],{"title":5,"path":53,"stem":54},{"title":20,"path":58,"stem":59},"\u002Fdocs\u002Flanding\u002Fblog\u002Fdetails","0.docs\u002F1.landing\u002F05.blog\u002F2.details",{"title":24,"path":61,"stem":62},"\u002Fdocs\u002Flanding\u002Fblog\u002Ftechnical","0.docs\u002F1.landing\u002F05.blog\u002F4.technical","i-heroicons-pencil-square",{"title":65,"path":66,"stem":67,"children":68,"icon":76},"Documentation","\u002Fdocs\u002Flanding\u002Fdocs","0.docs\u002F1.landing\u002F06.docs\u002F1.index",[69,70,73],{"title":5,"path":66,"stem":67},{"title":20,"path":71,"stem":72},"\u002Fdocs\u002Flanding\u002Fdocs\u002Fdetails","0.docs\u002F1.landing\u002F06.docs\u002F2.details",{"title":24,"path":74,"stem":75},"\u002Fdocs\u002Flanding\u002Fdocs\u002Ftechnical","0.docs\u002F1.landing\u002F06.docs\u002F4.technical","i-heroicons-book-open",{"title":78,"path":79,"stem":80,"children":81,"icon":93},"Forms","\u002Fdocs\u002Flanding\u002Fforms","0.docs\u002F1.landing\u002F07.forms\u002F1.index",[82,83,86,90],{"title":5,"path":79,"stem":80},{"title":20,"path":84,"stem":85},"\u002Fdocs\u002Flanding\u002Fforms\u002Fdetails","0.docs\u002F1.landing\u002F07.forms\u002F2.details",{"title":87,"path":88,"stem":89},"Admin","\u002Fdocs\u002Flanding\u002Fforms\u002Fadmin","0.docs\u002F1.landing\u002F07.forms\u002F3.admin",{"title":24,"path":91,"stem":92},"\u002Fdocs\u002Flanding\u002Fforms\u002Ftechnical","0.docs\u002F1.landing\u002F07.forms\u002F4.technical","i-heroicons-clipboard-document-list",{"title":95,"path":96,"stem":97,"children":98,"icon":109},"Email","\u002Fdocs\u002Flanding\u002Femail","0.docs\u002F1.landing\u002F08.email\u002F1.index",[99,100,103,106],{"title":5,"path":96,"stem":97},{"title":20,"path":101,"stem":102},"\u002Fdocs\u002Flanding\u002Femail\u002Fdetails","0.docs\u002F1.landing\u002F08.email\u002F2.details",{"title":87,"path":104,"stem":105},"\u002Fdocs\u002Flanding\u002Femail\u002Fadmin","0.docs\u002F1.landing\u002F08.email\u002F3.admin",{"title":24,"path":107,"stem":108},"\u002Fdocs\u002Flanding\u002Femail\u002Ftechnical","0.docs\u002F1.landing\u002F08.email\u002F4.technical","i-heroicons-envelope",{"title":111,"path":112,"stem":113,"children":114,"icon":133},"Feedback Platform","\u002Fdocs\u002Flanding\u002Ffeedback","0.docs\u002F1.landing\u002F09.feedback\u002F1.index",[115,116,119,122,125,129],{"title":5,"path":112,"stem":113},{"title":20,"path":117,"stem":118},"\u002Fdocs\u002Flanding\u002Ffeedback\u002Fdetails","0.docs\u002F1.landing\u002F09.feedback\u002F2.details",{"title":87,"path":120,"stem":121},"\u002Fdocs\u002Flanding\u002Ffeedback\u002Fadmin","0.docs\u002F1.landing\u002F09.feedback\u002F3.admin",{"title":24,"path":123,"stem":124},"\u002Fdocs\u002Flanding\u002Ffeedback\u002Ftechnical","0.docs\u002F1.landing\u002F09.feedback\u002F4.technical",{"title":126,"path":127,"stem":128},"Compare vs SaaS","\u002Fdocs\u002Flanding\u002Ffeedback\u002Fcompare","0.docs\u002F1.landing\u002F09.feedback\u002F5.compare",{"title":130,"path":131,"stem":132},"FAQ","\u002Fdocs\u002Flanding\u002Ffeedback\u002Ffaq","0.docs\u002F1.landing\u002F09.feedback\u002F6.faq","i-heroicons-chat-bubble-left-right",{"title":135,"path":136,"stem":137,"children":138,"icon":149},"Storage","\u002Fdocs\u002Flanding\u002Fstorage","0.docs\u002F1.landing\u002F10.storage\u002F1.index",[139,140,143,146],{"title":5,"path":136,"stem":137},{"title":20,"path":141,"stem":142},"\u002Fdocs\u002Flanding\u002Fstorage\u002Fdetails","0.docs\u002F1.landing\u002F10.storage\u002F2.details",{"title":87,"path":144,"stem":145},"\u002Fdocs\u002Flanding\u002Fstorage\u002Fadmin","0.docs\u002F1.landing\u002F10.storage\u002F3.admin",{"title":24,"path":147,"stem":148},"\u002Fdocs\u002Flanding\u002Fstorage\u002Ftechnical","0.docs\u002F1.landing\u002F10.storage\u002F4.technical","i-heroicons-circle-stack",{"title":151,"path":152,"stem":153,"children":154,"icon":156},"Offline First","\u002Fdocs\u002Flanding\u002Foffline-first","0.docs\u002F1.landing\u002F11.offline-first\u002F1.index",[155],{"title":151,"path":152,"stem":153},"i-heroicons-users",{"title":158,"path":159,"stem":160,"children":161,"icon":156},"Yjs Sync","\u002Fdocs\u002Flanding\u002Fyjs-sync","0.docs\u002F1.landing\u002F12.yjs-sync\u002F1.index",[162,163,166,169],{"title":5,"path":159,"stem":160},{"title":20,"path":164,"stem":165},"\u002Fdocs\u002Flanding\u002Fyjs-sync\u002Fdetails","0.docs\u002F1.landing\u002F12.yjs-sync\u002F2.details",{"title":87,"path":167,"stem":168},"\u002Fdocs\u002Flanding\u002Fyjs-sync\u002Fadmin","0.docs\u002F1.landing\u002F12.yjs-sync\u002F3.admin",{"title":24,"path":170,"stem":171},"\u002Fdocs\u002Flanding\u002Fyjs-sync\u002Ftechnical","0.docs\u002F1.landing\u002F12.yjs-sync\u002F4.technical",{"title":173,"path":174,"stem":175,"children":176,"badge":178,"icon":179},"Newsletter","\u002Fdocs\u002Flanding\u002Fnewsletter","0.docs\u002F1.landing\u002F13.newsletter\u002Findex",[177],{"title":173,"path":174,"stem":175,"badge":178},"Coming Soon","i-lucide-send",[181,184,202,318,358],{"title":5,"path":182,"stem":183},"\u002Fdocs\u002Fnuxt-auto","0.docs\u002F3.nuxt-auto\u002Findex",{"title":185,"path":186,"stem":187,"children":188,"page":201},"Getting Started","\u002Fdocs\u002Fnuxt-auto\u002Fgetting-started","0.docs\u002F3.nuxt-auto\u002F1.getting-started",[189,193,197],{"title":190,"path":191,"stem":192},"Introduction","\u002Fdocs\u002Fnuxt-auto\u002Fgetting-started\u002Fintroduction","0.docs\u002F3.nuxt-auto\u002F1.getting-started\u002F1.introduction",{"title":194,"path":195,"stem":196},"Installation","\u002Fdocs\u002Fnuxt-auto\u002Fgetting-started\u002Finstallation","0.docs\u002F3.nuxt-auto\u002F1.getting-started\u002F2.installation",{"title":198,"path":199,"stem":200},"Quick Start","\u002Fdocs\u002Fnuxt-auto\u002Fgetting-started\u002Fquick-start","0.docs\u002F3.nuxt-auto\u002F1.getting-started\u002F3.quick-start",false,{"title":203,"path":204,"stem":205,"children":206,"page":201},"Auto API","\u002Fdocs\u002Fnuxt-auto\u002Fauto-api","0.docs\u002F3.nuxt-auto\u002F2.auto-api",[207,210,214,218,222,226,230,234,238,242,246,250,254,258,262,266,270,274,278,282,286,290,294,298,302,306,310,314],{"title":185,"path":208,"stem":209},"\u002Fdocs\u002Fnuxt-auto\u002Fauto-api\u002Fgetting-started","0.docs\u002F3.nuxt-auto\u002F2.auto-api\u002F1.getting-started",{"title":211,"path":212,"stem":213},"Aggregations","\u002Fdocs\u002Fnuxt-auto\u002Fauto-api\u002Faggregations","0.docs\u002F3.nuxt-auto\u002F2.auto-api\u002F10.aggregations",{"title":215,"path":216,"stem":217},"Lifecycle Hooks","\u002Fdocs\u002Fnuxt-auto\u002Fauto-api\u002Flifecycle-hooks","0.docs\u002F3.nuxt-auto\u002F2.auto-api\u002F11.lifecycle-hooks",{"title":219,"path":220,"stem":221},"Many-to-Many (M2M) Relationships","\u002Fdocs\u002Fnuxt-auto\u002Fauto-api\u002Fm2m-relationships","0.docs\u002F3.nuxt-auto\u002F2.auto-api\u002F12.m2m-relationships",{"title":223,"path":224,"stem":225},"Plugin System","\u002Fdocs\u002Fnuxt-auto\u002Fauto-api\u002Fplugin-system","0.docs\u002F3.nuxt-auto\u002F2.auto-api\u002F13.plugin-system",{"title":227,"path":228,"stem":229},"Database Adapters","\u002Fdocs\u002Fnuxt-auto\u002Fauto-api\u002Fdatabase-adapters","0.docs\u002F3.nuxt-auto\u002F2.auto-api\u002F14.database-adapters",{"title":231,"path":232,"stem":233},"Custom Endpoints","\u002Fdocs\u002Fnuxt-auto\u002Fauto-api\u002Fcustom-endpoints","0.docs\u002F3.nuxt-auto\u002F2.auto-api\u002F15.custom-endpoints",{"title":235,"path":236,"stem":237},"Multi-Tenancy","\u002Fdocs\u002Fnuxt-auto\u002Fauto-api\u002Fmulti-tenancy","0.docs\u002F3.nuxt-auto\u002F2.auto-api\u002F16.multi-tenancy",{"title":239,"path":240,"stem":241},"Schema Presets (Cross-engine)","\u002Fdocs\u002Fnuxt-auto\u002Fauto-api\u002Fschema-presets","0.docs\u002F3.nuxt-auto\u002F2.auto-api\u002F17.schema-presets",{"title":243,"path":244,"stem":245},"Permissions Cookbook","\u002Fdocs\u002Fnuxt-auto\u002Fauto-api\u002Fpermissions-cookbook","0.docs\u002F3.nuxt-auto\u002F2.auto-api\u002F18.permissions-cookbook",{"title":247,"path":248,"stem":249},"Billing & Plan Gating","\u002Fdocs\u002Fnuxt-auto\u002Fauto-api\u002Fbilling","0.docs\u002F3.nuxt-auto\u002F2.auto-api\u002F19.billing",{"title":251,"path":252,"stem":253},"Validation","\u002Fdocs\u002Fnuxt-auto\u002Fauto-api\u002Fvalidation","0.docs\u002F3.nuxt-auto\u002F2.auto-api\u002F2.validation",{"title":255,"path":256,"stem":257},"Rate Limiting","\u002Fdocs\u002Fnuxt-auto\u002Fauto-api\u002Frate-limiting","0.docs\u002F3.nuxt-auto\u002F2.auto-api\u002F20.rate-limiting",{"title":259,"path":260,"stem":261},"Request Metadata Plugin","\u002Fdocs\u002Fnuxt-auto\u002Fauto-api\u002Frequest-metadata","0.docs\u002F3.nuxt-auto\u002F2.auto-api\u002F21.request-metadata",{"title":263,"path":264,"stem":265},"Plugin Catalog","\u002Fdocs\u002Fnuxt-auto\u002Fauto-api\u002Fplugin-catalog","0.docs\u002F3.nuxt-auto\u002F2.auto-api\u002F22.plugin-catalog",{"title":267,"path":268,"stem":269},"Configuration Reference","\u002Fdocs\u002Fnuxt-auto\u002Fauto-api\u002Fconfiguration","0.docs\u002F3.nuxt-auto\u002F2.auto-api\u002F23.configuration",{"title":271,"path":272,"stem":273},"Handler Overrides","\u002Fdocs\u002Fnuxt-auto\u002Fauto-api\u002Fhandler-overrides","0.docs\u002F3.nuxt-auto\u002F2.auto-api\u002F3.handler-overrides",{"title":275,"path":276,"stem":277},"Cloudflare D1","\u002Fdocs\u002Fnuxt-auto\u002Fauto-api\u002Fcloudflare-d1","0.docs\u002F3.nuxt-auto\u002F2.auto-api\u002F30.cloudflare-d1",{"title":279,"path":280,"stem":281},"SQLite to D1 Migration","\u002Fdocs\u002Fnuxt-auto\u002Fauto-api\u002Fmigration-sqlite-d1","0.docs\u002F3.nuxt-auto\u002F2.auto-api\u002F31.migration-sqlite-d1",{"title":283,"path":284,"stem":285},"Frontend Composables","\u002Fdocs\u002Fnuxt-auto\u002Fauto-api\u002Ffrontend-composables","0.docs\u002F3.nuxt-auto\u002F2.auto-api\u002F32.frontend-composables",{"title":287,"path":288,"stem":289},"Testing","\u002Fdocs\u002Fnuxt-auto\u002Fauto-api\u002Ftesting","0.docs\u002F3.nuxt-auto\u002F2.auto-api\u002F33.testing",{"title":291,"path":292,"stem":293},"Pagination","\u002Fdocs\u002Fnuxt-auto\u002Fauto-api\u002Fpagination","0.docs\u002F3.nuxt-auto\u002F2.auto-api\u002F4.pagination",{"title":295,"path":296,"stem":297},"Upgrading","\u002Fdocs\u002Fnuxt-auto\u002Fauto-api\u002Fupgrading","0.docs\u002F3.nuxt-auto\u002F2.auto-api\u002F40.upgrading",{"title":299,"path":300,"stem":301},"Soft Deletes","\u002Fdocs\u002Fnuxt-auto\u002Fauto-api\u002Fsoft-deletes","0.docs\u002F3.nuxt-auto\u002F2.auto-api\u002F5.soft-deletes",{"title":303,"path":304,"stem":305},"Authentication & Authorization","\u002Fdocs\u002Fnuxt-auto\u002Fauto-api\u002Fauthentication-authorization","0.docs\u002F3.nuxt-auto\u002F2.auto-api\u002F6.authentication-authorization",{"title":307,"path":308,"stem":309},"Better-Auth Integration","\u002Fdocs\u002Fnuxt-auto\u002Fauto-api\u002Fbetter-auth","0.docs\u002F3.nuxt-auto\u002F2.auto-api\u002F7.better-auth",{"title":311,"path":312,"stem":313},"Nested Relations","\u002Fdocs\u002Fnuxt-auto\u002Fauto-api\u002Fnested-relationships","0.docs\u002F3.nuxt-auto\u002F2.auto-api\u002F8.nested-relationships",{"title":315,"path":316,"stem":317},"Bulk Operations","\u002Fdocs\u002Fnuxt-auto\u002Fauto-api\u002Fbulk-operations","0.docs\u002F3.nuxt-auto\u002F2.auto-api\u002F9.bulk-operations",{"title":319,"path":320,"stem":321,"children":322,"page":201},"Auto Admin","\u002Fdocs\u002Fnuxt-auto\u002Fauto-admin","0.docs\u002F3.nuxt-auto\u002F3.auto-admin",[323,326,330,334,338,342,346,350,354],{"title":185,"path":324,"stem":325},"\u002Fdocs\u002Fnuxt-auto\u002Fauto-admin\u002Fgetting-started","0.docs\u002F3.nuxt-auto\u002F3.auto-admin\u002F1.getting-started",{"title":327,"path":328,"stem":329},"Configuration & Theming","\u002Fdocs\u002Fnuxt-auto\u002Fauto-admin\u002Fconfiguration-theming","0.docs\u002F3.nuxt-auto\u002F3.auto-admin\u002F2.configuration-theming",{"title":331,"path":332,"stem":333},"Resource Configuration","\u002Fdocs\u002Fnuxt-auto\u002Fauto-admin\u002Fresource-configuration","0.docs\u002F3.nuxt-auto\u002F3.auto-admin\u002F3.resource-configuration",{"title":335,"path":336,"stem":337},"Form Fields & Widgets","\u002Fdocs\u002Fnuxt-auto\u002Fauto-admin\u002Fform-fields-widgets","0.docs\u002F3.nuxt-auto\u002F3.auto-admin\u002F4.form-fields-widgets",{"title":339,"path":340,"stem":341},"Permissions","\u002Fdocs\u002Fnuxt-auto\u002Fauto-admin\u002Fpermissions","0.docs\u002F3.nuxt-auto\u002F3.auto-admin\u002F5.permissions",{"title":343,"path":344,"stem":345},"Custom Pages","\u002Fdocs\u002Fnuxt-auto\u002Fauto-admin\u002Fcustom-pages","0.docs\u002F3.nuxt-auto\u002F3.auto-admin\u002F6.custom-pages",{"title":347,"path":348,"stem":349},"M2M Relationships","\u002Fdocs\u002Fnuxt-auto\u002Fauto-admin\u002Fm2m-relationships","0.docs\u002F3.nuxt-auto\u002F3.auto-admin\u002F7.m2m-relationships",{"title":351,"path":352,"stem":353},"Custom Actions","\u002Fdocs\u002Fnuxt-auto\u002Fauto-admin\u002Fcustom-actions","0.docs\u002F3.nuxt-auto\u002F3.auto-admin\u002F8.custom-actions",{"title":355,"path":356,"stem":357},"Composables","\u002Fdocs\u002Fnuxt-auto\u002Fauto-admin\u002Fcomposables","0.docs\u002F3.nuxt-auto\u002F3.auto-admin\u002F9.composables",{"title":359,"path":360,"stem":361,"children":362,"icon":364},"Claude Code Skills","\u002Fdocs\u002Fnuxt-auto\u002Fclaude-code-skills","0.docs\u002F3.nuxt-auto\u002F4.claude-code-skills\u002F1.index",[363],{"title":5,"path":360,"stem":361},"i-lucide-bot",[366,369,382,409,427,450,472,502],{"title":5,"path":367,"stem":368},"\u002Fdocs\u002Fnuxt-protokit","0.docs\u002F4.nuxt-protokit\u002Findex",{"title":185,"path":370,"stem":371,"children":372,"icon":381},"\u002Fdocs\u002Fnuxt-protokit\u002Fgetting-started","0.docs\u002F4.nuxt-protokit\u002F1.getting-started\u002F1.index",[373,374,378],{"title":190,"path":370,"stem":371},{"title":375,"path":376,"stem":377},"Core Concepts","\u002Fdocs\u002Fnuxt-protokit\u002Fgetting-started\u002Fconcepts","0.docs\u002F4.nuxt-protokit\u002F1.getting-started\u002F2.concepts",{"title":198,"path":379,"stem":380},"\u002Fdocs\u002Fnuxt-protokit\u002Fgetting-started\u002Fquick-start","0.docs\u002F4.nuxt-protokit\u002F1.getting-started\u002F3.quick-start","i-lucide-rocket",{"title":383,"path":384,"stem":385,"children":386,"icon":408},"Schemas","\u002Fdocs\u002Fnuxt-protokit\u002Fschemas","0.docs\u002F4.nuxt-protokit\u002F2.schemas\u002F1.index",[387,388,392,396,400,404],{"title":5,"path":384,"stem":385},{"title":389,"path":390,"stem":391},"Field Types","\u002Fdocs\u002Fnuxt-protokit\u002Fschemas\u002Ffields","0.docs\u002F4.nuxt-protokit\u002F2.schemas\u002F2.fields",{"title":393,"path":394,"stem":395},"Collections","\u002Fdocs\u002Fnuxt-protokit\u002Fschemas\u002Fcollections","0.docs\u002F4.nuxt-protokit\u002F2.schemas\u002F3.collections",{"title":397,"path":398,"stem":399},"Derived & Computed","\u002Fdocs\u002Fnuxt-protokit\u002Fschemas\u002Fderived-computed","0.docs\u002F4.nuxt-protokit\u002F2.schemas\u002F4.derived-computed",{"title":401,"path":402,"stem":403},"Connections","\u002Fdocs\u002Fnuxt-protokit\u002Fschemas\u002Fconnections","0.docs\u002F4.nuxt-protokit\u002F2.schemas\u002F5.connections",{"title":405,"path":406,"stem":407},"Visualizations & Layouts","\u002Fdocs\u002Fnuxt-protokit\u002Fschemas\u002Fvisualizations","0.docs\u002F4.nuxt-protokit\u002F2.schemas\u002F6.visualizations","i-lucide-file-code",{"title":355,"path":410,"stem":411,"children":412,"icon":426},"\u002Fdocs\u002Fnuxt-protokit\u002Fcomposables","0.docs\u002F4.nuxt-protokit\u002F3.composables\u002F1.index",[413,414,418,422],{"title":5,"path":410,"stem":411},{"title":415,"path":416,"stem":417},"usePrototype","\u002Fdocs\u002Fnuxt-protokit\u002Fcomposables\u002Fuse-prototype","0.docs\u002F4.nuxt-protokit\u002F3.composables\u002F2.use-prototype",{"title":419,"path":420,"stem":421},"useProtoDoc","\u002Fdocs\u002Fnuxt-protokit\u002Fcomposables\u002Fuse-proto-doc","0.docs\u002F4.nuxt-protokit\u002F3.composables\u002F3.use-proto-doc",{"title":423,"path":424,"stem":425},"useProtoCollection","\u002Fdocs\u002Fnuxt-protokit\u002Fcomposables\u002Fuse-proto-collection","0.docs\u002F4.nuxt-protokit\u002F3.composables\u002F4.use-proto-collection","i-lucide-layers",{"title":428,"path":429,"stem":430,"children":431,"icon":449},"Components","\u002Fdocs\u002Fnuxt-protokit\u002Fcomponents","0.docs\u002F4.nuxt-protokit\u002F4.components\u002F1.index",[432,433,437,441,445],{"title":5,"path":429,"stem":430},{"title":434,"path":435,"stem":436},"ProtoTool","\u002Fdocs\u002Fnuxt-protokit\u002Fcomponents\u002Fproto-tool","0.docs\u002F4.nuxt-protokit\u002F4.components\u002F2.proto-tool",{"title":438,"path":439,"stem":440},"ProtoCrudModal","\u002Fdocs\u002Fnuxt-protokit\u002Fcomponents\u002Fproto-crud-modal","0.docs\u002F4.nuxt-protokit\u002F4.components\u002F3.proto-crud-modal",{"title":442,"path":443,"stem":444},"ProtoCalendar","\u002Fdocs\u002Fnuxt-protokit\u002Fcomponents\u002Fproto-calendar","0.docs\u002F4.nuxt-protokit\u002F4.components\u002F4.proto-calendar",{"title":446,"path":447,"stem":448},"ProtoItemPanel variants","\u002Fdocs\u002Fnuxt-protokit\u002Fcomponents\u002Fproto-item-panels","0.docs\u002F4.nuxt-protokit\u002F4.components\u002F5.proto-item-panels","i-lucide-puzzle",{"title":151,"path":451,"stem":452,"children":453,"icon":471},"\u002Fdocs\u002Fnuxt-protokit\u002Foffline-first","0.docs\u002F4.nuxt-protokit\u002F5.offline-first\u002F1.index",[454,455,459,463,467],{"title":151,"path":451,"stem":452},{"title":456,"path":457,"stem":458},"Corruption Recovery","\u002Fdocs\u002Fnuxt-protokit\u002Foffline-first\u002Fcorruption-recovery","0.docs\u002F4.nuxt-protokit\u002F5.offline-first\u002F2.corruption-recovery",{"title":460,"path":461,"stem":462},"Size & GC","\u002Fdocs\u002Fnuxt-protokit\u002Foffline-first\u002Fdocument-size-and-gc","0.docs\u002F4.nuxt-protokit\u002F5.offline-first\u002F3.document-size-and-gc",{"title":464,"path":465,"stem":466},"Multi-tenant Isolation","\u002Fdocs\u002Fnuxt-protokit\u002Foffline-first\u002Fmulti-tenant-isolation","0.docs\u002F4.nuxt-protokit\u002F5.offline-first\u002F4.multi-tenant-isolation",{"title":468,"path":469,"stem":470},"Encryption at Rest","\u002Fdocs\u002Fnuxt-protokit\u002Foffline-first\u002Fencryption","0.docs\u002F4.nuxt-protokit\u002F5.offline-first\u002F5.encryption","i-lucide-wifi-off",{"title":473,"icon":474,"path":475,"stem":476,"children":477},"Advanced","i-lucide-graduation-cap","\u002Fdocs\u002Fnuxt-protokit\u002Fadvanced","0.docs\u002F4.nuxt-protokit\u002F6.advanced\u002F1.index",[478,479,483,487,491,494,498],{"title":5,"path":475,"stem":476},{"title":480,"path":481,"stem":482},"Multi-Tool Apps","\u002Fdocs\u002Fnuxt-protokit\u002Fadvanced\u002Fbuilding-a-toolkit","0.docs\u002F4.nuxt-protokit\u002F6.advanced\u002F1.building-a-toolkit",{"title":484,"path":485,"stem":486},"Schema Patterns","\u002Fdocs\u002Fnuxt-protokit\u002Fadvanced\u002Fcustom-schema-patterns","0.docs\u002F4.nuxt-protokit\u002F6.advanced\u002F2.custom-schema-patterns",{"title":488,"path":489,"stem":490},"Custom Fields & Viz","\u002Fdocs\u002Fnuxt-protokit\u002Fadvanced\u002Fextensibility","0.docs\u002F4.nuxt-protokit\u002F6.advanced\u002F3.extensibility",{"title":339,"path":492,"stem":493},"\u002Fdocs\u002Fnuxt-protokit\u002Fadvanced\u002Fpermissions","0.docs\u002F4.nuxt-protokit\u002F6.advanced\u002F4.permissions",{"title":495,"path":496,"stem":497},"Business Logic Guards","\u002Fdocs\u002Fnuxt-protokit\u002Fadvanced\u002Fpermissions-business-logic","0.docs\u002F4.nuxt-protokit\u002F6.advanced\u002F5.permissions-business-logic",{"title":499,"path":500,"stem":501},"Headless Mode","\u002Fdocs\u002Fnuxt-protokit\u002Fadvanced\u002Fheadless-mode","0.docs\u002F4.nuxt-protokit\u002F6.advanced\u002F6.headless-mode",{"title":359,"path":503,"stem":504,"children":505,"icon":364},"\u002Fdocs\u002Fnuxt-protokit\u002Fclaude-code-skills","0.docs\u002F4.nuxt-protokit\u002F7.claude-code-skills\u002F1.index",[506],{"title":5,"path":503,"stem":504},{"page":508,"fallbackPage":2629},{"id":509,"title":267,"body":510,"description":2627,"extension":2628,"links":2629,"meta":2630,"navigation":2629,"ogImage":2629,"path":268,"seo":2631,"stem":269,"__hash__":2632},"nuxt_auto\u002F0.docs\u002F3.nuxt-auto\u002F2.auto-api\u002F23.configuration.md",{"type":511,"value":512,"toc":2618},"minimark",[513,517,530,544,735,1228,1267,1271,1278,1711,1830,1845,1871,1906,1912,2265,2293,2297,2306,2501,2505,2614],[514,515,267],"h1",{"id":516},"configuration-reference",[518,519,520,521,525,526,529],"p",{},"Every module option, every resource registration field and every authorization key in one place. The guides\nexplain ",[522,523,524],"em",{},"when"," to use them; this page lists ",[522,527,528],{},"what exists",".",[531,532,534,535,539,540,543],"h2",{"id":533},"module-options-autoapi-in-nuxtconfigts","Module options (",[536,537,538],"code",{},"autoApi"," in ",[536,541,542],{},"nuxt.config.ts",")",[545,546,551],"pre",{"className":547,"code":548,"language":549,"meta":550,"style":550},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","export default defineNuxtConfig({\n  modules: ['@websideproject\u002Fnuxt-auto-api'],\n  autoApi: {\n    prefix: '\u002Fapi',\n    plugins: '~\u002Fserver\u002Fautoapi-plugins',\n    pagination: { defaultLimit: 20, maxLimit: 100 },\n    multiTenancy: { enabled: true, tenantIdField: 'organizationId' },\n  },\n})\n","ts","",[536,552,553,577,605,616,634,651,685,720,726],{"__ignoreMap":550},[554,555,558,562,565,569,573],"span",{"class":556,"line":557},"line",1,[554,559,561],{"class":560},"s7zQu","export",[554,563,564],{"class":560}," default",[554,566,568],{"class":567},"s2Zo4"," defineNuxtConfig",[554,570,572],{"class":571},"sTEyZ","(",[554,574,576],{"class":575},"sMK4o","{\n",[554,578,580,584,587,590,593,597,599,602],{"class":556,"line":579},2,[554,581,583],{"class":582},"swJcz","  modules",[554,585,586],{"class":575},":",[554,588,589],{"class":571}," [",[554,591,592],{"class":575},"'",[554,594,596],{"class":595},"sfazB","@websideproject\u002Fnuxt-auto-api",[554,598,592],{"class":575},[554,600,601],{"class":571},"]",[554,603,604],{"class":575},",\n",[554,606,608,611,613],{"class":556,"line":607},3,[554,609,610],{"class":582},"  autoApi",[554,612,586],{"class":575},[554,614,615],{"class":575}," {\n",[554,617,619,622,624,627,630,632],{"class":556,"line":618},4,[554,620,621],{"class":582},"    prefix",[554,623,586],{"class":575},[554,625,626],{"class":575}," '",[554,628,629],{"class":595},"\u002Fapi",[554,631,592],{"class":575},[554,633,604],{"class":575},[554,635,637,640,642,644,647,649],{"class":556,"line":636},5,[554,638,639],{"class":582},"    plugins",[554,641,586],{"class":575},[554,643,626],{"class":575},[554,645,646],{"class":595},"~\u002Fserver\u002Fautoapi-plugins",[554,648,592],{"class":575},[554,650,604],{"class":575},[554,652,654,657,659,662,665,667,671,674,677,679,682],{"class":556,"line":653},6,[554,655,656],{"class":582},"    pagination",[554,658,586],{"class":575},[554,660,661],{"class":575}," {",[554,663,664],{"class":582}," defaultLimit",[554,666,586],{"class":575},[554,668,670],{"class":669},"sbssI"," 20",[554,672,673],{"class":575},",",[554,675,676],{"class":582}," maxLimit",[554,678,586],{"class":575},[554,680,681],{"class":669}," 100",[554,683,684],{"class":575}," },\n",[554,686,688,691,693,695,698,700,704,706,709,711,713,716,718],{"class":556,"line":687},7,[554,689,690],{"class":582},"    multiTenancy",[554,692,586],{"class":575},[554,694,661],{"class":575},[554,696,697],{"class":582}," enabled",[554,699,586],{"class":575},[554,701,703],{"class":702},"sfNiH"," true",[554,705,673],{"class":575},[554,707,708],{"class":582}," tenantIdField",[554,710,586],{"class":575},[554,712,626],{"class":575},[554,714,715],{"class":595},"organizationId",[554,717,592],{"class":575},[554,719,684],{"class":575},[554,721,723],{"class":556,"line":722},8,[554,724,725],{"class":575},"  },\n",[554,727,729,732],{"class":556,"line":728},9,[554,730,731],{"class":575},"}",[554,733,734],{"class":571},")\n",[736,737,738,754],"table",{},[739,740,741],"thead",{},[742,743,744,748,751],"tr",{},[745,746,747],"th",{},"Option",[745,749,750],{},"Default",[745,752,753],{},"Description",[755,756,757,773,789,808,832,849,864,883,900,915,936,954,968,985,999,1020,1037,1051,1067,1087,1103,1118,1137,1152,1166,1183,1198,1214],"tbody",{},[742,758,759,765,770],{},[760,761,762],"td",{},[536,763,764],{},"prefix",[760,766,767],{},[536,768,769],{},"'\u002Fapi'",[760,771,772],{},"Route prefix for every generated route; the composables follow it",[742,774,775,780,783],{},[760,776,777],{},[536,778,779],{},"plugins",[760,781,782],{},"—",[760,784,785,786],{},"Path to a server file exporting an array of plugins (recommended), or an inline array. ",[787,788,223],"a",{"href":224},[742,790,791,796,801],{},[760,792,793],{},[536,794,795],{},"pagination.defaultLimit",[760,797,798],{},[536,799,800],{},"20",[760,802,803,804,807],{},"Page size when ",[536,805,806],{},"?limit"," is absent",[742,809,810,815,820],{},[760,811,812],{},[536,813,814],{},"pagination.maxLimit",[760,816,817],{},[536,818,819],{},"100",[760,821,822,823,825,826,829,830],{},"Largest ",[536,824,806],{},"; also caps ",[536,827,828],{},"?include="," and M2M pages. ",[787,831,291],{"href":292},[742,833,834,839,844],{},[760,835,836],{},[536,837,838],{},"multiTenancy.enabled",[760,840,841],{},[536,842,843],{},"false",[760,845,846,847],{},"Scope tenant tables to the caller's tenant; fail closed without one. ",[787,848,235],{"href":236},[742,850,851,856,861],{},[760,852,853],{},[536,854,855],{},"multiTenancy.tenantIdField",[760,857,858],{},[536,859,860],{},"'organizationId'",[760,862,863],{},"Tenant column (property key) on scoped tables",[742,865,866,871,876],{},[760,867,868],{},[536,869,870],{},"multiTenancy.userTenantField",[760,872,873],{},[536,874,875],{},"tenantIdField",[760,877,878,879,882],{},"Property of ",[536,880,881],{},"ctx.user"," holding the active tenant",[742,884,885,890,895],{},[760,886,887],{},[536,888,889],{},"multiTenancy.scopedResources",[760,891,892],{},[536,893,894],{},"'*'",[760,896,897,899],{},[536,898,894],{}," = every resource whose table has the column, or a list",[742,901,902,907,912],{},[760,903,904],{},[536,905,906],{},"multiTenancy.excludedResources",[760,908,909],{},[536,910,911],{},"[]",[760,913,914],{},"Never scoped (global tables that happen to have the column)",[742,916,917,922,924],{},[760,918,919],{},[536,920,921],{},"authorization",[760,923,782],{},[760,925,926,927,931,932],{},"Per-resource overrides of a module's auth config — ",[928,929,930],"strong",{},"strings\u002Farrays only"," (serialized). ",[787,933,935],{"href":934},"\u002Fdocs\u002Fnuxt-auto\u002Fauto-api\u002Fauthentication-authorization#overriding-permissions-from-nuxtconfig","Auth",[742,937,938,943,948],{},[760,939,940],{},[536,941,942],{},"relations.maxDepth",[760,944,945],{},[536,946,947],{},"3",[760,949,950,951,953],{},"Deepest ",[536,952,828],{}," nesting",[742,955,956,961,965],{},[760,957,958],{},[536,959,960],{},"relations.maxIncludes",[760,962,963],{},[536,964,800],{},[760,966,967],{},"Relations per request",[742,969,970,975,980],{},[760,971,972],{},[536,973,974],{},"relations.allowFieldSelection",[760,976,977],{},[536,978,979],{},"true",[760,981,982],{},[536,983,984],{},"?include=author[id,name]",[742,986,987,992,996],{},[760,988,989],{},[536,990,991],{},"relations.allowFiltering",[760,993,994],{},[536,995,979],{},[760,997,998],{},"Filters on to-many includes",[742,1000,1001,1006,1010],{},[760,1002,1003],{},[536,1004,1005],{},"relations.allowPagination",[760,1007,1008],{},[536,1009,979],{},[760,1011,1012,1015,1016,1019],{},[536,1013,1014],{},"limit"," \u002F ",[536,1017,1018],{},"offset"," on to-many includes",[742,1021,1022,1027,1031],{},[760,1023,1024],{},[536,1025,1026],{},"bulk.enabled",[760,1028,1029],{},[536,1030,979],{},[760,1032,1033,1036],{},[536,1034,1035],{},"\u002F:resource\u002Fbulk"," routes",[742,1038,1039,1044,1048],{},[760,1040,1041],{},[536,1042,1043],{},"bulk.maxBatchSize",[760,1045,1046],{},[536,1047,819],{},[760,1049,1050],{},"Items per bulk request",[742,1052,1053,1058,1062],{},[760,1054,1055],{},[536,1056,1057],{},"bulk.transactional",[760,1059,1060],{},[536,1061,979],{},[760,1063,1064,1065],{},"All-or-nothing (not atomic on D1). ",[787,1066,315],{"href":316},[742,1068,1069,1074,1078],{},[760,1070,1071],{},[536,1072,1073],{},"aggregations.enabled",[760,1075,1076],{},[536,1077,979],{},[760,1079,1080,1083,1084],{},[536,1081,1082],{},"\u002F:resource\u002Faggregate"," and ",[536,1085,1086],{},"?aggregate=",[742,1088,1089,1094,1098],{},[760,1090,1091],{},[536,1092,1093],{},"aggregations.allowGroupBy",[760,1095,1096],{},[536,1097,979],{},[760,1099,1100],{},[536,1101,1102],{},"groupBy",[742,1104,1105,1110,1115],{},[760,1106,1107],{},[536,1108,1109],{},"aggregations.maxGroupByFields",[760,1111,1112],{},[536,1113,1114],{},"5",[760,1116,1117],{},"Group-by columns per request",[742,1119,1120,1125,1131],{},[760,1121,1122],{},[536,1123,1124],{},"hookConfig.errorHandling",[760,1126,1127,1130],{},[536,1128,1129],{},"'log'"," for after-hooks",[760,1132,1133,1136],{},[536,1134,1135],{},"'throw'"," surfaces after-hook errors. Before-hooks always throw",[742,1138,1139,1144,1149],{},[760,1140,1141],{},[536,1142,1143],{},"hookConfig.timeout",[760,1145,1146],{},[536,1147,1148],{},"5000",[760,1150,1151],{},"Milliseconds per hook",[742,1153,1154,1159,1163],{},[760,1155,1156],{},[536,1157,1158],{},"hookConfig.parallel",[760,1160,1161],{},[536,1162,843],{},[760,1164,1165],{},"Run a hook's handlers concurrently",[742,1167,1168,1173,1177],{},[760,1169,1170],{},[536,1171,1172],{},"hiddenFields.global",[760,1174,1175],{},[536,1176,911],{},[760,1178,1179,1180,543],{},"Columns never returned or queryable on any resource (e.g. ",[536,1181,1182],{},"passwordHash",[742,1184,1185,1190,1195],{},[760,1186,1187],{},[536,1188,1189],{},"hiddenFields.resources",[760,1191,1192],{},[536,1193,1194],{},"{}",[760,1196,1197],{},"Same, per resource",[742,1199,1200,1205,1208],{},[760,1201,1202],{},[536,1203,1204],{},"m2m",[760,1206,1207],{},"auto-detect",[760,1209,1210,1211],{},"Junction detection and explicit relations. ",[787,1212,1213],{"href":220},"M2M",[742,1215,1216,1221,1225],{},[760,1217,1218],{},[536,1219,1220],{},"debug",[760,1222,1223],{},[536,1224,843],{},[760,1226,1227],{},"Log registration and plugin details at build time",[518,1229,1230,1233,1234,1239,1240,1243,1244,1247,1248,1247,1251,1083,1254,1015,1257,1260,1261,1264,1265,529],{},[928,1231,1232],{},"Not options:"," the database engine is the second argument of\n",[787,1235,1236],{"href":228},[536,1237,1238],{},"initializeDatabase(db, engine)"," in a server plugin. ",[536,1241,1242],{},"database"," is accepted for older\nconfigs but not read. ",[536,1245,1246],{},"hooks",", ",[536,1249,1250],{},"exclude",[536,1252,1253],{},"include",[536,1255,1256],{},"multiTenancy.getTenantId",[536,1258,1259],{},"allowCrossTenantAccess"," \u002F\n",[536,1262,1263],{},"requireTenant"," were removed and fail the build — see ",[787,1266,295],{"href":296},[531,1268,1270],{"id":1269},"registering-a-resource","Registering a resource",[518,1272,1273,1274,1277],{},"Resources are registered at build time, from a Nuxt module, through the ",[536,1275,1276],{},"autoApi:registerSchema"," hook:",[545,1279,1281],{"className":547,"code":1280,"language":549,"meta":550,"style":550},"\u002F\u002F modules\u002Fblog\u002Findex.ts\nimport { createResolver, defineNuxtModule } from '@nuxt\u002Fkit'\nimport { createModuleImport } from '@websideproject\u002Fnuxt-auto-api'\n\nexport default defineNuxtModule({\n  meta: { name: 'blog' },\n  setup(_, nuxt) {\n    const { resolve } = createResolver(import.meta.url)\n    nuxt.hook('autoApi:registerSchema', (registry) => {\n      registry.register('posts', {\n        schema: createModuleImport(resolve('.\u002Fschema'), 'posts'),\n        authorization: createModuleImport(resolve('.\u002Fauth'), 'postsAuth'),\n        validation: createModuleImport(resolve('.\u002Fvalidation'), 'postsValidation'),\n        hooks: createModuleImport(resolve('.\u002Fhooks'), 'postsHooks'),\n        hiddenFields: ['internalNotes'],\n        protectedFields: ['authorId'],\n      })\n    })\n  },\n})\n",[536,1282,1283,1289,1318,1337,1343,1355,1378,1398,1432,1465,1489,1527,1565,1603,1641,1662,1683,1691,1699,1704],{"__ignoreMap":550},[554,1284,1285],{"class":556,"line":557},[554,1286,1288],{"class":1287},"sHwdD","\u002F\u002F modules\u002Fblog\u002Findex.ts\n",[554,1290,1291,1294,1296,1299,1301,1304,1307,1310,1312,1315],{"class":556,"line":579},[554,1292,1293],{"class":560},"import",[554,1295,661],{"class":575},[554,1297,1298],{"class":571}," createResolver",[554,1300,673],{"class":575},[554,1302,1303],{"class":571}," defineNuxtModule",[554,1305,1306],{"class":575}," }",[554,1308,1309],{"class":560}," from",[554,1311,626],{"class":575},[554,1313,1314],{"class":595},"@nuxt\u002Fkit",[554,1316,1317],{"class":575},"'\n",[554,1319,1320,1322,1324,1327,1329,1331,1333,1335],{"class":556,"line":607},[554,1321,1293],{"class":560},[554,1323,661],{"class":575},[554,1325,1326],{"class":571}," createModuleImport",[554,1328,1306],{"class":575},[554,1330,1309],{"class":560},[554,1332,626],{"class":575},[554,1334,596],{"class":595},[554,1336,1317],{"class":575},[554,1338,1339],{"class":556,"line":618},[554,1340,1342],{"emptyLinePlaceholder":1341},true,"\n",[554,1344,1345,1347,1349,1351,1353],{"class":556,"line":636},[554,1346,561],{"class":560},[554,1348,564],{"class":560},[554,1350,1303],{"class":567},[554,1352,572],{"class":571},[554,1354,576],{"class":575},[554,1356,1357,1360,1362,1364,1367,1369,1371,1374,1376],{"class":556,"line":653},[554,1358,1359],{"class":582},"  meta",[554,1361,586],{"class":575},[554,1363,661],{"class":575},[554,1365,1366],{"class":582}," name",[554,1368,586],{"class":575},[554,1370,626],{"class":575},[554,1372,1373],{"class":595},"blog",[554,1375,592],{"class":575},[554,1377,684],{"class":575},[554,1379,1380,1383,1385,1389,1391,1394,1396],{"class":556,"line":687},[554,1381,1382],{"class":582},"  setup",[554,1384,572],{"class":575},[554,1386,1388],{"class":1387},"sHdIc","_",[554,1390,673],{"class":575},[554,1392,1393],{"class":1387}," nuxt",[554,1395,543],{"class":575},[554,1397,615],{"class":575},[554,1399,1400,1404,1406,1409,1411,1414,1416,1418,1420,1422,1425,1427,1430],{"class":556,"line":722},[554,1401,1403],{"class":1402},"spNyl","    const",[554,1405,661],{"class":575},[554,1407,1408],{"class":571}," resolve",[554,1410,1306],{"class":575},[554,1412,1413],{"class":575}," =",[554,1415,1298],{"class":567},[554,1417,572],{"class":582},[554,1419,1293],{"class":560},[554,1421,529],{"class":575},[554,1423,1424],{"class":571},"meta",[554,1426,529],{"class":575},[554,1428,1429],{"class":571},"url",[554,1431,734],{"class":582},[554,1433,1434,1437,1439,1442,1444,1446,1448,1450,1452,1455,1458,1460,1463],{"class":556,"line":728},[554,1435,1436],{"class":571},"    nuxt",[554,1438,529],{"class":575},[554,1440,1441],{"class":567},"hook",[554,1443,572],{"class":582},[554,1445,592],{"class":575},[554,1447,1276],{"class":595},[554,1449,592],{"class":575},[554,1451,673],{"class":575},[554,1453,1454],{"class":575}," (",[554,1456,1457],{"class":1387},"registry",[554,1459,543],{"class":575},[554,1461,1462],{"class":1402}," =>",[554,1464,615],{"class":575},[554,1466,1468,1471,1473,1476,1478,1480,1483,1485,1487],{"class":556,"line":1467},10,[554,1469,1470],{"class":571},"      registry",[554,1472,529],{"class":575},[554,1474,1475],{"class":567},"register",[554,1477,572],{"class":582},[554,1479,592],{"class":575},[554,1481,1482],{"class":595},"posts",[554,1484,592],{"class":575},[554,1486,673],{"class":575},[554,1488,615],{"class":575},[554,1490,1492,1495,1497,1499,1501,1504,1506,1508,1511,1513,1515,1517,1519,1521,1523,1525],{"class":556,"line":1491},11,[554,1493,1494],{"class":582},"        schema",[554,1496,586],{"class":575},[554,1498,1326],{"class":567},[554,1500,572],{"class":582},[554,1502,1503],{"class":567},"resolve",[554,1505,572],{"class":582},[554,1507,592],{"class":575},[554,1509,1510],{"class":595},".\u002Fschema",[554,1512,592],{"class":575},[554,1514,543],{"class":582},[554,1516,673],{"class":575},[554,1518,626],{"class":575},[554,1520,1482],{"class":595},[554,1522,592],{"class":575},[554,1524,543],{"class":582},[554,1526,604],{"class":575},[554,1528,1530,1533,1535,1537,1539,1541,1543,1545,1548,1550,1552,1554,1556,1559,1561,1563],{"class":556,"line":1529},12,[554,1531,1532],{"class":582},"        authorization",[554,1534,586],{"class":575},[554,1536,1326],{"class":567},[554,1538,572],{"class":582},[554,1540,1503],{"class":567},[554,1542,572],{"class":582},[554,1544,592],{"class":575},[554,1546,1547],{"class":595},".\u002Fauth",[554,1549,592],{"class":575},[554,1551,543],{"class":582},[554,1553,673],{"class":575},[554,1555,626],{"class":575},[554,1557,1558],{"class":595},"postsAuth",[554,1560,592],{"class":575},[554,1562,543],{"class":582},[554,1564,604],{"class":575},[554,1566,1568,1571,1573,1575,1577,1579,1581,1583,1586,1588,1590,1592,1594,1597,1599,1601],{"class":556,"line":1567},13,[554,1569,1570],{"class":582},"        validation",[554,1572,586],{"class":575},[554,1574,1326],{"class":567},[554,1576,572],{"class":582},[554,1578,1503],{"class":567},[554,1580,572],{"class":582},[554,1582,592],{"class":575},[554,1584,1585],{"class":595},".\u002Fvalidation",[554,1587,592],{"class":575},[554,1589,543],{"class":582},[554,1591,673],{"class":575},[554,1593,626],{"class":575},[554,1595,1596],{"class":595},"postsValidation",[554,1598,592],{"class":575},[554,1600,543],{"class":582},[554,1602,604],{"class":575},[554,1604,1606,1609,1611,1613,1615,1617,1619,1621,1624,1626,1628,1630,1632,1635,1637,1639],{"class":556,"line":1605},14,[554,1607,1608],{"class":582},"        hooks",[554,1610,586],{"class":575},[554,1612,1326],{"class":567},[554,1614,572],{"class":582},[554,1616,1503],{"class":567},[554,1618,572],{"class":582},[554,1620,592],{"class":575},[554,1622,1623],{"class":595},".\u002Fhooks",[554,1625,592],{"class":575},[554,1627,543],{"class":582},[554,1629,673],{"class":575},[554,1631,626],{"class":575},[554,1633,1634],{"class":595},"postsHooks",[554,1636,592],{"class":575},[554,1638,543],{"class":582},[554,1640,604],{"class":575},[554,1642,1644,1647,1649,1651,1653,1656,1658,1660],{"class":556,"line":1643},15,[554,1645,1646],{"class":582},"        hiddenFields",[554,1648,586],{"class":575},[554,1650,589],{"class":582},[554,1652,592],{"class":575},[554,1654,1655],{"class":595},"internalNotes",[554,1657,592],{"class":575},[554,1659,601],{"class":582},[554,1661,604],{"class":575},[554,1663,1665,1668,1670,1672,1674,1677,1679,1681],{"class":556,"line":1664},16,[554,1666,1667],{"class":582},"        protectedFields",[554,1669,586],{"class":575},[554,1671,589],{"class":582},[554,1673,592],{"class":575},[554,1675,1676],{"class":595},"authorId",[554,1678,592],{"class":575},[554,1680,601],{"class":582},[554,1682,604],{"class":575},[554,1684,1686,1689],{"class":556,"line":1685},17,[554,1687,1688],{"class":575},"      }",[554,1690,734],{"class":582},[554,1692,1694,1697],{"class":556,"line":1693},18,[554,1695,1696],{"class":575},"    }",[554,1698,734],{"class":582},[554,1700,1702],{"class":556,"line":1701},19,[554,1703,725],{"class":575},[554,1705,1707,1709],{"class":556,"line":1706},20,[554,1708,731],{"class":575},[554,1710,734],{"class":571},[736,1712,1713,1725],{},[739,1714,1715],{},[742,1716,1717,1720,1723],{},[745,1718,1719],{},"Field",[745,1721,1722],{},"Required",[745,1724,753],{},[755,1726,1727,1743,1758,1775,1794,1806,1818],{},[742,1728,1729,1734,1737],{},[760,1730,1731],{},[536,1732,1733],{},"schema",[760,1735,1736],{},"✅",[760,1738,1739,1740],{},"The Drizzle table, as ",[536,1741,1742],{},"createModuleImport(path, exportName)",[742,1744,1745,1749,1752],{},[760,1746,1747],{},[536,1748,921],{},[760,1750,1751],{},"effectively ✅",[760,1753,1754,1757],{},[536,1755,1756],{},"ResourceAuthConfig"," (below). Without it every request is refused and the build warns",[742,1759,1760,1765,1767],{},[760,1761,1762],{},[536,1763,1764],{},"validation",[760,1766,782],{},[760,1768,1769,1772,1773],{},[536,1770,1771],{},"{ create?, update?, query? }"," Zod schemas; parts left out are generated from the table. ",[787,1774,251],{"href":252},[742,1776,1777,1781,1783],{},[760,1778,1779],{},[536,1780,1246],{},[760,1782,782],{},[760,1784,1785,1015,1788,1791,1792],{},[536,1786,1787],{},"before*",[536,1789,1790],{},"after*"," lifecycle hooks. ",[787,1793,215],{"href":216},[742,1795,1796,1801,1803],{},[760,1797,1798],{},[536,1799,1800],{},"hiddenFields",[760,1802,782],{},[760,1804,1805],{},"Columns never returned and never usable in filter\u002Fsort\u002Finclude",[742,1807,1808,1813,1815],{},[760,1809,1810],{},[536,1811,1812],{},"protectedFields",[760,1814,782],{},[760,1816,1817],{},"Columns a request body can never set (silently dropped) — on top of the always-protected pk, tenant, soft-delete and audit columns",[742,1819,1820,1825,1827],{},[760,1821,1822],{},[536,1823,1824],{},"metadata",[760,1826,782],{},[760,1828,1829],{},"Free-form, JSON-serializable data for tooling (the admin module reads it)",[518,1831,1832,1247,1834,1247,1836,1083,1838,1840,1841,1844],{},[536,1833,1733],{},[536,1835,921],{},[536,1837,1764],{},[536,1839,1246],{}," must be ",[536,1842,1843],{},"createModuleImport()"," references: the registry is\ngenerated as code, so an inline function or Zod schema cannot be carried into it — passing one fails the build.",[518,1846,1847,1848,1851,1852,1855,1856,1859,1860,1863,1864,1866,1867,1870],{},"The resource ",[928,1849,1850],{},"name"," is the URL segment (",[536,1853,1854],{},"\u002Fapi\u002Fposts",") and the key used everywhere else: in ",[536,1857,1858],{},"permissions.m2m",", in\n",[536,1861,1862],{},"autoApi.authorization",", in ",[536,1865,1189],{},", in the composables (",[536,1868,1869],{},"useAutoApiList('posts')",").",[1872,1873,1875],"callout",{"icon":1874},"i-lucide-triangle-alert",[518,1876,1877,1878,1454,1881,1247,1884,1247,1887,1890,1891,1894,1895,1898,1899,1902,1903,529],{},"Files loaded through ",[536,1879,1880],{},"createModuleImport",[536,1882,1883],{},"auth.ts",[536,1885,1886],{},"hooks.ts",[536,1888,1889],{},"validation.ts"," and everything they import) are\n",[928,1892,1893],{},"not"," processed by Nitro's auto-imports: import what you use explicitly, read config from ",[536,1896,1897],{},"ctx.runtimeConfig","\nrather than ",[536,1900,1901],{},"useRuntimeConfig()",", and avoid extensionless relative runtime imports — import from package subpaths\nor use ",[536,1904,1905],{},"import type",[531,1907,1909,1910,543],{"id":1908},"authorization-resourceauthconfig","Authorization (",[536,1911,1756],{},[545,1913,1915],{"className":547,"code":1914,"language":549,"meta":550,"style":550},"export const postsAuth: ResourceAuthConfig = {\n  permissions: {\n    read, create, update, delete, \u002F\u002F PermissionValue — undeclared = denied\n    aggregate, \u002F\u002F → read\n    restore, purge, viewDeleted, \u002F\u002F → update \u002F delete \u002F restore\n    m2m: { requireUpdateOnRelated, requireUpdateToLink, relations: { [relation]: { check } } },\n  },\n  listFilter: (table, ctx) => SQL | undefined, \u002F\u002F row visibility, every route\n  objectLevel: (row, ctx) => boolean, \u002F\u002F per row; list rows failing it are dropped\n  fields: { [column]: { read?: PermissionValue, write?: PermissionValue } },\n  softDelete: { cascade: 'auto' | 'off', retentionDays: number, restore, purge, viewDeleted },\n  custom: { [endpointName]: { permissions: { read, create, update, delete } } },\n}\n",[536,1916,1917,1937,1946,1971,1981,2001,2047,2051,2083,2111,2153,2211,2260],{"__ignoreMap":550},[554,1918,1919,1921,1924,1927,1929,1933,1935],{"class":556,"line":557},[554,1920,561],{"class":560},[554,1922,1923],{"class":1402}," const",[554,1925,1926],{"class":571}," postsAuth",[554,1928,586],{"class":575},[554,1930,1932],{"class":1931},"sBMFI"," ResourceAuthConfig",[554,1934,1413],{"class":575},[554,1936,615],{"class":575},[554,1938,1939,1942,1944],{"class":556,"line":579},[554,1940,1941],{"class":582},"  permissions",[554,1943,586],{"class":575},[554,1945,615],{"class":575},[554,1947,1948,1951,1953,1956,1958,1961,1963,1966,1968],{"class":556,"line":607},[554,1949,1950],{"class":571},"    read",[554,1952,673],{"class":575},[554,1954,1955],{"class":571}," create",[554,1957,673],{"class":575},[554,1959,1960],{"class":571}," update",[554,1962,673],{"class":575},[554,1964,1965],{"class":571}," delete",[554,1967,673],{"class":575},[554,1969,1970],{"class":1287}," \u002F\u002F PermissionValue — undeclared = denied\n",[554,1972,1973,1976,1978],{"class":556,"line":618},[554,1974,1975],{"class":571},"    aggregate",[554,1977,673],{"class":575},[554,1979,1980],{"class":1287}," \u002F\u002F → read\n",[554,1982,1983,1986,1988,1991,1993,1996,1998],{"class":556,"line":636},[554,1984,1985],{"class":571},"    restore",[554,1987,673],{"class":575},[554,1989,1990],{"class":571}," purge",[554,1992,673],{"class":575},[554,1994,1995],{"class":571}," viewDeleted",[554,1997,673],{"class":575},[554,1999,2000],{"class":1287}," \u002F\u002F → update \u002F delete \u002F restore\n",[554,2002,2003,2006,2008,2010,2013,2015,2018,2020,2023,2025,2027,2029,2032,2034,2036,2038,2041,2043,2045],{"class":556,"line":653},[554,2004,2005],{"class":582},"    m2m",[554,2007,586],{"class":575},[554,2009,661],{"class":575},[554,2011,2012],{"class":571}," requireUpdateOnRelated",[554,2014,673],{"class":575},[554,2016,2017],{"class":571}," requireUpdateToLink",[554,2019,673],{"class":575},[554,2021,2022],{"class":582}," relations",[554,2024,586],{"class":575},[554,2026,661],{"class":575},[554,2028,589],{"class":582},[554,2030,2031],{"class":571},"relation",[554,2033,601],{"class":582},[554,2035,586],{"class":575},[554,2037,661],{"class":575},[554,2039,2040],{"class":571}," check ",[554,2042,731],{"class":575},[554,2044,1306],{"class":575},[554,2046,684],{"class":575},[554,2048,2049],{"class":556,"line":687},[554,2050,725],{"class":575},[554,2052,2053,2056,2058,2060,2062,2064,2067,2069,2071,2074,2077,2080],{"class":556,"line":722},[554,2054,2055],{"class":567},"  listFilter",[554,2057,586],{"class":575},[554,2059,1454],{"class":575},[554,2061,736],{"class":1387},[554,2063,673],{"class":575},[554,2065,2066],{"class":1387}," ctx",[554,2068,543],{"class":575},[554,2070,1462],{"class":1402},[554,2072,2073],{"class":571}," SQL ",[554,2075,2076],{"class":575},"|",[554,2078,2079],{"class":575}," undefined,",[554,2081,2082],{"class":1287}," \u002F\u002F row visibility, every route\n",[554,2084,2085,2088,2090,2092,2095,2097,2099,2101,2103,2106,2108],{"class":556,"line":728},[554,2086,2087],{"class":567},"  objectLevel",[554,2089,586],{"class":575},[554,2091,1454],{"class":575},[554,2093,2094],{"class":1387},"row",[554,2096,673],{"class":575},[554,2098,2066],{"class":1387},[554,2100,543],{"class":575},[554,2102,1462],{"class":1402},[554,2104,2105],{"class":571}," boolean",[554,2107,673],{"class":575},[554,2109,2110],{"class":1287}," \u002F\u002F per row; list rows failing it are dropped\n",[554,2112,2113,2116,2118,2120,2122,2125,2127,2129,2131,2134,2136,2139,2141,2144,2146,2149,2151],{"class":556,"line":1467},[554,2114,2115],{"class":582},"  fields",[554,2117,586],{"class":575},[554,2119,661],{"class":575},[554,2121,589],{"class":582},[554,2123,2124],{"class":571},"column",[554,2126,601],{"class":582},[554,2128,586],{"class":575},[554,2130,661],{"class":575},[554,2132,2133],{"class":571}," read?",[554,2135,586],{"class":575},[554,2137,2138],{"class":571}," PermissionValue",[554,2140,673],{"class":575},[554,2142,2143],{"class":571}," write?",[554,2145,586],{"class":575},[554,2147,2148],{"class":571}," PermissionValue ",[554,2150,731],{"class":575},[554,2152,684],{"class":575},[554,2154,2155,2158,2160,2162,2165,2167,2169,2172,2174,2177,2179,2182,2184,2186,2189,2191,2194,2196,2199,2201,2203,2205,2208],{"class":556,"line":1491},[554,2156,2157],{"class":582},"  softDelete",[554,2159,586],{"class":575},[554,2161,661],{"class":575},[554,2163,2164],{"class":582}," cascade",[554,2166,586],{"class":575},[554,2168,626],{"class":575},[554,2170,2171],{"class":595},"auto",[554,2173,592],{"class":575},[554,2175,2176],{"class":575}," |",[554,2178,626],{"class":575},[554,2180,2181],{"class":595},"off",[554,2183,592],{"class":575},[554,2185,673],{"class":575},[554,2187,2188],{"class":582}," retentionDays",[554,2190,586],{"class":575},[554,2192,2193],{"class":571}," number",[554,2195,673],{"class":575},[554,2197,2198],{"class":571}," restore",[554,2200,673],{"class":575},[554,2202,1990],{"class":571},[554,2204,673],{"class":575},[554,2206,2207],{"class":571}," viewDeleted ",[554,2209,2210],{"class":575},"},\n",[554,2212,2213,2216,2218,2220,2222,2225,2227,2229,2231,2234,2236,2238,2241,2243,2245,2247,2249,2251,2254,2256,2258],{"class":556,"line":1529},[554,2214,2215],{"class":582},"  custom",[554,2217,586],{"class":575},[554,2219,661],{"class":575},[554,2221,589],{"class":582},[554,2223,2224],{"class":571},"endpointName",[554,2226,601],{"class":582},[554,2228,586],{"class":575},[554,2230,661],{"class":575},[554,2232,2233],{"class":582}," permissions",[554,2235,586],{"class":575},[554,2237,661],{"class":575},[554,2239,2240],{"class":571}," read",[554,2242,673],{"class":575},[554,2244,1955],{"class":571},[554,2246,673],{"class":575},[554,2248,1960],{"class":571},[554,2250,673],{"class":575},[554,2252,2253],{"class":571}," delete ",[554,2255,731],{"class":575},[554,2257,1306],{"class":575},[554,2259,684],{"class":575},[554,2261,2262],{"class":556,"line":1567},[554,2263,2264],{"class":575},"}\n",[518,2266,2267,2270,2271,2273,2274,2273,2276,2273,2279,2273,2282,2285,2286,2290,2291,529],{},[536,2268,2269],{},"PermissionValue"," = ",[536,2272,979],{}," · ",[536,2275,843],{},[536,2277,2278],{},"'perm'",[536,2280,2281],{},"['a', 'b']",[536,2283,2284],{},"(ctx) => boolean | Promise\u003Cboolean>"," · an object\nhandled by a ",[787,2287,2289],{"href":2288},"\u002Fdocs\u002Fnuxt-auto\u002Fauto-api\u002Fpermissions-cookbook#declarative-policies-with-a-permission-evaluator","registered evaluator",".\nRecipes: ",[787,2292,243],{"href":244},[531,2294,2296],{"id":2295},"generated-routes","Generated routes",[518,2298,2299,2300,2302,2303,2305],{},"For a resource ",[536,2301,1482],{}," (prefix ",[536,2304,629],{},"):",[736,2307,2308,2318],{},[739,2309,2310],{},[742,2311,2312,2315],{},[745,2313,2314],{},"Route",[745,2316,2317],{},"Operation → permission",[755,2319,2320,2333,2345,2358,2371,2391,2404,2420,2432,2444,2472,2485],{},[742,2321,2322,2327],{},[760,2323,2324],{},[536,2325,2326],{},"GET \u002Fapi\u002Fposts",[760,2328,2329,2330],{},"list → ",[536,2331,2332],{},"read",[742,2334,2335,2340],{},[760,2336,2337],{},[536,2338,2339],{},"GET \u002Fapi\u002Fposts\u002F:id",[760,2341,2342,2343],{},"get → ",[536,2344,2332],{},[742,2346,2347,2352],{},[760,2348,2349],{},[536,2350,2351],{},"POST \u002Fapi\u002Fposts",[760,2353,2354,2355],{},"create → ",[536,2356,2357],{},"create",[742,2359,2360,2365],{},[760,2361,2362],{},[536,2363,2364],{},"PATCH \u002Fapi\u002Fposts\u002F:id",[760,2366,2367,2368],{},"update → ",[536,2369,2370],{},"update",[742,2372,2373,2378],{},[760,2374,2375],{},[536,2376,2377],{},"DELETE \u002Fapi\u002Fposts\u002F:id",[760,2379,2380,2381,1454,2384,2387,2388,543],{},"delete → ",[536,2382,2383],{},"delete",[536,2385,2386],{},"?force=true"," → ",[536,2389,2390],{},"purge",[742,2392,2393,2398],{},[760,2394,2395],{},[536,2396,2397],{},"POST \u002Fapi\u002Fposts\u002F:id\u002Frestore",[760,2399,2400,2401],{},"→ ",[536,2402,2403],{},"restore",[742,2405,2406,2411],{},[760,2407,2408],{},[536,2409,2410],{},"POST · PATCH · DELETE \u002Fapi\u002Fposts\u002Fbulk",[760,2412,2400,2413,2273,2415,2273,2417,2419],{},[536,2414,2357],{},[536,2416,2370],{},[536,2418,2383],{}," per item",[742,2421,2422,2427],{},[760,2423,2424],{},[536,2425,2426],{},"GET \u002Fapi\u002Fposts\u002Faggregate",[760,2428,2400,2429],{},[536,2430,2431],{},"aggregate",[742,2433,2434,2439],{},[760,2435,2436],{},[536,2437,2438],{},"GET \u002Fapi\u002Fposts\u002F:id\u002Frelations\u002F:relation",[760,2440,2400,2441,2443],{},[536,2442,2332],{}," on both",[742,2445,2446,2461],{},[760,2447,2448,2451,2452,1247,2455,1247,2458],{},[536,2449,2450],{},"POST \u002Fapi\u002Fposts\u002F:id\u002Frelations\u002F:relation"," (sync), ",[536,2453,2454],{},"\u002Fadd",[536,2456,2457],{},"DELETE …\u002Fremove",[536,2459,2460],{},"POST \u002Fapi\u002Fposts\u002F:id\u002Frelations\u002Fbatch",[760,2462,2400,2463,2465,2466,2468,2469,2471],{},[536,2464,2370],{}," here, ",[536,2467,2332],{}," (or ",[536,2470,2370],{},") on the related resource",[742,2473,2474,2482],{},[760,2475,2476,1247,2479],{},[536,2477,2478],{},"GET \u002Fapi\u002Fposts\u002Fpermissions",[536,2480,2481],{},"GET \u002Fapi\u002Fpermissions",[760,2483,2484],{},"the caller's permissions",[742,2486,2487,2498],{},[760,2488,2489,1247,2492,1247,2495],{},[536,2490,2491],{},"GET \u002Fapi\u002F_m2m\u002Fjunctions",[536,2493,2494],{},"\u002Fis-junction\u002F:table",[536,2496,2497],{},"\u002Fdetect\u002F:resource",[760,2499,2500],{},"signed-in callers",[531,2502,2504],{"id":2503},"package-entry-points","Package entry points",[736,2506,2507,2517],{},[739,2508,2509],{},[742,2510,2511,2514],{},[745,2512,2513],{},"Import",[745,2515,2516],{},"Contents",[755,2518,2519,2537,2549,2574,2590,2602],{},[742,2520,2521,2525],{},[760,2522,2523],{},[536,2524,596],{},[760,2526,2527,2528,2530,2531,1247,2533,2536],{},"the Nuxt module, ",[536,2529,1880],{},", types (",[536,2532,1756],{},[536,2534,2535],{},"HandlerContext",", …)",[742,2538,2539,2544],{},[760,2540,2541],{},[536,2542,2543],{},"@websideproject\u002Fnuxt-auto-api\u002Futils",[760,2545,2546,2547],{},"server utils — also auto-imported in server code. ",[787,2548,231],{"href":232},[742,2550,2551,2556],{},[760,2552,2553],{},[536,2554,2555],{},"@websideproject\u002Fnuxt-auto-api\u002Fplugins",[760,2557,2558,2559,1247,2562,1247,2565,1247,2568,1247,2571],{},"built-in plugins, ",[536,2560,2561],{},"defineAutoApiPlugin",[536,2563,2564],{},"addContextExtender",[536,2566,2567],{},"addResourceHook",[536,2569,2570],{},"addGlobalHook",[536,2572,2573],{},"registerPermissionEvaluator",[742,2575,2576,2581],{},[760,2577,2578],{},[536,2579,2580],{},"@websideproject\u002Fnuxt-auto-api\u002Fdatabase",[760,2582,2583,1247,2586,2589],{},[536,2584,2585],{},"initializeDatabase",[536,2587,2588],{},"getDatabaseAdapter",", adapters",[742,2591,2592,2597],{},[760,2593,2594],{},[536,2595,2596],{},"@websideproject\u002Fnuxt-auto-api\u002Fcomposables",[760,2598,2599,2600],{},"client composables and their types — also auto-imported. ",[787,2601,283],{"href":284},[742,2603,2604,2609],{},[760,2605,2606],{},[536,2607,2608],{},"@websideproject\u002Fnuxt-auto-api\u002Fschema\u002F{sqlite,pg,mysql}",[760,2610,2611],{},[787,2612,2613],{"href":240},"schema presets",[2615,2616,2617],"style",{},"html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}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 .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}",{"title":550,"searchDepth":579,"depth":579,"links":2619},[2620,2622,2623,2625,2626],{"id":533,"depth":579,"text":2621},"Module options (autoApi in nuxt.config.ts)",{"id":1269,"depth":579,"text":1270},{"id":1908,"depth":579,"text":2624},"Authorization (ResourceAuthConfig)",{"id":2295,"depth":579,"text":2296},{"id":2503,"depth":579,"text":2504},"Every module option, every resource registration field and every authorization key in one place. The guides\nexplain when to use them; this page lists what exists.","md",null,{},{"title":267,"description":2627},"y8JlPp_YedYG5uB5NBXZ42UGA5LzC0Bwx5ufMvruPDY",[2634,2636],{"title":263,"path":264,"stem":265,"description":2635,"children":-1},"This document lists all shipped plugins for @websideproject\u002Fnuxt-auto-api.",{"title":271,"path":272,"stem":273,"description":2637,"children":-1},"Sometimes a generated route is not enough — a resource needs an extra action (\u002Fusers\u002F:id\u002Fstats,\n\u002Forders\u002F:id\u002Fcheckout) or a route with custom logic. Write it as a regular Nitro file with\ncreateEndpoint() bound to the resource: the auto-api pipeline (authentication,\nplugin middleware, the resource's permission gate, validation) runs before your handler.",1791106763716]