Skip to main content

cmind/metering/v1/usage_service.proto

Package: cmind.metering.v1

Messages

GetTokenUsageRequest

FieldTypeNumberDescription
tenantIdsrepeated string1Tenants to include in the aggregate. Empty means all tenants.
startgoogle.protobuf.Timestamp2
endgoogle.protobuf.Timestamp3
stepstring4step is the bucket width as a short code (e.g. "5m", "1h", "1d"). The server maps it from a closed set to a ClickHouse interval; unknown codes are rejected.

TokenUsagePoint

TokenUsagePoint is one time bucket's token totals across the selected tenants.

FieldTypeNumberDescription
bucketgoogle.protobuf.Timestamp1
inputTokensuint642
outputTokensuint643
embeddingTokensuint644
rerankTokensuint645

GetTokenUsageResponse

FieldTypeNumberDescription
pointsrepeated TokenUsagePoint1

GetModelTokenUsageRequest

FieldTypeNumberDescription
tenantIdsrepeated string1Tenants to include in the aggregate. Empty means all tenants.
startgoogle.protobuf.Timestamp2
endgoogle.protobuf.Timestamp3
limituint324Cap on the number of models returned (highest total first). 0 = no cap.

ModelTokenUsage

ModelTokenUsage is one model's token totals over the range.

FieldTypeNumberDescription
modelstring1The metered model identifier (the usage target).
inputTokensuint642
outputTokensuint643
embeddingTokensuint644
rerankTokensuint645

GetModelTokenUsageResponse

FieldTypeNumberDescription
modelsrepeated ModelTokenUsage1

GetRequestVolumeRequest

FieldTypeNumberDescription
tenantIdsrepeated string1Tenants to include in the aggregate. Empty means all tenants.
startgoogle.protobuf.Timestamp2
endgoogle.protobuf.Timestamp3
stepstring4

RequestVolumePoint

RequestVolumePoint is one time bucket's metered-request count.

FieldTypeNumberDescription
bucketgoogle.protobuf.Timestamp1
requestsuint642

GetRequestVolumeResponse

FieldTypeNumberDescription
pointsrepeated RequestVolumePoint1

GetApiKeyTokenUsageRequest

FieldTypeNumberDescription
tenantIdstring1
apiKeyIdstring2
startgoogle.protobuf.Timestamp3
endgoogle.protobuf.Timestamp4
stepstring5step is the bucket width as a short code (e.g. "5m", "1h", "1d").

GetApiKeyTokenUsageResponse

FieldTypeNumberDescription
pointsrepeated TokenUsagePoint1

ExportApiKeyTokenUsageRequest

FieldTypeNumberDescription
tenantIdstring1
startgoogle.protobuf.Timestamp2
endgoogle.protobuf.Timestamp3

ExportApiKeyTokenUsageResponse

FieldTypeNumberDescription
filenamestring1
csvbytes2

GetApiTrafficRequest

FieldTypeNumberDescription
startgoogle.protobuf.Timestamp1
endgoogle.protobuf.Timestamp2
stepstring3
servicestring4Restrict to one service (the access log's service name). Empty = all.

ApiTrafficPoint

ApiTrafficPoint is one time bucket of access-log traffic: total requests, client/server error counts and latency percentiles (milliseconds).

FieldTypeNumberDescription
bucketgoogle.protobuf.Timestamp1
totaluint642
clientErrorsuint643
serverErrorsuint644
p50Msdouble5
p90Msdouble6
p99Msdouble7

GetApiTrafficResponse

FieldTypeNumberDescription
pointsrepeated ApiTrafficPoint1
servicesrepeated string2Distinct service names seen in the window (unfiltered), for the picker.

GetPerTenantTokenUsageRequest

FieldTypeNumberDescription
tenantIdsrepeated string1Tenants to include. Empty means all tenants.
startgoogle.protobuf.Timestamp2
endgoogle.protobuf.Timestamp3

TenantTokenUsage

TenantTokenUsage is one tenant's token totals over the range.

FieldTypeNumberDescription
tenantIdstring1
inputTokensuint642
outputTokensuint643
embeddingTokensuint644
rerankTokensuint645

GetPerTenantTokenUsageResponse

FieldTypeNumberDescription
tenantsrepeated TenantTokenUsage1

Services

UsageService

UsageService is the read side of the metered usage data. The write side is cmind.cluster.metering.v1.InternalUsageService (cluster-internal ingest); this service serves platform-admin analytics over what was ingested.

GetTokenUsage

GET /cmind.metering.v1.UsageService/GetTokenUsage

GetTokenUsage returns token usage bucketed over a time range, summed across the selected tenants (all tenants when tenant_ids is empty). Platform operation.

Request: GetTokenUsageRequest

Response: GetTokenUsageResponse

GetModelTokenUsage

GET /cmind.metering.v1.UsageService/GetModelTokenUsage

GetModelTokenUsage returns per-model token totals over a time range, summed across the selected tenants (all tenants when tenant_ids is empty) and ordered by total tokens descending. Platform operation.

Request: GetModelTokenUsageRequest

Response: GetModelTokenUsageResponse

GetRequestVolume

GET /cmind.metering.v1.UsageService/GetRequestVolume

GetRequestVolume returns the count of metered inference requests bucketed over a time range (distinct trace ids in the usage data), summed across the selected tenants (all tenants when tenant_ids is empty). Platform operation.

Request: GetRequestVolumeRequest

Response: GetRequestVolumeResponse

GetApiKeyTokenUsage

GET /cmind.metering.v1.UsageService/GetApiKeyTokenUsage

GetApiKeyTokenUsage returns token usage bucketed over a time range for one API key. Authorization follows the key so its owner can inspect usage.

Request: GetApiKeyTokenUsageRequest

Response: GetApiKeyTokenUsageResponse

ExportApiKeyTokenUsage

GET /cmind.metering.v1.UsageService/ExportApiKeyTokenUsage

ExportApiKeyTokenUsage returns a backend-generated CSV containing one aggregate row per API key for a tenant and time range.

Request: ExportApiKeyTokenUsageRequest

Response: ExportApiKeyTokenUsageResponse

GetApiTraffic

GET /cmind.metering.v1.UsageService/GetApiTraffic

GetApiTraffic returns API request volume, error counts and latency percentiles bucketed over a time range, from the gateway/service access logs across the whole platform (no tenant dimension). Platform operation.

Request: GetApiTrafficRequest

Response: GetApiTrafficResponse

GetPerTenantTokenUsage

GET /cmind.metering.v1.UsageService/GetPerTenantTokenUsage

GetPerTenantTokenUsage returns per-tenant token totals over a time range (no bucketing — flat totals, one row per tenant). Tenants to include are selected by tenant_ids (empty means all tenants). Platform operation.

Request: GetPerTenantTokenUsageRequest

Response: GetPerTenantTokenUsageResponse