await ファサード付き)、依存関係はゼロで、メソッドをリソースごとにグループ化し、プレーンな dict (TypedDict) を返し、単一の例外型を送出します。Square Cloud API の全 67 操作をカバーしています。
概要
初期化とオプション
メソッドごとの対応
Application のメソッドは、ID を渡す同じ呼び出しに対応します: app.logs() → client.apps.logs(app.id)、app.files_list(path) → client.apps.files.list(app.id, path) など。
型
レスポンスはsquarecloud.types にある TypedDict で、JS と Go の SDK と同じ名前が付いています: Account、User、Plan、AppSummary、DatabaseSummary、App、AppCreated、StatusListItem、RuntimeStats、MetricPoint、AppDomain、LoadBalancers、DeployEvent、DeployCurrent、DeployRepository、LinkedRepository、EnvVars、FileEntry、Snapshot、SnapshotCreated、SnapshotScope、AnalyticsFilters、NetworkAnalytics、NetworkErrors、NetworkLog、NetworkPerformance、DNSRecord、Database、DatabaseCreated、DatabaseType、Workspace、WorkspaceCreated、WorkspaceGroup、ServiceStatus、ServiceEntry、ChatRequest、ChatMessage、ChatCompletion、RealtimeEvent、RealtimeStatus。これらは v4 の data/* の dataclass (UserData、StatusData、AppData など) を置き換えます。squarecloud.Response はトランスポートのレスポンスのプロトコルになりました (カスタムトランスポートを参照)。変更系が返していた v4 の Response はなくなり、変更系は None を返します。
エラー
str(e) は '<METHOD> <path>: HTTP <status> <CODE>: <message>' です。ステータスが 0 の場合は HTTP <status> が、メッセージが空の場合は : <message> が省かれます。サーバーがコードしか送らなかった場合、e.message は '' です。
動作の変更
- 省略可能な修飾引数はキーワード専用です:
account.snapshots(scope=)、apps.status_all(workspace_id=)、apps.status(id, raw=)、databases.status(id, raw=)、apps.commit(id, file, path=, filename=)、apps.network.errors(..., include_4xx=)、apps.network.analytics(...)のフィルター、databases.update(id, name=, ram=)、databases.create(name, type=, version=, memory=)。apps.files.listの省略可能なpathは位置引数のままです。 - 2xx の
{"status": "error"}ボディは例外を送出します。アプリとデータベースの起動・停止の拒否は、コードのみを持つ 409 です (CONTAINER_ALREADY_STARTED、ACTION_FAILEDなど)。202SNAPSHOT_PROCESSINGは例外を送出せずに{'pending': True}を返します:listをポーリングし、createを再度呼び出さないでください。 - 設定されていない省略可能なクエリ値 (および
'') は、送信されずに省かれます。 - 文字列の結果が
Noneになることはありません:reset_credentials(id, 'certificate')と削除された webhook は''を返します。 apps.files.writeはstrをテキストとして、bytesを base64 エンコードで送信します。空の内容は空のファイルを作成し、1 MiB を超える内容はタイムアウトなしで送信されます。apps.files.readは常に base64 を要求し、デコードされたbytesを返します。- 存在しないディレクトリに対する
apps.files.listは 404FILE_NOT_FOUNDを送出します。 - 503
DATABASE_UNAVAILABLEは変更が適用された後に発生することがあるため、GETでのみリトライされます。冪等な変更をリトライするかどうかは呼び出し側に委ねられます。 - リアルタイムのストリームは
{'event', 'data', 'id', ...}のイベントを返し、5.5 秒に 1 回のオープンで連続最大 3 回まで再オープンし、オープンに失敗すると例外を送出します。
非同期
v4 は非同期のみでした。v5 ではSquareCloud が同期型で、AsyncSquareCloud が await ファサードです。グループとメソッドは同じで、各呼び出しは asyncio.to_thread で実行されるため、イベントループがブロックされることはありません。リアルタイムのストリームは async for になり (読み取りスレッドがループにデータを渡します)、async with または close() で閉じます。
v4:
次のステップ
クライアント
SDK をインストールしてクライアントを作成します。
エラー
エラークラス、リトライ、レート制限。

