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

> アプリケーションの snapshot を一覧表示、作成、ダウンロード、復元します — レガシーな backup API に代わる v4 の機能です。

<Info>
  Snapshot は v3 の `backup` / `backups` API を置き換えるものです。`app.backup` と `app.backups` は v4 でも引き続きエクスポートされていますが、非推奨の警告を表示して `app.snapshots` へプロキシします。コードを新しい名前を使うように更新してください。
</Info>

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

## snapshot の一覧表示

`app.snapshots.list()` は `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
}
```

各 snapshot は直接ダウンロードできます。

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

## 新しい snapshot の作成

`app.snapshots.create()` は新しい snapshot を生成し、署名付き URL とキーを返します。

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

## ワンステップでのダウンロード

`app.snapshots.download()` は snapshot を作成し、`Buffer` としてダウンロードします。

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

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

## snapshot からの復元

`app.snapshots.restore({ snapshotId, versionId })` は、アプリケーションを以前の snapshot バージョンに巻き戻します。

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

| フィールド        | 型        | 説明                     |
| ------------ | -------- | ---------------------- |
| `snapshotId` | `string` | snapshot 識別子 (UUID v4) |
| `versionId`  | `string` | `list()` が返すバージョン識別子   |

## アカウント全体の snapshot の一覧表示

`api.user.snapshots(scope)` は、すべてのアプリケーションまたはデータベースにわたって所有しているすべての snapshot を返します。

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

<Note>
  `api.user.snapshots()` には有効な有料サブスクリプションが必要です。
</Note>
