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

> Lista, crea, descarga y restaura snapshots de aplicaciones — el reemplazo de v4 para la antigua API de backups.

<Info>
  Los snapshots reemplazan la API `backup` / `backups` de v3. `app.backup` y `app.backups` todavía se exportan en v4 pero imprimen una advertencia de obsolescencia y redirigen a `app.snapshots`. Actualiza tu código para usar el nuevo nombre.
</Info>

`app.snapshots` expone el [`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
```

## Listar snapshots

`app.snapshots.list()` devuelve un array de instancias `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
}
```

Cada snapshot se puede descargar directamente:

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

## Crear un nuevo snapshot

`app.snapshots.create()` dispara un snapshot nuevo y devuelve la URL firmada y la key.

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

## Descargar en un solo paso

`app.snapshots.download()` crea un snapshot y lo descarga como un `Buffer`.

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

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

## Restaurar desde un snapshot

`app.snapshots.restore({ snapshotId, versionId })` revierte la aplicación a una versión de snapshot anterior.

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

| Campo        | Tipo     | Descripción                                    |
| ------------ | -------- | ---------------------------------------------- |
| `snapshotId` | `string` | Identificador del snapshot (UUID v4)           |
| `versionId`  | `string` | Identificador de versión devuelto por `list()` |

## Listar snapshots de toda la cuenta

`api.user.snapshots(scope)` devuelve todos los snapshots que posees en todas tus aplicaciones o bases de datos.

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

<Note>
  `api.user.snapshots()` requiere una suscripción de pago activa.
</Note>
