Deprecation usage report
GET /v1/reports/deprecation-usage · permission reports:read
Shows which of your clients still call operations that are scheduled for removal, so you can migrate them before the sunset date (see the versioning policy). Calls are counted per UTC day and grouped by deprecation, client and SDK version. When no operation is deprecated, the report is empty.
The environment always comes from the API key; there is no environment parameter. Rows contain no IP address, User-Agent or end-user identifier.
Request
| Parameter | In | Required | Description |
|---|---|---|---|
from |
query | no | First day to include, a full date (YYYY-MM-DD, UTC). Defaults to to minus 30 days. Limited by the report history of your plan (see below). |
to |
query | no | Last day to include, a full date (YYYY-MM-DD, UTC). Defaults to today. from must not be after to. |
limit |
query | no | Page size, 1 to 100. Default 50. |
cursor |
query | no | next_cursor of the previous page. Valid only for the environment, from and to it was issued for. |
Rows are ordered by deprecation_id, client_id, sdk_package, sdk_version. Both ends of the range are inclusive. A cursor from a default range (no from/to sent) stops working when the UTC day changes; send from and to explicitly when you page.
Report history by plan
| Plan | History |
|---|---|
| Free | 30 days |
| Startup, Business | 13 months |
| Enterprise | 25 months, capped at 400 days |
The report table keeps 400 days, so no plan reaches further back than 400 days. A from older than the allowed history fails with 422 report_range_exceeds_plan; the earliest allowed date is in the message and in errors[0].detail (earliest_allowed_date=YYYY-MM-DD).
Response
200 OK. data holds the rows on the page; next_cursor is null on the last page.
| Field | Description |
|---|---|
deprecation_id |
Id in the deprecation registry (dep-YYYY-NN). |
client_id |
key_… for a management API key, app_… for a management OAuth client, dashboard for the dashboard. |
sdk_package |
SDK package from the Idp-Client header; other for a package outside the catalog, none when the header is absent. |
sdk_version |
SemVer version, or an empty string. |
call_count |
Calls in the range. |
last_seen_at |
Last call in the range (RFC 3339, UTC). |
sunset_at |
Removal date from the deprecation registry (YYYY-MM-DD), null when unknown. After this day the operation answers 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
Send Accept: text/csv to receive the same columns as CSV (RFC 4180) with a header row. Text cells that start with =, +, -, @, a tab or a carriage return are prefixed with a single quote so that spreadsheets do not run them as formulas. The cursor of the next page is in the Link header (rel="next"); the range is spelled out in that link.
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
Notes
Counts are collected per minute and written to the report asynchronously, so the newest calls can take a few minutes to appear. A crash can lose up to 60 seconds of counts. The report is not a billing input.
Errors
Every error is an application/problem+json body with a stable code.
| HTTP | code |
When |
|---|---|---|
| 400 | invalid_filter |
from or to is not a YYYY-MM-DD date, a date is repeated, or from is after to. |
| 400 | invalid_cursor |
The cursor is malformed or was not issued for this environment and range. |
| 422 | report_range_exceeds_plan |
from is older than the report history of your plan. |
| 422 | validation_failed |
limit is out of range or a parameter is repeated. |
| 401 | unauthenticated |
The API key is missing, invalid or revoked. |
| 403 | insufficient_permissions |
The key lacks reports:read. |
| 429 | rate_limited |
The rate limit was exceeded; honor Retry-After. |
| 503 | service_unavailable |
The reporting service is temporarily unavailable; retry later. |
Example
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