Listar los consentimientos de un usuario
GET /v1/users/{user_id}/consents · permiso users:read
Lista los consentimientos OAuth que el usuario ha otorgado a las aplicaciones, del más reciente al más antiguo. Solo se devuelven los consentimientos activos: un consentimiento revocado, o reemplazado por un consentimiento más reciente de la misma aplicación, no aparece en la lista. La lista solo pagina hacia adelante y no devuelve un recuento total. La respuesta no incluye el texto de la pantalla de consentimiento que vio el usuario.
Solicitud
| Parámetro | En | Obligatorio | Descripción |
|---|---|---|---|
user_id |
path | sí | ID del usuario, con el prefijo usr_. |
limit |
query | no | Elementos por página, de 1 a 100 (predeterminado 20). |
after |
query | no | Cursor de list_metadata.after de la página anterior del mismo usuario. |
before y order=asc no se admiten y devuelven 422.
Respuesta
200 OK. Los campos vacíos son null.
{
"data": [
{
"id": "cns_01jb2k8m5c3f6t9w2y4b7d0g3k",
"user_id": "usr_0a1b2c3d4e5f6g7h8j9k0m1n2p",
"application_id": "app_0a1b2c3d4e5f6g7h8j9k0m1n2p",
"api_id": "api_0a1b2c3d4e5f6g7h8j9k0m1n2p",
"org_id": null,
"scopes": ["openid", "profile", "orders:read"],
"authorization_details_types": [],
"granted_at": "2026-10-20T09:00:00Z",
"consent_screen_version": "3",
"locale": "en",
"prompt_reason": "scope_expansion"
}
],
"list_metadata": {"before": null, "after": null}
}
| Campo | Descripción |
|---|---|
id |
ID del consentimiento, con el prefijo cns_. |
application_id |
La aplicación a la que se otorgó el consentimiento. |
api_id |
La API a la que está vinculado el consentimiento, si la hay. |
org_id |
El contexto de la organización en el que se otorgó el consentimiento, si lo hay. |
scopes |
Los ámbitos concedidos, ordenados y sin repetición. |
authorization_details_types |
Tipos de solicitud de autorización enriquecida concedidos; vacío si no hay ninguno. |
consent_screen_version, locale |
La versión y el idioma de la pantalla de consentimiento que aceptó el usuario. |
prompt_reason |
Motivo por el que se solicitó el consentimiento: first, scope_expansion, prompt_consent o skip_consent (aplicación de primera parte sin pantalla de consentimiento). |
Errores
Cada error es un cuerpo application/problem+json con un code estable.
| HTTP | code |
Cuándo |
|---|---|---|
| 400 | invalid_cursor |
El cursor está mal formado o pertenece a otra lista. |
| 422 | validation_failed |
limit está fuera de rango, o se envió before o un order ascendente. |
| 404 | not_found |
El usuario no existe en este entorno (o el ID está mal formado). |
| 401 | unauthenticated |
La clave de API falta, no es válida o fue revocada. |
| 403 | insufficient_permissions |
La clave no tiene el permiso users:read. |
| 429 | rate_limited |
Se superó el límite de frecuencia; respete Retry-After. |
| 503 | service_unavailable |
Una dependencia no está disponible temporalmente; vuelva a intentarlo más tarde. |
Ejemplo
curl "https://api.eu.keenauth.com/v1/users/usr_0a1b2c3d4e5f6g7h8j9k0m1n2p/consents?limit=50" \
-H "Authorization: Bearer $KEENAUTH_SECRET_KEY"
CLI: keenauth users consents list usr_0a1b2c3d4e5f6g7h8j9k0m1n2p --limit 50
Datos personales
Este endpoint contiene datos personales: registros de consentimiento. Datos personales en las API de KeenAuth describe qué se almacena, durante cuánto tiempo se conserva y cómo se elimina. No envíe categorías especiales de datos personales (salud, datos biométricos, religión, opiniones políticas, orientación sexual) en ningún campo.