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

> Elenca, crea, scarica e ripristina gli snapshot delle applicazioni — il sostituto v4 della vecchia API di backup.

<Info>
  Gli snapshot sostituiscono l'API `backup` / `backups` della v3. `app.backup` e `app.backups` sono ancora esportati nella v4 ma mostrano un avviso di deprecazione e reindirizzano a `app.snapshots`. Aggiorna il tuo codice per usare il nuovo nome.
</Info>

`app.snapshots` espone lo [`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
```

## Elencare gli snapshot

`app.snapshots.list()` restituisce un array di istanze `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
}
```

Ogni snapshot può essere scaricato direttamente:

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

## Creare un nuovo snapshot

`app.snapshots.create()` avvia un nuovo snapshot e restituisce l'URL firmato e la key.

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

## Download in un solo passaggio

`app.snapshots.download()` crea uno snapshot e lo scarica come `Buffer`.

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

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

## Ripristinare da uno snapshot

`app.snapshots.restore({ snapshotId, versionId })` riporta l'applicazione a una versione precedente dello snapshot.

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

| Campo        | Tipo     | Descrizione                                          |
| ------------ | -------- | ---------------------------------------------------- |
| `snapshotId` | `string` | Identificatore dello snapshot (UUID v4)              |
| `versionId`  | `string` | Identificatore della versione restituito da `list()` |

## Elencare gli snapshot a livello di account

`api.user.snapshots(scope)` restituisce ogni snapshot di tua proprietà su tutte le tue applicazioni o database.

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

<Note>
  `api.user.snapshots()` richiede un abbonamento a pagamento attivo.
</Note>
