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

# Snapshots

> Lister, créer, télécharger et restaurer des snapshots d'application — le remplaçant en v4 de l'ancienne API de backup.

<Info>
  Les snapshots remplacent l'API `backup` / `backups` de la v3. `app.backup` et `app.backups` sont toujours exportés en v4 mais ils affichent un avertissement de dépréciation et redirigent vers `app.snapshots`. Mettez à jour votre code pour utiliser le nouveau nom.
</Info>

`app.snapshots` expose le [`SnapshotsModule`](https://github.com/squarecloudofc/sdk-api-js/blob/main/src/modules/snapshots.ts).

```typescript theme={null}
const app = await api.applications.fetch("abc123def456abc123def456");
app.snapshots; // SnapshotsModule
```

## Lister les snapshots

`app.snapshots.list()` renvoie un tableau d'instances `Snapshot`.

```typescript theme={null}
const snapshots = await app.snapshots.list();

for (const snap of snapshots) {
    console.log(snap.url);          // signed download URL (valid for 30 days)
    console.log(snap.size);         // bytes
    console.log(snap.modifiedAt);   // Date
    console.log(snap.key);          // signed query string
}
```

Chaque snapshot peut être téléchargé directement :

```typescript theme={null}
const buffer = await snapshots[0].download();
```

## Créer un nouveau snapshot

`app.snapshots.create()` déclenche un nouveau snapshot et renvoie l'URL signée et la clé.

```typescript theme={null}
const fresh = await app.snapshots.create();
console.log(fresh.url); // valid for 30 days
console.log(fresh.key);
```

## Télécharger en une seule étape

`app.snapshots.download()` crée un snapshot et le télécharge sous forme de `Buffer`.

```typescript theme={null}
import { writeFile } from "node:fs/promises";

const buffer = await app.snapshots.download();
await writeFile("./backup.zip", buffer);
```

## Restaurer depuis un snapshot

`app.snapshots.restore({ snapshotId, versionId })` restaure l'application à une version de snapshot précédente.

```typescript theme={null}
await app.snapshots.restore({
    snapshotId: "00000000-0000-4000-8000-000000000000",
    versionId: "abc123def4567890",
});
```

| Champ        | Type     | Description                                 |
| ------------ | -------- | ------------------------------------------- |
| `snapshotId` | `string` | Identifiant du snapshot (UUID v4)           |
| `versionId`  | `string` | Identifiant de version renvoyé par `list()` |

## Lister les snapshots à l'échelle du compte

`api.user.snapshots(scope)` renvoie tous les snapshots que vous possédez sur l'ensemble de vos applications ou bases de données.

```typescript theme={null}
const appSnapshots = await api.user.snapshots("applications");
const dbSnapshots  = await api.user.snapshots("databases");
```

<Note>
  `api.user.snapshots()` nécessite un abonnement payant actif.
</Note>
