
# Lister les clés de signature

`GET /v1/signing-keys` · permission `signing-keys:read`

Renvoie les clés de signature de jetons actuellement publiées dans le JWKS de l'environnement : `next` (publiée, ne signe pas encore), `active` (signe les nouveaux jetons) et `retired` (ne signe plus ; reste publiée 7 jours pour que les jetons qu'elle a signés restent vérifiables). L'ordre est `next`, `active`, puis `retired` (de la plus récente à la plus ancienne). Les clés sorties du JWKS et les clés révoquées par une rotation d'urgence ne sont pas renvoyées. La réponse ne contient que des informations publiques : `kid` est l'empreinte JWK SHA-256 RFC 7638 (base64url) et aucune réponse ne contient de clé privée, qui ne quitte jamais le service de signature.

## Requête

Cette opération ne prend aucun paramètre de chemin, de requête ni de corps. L'environnement provient de l'authentification.

## Réponse

`200 OK` avec `data` (clés) et `list_metadata`. La liste est aussi petite que le JWKS et n'est pas paginée : les deux curseurs valent toujours `null`. `activated_at` vaut `null` pour la clé `next` ; `retired_at` et `removal_at` (moment où la clé quitte le JWKS) ne sont renseignés que pour les clés `retired`.

```json
{
  "data": [
    {
      "kid": "ypeBEsobvcr6wjGzmiPcTaeG7_gUfE5yuYB3ha_uSLs",
      "use": "token_signing",
      "algorithm": "RS256",
      "state": "next",
      "storage": "wrapped",
      "created_at": "2026-09-05T09:30:00.123456Z",
      "activated_at": null,
      "retired_at": null,
      "removal_at": null
    },
    {
      "kid": "PiPoFgA5WUoziU9lZOGxNIu9egCI1CxKy3PurtWcAJ0",
      "use": "token_signing",
      "algorithm": "RS256",
      "state": "active",
      "storage": "wrapped",
      "created_at": "2026-03-09T09:30:00.123456Z",
      "activated_at": "2026-09-05T09:30:00.123456Z",
      "retired_at": null,
      "removal_at": null
    },
    {
      "kid": "Ln0sA6lQeuJl7PW1NWiFpTOTogKdJBOUmXJloaJa78Y",
      "use": "token_signing",
      "algorithm": "RS256",
      "state": "retired",
      "storage": "wrapped",
      "created_at": "2025-09-10T09:30:00.123456Z",
      "activated_at": "2026-03-09T09:30:00.123456Z",
      "retired_at": "2026-09-05T09:30:00.123456Z",
      "removal_at": "2026-09-12T09:30:00.123456Z"
    }
  ],
  "list_metadata": {
    "before": null,
    "after": null
  }
}
```

## Erreurs

| HTTP | code | Quand |
|---|---|---|
| 401 | `unauthenticated` | L'authentification est manquante, invalide ou révoquée. |
| 403 | `insufficient_permissions` | L'authentification manque la permission requise. |
| 429 | `rate_limited` | La limite de débit a été dépassée ; réessayez après la période `Retry-After`. |
| 501 | `not_implemented` | L'opération n'est pas encore disponible dans ce déploiement ; réessayer ne change pas le résultat. |
| 503 | `service_unavailable` | Une dépendance est temporairement indisponible ; réessayez après la période `Retry-After`. |

## Exemple

```bash
curl https://api.eu.keenauth.com/v1/signing-keys \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY"
```
