[{"data":1,"prerenderedAt":2646},["ShallowReactive",2],{"navigation_docs":3,"docs-navigation-with-icons":419,"-docs-guides-migrations":561,"-docs-guides-migrations-surround":2641},[4,66,87,124,405],{"title":5,"path":6,"stem":7,"children":8,"page":65},"Api","\u002Fdocs\u002Fapi","docs\u002Fapi",[9,13,17,21,25,29,33,37,41,45,49,53,57,61],{"title":10,"path":11,"stem":12},"Best Practices","\u002Fdocs\u002Fapi\u002Fbest-practices","docs\u002Fapi\u002Fbest-practices",{"title":14,"path":15,"stem":16},"Blog","\u002Fdocs\u002Fapi\u002Fblog","docs\u002Fapi\u002Fblog",{"title":18,"path":19,"stem":20},"Code Examples","\u002Fdocs\u002Fapi\u002Fcode-examples","docs\u002Fapi\u002Fcode-examples",{"title":22,"path":23,"stem":24},"Collections","\u002Fdocs\u002Fapi\u002Fcollections","docs\u002Fapi\u002Fcollections",{"title":26,"path":27,"stem":28},"Field Types","\u002Fdocs\u002Fapi\u002Ffield-types","docs\u002Fapi\u002Ffield-types",{"title":30,"path":31,"stem":32},"Rate Limits & Errors","\u002Fdocs\u002Fapi\u002Flimits-and-errors","docs\u002Fapi\u002Flimits-and-errors",{"title":34,"path":35,"stem":36},"Media","\u002Fdocs\u002Fapi\u002Fmedia","docs\u002Fapi\u002Fmedia",{"title":38,"path":39,"stem":40},"Overview","\u002Fdocs\u002Fapi\u002Foverview","docs\u002Fapi\u002Foverview",{"title":42,"path":43,"stem":44},"Pages","\u002Fdocs\u002Fapi\u002Fpages","docs\u002Fapi\u002Fpages",{"title":46,"path":47,"stem":48},"Query Parameters","\u002Fdocs\u002Fapi\u002Fquery-parameters","docs\u002Fapi\u002Fquery-parameters",{"title":50,"path":51,"stem":52},"Responses & Caching","\u002Fdocs\u002Fapi\u002Fresponses","docs\u002Fapi\u002Fresponses",{"title":54,"path":55,"stem":56},"Troubleshooting","\u002Fdocs\u002Fapi\u002Ftroubleshooting","docs\u002Fapi\u002Ftroubleshooting",{"title":58,"path":59,"stem":60},"Validation","\u002Fdocs\u002Fapi\u002Fvalidation","docs\u002Fapi\u002Fvalidation",{"title":62,"path":63,"stem":64},"Webhooks","\u002Fdocs\u002Fapi\u002Fwebhooks","docs\u002Fapi\u002Fwebhooks",false,{"title":67,"path":68,"stem":69,"children":70,"page":65},"Getting Started","\u002Fdocs\u002Fgetting-started","docs\u002Fgetting-started",[71,75,79,83],{"title":72,"path":73,"stem":74},"Authentication","\u002Fdocs\u002Fgetting-started\u002Fauthentication","docs\u002Fgetting-started\u002Fauthentication",{"title":76,"path":77,"stem":78},"Introduction","\u002Fdocs\u002Fgetting-started\u002Fintroduction","docs\u002Fgetting-started\u002Fintroduction",{"title":80,"path":81,"stem":82},"Quickstart","\u002Fdocs\u002Fgetting-started\u002Fquickstart","docs\u002Fgetting-started\u002Fquickstart",{"title":84,"path":85,"stem":86},"Write Operations","\u002Fdocs\u002Fgetting-started\u002Fwrite-operations","docs\u002Fgetting-started\u002Fwrite-operations",{"title":88,"path":89,"stem":90,"children":91,"page":65},"Guides","\u002Fdocs\u002Fguides","docs\u002Fguides",[92,96,100,104,108,112,116,120],{"title":93,"path":94,"stem":95},"Admin Interface","\u002Fdocs\u002Fguides\u002Fadmin-interface","docs\u002Fguides\u002Fadmin-interface",{"title":97,"path":98,"stem":99},"ButterCMS Migration","\u002Fdocs\u002Fguides\u002Fbuttercms-migration","docs\u002Fguides\u002Fbuttercms-migration",{"title":101,"path":102,"stem":103},"Migrations","\u002Fdocs\u002Fguides\u002Fmigrations","docs\u002Fguides\u002Fmigrations",{"title":105,"path":106,"stem":107},"Page Management","\u002Fdocs\u002Fguides\u002Fpage-management","docs\u002Fguides\u002Fpage-management",{"title":109,"path":110,"stem":111},"Public API Usage","\u002Fdocs\u002Fguides\u002Fpublic-api-usage","docs\u002Fguides\u002Fpublic-api-usage",{"title":113,"path":114,"stem":115},"Schema Builder","\u002Fdocs\u002Fguides\u002Fschema-builder","docs\u002Fguides\u002Fschema-builder",{"title":117,"path":118,"stem":119},"User Management","\u002Fdocs\u002Fguides\u002Fuser-management","docs\u002Fguides\u002Fuser-management",{"title":121,"path":122,"stem":123},"Rich Text Editor","\u002Fdocs\u002Fguides\u002Fwysiwyg-editor","docs\u002Fguides\u002Fwysiwyg-editor",{"title":125,"path":126,"stem":127,"children":128,"page":65},"Sdk","\u002Fdocs\u002Fsdk","docs\u002Fsdk",[129,132,136,140,144],{"title":38,"path":130,"stem":131},"\u002Fdocs\u002Fsdk\u002Freadme","docs\u002Fsdk\u002FREADME",{"title":133,"path":134,"stem":135},"Astro","\u002Fdocs\u002Fsdk\u002Fastro","docs\u002Fsdk\u002Fastro",{"title":137,"path":138,"stem":139},"Next.js","\u002Fdocs\u002Fsdk\u002Fnextjs","docs\u002Fsdk\u002Fnextjs",{"title":141,"path":142,"stem":143},"Nuxt","\u002Fdocs\u002Fsdk\u002Fnuxt","docs\u002Fsdk\u002Fnuxt",{"title":145,"path":146,"stem":147,"children":148,"page":65},"Reference","\u002Fdocs\u002Fsdk\u002Freference","docs\u002Fsdk\u002Freference",[149,153,222,235,380],{"title":150,"path":151,"stem":152},"@tentocms\u002Fclient","\u002Fdocs\u002Fsdk\u002Freference\u002Freadme","docs\u002Fsdk\u002Freference\u002FREADME",{"title":154,"path":155,"stem":156,"children":157,"page":65},"Classes","\u002Fdocs\u002Fsdk\u002Freference\u002Fclasses","docs\u002Fsdk\u002Freference\u002Fclasses",[158,162,166,170,174,178,182,186,190,194,198,202,206,210,214,218],{"title":159,"path":160,"stem":161},"Class: BlogCategoriesResource","\u002Fdocs\u002Fsdk\u002Freference\u002Fclasses\u002Fblogcategoriesresource","docs\u002Fsdk\u002Freference\u002Fclasses\u002FBlogCategoriesResource",{"title":163,"path":164,"stem":165},"Class: BlogPostsResource","\u002Fdocs\u002Fsdk\u002Freference\u002Fclasses\u002Fblogpostsresource","docs\u002Fsdk\u002Freference\u002Fclasses\u002FBlogPostsResource",{"title":167,"path":168,"stem":169},"Class: BlogResource","\u002Fdocs\u002Fsdk\u002Freference\u002Fclasses\u002Fblogresource","docs\u002Fsdk\u002Freference\u002Fclasses\u002FBlogResource",{"title":171,"path":172,"stem":173},"Class: BlogTagsResource","\u002Fdocs\u002Fsdk\u002Freference\u002Fclasses\u002Fblogtagsresource","docs\u002Fsdk\u002Freference\u002Fclasses\u002FBlogTagsResource",{"title":175,"path":176,"stem":177},"Class: CollectionsResource","\u002Fdocs\u002Fsdk\u002Freference\u002Fclasses\u002Fcollectionsresource","docs\u002Fsdk\u002Freference\u002Fclasses\u002FCollectionsResource",{"title":179,"path":180,"stem":181},"Class: CollectionsWriteResource","\u002Fdocs\u002Fsdk\u002Freference\u002Fclasses\u002Fcollectionswriteresource","docs\u002Fsdk\u002Freference\u002Fclasses\u002FCollectionsWriteResource",{"title":183,"path":184,"stem":185},"Class: MediaResource","\u002Fdocs\u002Fsdk\u002Freference\u002Fclasses\u002Fmediaresource","docs\u002Fsdk\u002Freference\u002Fclasses\u002FMediaResource",{"title":187,"path":188,"stem":189},"Class: MediaWriteResource","\u002Fdocs\u002Fsdk\u002Freference\u002Fclasses\u002Fmediawriteresource","docs\u002Fsdk\u002Freference\u002Fclasses\u002FMediaWriteResource",{"title":191,"path":192,"stem":193},"Class: PagesResource","\u002Fdocs\u002Fsdk\u002Freference\u002Fclasses\u002Fpagesresource","docs\u002Fsdk\u002Freference\u002Fclasses\u002FPagesResource",{"title":195,"path":196,"stem":197},"Class: PagesWriteResource","\u002Fdocs\u002Fsdk\u002Freference\u002Fclasses\u002Fpageswriteresource","docs\u002Fsdk\u002Freference\u002Fclasses\u002FPagesWriteResource",{"title":199,"path":200,"stem":201},"Class: TentoAuthenticationError","\u002Fdocs\u002Fsdk\u002Freference\u002Fclasses\u002Ftentoauthenticationerror","docs\u002Fsdk\u002Freference\u002Fclasses\u002FTentoAuthenticationError",{"title":203,"path":204,"stem":205},"Class: TentoClient","\u002Fdocs\u002Fsdk\u002Freference\u002Fclasses\u002Ftentoclient","docs\u002Fsdk\u002Freference\u002Fclasses\u002FTentoClient",{"title":207,"path":208,"stem":209},"Class: TentoError","\u002Fdocs\u002Fsdk\u002Freference\u002Fclasses\u002Ftentoerror","docs\u002Fsdk\u002Freference\u002Fclasses\u002FTentoError",{"title":211,"path":212,"stem":213},"Class: TentoNetworkError","\u002Fdocs\u002Fsdk\u002Freference\u002Fclasses\u002Ftentonetworkerror","docs\u002Fsdk\u002Freference\u002Fclasses\u002FTentoNetworkError",{"title":215,"path":216,"stem":217},"Class: TentoNotFoundError","\u002Fdocs\u002Fsdk\u002Freference\u002Fclasses\u002Ftentonotfounderror","docs\u002Fsdk\u002Freference\u002Fclasses\u002FTentoNotFoundError",{"title":219,"path":220,"stem":221},"Class: TentoRateLimitError","\u002Fdocs\u002Fsdk\u002Freference\u002Fclasses\u002Ftentoratelimiterror","docs\u002Fsdk\u002Freference\u002Fclasses\u002FTentoRateLimitError",{"title":223,"path":224,"stem":225,"children":226,"page":65},"Functions","\u002Fdocs\u002Fsdk\u002Freference\u002Ffunctions","docs\u002Fsdk\u002Freference\u002Ffunctions",[227,231],{"title":228,"path":229,"stem":230},"Function: getUrl()","\u002Fdocs\u002Fsdk\u002Freference\u002Ffunctions\u002Fgeturl","docs\u002Fsdk\u002Freference\u002Ffunctions\u002FgetUrl",{"title":232,"path":233,"stem":234},"Function: mockMedia()","\u002Fdocs\u002Fsdk\u002Freference\u002Ffunctions\u002Fmockmedia","docs\u002Fsdk\u002Freference\u002Ffunctions\u002FmockMedia",{"title":236,"path":237,"stem":238,"children":239,"page":65},"Interfaces","\u002Fdocs\u002Fsdk\u002Freference\u002Finterfaces","docs\u002Fsdk\u002Freference\u002Finterfaces",[240,244,248,252,256,260,264,268,272,276,280,284,288,292,296,300,304,308,312,316,320,324,328,332,336,340,344,348,352,356,360,364,368,372,376],{"title":241,"path":242,"stem":243},"Interface: BlogAuthor","\u002Fdocs\u002Fsdk\u002Freference\u002Finterfaces\u002Fblogauthor","docs\u002Fsdk\u002Freference\u002Finterfaces\u002FBlogAuthor",{"title":245,"path":246,"stem":247},"Interface: BlogCategory","\u002Fdocs\u002Fsdk\u002Freference\u002Finterfaces\u002Fblogcategory","docs\u002Fsdk\u002Freference\u002Finterfaces\u002FBlogCategory",{"title":249,"path":250,"stem":251},"Interface: BlogPost","\u002Fdocs\u002Fsdk\u002Freference\u002Finterfaces\u002Fblogpost","docs\u002Fsdk\u002Freference\u002Finterfaces\u002FBlogPost",{"title":253,"path":254,"stem":255},"Interface: BlogPostListOptions","\u002Fdocs\u002Fsdk\u002Freference\u002Finterfaces\u002Fblogpostlistoptions","docs\u002Fsdk\u002Freference\u002Finterfaces\u002FBlogPostListOptions",{"title":257,"path":258,"stem":259},"Interface: BlogTag","\u002Fdocs\u002Fsdk\u002Freference\u002Finterfaces\u002Fblogtag","docs\u002Fsdk\u002Freference\u002Finterfaces\u002FBlogTag",{"title":261,"path":262,"stem":263},"Interface: CollectionItemResponse\u003CT>","\u002Fdocs\u002Fsdk\u002Freference\u002Finterfaces\u002Fcollectionitemresponse","docs\u002Fsdk\u002Freference\u002Finterfaces\u002FCollectionItemResponse",{"title":265,"path":266,"stem":267},"Interface: CollectionListOptions","\u002Fdocs\u002Fsdk\u002Freference\u002Finterfaces\u002Fcollectionlistoptions","docs\u002Fsdk\u002Freference\u002Finterfaces\u002FCollectionListOptions",{"title":269,"path":270,"stem":271},"Interface: CollectionListResponse\u003CT>","\u002Fdocs\u002Fsdk\u002Freference\u002Finterfaces\u002Fcollectionlistresponse","docs\u002Fsdk\u002Freference\u002Finterfaces\u002FCollectionListResponse",{"title":273,"path":274,"stem":275},"Interface: CollectionTypeMeta","\u002Fdocs\u002Fsdk\u002Freference\u002Finterfaces\u002Fcollectiontypemeta","docs\u002Fsdk\u002Freference\u002Finterfaces\u002FCollectionTypeMeta",{"title":277,"path":278,"stem":279},"Interface: CreateCollectionItemInput","\u002Fdocs\u002Fsdk\u002Freference\u002Finterfaces\u002Fcreatecollectioniteminput","docs\u002Fsdk\u002Freference\u002Finterfaces\u002FCreateCollectionItemInput",{"title":281,"path":282,"stem":283},"Interface: CreatePageInput","\u002Fdocs\u002Fsdk\u002Freference\u002Finterfaces\u002Fcreatepageinput","docs\u002Fsdk\u002Freference\u002Finterfaces\u002FCreatePageInput",{"title":285,"path":286,"stem":287},"Interface: DryRunResult","\u002Fdocs\u002Fsdk\u002Freference\u002Finterfaces\u002Fdryrunresult","docs\u002Fsdk\u002Freference\u002Finterfaces\u002FDryRunResult",{"title":289,"path":290,"stem":291},"Interface: FilterCondition","\u002Fdocs\u002Fsdk\u002Freference\u002Finterfaces\u002Ffiltercondition","docs\u002Fsdk\u002Freference\u002Finterfaces\u002FFilterCondition",{"title":293,"path":294,"stem":295},"Interface: ItemResponse\u003CT>","\u002Fdocs\u002Fsdk\u002Freference\u002Finterfaces\u002Fitemresponse","docs\u002Fsdk\u002Freference\u002Finterfaces\u002FItemResponse",{"title":297,"path":298,"stem":299},"Interface: ListResponse\u003CT>","\u002Fdocs\u002Fsdk\u002Freference\u002Finterfaces\u002Flistresponse","docs\u002Fsdk\u002Freference\u002Finterfaces\u002FListResponse",{"title":301,"path":302,"stem":303},"Interface: Media","\u002Fdocs\u002Fsdk\u002Freference\u002Finterfaces\u002Fmedia","docs\u002Fsdk\u002Freference\u002Finterfaces\u002FMedia",{"title":305,"path":306,"stem":307},"Interface: MediaItem","\u002Fdocs\u002Fsdk\u002Freference\u002Finterfaces\u002Fmediaitem","docs\u002Fsdk\u002Freference\u002Finterfaces\u002FMediaItem",{"title":309,"path":310,"stem":311},"Interface: MediaOption","\u002Fdocs\u002Fsdk\u002Freference\u002Finterfaces\u002Fmediaoption","docs\u002Fsdk\u002Freference\u002Finterfaces\u002FMediaOption",{"title":313,"path":314,"stem":315},"Interface: MediaTransformOptions","\u002Fdocs\u002Fsdk\u002Freference\u002Finterfaces\u002Fmediatransformoptions","docs\u002Fsdk\u002Freference\u002Finterfaces\u002FMediaTransformOptions",{"title":317,"path":318,"stem":319},"Interface: Page\u003CTContent>","\u002Fdocs\u002Fsdk\u002Freference\u002Finterfaces\u002Fpage","docs\u002Fsdk\u002Freference\u002Finterfaces\u002FPage",{"title":321,"path":322,"stem":323},"Interface: PageGetOptions","\u002Fdocs\u002Fsdk\u002Freference\u002Finterfaces\u002Fpagegetoptions","docs\u002Fsdk\u002Freference\u002Finterfaces\u002FPageGetOptions",{"title":325,"path":326,"stem":327},"Interface: PageListOptions","\u002Fdocs\u002Fsdk\u002Freference\u002Finterfaces\u002Fpagelistoptions","docs\u002Fsdk\u002Freference\u002Finterfaces\u002FPageListOptions",{"title":329,"path":330,"stem":331},"Interface: PageWithRedirect\u003CTContent>","\u002Fdocs\u002Fsdk\u002Freference\u002Finterfaces\u002Fpagewithredirect","docs\u002Fsdk\u002Freference\u002Finterfaces\u002FPageWithRedirect",{"title":333,"path":334,"stem":335},"Interface: PaginationMeta","\u002Fdocs\u002Fsdk\u002Freference\u002Finterfaces\u002Fpaginationmeta","docs\u002Fsdk\u002Freference\u002Finterfaces\u002FPaginationMeta",{"title":337,"path":338,"stem":339},"Interface: PreviewOption","\u002Fdocs\u002Fsdk\u002Freference\u002Finterfaces\u002Fpreviewoption","docs\u002Fsdk\u002Freference\u002Finterfaces\u002FPreviewOption",{"title":341,"path":342,"stem":343},"Interface: RedirectInfo","\u002Fdocs\u002Fsdk\u002Freference\u002Finterfaces\u002Fredirectinfo","docs\u002Fsdk\u002Freference\u002Finterfaces\u002FRedirectInfo",{"title":345,"path":346,"stem":347},"Interface: RefTypesOption","\u002Fdocs\u002Fsdk\u002Freference\u002Finterfaces\u002Freftypesoption","docs\u002Fsdk\u002Freference\u002Finterfaces\u002FRefTypesOption",{"title":349,"path":350,"stem":351},"Interface: SeoMetadata","\u002Fdocs\u002Fsdk\u002Freference\u002Finterfaces\u002Fseometadata","docs\u002Fsdk\u002Freference\u002Finterfaces\u002FSeoMetadata",{"title":353,"path":354,"stem":355},"Interface: TentoClientConfig","\u002Fdocs\u002Fsdk\u002Freference\u002Finterfaces\u002Ftentoclientconfig","docs\u002Fsdk\u002Freference\u002Finterfaces\u002FTentoClientConfig",{"title":357,"path":358,"stem":359},"Interface: TentoMedia","\u002Fdocs\u002Fsdk\u002Freference\u002Finterfaces\u002Ftentomedia","docs\u002Fsdk\u002Freference\u002Finterfaces\u002FTentoMedia",{"title":361,"path":362,"stem":363},"Interface: UpdateCollectionItemInput","\u002Fdocs\u002Fsdk\u002Freference\u002Finterfaces\u002Fupdatecollectioniteminput","docs\u002Fsdk\u002Freference\u002Finterfaces\u002FUpdateCollectionItemInput",{"title":365,"path":366,"stem":367},"Interface: UpdatePageInput","\u002Fdocs\u002Fsdk\u002Freference\u002Finterfaces\u002Fupdatepageinput","docs\u002Fsdk\u002Freference\u002Finterfaces\u002FUpdatePageInput",{"title":369,"path":370,"stem":371},"Interface: UploadMediaInput","\u002Fdocs\u002Fsdk\u002Freference\u002Finterfaces\u002Fuploadmediainput","docs\u002Fsdk\u002Freference\u002Finterfaces\u002FUploadMediaInput",{"title":373,"path":374,"stem":375},"Interface: WriteCollectionItem","\u002Fdocs\u002Fsdk\u002Freference\u002Finterfaces\u002Fwritecollectionitem","docs\u002Fsdk\u002Freference\u002Finterfaces\u002FWriteCollectionItem",{"title":377,"path":378,"stem":379},"Interface: WritePage","\u002Fdocs\u002Fsdk\u002Freference\u002Finterfaces\u002Fwritepage","docs\u002Fsdk\u002Freference\u002Finterfaces\u002FWritePage",{"title":381,"path":382,"stem":383,"children":384,"page":65},"Type Aliases","\u002Fdocs\u002Fsdk\u002Freference\u002Ftype-aliases","docs\u002Fsdk\u002Freference\u002Ftype-aliases",[385,389,393,397,401],{"title":386,"path":387,"stem":388},"Type Alias: BlogPostListItem","\u002Fdocs\u002Fsdk\u002Freference\u002Ftype-aliases\u002Fblogpostlistitem","docs\u002Fsdk\u002Freference\u002Ftype-aliases\u002FBlogPostListItem",{"title":390,"path":391,"stem":392},"Type Alias: BlogPostListResponse","\u002Fdocs\u002Fsdk\u002Freference\u002Ftype-aliases\u002Fblogpostlistresponse","docs\u002Fsdk\u002Freference\u002Ftype-aliases\u002FBlogPostListResponse",{"title":394,"path":395,"stem":396},"Type Alias: CollectionItem\u003CTContent>","\u002Fdocs\u002Fsdk\u002Freference\u002Ftype-aliases\u002Fcollectionitem","docs\u002Fsdk\u002Freference\u002Ftype-aliases\u002FCollectionItem",{"title":398,"path":399,"stem":400},"Type Alias: FilterOperator","\u002Fdocs\u002Fsdk\u002Freference\u002Ftype-aliases\u002Ffilteroperator","docs\u002Fsdk\u002Freference\u002Ftype-aliases\u002FFilterOperator",{"title":402,"path":403,"stem":404},"Type Alias: MediaMode","\u002Fdocs\u002Fsdk\u002Freference\u002Ftype-aliases\u002Fmediamode","docs\u002Fsdk\u002Freference\u002Ftype-aliases\u002FMediaMode",{"title":406,"path":407,"stem":408,"children":409,"page":65},"Typegen","\u002Fdocs\u002Ftypegen","docs\u002Ftypegen",[410,413,416],{"title":133,"path":411,"stem":412},"\u002Fdocs\u002Ftypegen\u002Fastro","docs\u002Ftypegen\u002Fastro",{"title":137,"path":414,"stem":415},"\u002Fdocs\u002Ftypegen\u002Fnextjs","docs\u002Ftypegen\u002Fnextjs",{"title":141,"path":417,"stem":418},"\u002Fdocs\u002Ftypegen\u002Fnuxt","docs\u002Ftypegen\u002Fnuxt",[420,450,460,478,556],{"title":5,"path":6,"stem":7,"children":421,"page":65},[422,424,426,428,430,432,434,436,438,440,442,444,446,448],{"title":10,"path":11,"stem":12,"icon":423},"i-lucide-sparkles",{"title":14,"path":15,"stem":16,"icon":425},"i-lucide-newspaper",{"title":18,"path":19,"stem":20,"icon":427},"i-lucide-terminal",{"title":22,"path":23,"stem":24,"icon":429},"i-lucide-layers",{"title":26,"path":27,"stem":28,"icon":431},"i-lucide-type",{"title":30,"path":31,"stem":32,"icon":433},"i-lucide-triangle-alert",{"title":34,"path":35,"stem":36,"icon":435},"i-lucide-image",{"title":38,"path":39,"stem":40,"icon":437},"i-lucide-map",{"title":42,"path":43,"stem":44,"icon":439},"i-lucide-file-text",{"title":46,"path":47,"stem":48,"icon":441},"i-lucide-sliders-horizontal",{"title":50,"path":51,"stem":52,"icon":443},"i-lucide-braces",{"title":54,"path":55,"stem":56,"icon":445},"i-lucide-wrench",{"title":58,"path":59,"stem":60,"icon":447},"i-lucide-shield-check",{"title":62,"path":63,"stem":64,"icon":449},"i-lucide-webhook",{"title":67,"path":68,"stem":69,"children":451,"page":65},[452,454,456,458],{"title":72,"path":73,"stem":74,"icon":453},"i-lucide-key-round",{"title":76,"path":77,"stem":78,"icon":455},"i-lucide-compass",{"title":80,"path":81,"stem":82,"icon":457},"i-lucide-rocket",{"title":84,"path":85,"stem":86,"icon":459},"i-lucide-pencil",{"title":88,"path":89,"stem":90,"children":461,"page":65},[462,464,466,468,470,472,474,476],{"title":93,"path":94,"stem":95,"icon":463},"i-lucide-layout-dashboard",{"title":97,"path":98,"stem":99,"icon":465},"i-lucide-package",{"title":101,"path":102,"stem":103,"icon":467},"i-lucide-git-branch",{"title":105,"path":106,"stem":107,"icon":469},"i-lucide-files",{"title":109,"path":110,"stem":111,"icon":471},"i-lucide-plug-zap",{"title":113,"path":114,"stem":115,"icon":473},"i-lucide-wand",{"title":117,"path":118,"stem":119,"icon":475},"i-lucide-users",{"title":121,"path":122,"stem":123,"icon":477},"i-lucide-pilcrow",{"title":125,"path":126,"stem":127,"children":479,"page":65},[480,481,482,484,486],{"title":38,"path":130,"stem":131,"icon":465},{"title":133,"path":134,"stem":135,"icon":457},{"title":137,"path":138,"stem":139,"icon":483},"i-lucide-triangle",{"title":141,"path":142,"stem":143,"icon":485},"i-lucide-hexagon",{"title":145,"path":146,"stem":147,"children":487,"page":65},[488,490,508,512,549],{"title":150,"path":151,"stem":152,"icon":489},null,{"title":154,"path":155,"stem":156,"children":491,"page":65},[492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507],{"title":159,"path":160,"stem":161,"icon":489},{"title":163,"path":164,"stem":165,"icon":489},{"title":167,"path":168,"stem":169,"icon":489},{"title":171,"path":172,"stem":173,"icon":489},{"title":175,"path":176,"stem":177,"icon":489},{"title":179,"path":180,"stem":181,"icon":489},{"title":183,"path":184,"stem":185,"icon":489},{"title":187,"path":188,"stem":189,"icon":489},{"title":191,"path":192,"stem":193,"icon":489},{"title":195,"path":196,"stem":197,"icon":489},{"title":199,"path":200,"stem":201,"icon":489},{"title":203,"path":204,"stem":205,"icon":489},{"title":207,"path":208,"stem":209,"icon":489},{"title":211,"path":212,"stem":213,"icon":489},{"title":215,"path":216,"stem":217,"icon":489},{"title":219,"path":220,"stem":221,"icon":489},{"title":223,"path":224,"stem":225,"children":509,"page":65},[510,511],{"title":228,"path":229,"stem":230,"icon":489},{"title":232,"path":233,"stem":234,"icon":489},{"title":236,"path":237,"stem":238,"children":513,"page":65},[514,515,516,517,518,519,520,521,522,523,524,525,526,527,528,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,545,546,547,548],{"title":241,"path":242,"stem":243,"icon":489},{"title":245,"path":246,"stem":247,"icon":489},{"title":249,"path":250,"stem":251,"icon":489},{"title":253,"path":254,"stem":255,"icon":489},{"title":257,"path":258,"stem":259,"icon":489},{"title":261,"path":262,"stem":263,"icon":489},{"title":265,"path":266,"stem":267,"icon":489},{"title":269,"path":270,"stem":271,"icon":489},{"title":273,"path":274,"stem":275,"icon":489},{"title":277,"path":278,"stem":279,"icon":489},{"title":281,"path":282,"stem":283,"icon":489},{"title":285,"path":286,"stem":287,"icon":489},{"title":289,"path":290,"stem":291,"icon":489},{"title":293,"path":294,"stem":295,"icon":489},{"title":297,"path":298,"stem":299,"icon":489},{"title":301,"path":302,"stem":303,"icon":489},{"title":305,"path":306,"stem":307,"icon":489},{"title":309,"path":310,"stem":311,"icon":489},{"title":313,"path":314,"stem":315,"icon":489},{"title":317,"path":318,"stem":319,"icon":489},{"title":321,"path":322,"stem":323,"icon":489},{"title":325,"path":326,"stem":327,"icon":489},{"title":329,"path":330,"stem":331,"icon":489},{"title":333,"path":334,"stem":335,"icon":489},{"title":337,"path":338,"stem":339,"icon":489},{"title":341,"path":342,"stem":343,"icon":489},{"title":345,"path":346,"stem":347,"icon":489},{"title":349,"path":350,"stem":351,"icon":489},{"title":353,"path":354,"stem":355,"icon":489},{"title":357,"path":358,"stem":359,"icon":489},{"title":361,"path":362,"stem":363,"icon":489},{"title":365,"path":366,"stem":367,"icon":489},{"title":369,"path":370,"stem":371,"icon":489},{"title":373,"path":374,"stem":375,"icon":489},{"title":377,"path":378,"stem":379,"icon":489},{"title":381,"path":382,"stem":383,"children":550,"page":65},[551,552,553,554,555],{"title":386,"path":387,"stem":388,"icon":489},{"title":390,"path":391,"stem":392,"icon":489},{"title":394,"path":395,"stem":396,"icon":489},{"title":398,"path":399,"stem":400,"icon":489},{"title":402,"path":403,"stem":404,"icon":489},{"title":406,"path":407,"stem":408,"children":557,"page":65},[558,559,560],{"title":133,"path":411,"stem":412,"icon":457},{"title":137,"path":414,"stem":415,"icon":483},{"title":141,"path":417,"stem":418,"icon":485},{"id":562,"title":101,"body":563,"description":2636,"extension":2637,"icon":467,"links":489,"meta":2638,"navigation":1955,"path":102,"seo":2639,"stem":103,"__hash__":2640},"docs\u002Fdocs\u002Fguides\u002Fmigrations.md",{"type":564,"value":565,"toc":2584},"minimark",[566,570,574,577,606,610,618,622,625,708,712,717,743,747,773,777,781,801,805,808,812,817,853,875,879,882,893,896,917,921,924,928,954,957,979,983,1005,1008,1036,1040,1043,1062,1068,1072,1075,1080,1110,1115,1147,1150,1170,1174,1177,1182,1193,1198,1223,1227,1231,1249,1253,1256,1276,1280,1283,1309,1312,1316,1320,1330,1341,1345,1352,1363,1367,1374,1385,1389,1396,1407,1411,1418,1432,1436,1439,1465,1468,1472,1478,1495,1501,1515,1519,1523,1537,1541,1555,1559,1563,1580,1584,1595,1599,1603,1606,1737,1740,1780,1816,1820,1831,1892,1903,1916,1976,1980,1985,1999,2004,2017,2022,2033,2038,2046,2050,2084,2087,2091,2094,2120,2124,2127,2306,2314,2318,2322,2332,2343,2347,2353,2361,2365,2386,2399,2403,2413,2416,2429,2432,2436,2458,2462,2465,2478,2481,2484,2514,2517,2521,2524,2556,2559,2563,2572,2574,2580],[567,568,569],"p",{},"Learn how to migrate your content from other CMS platforms to TentoCMS using the built-in migration tools.",[571,572,38],"h2",{"id":573},"overview",[567,575,576],{},"TentoCMS provides a powerful migration framework that allows you to import content from other headless CMS platforms. The migration process handles:",[578,579,580,588,594,600],"ul",{},[581,582,583,587],"li",{},[584,585,586],"strong",{},"Schema Discovery"," - Automatically detects page types, collections, and components",[581,589,590,593],{},[584,591,592],{},"Content Import"," - Imports all pages, collection items, and their content",[581,595,596,599],{},[584,597,598],{},"Media Migration"," - Downloads and imports all media assets",[581,601,602,605],{},[584,603,604],{},"Field Mapping"," - Intelligently maps field types between platforms",[571,607,609],{"id":608},"supported-platforms","Supported Platforms",[578,611,612],{},[581,613,614,617],{},[584,615,616],{},"ButterCMS"," - Full support for page types, collections, and media",[571,619,621],{"id":620},"migration-modes","Migration Modes",[567,623,624],{},"TentoCMS offers four migration modes to suit different needs:",[626,627,628,644],"table",{},[629,630,631],"thead",{},[632,633,634,638,641],"tr",{},[635,636,637],"th",{},"Mode",[635,639,640],{},"Description",[635,642,643],{},"Use Case",[645,646,647,661,674,687],"tbody",{},[632,648,649,655,658],{},[650,651,652],"td",{},[584,653,654],{},"Dry Run",[650,656,657],{},"Simulates the migration without making changes",[650,659,660],{},"Testing and validation",[632,662,663,668,671],{},[650,664,665],{},[584,666,667],{},"Schema Only",[650,669,670],{},"Imports only page types, collections, and components",[650,672,673],{},"Setting up structure first",[632,675,676,681,684],{},[650,677,678],{},[584,679,680],{},"Full",[650,682,683],{},"Imports everything (schema + content + media)",[650,685,686],{},"Complete migration",[632,688,689,694,705],{},[650,690,691],{},[584,692,693],{},"Incremental",[650,695,696,699,700,704],{},[584,697,698],{},"Currently behaves identically to Full"," — see the note under ",[701,702,693],"a",{"href":703},"#incremental"," below",[650,706,707],{},"Not yet a true ongoing-sync tool",[571,709,711],{"id":710},"before-you-start","Before You Start",[713,714,716],"h3",{"id":715},"prerequisites","Prerequisites",[718,719,720,726,737],"ol",{},[581,721,722,725],{},[584,723,724],{},"API Credentials"," - Obtain API key from your source CMS",[581,727,728,731,732,736],{},[584,729,730],{},"Developer Role"," - Migrations require ",[733,734,735],"code",{},"developer"," role or higher",[581,738,739,742],{},[584,740,741],{},"Backup"," - Always back up your existing data before migrating",[713,744,746],{"id":745},"planning-your-migration","Planning Your Migration",[718,748,749,755,761,767],{},[581,750,751,754],{},[584,752,753],{},"Review source content"," - Understand what you're migrating",[581,756,757,760],{},[584,758,759],{},"Choose mode"," - Start with \"Dry Run\" to preview",[581,762,763,766],{},[584,764,765],{},"Schedule downtime"," - Large migrations can take time",[581,768,769,772],{},[584,770,771],{},"Test first"," - Use a staging environment for initial tests",[571,774,776],{"id":775},"using-the-migration-wizard","Using the Migration Wizard",[713,778,780],{"id":779},"step-1-access-migrations","Step 1: Access Migrations",[718,782,783,786,795],{},[581,784,785],{},"Log in to the TentoCMS admin dashboard",[581,787,788,789,792,793],{},"Navigate to ",[584,790,791],{},"Settings"," → ",[584,794,101],{},[581,796,797,798],{},"Click ",[584,799,800],{},"New Migration",[713,802,804],{"id":803},"step-2-select-source-platform","Step 2: Select Source Platform",[567,806,807],{},"Choose your source CMS platform. ButterCMS is currently the only supported source.",[713,809,811],{"id":810},"step-3-enter-api-credentials","Step 3: Enter API Credentials",[813,814,816],"h4",{"id":815},"for-buttercms","For ButterCMS:",[718,818,819,836],{},[581,820,821,824,825],{},[584,822,823],{},"API Key"," - Your ButterCMS API token",[578,826,827,830],{},[581,828,829],{},"Found in ButterCMS dashboard under Settings → API Keys",[581,831,832,833],{},"Example: ",[733,834,835],{},"12345abcdef67890ghijklmn",[581,837,838,841,842],{},[584,839,840],{},"API URL"," (Optional)",[578,843,844,850],{},[581,845,846,847],{},"Leave blank to use default: ",[733,848,849],{},"https:\u002F\u002Fapi.buttercms.com\u002Fv2",[581,851,852],{},"Only change if using a custom endpoint",[567,854,855,858,859,862,863,866,867,869,870,874],{},[584,856,857],{},"Security Note",": API keys are currently stored as ",[584,860,861],{},"plaintext"," in the database (not encrypted), and are returned ",[584,864,865],{},"unredacted"," to any teammate with ",[733,868,735],{}," role or higher who lists or views a migration in your project. Do not use a key that grants more than read access to your source CMS, and delete the migration once it's no longer needed to remove the stored key. See ",[701,871,873],{"href":872},"#is-my-api-key-secure","Is my API key secure?"," below.",[713,876,878],{"id":877},"step-4-validate-connection","Step 4: Validate Connection",[567,880,881],{},"The wizard automatically validates your credentials by:",[578,883,884,887,890],{},[581,885,886],{},"Testing API connectivity",[581,888,889],{},"Verifying authentication",[581,891,892],{},"Checking permissions",[567,894,895],{},"If validation fails:",[578,897,898,905,911],{},[581,899,900,901,904],{},"✗ ",[584,902,903],{},"Invalid API key"," - Check your API token",[581,906,900,907,910],{},[584,908,909],{},"Connection error"," - Verify network connectivity",[581,912,900,913,916],{},[584,914,915],{},"Permission denied"," - Ensure API key has read access",[713,918,920],{"id":919},"step-5-choose-migration-mode","Step 5: Choose Migration Mode",[567,922,923],{},"Select the appropriate mode for your needs:",[813,925,927],{"id":926},"dry-run-recommended-first","Dry Run (Recommended First)",[578,929,930,936,942,948],{},[581,931,932,935],{},[584,933,934],{},"What it does",": Analyzes source content without importing",[581,937,938,941],{},[584,939,940],{},"Output",": Shows what would be imported",[581,943,944,947],{},[584,945,946],{},"Time",": Fast (under 1 minute)",[581,949,950,953],{},[584,951,952],{},"Use when",": First-time migration, testing",[813,955,667],{"id":956},"schema-only",[578,958,959,964,969,974],{},[581,960,961,963],{},[584,962,934],{},": Imports page types, collections, components",[581,965,966,968],{},[584,967,940],{},": Creates content structure only",[581,970,971,973],{},[584,972,946],{},": Medium (2-5 minutes)",[581,975,976,978],{},[584,977,952],{},": Setting up structure before content",[813,980,982],{"id":981},"full-migration","Full Migration",[578,984,985,990,995,1000],{},[581,986,987,989],{},[584,988,934],{},": Imports everything (schema + content + media)",[581,991,992,994],{},[584,993,940],{},": Complete import of all data",[581,996,997,999],{},[584,998,946],{},": Varies (5 minutes to several hours)",[581,1001,1002,1004],{},[584,1003,952],{},": One-time complete migration",[813,1006,693],{"id":1007},"incremental",[578,1009,1010,1016,1021,1026],{},[581,1011,1012,1015],{},[584,1013,1014],{},"What it actually does today",": exactly the same as Full — a complete, from-scratch re-import of schema, content, and media. There is no diffing against a previous migration and no \"only new\u002Fupdated\" filtering implemented yet, despite the mode existing as a selectable option.",[581,1017,1018,1020],{},[584,1019,940],{},": A full duplicate import, same as Full",[581,1022,1023,1025],{},[584,1024,946],{},": Same as Full",[581,1027,1028,1030,1031,1035],{},[584,1029,952],{},": Don't rely on this mode for ongoing sync yet — running it against a source you've already migrated will create duplicate pages\u002Fcollection items (see ",[701,1032,1034],{"href":1033},"#duplicates-and-re-runs","Duplicates"," below)",[713,1037,1039],{"id":1038},"step-6-review-start","Step 6: Review & Start",[567,1041,1042],{},"Review the migration summary:",[578,1044,1045,1051,1056],{},[581,1046,1047,1050],{},[584,1048,1049],{},"Source Platform",": ButterCMS (or other)",[581,1052,1053,1055],{},[584,1054,637],{},": Selected mode",[581,1057,1058,1061],{},[584,1059,1060],{},"Estimated Items",": Approximate count",[567,1063,797,1064,1067],{},[584,1065,1066],{},"Start Migration"," to begin.",[713,1069,1071],{"id":1070},"step-7-monitor-progress","Step 7: Monitor Progress",[567,1073,1074],{},"The migration runs in the background and shows real-time progress:",[567,1076,1077],{},[584,1078,1079],{},"Progress Indicators:",[578,1081,1082,1088,1093,1097,1101,1106],{},[581,1083,1084,1087],{},[584,1085,1086],{},"Page Types",": X of Y imported",[581,1089,1090,1087],{},[584,1091,1092],{},"Components",[581,1094,1095,1087],{},[584,1096,22],{},[581,1098,1099,1087],{},[584,1100,42],{},[581,1102,1103,1087],{},[584,1104,1105],{},"Collection Items",[581,1107,1108,1087],{},[584,1109,34],{},[567,1111,1112],{},[584,1113,1114],{},"Status Updates:",[578,1116,1117,1123,1129,1135,1141],{},[581,1118,1119,1122],{},[584,1120,1121],{},"Mapping"," - Analyzing source schema",[581,1124,1125,1128],{},[584,1126,1127],{},"Validating"," - Checking compatibility",[581,1130,1131,1134],{},[584,1132,1133],{},"Importing"," - Transferring data",[581,1136,1137,1140],{},[584,1138,1139],{},"Completed"," - Migration finished",[581,1142,1143,1146],{},[584,1144,1145],{},"Failed"," - Error occurred (see logs)",[567,1148,1149],{},"You can:",[578,1151,1152,1158,1164],{},[581,1153,1154,1157],{},[584,1155,1156],{},"Pause"," - Temporarily stop the migration",[581,1159,1160,1163],{},[584,1161,1162],{},"View Logs"," - See detailed activity",[581,1165,1166,1169],{},[584,1167,1168],{},"Leave Page"," - Migration continues in background",[713,1171,1173],{"id":1172},"step-8-review-results","Step 8: Review Results",[567,1175,1176],{},"Once completed, review the migration summary:",[567,1178,1179],{},[584,1180,1181],{},"Success Indicators:",[578,1183,1184,1187,1190],{},[581,1185,1186],{},"✓ All items imported successfully",[581,1188,1189],{},"✓ No errors in logs",[581,1191,1192],{},"✓ Content visible in admin",[567,1194,1195],{},[584,1196,1197],{},"Verify:",[718,1199,1200,1207,1212,1217],{},[581,1201,1202,1203,792,1205],{},"Check page types in ",[584,1204,791],{},[584,1206,1086],{},[581,1208,1209,1210],{},"Browse imported pages in ",[584,1211,42],{},[581,1213,1214,1215],{},"Review collections in ",[584,1216,22],{},[581,1218,1219,1220],{},"Verify media in ",[584,1221,1222],{},"Media Library",[571,1224,1226],{"id":1225},"migration-logs","Migration Logs",[713,1228,1230],{"id":1229},"viewing-logs","Viewing Logs",[718,1232,1233,1240,1243],{},[581,1234,1235,1236,792,1238],{},"Go to ",[584,1237,791],{},[584,1239,101],{},[581,1241,1242],{},"Click on a migration to view details",[581,1244,1245,1246,1248],{},"Scroll to ",[584,1247,1226],{}," section",[713,1250,1252],{"id":1251},"log-levels","Log Levels",[567,1254,1255],{},"Logs are categorized by severity — there are three levels (no separate \"debug\" level):",[578,1257,1258,1264,1270],{},[581,1259,1260,1263],{},[584,1261,1262],{},"🔴 Error"," - Failed operations (review these first)",[581,1265,1266,1269],{},[584,1267,1268],{},"⚠️ Warning"," - Potential issues (may need attention)",[581,1271,1272,1275],{},[584,1273,1274],{},"ℹ️ Info"," - General progress updates, including individual discovered items",[713,1277,1279],{"id":1278},"filtering-logs","Filtering Logs",[567,1281,1282],{},"Use the log filter dropdown:",[578,1284,1285,1291,1297,1303],{},[581,1286,1287,1290],{},[584,1288,1289],{},"All Logs"," - Show everything",[581,1292,1293,1296],{},[584,1294,1295],{},"Errors Only"," - Show only failures",[581,1298,1299,1302],{},[584,1300,1301],{},"Warnings"," - Show warnings and errors",[581,1304,1305,1308],{},[584,1306,1307],{},"Info"," - Show info and above",[571,1310,54],{"id":1311},"troubleshooting",[713,1313,1315],{"id":1314},"common-issues","Common Issues",[813,1317,1319],{"id":1318},"invalid-api-key","\"Invalid API key\"",[567,1321,1322,1325,1326,1329],{},[584,1323,1324],{},"Problem",": Authentication failed\n",[584,1327,1328],{},"Solution",":",[718,1331,1332,1335,1338],{},[581,1333,1334],{},"Verify API key is correct (no extra spaces)",[581,1336,1337],{},"Check key has not expired",[581,1339,1340],{},"Ensure key has read permissions",[813,1342,1344],{"id":1343},"connection-timeout","\"Connection timeout\"",[567,1346,1347,1349,1350,1329],{},[584,1348,1324],{},": Network connectivity issue\n",[584,1351,1328],{},[718,1353,1354,1357,1360],{},[581,1355,1356],{},"Check internet connection",[581,1358,1359],{},"Verify firewall settings",[581,1361,1362],{},"Try again in a few minutes",[813,1364,1366],{"id":1365},"schema-validation-failed","\"Schema validation failed\"",[567,1368,1369,1371,1372,1329],{},[584,1370,1324],{},": Incompatible field types\n",[584,1373,1328],{},[718,1375,1376,1379,1382],{},[581,1377,1378],{},"Review error logs for specific fields",[581,1380,1381],{},"Use \"Schema Only\" mode first",[581,1383,1384],{},"Manually adjust field types after import",[813,1386,1388],{"id":1387},"media-import-failed","\"Media import failed\"",[567,1390,1391,1393,1394,1329],{},[584,1392,1324],{},": Unable to download media\n",[584,1395,1328],{},[718,1397,1398,1401,1404],{},[581,1399,1400],{},"Check source media URLs are accessible",[581,1402,1403],{},"Verify sufficient storage space",[581,1405,1406],{},"Review logs for specific files",[813,1408,1410],{"id":1409},"migration-stuck-in-importing-status","\"Migration stuck in 'Importing' status\"",[567,1412,1413,1415,1416,1329],{},[584,1414,1324],{},": Migration appears frozen\n",[584,1417,1328],{},[718,1419,1420,1423,1426,1429],{},[581,1421,1422],{},"Check browser console for errors",[581,1424,1425],{},"Refresh page (migration continues in background)",[581,1427,1428],{},"Review logs for last activity",[581,1430,1431],{},"Contact support if stuck for >1 hour",[713,1433,1435],{"id":1434},"getting-help","Getting Help",[567,1437,1438],{},"If you encounter issues:",[718,1440,1441,1447,1453,1459],{},[581,1442,1443,1446],{},[584,1444,1445],{},"Review Logs"," - Check migration logs for errors",[581,1448,1449,1452],{},[584,1450,1451],{},"Check Status"," - Verify migration status",[581,1454,1455,1458],{},[584,1456,1457],{},"Try Dry Run"," - Test with dry run mode first",[581,1460,1461,1464],{},[584,1462,1463],{},"Contact Support"," - Provide migration ID and logs",[571,1466,10],{"id":1467},"best-practices",[713,1469,1471],{"id":1470},"before-migration","Before Migration",[567,1473,1474,1475],{},"✅ ",[584,1476,1477],{},"DO:",[578,1479,1480,1483,1486,1489,1492],{},[581,1481,1482],{},"Run a dry run first",[581,1484,1485],{},"Back up existing data",[581,1487,1488],{},"Test in staging environment",[581,1490,1491],{},"Schedule during low-traffic periods",[581,1493,1494],{},"Communicate with your team",[567,1496,1497,1498],{},"❌ ",[584,1499,1500],{},"DON'T:",[578,1502,1503,1506,1509,1512],{},[581,1504,1505],{},"Migrate directly to production without testing",[581,1507,1508],{},"Skip dry run mode",[581,1510,1511],{},"Ignore validation warnings",[581,1513,1514],{},"Run multiple migrations simultaneously",[713,1516,1518],{"id":1517},"during-migration","During Migration",[567,1520,1474,1521],{},[584,1522,1477],{},[578,1524,1525,1528,1531,1534],{},[581,1526,1527],{},"Monitor progress regularly",[581,1529,1530],{},"Review logs for errors",[581,1532,1533],{},"Keep browser tab open (optional)",[581,1535,1536],{},"Document any manual adjustments needed",[567,1538,1497,1539],{},[584,1540,1500],{},[578,1542,1543,1546,1549,1552],{},[581,1544,1545],{},"Delete source content yet",[581,1547,1548],{},"Make manual changes during migration",[581,1550,1551],{},"Start another migration",[581,1553,1554],{},"Close browser (migration continues, but you lose visibility)",[713,1556,1558],{"id":1557},"after-migration","After Migration",[567,1560,1474,1561],{},[584,1562,1477],{},[578,1564,1565,1568,1571,1574,1577],{},[581,1566,1567],{},"Verify all content imported",[581,1569,1570],{},"Test page rendering",[581,1572,1573],{},"Check media assets load",[581,1575,1576],{},"Update any hardcoded references",[581,1578,1579],{},"Clean up temporary data",[567,1581,1497,1582],{},[584,1583,1500],{},[578,1585,1586,1589,1592],{},[581,1587,1588],{},"Immediately delete source CMS data",[581,1590,1591],{},"Skip verification steps",[581,1593,1594],{},"Ignore warning logs",[571,1596,1598],{"id":1597},"advanced-topics","Advanced Topics",[713,1600,1602],{"id":1601},"field-type-mapping","Field Type Mapping",[567,1604,1605],{},"TentoCMS automatically maps field types:",[626,1607,1608,1617],{},[629,1609,1610],{},[632,1611,1612,1614],{},[635,1613,616],{},[635,1615,1616],{},"TentoCMS",[645,1618,1619,1626,1633,1640,1647,1654,1661,1668,1675,1682,1689,1696,1703,1710,1729],{},[632,1620,1621,1624],{},[650,1622,1623],{},"text",[650,1625,1623],{},[632,1627,1628,1631],{},[650,1629,1630],{},"textarea",[650,1632,1630],{},[632,1634,1635,1638],{},[650,1636,1637],{},"wysiwyg",[650,1639,1637],{},[632,1641,1642,1645],{},[650,1643,1644],{},"number",[650,1646,1644],{},[632,1648,1649,1652],{},[650,1650,1651],{},"boolean",[650,1653,1651],{},[632,1655,1656,1659],{},[650,1657,1658],{},"date",[650,1660,1658],{},[632,1662,1663,1666],{},[650,1664,1665],{},"datetime",[650,1667,1665],{},[632,1669,1670,1673],{},[650,1671,1672],{},"select",[650,1674,1672],{},[632,1676,1677,1680],{},[650,1678,1679],{},"radio",[650,1681,1679],{},[632,1683,1684,1687],{},[650,1685,1686],{},"checkbox",[650,1688,1686],{},[632,1690,1691,1694],{},[650,1692,1693],{},"image",[650,1695,1693],{},[632,1697,1698,1701],{},[650,1699,1700],{},"file",[650,1702,1700],{},[632,1704,1705,1708],{},[650,1706,1707],{},"media",[650,1709,1693],{},[632,1711,1712,1715],{},[650,1713,1714],{},"repeater",[650,1716,1717,1719,1720,1724,1725,1728],{},[584,1718,1714],{}," (a straight passthrough — sub-fields are inferred and mapped recursively, it is ",[1721,1722,1723],"em",{},"not"," converted to ",[733,1726,1727],{},"nestedComponent",")",[632,1730,1731,1734],{},[650,1732,1733],{},"relationship",[650,1735,1736],{},"reference",[567,1738,1739],{},"Two additional field types are inferred (not read from an explicit ButterCMS type) and mapped separately during schema import:",[626,1741,1742,1752],{},[629,1743,1744],{},[632,1745,1746,1749],{},[635,1747,1748],{},"Inferred source shape",[635,1750,1751],{},"TentoCMS field type",[645,1753,1754,1767],{},[632,1755,1756,1763],{},[650,1757,1758,1759,1762],{},"A single embedded object without a ",[733,1760,1761],{},"{type, fields}"," wrapper (ButterCMS \"single component\" convention)",[650,1764,1765],{},[733,1766,1727],{},[632,1768,1769,1775],{},[650,1770,1771,1772,1774],{},"An array of ",[733,1773,1761],{}," objects (a component picker)",[650,1776,1777],{},[733,1778,1779],{},"componentPicker",[567,1781,1782,1783,1785,1786,1785,1788,1785,1790,1792,1793,1795,1796,1798,1799,1801,1802,1805,1806,1808,1809,1812,1813,1815],{},"In practice, ButterCMS doesn't send explicit field-type metadata at all — TentoCMS infers each field's type from the shape of a sample value. That inference logic never produces ",[733,1784,1672],{},", ",[733,1787,1679],{},[733,1789,1686],{},[733,1791,1665],{},", or ",[733,1794,1700],{}," as a guessed type; those rows in the table above only matter if a value already arrives pre-labelled with one of those exact strings, which doesn't happen for ButterCMS. In practice, a select\u002Fradio\u002Fcheckbox-style short string comes through as ",[733,1797,1623],{},", and a file upload comes through as ",[733,1800,1693],{}," (via the CDN-URL\u002F",[733,1803,1804],{},"{url, file_name}"," shape checks) or ",[733,1807,1623],{}," if it isn't a recognised media shape. Plain date-like strings (",[733,1810,1811],{},"YYYY-MM-DD...",") are correctly inferred as ",[733,1814,1658],{},".",[713,1817,1819],{"id":1818},"component-naming-convention-buttercms","Component Naming Convention (ButterCMS)",[567,1821,1822,1823,1826,1827,1830],{},"When migrating from ButterCMS, component types are converted from ",[584,1824,1825],{},"snake_case"," to ",[584,1828,1829],{},"kebab-case"," to match TentoCMS slug conventions:",[626,1832,1833,1843],{},[629,1834,1835],{},[632,1836,1837,1840],{},[635,1838,1839],{},"ButterCMS Type",[635,1841,1842],{},"TentoCMS Component Slug",[645,1844,1845,1856,1868,1880],{},[632,1846,1847,1852],{},[650,1848,1849],{},[733,1850,1851],{},"hero",[650,1853,1854],{},[733,1855,1851],{},[632,1857,1858,1863],{},[650,1859,1860],{},[733,1861,1862],{},"cta_banner",[650,1864,1865],{},[733,1866,1867],{},"cta-banner",[632,1869,1870,1875],{},[650,1871,1872],{},[733,1873,1874],{},"quote_section",[650,1876,1877],{},[733,1878,1879],{},"quote-section",[632,1881,1882,1887],{},[650,1883,1884],{},[733,1885,1886],{},"text_block",[650,1888,1889],{},[733,1890,1891],{},"text-block",[567,1893,1894,1895,1898,1899,1902],{},"This applies to both component slugs and the ",[733,1896,1897],{},"componentSlug"," option on nested component fields in page type schemas. In the public API response, the component type appears as ",[733,1900,1901],{},"_type"," in kebab-case. If your codebase references component types by name (e.g. in frontend templates), update them from snake_case to kebab-case after migration.",[567,1904,1905,1908,1909,1912,1913,1915],{},[584,1906,1907],{},"Important API difference:"," ButterCMS returns the component name under the ",[733,1910,1911],{},"type"," property in snake_case. TentoCMS returns it under the ",[733,1914,1901],{}," property in kebab-case. Update your frontend templates accordingly:",[1917,1918,1923],"pre",{"className":1919,"code":1920,"language":1921,"meta":1922,"style":1922},"language-js shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u002F\u002F ButterCMS\ncomponent.type        \u002F\u002F \"cta_banner\"\n\n\u002F\u002F TentoCMS\ncomponent._type  \u002F\u002F \"cta-banner\"\n","js","",[733,1924,1925,1934,1950,1957,1963],{"__ignoreMap":1922},[1926,1927,1930],"span",{"class":1928,"line":1929},"line",1,[1926,1931,1933],{"class":1932},"sHwdD","\u002F\u002F ButterCMS\n",[1926,1935,1937,1941,1944,1947],{"class":1928,"line":1936},2,[1926,1938,1940],{"class":1939},"sTEyZ","component",[1926,1942,1815],{"class":1943},"sMK4o",[1926,1945,1946],{"class":1939},"type        ",[1926,1948,1949],{"class":1932},"\u002F\u002F \"cta_banner\"\n",[1926,1951,1953],{"class":1928,"line":1952},3,[1926,1954,1956],{"emptyLinePlaceholder":1955},true,"\n",[1926,1958,1960],{"class":1928,"line":1959},4,[1926,1961,1962],{"class":1932},"\u002F\u002F TentoCMS\n",[1926,1964,1966,1968,1970,1973],{"class":1928,"line":1965},5,[1926,1967,1940],{"class":1939},[1926,1969,1815],{"class":1943},[1926,1971,1972],{"class":1939},"_type  ",[1926,1974,1975],{"class":1932},"\u002F\u002F \"cta-banner\"\n",[713,1977,1979],{"id":1978},"handling-complex-fields","Handling Complex Fields",[567,1981,1982],{},[584,1983,1984],{},"Repeater Fields:",[578,1986,1987,1993,1996],{},[581,1988,1989,1990,1992],{},"Mapped straight through to TentoCMS's own ",[733,1991,1714],{}," field type (not converted to a nested component)",[581,1994,1995],{},"Sub-field structure preserved and mapped recursively",[581,1997,1998],{},"May require manual field adjustments",[567,2000,2001],{},[584,2002,2003],{},"Single Embedded Components:",[578,2005,2006,2012],{},[581,2007,2008,2009,2011],{},"A single embedded object (ButterCMS's convention for one inline component, with no picker) is mapped to a ",[733,2010,1727],{}," field",[581,2013,2014,2015,2011],{},"An array of components (a picker where editors add\u002Fremove\u002Freorder) is mapped to a ",[733,2016,1779],{},[567,2018,2019],{},[584,2020,2021],{},"Rich Text Content:",[578,2023,2024,2027,2030],{},[581,2025,2026],{},"HTML is preserved",[581,2028,2029],{},"Images embedded in content may need URL updates",[581,2031,2032],{},"Review after import",[567,2034,2035],{},[584,2036,2037],{},"References:",[578,2039,2040,2043],{},[581,2041,2042],{},"Relationship fields mapped to references",[581,2044,2045],{},"Links may need manual verification",[713,2047,2049],{"id":2048},"rate-limiting","Rate Limiting",[578,2051,2052,2058,2064,2070],{},[581,2053,2054,2057],{},[584,2055,2056],{},"Delay",": A defensive 100ms pause between every ButterCMS API request",[581,2059,2060,2063],{},[584,2061,2062],{},"Pagination",": Page types and collections are fetched at up to 100 items per page; blog posts are fetched at 10 items per page (a ButterCMS API limit)",[581,2065,2066,2069],{},[584,2067,2068],{},"Media batching",": media files are migrated into TentoCMS in batches of 50 per background step (unrelated to ButterCMS's own pagination — this is how TentoCMS fits large media libraries inside the Cloudflare Worker's execution-time limit)",[581,2071,2072,2075,2076,2079,2080,2083],{},[584,2073,2074],{},"Retries",": ",[584,2077,2078],{},"None."," If a step fails, the whole migration is marked ",[733,2081,2082],{},"failed"," and is not retried — TentoCMS's queue-based migration pipeline is deliberately \"acks-and-never-retries\" because re-running a step would re-create content that already succeeded, producing duplicates. If a migration fails partway through, create a new migration to try again.",[567,2085,2086],{},"Large migrations (>10,000 items) may take several hours.",[713,2088,2090],{"id":2089},"migration-scheduling","Migration Scheduling",[567,2092,2093],{},"For large migrations:",[718,2095,2096,2102,2108,2114],{},[581,2097,2098,2101],{},[584,2099,2100],{},"Plan timing"," - Schedule during off-peak hours",[581,2103,2104,2107],{},[584,2105,2106],{},"Split migration"," - Use \"Schema Only\" first to set up structure, then a \"Full\" import for content — see the note on \"Incremental\" mode below before relying on it for a two-stage import",[581,2109,2110,2113],{},[584,2111,2112],{},"Monitor resources"," - Watch database and storage usage",[581,2115,2116,2119],{},[584,2117,2118],{},"Set expectations"," - Communicate timeline to stakeholders",[571,2121,2123],{"id":2122},"api-based-migrations","API-Based Migrations",[567,2125,2126],{},"For programmatic migrations, use the Migration API:",[1917,2128,2132],{"className":2129,"code":2130,"language":2131,"meta":1922,"style":1922},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# Create migration\ncurl -X POST https:\u002F\u002Ftento-api.intelligentlending.co.uk\u002Fapi\u002Fv1\u002Fadmin\u002Fmigrations \\\n  -H \"Cookie: cms_session=YOUR_SESSION\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"sourcePlatform\": \"buttercms\",\n    \"mode\": \"full\",\n    \"config\": {\n      \"apiKey\": \"YOUR_BUTTERCMS_API_KEY\"\n    }\n  }'\n\n# Start migration\ncurl -X POST https:\u002F\u002Ftento-api.intelligentlending.co.uk\u002Fapi\u002Fv1\u002Fadmin\u002Fmigrations\u002F{id}\u002Fstart \\\n  -H \"Cookie: cms_session=YOUR_SESSION\"\n\n# Check status\ncurl https:\u002F\u002Ftento-api.intelligentlending.co.uk\u002Fapi\u002Fv1\u002Fadmin\u002Fmigrations\u002F{id} \\\n  -H \"Cookie: cms_session=YOUR_SESSION\"\n","bash",[733,2133,2134,2139,2158,2174,2187,2198,2204,2210,2216,2222,2228,2237,2242,2248,2262,2274,2279,2285,2295],{"__ignoreMap":1922},[1926,2135,2136],{"class":1928,"line":1929},[1926,2137,2138],{"class":1932},"# Create migration\n",[1926,2140,2141,2145,2149,2152,2155],{"class":1928,"line":1936},[1926,2142,2144],{"class":2143},"sBMFI","curl",[1926,2146,2148],{"class":2147},"sfazB"," -X",[1926,2150,2151],{"class":2147}," POST",[1926,2153,2154],{"class":2147}," https:\u002F\u002Ftento-api.intelligentlending.co.uk\u002Fapi\u002Fv1\u002Fadmin\u002Fmigrations",[1926,2156,2157],{"class":1939}," \\\n",[1926,2159,2160,2163,2166,2169,2172],{"class":1928,"line":1952},[1926,2161,2162],{"class":2147},"  -H",[1926,2164,2165],{"class":1943}," \"",[1926,2167,2168],{"class":2147},"Cookie: cms_session=YOUR_SESSION",[1926,2170,2171],{"class":1943},"\"",[1926,2173,2157],{"class":1939},[1926,2175,2176,2178,2180,2183,2185],{"class":1928,"line":1959},[1926,2177,2162],{"class":2147},[1926,2179,2165],{"class":1943},[1926,2181,2182],{"class":2147},"Content-Type: application\u002Fjson",[1926,2184,2171],{"class":1943},[1926,2186,2157],{"class":1939},[1926,2188,2189,2192,2195],{"class":1928,"line":1965},[1926,2190,2191],{"class":2147},"  -d",[1926,2193,2194],{"class":1943}," '",[1926,2196,2197],{"class":2147},"{\n",[1926,2199,2201],{"class":1928,"line":2200},6,[1926,2202,2203],{"class":2147},"    \"sourcePlatform\": \"buttercms\",\n",[1926,2205,2207],{"class":1928,"line":2206},7,[1926,2208,2209],{"class":2147},"    \"mode\": \"full\",\n",[1926,2211,2213],{"class":1928,"line":2212},8,[1926,2214,2215],{"class":2147},"    \"config\": {\n",[1926,2217,2219],{"class":1928,"line":2218},9,[1926,2220,2221],{"class":2147},"      \"apiKey\": \"YOUR_BUTTERCMS_API_KEY\"\n",[1926,2223,2225],{"class":1928,"line":2224},10,[1926,2226,2227],{"class":2147},"    }\n",[1926,2229,2231,2234],{"class":1928,"line":2230},11,[1926,2232,2233],{"class":2147},"  }",[1926,2235,2236],{"class":1943},"'\n",[1926,2238,2240],{"class":1928,"line":2239},12,[1926,2241,1956],{"emptyLinePlaceholder":1955},[1926,2243,2245],{"class":1928,"line":2244},13,[1926,2246,2247],{"class":1932},"# Start migration\n",[1926,2249,2251,2253,2255,2257,2260],{"class":1928,"line":2250},14,[1926,2252,2144],{"class":2143},[1926,2254,2148],{"class":2147},[1926,2256,2151],{"class":2147},[1926,2258,2259],{"class":2147}," https:\u002F\u002Ftento-api.intelligentlending.co.uk\u002Fapi\u002Fv1\u002Fadmin\u002Fmigrations\u002F{id}\u002Fstart",[1926,2261,2157],{"class":1939},[1926,2263,2265,2267,2269,2271],{"class":1928,"line":2264},15,[1926,2266,2162],{"class":2147},[1926,2268,2165],{"class":1943},[1926,2270,2168],{"class":2147},[1926,2272,2273],{"class":1943},"\"\n",[1926,2275,2277],{"class":1928,"line":2276},16,[1926,2278,1956],{"emptyLinePlaceholder":1955},[1926,2280,2282],{"class":1928,"line":2281},17,[1926,2283,2284],{"class":1932},"# Check status\n",[1926,2286,2288,2290,2293],{"class":1928,"line":2287},18,[1926,2289,2144],{"class":2143},[1926,2291,2292],{"class":2147}," https:\u002F\u002Ftento-api.intelligentlending.co.uk\u002Fapi\u002Fv1\u002Fadmin\u002Fmigrations\u002F{id}",[1926,2294,2157],{"class":1939},[1926,2296,2298,2300,2302,2304],{"class":1928,"line":2297},19,[1926,2299,2162],{"class":2147},[1926,2301,2165],{"class":1943},[1926,2303,2168],{"class":2147},[1926,2305,2273],{"class":1943},[567,2307,2308,2309,2313],{},"See ",[701,2310,2312],{"href":2311},"..\u002F..\u002Fadmin-api\u002Fmigrations","Migration API Documentation"," for full details.",[571,2315,2317],{"id":2316},"faq","FAQ",[713,2319,2321],{"id":2320},"how-long-does-a-migration-take","How long does a migration take?",[567,2323,2324,2326,2327,2329,2330,1329],{},[584,2325,654],{},": Under 1 minute\n",[584,2328,667],{},": 2-5 minutes\n",[584,2331,982],{},[578,2333,2334,2337,2340],{},[581,2335,2336],{},"Small (\u003C1,000 items): 5-15 minutes",[581,2338,2339],{},"Medium (1,000-10,000 items): 30 minutes - 2 hours",[581,2341,2342],{},"Large (>10,000 items): 2-12 hours",[713,2344,2346],{"id":2345},"can-i-pause-a-migration","Can I pause a migration?",[567,2348,2349,2350,2352],{},"Yes, click ",[584,2351,1156],{}," in the migration details page. Note:",[578,2354,2355,2358],{},[581,2356,2357],{},"Current batch will complete before pausing",[581,2359,2360],{},"A paused migration cannot be resumed or restarted — you must create a new migration to import again",[713,2362,2364],{"id":2363},"what-happens-if-migration-fails","What happens if migration fails?",[578,2366,2367,2370,2373,2380],{},[581,2368,2369],{},"Changes are NOT rolled back automatically — content already imported before the failure stays in TentoCMS",[581,2371,2372],{},"Failed items are logged in migration logs",[581,2374,2375,2376,2379],{},"A failed migration cannot be restarted — starting a migration only works from ",[733,2377,2378],{},"pending"," status, so you must create a new migration to import again",[581,2381,2382,2383,2385],{},"Re-running a new migration against the same source does ",[584,2384,1723],{}," dedupe against what the failed run already created — see \"Duplicates and re-runs\" below",[567,2387,2388,2391,2392,2394,2395,2398],{},[584,2389,2390],{},"The \"Edit & Retry\" button doesn't resume the failed job."," It's available from the migrations list for ",[733,2393,2082],{}," jobs (and ",[733,2396,2397],{},"completed"," dry runs), and it opens the new-migration wizard pre-filled with the same platform, mode, and connection config as the original job — letting you tweak something (like a bad API key) before trying again. Submitting that wizard creates a brand-new migration with its own ID; the original failed job is left as-is in the list, not updated or removed.",[713,2400,2402],{"id":2401},"duplicates-and-re-runs","Duplicates and re-runs",[567,2404,2405,2408,2409,2412],{},[584,2406,2407],{},"There is currently no content deduplication."," Pages and collection items are always created fresh — TentoCMS does not look up an existing item by slug\u002FID and update it instead. Running a migration twice against the same source (whether that's retrying after a failure, or running \"Incremental\" after a \"Full\") will create a ",[584,2410,2411],{},"second, duplicate"," set of pages and collection items.",[567,2414,2415],{},"The exceptions are:",[578,2417,2418,2423],{},[581,2419,2420,2422],{},[584,2421,34],{}," is deduplicated by file content hash — re-migrating the same file reuses the existing asset instead of duplicating it.",[581,2424,2425,2428],{},[584,2426,2427],{},"Blog authors"," are deduplicated by email\u002Fslug\u002Fname, so re-running a migration with blog content won't create duplicate author accounts (though it will still create duplicate posts).",[567,2430,2431],{},"If you need to re-run a migration, delete the pages\u002Fcollection items\u002Fblog posts it created first, or only ever run a given source migration once per project.",[713,2433,2435],{"id":2434},"will-this-overwrite-existing-content","Will this overwrite existing content?",[578,2437,2438,2443,2448],{},[581,2439,2440,2442],{},[584,2441,654],{},": No changes made",[581,2444,2445,2447],{},[584,2446,667],{},": Creates new schemas; running it again against an already-migrated source will attempt to create the same schemas again (subject to normal slug-uniqueness rules)",[581,2449,2450,2453,2454,2457],{},[584,2451,2452],{},"Full\u002FIncremental",": Both always ",[584,2455,2456],{},"create"," new pages and collection items — neither mode matches by slug to update existing content, and nothing is ever deleted. See \"Duplicates and re-runs\" above before running either mode more than once against the same source.",[713,2459,2461],{"id":2460},"can-i-undo-a-migration","Can I undo a migration?",[567,2463,2464],{},"No automatic undo. Best practices:",[718,2466,2467,2470,2472,2475],{},[581,2468,2469],{},"Always run dry run first",[581,2471,1488],{},[581,2473,2474],{},"Back up before migrating",[581,2476,2477],{},"Use soft delete if available",[713,2479,873],{"id":2480},"is-my-api-key-secure",[567,2482,2483],{},"No — today it is not:",[578,2485,2486,2500,2508,2511],{},[581,2487,2488,2489,2492,2493,2496,2497,2499],{},"API keys (and any other ",[733,2490,2491],{},"config"," values, such as ",[733,2494,2495],{},"password",") are stored as ",[584,2498,861],{}," in the database — not encrypted",[581,2501,2502,2503,866,2505,2507],{},"Returned ",[584,2504,865],{},[733,2506,735],{}," role or higher who lists or views a migration in your project",[581,2509,2510],{},"Not exposed outside the TentoCMS admin session (no public\u002Funauthenticated endpoint returns it) — but any developer+ teammate on the project can read it directly",[581,2512,2513],{},"Deleting the migration removes the stored key, since deletion is the only way to clear it",[567,2515,2516],{},"Use a scoped, read-only API key where your source CMS supports it, and delete the migration once you've confirmed the import succeeded.",[571,2518,2520],{"id":2519},"next-steps","Next Steps",[567,2522,2523],{},"After completing your migration:",[718,2525,2526,2532,2538,2544,2550],{},[581,2527,2528,2531],{},[584,2529,2530],{},"Verify Content"," - Review imported pages and collections",[581,2533,2534,2537],{},[584,2535,2536],{},"Test Publishing"," - Ensure publish workflow works",[581,2539,2540,2543],{},[584,2541,2542],{},"Update References"," - Fix any broken links",[581,2545,2546,2549],{},[584,2547,2548],{},"Configure Preview"," - Set up preview environments",[581,2551,2552,2555],{},[584,2553,2554],{},"Train Team"," - Onboard team to TentoCMS interface",[2557,2558],"hr",{},[571,2560,2562],{"id":2561},"see-also","See Also",[578,2564,2565],{},[581,2566,2567,2571],{},[701,2568,2570],{"href":2569},".\u002Fbuttercms-migration","ButterCMS to TentoCMS Application Migration Guide"," — Covers application-level code changes after content import",[2557,2573],{},[567,2575,2576,2579],{},[584,2577,2578],{},"Need Help?"," Contact your TentoCMS administrator or support channel.",[2581,2582,2583],"style",{},"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 .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 .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 .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}",{"title":1922,"searchDepth":1936,"depth":1936,"links":2585},[2586,2587,2588,2589,2593,2603,2608,2612,2617,2624,2625,2634,2635],{"id":573,"depth":1936,"text":38},{"id":608,"depth":1936,"text":609},{"id":620,"depth":1936,"text":621},{"id":710,"depth":1936,"text":711,"children":2590},[2591,2592],{"id":715,"depth":1952,"text":716},{"id":745,"depth":1952,"text":746},{"id":775,"depth":1936,"text":776,"children":2594},[2595,2596,2597,2598,2599,2600,2601,2602],{"id":779,"depth":1952,"text":780},{"id":803,"depth":1952,"text":804},{"id":810,"depth":1952,"text":811},{"id":877,"depth":1952,"text":878},{"id":919,"depth":1952,"text":920},{"id":1038,"depth":1952,"text":1039},{"id":1070,"depth":1952,"text":1071},{"id":1172,"depth":1952,"text":1173},{"id":1225,"depth":1936,"text":1226,"children":2604},[2605,2606,2607],{"id":1229,"depth":1952,"text":1230},{"id":1251,"depth":1952,"text":1252},{"id":1278,"depth":1952,"text":1279},{"id":1311,"depth":1936,"text":54,"children":2609},[2610,2611],{"id":1314,"depth":1952,"text":1315},{"id":1434,"depth":1952,"text":1435},{"id":1467,"depth":1936,"text":10,"children":2613},[2614,2615,2616],{"id":1470,"depth":1952,"text":1471},{"id":1517,"depth":1952,"text":1518},{"id":1557,"depth":1952,"text":1558},{"id":1597,"depth":1936,"text":1598,"children":2618},[2619,2620,2621,2622,2623],{"id":1601,"depth":1952,"text":1602},{"id":1818,"depth":1952,"text":1819},{"id":1978,"depth":1952,"text":1979},{"id":2048,"depth":1952,"text":2049},{"id":2089,"depth":1952,"text":2090},{"id":2122,"depth":1936,"text":2123},{"id":2316,"depth":1936,"text":2317,"children":2626},[2627,2628,2629,2630,2631,2632,2633],{"id":2320,"depth":1952,"text":2321},{"id":2345,"depth":1952,"text":2346},{"id":2363,"depth":1952,"text":2364},{"id":2401,"depth":1952,"text":2402},{"id":2434,"depth":1952,"text":2435},{"id":2460,"depth":1952,"text":2461},{"id":2480,"depth":1952,"text":873},{"id":2519,"depth":1936,"text":2520},{"id":2561,"depth":1936,"text":2562},"Migrating content from other CMS platforms using the built-in migration tools.","md",{},{"title":101,"description":2636},"9h1tdAmYKjiY85DTFiF2JW8YGGH-CgpMFo1yzVlIV6o",[2642,2644],{"title":97,"path":98,"stem":99,"description":2643,"children":-1},"Step-by-step migration of a ButterCMS application to TentoCMS.",{"title":105,"path":106,"stem":107,"description":2645,"children":-1},"Managing pages in the TentoCMS admin interface.",1787919218757]