
# Crear un token de gestión para la CLI

`POST https://api.keenauth.com/v1/environments/{environment_id}/management-tokens` · lo llama `keenauth login`

Canjea el inicio de sesión de la CLI por un token de 10 minutos de un entorno. Usted no llama a este endpoint directamente: `keenauth login` le inicia sesión con su cuenta del panel (autorización de dispositivo o, con `--web`, una redirección loopback con PKCE) y la CLI solicita un token para cada entorno en el que trabaja. El token queda vinculado a la clave de la CLI (DPoP) y solo lleva los permisos de su rol del panel en ese entorno.

## Solicitud

Encabezados:

| Encabezado | Obligatorio | Descripción |
| --- | --- | --- |
| `Authorization` | sí | `DPoP <access token>`: el token de acceso que la CLI recibió cuando usted inició sesión. |
| `DPoP` | sí | Una prueba DPoP para esta solicitud, firmada con la clave a la que está vinculado el token de acceso; contiene el hash del token de acceso y el nonce del servidor. |
| `Content-Type` | sí | `application/json`. |

Cuerpo: un objeto JSON vacío, `{}`. Cualquier otro miembro se rechaza con `unknown_field`. La solicitud no tiene `Idempotency-Key`: cada llamada emite un token nuevo.

## Respuesta

`201 Created` con `Cache-Control: no-store`:

| Campo | Descripción |
| --- | --- |
| `access_token` | El token de gestión. Envíelo como `Authorization: DPoP <token>` con una prueba de la misma clave. |
| `token_type` | Siempre `DPoP`. |
| `expires_in` | Duración en segundos: `600`. |
| `expires_at` | Fin de la duración (RFC 3339, UTC). |
| `environment_id` | El entorno para el que es el token. |
| `audience` | La celda para la que es el token (`<region>/<cell>`). |
| `api_base` | URL base de la API regional que acepta el token. |
| `permissions` | Los permisos de su rol del panel en el entorno. |

La CLI guarda el token solo en memoria. Un cambio de rol surte efecto en 10 minutos como máximo; cuando se quita un rol, los tokens abiertos de ese usuario se revocan.

## Errores

| Estado | Código | Cuándo |
| --- | --- | --- |
| 401 | `unauthenticated` | No se envió ningún token de acceso. |
| 401 | `invalid_token` | El token de acceso no es válido, ha caducado o no es de la CLI; inicie sesión de nuevo con `keenauth login`. |
| 401 | `invalid_dpop_proof` | La prueba DPoP falta, está repetida o no coincide con la solicitud ni con la clave del token. |
| 401 | `use_dpop_nonce` | Reintente con una prueba que incluya el nonce del encabezado de respuesta `DPoP-Nonce`. |
| 401 | `insufficient_user_authentication` | Se requiere autenticación multifactor (o, para su rol, una clave de acceso o una clave de seguridad); inicie sesión de nuevo. |
| 404 | `not_found` | El entorno no existe o usted no tiene un rol del panel en él. |
| 429 | `rate_limited` | Más de 30 tokens por minuto para su usuario (compartido con el panel); espere lo indicado en `Retry-After`. |

## Ejemplo

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