アカウントとメンバー
アカウントは支払いを行う単位で、プラン、残高、メンバーを持ちます。各メンバーは owner、admin、member のいずれかです。
| ロール | できること |
|---|---|
owner |
すべて:アカウントの課金とメンバーの管理、アカウントの閉鎖。アカウントには常にオーナーがいる |
admin |
課金とオーナー以外のすべて:プロジェクトではオーナーと同じ権限。管理者とメンバーの招待と削除、ロールの変更 |
member |
プロジェクトと、そのサンドボックス、キューブ、キー(admin スコープなし) |
人は、メールアドレスとパスワード、またはコンソールにボタンが表示されている場合は GitHub か Google で、[コンソール](https://console.glac.ai/console/)にサインインします。アカウントへの招待も同じ方法で受けます。アカウントは 1 つ以上のプロジェクトを持ちます。
通知の送信先
アカウントの通知は、そのアドレスにメールで送られます。glac account email ADDRESS(email を付けた PATCH /v1/account。admin スコープが必要)で設定するか、コンソールの Billing ページの Mail の部分で設定します。そこには、アカウントに送られたすべてのメールも本文とともに一覧表示されます(GET /v1/billing/notices、glac billing notices)。
- メールが送られるのは確認済みのアドレスだけです(
GET /v1/accountのemail_verified)。アカウントで以前に確認済みのアドレスや、アカウントのメンバーの確認済みのアドレスは、すぐに確認済みになります。それ以外のアドレスには、7 日間有効な確認用のリンクが送られ、それが開かれるまでアカウントの通知は保留されます。同じアドレスでも設定し直すと新しいリンクが送られ、古いリンクは使えなくなります。コンソールの Send the link again も同じです。リンクは 1 つのアカウントで 3 回まで、その後は 10 分に 1 回です(429rate_limited)。 - **不達のメール。**アドレスへのメールが不達になったり、受信者が迷惑メールとしてマークしたりすると、そこには通知が送られなくなります(
email_undeliverable:whyはbouncedかcomplainedで、sinceと送信側のdetail付き)。通知は、同じアドレスでも設定し直されるまで保留されます。 - 通知が保留されている間は、通知を起点に数え始めるものは始まりません。未払い状態のアカウントが保存しているものが削除されるまでの 30 日間は、未払いの最初の通知が届いた時点から数えます。
- 自分のアドレスを変更したメンバーは、メンバーになっているアカウントのうち、古いアドレスに送られていた通知を新しいアドレスへ引き継ぎます。
メールで送られるもの:
| 通知 | 条件 |
|---|---|
purchase_confirmed, withdrawal_received |
購入(チャージ、プラン)。購入の撤回(撤回で指定されたアドレスに受領通知を送る) |
included_80, included_100, storage_80, storage_100 |
残高がなく、自動チャージでもチャージされないアカウントが、プランに含まれる計測項目やストレージの 80%、さらにすべてを使った |
in_debt、reminder_…(日ごと)、charge_failed、data_deleted |
ストレージの未払いがある。7、14、21、27、29 日目ごとの催促。未払い分のカードへの請求の失敗。保存していたものの削除。未払いのあるアカウントを参照 |
subscription_charge_failed, subscription_ended |
プランの更新を請求できなかった。猶予期間内に支払われず、アカウントは無料プランになった |
reload_failed, reload_no_card, reload_no_request |
自動チャージを請求できなかった、カードがない、または購入者の要求を待っている |
credits_expiring_…(残り日数ごと) |
クレジットの一部が 30、7、1 日後に失効する |
tax_address_confirm, tax_payment_held |
請求先住所の確認が必要。サポートの確認を待って支払いが保留されている |
account_held |
アカウントが保留になった:account_held を参照 |
verify_account_email |
アドレスを確認するためのリンク。そのアドレスに送られる |
プロジェクト
それ以外のものはすべてプロジェクトが持ちます。キー、キューブ、サンドボックス、スナップショット、ドライブとボリューム、シークレット、共有変数、ドメインです。名前はプロジェクト内で一意です。キーから見えるのは、そのキー自身のプロジェクトだけです。
GET /v1/project(glac project)は、キーのプロジェクトを返します。ID、名前、ホームリージョン、プライベートネットワークのアドレス範囲、そしてスリープが何日続いたらサンドボックスを削除するか(delete_after_idle_days を付けた PATCH /v1/project、glac project --delete-after-idle-days 30。長くスリープすると削除されるを参照)です。プロジェクトは独自の月間利用上限額を持てます。利用上限額を参照してください。
サービス
すべてのキューブは、プロジェクトのサービスです。サービスはプロジェクトのプライベートネットワーク上で互いを見つけ、変数を共有し、まとめてデプロイされ、データを専用のドライブに保持し、Compose ファイルから取り込むこともできます。サービスと Compose を参照してください。
API キー
キー(ak_…)は 1 つのプロジェクトに属し、スコープを持ちます。コンソールの API keys ページか、POST /v1/keys({name, scopes, expires_at}。どのフィールドも省略可能。glac keys create、Python では glac.keys.create())で作成します。キーが表示されるのは、作成時のレスポンスの一度だけなので、安全な場所に保管してください。スコープを選ばずに作ったキーは、admin 以外のすべてのスコープを持ちます。DELETE /v1/keys/{id} で、キーをすぐに無効にできます。
| スコープ | 開けるもの |
|---|---|
read |
サンドボックス、スナップショット、ドライブとボリューム、使用量、アカウント、請求、イベント、キューブ、プロジェクトとその変数の読み取り。シークレットの名前 |
write |
サンドボックス、スナップショット、ドライブ、ボリューム、キューブの作成、変更、削除。スリープ、再起動、フォーク、復元。デプロイとロールバック。共有変数 |
exec, files, tty, url |
コマンドの実行、ファイル、ターミナル、ポートへのリンク |
admin |
キー、SSH キー、Webhook、利用上限額、監査ログ、アカウントの設定、課金とチャージ、シークレットとドメイン |
呼び出しに対してスコープが足りないキーには 403 key_scope が、期限切れのキーには 401 expired_api_key が返ります。
どのツールも、同じ 2 つの環境変数を読みます。
export GLAC_API_URL=https://api.glac.ai
export GLAC_API_KEY=ak_...その他の認証情報
- 1 つのサンドボックス用のトークン(
st_…)は、そのサンドボックスだけを、url、exec、files、ttyのうち一部のスコープで、指定しなければ 1 時間開きます。トークンを参照してください。 - SSH キーは、SSH ゲートウェイを通じてプロジェクトのサンドボックスを開きます。SSH を参照してください。
API の応答のしかた
- 入出力は JSON、名前は
snake_case、時刻は RFC 3339、サイズはバイト(_bytes)、期間は秒(_seconds)かミリ秒(_ms)です。ID には種類を示す接頭辞が付きます:sbx-、exe-、snap-、vol-、app-、ver-。ID を受け付けるところでは、名前も受け付けます。 - エラーの形式は 1 つです:
{"error": {"type", "code", "message", "param", "retryable", "request_id", "docs_url"}}。codeはプログラム向け、messageは人向けです。retryable: trueは、同じ呼び出しを後でやり直せば成功する可能性があることを示し、いつかがわかる場合はRetry-Afterが付きます。docs_urlはエラーのページの該当するコードを指します。すべてのレスポンスにX-Request-Idが付きます。 - 一覧はページ単位です:
?limit=(1〜1,000、指定しなければ 100)と、前のページのnext_cursorから取る?cursor=を使い、新しい順に並びます。 Idempotency-KeyをPOSTに付けると(1〜255 文字)、24 時間以内に同じキーと同じボディで再送しても最初のレスポンスが返り、何も 2 回行われません。SDK はすべてのPOSTにこれを付けて送ります。- イベント:
GET /v1/eventsはプロジェクトで起きたこと(sandbox.created、drive.attached、balance.used_upなど)を一覧表示し、Webhook はそれを Webhook のシークレットで署名して自前の URL に届けます(POST /v1/webhooks、glac webhooks create、Python ではglac.webhooks.create())。GET /v1/auditは、誰が何を変更したかを一覧表示します。読み取り以外のすべての呼び出し(拒否されたものも含む)とその実行者、そしてオペレーターによるアプリのログの読み取りすべてです(glac audit、SDK のaudit、MCP サーバーのproject_audit。adminスコープを持つキーが必要)。
すべての呼び出しは API リファレンスにあります。