
# CLI 用の管理トークンを作成

`POST https://api.keenauth.com/v1/environments/{environment_id}/management-tokens` · `keenauth login` から呼び出されます

CLI のサインインを、1 つの環境に対する 10 分間有効な管理トークンに交換します。このエンドポイントを直接呼び出す必要はありません。`keenauth login` がダッシュボードのアカウントでサインインし（デバイス認可、または `--web` 指定時は PKCE 付きのループバックリダイレクト）、CLI が作業する環境ごとにトークンを要求します。トークンは CLI の鍵（DPoP）に紐づけられ、その環境におけるダッシュボードロールの権限のみを持ちます。

## リクエスト

ヘッダー:

| ヘッダー | 必須 | 説明 |
| --- | --- | --- |
| `Authorization` | はい | `DPoP <access token>`: サインイン時に CLI が受け取ったアクセストークンです。 |
| `DPoP` | はい | このリクエスト用の DPoP 証明です。アクセストークンに紐づく鍵で署名され、アクセストークンのハッシュとサーバー nonce を含みます。 |
| `Content-Type` | はい | `application/json`。 |

ボディ: 空の JSON オブジェクト `{}`。それ以外のメンバーは `unknown_field` で拒否されます。このリクエストに `Idempotency-Key` はありません。呼び出しのたびに新しいトークンが発行されます。

## レスポンス

`Cache-Control: no-store` 付きの `201 Created`:

| フィールド | 説明 |
| --- | --- |
| `access_token` | 管理トークンです。同じ鍵の証明とともに `Authorization: DPoP <token>` として送信します。 |
| `token_type` | 常に `DPoP`。 |
| `expires_in` | 有効期間（秒）: `600`。 |
| `expires_at` | 有効期間の終了時刻（RFC 3339、UTC）。 |
| `environment_id` | トークンの対象となる環境です。 |
| `audience` | トークンの対象となるセル（`<region>/<cell>`）です。 |
| `api_base` | トークンを受け付けるリージョナル API のベース URL です。 |
| `permissions` | お客様のダッシュボードロールの環境権限です。 |

CLI はトークンをメモリにのみ保持します。ロールの変更は最大 10 分以内に反映されます。ロールが削除されると、そのユーザーの有効なトークンは取り消されます。

## エラー

| ステータス | コード | 発生条件 |
| --- | --- | --- |
| 401 | `unauthenticated` | アクセストークンが送信されていません。 |
| 401 | `invalid_token` | アクセストークンが無効、期限切れ、または CLI のものではありません。`keenauth login` で再度サインインしてください。 |
| 401 | `invalid_dpop_proof` | DPoP 証明がないか、重複しているか、リクエストまたはトークンの鍵と一致しません。 |
| 401 | `use_dpop_nonce` | `DPoP-Nonce` レスポンスヘッダーの nonce を含む証明で再試行してください。 |
| 401 | `insufficient_user_authentication` | 多要素認証（またはお客様のロールに応じてパスキーもしくはセキュリティキー）が必要です。再度サインインしてください。 |
| 404 | `not_found` | 環境が存在しないか、その環境にダッシュボードロールがありません。 |
| 429 | `rate_limited` | お客様のユーザーで 1 分あたり 30 件を超えるトークン要求がありました（ダッシュボードと共有）。`Retry-After` を待ってください。 |

## 例

```bash
curl -X POST https://api.keenauth.com/v1/environments/env_01jb0000000000000000000000/management-tokens \
  -H "Authorization: DPoP $ACCESS_TOKEN" \
  -H "DPoP: $DPOP_PROOF" \
  -H "Content-Type: application/json" \
  -d '{}'
```
