# API administrácie CMS Total.js: správa webu z kódu, zálohovanie a obnova

> JSON API za administráciou CMS na /admin/: formát volaní, akcie každého pluginu a ich oprávnenia, nahrávanie súborov a tri cesty na zálohu, obnovu a vymazanie vrátane toho, čo clear naozaj robí.

Framework: cms
Product: CMS (cms@8071e48)
Language: sk
Content-SHA256: 2684bb956394593732349a81cab1da76c54c4b1799c59cfbbb69d0ca55422464
Snapshot: c0700e321579725c5cf4f5ace1ad7d2866d1b4f93c24a63c0b41b6b7998e976c
Sources: 
Review: not-recorded

Všetko, čo robí rozhranie administrácie, ide cez jediný endpoint: `POST /admin/` s telom `{ "schema": "<name>", "data": { ... } }` (API cesty Total.js, pozri [API cesty](/en/total5/api-routes/)). Adresa pochádza z riadku `$api : /admin/` v súbore `config`. Autentifikujte sa cookie relácie (`POST /admin/` so `schema: "login"` a `login` a `password`), hlavičkou `x-token` alebo cez OpenPlatform ([inštalácia a prvé spustenie](/en/cms/install-and-first-start/)).

## Akcie

| Plugin | Volania (`schema`) | Oprávnenie |
|---|---|---|
| Account | `login`, `logout`, `admin_read`, `admin_save` (meno, login, heslo), `account` | relácia |
| Pages | `pages_list`, `pages_read`, `pages_save`, `pages_clone`, `pages_remove`, `pages_links`, `pages_html` (číta HTML), `pages_save_html` (`id`, `html`, až 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`, a nahrávania nižšie | `files` |
| Settings | `settings_read`, `settings_save`, `settings_test` (vyskúša nastavenia SMTP), `chatgpt` | `settings` |
| Dashboard | `dashboard_online`, `dashboard_referers`, `dashboard_browsers`, `dashboard_pages`, `dashboard_stats` | žiadne |

Oprávnenie `admin` (a každý používateľ s príznakom `sa`, vrátane *Bota* tokenu) má prístup ku všetkým. Volanie bez oprávnenia dostane chybu a `login` je jediné volanie, ktoré nepotrebuje reláciu.

Vytvorte stránku a jej obsah:

```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` odpovie `{ "success": true }`; id prečítajte cez `pages_list`. Pri layoute `layouts_save` odpovie id layoutu v `value`. Keď pri aktualizácii pole chýba, pole sa vymaže (`title`, ktorý neodošlete, sa uloží prázdny), preto posielajte celý záznam.

## Nahrávanie súborov

`POST /admin/upload/` prijíma multipart nahrávanie (do 10 MB) a `POST /admin/upload/base64/` telo JSON s data URI (png, jpeg alebo gif). Obe odpovedajú zoznamom `{ id, name, type, ext, size, url }`, kde `url` je `/download/<id>.<ext>`.

## Záloha, obnova a vymazanie

Tri cesty z `controllers/api.js` pracujú s celým webom a vyžadujú oprávnenie `admin`:

| Cesta | Čo robí |
|---|---|
| `GET /admin/backup/` | stiahne celé úložisko súborov (metadáta, HTML stránok a layoutov, súbory a príspevky) ako jeden textový súbor pomenovaný podľa webu a dátumu |
| `POST /admin/restore/` | nahrá takýto súbor (do 100 MB) a načíta ho. |
| `GET /admin/clear/` | **zmaže obsah webu.** Zahodí úložisko súborov a načíta ho znova, takže stránky, layouty, widgety a zvyšok sa odstránia

Pred vyskúšaním ktorejkoľvek z nich urobte zálohu, nikdy neotvárajte `/admin/clear/` v prehliadači zo zvedavosti a token držte v tajnosti: s ním jediné `GET` vyprázdni web.
