> ## 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.

# Gérer les applications

> Inspectez, contrôlez et exploitez une application via la classe Application — statut, logs, métriques, cycle de vie (démarrage, arrêt, redémarrage) et suppression.

Chaque opération de cette page commence par l'obtention d'une instance `Application` :

```typescript theme={null}
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)` renvoie une `Application`. Lorsque l'application a un domaine de site web qui lui est associé, elle est renvoyée en tant que `WebsiteApplication` — affinez le type à l'exécution avec `app.isWebsite()` avant d'utiliser `.network` (voir [Network](/fr/sdks/js/network)).

## Propriétés de l'application

| Propriété     | Type             | Description                                                                                                       |
| ------------- | ---------------- | ----------------------------------------------------------------------------------------------------------------- |
| `id`          | `string`         | ID de l'application (24 caractères hexadécimaux)                                                                  |
| `name`        | `string`         | Nom d'affichage                                                                                                   |
| `description` | `string?`        | Description issue de `squarecloud.app`                                                                            |
| `url`         | `string`         | URL du tableau de bord web                                                                                        |
| `ram`         | `number`         | RAM allouée en Mo                                                                                                 |
| `cluster`     | `string`         | Cluster sur lequel l'application s'exécute                                                                        |
| `language`    | `string`         | `javascript` \| `typescript` \| `python` \| `java` \| `elixir` \| `rust` \| `go` \| `php` \| `dotnet` \| `static` |
| `domain`      | `string \| null` | Hôte `<subdomain>.squareweb.app` par défaut (`null` pour les applications non web)                                |
| `custom`      | `string \| null` | Domaine personnalisé associé à l'application, lorsqu'il est configuré                                             |
| `createdAt`   | `Date`           | Date de création                                                                                                  |

<Note>
  En v4, `app.custom` vaut `null` lorsqu'aucun domaine personnalisé n'est défini (c'était `undefined` en v3).
</Note>

## Obtenir le statut de l'application

`app.getStatus()` renvoie une instance `ApplicationStatus` avec l'état d'exécution en direct.

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

### Statut résumé de chaque application

Pour éviter une requête par application, appelez `api.applications.statusAll()` :

```typescript theme={null}
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);
}
```

## Obtenir les logs

`app.getLogs()` renvoie la sortie de logs la plus récente sous forme de `string`.

```typescript theme={null}
const logs = await app.getLogs();
console.log(logs);
```

## Obtenir les métriques

`app.getMetrics()` renvoie les dernières 24 heures d'échantillons de CPU, RAM et réseau (jusqu'à **288 points**, un toutes les 5 minutes).

```typescript theme={null}
const metrics = await app.getMetrics();

console.log(metrics.length, "data points");
console.log(metrics[0]);
// { timestamp: 1717084800000, cpu: 12.3, ram: 187, network: { ... } }
```

<Warning>
  `getMetrics()` nécessite que l'application dispose d'**au moins 512 Mo de RAM** allouée.
</Warning>

## Flux d'événements en temps réel

`app.realtime()` ouvre un flux [Server-Sent Events](https://developer.mozilla.org/docs/Web/API/Server-sent_events). Consultez la page dédiée [Realtime](/fr/sdks/js/realtime) pour un exemple complet.

## Cycle de vie

Toutes les méthodes du cycle de vie se résolvent en `boolean` (`true` en cas de succès).

```typescript theme={null}
await app.start();
await app.restart();
await app.stop();
```

## Supprimer une application

<Warning>
  `app.delete()` supprime définitivement l'application. À moins d'avoir un [snapshot](/fr/sdks/js/snapshots), les données **ne peuvent pas être récupérées**.
</Warning>

```typescript theme={null}
const deleted = await app.delete();
console.log(deleted); // true | false
```

## Actualiser les données de l'application

`app.fetch()` récupère à nouveau l'application depuis l'API et renvoie une toute nouvelle instance `Application`. Utilisez-le lorsque vous soupçonnez que les données mises en cache sont périmées.

```typescript theme={null}
const fresh = await app.fetch();
```
