> ## Documentation Index
> Fetch the complete documentation index at: https://docs.squarecloud.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Anwendungen verwalten

> Inspiziere, steuere und betreibe eine Anwendung über die Applications-Schnittstelle — Status, Logs, Metriken, Lebenszyklus (Start, Stopp, Neustart) und Löschung.

Jede Operation auf dieser Seite lebt auf dem `rest.Rest`-Client:

```go theme={null}
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.

```go theme={null}
app, err := api.GetApplication("abc123def456abc123def456")
if err != nil {
	panic(err)
}

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

### Eigenschaften der Anwendung

| Feld          | Typ       | Beschreibung                                                                                                                |
| ------------- | --------- | --------------------------------------------------------------------------------------------------------------------------- |
| `ID`          | `string`  | Anwendungs-ID (24 Hex-Zeichen)                                                                                              |
| `Name`        | `string`  | Anzeigename                                                                                                                 |
| `Description` | `string`  | Beschreibung aus der Konfigurationsdatei                                                                                    |
| `Owner`       | `string`  | Benutzer-ID des Besitzers                                                                                                   |
| `Cluster`     | `string`  | Cluster, auf dem die App läuft                                                                                              |
| `RAM`         | `int`     | Zugewiesener RAM in MB                                                                                                      |
| `Language`    | `string`  | `javascript` \| `typescript` \| `python` \| `java` \| `elixir` \| `go` \| `rust` \| `ruby` \| `php` \| `dotnet` \| `static` |
| `Domain`      | `*string` | Standard-Host `<subdomain>.squareweb.app` — `nil` für Nicht-Web-Apps                                                        |
| `Custom`      | `*string` | An die App gebundene benutzerdefinierte Domain — `nil`, wenn nicht konfiguriert                                             |
| `CreatedAt`   | `string`  | Erstellungsdatum                                                                                                            |

`Domain` und `Custom` sind Pointer — prüfe vor dem Dereferenzieren immer auf `nil`:

```go theme={null}
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.

```go theme={null}
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.

```go theme={null}
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
```

<Note>
  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.
</Note>

### Zusammenfassender Status für jede Anwendung

Um einen Request pro App zu vermeiden, rufe `api.GetApplicationListStatus()` auf:

```go theme={null}
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.

```go theme={null}
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`.

```go theme={null}
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:

```go theme={null}
err := api.PostApplicationSignal("abc123def456abc123def456", squarecloud.ApplicationSignalStart)
if err != nil {
	panic(err)
}

// squarecloud.ApplicationSignalStop
// squarecloud.ApplicationSignalRestart
```

## Eine Anwendung löschen

<Warning>
  `DeleteApplication` entfernt die Anwendung dauerhaft. Sofern du keinen [Snapshot](/de/sdks/go/snapshots) hast, können die Daten **nicht wiederhergestellt** werden.
</Warning>

```go theme={null}
err := api.DeleteApplication("abc123def456abc123def456")
if err != nil {
	panic(err)
}
```
