Vai al contenuto principale
Ogni operazione in questa pagina inizia ottenendo un’istanza di Application:
import { SquareCloudAPI } from "@squarecloud/api";

const api = new SquareCloudAPI(process.env.SQUARE_API_KEY!);
const app = await api.applications.fetch("abc123def456abc123def456");
api.applications.fetch(id) restituisce un’Application. Quando l’app ha un dominio web associato, viene restituita come WebsiteApplication: affina il tipo a runtime con app.isWebsite() prima di usare .network (vedi Network).

Proprietà dell’applicazione

ProprietàTipoDescrizione
idstringID dell’applicazione (24 caratteri esadecimali)
namestringNome visualizzato
descriptionstring?Descrizione da squarecloud.app
urlstringURL della dashboard web
ramnumberRAM allocata in MB
clusterstringCluster su cui gira l’app
languagestringjavascript | typescript | python | java | elixir | rust | go | php | dotnet | static
domainstring | nullHost predefinito <subdomain>.squareweb.app (null per app non web)
customstring | nullDominio personalizzato associato all’app, quando configurato
createdAtDateData di creazione
Nella v4, app.custom è null quando non è impostato alcun dominio personalizzato (era undefined nella v3).

Ottenere lo stato dell’applicazione

app.getStatus() restituisce un’istanza di ApplicationStatus con lo stato di runtime in tempo reale.
const status = await app.getStatus();

console.log(status.status);          // "running" | "starting" | "restarting" | "exited" | "created" | "deleting"
console.log(status.running);         // boolean
console.log(status.usage.cpu);       // "0.22%"
console.log(status.usage.ram);       // "70MB"
console.log(status.usage.network);   // { total: "0 KB ↑ 0 KB ↓", now: "0 KB ↑ 0 KB ↓" }
console.log(status.usage.storage);   // "0B"
console.log(status.uptime);          // Date | undefined
console.log(status.uptimeTimestamp); // number | undefined

Stato riepilogativo di ogni applicazione

Per evitare una richiesta per ogni app, chiama api.applications.statusAll():
const list = await api.applications.statusAll();

for (const summary of list) {
    console.log(`${summary.applicationId} → running=${summary.running}`);
    if (summary.running) {
        console.log(`  cpu=${summary.usage.cpu}, ram=${summary.usage.ram}`);
    }

    // Promote a summary to the full status with .fetch()
    const full = await summary.fetch();
    console.log(full.uptime);
}

Ottenere i log

app.getLogs() restituisce l’output di log più recente come string.
const logs = await app.getLogs();
console.log(logs);

Ottenere le metriche

app.getMetrics() restituisce le ultime 24 ore di campioni di CPU, RAM e rete (fino a 288 punti, uno ogni 5 minuti).
const metrics = await app.getMetrics();

console.log(metrics.length, "data points");
console.log(metrics[0]);
// { timestamp: 1717084800000, cpu: 12.3, ram: 187, network: { ... } }
getMetrics() richiede che all’applicazione siano allocati almeno 512MB di RAM.

Stream di eventi in tempo reale

app.realtime() apre uno stream di Server-Sent Events. Consulta la pagina dedicata Realtime per un esempio completo.

Ciclo di vita

Tutti i metodi del ciclo di vita si risolvono in un boolean (true in caso di successo).
await app.start();
await app.restart();
await app.stop();

Eliminare un’applicazione

app.delete() rimuove definitivamente l’applicazione. A meno che tu non abbia uno snapshot, i dati non possono essere recuperati.
const deleted = await app.delete();
console.log(deleted); // true | false

Aggiornare i dati dell’applicazione

app.fetch() recupera nuovamente l’applicazione dall’API e restituisce una nuova istanza di Application. Usalo quando sospetti che i dati memorizzati nella cache siano obsoleti.
const fresh = await app.fetch();