analytics.getVerifications from five tables. key_verifications_v1 has one row per verification. The four rollups have one row per time bucket with counts already summed. Use a rollup for charts and totals, and the raw table when you need individual requests, latency, or a column the rollups don’t have.
key_verifications_v1
One row per call tokeys.verifyKey.
When the verification happened, in milliseconds since the Unix epoch. Convert with
fromUnixTimestamp64Milli(time) to bucket or format it.The keyspace the key belongs to. This is the keyspace’s
ks_ ID, not the api_ ID you pass to endpoints.The verification result:
VALID, NOT_FOUND, DISABLED, EXPIRED, FORBIDDEN, INSUFFICIENT_PERMISSIONS, RATE_LIMITED, or USAGE_EXCEEDED, which are the values keys.verifyKey returns in data.code, plus WORKSPACE_DISABLED and WORKSPACE_NOT_FOUND, which the Compute gateway records when the workspace itself can’t be used.What performed the verification:
api for calls to keys.verifyKey, or gateway when a Compute key-auth policy verified the key.The Compute app whose gateway verified the key, or empty for API calls.
Rollup tables
key_verifications_per_minute_v1, key_verifications_per_hour_v1, key_verifications_per_day_v1, and key_verifications_per_month_v1 have the same columns. Each row sums one time bucket, so sum(count) equals the raw table’s row count for the same filter. The rollups don’t have request_id, region, or latency.
Start of the bucket.
DateTime on per-minute and per-hour, Date on per-day and per-month. Compare directly with now() or today().Can’t be read, because
avgMerge isn’t allowed. Compute latency from the raw table instead.Which table to use
- Raw table: individual requests and latency.
- Per-minute: the last few hours in fine detail.
- Per-hour: charts over a day to a week.
- Per-day and per-month: billing totals.