Informe de uso de obsolescencias
GET /v1/reports/deprecation-usage · permiso reports:read
Muestra qué clientes siguen llamando a operaciones programadas para su eliminación, para que puedas migrarlos antes de la fecha de eliminación (consulta la política de versionado). Las llamadas se cuentan por día UTC y se agrupan por obsolescencia, cliente y versión del SDK. Cuando ninguna operación está obsoleta, el informe está vacío.
El entorno siempre procede de la clave de API; no hay ningún parámetro de entorno. Las filas no contienen dirección IP, User-Agent ni identificadores de usuario final.
Solicitud
| Parámetro | En | Obligatorio | Descripción |
|---|---|---|---|
from |
query | no | Primer día incluido, fecha completa (YYYY-MM-DD, UTC). Predeterminado: to menos 30 días. Limitado por el historial de informes de tu plan (ver abajo). |
to |
query | no | Último día incluido, fecha completa (YYYY-MM-DD, UTC). Predeterminado: hoy. from no puede ser posterior a to. |
limit |
query | no | Tamaño de página, de 1 a 100. Predeterminado 50. |
cursor |
query | no | next_cursor de la página anterior. Solo es válido para el entorno, from y to para los que se emitió. |
Las filas se ordenan por deprecation_id, client_id, sdk_package, sdk_version. Ambos extremos del rango son inclusivos. Un cursor obtenido con un rango predeterminado (sin enviar from/to) deja de funcionar cuando cambia el día UTC; envía from y to explícitamente al paginar.
Historial de informes por plan
| Plan | Historial |
|---|---|
| Free | 30 días |
| Startup, Business | 13 meses |
| Enterprise | 25 meses, con un límite de 400 días |
La tabla de informes conserva 400 días, así que ningún plan llega más atrás de 400 días. Un from más antiguo que el historial permitido falla con 422 report_range_exceeds_plan; la fecha más antigua permitida aparece en el mensaje y en errors[0].detail (earliest_allowed_date=YYYY-MM-DD).
Respuesta
200 OK. data contiene las filas de la página; next_cursor es null en la última página.
| Campo | Descripción |
|---|---|
deprecation_id |
Identificador en el registro de obsolescencias (dep-YYYY-NN). |
client_id |
key_… para una clave de API de gestión, app_… para un cliente OAuth de gestión, dashboard para el panel. |
sdk_package |
Paquete del SDK tomado de la cabecera Idp-Client; other para un paquete fuera del catálogo, none cuando falta la cabecera. |
sdk_version |
Versión SemVer, o una cadena vacía. |
call_count |
Llamadas en el rango. |
last_seen_at |
Última llamada en el rango (RFC 3339, UTC). |
sunset_at |
Fecha de eliminación del registro de obsolescencias (YYYY-MM-DD), null si se desconoce. Después de este día, la operación responde 410 endpoint_sunset. |
{
"data": [
{
"deprecation_id": "dep-2027-01",
"client_id": "key_01j9xk3m7q8r2s4t6v8w0y2z4d",
"sdk_package": "keenauth-go",
"sdk_version": "1.4.0",
"call_count": 1280,
"last_seen_at": "2027-03-02T09:30:00Z",
"sunset_at": "2028-01-17"
}
],
"next_cursor": null
}
CSV
Envía Accept: text/csv para recibir las mismas columnas en CSV (RFC 4180) con una fila de encabezado. Las celdas de texto que empiezan por =, +, -, @, un tabulador o un retorno de carro llevan un apóstrofo delante para que las hojas de cálculo no las ejecuten como fórmulas. El cursor de la página siguiente está en la cabecera Link (rel="next"); el rango se detalla en ese enlace.
deprecation_id,client_id,sdk_package,sdk_version,call_count,last_seen_at,sunset_at
dep-2027-01,key_01j9xk3m7q8r2s4t6v8w0y2z4d,keenauth-go,1.4.0,1280,2027-03-02T09:30:00Z,2028-01-17
Notas
Los recuentos se recogen por minuto y se escriben en el informe de forma asíncrona, por lo que las llamadas más recientes pueden tardar unos minutos en aparecer. Un fallo puede perder hasta 60 segundos de recuentos. El informe no es una entrada de facturación.
Errores
Cada error es un cuerpo application/problem+json con un code estable.
| HTTP | code |
Cuándo |
|---|---|---|
| 400 | invalid_filter |
from o to no es una fecha YYYY-MM-DD, una fecha está repetida o from es posterior a to. |
| 400 | invalid_cursor |
El cursor está mal formado o no se emitió para este entorno y rango. |
| 422 | report_range_exceeds_plan |
from es más antiguo que el historial de informes de tu plan. |
| 422 | validation_failed |
limit está fuera de rango o un parámetro está repetido. |
| 401 | unauthenticated |
La clave de API falta, no es válida o está revocada. |
| 403 | insufficient_permissions |
La clave no tiene reports:read. |
| 429 | rate_limited |
Se superó el límite de peticiones; respeta Retry-After. |
| 503 | service_unavailable |
El servicio de informes no está disponible temporalmente; vuelve a intentarlo más tarde. |
Ejemplo
curl "https://api.eu.keenauth.com/v1/reports/deprecation-usage?from=2027-03-01&to=2027-03-31" \
-H "Authorization: Bearer $KEENAUTH_SECRET_KEY"
keenauth reports deprecation-usage --from 2027-03-01 --to 2027-03-31
keenauth reports deprecation-usage --format csv > deprecation-usage.csv