CMS public
Lecture des sites / apps, pages publiées, menus et médias publics.
SDK partiel : client.public.cms.getPageById, getSiteBySlug, getAppBySlug, getAppMenuById.
Query commune : page, pageSize (défaut 1 / 20). type = SITE | APP quand indiqué.
Sites
GET /public/cms/sites?page=1&pageSize=20&type=SITE
GET /public/cms/sites/:slug?type=SITE
Liste : id, name, slug, type, domain, settings, cityGroup, dates.
Apps
GET /public/cms/apps/:slug
GET /public/cms/apps/:slug/menus/by-id/:menuId
Config d’app (thème, pages publiées, apiUrl dérivé) et menu hiérarchique.
Pages
GET /public/cms/sites/:slug/pages?page=1&pageSize=20
GET /public/cms/pages/:id
Seules les pages publiées (publishedAt ≤ maintenant) sont renvoyées.
Menus
GET /public/cms/sites/:slug/menus
GET /public/cms/sites/:slug/menus/:location
location typique : header, footer. Items : label, linkType, pageId, externalUrl, children.
Médias
GET /public/cms/media/:id
GET /public/cms/media/:id/file
GET /public/cms/media/:id/file?thumb=1
GET /public/cms/media/:id/thumbnail
/file et /thumbnail renvoient un flux binaire (pas du JSON). Uniquement si le média est public.