ForgeCMS
de

CMS

Die Admin-API des Total.js CMS: eine Website per Code verwalten, Backup und Wiederherstellung

CMS · cms@8071e48 cmsapiadminbackuprestorepermissions

Alles, was die Admin-Oberfläche tut, läuft über einen einzigen Endpunkt: POST /admin/ mit dem Body { "schema": "<name>", "data": { ... } } (die API-Routen von Total.js, siehe API-Routen). Die Adresse stammt aus der Zeile $api : /admin/ der Datei config. Authentifizieren Sie sich mit dem Sitzungs-Cookie (POST /admin/ mit schema: "login" und login und password), mit dem Header x-token oder über OpenPlatform (Installation und erster Start).

Die Aktionen

PluginAufrufe (schema)Berechtigung
Accountlogin, logout, admin_read, admin_save (Name, Login, Passwort), accountdie Sitzung
Pagespages_list, pages_read, pages_save, pages_clone, pages_remove, pages_links, pages_html (liest das HTML), pages_save_html (id, html, bis zu 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, und die Uploads untenfiles
Settingssettings_read, settings_save, settings_test (prüft die SMTP-Einstellungen), chatgptsettings
Dashboarddashboard_online, dashboard_referers, dashboard_browsers, dashboard_pages, dashboard_statskeine

Die Berechtigung admin (und jeder Benutzer mit dem Flag sa, einschließlich des Bot des Tokens) darf alle Aufrufe ausführen. Ein Aufruf ohne Berechtigung wird mit einem Fehler beantwortet, und login ist der einzige Aufruf, der keine Sitzung braucht.

Eine Seite und ihren Inhalt anlegen:

{ "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 antwortet mit { "success": true }; die ID lesen Sie mit pages_list. Bei einem Layout antwortet layouts_save mit der ID des Layouts in value. Fehlt bei einer Aktualisierung ein Feld, wird das Feld geleert (ein title, den Sie nicht senden, wird leer gespeichert), senden Sie also den ganzen Datensatz.

Dateien hochladen

POST /admin/upload/ nimmt einen Multipart-Upload an (bis 10 MB) und POST /admin/upload/base64/ einen JSON-Body mit einer Data-URI (png, jpeg oder gif). Beide antworten mit einer Liste von { id, name, type, ext, size, url }, wobei url gleich /download/<id>.<ext> ist.

Backup, Wiederherstellung und Löschen

Drei Routen aus controllers/api.js wirken auf die ganze Website und brauchen die Berechtigung admin:

RouteWas sie tut
GET /admin/backup/lädt den gesamten Dateispeicher (Metadaten, HTML von Seiten und Layouts, Dateien und Beiträge) als eine Textdatei herunter, benannt nach Website und Datum
POST /admin/restore/lädt eine solche Datei hoch (bis 100 MB) und lädt sie ein.
GET /admin/clear/löscht den Inhalt der Website. Es verwirft den Dateispeicher und lädt ihn neu, sodass Seiten, Layouts, Widgets und der Rest entfernt werde

Machen Sie ein Backup, bevor Sie eine davon ausprobieren, öffnen Sie /admin/clear/ nie aus Neugier im Browser und halten Sie den Token geheim: Mit ihm leert ein einziges GET die Website.