# Restaurer

Trois restaurations existent, de la plus fréquente à la plus rare. Aucune n'est un retour en arrière sur les données d'une base : le catalogue d'outils ne contient pas de restauration de base à partir d'une sauvegarde (voir [la référence MCP](../reference/mcp.md)).

## 1. Revenir à la release précédente d'un environnement

C'est la restauration d'un déploiement qui se passe mal. Elle ne reconstruit rien : elle remet en service une release déjà construite, en quelques secondes. Deux appels, dans cet ordre.

**Lire ce qui sera rétabli.** L'outil `deployment_restorable_list` (arguments `projectId`, `environmentId`, et `releaseId` pour viser une autre release que la précédente) rend :

- `restorable` : vrai si la restauration est possible, sinon `refusalCode` et `refusalMessage` disent pourquoi ;
- `releaseId` et `commitSha` : la release visée ;
- `notRestored` : ce que la restauration ne rétablit pas, avec une catégorie et un détail pour chaque élément ;
- `confirmationToken` : la preuve que vous avez lu cette liste.

**Restaurer.** L'outil `deployment_rollback` prend les mêmes `projectId` et `environmentId`, le `confirmationToken` et, au besoin, `releaseId`.

```json
{
  "projectId": "prj_01JQ8ZK4M7NP2RSTVWXYZ34567",
  "environmentId": "env_01JQ8ZK4M7NP2RSTVWXYZ34567",
  "confirmationToken": "<jeton rendu par deployment_restorable_list>"
}
```

La réponse porte `restoredReleaseId`, `previousReleaseId` et `notRestored`, et un `undoToken`. L'environnement reste épinglé sur la release rétablie : un nouveau déploiement ne la remplace pas tant que vous n'avez pas levé l'épinglage avec `environment_unpin`.

## 2. Défaire la restauration

Pendant cinq minutes, une fois, avec le même compte et la même session d'agent, `action_undo` (argument `undoToken`, celui de la réponse) remet les choses comme avant. Passé ce délai, rejouez simplement l'opération d'origine.

## 3. Sortir un projet de la corbeille

Un projet dont la suppression a été demandée reste récupérable pendant la période de grâce. `project_deletion_cancel` retire la demande, l'annule pendant la grâce, ou restaure le projet depuis la corbeille.

## En cas d'échec

`deployment_rollback` est de classe E : une personne valide l'appel avant qu'il parte. Un refus nomme sa cause : `confirmation_perimee` (ce qui serait restauré a changé : relisez `deployment_restorable_list`), `rien_a_restaurer`, `deja_servie`, ou `release_refroidie` (la release est hors de la fenêtre de restauration rapide, elle demande une confirmation). Les codes de chaque outil sont dans [la référence MCP](../reference/mcp.md).

Voir aussi : [Créer un projet](project.md), [Déployer](deploy.md).
