
# Elencare le applicazioni

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

Elenca le applicazioni dell'ambiente, in ordine cronologico inverso (`order=asc` lo inverte). La paginazione è basata su cursor: passa `list_metadata.after` come `after` per la pagina successiva e `list_metadata.before` come `before` per la pagina precedente. Un cursor è associato ai filtri e all'ordine per cui è stato emesso; usarlo con altri filtri restituisce `400 invalid_cursor`. Non viene restituito alcun conteggio totale.

## Richiesta

| Parametro | Tipo | Descrizione |
|---|---|---|
| `limit` | integer | 1-100, predefinito 20. |
| `after` / `before` | string | Cursor opachi; non entrambi. |
| `order` | string | `desc` (predefinito) o `asc`. |
| `app_type` | string | Filtro: `web`, `spa`, `native`, `m2m`, `device`, `management`. |
| `status` | string | Filtro: `active` o `suspended`. |

## Risposta

`200 OK`.

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

## Errori

| HTTP | `code` | Quando |
|---|---|---|
| 401 | `unauthenticated` | La chiave è mancante, non valida o revocata. |
| 403 | `insufficient_permissions` | La chiave non ha il permesso richiesto. |
| 400 | `invalid_cursor` | Il cursor è malformato, è stato emesso per altri filtri o ordine, o appartiene a un altro ambiente. |
| 422 | `validation_failed` | Un parametro di query non è valido (`limit`, `order`, `app_type`, `status`). |

## Esempio

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