ForgeCMS
nl

CMS

De beheer-API van het Total.js CMS: een site vanuit code beheren, back-up en herstel

CMS · cms@8071e48 cmsapiadminbackuprestorepermissions

Alles wat de beheerinterface doet, loopt via één endpoint: POST /admin/ met de body { "schema": "<name>", "data": { ... } } (de API-routes van Total.js, zie API-routes). Het adres komt uit de regel $api : /admin/ van het bestand config. Authenticeer met de sessiecookie (POST /admin/ met schema: "login" en de login en het password), met de header x-token of via OpenPlatform (installatie en eerste start).

De acties

PluginAanroepen (schema)Recht
Accountlogin, logout, admin_read, admin_save (naam, login, wachtwoord), accountde sessie
Pagespages_list, pages_read, pages_save, pages_clone, pages_remove, pages_links, pages_html (leest de HTML), pages_save_html (id, html, tot 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, en de uploads hieronderfiles
Settingssettings_read, settings_save, settings_test (test de SMTP-instellingen), chatgptsettings
Dashboarddashboard_online, dashboard_referers, dashboard_browsers, dashboard_pages, dashboard_statsgeen

Het recht admin (en elke gebruiker met de vlag sa, inclusief de Bot van het token) mag ze allemaal gebruiken. Een aanroep zonder recht krijgt een fout, en login is de enige aanroep die geen sessie nodig heeft.

Maak een pagina en de inhoud ervan:

{ "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 antwoordt { "success": true }; lees de id met pages_list. Bij een layout antwoordt layouts_save de id van de layout in value. Als een veld in een update ontbreekt, wordt het veld gewist (een title die je niet meestuurt, wordt leeg opgeslagen), dus stuur het hele record.

Bestanden uploaden

POST /admin/upload/ neemt een multipart-upload aan (tot 10 MB) en POST /admin/upload/base64/ een JSON-body met een data-URI (png, jpeg of gif). Beide antwoorden met een lijst van { id, name, type, ext, size, url }, waarbij url gelijk is aan /download/<id>.<ext>.

Back-up, herstel en wissen

Drie routes van controllers/api.js werken op de hele site en vereisen het recht admin:

RouteWat ze doet
GET /admin/backup/downloadt de hele bestandsopslag (metadata, HTML van pagina’s en layouts, bestanden en berichten) als één tekstbestand, genoemd naar de site en de datum
POST /admin/restore/uploadt zo’n bestand (tot 100 MB) en laadt het.
GET /admin/clear/verwijdert de inhoud van de site. Het gooit de bestandsopslag weg en laadt hem opnieuw, dus pagina’s, layouts, widgets en de rest worden verwijder

Maak een back-up voordat je er een probeert, open /admin/clear/ nooit uit nieuwsgierigheid in een browser en houd het token privé: daarmee maakt één enkele GET de site leeg.