Skip to main content

cmind/metering/v1/platform_usage_service.proto

Package: cmind.metering.v1

Messages

GetPlatformTokenUsageSeriesRequest

FieldTypeNumberDescription
windowTimeWindow1
stepgoogle.protobuf.Duration2The bucket width the caller is asking for. The server picks the width it actually returns and may coarsen this one, so read each point's window rather than assuming the request was honoured.
tenantIdsrepeated string3Selects which tenants are counted. Empty means every tenant. Independent of group_by: filtering to three tenants and grouping by NONE sums those three.
groupByTokenUsageGroupBy4Grouping by API key is rejected here: keys belong to a tenant.
modelIdsrepeated string5Empty means every model.
userIdsrepeated string6Empty means every user.

GetPlatformTokenUsageSeriesResponse

FieldTypeNumberDescription
seriesrepeated TokenUsageSeries1

GetPlatformCallCountSeriesRequest

FieldTypeNumberDescription
windowTimeWindow1
stepgoogle.protobuf.Duration2
tenantIdsrepeated string3Empty means every tenant.
kindCallKind4One kind per query: counts of different kinds do not sum, so a total over several would be a number that means nothing.
groupByCallGroupBy5Grouping by API key is rejected here: keys belong to a tenant.
resourceIdsrepeated string6Empty means every resource.
userIdsrepeated string7Empty means every user.

GetPlatformCallCountSeriesResponse

FieldTypeNumberDescription
seriesrepeated CallCountSeries1

ListPlatformTokenUsageRequest

FieldTypeNumberDescription
windowTimeWindow1
groupByTokenUsageGroupBy2Grouping by API key is rejected here: keys belong to a tenant.
limituint323Cap on the rows returned, highest total first. 0 = no cap.
tenantIdsrepeated string4Empty means every tenant.
modelIdsrepeated string5Empty means every model.
userIdsrepeated string6Empty means every user.

ListPlatformTokenUsageResponse

FieldTypeNumberDescription
windowTimeWindow1Echoed because a row carries no time of its own.
groupsrepeated TokenUsageGroup2

GetPlatformApiTrafficSeriesRequest

FieldTypeNumberDescription
windowTimeWindow1
stepgoogle.protobuf.Duration2
servicestring3Restrict to one service by name, as listed on the response. Empty = all.

GetPlatformApiTrafficSeriesResponse

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

Services

PlatformUsageService

PlatformUsageService reads metered usage for a platform operator: across every tenant by default, or narrowed to some of them. The write side is cmind.cluster.metering.v1.InternalUsageService. Every method is gated on can_manage_tenants, whatever the filter says. That is why the platform and tenant views are separate services rather than one service with a tenant parameter: the same question asked by an operator and by a tenant's own admin needs a different answer to "who may ask", and one service per audience keeps each gate static instead of derived from the shape of the request.

GetPlatformTokenUsageSeries

GET /cmind.metering.v1.PlatformUsageService/GetPlatformTokenUsageSeries

GetPlatformTokenUsageSeries returns token totals per time bucket, as one series per tenant, per model, or one summed series.

Request: GetPlatformTokenUsageSeriesRequest

Response: GetPlatformTokenUsageSeriesResponse

GetPlatformCallCountSeries

GET /cmind.metering.v1.PlatformUsageService/GetPlatformCallCountSeries

GetPlatformCallCountSeries returns the number of distinct metered calls per time bucket, grouped as on GetPlatformTokenUsageSeries.

Request: GetPlatformCallCountSeriesRequest

Response: GetPlatformCallCountSeriesResponse

ListPlatformTokenUsage

GET /cmind.metering.v1.PlatformUsageService/ListPlatformTokenUsage

ListPlatformTokenUsage returns token totals for the window, grouped by tenant, by model, or not at all.

Request: ListPlatformTokenUsageRequest

Response: ListPlatformTokenUsageResponse

GetPlatformApiTrafficSeries

GET /cmind.metering.v1.PlatformUsageService/GetPlatformApiTrafficSeries

GetPlatformApiTrafficSeries returns HTTP traffic per time bucket. It counts every request the platform served, including ones that never reached a model, and has no tenant dimension.

Request: GetPlatformApiTrafficSeriesRequest

Response: GetPlatformApiTrafficSeriesResponse