# Marche et arrêt

> Démarrer, arrêter, suspendre, supprimer.

## Envoyer un signal

```http
POST /api/resources/{id}/power
```

```json
{ "signal": "restart" }
```

`signal` vaut `start`, `stop`, `restart` ou `kill`. La réponse est le service relu,
dans la forme de [`GET /api/resources/{id}`](/api/services#lire-un-service).

| Signal | Ce qu'il fait |
| --- | --- |
| `start` | Recrée le conteneur à partir de la configuration du moment, puis le démarre |
| `stop` | Demande l'arrêt propre, puis tue au bout du délai de grâce |
| `restart` | Arrête et relance le processus **dans le même conteneur** |
| `kill` | Tue immédiatement, sans délai de grâce |

<Warning>
`restart` ne relit pas tout. Les ports publiés, eux, sont figés à la création du
conteneur : pour qu'un changement de [réseau](/api/reglages#réseau) tombe, il faut un
`stop` puis un `start`, pas un `restart`. Les limites de processeur et de mémoire, à
l'inverse, s'appliquent à chaud sans rien redémarrer.
</Warning>

Demander un signal sur un service qui ne le porte pas rend un `409` :

```json
{
  "statusCode": 409,
  "message": "Ce service n'est pas en état de recevoir cette commande."
}
```

## Suspendre et rétablir

```http
POST /api/resources/{id}/suspend
POST /api/resources/{id}/resume
```

Un service suspendu s'arrête et **reste facturé au seul stockage** — c'est la façon de
garder ses fichiers sans payer le calcul. Le tarif courant se lit dans
`pricing.billedMonthlyMillicents`.

## Supprimer

```http
DELETE /api/resources/{id}
```

La suppression détruit le conteneur, son disque et ses sauvegardes. La facturation
s'arrête à cet instant. Le service passe en `DELETING` puis `DELETED`, et disparaît des
listes.

<Warning>
Rien ne se restaure après coup. Si tu veux garder les données, prends une
[sauvegarde](/api/sauvegardes) et récupère-la **avant** de supprimer.
</Warning>
