Skip to main content
v6 は全面的な書き直しです。フラットな単一のクライアント、クラスの代わりにプレーンなデータ、第 1 引数に ID、そして単一のエラークラス。変更のほとんどは機械的に置き換えられます。

概要

初期化とオプション

メソッドごとの対応

型

型は SDK に同梱され、API のフィールド名を反映しています。@squarecloud/api-types と v5 のクラスからの主な名称変更:

エラー

  • 合成コード (RATE_LIMIT_EXCEEDED、PAYLOAD_TOO_LARGE、SERVER_UNAVAILABLE、UNKNOWN_ERROR_<status>) は廃止されました。API の実際のコード (RATE_LIMITED、KEEP_CALM、DAILY_SNAPSHOTS_LIMIT_REACHED、FILE_TOO_LARGE など) がそのまま表れます。
  • レスポンスがない場合: NETWORK_ERROR (原因は cause に入ります) または TIMEOUT で、status: 0。コードのないボディは、実際の status とメッセージ HTTP <status> を持つ UNKNOWN_ERROR になります。
  • API のエラーに対して instanceof TypeError は true ではなくなりました。
  • 期限切れのキーは、不明なキーと同様に 401 ACCESS_DENIED になります。
  • ai.chat() のエラーは、認証とレート制限も含めて、小文字の OpenAI コード (access_denied、rate_limit_exceeded など) を持ちます。
  • 拒否された start/stop/restart は、コードのみを持つ 409 です: CONTAINER_ALREADY_STARTED、CONTAINER_ALREADY_STOPPED、CONTAINER_TEMPORARILY_SUSPENDED、CONTAINER_NOT_FOUND、CONTAINER_INSUFFICIENT_DISK_SPACE、CONTAINER_NETWORK_CONFLICT、ACTION_FAILED。

動作の変更

  • 呼び出しがタイムアウトするようになりました: デフォルトで試行ごとに 30 秒 (v5 にはタイムアウトがありませんでした)、サーバーが接続を保持する呼び出しでは最低 120 秒。無効にするには timeoutMs: 0 を設定します。
  • files.write() は文字列を内容として扱い、プレーンテキストとして送信します。バイト列は base64 でバイナリセーフに送信され、空の内容は空のファイルを作成します (Python SDK および Go SDK と同じ送信形式)。files.read() は base64 をリクエストしてデコードします。
  • 存在しないディレクトリに対する files.list() は、[] を返す代わりに 404 FILE_NOT_FOUND をスローします。
  • snapshots.create() は、202 の場合にスローする代わりに { pending: true } を返します。
  • 文字列の結果が undefined になることはありません: API が何も送らない場合、setWebhook と resetCredentials("certificate") は "" を返し、deploys.current() は {} を返します。
  • realtime() は、接続が切れた場合と REALTIME_RECONNECT の場合に再接続します (連続 3 回まで、オープンは 5.5 秒に最大 1 回)。
  • リトライ: GET でのネットワークエラーと 503 UPLOAD_BUSY/ANALYTICS_BUSY (および GET での DATABASE_UNAVAILABLE) を、バックオフ付きでリトライします。429 は決してリトライしません。DATABASE_UNAVAILABLE は変更が適用された後に返されることがあるため、冪等な変更は自分でリトライしてください。
  • 空、.、.. の ID はローカルで INVALID_ID として失敗します。
  • undefined、""、false のクエリ値は送信されません。