Listar las claves de firma

GET /v1/signing-keys · permiso signing-keys:read

Devuelve las claves de firma de tokens publicadas actualmente en el JWKS del entorno: next (publicada, aún no firma), active (firma los tokens nuevos) y retired (dejó de firmar; sigue publicada 7 días para que los tokens que firmó sigan verificándose). El orden es next, active y luego retired (de la más reciente a la más antigua). No se devuelven las claves que salieron del JWKS ni las revocadas por una rotación de emergencia. La respuesta solo contiene información pública: kid es la huella JWK SHA-256 de RFC 7638 (base64url) y ninguna respuesta contiene material de clave privada, que nunca sale del servicio de firma.

Solicitud

Esta operación no recibe campos de ruta, consulta ni cuerpo. El entorno proviene de la credencial.

Respuesta

200 OK con data (claves) y list_metadata. La lista es tan pequeña como el JWKS y no se pagina; ambos cursores son siempre null. activated_at es null en la clave next; retired_at y removal_at (cuándo sale la clave del JWKS) solo tienen valor en las claves retired.

{
  "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
  }
}

Errores

HTTP código Cuándo
401 unauthenticated La credencial falta, es inválida o ha sido revocada.
403 insufficient_permissions La credencial carece del permiso requerido.
429 rate_limited Se superó el límite de velocidad; reintente después del período Retry-After.
501 not_implemented La operación aún no está disponible en este despliegue; reintentar no cambia el resultado.
503 service_unavailable Una dependencia no está disponible temporalmente; reintente después del período Retry-After.

Ejemplo

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