Zum Hauptinhalt springen
Jede Operation auf dieser Seite lebt auf dem rest.Rest-Client:
client := rest.NewClient(os.Getenv("SQUARECLOUD_API_KEY"))
defer client.Close()

api := rest.New(client)

Eine Anwendung abrufen

api.GetApplication(appID) gibt den vollständigen squarecloud.Application-Datensatz zurück.
app, err := api.GetApplication("abc123def456abc123def456")
if err != nil {
	panic(err)
}

fmt.Println(app.ID, app.Name, app.Cluster, app.CreatedAt)

Eigenschaften der Anwendung

FeldTypBeschreibung
IDstringAnwendungs-ID (24 Hex-Zeichen)
NamestringAnzeigename
DescriptionstringBeschreibung aus der Konfigurationsdatei
OwnerstringBenutzer-ID des Besitzers
ClusterstringCluster, auf dem die App läuft
RAMintZugewiesener RAM in MB
Languagestringjavascript | typescript | python | java | elixir | go | rust | ruby | php | dotnet | static
Domain*stringStandard-Host <subdomain>.squareweb.appnil für Nicht-Web-Apps
Custom*stringAn die App gebundene benutzerdefinierte Domain — nil, wenn nicht konfiguriert
CreatedAtstringErstellungsdatum
Domain und Custom sind Pointer — prüfe vor dem Dereferenzieren immer auf nil:
if app.Domain != nil {
	fmt.Println("running at", *app.Domain)
}

Den Anwendungsstatus abrufen

api.GetApplicationStatus(appID) gibt den Live-Laufzeitzustand mit menschenlesbar formatierten Werten zurück.
status, err := api.GetApplicationStatus("abc123def456abc123def456")
if err != nil {
	panic(err)
}

fmt.Println(status.Status)  // "running" | "starting" | "restarting" | "exited" | "created" | "deleting"
fmt.Println(status.Running) // bool
fmt.Println(status.CPU)     // "0.50%"
fmt.Println(status.RAM)     // "120/512MB"
fmt.Println(status.Network) // formatted totals
fmt.Println(status.Storage) // e.g. "0B"

if status.Uptime != nil {
	fmt.Println(time.UnixMilli(*status.Uptime)) // started at
}
Uptime ist ein *int64 mit dem Startzeitstempel in Unix-Millisekunden — es ist nil, wenn die Anwendung gestoppt ist.

Raw-Status

api.GetApplicationStatusRaw(appID) ruft denselben Endpoint mit ?rawData=true auf und gibt numerische Werte statt formatierter Strings zurück — CPU/RAM als Zahlen und Netzwerk als [in, out]-Byte-Paare. Verwende ihn, wenn du rechnen oder plotten statt ausgeben willst.
raw, err := api.GetApplicationStatusRaw("abc123def456abc123def456")
if err != nil {
	panic(err)
}

fmt.Println(raw.CPU)     // 0.5
fmt.Println(raw.RAM)     // 120
fmt.Println(raw.Network) // { Total: [in, out], Now: [in, out] } in bytes
Der formatierte Status ist praktisch für die Anzeige ("120/512MB"); der Raw-Status ist das Richtige für Dashboards, Alerts oder jede Arithmetik — formatierte Strings zurück in Zahlen zu parsen ist fragil.

Zusammenfassender Status für jede Anwendung

Um einen Request pro App zu vermeiden, rufe api.GetApplicationListStatus() auf:
list, err := api.GetApplicationListStatus()
if err != nil {
	panic(err)
}

for _, summary := range list {
	fmt.Printf("%s → running=%v\n", summary.ID, summary.Running)
}
CPU- und RAM-Werte sind nur für Anwendungen vorhanden, die gerade laufen.

Die Logs abrufen

api.GetApplicationLogs(appID) gibt die jüngste Log-Ausgabe zurück.
logs, err := api.GetApplicationLogs("abc123def456abc123def456")
if err != nil {
	panic(err)
}

fmt.Println(logs.Logs) // string

Metriken abrufen

api.GetApplicationMetrics(appID) gibt die letzten 24 Stunden an CPU-, RAM- und Netzwerk-Messwerten zurück (bis zu 288 Punkte, einer alle 5 Minuten) als []squarecloud.MetricPoint.
metrics, err := api.GetApplicationMetrics("abc123def456abc123def456")
if err != nil {
	panic(err)
}

fmt.Println(len(metrics), "data points")
for _, point := range metrics {
	fmt.Println(point.Date, point.CPU, point.RAM, point.Net)
}

Lebenszyklus

api.PostApplicationSignal(appID, signal) startet, stoppt oder startet die Anwendung neu. Das Signal ist eine der squarecloud.ApplicationSignal*-Konstanten:
err := api.PostApplicationSignal("abc123def456abc123def456", squarecloud.ApplicationSignalStart)
if err != nil {
	panic(err)
}

// squarecloud.ApplicationSignalStop
// squarecloud.ApplicationSignalRestart

Eine Anwendung löschen

DeleteApplication entfernt die Anwendung dauerhaft. Sofern du keinen Snapshot hast, können die Daten nicht wiederhergestellt werden.
err := api.DeleteApplication("abc123def456abc123def456")
if err != nil {
	panic(err)
}