import "../shared/index.tsp"; import "../meters/index.tsp"; import "./unitcost.tsp"; import "@typespec/json-schema"; using TypeSpec.JsonSchema; namespace Features; /** * Reference to a meter associated with a feature. */ @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. */ @friendlyName("Feature") model Feature { ...Shared.ResourceWithKey; /** * The meter that the feature is associated with and based on which usage is * calculated. If not specified, the feature is static. */ @summary("Meter reference") @visibility(Lifecycle.Read, Lifecycle.Create) meter?: FeatureMeterReference; /** * Optional per-unit cost configuration. Use "manual" for a fixed per-unit cost, or * "llm" to look up cost from the LLM cost database based on meter group-by * properties. */ @summary("Unit cost") @visibility(Lifecycle.Read, Lifecycle.Create, Lifecycle.Update) unit_cost?: FeatureUnitCost; } /** * Request body for updating a feature. Currently only the unit_cost field can be * updated. */ @friendlyName("UpdateFeatureRequest") model FeatureUpdateRequest { /** * Optional per-unit cost configuration. Use "manual" for a fixed per-unit cost, or * "llm" to look up cost from the LLM cost database based on meter group-by * properties. Set to `null` to clear the existing unit cost; omit to leave it * unchanged. */ @summary("Unit cost") unit_cost?: FeatureUnitCost | null; }