Comandi e API

L’API della dashboard

29 Settembre 2026 emanuele 5 minuti di lettura

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

  1. Accedi dalla pagina di accesso: il browser (o curl con un file di cookie) riceve la sessione.
  2. GET /api/me restituisce nome, ruolo, le categorie dell’amministratore con riserva (categories) e il codice csrf. Un’operazione fuori dalle sue categorie risponde 403 operazione_non_consentita.
  3. Ogni richiesta che modifica (POST, DELETE) porta l’intestazione X-CSRF-Token con 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

IndirizzoCosa restituisce
GET /api/sites, GET /api/sites/{d}Siti, stato del codice, certificato, amministrazione.
GET /api/sites/{d}/plugins, /themesPlugin e temi con gli aggiornamenti.
GET /api/sites/{d}/wporg/plugin?q=…Ricerca su wordpress.org.
GET /api/sites/{d}/integrity, GET /api/integrityUltimo controllo del sito o di tutto.
GET /api/sites/{d}/metricsLo spazio del sito dall’ultima misura: totale, parti, database, i più pesanti.
GET /api/sites/{d}/metrics/seriesLe serie dei grafici del sito: spazio per giorno, tentativi per giorno, tempo di risposta per ora; null dove manca la misura.
GET /api/metrics/serverLe 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}/backupsCopie 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>/exportsLe esportazioni per un altro hosting ancora disponibili: file, dimensioni, avvisi, scadenza.
POST /api/sites/<sito>/exportsPrepara un’esportazione (lavoro): {"target": "esempio.it"}.
GET /api/sites/<sito>/exports/<id>/sito e …/databaseScarica lo zip del sito o il database (anche a pezzi, per riprendere).
DELETE /api/sites/<sito>/exports/<id>Cancella un’esportazione.
GET /api/remote/serversI server di produzione e i siti pubblicati, con lo stato.
GET /api/remote/toolsGli strumenti per i server di produzione: chiave di rilascio (l’impronta) e versioni, firmate o no.
GET /api/php/versionsVersioni di PHP installate: servizio, fine del supporto, siti.
GET /api/system, GET /api/backup, GET /api/storageServer, backup, Storage Box.
GET /api/auditIl registro, con gli stessi filtri della pagina.

Azioni

IndirizzoCosa fa
POST /api/sitesSito 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, /unlockBlocco del codice.
POST /api/sites/{d}/updateAggiornamenti (lavoro).
POST /api/sites/{d}/plugins/{slug}/update, /installAggiornare o installare un plugin (lavoro).
POST /api/sites/{d}/themes/{slug}/install, /activateInstallare o attivare un tema.
POST /api/sites/{d}/previewAnteprima: {"action": "close"}, {"action": "open", "hours": 4} (da 1 a 72), {"action": "always"} (solo amministratori).
POST /api/sites/{d}/preview/ipIndirizzi fidati: {"action": "add", "ip": "203.0.113.0/24"} o "remove".
POST /api/sites/{d}/adminAmministrazione di WordPress: {"action": "close"}, {"action": "open", "hours": 2}, {"action": "always"}.
POST /api/sites/{d}/backupsCopia del sito adesso (lavoro).
POST /api/sites/{d}/backups/{copia}/restoreRipristino da una copia (lavoro).
POST /api/sites/{d}/php/versionCambia la versione di PHP del sito: {"version": "8.3"} (lavoro).
POST /api/sites/{d}/metricsMisura lo spazio del sito adesso, anche per i lettori.
POST /api/sites/{d}/integrityControllo di integrità adesso.
POST /api/integrity/systemControllo del server adesso (lavoro), anche per i lettori.
POST /api/integrity/system/baselineIl 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}/quarantineVoci in quarantena; {"path": …, "reason": …} mette in quarantena (lavoro).
POST /api/sites/{d}/quarantine/{voce}/restoreRimette una voce dov’era (lavoro).
POST /api/sites/{d}/core/reinstall, /plugins/{slug}/reinstallCore o plugin di wordpress.org di nuovo, stessa versione (lavoro).
POST /api/sites/{d}/files/restoreUn file o una cartella da una copia: {"path": …, "snapshot": …} (lavoro).
POST /api/sites/{d}/code/rebuildTutto il codice di nuovo: {"snapshot": …, "confirm": "<dominio>"} (lavoro).
POST /api/sites/{d}/versions/{v}/restoreUn file o una cartella da una versione: {"path": …} (lavoro).
POST /api/sites/{d}/versions/{v}/rollbackTutto il codice come nella versione: {"confirm": "<dominio>"} (lavoro).
POST /api/sites/{d}/secrets/rotateSegreti nuovi: {"confirm": "<dominio>"} (lavoro); la password di anteprima nuova una volta sola, a lavoro finito.
POST /api/sites/{d}/developersSviluppatore 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.