
# Lister vos environnements pour la CLI

`GET https://api.keenauth.com/v1/environments` · appelé par `keenauth env list`

Liste les environnements sur lesquels vous pouvez travailler avec la CLI : les environnements du compte à lequel vous vous êtes connecté avec `keenauth login` et pour lesquels vous avez un rôle du tableau de bord, par une attribution au compte, au projet ou à l'environnement. Les environnements supprimés et les environnements des projets supprimés ne sont pas listés. Vous n'appelez pas ce point de terminaison vous-même ; `keenauth env list` affiche la liste et `keenauth env use <environment_id>` en choisit un.

Si vous êtes membre de plusieurs comptes, la liste ne contient que les environnements du compte de votre connexion actuelle ; connectez-vous à l'autre compte pour voir ses environnements. Si vous n'avez de rôle dans aucun environnement, la liste est vide.

## Requête

En-têtes :

| En-tête | Obligatoire | Description |
| --- | --- | --- |
| `Authorization` | oui | `DPoP <access token>` : le jeton d'accès reçu par la CLI lors de votre connexion. |
| `DPoP` | oui | Une preuve DPoP pour cette requête (`htm` `GET`, `htu` `https://api.keenauth.com/v1/environments` sans la requête), signée avec la clé à laquelle le jeton d'accès est lié ; elle contient le hachage du jeton d'accès et le nonce du serveur. |

Paramètres de requête :

| Paramètre | Description |
| --- | --- |
| `limit` | Taille de page, de 1 à 100 ; valeur par défaut 20. |
| `after` | La valeur `list_metadata.after` de la page précédente. |

La liste ne pagine que vers l'avant : `before` et `order` sont refusés avec `validation_failed`.

## Réponse

`200 OK` avec `Cache-Control: no-store`, du plus récent au plus ancien :

| Champ | Description |
| --- | --- |
| `data[].id` | L'environnement (`env_…`) ; utilisez-le avec `keenauth env use` et la requête de jeton de gestion. |
| `data[].slug` | Le libellé DNS de l'environnement (`<slug>.<region>.keenauth.app`). |
| `data[].display_name` | Le nom de l'environnement. |
| `data[].environment_type` | `production`, `staging` ou `development`. |
| `data[].region` | La région des données de l'environnement, par exemple `eu`. |
| `data[].project_id` | Le projet (`proj_…`). |
| `data[].project_name` | Le nom du projet. |
| `data[].account_id` | Le compte (`acct_…`). |
| `data[].dashboard_role` | Votre rôle du tableau de bord dans l'environnement (`owner`, `admin`, `developer`, `support`, `billing`, `viewer`, ou `custom` lorsque seuls des rôles personnalisés le couvrent). |
| `data[].created_at` | Date de création de l'environnement (RFC 3339, UTC). |
| `list_metadata.after` | Curseur de la page suivante ; `null` sur la dernière page. |
| `list_metadata.before` | Toujours `null`. |

Le curseur est lié à vous et au compte ; il ne fonctionne pas pour un autre utilisateur ni pour une autre connexion.

## Erreurs

| Statut | Code | Quand |
| --- | --- | --- |
| 400 | `invalid_cursor` | Le curseur `after` est mal formé, modifié ou a été émis pour un autre utilisateur ou compte. |
| 401 | `unauthenticated` | Aucun jeton d'accès n'a été envoyé. |
| 401 | `invalid_token` | Le jeton d'accès est invalide, expiré ou n'est pas celui de la CLI ; reconnectez-vous avec `keenauth login`. |
| 401 | `invalid_dpop_proof` | La preuve DPoP est absente, répétée ou ne correspond pas à la requête ou à la clé du jeton. |
| 401 | `use_dpop_nonce` | Réessayez avec une preuve qui contient le nonce de l'en-tête de réponse `DPoP-Nonce`. |
| 401 | `insufficient_user_authentication` | L'authentification multifacteur est requise ; reconnectez-vous. |
| 422 | `validation_failed` | `limit` n'est pas un entier de 1 à 100, un paramètre est répété, ou `before` ou `order` a été envoyé. |

## Exemple

```bash
curl "https://api.keenauth.com/v1/environments?limit=50" \
  -H "Authorization: DPoP $ACCESS_TOKEN" \
  -H "DPoP: $DPOP_PROOF"
```
