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

# v5 への移行

> @squarecloud/api の v4 と v5 の間で変更された点。破壊的変更とアップグレードに必要な最小限のパッチ。

## 要件

v4 から変更なし: **Node.js 20.0.0** 以降、ESM と CJS の両方に対応。

## 破壊的変更の概要

| v4.x                                                            | v5.x                                                             |
| --------------------------------------------------------------- | ---------------------------------------------------------------- |
| `client.users.*`（非推奨プロキシ）                                       | 削除。`client.user.*` を使用してください                                     |
| `app.backup` / `app.backups`                                    | 削除。`app.snapshots` を使用してください                                     |
| `Backup` エクスポート                                                 | 削除。`Snapshot` / `DatabaseSnapshot` を使用してください                     |
| `api.applications.create(file)` は `{ id, name, lang, ram }` を返す | `{ id, name, ram, cpu, language, description?, subdomain? }` を返す |
| `app.network.dns()` は `{ ownership, ssl }` を返す                  | DNS レコードの配列を返す                                                   |

## `client.users` の削除

v3 から v4 への移行とは異なり、今回は非推奨のプロキシは用意されていません。`client.users` はもう存在せず、呼び出すと例外がスローされます。

```typescript theme={null}
// v4
await api.users.get();

// v5
await api.user.get();
```

## Backups の削除

`app.backup` と `app.backups` は、`Backup` エクスポートとともに削除されました。アプリケーションとデータベースの両方で、snapshot だけがサポートされる方法です。

```typescript theme={null}
// v4
await app.backups.create();
await app.backup.list();

// v5
await app.snapshots.create();
await app.snapshots.list();
```

アプリケーションの snapshot には `Snapshot` クラスを、データベースの snapshot には `DatabaseSnapshot` クラスを使用してください。

## `api.applications.create(file)` の戻り値の形式

作成されたアプリケーションは、フラットな `lang`/`ram` のペアの代わりに、より詳細な言語情報とリソース情報を返すようになりました。

```typescript theme={null}
// v4
const { id, name, lang, ram } = await api.applications.create(file);

// v5
const { id, name, ram, cpu, language, description, subdomain } =
    await api.applications.create(file);

// language は現在オブジェクトです。例: { name: "javascript", version: "22" }
// cpu は割り当てられた CPU シェア（number）です
// description と subdomain は squarecloud.config で設定した場合のみ存在します
```

## `app.network.dns()` の形式

`dns()` は、単一の `{ ownership, ssl }` オブジェクトの代わりに、DNS レコードの配列を返すようになりました。

```typescript theme={null}
// v4
const { ownership, ssl } = await app.network.dns();

// v5
const records = await app.network.dns();
// [{ type: "txt", name, value, status }, { type: "cname", name, value: "cname.squareweb.app", status }]
```

`txt` レコードは所有権と SSL 検証の両方をカバーし、`cname` レコードがトラフィックのレコードです。`status` は検証状態（`pending`、`pending_validation`、`active` など）を表します。

## その他の変更

* `ApplicationLanguage` に `ruby` が追加されました。javascript、typescript、python、java、elixir、go、rust、php、dotnet、static に加わります。
* エラーコードが標準化されました。新しい名前は `APIErrorCode` を通じてエクスポートされ、旧名は非推奨の型エイリアスとして引き続き利用できます。リネームの全表は [エラーコード](/ja/sdks/js/client) を参照してください。
