[{"data":1,"prerenderedAt":1963},["ShallowReactive",2],{"navigation_docs":3,"docs-navigation-with-icons":419,"-docs-api-responses":561,"-docs-api-responses-surround":1958},[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":50,"body":563,"description":1953,"extension":1954,"icon":443,"links":489,"meta":1955,"navigation":1794,"path":51,"seo":1956,"stem":52,"__hash__":1957},"docs\u002Fdocs\u002Fapi\u002Fresponses.md",{"type":564,"value":565,"toc":1938},"minimark",[566,571,594,599,605,744,749,794,799,858,866,899,992,1004,1021,1024,1094,1097,1164,1169,1208,1213,1278,1343,1424,1427,1431,1474,1478,1481,1492,1495,1504,1523,1537,1541,1547,1556,1578,1588,1593,1631,1635,1649,1658,1688,1693,1699,1751,1756,1765,1770,1801,1806,1817,1821,1824,1833,1836,1845,1859,1863,1868,1887,1892,1911,1916,1932,1934],[567,568,570],"h2",{"id":569},"response-format","Response Format",[572,573,574,575,579,580,583,584,589,590,593],"p",{},"Success responses follow a consistent ",[576,577,578],"code",{},"data","\u002F",[576,581,582],{},"pagination"," structure across endpoints. Error responses mostly do too, but not uniformly — see ",[585,586,588],"a",{"href":587},"#error-responses","Error Responses"," below for the one documented exception (",[576,591,592],{},"GET \u002Fcollections\u002F:type"," pagination errors).",[595,596,598],"h3",{"id":597},"success-responses","Success Responses",[572,600,601],{},[602,603,604],"strong",{},"List Endpoint:",[606,607,612],"pre",{"className":608,"code":609,"language":610,"meta":611,"style":611},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"data\": [...],\n  \"pagination\": {\n    \"total\": 45,\n    \"page\": 1,\n    \"limit\": 20,\n    \"totalPages\": 3\n  }\n}\n","json","",[576,613,614,623,648,662,683,700,717,732,738],{"__ignoreMap":611},[615,616,619],"span",{"class":617,"line":618},"line",1,[615,620,622],{"class":621},"sMK4o","{\n",[615,624,626,629,632,635,638,641,645],{"class":617,"line":625},2,[615,627,628],{"class":621},"  \"",[615,630,578],{"class":631},"spNyl",[615,633,634],{"class":621},"\"",[615,636,637],{"class":621},":",[615,639,640],{"class":621}," [",[615,642,644],{"class":643},"sTEyZ","...",[615,646,647],{"class":621},"],\n",[615,649,651,653,655,657,659],{"class":617,"line":650},3,[615,652,628],{"class":621},[615,654,582],{"class":631},[615,656,634],{"class":621},[615,658,637],{"class":621},[615,660,661],{"class":621}," {\n",[615,663,665,668,672,674,676,680],{"class":617,"line":664},4,[615,666,667],{"class":621},"    \"",[615,669,671],{"class":670},"sBMFI","total",[615,673,634],{"class":621},[615,675,637],{"class":621},[615,677,679],{"class":678},"sbssI"," 45",[615,681,682],{"class":621},",\n",[615,684,686,688,691,693,695,698],{"class":617,"line":685},5,[615,687,667],{"class":621},[615,689,690],{"class":670},"page",[615,692,634],{"class":621},[615,694,637],{"class":621},[615,696,697],{"class":678}," 1",[615,699,682],{"class":621},[615,701,703,705,708,710,712,715],{"class":617,"line":702},6,[615,704,667],{"class":621},[615,706,707],{"class":670},"limit",[615,709,634],{"class":621},[615,711,637],{"class":621},[615,713,714],{"class":678}," 20",[615,716,682],{"class":621},[615,718,720,722,725,727,729],{"class":617,"line":719},7,[615,721,667],{"class":621},[615,723,724],{"class":670},"totalPages",[615,726,634],{"class":621},[615,728,637],{"class":621},[615,730,731],{"class":678}," 3\n",[615,733,735],{"class":617,"line":734},8,[615,736,737],{"class":621},"  }\n",[615,739,741],{"class":617,"line":740},9,[615,742,743],{"class":621},"}\n",[572,745,746],{},[602,747,748],{},"Single Resource:",[606,750,752],{"className":608,"code":751,"language":610,"meta":611,"style":611},"{\n  \"data\": {...},\n  \"redirect\": null\n}\n",[576,753,754,758,776,790],{"__ignoreMap":611},[615,755,756],{"class":617,"line":618},[615,757,622],{"class":621},[615,759,760,762,764,766,768,771,773],{"class":617,"line":625},[615,761,628],{"class":621},[615,763,578],{"class":631},[615,765,634],{"class":621},[615,767,637],{"class":621},[615,769,770],{"class":621}," {",[615,772,644],{"class":643},[615,774,775],{"class":621},"},\n",[615,777,778,780,783,785,787],{"class":617,"line":650},[615,779,628],{"class":621},[615,781,782],{"class":631},"redirect",[615,784,634],{"class":621},[615,786,637],{"class":621},[615,788,789],{"class":621}," null\n",[615,791,792],{"class":617,"line":664},[615,793,743],{"class":621},[572,795,796],{},[602,797,798],{},"Structure:",[800,801,802,818],"table",{},[803,804,805],"thead",{},[806,807,808,812,815],"tr",{},[809,810,811],"th",{},"Field",[809,813,814],{},"Type",[809,816,817],{},"Description",[819,820,821,834,846],"tbody",{},[806,822,823,828,831],{},[824,825,826],"td",{},[576,827,578],{},[824,829,830],{},"object\u002Farray",[824,832,833],{},"Response payload (array for lists, object for single)",[806,835,836,840,843],{},[824,837,838],{},[576,839,582],{},[824,841,842],{},"object",[824,844,845],{},"Pagination metadata (list endpoints only)",[806,847,848,852,855],{},[824,849,850],{},[576,851,782],{},[824,853,854],{},"object\u002Fnull",[824,856,857],{},"Redirect information (single page endpoint only)",[595,859,861,862,865],{"id":860},"component-data-shape-_type-flattening","Component data shape (",[576,863,864],{},"_type"," flattening)",[572,867,868,869,872,873,876,877,880,881,884,885,888,889,891,892,894,895,898],{},"Components embedded in page or collection content (via ",[576,870,871],{},"componentPicker"," or ",[576,874,875],{},"nestedComponent"," fields) are ",[602,878,879],{},"flattened"," in API responses. Each resolved component has its content fields at the object ",[602,882,883],{},"root"," — there is no ",[576,886,887],{},".fields"," sub-object — plus a ",[576,890,864],{}," field holding the component's type slug exactly as stored. Slugs only ever contain lowercase letters, numbers, and hyphens, so ",[576,893,864],{}," values are always kebab-case (for example ",[576,896,897],{},"\"cta-banner\"","); no casing transformation is applied by the API.",[606,900,902],{"className":608,"code":901,"language":610,"meta":611,"style":611},"{\n  \"_type\": \"cta-banner\",\n  \"headline\": \"Get started today\",\n  \"button_label\": \"Sign up\",\n  \"button_url\": \"\u002Fsignup\"\n}\n",[576,903,904,908,929,949,969,988],{"__ignoreMap":611},[615,905,906],{"class":617,"line":618},[615,907,622],{"class":621},[615,909,910,912,914,916,918,921,925,927],{"class":617,"line":625},[615,911,628],{"class":621},[615,913,864],{"class":631},[615,915,634],{"class":621},[615,917,637],{"class":621},[615,919,920],{"class":621}," \"",[615,922,924],{"class":923},"sfazB","cta-banner",[615,926,634],{"class":621},[615,928,682],{"class":621},[615,930,931,933,936,938,940,942,945,947],{"class":617,"line":650},[615,932,628],{"class":621},[615,934,935],{"class":631},"headline",[615,937,634],{"class":621},[615,939,637],{"class":621},[615,941,920],{"class":621},[615,943,944],{"class":923},"Get started today",[615,946,634],{"class":621},[615,948,682],{"class":621},[615,950,951,953,956,958,960,962,965,967],{"class":617,"line":664},[615,952,628],{"class":621},[615,954,955],{"class":631},"button_label",[615,957,634],{"class":621},[615,959,637],{"class":621},[615,961,920],{"class":621},[615,963,964],{"class":923},"Sign up",[615,966,634],{"class":621},[615,968,682],{"class":621},[615,970,971,973,976,978,980,982,985],{"class":617,"line":685},[615,972,628],{"class":621},[615,974,975],{"class":631},"button_url",[615,977,634],{"class":621},[615,979,637],{"class":621},[615,981,920],{"class":621},[615,983,984],{"class":923},"\u002Fsignup",[615,986,987],{"class":621},"\"\n",[615,989,990],{"class":617,"line":702},[615,991,743],{"class":621},[572,993,994,995,997,998,1000,1001,1003],{},"Content field keys keep their original casing (for example ",[576,996,955],{},"); ",[576,999,864],{}," is the component's slug verbatim. Use ",[576,1002,864],{}," to decide which frontend component to render for each entry.",[572,1005,1006,1007,1009,1010,1013,1014,1017,1018,1020],{},"A component's ",[576,1008,864],{}," is ",[602,1011,1012],{},"always"," present, including under ",[576,1015,1016],{},"?refTypes=false",". That parameter applies only to the ",[576,1019,864],{}," on resolved collection-item references, which is a different discriminator that happens to share the key name.",[595,1022,588],{"id":1023},"error-responses",[572,1025,1026,1027,1030,1031,1034,1035,579,1037,1039,1040,1043,1044,1030,1047,1043,1050,1053,1054,1057,1058,1061,1062,1064,1065,579,1067,1069,1070,1030,1073,1076,1077,1080,1081,1084,1085,1088,1089,1093],{},"Most errors return a consistent structure — but this isn't applied uniformly across every list endpoint. ",[576,1028,1029],{},"GET \u002Fpages"," and ",[576,1032,1033],{},"GET \u002Fblog"," validate their ",[576,1036,690],{},[576,1038,707],{}," params by hand (",[576,1041,1042],{},"apiPaginationSchema.safeParse()"," in ",[576,1045,1046],{},"apps\u002Fapi\u002Fsrc\u002Froutes\u002Fpublic\u002Fpages.ts:119",[576,1048,1049],{},"blogPostQuerySchema.safeParse()",[576,1051,1052],{},"apps\u002Fapi\u002Fsrc\u002Froutes\u002Fpublic\u002Fblog.ts:234",") and both return the envelope below on failure — ",[576,1055,1056],{},"INVALID_PAGINATION"," for pages, ",[576,1059,1060],{},"INVALID_QUERY"," for blog. ",[576,1063,592],{},", however, validates the same ",[576,1066,690],{},[576,1068,707],{}," params with ",[576,1071,1072],{},"zValidator('query', listQuerySchema)",[602,1074,1075],{},"no custom error hook"," (",[576,1078,1079],{},"apps\u002Fapi\u002Fsrc\u002Froutes\u002Fpublic\u002Fcollections.ts:159",") — a bad value there (e.g. ",[576,1082,1083],{},"?limit=500",") skips this envelope entirely and returns ",[576,1086,1087],{},"@hono\u002Fzod-validator","'s raw default shape instead. See ",[585,1090,1092],{"href":1091},".\u002Flimits-and-errors#the-raw-zod-validator-shape","Limits & Errors"," for what that raw shape actually looks like.",[572,1095,1096],{},"The consistent envelope, where it does apply:",[606,1098,1100],{"className":608,"code":1099,"language":610,"meta":611,"style":611},"{\n  \"error\": {\n    \"code\": \"ERROR_CODE\",\n    \"message\": \"Human-readable error message\"\n  }\n}\n",[576,1101,1102,1106,1119,1138,1156,1160],{"__ignoreMap":611},[615,1103,1104],{"class":617,"line":618},[615,1105,622],{"class":621},[615,1107,1108,1110,1113,1115,1117],{"class":617,"line":625},[615,1109,628],{"class":621},[615,1111,1112],{"class":631},"error",[615,1114,634],{"class":621},[615,1116,637],{"class":621},[615,1118,661],{"class":621},[615,1120,1121,1123,1125,1127,1129,1131,1134,1136],{"class":617,"line":650},[615,1122,667],{"class":621},[615,1124,576],{"class":670},[615,1126,634],{"class":621},[615,1128,637],{"class":621},[615,1130,920],{"class":621},[615,1132,1133],{"class":923},"ERROR_CODE",[615,1135,634],{"class":621},[615,1137,682],{"class":621},[615,1139,1140,1142,1145,1147,1149,1151,1154],{"class":617,"line":664},[615,1141,667],{"class":621},[615,1143,1144],{"class":670},"message",[615,1146,634],{"class":621},[615,1148,637],{"class":621},[615,1150,920],{"class":621},[615,1152,1153],{"class":923},"Human-readable error message",[615,1155,987],{"class":621},[615,1157,1158],{"class":617,"line":685},[615,1159,737],{"class":621},[615,1161,1162],{"class":617,"line":702},[615,1163,743],{"class":621},[572,1165,1166],{},[602,1167,1168],{},"Error Structure:",[800,1170,1171,1181],{},[803,1172,1173],{},[806,1174,1175,1177,1179],{},[809,1176,811],{},[809,1178,814],{},[809,1180,817],{},[819,1182,1183,1196],{},[806,1184,1185,1190,1193],{},[824,1186,1187],{},[576,1188,1189],{},"error.code",[824,1191,1192],{},"string",[824,1194,1195],{},"Machine-readable error code",[806,1197,1198,1203,1205],{},[824,1199,1200],{},[576,1201,1202],{},"error.message",[824,1204,1192],{},[824,1206,1207],{},"Human-readable error description",[572,1209,1210],{},[602,1211,1212],{},"Example Errors:",[606,1214,1216],{"className":608,"code":1215,"language":610,"meta":611,"style":611},"{\n  \"error\": {\n    \"code\": \"UNAUTHORIZED\",\n    \"message\": \"API key required. Provide via X-API-Key header or api_key query param.\"\n  }\n}\n",[576,1217,1218,1222,1234,1253,1270,1274],{"__ignoreMap":611},[615,1219,1220],{"class":617,"line":618},[615,1221,622],{"class":621},[615,1223,1224,1226,1228,1230,1232],{"class":617,"line":625},[615,1225,628],{"class":621},[615,1227,1112],{"class":631},[615,1229,634],{"class":621},[615,1231,637],{"class":621},[615,1233,661],{"class":621},[615,1235,1236,1238,1240,1242,1244,1246,1249,1251],{"class":617,"line":650},[615,1237,667],{"class":621},[615,1239,576],{"class":670},[615,1241,634],{"class":621},[615,1243,637],{"class":621},[615,1245,920],{"class":621},[615,1247,1248],{"class":923},"UNAUTHORIZED",[615,1250,634],{"class":621},[615,1252,682],{"class":621},[615,1254,1255,1257,1259,1261,1263,1265,1268],{"class":617,"line":664},[615,1256,667],{"class":621},[615,1258,1144],{"class":670},[615,1260,634],{"class":621},[615,1262,637],{"class":621},[615,1264,920],{"class":621},[615,1266,1267],{"class":923},"API key required. Provide via X-API-Key header or api_key query param.",[615,1269,987],{"class":621},[615,1271,1272],{"class":617,"line":685},[615,1273,737],{"class":621},[615,1275,1276],{"class":617,"line":702},[615,1277,743],{"class":621},[606,1279,1281],{"className":608,"code":1280,"language":610,"meta":611,"style":611},"{\n  \"error\": {\n    \"code\": \"NOT_FOUND\",\n    \"message\": \"Page with slug 'nonexistent' not found\"\n  }\n}\n",[576,1282,1283,1287,1299,1318,1335,1339],{"__ignoreMap":611},[615,1284,1285],{"class":617,"line":618},[615,1286,622],{"class":621},[615,1288,1289,1291,1293,1295,1297],{"class":617,"line":625},[615,1290,628],{"class":621},[615,1292,1112],{"class":631},[615,1294,634],{"class":621},[615,1296,637],{"class":621},[615,1298,661],{"class":621},[615,1300,1301,1303,1305,1307,1309,1311,1314,1316],{"class":617,"line":650},[615,1302,667],{"class":621},[615,1304,576],{"class":670},[615,1306,634],{"class":621},[615,1308,637],{"class":621},[615,1310,920],{"class":621},[615,1312,1313],{"class":923},"NOT_FOUND",[615,1315,634],{"class":621},[615,1317,682],{"class":621},[615,1319,1320,1322,1324,1326,1328,1330,1333],{"class":617,"line":664},[615,1321,667],{"class":621},[615,1323,1144],{"class":670},[615,1325,634],{"class":621},[615,1327,637],{"class":621},[615,1329,920],{"class":621},[615,1331,1332],{"class":923},"Page with slug 'nonexistent' not found",[615,1334,987],{"class":621},[615,1336,1337],{"class":617,"line":685},[615,1338,737],{"class":621},[615,1340,1341],{"class":617,"line":702},[615,1342,743],{"class":621},[606,1344,1346],{"className":608,"code":1345,"language":610,"meta":611,"style":611},"{\n  \"error\": {\n    \"code\": \"RATE_LIMITED\",\n    \"message\": \"Too many requests. Please try again later.\",\n    \"retryAfter\": 42\n  }\n}\n",[576,1347,1348,1352,1364,1383,1402,1416,1420],{"__ignoreMap":611},[615,1349,1350],{"class":617,"line":618},[615,1351,622],{"class":621},[615,1353,1354,1356,1358,1360,1362],{"class":617,"line":625},[615,1355,628],{"class":621},[615,1357,1112],{"class":631},[615,1359,634],{"class":621},[615,1361,637],{"class":621},[615,1363,661],{"class":621},[615,1365,1366,1368,1370,1372,1374,1376,1379,1381],{"class":617,"line":650},[615,1367,667],{"class":621},[615,1369,576],{"class":670},[615,1371,634],{"class":621},[615,1373,637],{"class":621},[615,1375,920],{"class":621},[615,1377,1378],{"class":923},"RATE_LIMITED",[615,1380,634],{"class":621},[615,1382,682],{"class":621},[615,1384,1385,1387,1389,1391,1393,1395,1398,1400],{"class":617,"line":664},[615,1386,667],{"class":621},[615,1388,1144],{"class":670},[615,1390,634],{"class":621},[615,1392,637],{"class":621},[615,1394,920],{"class":621},[615,1396,1397],{"class":923},"Too many requests. Please try again later.",[615,1399,634],{"class":621},[615,1401,682],{"class":621},[615,1403,1404,1406,1409,1411,1413],{"class":617,"line":685},[615,1405,667],{"class":621},[615,1407,1408],{"class":670},"retryAfter",[615,1410,634],{"class":621},[615,1412,637],{"class":621},[615,1414,1415],{"class":678}," 42\n",[615,1417,1418],{"class":617,"line":702},[615,1419,737],{"class":621},[615,1421,1422],{"class":617,"line":719},[615,1423,743],{"class":621},[1425,1426],"hr",{},[567,1428,1430],{"id":1429},"cache-headers","Cache Headers",[572,1432,1433,1450,1451,1438,1453,1456,1457,1460,1461,1464,1465,1468,1469,1473],{},[602,1434,1435,1436,1438,1439,1442,1443,1030,1446,1449],{},"Only the pages endpoints (",[576,1437,1029],{},", ",[576,1440,1441],{},"GET \u002Fpages\u002F:slug",") set ",[576,1444,1445],{},"Cache-Control",[576,1447,1448],{},"ETag"," headers."," ",[576,1452,592],{},[576,1454,1455],{},"GET \u002Fcollections\u002F:type\u002F:slug",", and the ",[576,1458,1459],{},"\u002Fblog"," endpoints do not set either header on their published (non-preview) responses — everything in this section describes pages-endpoint behavior only. All endpoints do set an ",[576,1462,1463],{},"X-Cache: HIT|MISS"," header reflecting the internal KV cache, and a ",[576,1466,1467],{},"Vary"," header (see ",[585,1470,1472],{"href":1471},"#vary-header","below",").",[595,1475,1477],{"id":1476},"x-cache-header","X-Cache Header",[572,1479,1480],{},"Every pages, collections, and blog response includes:",[606,1482,1486],{"className":1483,"code":1484,"language":1485,"meta":611,"style":611},"language-http shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","X-Cache: HIT\n","http",[576,1487,1488],{"__ignoreMap":611},[615,1489,1490],{"class":617,"line":618},[615,1491,1484],{},[572,1493,1494],{},"or",[606,1496,1498],{"className":1483,"code":1497,"language":1485,"meta":611,"style":611},"X-Cache: MISS\n",[576,1499,1500],{"__ignoreMap":611},[615,1501,1502],{"class":617,"line":618},[615,1503,1497],{},[572,1505,1506,1507,1510,1511,1514,1515,1518,1519,1522],{},"This reflects whether the response came from TentoCMS's own internal server-side KV cache (",[576,1508,1509],{},"PublicContentCache",") — ",[576,1512,1513],{},"HIT"," means it was served from KV without touching D1; ",[576,1516,1517],{},"MISS"," means the content was freshly queried from D1 and (outside preview mode) written to KV for next time. It is unrelated to CDN or browser caching and is ",[602,1520,1521],{},"not present"," on the media metadata\u002Fserving endpoints, which don't use this internal cache.",[572,1524,1525,1009,1528,1531,1532,579,1534,1536],{},[576,1526,1527],{},"X-Cache",[602,1529,1530],{},"diagnostic only"," — it's useful when debugging staleness or investigating latency, but clients don't need to read it or branch on it for correct behaviour. Don't build application logic around its value; use ",[576,1533,1445],{},[576,1535,1448],{}," (pages only, see below) or your own client-side caching for actual caching decisions.",[595,1538,1540],{"id":1539},"cache-control-header","Cache-Control Header",[572,1542,1543,1546],{},[602,1544,1545],{},"Public read endpoints"," (pages list + single resource, and blog\u002Fcollections\u002Fmedia) share one value:",[606,1548,1550],{"className":1483,"code":1549,"language":1485,"meta":611,"style":611},"Cache-Control: public, max-age=900, stale-while-revalidate=1800\n",[576,1551,1552],{"__ignoreMap":611},[615,1553,1554],{"class":617,"line":618},[615,1555,1549],{},[1557,1558,1559,1566,1572],"ul",{},[1560,1561,1562,1565],"li",{},[576,1563,1564],{},"public",": Response can be cached by CDN and browser",[1560,1567,1568,1571],{},[576,1569,1570],{},"max-age=900",": Fresh for 15 minutes",[1560,1573,1574,1577],{},[576,1575,1576],{},"stale-while-revalidate=1800",": Serve stale for up to 30 minutes while revalidating in the background",[572,1579,1580,1581,1584,1585,1587],{},"Content published\u002Funpublished through the admin API is also purged from the edge cache, so those edits are reflected sooner than ",[576,1582,1583],{},"max-age"," alone would imply. (Scheduled publishes and browser caches are not purged, so they refresh on ",[576,1586,1583],{}," expiry.)",[572,1589,1590],{},[602,1591,1592],{},"Cache Behavior:",[800,1594,1595,1605],{},[803,1596,1597],{},[806,1598,1599,1602],{},[809,1600,1601],{},"Time since fetch",[809,1603,1604],{},"Behaviour",[819,1606,1607,1615,1623],{},[806,1608,1609,1612],{},[824,1610,1611],{},"0–15 min",[824,1613,1614],{},"Served from cache (fresh)",[806,1616,1617,1620],{},[824,1618,1619],{},"15–45 min",[824,1621,1622],{},"Served from cache (stale) while revalidating in the background",[806,1624,1625,1628],{},[824,1626,1627],{},"45 min+",[824,1629,1630],{},"Cache expired, fetched fresh from API",[595,1632,1634],{"id":1633},"etag-header","ETag Header",[572,1636,1637,1638,1076,1641,1438,1643,1645,1646,1648],{},"The ",[602,1639,1640],{},"pages endpoints only",[576,1642,1029],{},[576,1644,1441],{},") include an ",[576,1647,1448],{}," header:",[606,1650,1652],{"className":1483,"code":1651,"language":1485,"meta":611,"style":611},"ETag: \"a1b2c3d4e5f6g7h8\"\n",[576,1653,1654],{"__ignoreMap":611},[615,1655,1656],{"class":617,"line":618},[615,1657,1651],{},[572,1659,1660,1030,1662,1665,1666,1668,1669,1672,1673,1676,1677,1680,1681,1683,1684,1687],{},[576,1661,22],{},[576,1663,1664],{},"blog"," responses never set ",[576,1667,1448],{},". ",[576,1670,1671],{},"304 Not Modified"," short-circuiting is enabled on the ",[602,1674,1675],{},"single-resource"," page endpoint (",[576,1678,1679],{},"GET \u002Fapi\u002Fv1\u002Fpages\u002F:slug","). The pages list endpoint returns an ",[576,1682,1448],{}," but does not honour ",[576,1685,1686],{},"If-None-Match",".",[572,1689,1690],{},[602,1691,1692],{},"Conditional Requests:",[572,1694,1695,1696,1698],{},"Send the ",[576,1697,1686],{}," header with the ETag value on a single-page request:",[606,1700,1704],{"className":1701,"code":1702,"language":1703,"meta":611,"style":611},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","curl -H \"X-API-Key: tento_pk_...\" \\\n     -H \"If-None-Match: \\\"a1b2c3d4e5f6g7h8\\\"\" \\\n     https:\u002F\u002Ftento-api.intelligentlending.co.uk\u002Fapi\u002Fv1\u002Fpages\u002Fabout-us\n","bash",[576,1705,1706,1724,1746],{"__ignoreMap":611},[615,1707,1708,1711,1714,1716,1719,1721],{"class":617,"line":618},[615,1709,1710],{"class":670},"curl",[615,1712,1713],{"class":923}," -H",[615,1715,920],{"class":621},[615,1717,1718],{"class":923},"X-API-Key: tento_pk_...",[615,1720,634],{"class":621},[615,1722,1723],{"class":643}," \\\n",[615,1725,1726,1729,1731,1734,1737,1740,1742,1744],{"class":617,"line":625},[615,1727,1728],{"class":923},"     -H",[615,1730,920],{"class":621},[615,1732,1733],{"class":923},"If-None-Match: ",[615,1735,1736],{"class":643},"\\\"",[615,1738,1739],{"class":923},"a1b2c3d4e5f6g7h8",[615,1741,1736],{"class":643},[615,1743,634],{"class":621},[615,1745,1723],{"class":643},[615,1747,1748],{"class":617,"line":650},[615,1749,1750],{"class":923},"     https:\u002F\u002Ftento-api.intelligentlending.co.uk\u002Fapi\u002Fv1\u002Fpages\u002Fabout-us\n",[572,1752,1753],{},[602,1754,1755],{},"Response if unchanged:",[606,1757,1759],{"className":1483,"code":1758,"language":1485,"meta":611,"style":611},"HTTP\u002F1.1 304 Not Modified\n",[576,1760,1761],{"__ignoreMap":611},[615,1762,1763],{"class":617,"line":618},[615,1764,1758],{},[572,1766,1767],{},[602,1768,1769],{},"Response if changed:",[606,1771,1773],{"className":1483,"code":1772,"language":1485,"meta":611,"style":611},"HTTP\u002F1.1 200 OK\nETag: \"x1y2z3a4b5c6d7e8\"\nContent-Type: application\u002Fjson\n\n{...}\n",[576,1774,1775,1780,1785,1790,1796],{"__ignoreMap":611},[615,1776,1777],{"class":617,"line":618},[615,1778,1779],{},"HTTP\u002F1.1 200 OK\n",[615,1781,1782],{"class":617,"line":625},[615,1783,1784],{},"ETag: \"x1y2z3a4b5c6d7e8\"\n",[615,1786,1787],{"class":617,"line":650},[615,1788,1789],{},"Content-Type: application\u002Fjson\n",[615,1791,1792],{"class":617,"line":664},[615,1793,1795],{"emptyLinePlaceholder":1794},true,"\n",[615,1797,1798],{"class":617,"line":685},[615,1799,1800],{},"{...}\n",[572,1802,1803],{},[602,1804,1805],{},"Benefits:",[1557,1807,1808,1811,1814],{},[1560,1809,1810],{},"Reduced bandwidth usage",[1560,1812,1813],{},"Faster responses (no body transfer)",[1560,1815,1816],{},"Lower server load",[595,1818,1820],{"id":1819},"vary-header","Vary Header",[572,1822,1823],{},"Page responses include:",[606,1825,1827],{"className":1483,"code":1826,"language":1485,"meta":611,"style":611},"Vary: Accept-Encoding, X-Preview-Key, X-API-Key\n",[576,1828,1829],{"__ignoreMap":611},[615,1830,1831],{"class":617,"line":618},[615,1832,1826],{},[572,1834,1835],{},"Media responses include:",[606,1837,1839],{"className":1483,"code":1838,"language":1485,"meta":611,"style":611},"Vary: Accept-Encoding, X-API-Key\n",[576,1840,1841],{"__ignoreMap":611},[615,1842,1843],{"class":617,"line":618},[615,1844,1838],{},[572,1846,1847,1850,1851,1854,1855,1858],{},[576,1848,1849],{},"Accept-Encoding"," ensures proper caching when content is compressed (gzip, brotli). ",[576,1852,1853],{},"X-API-Key"," partitions the shared cache by tenant (tenant identity comes from the API key, not the URL), and ",[576,1856,1857],{},"X-Preview-Key"," (on page responses) keeps preview and public responses on separate cache entries.",[595,1860,1862],{"id":1861},"cache-strategy-recommendations","Cache Strategy Recommendations",[572,1864,1865],{},[602,1866,1867],{},"For Static Site Generators (Next.js, Gatsby, Hugo):",[1869,1870,1871,1874,1877,1880],"ol",{},[1560,1872,1873],{},"Fetch at build time",[1560,1875,1876],{},"Cache in CDN with long TTL (1 hour+)",[1560,1878,1879],{},"Revalidate periodically (ISR in Next.js)",[1560,1881,1882,1883,1886],{},"Use ",[576,1884,1885],{},"stale-while-revalidate"," for instant responses",[572,1888,1889],{},[602,1890,1891],{},"For Client-Side Apps (React, Vue, Angular):",[1869,1893,1894,1897,1902,1905],{},[1560,1895,1896],{},"Fetch on demand",[1560,1898,1882,1899,1901],{},[576,1900,1448],{}," for conditional requests",[1560,1903,1904],{},"Implement client-side cache (SWR, React Query)",[1560,1906,1907,1908,1910],{},"Respect ",[576,1909,1445],{}," headers",[572,1912,1913],{},[602,1914,1915],{},"For Server-Rendered Apps (Nuxt, Next.js SSR):",[1869,1917,1918,1921,1924,1927],{},[1560,1919,1920],{},"Fetch on each request",[1560,1922,1923],{},"Pass through cache headers to client",[1560,1925,1926],{},"Implement server-side cache (Redis, Memcached)",[1560,1928,1929,1930],{},"Use conditional requests with ",[576,1931,1686],{},[1425,1933],{},[1935,1936,1937],"style",{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html .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 .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}",{"title":611,"searchDepth":625,"depth":625,"links":1939},[1940,1946],{"id":569,"depth":625,"text":570,"children":1941},[1942,1943,1945],{"id":597,"depth":650,"text":598},{"id":860,"depth":650,"text":1944},"Component data shape (_type flattening)",{"id":1023,"depth":650,"text":588},{"id":1429,"depth":625,"text":1430,"children":1947},[1948,1949,1950,1951,1952],{"id":1476,"depth":650,"text":1477},{"id":1539,"depth":650,"text":1540},{"id":1633,"depth":650,"text":1634},{"id":1819,"depth":650,"text":1820},{"id":1861,"depth":650,"text":1862},"The success and error envelopes, component data shape, and the cache headers every response carries.","md",{},{"title":50,"description":1953},"lpPlK0ofRJuMMD7t02RYLV7EnrNcuw6rfx2tmTGNAsQ",[1959,1961],{"title":46,"path":47,"stem":48,"description":1960,"children":-1},"Field selection, media serialization, pagination, sorting and filtering, supported on every list endpoint.",{"title":54,"path":55,"stem":56,"description":1962,"children":-1},"Diagnosing 401s, 404s, 429s, empty responses, slow requests and redirect handling.",1787919219717]