ForgeCMS
pt

CMS

A API do admin do CMS do Total.js: gerir um site a partir de código, cópia de segurança e restauro

CMS · cms@8071e48 cmsapiadminbackuprestorepermissions

Tudo o que a interface do admin faz passa por um único endpoint: POST /admin/ com o corpo { "schema": "<name>", "data": { ... } } (as rotas API do Total.js, veja rotas API). O endereço vem da linha $api : /admin/ do ficheiro config. Autentique-se com o cookie de sessão (POST /admin/ com schema: "login" e o login e o password), com o cabeçalho x-token ou através do OpenPlatform (instalação e primeiro arranque).

As ações

PluginChamadas (schema)Permissão
Accountlogin, logout, admin_read, admin_save (nome, login, palavra-passe), accounta sessão
Pagespages_list, pages_read, pages_save, pages_clone, pages_remove, pages_links, pages_html (lê o HTML), pages_save_html (id, html, até 5 MB), pages_copy (from, to)pages
Layoutslayouts_list, layouts_read, layouts_save, layouts_clone, layouts_remove, layouts_html, layouts_save_html, layouts_importlayouts
Widgetswidgets_list, widgets_read, widgets_save, widgets_remove, widgets_detailwidgets
Navigationnav_list, nav_read, nav_save, nav_remove, nav_editornavigation
Redirectsredirects_list, redirects_read, redirects_save (url, target, permanent), redirects_removeredirects
Variablesvariables_read, variables_save (vars)variables
Postsposts, posts_read, posts_create, posts_update, posts_remove, posts_clear, posts_categoriesposts
Filesfiles_list, files_rename, files_clear, files_remove, e os envios abaixofiles
Settingssettings_read, settings_save, settings_test (testa as definições SMTP), chatgptsettings
Dashboarddashboard_online, dashboard_referers, dashboard_browsers, dashboard_pages, dashboard_statsnenhuma

A permissão admin (e todo o utilizador com a marca sa, incluindo o Bot do token) tem acesso a todas. Uma chamada sem permissão recebe um erro, e login é a única chamada que não precisa de sessão.

Crie uma página e o seu conteúdo:

{ "schema": "pages_save", "data": { "name": "About", "layoutid": "<layout id>", "url": "/about/", "title": "About us" } }
{ "schema": "pages_save_html", "data": { "id": "<page id>", "html": "<h1>About us</h1>" } }

pages_save responde { "success": true }; leia o id com pages_list. Num layout, layouts_save responde o id do layout em value. Quando falta um campo numa atualização, o campo é limpo (um title que não envie fica guardado vazio), por isso envie o registo completo.

Enviar ficheiros

POST /admin/upload/ aceita um envio multipart (até 10 MB) e POST /admin/upload/base64/ um corpo JSON com um data URI (png, jpeg ou gif). Ambos respondem com uma lista de { id, name, type, ext, size, url }, onde url é /download/<id>.<ext>.

Cópia de segurança, restauro e limpeza

Três rotas de controllers/api.js atuam sobre todo o site e precisam da permissão admin:

RotaO que faz
GET /admin/backup/descarrega todo o armazenamento de ficheiros (metadados, HTML de páginas e layouts, ficheiros e artigos) como um único ficheiro de texto com o nome do site e a data
POST /admin/restore/envia um ficheiro assim (até 100 MB) e carrega-o.
GET /admin/clear/apaga o conteúdo do site. Descarta o armazenamento de ficheiros e carrega-o de novo, pelo que páginas, layouts, widgets e o resto são removido

Faça uma cópia de segurança antes de experimentar qualquer uma delas, nunca abra /admin/clear/ num navegador por curiosidade e mantenha o token privado: com ele, um único GET esvazia o site.