| import "@typespec/http"; |
| import "@typespec/rest"; |
| import "@typespec/openapi"; |
| import "@typespec/openapi3"; |
| import "../common/error.tsp"; |
| import "../shared/index.tsp"; |
| import "../meters/query.tsp"; |
| import "./cost.tsp"; |
| import "./feature.tsp"; |
|
|
| using TypeSpec.Http; |
| using TypeSpec.OpenAPI; |
|
|
| namespace Features; |
|
|
| |
| |
| |
| @friendlyName("ListFeatureParamsFilter") |
| model ListFeaturesParamsFilter { |
| #suppress "@openmeter/api-spec-aip/doc-decorator" "shared model" |
| meter_id?: Common.ULIDFieldFilter; |
| #suppress "@openmeter/api-spec-aip/doc-decorator" "shared model" |
| key?: Common.StringFieldFilter; |
| #suppress "@openmeter/api-spec-aip/doc-decorator" "shared model" |
| name?: Common.StringFieldFilter; |
| } |
|
|
| interface FeatureOperations { |
| |
| |
| |
| @get |
| @operationId("list-features") |
| @summary("List features") |
| @extension(Shared.UnstableExtension, true) |
| list( |
| ...Common.PagePaginationQuery, |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| @query(#{ name: "sort" }) |
| sort?: Common.SortQuery, |
|
|
| |
| |
| |
| |
| |
| |
| @query(#{ style: "deepObject", explode: true }) |
| filter?: ListFeaturesParamsFilter, |
| ): Shared.PagePaginatedResponse<Feature> | Common.ErrorResponses; |
|
|
| |
| |
| |
| @post |
| @operationId("create-feature") |
| @summary("Create feature") |
| @extension(Shared.UnstableExtension, true) |
| create( |
| @body |
| feature: Shared.CreateRequest<Feature>, |
| ): Shared.CreateResponse<Feature> | Common.ErrorResponses; |
|
|
| |
| |
| |
| @get |
| @route("/{featureId}") |
| @operationId("get-feature") |
| @summary("Get feature") |
| @extension(Shared.UnstableExtension, true) |
| get(@path featureId: Shared.ULID): |
| | Shared.GetResponse<Feature> |
| | Common.ErrorResponses |
| | Common.Gone |
| | Common.NotFound; |
|
|
| |
| |
| |
| @patch |
| @route("/{featureId}") |
| @operationId("update-feature") |
| @summary("Update feature") |
| @extension(Shared.UnstableExtension, true) |
| update(@path featureId: Shared.ULID, @body feature: FeatureUpdateRequest): |
| | Shared.UpdateResponse<Feature> |
| | Common.ErrorResponses |
| | Common.NotFound; |
|
|
| |
| |
| |
| @delete |
| @route("/{featureId}") |
| @operationId("delete-feature") |
| @summary("Delete feature") |
| @extension(Shared.UnstableExtension, true) |
| delete(@path featureId: Shared.ULID): |
| | Shared.DeleteResponse |
| | Common.ErrorResponses |
| | Common.NotFound; |
| } |
|
|
| interface FeatureCostOperations { |
| |
| |
| |
| @extension(Shared.UnstableExtension, true) |
| @post |
| @route("/query") |
| @operationId("query-feature-cost") |
| @summary("Query feature cost") |
| queryCost( |
| @path featureId: Shared.ULID, |
| @body request?: Meters.MeterQueryRequest, |
| ): FeatureCostQueryResult | Common.NotFound | Common.ErrorResponses; |
| } |
|
|