[{"data":1,"prerenderedAt":1724},["ShallowReactive",2],{"navigation":3,"\u002Fapi\u002Fconfiguration":342,"\u002Fapi\u002Fconfiguration-surround":1719},[4,14,36,69,140,325],{"title":5,"path":6,"stem":7,"children":8},"Introduction","\u002Fgetting-started","1.getting-started\u002F1.index",[9,10],{"title":5,"path":6,"stem":7},{"title":11,"path":12,"stem":13},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation",{"title":15,"path":16,"stem":17,"children":18,"page":35},"Guides","\u002Fguides","2.guides",[19,23,27,31],{"title":20,"path":21,"stem":22},"Your First Layout","\u002Fguides\u002Fyour-first-layout","2.guides\u002F1.your-first-layout",{"title":24,"path":25,"stem":26},"Your First Page Template","\u002Fguides\u002Fyour-first-page-template","2.guides\u002F2.your-first-page-template",{"title":28,"path":29,"stem":30},"Your First Component","\u002Fguides\u002Fyour-first-component","2.guides\u002F3.your-first-component",{"title":32,"path":33,"stem":34},"Alternative UI Variants","\u002Fguides\u002Falternative-ui-variants","2.guides\u002F4.alternative-ui-variants",false,{"title":37,"path":38,"stem":39,"children":40,"page":35},"Core Concepts","\u002Fcore-concepts","3.core-concepts",[41,45,49,53,57,61,65],{"title":42,"path":43,"stem":44},"How It All Works","\u002Fcore-concepts\u002Farchitecture","3.core-concepts\u002F1.architecture",{"title":46,"path":47,"stem":48},"The Data Model","\u002Fcore-concepts\u002Fthe-data-model","3.core-concepts\u002F2.the-data-model",{"title":50,"path":51,"stem":52},"Layouts & Pages","\u002Fcore-concepts\u002Flayouts-and-pages","3.core-concepts\u002F3.layouts-and-pages",{"title":54,"path":55,"stem":56},"Dynamic Pages","\u002Fcore-concepts\u002Fdynamic-pages","3.core-concepts\u002F4.dynamic-pages",{"title":58,"path":59,"stem":60},"Components","\u002Fcore-concepts\u002Fcomponents","3.core-concepts\u002F5.components",{"title":62,"path":63,"stem":64},"Draft & Publish Workflow","\u002Fcore-concepts\u002Fdraft-and-publish","3.core-concepts\u002F6.draft-and-publish",{"title":66,"path":67,"stem":68},"The Admin Panel","\u002Fcore-concepts\u002Fadmin-panel","3.core-concepts\u002F7.admin-panel",{"title":70,"path":71,"stem":72,"children":73,"page":35},"Api","\u002Fapi","4.api",[74,78,116,120,124,128,132,136],{"title":75,"path":76,"stem":77},"Bundle Setup","\u002Fapi\u002Fbundle-setup","4.api\u002F1.bundle-setup",{"title":58,"path":79,"stem":80,"children":81,"page":35},"\u002Fapi\u002Fcomponents","4.api\u002F2.components",[82,86,103],{"title":83,"path":84,"stem":85},"Creating Components","\u002Fapi\u002Fcomponents\u002Fcreating-components","4.api\u002F2.components\u002F1.creating-components",{"title":87,"path":88,"stem":89,"children":90,"page":35},"Annotations","\u002Fapi\u002Fcomponents\u002Fannotations","4.api\u002F2.components\u002F2.annotations",[91,95,99],{"title":92,"path":93,"stem":94},"Publishable","\u002Fapi\u002Fcomponents\u002Fannotations\u002Fpublishable","4.api\u002F2.components\u002F2.annotations\u002F1.publishable",{"title":96,"path":97,"stem":98},"Uploadable","\u002Fapi\u002Fcomponents\u002Fannotations\u002Fuploadable","4.api\u002F2.components\u002F2.annotations\u002F2.uploadable",{"title":100,"path":101,"stem":102},"Timestamped","\u002Fapi\u002Fcomponents\u002Fannotations\u002Ftimestamped","4.api\u002F2.components\u002F2.annotations\u002F3.timestamped",{"title":104,"path":105,"stem":106,"children":107,"page":35},"Built Ins","\u002Fapi\u002Fcomponents\u002Fbuilt-ins","4.api\u002F2.components\u002F3.built-ins",[108,112],{"title":109,"path":110,"stem":111},"Collection Component","\u002Fapi\u002Fcomponents\u002Fbuilt-ins\u002Fcollection-component","4.api\u002F2.components\u002F3.built-ins\u002F1.collection-component",{"title":113,"path":114,"stem":115},"Form Component","\u002Fapi\u002Fcomponents\u002Fbuilt-ins\u002Fform-component","4.api\u002F2.components\u002F3.built-ins\u002F2.form-component",{"title":117,"path":118,"stem":119},"Dynamic & Nested Pages","\u002Fapi\u002Fdynamic-pages","4.api\u002F3.dynamic-pages",{"title":121,"path":122,"stem":123},"Users & Security","\u002Fapi\u002Fusers-and-security","4.api\u002F4.users-and-security",{"title":125,"path":126,"stem":127},"Data Fixtures","\u002Fapi\u002Fdata-fixtures","4.api\u002F5.data-fixtures",{"title":129,"path":130,"stem":131},"Configuration Reference","\u002Fapi\u002Fconfiguration","4.api\u002F6.configuration",{"title":133,"path":134,"stem":135},"Console Commands","\u002Fapi\u002Fconsole-commands","4.api\u002F7.console-commands",{"title":137,"path":138,"stem":139},"Debugging & Profiler","\u002Fapi\u002Fdebugging","4.api\u002F8.debugging",{"title":141,"path":142,"stem":143,"children":144,"page":35},"Nuxt Module","\u002Fnuxt-module","5.nuxt-module",[145,149,162,178,203,207,279,304,308],{"title":146,"path":147,"stem":148},"Module Setup","\u002Fnuxt-module\u002Fmodule-setup","5.nuxt-module\u002F1.module-setup",{"title":150,"path":151,"stem":152,"children":153,"page":35},"Configuration","\u002Fnuxt-module\u002Fconfiguration","5.nuxt-module\u002F2.configuration",[154,158],{"title":155,"path":156,"stem":157},"Nuxt Config","\u002Fnuxt-module\u002Fconfiguration\u002Fnuxt-config","5.nuxt-module\u002F2.configuration\u002F1.nuxt-config",{"title":159,"path":160,"stem":161},"Site Config & SEO","\u002Fnuxt-module\u002Fconfiguration\u002Fsite-config-and-seo","5.nuxt-module\u002F2.configuration\u002F2.site-config-and-seo",{"title":163,"path":164,"stem":165,"children":166,"page":35},"Building Your Ui","\u002Fnuxt-module\u002Fbuilding-your-ui","5.nuxt-module\u002F3.building-your-ui",[167,171,175],{"title":168,"path":169,"stem":170},"Layouts","\u002Fnuxt-module\u002Fbuilding-your-ui\u002Fcreating-layouts","5.nuxt-module\u002F3.building-your-ui\u002F1.creating-layouts",{"title":172,"path":173,"stem":174},"Page Templates","\u002Fnuxt-module\u002Fbuilding-your-ui\u002Fcreating-page-templates","5.nuxt-module\u002F3.building-your-ui\u002F2.creating-page-templates",{"title":83,"path":176,"stem":177},"\u002Fnuxt-module\u002Fbuilding-your-ui\u002Fcreating-components","5.nuxt-module\u002F3.building-your-ui\u002F3.creating-components",{"title":179,"path":180,"stem":181,"children":182,"page":35},"Cwa Components","\u002Fnuxt-module\u002Fcwa-components","5.nuxt-module\u002F4.cwa-components",[183,187,191,195,199],{"title":184,"path":185,"stem":186},"\u003CCwaComponentGroup \u002F>","\u002Fnuxt-module\u002Fcwa-components\u002Fcwa-component-group","5.nuxt-module\u002F4.cwa-components\u002F1.cwa-component-group",{"title":188,"path":189,"stem":190},"\u003CCwaPage \u002F>","\u002Fnuxt-module\u002Fcwa-components\u002Fcwa-page","5.nuxt-module\u002F4.cwa-components\u002F2.cwa-page",{"title":192,"path":193,"stem":194},"\u003CCwaLink \u002F>","\u002Fnuxt-module\u002Fcwa-components\u002Fcwa-link","5.nuxt-module\u002F4.cwa-components\u002F3.cwa-link",{"title":196,"path":197,"stem":198},"\u003CCwaImage \u002F>","\u002Fnuxt-module\u002Fcwa-components\u002Fcwa-image","5.nuxt-module\u002F4.cwa-components\u002F4.cwa-image",{"title":200,"path":201,"stem":202},"\u003CCwaDefaultLayout \u002F>","\u002Fnuxt-module\u002Fcwa-components\u002Fcwa-default-layout","5.nuxt-module\u002F4.cwa-components\u002F5.cwa-default-layout",{"title":204,"path":205,"stem":206},"The useCwa() API","\u002Fnuxt-module\u002Fcwa-api","5.nuxt-module\u002F5.cwa-api",{"title":208,"path":209,"stem":210,"children":211,"page":35},"Composables","\u002Fnuxt-module\u002Fcomposables","5.nuxt-module\u002F6.composables",[212,245,262],{"title":213,"path":214,"stem":215,"children":216,"page":35},"Component","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent","5.nuxt-module\u002F6.composables\u002F1.component",[217,221,225,229,233,237,241],{"title":218,"path":219,"stem":220},"Resource","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-resource","5.nuxt-module\u002F6.composables\u002F1.component\u002F1.use-cwa-resource",{"title":222,"path":223,"stem":224},"Collection Resource","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-collection-resource","5.nuxt-module\u002F6.composables\u002F1.component\u002F2.use-cwa-collection-resource",{"title":226,"path":227,"stem":228},"Image Resource","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-image-resource","5.nuxt-module\u002F6.composables\u002F1.component\u002F3.use-cwa-image-resource",{"title":230,"path":231,"stem":232},"Form","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-form","5.nuxt-module\u002F6.composables\u002F1.component\u002F4.use-cwa-form",{"title":234,"path":235,"stem":236},"Form Input","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-form-input","5.nuxt-module\u002F6.composables\u002F1.component\u002F5.use-cwa-form-input",{"title":238,"path":239,"stem":240},"Form Repeated","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-form-repeated","5.nuxt-module\u002F6.composables\u002F1.component\u002F6.use-cwa-form-repeated",{"title":242,"path":243,"stem":244},"Form Collection","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-form-collection","5.nuxt-module\u002F6.composables\u002F1.component\u002F7.use-cwa-form-collection",{"title":246,"path":247,"stem":248,"children":249,"page":35},"Admin Manager","\u002Fnuxt-module\u002Fcomposables\u002Fadmin-manager","5.nuxt-module\u002F6.composables\u002F2.admin-manager",[250,254,258],{"title":251,"path":252,"stem":253},"Manager Tab","\u002Fnuxt-module\u002Fcomposables\u002Fadmin-manager\u002Fuse-cwa-resource-manager-tab","5.nuxt-module\u002F6.composables\u002F2.admin-manager\u002F1.use-cwa-resource-manager-tab",{"title":255,"path":256,"stem":257},"Resource Model","\u002Fnuxt-module\u002Fcomposables\u002Fadmin-manager\u002Fuse-cwa-resource-model","5.nuxt-module\u002F6.composables\u002F2.admin-manager\u002F2.use-cwa-resource-model",{"title":259,"path":260,"stem":261},"Resource Upload","\u002Fnuxt-module\u002Fcomposables\u002Fadmin-manager\u002Fuse-cwa-resource-upload","5.nuxt-module\u002F6.composables\u002F2.admin-manager\u002F3.use-cwa-resource-upload",{"title":263,"path":264,"stem":265,"children":266,"page":35},"Utilities","\u002Fnuxt-module\u002Fcomposables\u002Futilities","5.nuxt-module\u002F6.composables\u002F3.utilities",[267,271,275],{"title":268,"path":269,"stem":270},"Resource Endpoint","\u002Fnuxt-module\u002Fcomposables\u002Futilities\u002Fuse-cwa-resource-endpoint","5.nuxt-module\u002F6.composables\u002F3.utilities\u002F1.use-cwa-resource-endpoint",{"title":272,"path":273,"stem":274},"Query Model","\u002Fnuxt-module\u002Fcomposables\u002Futilities\u002Fuse-query-bound-model","5.nuxt-module\u002F6.composables\u002F3.utilities\u002F2.use-query-bound-model",{"title":276,"path":277,"stem":278},"Resource Route","\u002Fnuxt-module\u002Fcomposables\u002Futilities\u002Fuse-cwa-resource-route","5.nuxt-module\u002F6.composables\u002F3.utilities\u002F3.use-cwa-resource-route",{"title":280,"path":281,"stem":282,"children":283,"page":35},"Component Helpers","\u002Fnuxt-module\u002Fcomponent-helpers","5.nuxt-module\u002F7.component-helpers",[284,288,292,296,300],{"title":285,"path":286,"stem":287},"Images & Media","\u002Fnuxt-module\u002Fcomponent-helpers\u002Fimages-and-uploads","5.nuxt-module\u002F7.component-helpers\u002F1.images-and-uploads",{"title":289,"path":290,"stem":291},"Collections & Pagination","\u002Fnuxt-module\u002Fcomponent-helpers\u002Fcollections-and-pagination","5.nuxt-module\u002F7.component-helpers\u002F2.collections-and-pagination",{"title":293,"path":294,"stem":295},"HTML Content","\u002Fnuxt-module\u002Fcomponent-helpers\u002Fhtml-content","5.nuxt-module\u002F7.component-helpers\u002F3.html-content",{"title":297,"path":298,"stem":299},"Real-Time Updates","\u002Fnuxt-module\u002Fcomponent-helpers\u002Freal-time-updates","5.nuxt-module\u002F7.component-helpers\u002F4.real-time-updates",{"title":301,"path":302,"stem":303},"Forms","\u002Fnuxt-module\u002Fcomponent-helpers\u002Fforms","5.nuxt-module\u002F7.component-helpers\u002F5.forms",{"title":305,"path":306,"stem":307},"Authentication","\u002Fnuxt-module\u002Fauthentication","5.nuxt-module\u002F8.authentication",{"title":309,"path":310,"stem":311,"children":312,"page":35},"Cwa Layer","\u002Fnuxt-module\u002Fcwa-layer","5.nuxt-module\u002F9.cwa-layer",[313,317,321],{"title":314,"path":315,"stem":316},"Overview","\u002Fnuxt-module\u002Fcwa-layer\u002Foverview","5.nuxt-module\u002F9.cwa-layer\u002F1.overview",{"title":318,"path":319,"stem":320},"Auth Pages","\u002Fnuxt-module\u002Fcwa-layer\u002Fauth-pages","5.nuxt-module\u002F9.cwa-layer\u002F2.auth-pages",{"title":322,"path":323,"stem":324},"Admin Panel","\u002Fnuxt-module\u002Fcwa-layer\u002Fadmin-panel","5.nuxt-module\u002F9.cwa-layer\u002F3.admin-panel",{"title":326,"path":327,"stem":328,"children":329,"page":35},"Deployment","\u002Fdeployment","6.deployment",[330,334,338],{"title":331,"path":332,"stem":333},"Docker","\u002Fdeployment\u002Fdocker","6.deployment\u002F1.docker",{"title":335,"path":336,"stem":337},"Kubernetes & Helm","\u002Fdeployment\u002Fkubernetes","6.deployment\u002F2.kubernetes",{"title":339,"path":340,"stem":341},"CI\u002FCD","\u002Fdeployment\u002Fci-cd","6.deployment\u002F3.ci-cd",{"id":343,"title":129,"badge":344,"body":347,"description":1713,"extension":1714,"links":1715,"meta":1716,"navigation":399,"path":130,"seo":1717,"stem":131,"__hash__":1718},"docs\u002F4.api\u002F6.configuration.md",{"label":345,"color":346},"Draft","amber",{"type":348,"value":349,"toc":1707},"minimark",[350,367,372,1352,1356,1359,1366,1391,1397,1415,1422,1426,1560,1564,1574,1632,1635,1688,1703],[351,352,353,354,358,359,362,363,366],"p",{},"Full YAML structure with every option, its type, and default value. The minimum required fields are ",[355,356,357],"code",{},"website_name",", ",[355,360,361],{},"user.class_name",", and ",[355,364,365],{},"refresh_token.*",".",[368,369,371],"h2",{"id":370},"full-configuration","Full Configuration",[373,374,379],"pre",{"className":375,"code":376,"language":377,"meta":378,"style":378},"language-yaml shiki shiki-themes github-light github-dark material-theme-palenight","silverback_api_components:\n\n    # Required. Used in email subjects and templates.\n    website_name: My CWA App\n\n    # Table prefix for all bundle-managed tables. Default: '_acb_'\n    table_prefix: '_acb_'\n\n    # Key under which runtime metadata is nested in API responses. Default: '_metadata'\n    metadata_key: '_metadata'\n\n    # ─── User ────────────────────────────────────────────────────────────────\n    user:\n        # Required. Fully-qualified class name of your User entity.\n        class_name: App\\Entity\\User\n\n        email_verification:\n            enabled: true\n            # Whether new users start verified (false = must verify email)\n            default_value: false\n            # Send a verification email when a new user registers\n            verify_on_register: true\n            # Re-send verification when the user changes their email\n            verify_on_change: true\n            # Block login for unverified email addresses\n            deny_unverified_login: true\n            email:\n                # Query param name carrying the redirect path (optional)\n                redirect_path_query: ~\n                # Path with {{ username }} and {{ token }} placeholders\n                default_redirect_path: \u002Fverify-email\u002F{{ username }}\u002F{{ token }}\n                subject: Please verify your email\n\n        new_email_confirmation:\n            email:\n                redirect_path_query: ~\n                default_redirect_path: \u002Fconfirm-new-email\u002F{{ username }}\u002F{{ new_email }}\u002F{{ token }}\n                subject: Please confirm your new email address\n            # Token validity in seconds. Default: 86400 (24 hours)\n            request_timeout_seconds: 86400\n\n        password_reset:\n            email:\n                redirect_path_query: ~\n                default_redirect_path: \u002Freset-password\u002F{{ username }}\u002F{{ token }}\n                subject: Your password reset request\n            # Minimum seconds between reset requests. Default: 8600\n            repeat_ttl_seconds: 8600\n            # Reset token validity in seconds. Default: 3600\n            request_timeout_seconds: 3600\n\n        emails:\n            welcome:\n                enabled: true\n                subject: 'Welcome to {{ website_name }}'\n            user_enabled:\n                enabled: true\n                subject: 'Your account has been enabled'\n            username_changed:\n                enabled: true\n                subject: 'Your username has been updated'\n            password_changed:\n                enabled: true\n                subject: 'Your password has been changed'\n\n    # ─── Publishable ─────────────────────────────────────────────────────────\n    publishable:\n        # Symfony expression: who can read\u002Fwrite draft resources and publish\n        permission: \"is_granted('ROLE_ADMIN')\"\n\n    # ─── Built-in Components ─────────────────────────────────────────────────\n    enabled_components:\n        form: true        # The Form component (Symfony FormType → JSON)\n        collection: true  # The Collection component (resource list proxy)\n\n    # ─── Refresh Tokens ──────────────────────────────────────────────────────\n    refresh_token:\n        # Service ID of the refresh token storage handler\n        handler_id: silverback.api_components.refresh_token.storage.doctrine\n        options:\n            # Your RefreshToken entity class (from the Flex recipe)\n            class: App\\Entity\\RefreshToken\n        # Must match the cookie name in lexik_jwt_authentication.set_cookies\n        cookie_name: api_components\n        # Token lifetime in seconds. Default: 604800 (1 week)\n        ttl: 604800\n        # The user provider alias used in security.yaml\n        database_user_provider: database\n\n    # ─── Mercure ─────────────────────────────────────────────────────────────\n    mercure:\n        # Name of the Mercure hub (if multiple hubs; null = default hub)\n        hub_name: ~\n        cookie:\n            # SameSite attribute for the Mercure cookie. Default: 'strict'\n            samesite: '%env(JWT_COOKIE_SAMESITE)%'\n        # Scope subscriber JWT tokens to resources the current user can access.\n        # Recommended in production. Default: false (all topics subscribed).\n        secure_subscriptions: false\n\n    # ─── Route Security ──────────────────────────────────────────────────────\n    # URL pattern → Symfony security expression. Evaluated per-route.\n    route_security:\n        - { route: '\u002Fuser-area*', security: \"is_granted('ROLE_USER')\" }\n        - { route: '\u002Fadmin*', security: \"is_granted('ROLE_ADMIN')\" }\n\n    # Expression controlling who can access the route manifest\n    routable_security: \"is_granted('ROLE_ADMIN')\"\n","yaml","",[355,380,381,394,401,408,421,426,432,450,455,461,476,481,487,495,501,512,517,525,537,543,554,560,570,576,586,592,602,610,616,628,634,645,656,661,669,676,685,695,705,711,723,728,736,743,752,762,772,778,789,795,805,810,818,826,836,850,858,867,881,889,898,912,920,929,943,948,954,962,968,985,990,996,1004,1018,1031,1036,1042,1050,1056,1067,1075,1081,1092,1098,1109,1115,1126,1132,1143,1148,1154,1162,1168,1178,1186,1192,1207,1213,1219,1229,1234,1240,1246,1254,1295,1327,1332,1338],{"__ignoreMap":378},[382,383,386,390],"span",{"class":384,"line":385},"line",1,[382,387,389],{"class":388},"s-h7I","silverback_api_components",[382,391,393],{"class":392},"sOvfz",":\n",[382,395,397],{"class":384,"line":396},2,[382,398,400],{"emptyLinePlaceholder":399},true,"\n",[382,402,404],{"class":384,"line":403},3,[382,405,407],{"class":406},"sTBSN","    # Required. Used in email subjects and templates.\n",[382,409,411,414,417],{"class":384,"line":410},4,[382,412,413],{"class":388},"    website_name",[382,415,416],{"class":392},":",[382,418,420],{"class":419},"sLL54"," My CWA App\n",[382,422,424],{"class":384,"line":423},5,[382,425,400],{"emptyLinePlaceholder":399},[382,427,429],{"class":384,"line":428},6,[382,430,431],{"class":406},"    # Table prefix for all bundle-managed tables. Default: '_acb_'\n",[382,433,435,438,440,444,447],{"class":384,"line":434},7,[382,436,437],{"class":388},"    table_prefix",[382,439,416],{"class":392},[382,441,443],{"class":442},"seSrl"," '",[382,445,446],{"class":419},"_acb_",[382,448,449],{"class":442},"'\n",[382,451,453],{"class":384,"line":452},8,[382,454,400],{"emptyLinePlaceholder":399},[382,456,458],{"class":384,"line":457},9,[382,459,460],{"class":406},"    # Key under which runtime metadata is nested in API responses. Default: '_metadata'\n",[382,462,464,467,469,471,474],{"class":384,"line":463},10,[382,465,466],{"class":388},"    metadata_key",[382,468,416],{"class":392},[382,470,443],{"class":442},[382,472,473],{"class":419},"_metadata",[382,475,449],{"class":442},[382,477,479],{"class":384,"line":478},11,[382,480,400],{"emptyLinePlaceholder":399},[382,482,484],{"class":384,"line":483},12,[382,485,486],{"class":406},"    # ─── User ────────────────────────────────────────────────────────────────\n",[382,488,490,493],{"class":384,"line":489},13,[382,491,492],{"class":388},"    user",[382,494,393],{"class":392},[382,496,498],{"class":384,"line":497},14,[382,499,500],{"class":406},"        # Required. Fully-qualified class name of your User entity.\n",[382,502,504,507,509],{"class":384,"line":503},15,[382,505,506],{"class":388},"        class_name",[382,508,416],{"class":392},[382,510,511],{"class":419}," App\\Entity\\User\n",[382,513,515],{"class":384,"line":514},16,[382,516,400],{"emptyLinePlaceholder":399},[382,518,520,523],{"class":384,"line":519},17,[382,521,522],{"class":388},"        email_verification",[382,524,393],{"class":392},[382,526,528,531,533],{"class":384,"line":527},18,[382,529,530],{"class":388},"            enabled",[382,532,416],{"class":392},[382,534,536],{"class":535},"swWMF"," true\n",[382,538,540],{"class":384,"line":539},19,[382,541,542],{"class":406},"            # Whether new users start verified (false = must verify email)\n",[382,544,546,549,551],{"class":384,"line":545},20,[382,547,548],{"class":388},"            default_value",[382,550,416],{"class":392},[382,552,553],{"class":535}," false\n",[382,555,557],{"class":384,"line":556},21,[382,558,559],{"class":406},"            # Send a verification email when a new user registers\n",[382,561,563,566,568],{"class":384,"line":562},22,[382,564,565],{"class":388},"            verify_on_register",[382,567,416],{"class":392},[382,569,536],{"class":535},[382,571,573],{"class":384,"line":572},23,[382,574,575],{"class":406},"            # Re-send verification when the user changes their email\n",[382,577,579,582,584],{"class":384,"line":578},24,[382,580,581],{"class":388},"            verify_on_change",[382,583,416],{"class":392},[382,585,536],{"class":535},[382,587,589],{"class":384,"line":588},25,[382,590,591],{"class":406},"            # Block login for unverified email addresses\n",[382,593,595,598,600],{"class":384,"line":594},26,[382,596,597],{"class":388},"            deny_unverified_login",[382,599,416],{"class":392},[382,601,536],{"class":535},[382,603,605,608],{"class":384,"line":604},27,[382,606,607],{"class":388},"            email",[382,609,393],{"class":392},[382,611,613],{"class":384,"line":612},28,[382,614,615],{"class":406},"                # Query param name carrying the redirect path (optional)\n",[382,617,619,622,624],{"class":384,"line":618},29,[382,620,621],{"class":388},"                redirect_path_query",[382,623,416],{"class":392},[382,625,627],{"class":626},"sBtbT"," ~\n",[382,629,631],{"class":384,"line":630},30,[382,632,633],{"class":406},"                # Path with {{ username }} and {{ token }} placeholders\n",[382,635,637,640,642],{"class":384,"line":636},31,[382,638,639],{"class":388},"                default_redirect_path",[382,641,416],{"class":392},[382,643,644],{"class":419}," \u002Fverify-email\u002F{{ username }}\u002F{{ token }}\n",[382,646,648,651,653],{"class":384,"line":647},32,[382,649,650],{"class":388},"                subject",[382,652,416],{"class":392},[382,654,655],{"class":419}," Please verify your email\n",[382,657,659],{"class":384,"line":658},33,[382,660,400],{"emptyLinePlaceholder":399},[382,662,664,667],{"class":384,"line":663},34,[382,665,666],{"class":388},"        new_email_confirmation",[382,668,393],{"class":392},[382,670,672,674],{"class":384,"line":671},35,[382,673,607],{"class":388},[382,675,393],{"class":392},[382,677,679,681,683],{"class":384,"line":678},36,[382,680,621],{"class":388},[382,682,416],{"class":392},[382,684,627],{"class":626},[382,686,688,690,692],{"class":384,"line":687},37,[382,689,639],{"class":388},[382,691,416],{"class":392},[382,693,694],{"class":419}," \u002Fconfirm-new-email\u002F{{ username }}\u002F{{ new_email }}\u002F{{ token }}\n",[382,696,698,700,702],{"class":384,"line":697},38,[382,699,650],{"class":388},[382,701,416],{"class":392},[382,703,704],{"class":419}," Please confirm your new email address\n",[382,706,708],{"class":384,"line":707},39,[382,709,710],{"class":406},"            # Token validity in seconds. Default: 86400 (24 hours)\n",[382,712,714,717,719],{"class":384,"line":713},40,[382,715,716],{"class":388},"            request_timeout_seconds",[382,718,416],{"class":392},[382,720,722],{"class":721},"scSvc"," 86400\n",[382,724,726],{"class":384,"line":725},41,[382,727,400],{"emptyLinePlaceholder":399},[382,729,731,734],{"class":384,"line":730},42,[382,732,733],{"class":388},"        password_reset",[382,735,393],{"class":392},[382,737,739,741],{"class":384,"line":738},43,[382,740,607],{"class":388},[382,742,393],{"class":392},[382,744,746,748,750],{"class":384,"line":745},44,[382,747,621],{"class":388},[382,749,416],{"class":392},[382,751,627],{"class":626},[382,753,755,757,759],{"class":384,"line":754},45,[382,756,639],{"class":388},[382,758,416],{"class":392},[382,760,761],{"class":419}," \u002Freset-password\u002F{{ username }}\u002F{{ token }}\n",[382,763,765,767,769],{"class":384,"line":764},46,[382,766,650],{"class":388},[382,768,416],{"class":392},[382,770,771],{"class":419}," Your password reset request\n",[382,773,775],{"class":384,"line":774},47,[382,776,777],{"class":406},"            # Minimum seconds between reset requests. Default: 8600\n",[382,779,781,784,786],{"class":384,"line":780},48,[382,782,783],{"class":388},"            repeat_ttl_seconds",[382,785,416],{"class":392},[382,787,788],{"class":721}," 8600\n",[382,790,792],{"class":384,"line":791},49,[382,793,794],{"class":406},"            # Reset token validity in seconds. Default: 3600\n",[382,796,798,800,802],{"class":384,"line":797},50,[382,799,716],{"class":388},[382,801,416],{"class":392},[382,803,804],{"class":721}," 3600\n",[382,806,808],{"class":384,"line":807},51,[382,809,400],{"emptyLinePlaceholder":399},[382,811,813,816],{"class":384,"line":812},52,[382,814,815],{"class":388},"        emails",[382,817,393],{"class":392},[382,819,821,824],{"class":384,"line":820},53,[382,822,823],{"class":388},"            welcome",[382,825,393],{"class":392},[382,827,829,832,834],{"class":384,"line":828},54,[382,830,831],{"class":388},"                enabled",[382,833,416],{"class":392},[382,835,536],{"class":535},[382,837,839,841,843,845,848],{"class":384,"line":838},55,[382,840,650],{"class":388},[382,842,416],{"class":392},[382,844,443],{"class":442},[382,846,847],{"class":419},"Welcome to {{ website_name }}",[382,849,449],{"class":442},[382,851,853,856],{"class":384,"line":852},56,[382,854,855],{"class":388},"            user_enabled",[382,857,393],{"class":392},[382,859,861,863,865],{"class":384,"line":860},57,[382,862,831],{"class":388},[382,864,416],{"class":392},[382,866,536],{"class":535},[382,868,870,872,874,876,879],{"class":384,"line":869},58,[382,871,650],{"class":388},[382,873,416],{"class":392},[382,875,443],{"class":442},[382,877,878],{"class":419},"Your account has been enabled",[382,880,449],{"class":442},[382,882,884,887],{"class":384,"line":883},59,[382,885,886],{"class":388},"            username_changed",[382,888,393],{"class":392},[382,890,892,894,896],{"class":384,"line":891},60,[382,893,831],{"class":388},[382,895,416],{"class":392},[382,897,536],{"class":535},[382,899,901,903,905,907,910],{"class":384,"line":900},61,[382,902,650],{"class":388},[382,904,416],{"class":392},[382,906,443],{"class":442},[382,908,909],{"class":419},"Your username has been updated",[382,911,449],{"class":442},[382,913,915,918],{"class":384,"line":914},62,[382,916,917],{"class":388},"            password_changed",[382,919,393],{"class":392},[382,921,923,925,927],{"class":384,"line":922},63,[382,924,831],{"class":388},[382,926,416],{"class":392},[382,928,536],{"class":535},[382,930,932,934,936,938,941],{"class":384,"line":931},64,[382,933,650],{"class":388},[382,935,416],{"class":392},[382,937,443],{"class":442},[382,939,940],{"class":419},"Your password has been changed",[382,942,449],{"class":442},[382,944,946],{"class":384,"line":945},65,[382,947,400],{"emptyLinePlaceholder":399},[382,949,951],{"class":384,"line":950},66,[382,952,953],{"class":406},"    # ─── Publishable ─────────────────────────────────────────────────────────\n",[382,955,957,960],{"class":384,"line":956},67,[382,958,959],{"class":388},"    publishable",[382,961,393],{"class":392},[382,963,965],{"class":384,"line":964},68,[382,966,967],{"class":406},"        # Symfony expression: who can read\u002Fwrite draft resources and publish\n",[382,969,971,974,976,979,982],{"class":384,"line":970},69,[382,972,973],{"class":388},"        permission",[382,975,416],{"class":392},[382,977,978],{"class":442}," \"",[382,980,981],{"class":419},"is_granted('ROLE_ADMIN')",[382,983,984],{"class":442},"\"\n",[382,986,988],{"class":384,"line":987},70,[382,989,400],{"emptyLinePlaceholder":399},[382,991,993],{"class":384,"line":992},71,[382,994,995],{"class":406},"    # ─── Built-in Components ─────────────────────────────────────────────────\n",[382,997,999,1002],{"class":384,"line":998},72,[382,1000,1001],{"class":388},"    enabled_components",[382,1003,393],{"class":392},[382,1005,1007,1010,1012,1015],{"class":384,"line":1006},73,[382,1008,1009],{"class":388},"        form",[382,1011,416],{"class":392},[382,1013,1014],{"class":535}," true",[382,1016,1017],{"class":406},"        # The Form component (Symfony FormType → JSON)\n",[382,1019,1021,1024,1026,1028],{"class":384,"line":1020},74,[382,1022,1023],{"class":388},"        collection",[382,1025,416],{"class":392},[382,1027,1014],{"class":535},[382,1029,1030],{"class":406},"  # The Collection component (resource list proxy)\n",[382,1032,1034],{"class":384,"line":1033},75,[382,1035,400],{"emptyLinePlaceholder":399},[382,1037,1039],{"class":384,"line":1038},76,[382,1040,1041],{"class":406},"    # ─── Refresh Tokens ──────────────────────────────────────────────────────\n",[382,1043,1045,1048],{"class":384,"line":1044},77,[382,1046,1047],{"class":388},"    refresh_token",[382,1049,393],{"class":392},[382,1051,1053],{"class":384,"line":1052},78,[382,1054,1055],{"class":406},"        # Service ID of the refresh token storage handler\n",[382,1057,1059,1062,1064],{"class":384,"line":1058},79,[382,1060,1061],{"class":388},"        handler_id",[382,1063,416],{"class":392},[382,1065,1066],{"class":419}," silverback.api_components.refresh_token.storage.doctrine\n",[382,1068,1070,1073],{"class":384,"line":1069},80,[382,1071,1072],{"class":388},"        options",[382,1074,393],{"class":392},[382,1076,1078],{"class":384,"line":1077},81,[382,1079,1080],{"class":406},"            # Your RefreshToken entity class (from the Flex recipe)\n",[382,1082,1084,1087,1089],{"class":384,"line":1083},82,[382,1085,1086],{"class":388},"            class",[382,1088,416],{"class":392},[382,1090,1091],{"class":419}," App\\Entity\\RefreshToken\n",[382,1093,1095],{"class":384,"line":1094},83,[382,1096,1097],{"class":406},"        # Must match the cookie name in lexik_jwt_authentication.set_cookies\n",[382,1099,1101,1104,1106],{"class":384,"line":1100},84,[382,1102,1103],{"class":388},"        cookie_name",[382,1105,416],{"class":392},[382,1107,1108],{"class":419}," api_components\n",[382,1110,1112],{"class":384,"line":1111},85,[382,1113,1114],{"class":406},"        # Token lifetime in seconds. Default: 604800 (1 week)\n",[382,1116,1118,1121,1123],{"class":384,"line":1117},86,[382,1119,1120],{"class":388},"        ttl",[382,1122,416],{"class":392},[382,1124,1125],{"class":721}," 604800\n",[382,1127,1129],{"class":384,"line":1128},87,[382,1130,1131],{"class":406},"        # The user provider alias used in security.yaml\n",[382,1133,1135,1138,1140],{"class":384,"line":1134},88,[382,1136,1137],{"class":388},"        database_user_provider",[382,1139,416],{"class":392},[382,1141,1142],{"class":419}," database\n",[382,1144,1146],{"class":384,"line":1145},89,[382,1147,400],{"emptyLinePlaceholder":399},[382,1149,1151],{"class":384,"line":1150},90,[382,1152,1153],{"class":406},"    # ─── Mercure ─────────────────────────────────────────────────────────────\n",[382,1155,1157,1160],{"class":384,"line":1156},91,[382,1158,1159],{"class":388},"    mercure",[382,1161,393],{"class":392},[382,1163,1165],{"class":384,"line":1164},92,[382,1166,1167],{"class":406},"        # Name of the Mercure hub (if multiple hubs; null = default hub)\n",[382,1169,1171,1174,1176],{"class":384,"line":1170},93,[382,1172,1173],{"class":388},"        hub_name",[382,1175,416],{"class":392},[382,1177,627],{"class":626},[382,1179,1181,1184],{"class":384,"line":1180},94,[382,1182,1183],{"class":388},"        cookie",[382,1185,393],{"class":392},[382,1187,1189],{"class":384,"line":1188},95,[382,1190,1191],{"class":406},"            # SameSite attribute for the Mercure cookie. Default: 'strict'\n",[382,1193,1195,1198,1200,1202,1205],{"class":384,"line":1194},96,[382,1196,1197],{"class":388},"            samesite",[382,1199,416],{"class":392},[382,1201,443],{"class":442},[382,1203,1204],{"class":419},"%env(JWT_COOKIE_SAMESITE)%",[382,1206,449],{"class":442},[382,1208,1210],{"class":384,"line":1209},97,[382,1211,1212],{"class":406},"        # Scope subscriber JWT tokens to resources the current user can access.\n",[382,1214,1216],{"class":384,"line":1215},98,[382,1217,1218],{"class":406},"        # Recommended in production. Default: false (all topics subscribed).\n",[382,1220,1222,1225,1227],{"class":384,"line":1221},99,[382,1223,1224],{"class":388},"        secure_subscriptions",[382,1226,416],{"class":392},[382,1228,553],{"class":535},[382,1230,1232],{"class":384,"line":1231},100,[382,1233,400],{"emptyLinePlaceholder":399},[382,1235,1237],{"class":384,"line":1236},101,[382,1238,1239],{"class":406},"    # ─── Route Security ──────────────────────────────────────────────────────\n",[382,1241,1243],{"class":384,"line":1242},102,[382,1244,1245],{"class":406},"    # URL pattern → Symfony security expression. Evaluated per-route.\n",[382,1247,1249,1252],{"class":384,"line":1248},103,[382,1250,1251],{"class":388},"    route_security",[382,1253,393],{"class":392},[382,1255,1257,1260,1263,1266,1268,1270,1273,1276,1279,1282,1284,1286,1289,1292],{"class":384,"line":1256},104,[382,1258,1259],{"class":392},"        -",[382,1261,1262],{"class":392}," {",[382,1264,1265],{"class":388}," route",[382,1267,416],{"class":392},[382,1269,443],{"class":442},[382,1271,1272],{"class":419},"\u002Fuser-area*",[382,1274,1275],{"class":442},"'",[382,1277,1278],{"class":392},",",[382,1280,1281],{"class":388}," security",[382,1283,416],{"class":392},[382,1285,978],{"class":442},[382,1287,1288],{"class":419},"is_granted('ROLE_USER')",[382,1290,1291],{"class":442},"\"",[382,1293,1294],{"class":392}," }\n",[382,1296,1298,1300,1302,1304,1306,1308,1311,1313,1315,1317,1319,1321,1323,1325],{"class":384,"line":1297},105,[382,1299,1259],{"class":392},[382,1301,1262],{"class":392},[382,1303,1265],{"class":388},[382,1305,416],{"class":392},[382,1307,443],{"class":442},[382,1309,1310],{"class":419},"\u002Fadmin*",[382,1312,1275],{"class":442},[382,1314,1278],{"class":392},[382,1316,1281],{"class":388},[382,1318,416],{"class":392},[382,1320,978],{"class":442},[382,1322,981],{"class":419},[382,1324,1291],{"class":442},[382,1326,1294],{"class":392},[382,1328,1330],{"class":384,"line":1329},106,[382,1331,400],{"emptyLinePlaceholder":399},[382,1333,1335],{"class":384,"line":1334},107,[382,1336,1337],{"class":406},"    # Expression controlling who can access the route manifest\n",[382,1339,1341,1344,1346,1348,1350],{"class":384,"line":1340},108,[382,1342,1343],{"class":388},"    routable_security",[382,1345,416],{"class":392},[382,1347,978],{"class":442},[382,1349,981],{"class":419},[382,1351,984],{"class":442},[368,1353,1355],{"id":1354},"mercure-secure-subscriptions","Mercure Secure Subscriptions",[351,1357,1358],{},"By default the subscriber JWT token issued at login includes every resource topic — Mercure will push updates for any resource the front-end subscribes to, regardless of the current user's access level. This is fine for public content but leaks real-time updates for resources that have server-side security expressions.",[351,1360,1361,1362,1365],{},"Set ",[355,1363,1364],{},"mercure.secure_subscriptions: true"," to scope the token: the bundle evaluates each API resource's security expression at token-generation time and omits topics the current user cannot access:",[373,1367,1369],{"className":375,"code":1368,"language":377,"meta":378,"style":378},"silverback_api_components:\n    mercure:\n        secure_subscriptions: true\n",[355,1370,1371,1377,1383],{"__ignoreMap":378},[382,1372,1373,1375],{"class":384,"line":385},[382,1374,389],{"class":388},[382,1376,393],{"class":392},[382,1378,1379,1381],{"class":384,"line":396},[382,1380,1159],{"class":388},[382,1382,393],{"class":392},[382,1384,1385,1387,1389],{"class":384,"line":403},[382,1386,1224],{"class":388},[382,1388,416],{"class":392},[382,1390,536],{"class":535},[351,1392,1393],{},[1394,1395,1396],"strong",{},"Caveats:",[1398,1399,1400,1412],"ul",{},[1401,1402,1403,1404,1407,1408,1411],"li",{},"Security expressions that reference ",[355,1405,1406],{},"object"," (item-level security, e.g. ",[355,1409,1410],{},"object.owner == user",") cannot be evaluated at token time because there is no concrete entity instance. Those resource topics are always included — you cannot scope to specific items, only to the class\u002Frole level.",[1401,1413,1414],{},"The token is generated at login time. If a user's roles change mid-session their subscription scope does not update until they re-authenticate.",[351,1416,1417,1418,1421],{},"Enable in production for any application with role-gated resources. Leave ",[355,1419,1420],{},"false"," (the default) for fully public sites.",[368,1423,1425],{"id":1424},"environment-variables","Environment Variables",[1427,1428,1429,1442],"table",{},[1430,1431,1432],"thead",{},[1433,1434,1435,1439],"tr",{},[1436,1437,1438],"th",{},"Variable",[1436,1440,1441],{},"Purpose",[1443,1444,1445,1456,1466,1476,1490,1510,1520,1530,1540,1550],"tbody",{},[1433,1446,1447,1453],{},[1448,1449,1450],"td",{},[355,1451,1452],{},"DATABASE_URL",[1448,1454,1455],{},"Doctrine connection string",[1433,1457,1458,1463],{},[1448,1459,1460],{},[355,1461,1462],{},"JWT_SECRET_KEY",[1448,1464,1465],{},"Path to private key PEM file",[1433,1467,1468,1473],{},[1448,1469,1470],{},[355,1471,1472],{},"JWT_PUBLIC_KEY",[1448,1474,1475],{},"Path to public key PEM file",[1433,1477,1478,1483],{},[1448,1479,1480],{},[355,1481,1482],{},"JWT_PASSPHRASE",[1448,1484,1485,1486,1489],{},"Private key passphrase (",[355,1487,1488],{},".env.local"," only)",[1433,1491,1492,1497],{},[1448,1493,1494],{},[355,1495,1496],{},"JWT_COOKIE_SAMESITE",[1448,1498,1499,1500,358,1503,358,1506,1509],{},"Cookie SameSite attribute (",[355,1501,1502],{},"strict",[355,1504,1505],{},"lax",[355,1507,1508],{},"none",")",[1433,1511,1512,1517],{},[1448,1513,1514],{},[355,1515,1516],{},"MERCURE_URL",[1448,1518,1519],{},"Internal API → Mercure hub URL",[1433,1521,1522,1527],{},[1448,1523,1524],{},[355,1525,1526],{},"MERCURE_PUBLIC_URL",[1448,1528,1529],{},"Browser → Mercure hub URL",[1433,1531,1532,1537],{},[1448,1533,1534],{},[355,1535,1536],{},"MERCURE_JWT_SECRET",[1448,1538,1539],{},"Shared secret for Mercure publisher JWT",[1433,1541,1542,1547],{},[1448,1543,1544],{},[355,1545,1546],{},"MAILER_DSN",[1448,1548,1549],{},"Symfony Mailer transport",[1433,1551,1552,1557],{},[1448,1553,1554],{},[355,1555,1556],{},"APP_SECRET",[1448,1558,1559],{},"Symfony application secret",[368,1561,1563],{"id":1562},"services-you-can-override","Services You Can Override",[351,1565,1566,1567,1570,1571,416],{},"All ~320 bundle services have stable string IDs in the form ",[355,1568,1569],{},"silverback.api_components.*",". Each service's FQCN is also registered as an alias, so you can decorate using either form in ",[355,1572,1573],{},"config\u002Fservices.yaml",[373,1575,1577],{"className":375,"code":1576,"language":377,"meta":378,"style":378},"# config\u002Fservices.yaml\nservices:\n    App\\YourCustomFilesystemProvider:\n        decorates: Silverback\\ApiComponentsBundle\\Helper\\Uploadable\\FilesystemProvider\n\n    # or equivalently using the stable string ID:\n    App\\YourCustomFilesystemProvider:\n        decorates: silverback.api_components.helper.uploadable.filesystem_provider\n",[355,1578,1579,1584,1591,1598,1608,1612,1617,1623],{"__ignoreMap":378},[382,1580,1581],{"class":384,"line":385},[382,1582,1583],{"class":406},"# config\u002Fservices.yaml\n",[382,1585,1586,1589],{"class":384,"line":396},[382,1587,1588],{"class":388},"services",[382,1590,393],{"class":392},[382,1592,1593,1596],{"class":384,"line":403},[382,1594,1595],{"class":388},"    App\\YourCustomFilesystemProvider",[382,1597,393],{"class":392},[382,1599,1600,1603,1605],{"class":384,"line":410},[382,1601,1602],{"class":388},"        decorates",[382,1604,416],{"class":392},[382,1606,1607],{"class":419}," Silverback\\ApiComponentsBundle\\Helper\\Uploadable\\FilesystemProvider\n",[382,1609,1610],{"class":384,"line":423},[382,1611,400],{"emptyLinePlaceholder":399},[382,1613,1614],{"class":384,"line":428},[382,1615,1616],{"class":406},"    # or equivalently using the stable string ID:\n",[382,1618,1619,1621],{"class":384,"line":434},[382,1620,1595],{"class":388},[382,1622,393],{"class":392},[382,1624,1625,1627,1629],{"class":384,"line":452},[382,1626,1602],{"class":388},[382,1628,416],{"class":392},[382,1630,1631],{"class":419}," silverback.api_components.helper.uploadable.filesystem_provider\n",[351,1633,1634],{},"Commonly overridden services:",[1427,1636,1637,1646],{},[1430,1638,1639],{},[1433,1640,1641,1644],{},[1436,1642,1643],{},"Service ID",[1436,1645,1441],{},[1443,1647,1648,1658,1668,1678],{},[1433,1649,1650,1655],{},[1448,1651,1652],{},[355,1653,1654],{},"Silverback\\ApiComponentsBundle\\Helper\\Uploadable\\FilesystemProvider",[1448,1656,1657],{},"Custom storage adapter resolution",[1433,1659,1660,1665],{},[1448,1661,1662],{},[355,1663,1664],{},"Silverback\\ApiComponentsBundle\\Security\\UserChecker",[1448,1666,1667],{},"Custom account checks on login",[1433,1669,1670,1675],{},[1448,1671,1672],{},[355,1673,1674],{},"silverback.api_components.jwt.authentication.success_handler",[1448,1676,1677],{},"Post-login redirect behaviour",[1433,1679,1680,1685],{},[1448,1681,1682],{},[355,1683,1684],{},"silverback.api_components.jwt.authentication.failure_handler",[1448,1686,1687],{},"Login failure response",[351,1689,1690,1691,1694,1695,1698,1699,1702],{},"The string IDs follow the class namespace: ",[355,1692,1693],{},"Silverback\\ApiComponentsBundle\\Foo\\BarBaz"," → ",[355,1696,1697],{},"silverback.api_components.foo.bar_baz",". Inspect ",[355,1700,1701],{},"vendor\u002Fsilverbackdan\u002Fapi-components-bundle\u002Fsrc\u002FResources\u002Fconfig\u002Fservices.php"," for the full list.",[1704,1705,1706],"style",{},"html pre.shiki code .s-h7I, html code.shiki .s-h7I{--shiki-light:#22863A;--shiki-default:#85E89D;--shiki-dark:#F07178}html pre.shiki code .sOvfz, html code.shiki .sOvfz{--shiki-light:#24292E;--shiki-default:#E1E4E8;--shiki-dark:#89DDFF}html pre.shiki code .sTBSN, html code.shiki .sTBSN{--shiki-light:#6A737D;--shiki-light-font-style:inherit;--shiki-default:#6A737D;--shiki-default-font-style:inherit;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sLL54, html code.shiki .sLL54{--shiki-light:#032F62;--shiki-default:#9ECBFF;--shiki-dark:#C3E88D}html pre.shiki code .seSrl, html code.shiki .seSrl{--shiki-light:#032F62;--shiki-default:#9ECBFF;--shiki-dark:#89DDFF}html pre.shiki code .swWMF, html code.shiki .swWMF{--shiki-light:#005CC5;--shiki-default:#79B8FF;--shiki-dark:#FF9CAC}html pre.shiki code .sBtbT, html code.shiki .sBtbT{--shiki-light:#005CC5;--shiki-default:#79B8FF;--shiki-dark:#89DDFF}html pre.shiki code .scSvc, html code.shiki .scSvc{--shiki-light:#005CC5;--shiki-default:#79B8FF;--shiki-dark:#F78C6C}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);}",{"title":378,"searchDepth":396,"depth":396,"links":1708},[1709,1710,1711,1712],{"id":370,"depth":396,"text":371},{"id":1354,"depth":396,"text":1355},{"id":1424,"depth":396,"text":1425},{"id":1562,"depth":396,"text":1563},"Complete reference for all silverback_api_components bundle configuration options.","md",null,{},{"title":129,"description":1713},"Ub6QYJRmAiqXGJoid62l2tr7YFYovGuJrqOk4avnuPY",[1720,1722],{"title":125,"path":126,"stem":127,"description":1721,"children":-1},"Use AbstractCwaScaffold and CwaFixtureBuilder to seed your database with layouts, pages, routes, components, and page data in a fluent API.",{"title":133,"path":134,"stem":135,"description":1723,"children":-1},"Symfony console commands provided by the API Components Bundle for managing users, cleaning up data, and generating component entities.",1782241280890]