Tutto quello che fa la dashboard si può fare anche in JSON, con gli stessi permessi e lo stesso registro. L’elenco completo, con i parametri, è lo schema OpenAPI in http://localhost:8765/openapi.json (con il tunnel aperto).
Come ci si autentica
- Accedi dalla pagina di accesso: il browser (o
curlcon un file di cookie) riceve la sessione. GET /api/merestituisce nome, ruolo, le categorie dell’amministratore con riserva (categories) e il codicecsrf. Un’operazione fuori dalle sue categorie risponde 403operazione_non_consentita.- Ogni richiesta che modifica (POST, DELETE) porta l’intestazione
X-CSRF-Tokencon quel codice.
curl -b cookie.txt -H "X-CSRF-Token: $CSRF" -X POST http://localhost:8765/api/sites/esempio.it/update
Le operazioni lunghe rispondono con un job_id: il log si segue con GET /api/jobs/<id>/log o in diretta con /api/jobs/<id>/stream.
Lettura
| Indirizzo | Cosa restituisce |
|---|---|
GET /api/sites, GET /api/sites/{d} | Siti, stato del codice, certificato, amministrazione. |
GET /api/sites/{d}/plugins, /themes | Plugin e temi con gli aggiornamenti. |
GET /api/sites/{d}/wporg/plugin?q=… | Ricerca su wordpress.org. |
GET /api/sites/{d}/integrity, GET /api/integrity | Ultimo controllo del sito o di tutto. |
GET /api/sites/{d}/metrics | Lo spazio del sito dall’ultima misura: totale, parti, database, i più pesanti. |
GET /api/sites/{d}/metrics/series | Le serie dei grafici del sito: spazio per giorno, tentativi per giorno, tempo di risposta per ora; null dove manca la misura. |
GET /api/metrics/server | Le serie del server: disco con la stima, spazio per sito, backup, tentativi, ban e allarmi per giorno. |
GET /api/import, GET /api/import/{id} | Le importazioni aperte; una importazione con la relazione dell’analisi. |
GET /api/sites/{d}/backups | Copie da cui il sito si può ripristinare. |
GET /api/sites/{d}/code?path=… | Il visore del codice (solo amministratori, nel registro). |
GET /api/sites/{d}/versions, /versions/{v} | Le versioni del codice; una versione con i file cambiati per componente (solo amministratori). |
GET /api/sites/{d}/versions/{v}/diff?path=…, /files/history?path=… | Le righe cambiate di un file in una versione; le versioni in cui un file è cambiato. |
GET /api/sites/<sito>/exports | Le esportazioni per un altro hosting ancora disponibili: file, dimensioni, avvisi, scadenza. |
POST /api/sites/<sito>/exports | Prepara un’esportazione (lavoro): {"target": "esempio.it"}. |
GET /api/sites/<sito>/exports/<id>/sito e …/database | Scarica lo zip del sito o il database (anche a pezzi, per riprendere). |
DELETE /api/sites/<sito>/exports/<id> | Cancella un’esportazione. |
GET /api/remote/servers | I server di produzione e i siti pubblicati, con lo stato. |
GET /api/remote/tools | Gli strumenti per i server di produzione: chiave di rilascio (l’impronta) e versioni, firmate o no. |
GET /api/php/versions | Versioni di PHP installate: servizio, fine del supporto, siti. |
GET /api/system, GET /api/backup, GET /api/storage | Server, backup, Storage Box. |
GET /api/audit | Il registro, con gli stessi filtri della pagina. |
Azioni
| Indirizzo | Cosa fa |
|---|---|
POST /api/sites | Sito nuovo con WordPress (lavoro). |
POST /api/import, PUT /api/import/{id}/archivio?offset=… (e /dump) | Importazione da un backup: nomi e dimensioni dei file, poi i pezzi da 32 MB, ciascuno con l’intestazione X-Chunk-Sha256. |
POST /api/import/{id}/analyze, /site; DELETE /api/import/{id} | Analisi (lavoro), importazione nel dominio di sviluppo (lavoro: domain, php, premium, confirm per un’analisi bloccata), annullamento. |
POST /api/sites/{d}/lock, /unlock | Blocco del codice. |
POST /api/sites/{d}/update | Aggiornamenti (lavoro). |
POST /api/sites/{d}/plugins/{slug}/update, /install | Aggiornare o installare un plugin (lavoro). |
POST /api/sites/{d}/themes/{slug}/install, /activate | Installare o attivare un tema. |
POST /api/sites/{d}/preview | Anteprima: {"action": "close"}, {"action": "open", "hours": 4} (da 1 a 72), {"action": "always"} (solo amministratori). |
POST /api/sites/{d}/preview/ip | Indirizzi fidati: {"action": "add", "ip": "203.0.113.0/24"} o "remove". |
POST /api/sites/{d}/admin | Amministrazione di WordPress: {"action": "close"}, {"action": "open", "hours": 2}, {"action": "always"}. |
POST /api/sites/{d}/backups | Copia del sito adesso (lavoro). |
POST /api/sites/{d}/backups/{copia}/restore | Ripristino da una copia (lavoro). |
POST /api/sites/{d}/php/version | Cambia la versione di PHP del sito: {"version": "8.3"} (lavoro). |
POST /api/sites/{d}/metrics | Misura lo spazio del sito adesso, anche per i lettori. |
POST /api/sites/{d}/integrity | Controllo di integrità adesso. |
POST /api/integrity/system | Controllo del server adesso (lavoro), anche per i lettori. |
POST /api/integrity/system/baseline | Il server com’è adesso diventa il riferimento: {"confirm": true} (lavoro); rifiutato se non ci sono differenze o se ci sono file dei pacchetti alterati. |
GET / POST /api/sites/{d}/quarantine | Voci in quarantena; {"path": …, "reason": …} mette in quarantena (lavoro). |
POST /api/sites/{d}/quarantine/{voce}/restore | Rimette una voce dov’era (lavoro). |
POST /api/sites/{d}/core/reinstall, /plugins/{slug}/reinstall | Core o plugin di wordpress.org di nuovo, stessa versione (lavoro). |
POST /api/sites/{d}/files/restore | Un file o una cartella da una copia: {"path": …, "snapshot": …} (lavoro). |
POST /api/sites/{d}/code/rebuild | Tutto il codice di nuovo: {"snapshot": …, "confirm": "<dominio>"} (lavoro). |
POST /api/sites/{d}/versions/{v}/restore | Un file o una cartella da una versione: {"path": …} (lavoro). |
POST /api/sites/{d}/versions/{v}/rollback | Tutto il codice come nella versione: {"confirm": "<dominio>"} (lavoro). |
POST /api/sites/{d}/secrets/rotate | Segreti nuovi: {"confirm": "<dominio>"} (lavoro); la password di anteprima nuova una volta sola, a lavoro finito. |
POST /api/sites/{d}/developers | Sviluppatore nuovo: la password torna una volta sola. |
Le password generate (sviluppatori, anteprima, amministratori) tornano solo nella risposta: l’API non le conserva e il registro non le scrive.