
# Énumérer les applications

`GET /v1/applications` · permission `applications:read`

Énumère les applications de l'environnement, les plus récentes d'abord (`order=asc` l'inverse). La pagination est basée sur un curseur : passez `list_metadata.after` comme `after` pour la page suivante et `list_metadata.before` comme `before` pour la page précédente. Un curseur est lié aux filtres et à l'ordre pour lequel il a été émis ; l'utiliser avec d'autres filtres retourne `400 invalid_cursor`. Aucun compte total n'est retourné.

## Demande

| Paramètre | Type | Description |
|---|---|---|
| `limit` | integer | 1-100, par défaut 20. |
| `after` / `before` | string | Curseurs opaques ; pas les deux. |
| `order` | string | `desc` (par défaut) ou `asc`. |
| `app_type` | string | Filtre : `web`, `spa`, `native`, `m2m`, `device`, `management`. |
| `status` | string | Filtre : `active` ou `suspended`. |

## Réponse

`200 OK`.

```json
{
  "data": [ { "id": "app_6f8d0cjgbmf0gtn2rg6pscp3cg", "key": "portal", "…": "…" } ],
  "list_metadata": { "before": null, "after": "<cursor>" }
}
```

## Erreurs

| HTTP | `code` | Quand |
|---|---|---|
| 401 | `unauthenticated` | La clé est manquante, invalide ou révoquée. |
| 403 | `insufficient_permissions` | La clé n'a pas la permission requise. |
| 400 | `invalid_cursor` | Le curseur est malformé, a été émis pour d'autres filtres ou ordre, ou appartient à un autre environnement. |
| 422 | `validation_failed` | Un paramètre de requête est invalide (`limit`, `order`, `app_type`, `status`). |

## Exemple

```bash
curl "https://api.eu.keenauth.com/v1/applications?limit=20&app_type=web" \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY"
```
