
# Lister les rôles personnalisés d'une organisation

`GET /v1/organizations/{org_id}/roles` · autorisation `roles:read`

Liste les rôles personnalisés de l'organisation, du plus ancien au plus récent. Seule la pagination vers l'avant est prise en charge : `before` et un `order` autre que `asc` renvoient `422`. Le curseur est lié à cette liste. Les rôles d'organisation ne sont visibles que dans leur organisation et ne font pas partie de la liste de l'environnement. L'ensemble d'autorisations du rôle n'est pas renvoyé dans cette version.

## Requête

| Champ | Type | Obligatoire | Description |
|---|---|---|---|
| `org_id` | path | oui | Identifiant de l'organisation (`org_…`). |
| `limit` | query | non | 1 à 100, par défaut 20. |
| `after` | query | non | Curseur issu de `list_metadata.after`. |

Aucun corps de requête.

## Réponse

`200 OK` avec une page de rôles.

```json
{
  "data": [
    {
      "id": "rol_01j9xr7s1t2w6x8y0z2a4b6c8e",
      "organization_id": "org_01j9xk3m7q8r2s4t6v8w0y2z4a",
      "key": "billing-admin",
      "name": "Billing admin",
      "description": "",
      "is_privileged": false,
      "assignable_in_self_service": true,
      "permission_ids": [],
      "created_at": "2026-10-12T09:31:00.123456Z",
      "updated_at": "2026-10-12T09:31:00.123456Z",
      "version": 1
    }
  ],
  "list_metadata": {
    "before": null,
    "after": null
  }
}
```

## Erreurs

| HTTP | code | Quand |
|---|---|---|
| 400 | `invalid_cursor` | Le curseur est invalide ou appartient à une autre liste. |
| 404 | `not_found` | L'organisation n'existe pas dans cet environnement. |
| 422 | `validation_failed` | `limit` est hors plage, ou `before` ou un `order` autre que `asc` a été fourni. |
| 401 | `unauthenticated` | Le justificatif est absent, invalide ou révoqué. |
| 403 | `insufficient_permissions` | Le justificatif ne dispose pas de l'autorisation requise. |
| 429 | `rate_limited` | La limite de débit a été dépassée ; réessayez après la durée indiquée par `Retry-After`. |
| 503 | `service_unavailable` | Une dépendance est temporairement indisponible ; réessayez après la durée indiquée par `Retry-After`. |

## Exemple

```bash
curl -i "https://api.eu.keenauth.com/v1/organizations/org_01j9xk3m7q8r2s4t6v8w0y2z4a/roles?limit=20" \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY"
```
