De beheer-API van het Total.js CMS: een site vanuit code beheren, back-up en herstel
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
| Plugin | Aanroepen (schema) | Recht |
|---|---|---|
| Account | login, logout, admin_read, admin_save (naam, login, wachtwoord), account | de sessie |
| Pages | pages_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 |
| Layouts | layouts_list, layouts_read, layouts_save, layouts_clone, layouts_remove, layouts_html, layouts_save_html, layouts_import | layouts |
| Widgets | widgets_list, widgets_read, widgets_save, widgets_remove, widgets_detail | widgets |
| Navigation | nav_list, nav_read, nav_save, nav_remove, nav_editor | navigation |
| Redirects | redirects_list, redirects_read, redirects_save (url, target, permanent), redirects_remove | redirects |
| Variables | variables_read, variables_save (vars) | variables |
| Posts | posts, posts_read, posts_create, posts_update, posts_remove, posts_clear, posts_categories | posts |
| Files | files_list, files_rename, files_clear, files_remove, en de uploads hieronder | files |
| Settings | settings_read, settings_save, settings_test (test de SMTP-instellingen), chatgpt | settings |
| Dashboard | dashboard_online, dashboard_referers, dashboard_browsers, dashboard_pages, dashboard_stats | geen |
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:
| Route | Wat 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.