API d'administració
Tot el que fa la consola és HTTP sota /admin/. Cada ruta necessita un JWT de sessió o una clau d'API (Authorization: Bearer sk_live_…). Les rutes de projecte resolen {ref} i apliquen un permís per verb. L'embolcall d'èxit és { "data": … }; les eliminacions retornen 204.
Nodes
POST /admin/p/{ref}/nodes/
Crea un node (node:write). Cos: { parent_id?, slug, type, title, kind?("page"|"entry"), locale?, template_id?, blocks?, meta? }. Si blocks és buit i template_id està definit, els blocs es clonen de la plantilla. 409 conflict si el slug col·lisiona.
PATCH /admin/p/{ref}/nodes/{id}
Actualitza (node:write). Cos NodePatch (tot opcional): { parent_id?, slug?, title?, status?, kind?, locale?, blocks?, meta? }. Un canvi de status necessita un permís extra per a la transició: node:publish (draft→published), node:unpublish, node:archive — si no, 403 publish_forbidden.
DELETE /admin/p/{ref}/nodes/{id}
Elimina (node:delete).
GET /admin/p/{ref}/nodes/{id}/preview
Previsualització en HTML renderitzada al servidor dels blocs del node (node:read).
GET /admin/p/{ref}/nodes/{id}/entries
Entrades paginades sota un node de col·lecció.
Instantànies
Versions puntuals d'un node sota /nodes/{id}/snapshots: GET / (línia temporal, snapshot:read), POST / ({label}, snapshot:write), GET /{sid}, DELETE /{sid}, i POST /{sid}/restore (snapshot:restore).
Plantilles i arrencades
Formes reutilitzables. /templates (node únic) i /starters (diversos nodes) ofereixen tots dos CRUD; POST /starters/{id}/instantiate materialitza els nodes d'una arrencada al projecte.
Membres, rols i ACL
/members— GET,POSTconvidar ({email, role_id?|role?}— envia per correu un enllaç màgic als usuaris nous),PATCH /{userId},DELETE /{userId}. El rol de propietari no es pot assignar ni eliminar aquí./roles— CRUD mésGET /roles/catalog(cada cadena de permís coneguda). Un rol és{ slug, label, permissions:[] }.ACLs— denegació a nivell de node per rol (/roles/{id}/acls) o per usuari (/members/{userId}/acls):{ node_id, scope:"this"|"subtree" }.
Projectes i plugins
GET/POST /admin/projects— llistar / crear (el creador passa a ser propietari).PATCH /{id}modifica{ name?, default_locale?, enabled_locales?, public_base_url?, custom_domain?, locked? }(lockedés només per al propietari).DELETE→409 project_lockedsi està bloquejat./modules— el gestor de plugins:GET /llista els mòduls que no són del nucli amb un indicadorenabledper tenant;POST /{slug}/enable//disableels activen o desactiven.
Claus d'API
POST /admin/api-keys { name, scopes? } retorna el sk_live_… en text pla una sola vegada; GET llista (sense text pla); DELETE /{id} revoca.