
# CLI için yönetim tokenı oluştur

`POST https://api.keenauth.com/v1/environments/{environment_id}/management-tokens` · `keenauth login` çağırır

CLI'nin oturumunu tek bir ortam için 10 dakikalık bir tokenla değiştirir. Bu ucu kendiniz çağırmazsınız: `keenauth login` sizi pano hesabınızla oturum açtırır (cihaz yetkilendirmesi ya da `--web` ile PKCE'li loopback yönlendirmesi) ve CLI çalıştığı her ortam için bir token ister. Token CLI'nin anahtarına bağlıdır (DPoP) ve yalnız o ortamdaki pano rolünüzün izinlerini taşır.

## İstek

Başlıklar:

| Başlık | Zorunlu | Açıklama |
| --- | --- | --- |
| `Authorization` | evet | `DPoP <erişim tokenı>`: oturum açtığınızda CLI'nin aldığı erişim tokenı. |
| `DPoP` | evet | Bu istek için, erişim tokenının bağlı olduğu anahtarla imzalanmış DPoP kanıtı; erişim tokenının özetini ve sunucu nonce'unu taşır. |
| `Content-Type` | evet | `application/json`. |

Gövde: boş JSON nesnesi, `{}`. Başka her üye `unknown_field` ile reddedilir. İstek `Idempotency-Key` taşımaz: her çağrı yeni bir token verir.

## Yanıt

`201 Created`, `Cache-Control: no-store` ile:

| Alan | Açıklama |
| --- | --- |
| `access_token` | Yönetim tokenı. Aynı anahtarın kanıtıyla `Authorization: DPoP <token>` olarak gönderin. |
| `token_type` | Her zaman `DPoP`. |
| `expires_in` | Saniye cinsinden ömür: `600`. |
| `expires_at` | Ömrün sonu (RFC 3339, UTC). |
| `environment_id` | Tokenın ait olduğu ortam. |
| `audience` | Tokenın ait olduğu hücre (`<bölge>/<hücre>`). |
| `api_base` | Tokenı kabul eden bölgesel API'nin temel URL'si. |
| `permissions` | Pano rolünüzün ortam izinleri. |

CLI tokenı yalnız bellekte tutar. Rol değişikliği en geç 10 dakikada etkili olur; rol kaldırıldığında o kullanıcının açık tokenları iptal edilir.

## Hatalar

| Durum | Kod | Ne zaman |
| --- | --- | --- |
| 401 | `unauthenticated` | Erişim tokenı gönderilmedi. |
| 401 | `invalid_token` | Erişim tokenı geçersiz, süresi dolmuş ya da CLI'nin değil; `keenauth login` ile yeniden oturum açın. |
| 401 | `invalid_dpop_proof` | DPoP kanıtı yok, yinelenmiş ya da isteğe veya tokenın anahtarına uymuyor. |
| 401 | `use_dpop_nonce` | `DPoP-Nonce` yanıt başlığındaki nonce'u taşıyan bir kanıtla yeniden deneyin. |
| 401 | `insufficient_user_authentication` | Çok faktörlü kimlik doğrulama (rolünüz için passkey ya da güvenlik anahtarı) gerekiyor; yeniden oturum açın. |
| 404 | `not_found` | Ortam yok ya da ortamda pano rolünüz yok. |
| 429 | `rate_limited` | Kullanıcınız için dakikada 30 tokenın üstü (panoyla ortak); `Retry-After` kadar bekleyin. |

## Örnek

```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 '{}'
```
