# Το API διαχείρισης του CMS του Total.js: διαχειριστείτε έναν ιστότοπο από κώδικα, αντίγραφο ασφαλείας και επαναφορά

> Το JSON API πίσω από τη διαχείριση του CMS στο /admin/: η μορφή των κλήσεων, οι ενέργειες κάθε πρόσθετου και τα δικαιώματά τους, η μεταφόρτωση αρχείων και οι τρεις διαδρομές για αντίγραφο ασφαλείας, επαναφορά και εκκαθάριση, μαζί με το τι κάνει πραγματικά το clear.

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

Ό,τι κάνει η διεπαφή διαχείρισης περνά από ένα μόνο endpoint: `POST /admin/` με σώμα `{ "schema": "<name>", "data": { ... } }` (οι διαδρομές API του Total.js, δείτε [διαδρομές API](/en/total5/api-routes/)). Η διεύθυνση προέρχεται από τη γραμμή `$api : /admin/` του αρχείου `config`. Ταυτοποιηθείτε με το cookie συνεδρίας (`POST /admin/` με `schema: "login"` και τα `login` και `password`), με την κεφαλίδα `x-token` ή μέσω OpenPlatform ([εγκατάσταση και πρώτη εκκίνηση](/en/cms/install-and-first-start/)).

## Οι ενέργειες

| Πρόσθετο | Κλήσεις (`schema`) | Δικαίωμα |
|---|---|---|
| Account | `login`, `logout`, `admin_read`, `admin_save` (όνομα, login, κωδικός), `account` | η συνεδρία |
| Pages | `pages_list`, `pages_read`, `pages_save`, `pages_clone`, `pages_remove`, `pages_links`, `pages_html` (διαβάζει το HTML), `pages_save_html` (`id`, `html`, έως 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`, και οι μεταφορτώσεις παρακάτω | `files` |
| Settings | `settings_read`, `settings_save`, `settings_test` (δοκιμάζει τις ρυθμίσεις SMTP), `chatgpt` | `settings` |
| Dashboard | `dashboard_online`, `dashboard_referers`, `dashboard_browsers`, `dashboard_pages`, `dashboard_stats` | κανένα |

Το δικαίωμα `admin` (και κάθε χρήστης με τη σημαία `sa`, μαζί με το *Bot* του token) επιτρέπεται σε όλες. Μια κλήση χωρίς δικαίωμα παίρνει σφάλμα, και το `login` είναι η μόνη κλήση που δεν χρειάζεται συνεδρία.

Δημιουργήστε μια σελίδα και το περιεχόμενό της:

```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` απαντά `{ "success": true }`· διαβάστε το id με το `pages_list`. Για ένα layout, το `layouts_save` απαντά το id του layout στο `value`. Όταν σε μια ενημέρωση λείπει ένα πεδίο, το πεδίο καθαρίζεται (ένα `title` που δεν στέλνετε αποθηκεύεται κενό), οπότε στείλτε ολόκληρη την εγγραφή.

## Μεταφόρτωση αρχείων

Το `POST /admin/upload/` δέχεται μεταφόρτωση multipart (έως 10 MB) και το `POST /admin/upload/base64/` σώμα JSON με data URI (png, jpeg ή gif). Και τα δύο απαντούν με μια λίστα `{ id, name, type, ext, size, url }`, όπου το `url` είναι `/download/<id>.<ext>`.

## Αντίγραφο ασφαλείας, επαναφορά και εκκαθάριση

Τρεις διαδρομές του `controllers/api.js` δουλεύουν σε ολόκληρο τον ιστότοπο και απαιτούν το δικαίωμα `admin`:

| Διαδρομή | Τι κάνει |
|---|---|
| `GET /admin/backup/` | κατεβάζει ολόκληρο τον χώρο αρχείων (μεταδεδομένα, HTML σελίδων και layouts, αρχεία και αναρτήσεις) ως ένα αρχείο κειμένου με όνομα από τον ιστότοπο και την ημερομηνία |
| `POST /admin/restore/` | ανεβάζει ένα τέτοιο αρχείο (έως 100 MB) και το φορτώνει. |
| `GET /admin/clear/` | **διαγράφει το περιεχόμενο του ιστότοπου.** Απορρίπτει τον χώρο αρχείων και τον φορτώνει ξανά, οπότε οι σελίδες, τα layouts, τα widgets και τα υπόλοιπα αφαιρούνται

Κάντε αντίγραφο ασφαλείας πριν δοκιμάσετε οποιαδήποτε από αυτές, μην ανοίξετε ποτέ το `/admin/clear/` σε πρόγραμμα περιήγησης από περιέργεια και κρατήστε το token ιδιωτικό: με αυτό, ένα μόνο `GET` αδειάζει τον ιστότοπο.
