From 6756adfa4aa5f37877af0a116e8f25158859d489 Mon Sep 17 00:00:00 2001 From: Andras Toth <4157749+tothandras@users.noreply.github.com> Date: Sun, 10 May 2026 13:58:11 +0200 Subject: [PATCH] feat(api): typed feature meter reference --- .../packages/aip/src/features/feature.tsp | 34 +- api/v3/api.gen.go | 569 +++++++++--------- api/v3/handlers/features/convert.go | 5 +- api/v3/handlers/features/convert_test.go | 5 +- api/v3/openapi.yaml | 54 +- e2e/productcatalog_smoke_v3_test.go | 5 +- 6 files changed, 327 insertions(+), 345 deletions(-) diff --git a/api/spec/packages/aip/src/features/feature.tsp b/api/spec/packages/aip/src/features/feature.tsp index eb6e3c6ea3..519603134d 100644 --- a/api/spec/packages/aip/src/features/feature.tsp +++ b/api/spec/packages/aip/src/features/feature.tsp @@ -7,6 +7,23 @@ using TypeSpec.JsonSchema; namespace Features; +@friendlyName("FeatureMeterReference") +model FeatureMeterReference { + /** + * The ID of the meter to associate with this feature. + */ + @visibility(Lifecycle.Read, Lifecycle.Create) + @summary("Meter ID") + id: Shared.ULID; + + /** + * Filters to apply to the dimensions of the meter. + */ + @maxProperties(10) + @summary("Meter dimensions filters") + filters?: Record; +} + /** * A capability or billable dimension offered by a provider. */ @@ -20,20 +37,7 @@ model Feature { */ @summary("Meter reference") @visibility(Lifecycle.Read, Lifecycle.Create) - meter?: { - /** - * The ID of the meter to associate with this feature. - */ - @visibility(Lifecycle.Read, Lifecycle.Create) - id: Shared.ULID; - - /** - * Filters to apply to the dimensions of the meter. - */ - @maxProperties(10) - @summary("Meter dimensions filters") - filters?: Record; - }; + meter?: FeatureMeterReference; /** * Optional per-unit cost configuration. @@ -41,7 +45,7 @@ model Feature { * from the LLM cost database based on meter group-by properties. */ @summary("Unit cost") - @visibility(Lifecycle.Read, Lifecycle.Create) + @visibility(Lifecycle.Read, Lifecycle.Create, Lifecycle.Update) unit_cost?: FeatureUnitCost; } diff --git a/api/v3/api.gen.go b/api/v3/api.gen.go index 9a6c405a93..311dcad841 100644 --- a/api/v3/api.gen.go +++ b/api/v3/api.gen.go @@ -3720,13 +3720,7 @@ type CreateFeatureRequest struct { // Meter The meter that the feature is associated with and and based on which usage is calculated. // If not specified, the feature is static. - Meter *struct { - // Filters Filters to apply to the dimensions of the meter. - Filters *map[string]QueryFilterStringMapItem `json:"filters,omitempty"` - - // Id The ID of the meter to associate with this feature. - Id ULID `json:"id"` - } `json:"meter,omitempty"` + Meter *FeatureMeterReference `json:"meter,omitempty"` // Name Display name of the resource. // @@ -3993,13 +3987,7 @@ type Feature struct { // Meter The meter that the feature is associated with and and based on which usage is calculated. // If not specified, the feature is static. - Meter *struct { - // Filters Filters to apply to the dimensions of the meter. - Filters *map[string]QueryFilterStringMapItem `json:"filters,omitempty"` - - // Id The ID of the meter to associate with this feature. - Id ULID `json:"id"` - } `json:"meter,omitempty"` + Meter *FeatureMeterReference `json:"meter,omitempty"` // Name Display name of the resource. // @@ -4053,6 +4041,15 @@ type FeatureCostQueryRow struct { Usage Numeric `json:"usage"` } +// FeatureMeterReference defines model for FeatureMeterReference. +type FeatureMeterReference struct { + // Filters Filters to apply to the dimensions of the meter. + Filters *map[string]QueryFilterStringMapItem `json:"filters,omitempty"` + + // Id The ID of the meter to associate with this feature. + Id ULID `json:"id"` +} + // FeaturePagePaginatedResponse Page paginated response. type FeaturePagePaginatedResponse struct { Data []Feature `json:"data"` @@ -10154,278 +10151,278 @@ var swaggerSpec = []string{ "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", - "AA==", + "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", + "r+df/38AAAD//9E+/eVP2AMA", } // GetSwagger returns the content of the embedded swagger specification file diff --git a/api/v3/handlers/features/convert.go b/api/v3/handlers/features/convert.go index 3291f469eb..3514ad3fd2 100644 --- a/api/v3/handlers/features/convert.go +++ b/api/v3/handlers/features/convert.go @@ -29,10 +29,7 @@ func convertFeatureToAPI(f feature.Feature) (api.Feature, error) { } if f.MeterID != nil { - resp.Meter = &struct { - Filters *map[string]api.QueryFilterStringMapItem `json:"filters,omitempty"` - Id api.ULID `json:"id"` - }{ + resp.Meter = &api.FeatureMeterReference{ Id: *f.MeterID, } diff --git a/api/v3/handlers/features/convert_test.go b/api/v3/handlers/features/convert_test.go index fc383608d8..19d9b2d5bc 100644 --- a/api/v3/handlers/features/convert_test.go +++ b/api/v3/handlers/features/convert_test.go @@ -306,10 +306,7 @@ func TestConvertCreateRequestToDomain(t *testing.T) { body := api.CreateFeatureRequest{ Key: "tokens", Name: "Tokens", - Meter: &struct { - Filters *map[string]api.QueryFilterStringMapItem `json:"filters,omitempty"` - Id api.ULID `json:"id"` - }{ + Meter: &api.FeatureMeterReference{ Id: api.ULID("01ARZ3NDEKTSV4RRFFQ69G5FAV"), Filters: &map[string]api.QueryFilterStringMapItem{ "model": {Eq: lo.ToPtr("gpt-4")}, diff --git a/api/v3/openapi.yaml b/api/v3/openapi.yaml index 6e8461d428..350c31bc28 100644 --- a/api/v3/openapi.yaml +++ b/api/v3/openapi.yaml @@ -6988,22 +6988,8 @@ components: key: $ref: '#/components/schemas/ResourceKey' meter: - type: object - properties: - id: - allOf: - - $ref: '#/components/schemas/ULID' - description: The ID of the meter to associate with this feature. - filters: - type: object - additionalProperties: - $ref: '#/components/schemas/QueryFilterStringMapItem' - maxProperties: 10 - description: Filters to apply to the dimensions of the meter. - title: Meter dimensions filters - required: - - id - additionalProperties: false + allOf: + - $ref: '#/components/schemas/FeatureMeterReference' description: |- The meter that the feature is associated with and and based on which usage is calculated. If not specified, the feature is static. @@ -7431,22 +7417,8 @@ components: key: $ref: '#/components/schemas/ResourceKey' meter: - type: object - properties: - id: - allOf: - - $ref: '#/components/schemas/ULID' - description: The ID of the meter to associate with this feature. - filters: - type: object - additionalProperties: - $ref: '#/components/schemas/QueryFilterStringMapItem' - maxProperties: 10 - description: Filters to apply to the dimensions of the meter. - title: Meter dimensions filters - required: - - id - additionalProperties: false + allOf: + - $ref: '#/components/schemas/FeatureMeterReference' description: |- The meter that the feature is associated with and and based on which usage is calculated. If not specified, the feature is static. @@ -7527,6 +7499,24 @@ components: `subject` and `customer_id` are reserved dimensions. additionalProperties: false description: A row in the result of a feature cost query. + FeatureMeterReference: + type: object + required: + - id + properties: + id: + allOf: + - $ref: '#/components/schemas/ULID' + description: The ID of the meter to associate with this feature. + title: Meter ID + filters: + type: object + additionalProperties: + $ref: '#/components/schemas/QueryFilterStringMapItem' + maxProperties: 10 + description: Filters to apply to the dimensions of the meter. + title: Meter dimensions filters + additionalProperties: false FeaturePagePaginatedResponse: type: object required: diff --git a/e2e/productcatalog_smoke_v3_test.go b/e2e/productcatalog_smoke_v3_test.go index 36ca9eb696..1005be178c 100644 --- a/e2e/productcatalog_smoke_v3_test.go +++ b/e2e/productcatalog_smoke_v3_test.go @@ -64,10 +64,7 @@ func TestV3ProductCatalogSmoke(t *testing.T) { status, f, problem := c.CreateFeature(apiv3.CreateFeatureRequest{ Key: featureKey, Name: "Test Feature " + featureKey, - Meter: &struct { - Filters *map[string]apiv3.QueryFilterStringMapItem `json:"filters,omitempty"` - Id apiv3.ULID `json:"id"` - }{ + Meter: &apiv3.FeatureMeterReference{ Id: meterID, }, })