# Admin-API:et i Total.js CMS: hantera en webbplats från kod, säkerhetskopia och återställning

> JSON-API:et bakom CMS-administrationen på /admin/: anropsformatet, varje plugins åtgärder och behörigheter, filuppladdning och de tre rutterna för säkerhetskopia, återställning och rensning, inklusive vad clear egentligen gör.

Framework: cms
Product: CMS (cms@8071e48)
Language: sv
Content-SHA256: 2e06681c83641d575200ca3b60cb2c136b3236215282bf117443c63867f0a210
Snapshot: c0700e321579725c5cf4f5ace1ad7d2866d1b4f93c24a63c0b41b6b7998e976c
Sources: 
Review: not-recorded

Allt administrationsgränssnittet gör går genom en enda endpoint: `POST /admin/` med innehållet `{ "schema": "<name>", "data": { ... } }` (Total.js API-rutter, se [API-rutter](/en/total5/api-routes/)). Adressen kommer från raden `$api : /admin/` i filen `config`. Autentisera med sessionscookien (`POST /admin/` med `schema: "login"` och `login` och `password`), med headern `x-token` eller via OpenPlatform ([installation och första start](/en/cms/install-and-first-start/)).

## Åtgärderna

| Plugin | Anrop (`schema`) | Behörighet |
|---|---|---|
| Account | `login`, `logout`, `admin_read`, `admin_save` (namn, login, lösenord), `account` | sessionen |
| Pages | `pages_list`, `pages_read`, `pages_save`, `pages_clone`, `pages_remove`, `pages_links`, `pages_html` (läser HTML), `pages_save_html` (`id`, `html`, upp till 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`, och uppladdningarna nedan | `files` |
| Settings | `settings_read`, `settings_save`, `settings_test` (testar SMTP-inställningarna), `chatgpt` | `settings` |
| Dashboard | `dashboard_online`, `dashboard_referers`, `dashboard_browsers`, `dashboard_pages`, `dashboard_stats` | ingen |

Behörigheten `admin` (och varje användare med flaggan `sa`, inklusive tokenens *Bot*) får använda alla. Ett anrop utan behörighet får ett fel, och `login` är det enda anropet som inte behöver en session.

Skapa en sida och dess innehåll:

```json
{ "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` svarar `{ "success": true }`; läs id:t med `pages_list`. För en layout svarar `layouts_save` med layoutens id i `value`. När ett fält saknas i en uppdatering töms fältet (en `title` som du inte skickar sparas tom), så skicka hela posten.

## Ladda upp filer

`POST /admin/upload/` tar emot en multipart-uppladdning (upp till 10 MB) och `POST /admin/upload/base64/` ett JSON-innehåll med en data-URI (png, jpeg eller gif). Båda svarar med en lista av `{ id, name, type, ext, size, url }`, där `url` är `/download/<id>.<ext>`.

## Säkerhetskopia, återställning och rensning

Tre rutter i `controllers/api.js` verkar på hela webbplatsen och kräver behörigheten `admin`:

| Rutt | Vad den gör |
|---|---|
| `GET /admin/backup/` | laddar ner hela fillagringen (metadata, HTML för sidor och layouter, filer och inlägg) som en textfil uppkallad efter webbplatsen och datumet |
| `POST /admin/restore/` | laddar upp en sådan fil (upp till 100 MB) och läser in den. |
| `GET /admin/clear/` | **raderar webbplatsens innehåll.** Den släpper fillagringen och läser in den igen, så sidor, layouter, widgetar och resten tas bort

Gör en säkerhetskopia innan du provar någon av dem, öppna aldrig `/admin/clear/` i en webbläsare av nyfikenhet och håll token privat: med den tömmer ett enda `GET` webbplatsen.
