# A Total.js CMS admin API-ja: webhely kezelése kódból, mentés és visszaállítás

> A CMS admin mögötti JSON API a /admin/ címen: a hívások formátuma, az egyes bővítmények műveletei és jogosultságai, fájlfeltöltés, valamint a három útvonal mentéshez, visszaállításhoz és törléshez, beleértve azt is, mit csinál valójában a clear.

Framework: cms
Product: CMS (cms@8071e48)
Language: hu
Content-SHA256: 25650ba140f7b170e307666c72eeacbbc12bc8df6f2d3766ae6fdcd04e3519bf
Snapshot: c0700e321579725c5cf4f5ace1ad7d2866d1b4f93c24a63c0b41b6b7998e976c
Sources: 
Review: not-recorded

Az admin felület minden műveletét egyetlen végpont intézi: `POST /admin/` a `{ "schema": "<name>", "data": { ... } }` törzzsel (a Total.js API útvonalai, lásd [API útvonalak](/en/total5/api-routes/)). A cím a `config` fájl `$api : /admin/` sorából származik. Hitelesíts a munkamenet-cookie-val (`POST /admin/` a `schema: "login"` értékkel, valamint a `login` és a `password` mezővel), az `x-token` fejléccel vagy az OpenPlatformon keresztül ([telepítés és első indítás](/en/cms/install-and-first-start/)).

## A műveletek

| Bővítmény | Hívások (`schema`) | Jogosultság |
|---|---|---|
| Account | `login`, `logout`, `admin_read`, `admin_save` (név, login, jelszó), `account` | a munkamenet |
| Pages | `pages_list`, `pages_read`, `pages_save`, `pages_clone`, `pages_remove`, `pages_links`, `pages_html` (beolvassa a HTML-t), `pages_save_html` (`id`, `html`, legfeljebb 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`, és az alábbi feltöltések | `files` |
| Settings | `settings_read`, `settings_save`, `settings_test` (kipróbálja az SMTP-beállításokat), `chatgpt` | `settings` |
| Dashboard | `dashboard_online`, `dashboard_referers`, `dashboard_browsers`, `dashboard_pages`, `dashboard_stats` | nincs |

Az `admin` jogosultság (és minden `sa` jelzőjű felhasználó, beleértve a token *Bot*-ját is) mindegyiket használhatja. A jogosultság nélküli hívás hibát kap, és a `login` az egyetlen hívás, amelyhez nem kell munkamenet.

Hozz létre egy oldalt és a tartalmát:

```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>" } }
```

A `pages_save` válasza `{ "success": true }`; az azonosítót a `pages_list` hívással olvashatod ki. Layout esetén a `layouts_save` a layout azonosítóját adja vissza a `value` mezőben. Ha frissítéskor hiányzik egy mező, a mező törlődik (a nem küldött `title` üresen mentődik), ezért a teljes rekordot küldd el.

## Fájlok feltöltése

A `POST /admin/upload/` multipart feltöltést fogad (legfeljebb 10 MB), a `POST /admin/upload/base64/` pedig JSON törzset data URI-val (png, jpeg vagy gif). Mindkettő `{ id, name, type, ext, size, url }` elemek listájával válaszol, ahol az `url` értéke `/download/<id>.<ext>`.

## Mentés, visszaállítás és törlés

A `controllers/api.js` három útvonala a teljes webhelyen dolgozik, és az `admin` jogosultságot igényli:

| Útvonal | Mit csinál |
|---|---|
| `GET /admin/backup/` | letölti a teljes fájltárolót (metaadatok, oldalak és layoutok HTML-je, fájlok és bejegyzések) egyetlen, a webhely nevéről és a dátumról elnevezett szövegfájlként |
| `POST /admin/restore/` | feltölt egy ilyen fájlt (legfeljebb 100 MB), és betölti. |
| `GET /admin/clear/` | **törli a webhely tartalmát.** Eldobja a fájltárolót és újra betölti, így az oldalak, layoutok, widgetek és a többi törlődik

Készíts mentést, mielőtt bármelyiket kipróbálod, soha ne nyisd meg a `/admin/clear/` címet böngészőben puszta kíváncsiságból, és tartsd titokban a tokent: vele egyetlen `GET` kiüríti a webhelyet.
