
# Lister les versions d'image de marque

`GET /v1/branding/versions` · permission `branding:read`

Liste les versions publiées de la plus récente à la plus ancienne, avec pagination par curseur (`limit`, `after`). Seule la pagination vers l'avant est prise en charge ; `before` et `order` sont rejetés avec `422`. Aucun total n'est renvoyé.

## Requête

| Champ | Type | Obligatoire | Description |
|---|---|---|---|
| `limit` | query | non | 1 à 100 éléments par page. |
| `after` | query | non | Curseur issu de `list_metadata.after`. |

## Réponse

`200 OK` avec `data[]` (métadonnées des versions) et `list_metadata`.

```json
{"data": [{"version": 4, "snapshot_sha256": "3f1c…", "source": "publish", "rolled_back_from": null,
           "actor_type": "api_key", "actor_id": "key_01jb…", "published_at": "2026-10-05T09:31:00Z"}],
 "list_metadata": {"before": null, "after": "eyJ2Ijo…"}}
```

## Erreurs

| HTTP | code | Quand |
|---|---|---|
| 400 | `invalid_cursor` | Le curseur est mal formé ou appartient à un autre environnement. |
| 422 | `validation_failed` | `limit` est hors plage, ou `before`/`order` a été fourni (`unsupported`). |
| 401 | `unauthenticated` | L'identifiant est absent, invalide ou révoqué. |
| 403 | `insufficient_permissions` | L'identifiant n'a pas la permission requise. |
| 429 | `rate_limited` | La limite de débit est dépassée ; réessayez après le délai `Retry-After`. |
| 503 | `service_unavailable` | Une dépendance est temporairement indisponible ; réessayez après le délai `Retry-After`. |

## Exemple

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