diff --git a/api/spec/packages/aip/src/currencies/cost-bases/cost-basis.tsp b/api/spec/packages/aip/src/currencies/cost-bases/cost-basis.tsp index ce4d1fe36e..aa223c573b 100644 --- a/api/spec/packages/aip/src/currencies/cost-bases/cost-basis.tsp +++ b/api/spec/packages/aip/src/currencies/cost-bases/cost-basis.tsp @@ -34,5 +34,5 @@ model CostBasis { * An ISO-8601 timestamp representation of entity creation date. */ @visibility(Lifecycle.Read) - created_at?: Shared.DateTime; + created_at: Shared.DateTime; } diff --git a/api/spec/packages/aip/src/currencies/currency.tsp b/api/spec/packages/aip/src/currencies/currency.tsp index 9c02317a44..e2ee431e65 100644 --- a/api/spec/packages/aip/src/currencies/currency.tsp +++ b/api/spec/packages/aip/src/currencies/currency.tsp @@ -114,5 +114,5 @@ model CurrencyCustom { * An ISO-8601 timestamp representation of the custom currency creation date. */ @visibility(Lifecycle.Read) - created_at?: Shared.DateTime; + created_at: Shared.DateTime; } diff --git a/api/spec/packages/aip/src/customers/charges/operations.tsp b/api/spec/packages/aip/src/customers/charges/operations.tsp index 76b3eefd5b..740c3dc022 100644 --- a/api/spec/packages/aip/src/customers/charges/operations.tsp +++ b/api/spec/packages/aip/src/customers/charges/operations.tsp @@ -68,7 +68,10 @@ interface CustomerChargesOperations { filter?: ListCustomerChargesParamsFilter, /** - * Expands + * Expand full objects for referenced entities. + * + * Supported values are: + * - `real_time_usage`: Expand the charge's real-time usage. */ @query(#{ name: "expand", explode: true }) expand?: ChargesExpand[], diff --git a/api/spec/packages/aip/src/customers/credits/operations.tsp b/api/spec/packages/aip/src/customers/credits/operations.tsp index a7b2d12d78..f09ef8b3bd 100644 --- a/api/spec/packages/aip/src/customers/credits/operations.tsp +++ b/api/spec/packages/aip/src/customers/credits/operations.tsp @@ -20,15 +20,10 @@ namespace Customers; */ @friendlyName("ListCreditGrantsParamsFilter") model ListCreditGrantsParamsFilter { - /** - * Filter credit grants by status. - */ - status?: CreditGrantStatus; - - /** - * Filter credit grants by currency. - */ - currency?: Shared.CurrencyCode; + #suppress "@openmeter/api-spec-aip/doc-decorator" "shared model" + status?: Common.StringFieldFilterExact; + #suppress "@openmeter/api-spec-aip/doc-decorator" "shared model" + currency?: Common.StringFieldFilterExact; } interface CustomerCreditGrantsOperations { @@ -141,11 +136,6 @@ model GetCreditBalanceParamsFilter { * Filter credit balance by currency. */ currency?: Currencies.CurrencyCode; - - /** - * Filter by specific feature. - */ - feature?: Shared.ResourceKey; } interface CustomerCreditBalancesOperations { @@ -171,15 +161,10 @@ interface CustomerCreditBalancesOperations { */ @friendlyName("ListCreditTransactionsParamsFilter") model ListCreditTransactionsParamsFilter { - /** - * Filter credit transactions by type. - */ - type?: CreditTransactionType; - - /** - * Filter credit transactions by currency. - */ - currency?: Currencies.CurrencyCode; + #suppress "@openmeter/api-spec-aip/doc-decorator" "shared model" + type?: Common.StringFieldFilterExact; + #suppress "@openmeter/api-spec-aip/doc-decorator" "shared model" + currency?: Common.StringFieldFilterExact; // TODO: add date filters for created_at and booked_at } diff --git a/api/spec/packages/aip/src/llmcost/prices.tsp b/api/spec/packages/aip/src/llmcost/prices.tsp index c47f7359e2..80eb376d2b 100644 --- a/api/spec/packages/aip/src/llmcost/prices.tsp +++ b/api/spec/packages/aip/src/llmcost/prices.tsp @@ -77,11 +77,11 @@ model Price { /** Creation timestamp. */ @visibility(Lifecycle.Read) - created_at?: Shared.DateTime; + created_at: Shared.DateTime; /** Last update timestamp. */ @visibility(Lifecycle.Read) - updated_at?: Shared.DateTime; + updated_at: Shared.DateTime; } /** diff --git a/api/spec/packages/aip/src/shared/resource.tsp b/api/spec/packages/aip/src/shared/resource.tsp index efee8f3e93..bad5d3b8a4 100644 --- a/api/spec/packages/aip/src/shared/resource.tsp +++ b/api/spec/packages/aip/src/shared/resource.tsp @@ -39,13 +39,13 @@ model Resource { * An ISO-8601 timestamp representation of entity creation date. */ @visibility(Lifecycle.Read) - created_at?: DateTime; + created_at: DateTime; /** * An ISO-8601 timestamp representation of entity last update date. */ @visibility(Lifecycle.Read) - updated_at?: DateTime; + updated_at: DateTime; /** * An ISO-8601 timestamp representation of entity deletion date. diff --git a/api/v3/api.gen.go b/api/v3/api.gen.go index 00709463a1..70f1982a70 100644 --- a/api/v3/api.gen.go +++ b/api/v3/api.gen.go @@ -1157,7 +1157,7 @@ func (e ResourceManagedBy) Valid() bool { // Addon Add-on allows extending subscriptions with compatible plans with additional ratecards. type Addon struct { // CreatedAt An ISO-8601 timestamp representation of entity creation date. - CreatedAt *DateTime `json:"created_at,omitempty"` + CreatedAt DateTime `json:"created_at"` // Currency The currency code of the add-on. Currency BillingCurrencyCode `json:"currency"` @@ -1205,7 +1205,7 @@ type Addon struct { Status AddonStatus `json:"status"` // UpdatedAt An ISO-8601 timestamp representation of entity last update date. - UpdatedAt *DateTime `json:"updated_at,omitempty"` + UpdatedAt DateTime `json:"updated_at"` // ValidationErrors List of validation errors. ValidationErrors *[]ProductCatalogValidationError `json:"validation_errors,omitempty"` @@ -1416,7 +1416,7 @@ type BillingAppCustomerDataStripe struct { // external system confirms synchronization via API callbacks. type BillingAppExternalInvoicing struct { // CreatedAt An ISO-8601 timestamp representation of entity creation date. - CreatedAt *DateTime `json:"created_at,omitempty"` + CreatedAt DateTime `json:"created_at"` // Definition The app catalog definition that this installed app is based on. Definition BillingAppCatalogItem `json:"definition"` @@ -1468,7 +1468,7 @@ type BillingAppExternalInvoicing struct { Type BillingAppExternalInvoicingType `json:"type"` // UpdatedAt An ISO-8601 timestamp representation of entity last update date. - UpdatedAt *DateTime `json:"updated_at,omitempty"` + UpdatedAt DateTime `json:"updated_at"` } // BillingAppExternalInvoicingType The app type. @@ -1483,7 +1483,7 @@ type BillingAppReference struct { // BillingAppSandbox Sandbox app can be used for testing billing features. type BillingAppSandbox struct { // CreatedAt An ISO-8601 timestamp representation of entity creation date. - CreatedAt *DateTime `json:"created_at,omitempty"` + CreatedAt DateTime `json:"created_at"` // Definition The app catalog definition that this installed app is based on. Definition BillingAppCatalogItem `json:"definition"` @@ -1514,7 +1514,7 @@ type BillingAppSandbox struct { Type BillingAppSandboxType `json:"type"` // UpdatedAt An ISO-8601 timestamp representation of entity last update date. - UpdatedAt *DateTime `json:"updated_at,omitempty"` + UpdatedAt DateTime `json:"updated_at"` } // BillingAppSandboxType The app type. @@ -1529,7 +1529,7 @@ type BillingAppStripe struct { AccountId string `json:"account_id"` // CreatedAt An ISO-8601 timestamp representation of entity creation date. - CreatedAt *DateTime `json:"created_at,omitempty"` + CreatedAt DateTime `json:"created_at"` // Definition The app catalog definition that this installed app is based on. Definition BillingAppCatalogItem `json:"definition"` @@ -1566,7 +1566,7 @@ type BillingAppStripe struct { Type BillingAppStripeType `json:"type"` // UpdatedAt An ISO-8601 timestamp representation of entity last update date. - UpdatedAt *DateTime `json:"updated_at,omitempty"` + UpdatedAt DateTime `json:"updated_at"` } // BillingAppStripeType The app type. @@ -1925,7 +1925,7 @@ type BillingChargesExpand string // BillingCostBasis Describes currency basis supported by billing system. type BillingCostBasis struct { // CreatedAt An ISO-8601 timestamp representation of entity creation date. - CreatedAt *DateTime `json:"created_at,omitempty"` + CreatedAt DateTime `json:"created_at"` // EffectiveFrom An ISO-8601 timestamp representation of the date from which the cost basis is effective. // If not provided, it will be effective immediately and will set to `now` by the system. @@ -1992,7 +1992,7 @@ type BillingCreditGrant struct { Amount Numeric `json:"amount"` // CreatedAt An ISO-8601 timestamp representation of entity creation date. - CreatedAt *DateTime `json:"created_at,omitempty"` + CreatedAt DateTime `json:"created_at"` // Currency The currency of the granted credits. Currency BillingCurrencyCode `json:"currency"` @@ -2082,7 +2082,7 @@ type BillingCreditGrant struct { TaxConfig *BillingCreditGrantTaxConfig `json:"tax_config,omitempty"` // UpdatedAt An ISO-8601 timestamp representation of entity last update date. - UpdatedAt *DateTime `json:"updated_at,omitempty"` + UpdatedAt DateTime `json:"updated_at"` // VoidedAt Timestamp when the grant was voided. VoidedAt *DateTime `json:"voided_at,omitempty"` @@ -2136,7 +2136,7 @@ type BillingCreditTransaction struct { BookedAt DateTime `json:"booked_at"` // CreatedAt An ISO-8601 timestamp representation of entity creation date. - CreatedAt *DateTime `json:"created_at,omitempty"` + CreatedAt DateTime `json:"created_at"` // Currency Currency of the balance affected by the transaction. Currency BillingCurrencyCode `json:"currency"` @@ -2187,7 +2187,7 @@ type BillingCurrencyCustom struct { Code BillingCurrencyCodeCustom `json:"code"` // CreatedAt An ISO-8601 timestamp representation of the custom currency creation date. - CreatedAt *DateTime `json:"created_at,omitempty"` + CreatedAt DateTime `json:"created_at"` // Description Description of the currency. Description *string `json:"description,omitempty"` @@ -2238,7 +2238,7 @@ type BillingCustomer struct { BillingAddress *BillingAddress `json:"billing_address,omitempty"` // CreatedAt An ISO-8601 timestamp representation of entity creation date. - CreatedAt *DateTime `json:"created_at,omitempty"` + CreatedAt DateTime `json:"created_at"` // Currency Currency of the customer. // Used for billing, tax and invoicing. @@ -2270,7 +2270,7 @@ type BillingCustomer struct { PrimaryEmail *string `json:"primary_email,omitempty"` // UpdatedAt An ISO-8601 timestamp representation of entity last update date. - UpdatedAt *DateTime `json:"updated_at,omitempty"` + UpdatedAt DateTime `json:"updated_at"` // UsageAttribution Mapping to attribute metered usage to the customer by the event subject. UsageAttribution *BillingCustomerUsageAttribution `json:"usage_attribution,omitempty"` @@ -2444,7 +2444,7 @@ type BillingFlatFeeCharge struct { BillingPeriod ClosedPeriod `json:"billing_period"` // CreatedAt An ISO-8601 timestamp representation of entity creation date. - CreatedAt *DateTime `json:"created_at,omitempty"` + CreatedAt DateTime `json:"created_at"` // Currency The currency of the charge. Currency CurrencyCode `json:"currency"` @@ -2517,7 +2517,7 @@ type BillingFlatFeeCharge struct { UniqueReferenceId *string `json:"unique_reference_id,omitempty"` // UpdatedAt An ISO-8601 timestamp representation of entity last update date. - UpdatedAt *DateTime `json:"updated_at,omitempty"` + UpdatedAt DateTime `json:"updated_at"` } // BillingFlatFeeChargeType The type of the charge. @@ -2568,7 +2568,7 @@ type BillingPlan struct { BillingCadence ISO8601Duration `json:"billing_cadence"` // CreatedAt An ISO-8601 timestamp representation of entity creation date. - CreatedAt *DateTime `json:"created_at,omitempty"` + CreatedAt DateTime `json:"created_at"` // Currency The currency code of the plan. Currency CurrencyCode `json:"currency"` @@ -2623,7 +2623,7 @@ type BillingPlan struct { Status BillingPlanStatus `json:"status"` // UpdatedAt An ISO-8601 timestamp representation of entity last update date. - UpdatedAt *DateTime `json:"updated_at,omitempty"` + UpdatedAt DateTime `json:"updated_at"` // ValidationErrors List of validation errors in `draft` state that prevent the plan from being published. ValidationErrors *[]ProductCatalogValidationError `json:"validation_errors,omitempty"` @@ -2775,7 +2775,7 @@ type BillingProfile struct { Apps BillingProfileAppReferences `json:"apps"` // CreatedAt An ISO-8601 timestamp representation of entity creation date. - CreatedAt *DateTime `json:"created_at,omitempty"` + CreatedAt DateTime `json:"created_at"` // Default Whether this is the default profile. Default bool `json:"default"` @@ -2803,7 +2803,7 @@ type BillingProfile struct { Supplier BillingParty `json:"supplier"` // UpdatedAt An ISO-8601 timestamp representation of entity last update date. - UpdatedAt *DateTime `json:"updated_at,omitempty"` + UpdatedAt DateTime `json:"updated_at"` // Workflow The billing workflow settings for this profile Workflow BillingWorkflow `json:"workflow"` @@ -2943,7 +2943,7 @@ type BillingSubscription struct { BillingAnchor DateTime `json:"billing_anchor"` // CreatedAt An ISO-8601 timestamp representation of entity creation date. - CreatedAt *DateTime `json:"created_at,omitempty"` + CreatedAt DateTime `json:"created_at"` // CustomerId The customer ID of the subscription. CustomerId ULID `json:"customer_id"` @@ -2965,7 +2965,7 @@ type BillingSubscription struct { Status BillingSubscriptionStatus `json:"status"` // UpdatedAt An ISO-8601 timestamp representation of entity last update date. - UpdatedAt *DateTime `json:"updated_at,omitempty"` + UpdatedAt DateTime `json:"updated_at"` } // BillingSubscriptionCancel Request for canceling a subscription. @@ -3139,7 +3139,7 @@ type BillingTaxCode struct { AppMappings []BillingTaxCodeAppMapping `json:"app_mappings"` // CreatedAt An ISO-8601 timestamp representation of entity creation date. - CreatedAt *DateTime `json:"created_at,omitempty"` + CreatedAt DateTime `json:"created_at"` // DeletedAt An ISO-8601 timestamp representation of entity deletion date. DeletedAt *DateTime `json:"deleted_at,omitempty"` @@ -3164,7 +3164,7 @@ type BillingTaxCode struct { Name string `json:"name"` // UpdatedAt An ISO-8601 timestamp representation of entity last update date. - UpdatedAt *DateTime `json:"updated_at,omitempty"` + UpdatedAt DateTime `json:"updated_at"` } // BillingTaxCodeAppMapping Mapping of app types to tax codes. @@ -3257,7 +3257,7 @@ type BillingUsageBasedCharge struct { BillingPeriod ClosedPeriod `json:"billing_period"` // CreatedAt An ISO-8601 timestamp representation of entity creation date. - CreatedAt *DateTime `json:"created_at,omitempty"` + CreatedAt DateTime `json:"created_at"` // Currency The currency of the charge. Currency CurrencyCode `json:"currency"` @@ -3327,7 +3327,7 @@ type BillingUsageBasedCharge struct { UniqueReferenceId *string `json:"unique_reference_id,omitempty"` // UpdatedAt An ISO-8601 timestamp representation of entity last update date. - UpdatedAt *DateTime `json:"updated_at,omitempty"` + UpdatedAt DateTime `json:"updated_at"` } // BillingUsageBasedChargeType The type of the charge. @@ -3976,7 +3976,7 @@ type ExternalResourceKey = string // Feature A capability or billable dimension offered by a provider. type Feature struct { // CreatedAt An ISO-8601 timestamp representation of entity creation date. - CreatedAt *DateTime `json:"created_at,omitempty"` + CreatedAt DateTime `json:"created_at"` // DeletedAt An ISO-8601 timestamp representation of entity deletion date. DeletedAt *DateTime `json:"deleted_at,omitempty"` @@ -4016,7 +4016,7 @@ type Feature struct { UnitCost *BillingFeatureUnitCost `json:"unit_cost,omitempty"` // UpdatedAt An ISO-8601 timestamp representation of entity last update date. - UpdatedAt *DateTime `json:"updated_at,omitempty"` + UpdatedAt DateTime `json:"updated_at"` } // FeatureCostQueryResult Result of a feature cost query. @@ -4084,9 +4084,6 @@ type ForbiddenError struct { type GetCreditBalanceParamsFilter struct { // Currency Filter credit balance by currency. Currency *BillingCurrencyCode `json:"currency,omitempty"` - - // Feature Filter by specific feature. - Feature *ResourceKey `json:"feature,omitempty"` } // GoneError defines model for GoneError. @@ -4244,7 +4241,7 @@ type LLMCostOverrideCreate struct { // for a specific model from a specific provider. type LLMCostPrice struct { // CreatedAt Creation timestamp. - CreatedAt *DateTime `json:"created_at,omitempty"` + CreatedAt DateTime `json:"created_at"` // Currency Currency code (currently always "USD"). Currency CurrencyCode `json:"currency"` @@ -4271,7 +4268,7 @@ type LLMCostPrice struct { Source LLMCostPriceSource `json:"source"` // UpdatedAt Last update timestamp. - UpdatedAt *DateTime `json:"updated_at,omitempty"` + UpdatedAt DateTime `json:"updated_at"` } // LLMCostPriceSource Identifies where an LLM cost price came from. @@ -4336,20 +4333,24 @@ type ListCostBasesParamsFilter struct { // ListCreditGrantsParamsFilter Filter options for listing credit grants. type ListCreditGrantsParamsFilter struct { - // Currency Filter credit grants by currency. - Currency *CurrencyCode `json:"currency,omitempty"` + // Currency Filters on the given string field value by exact match. + // All properties are optional; provide exactly one to specify the comparison. + Currency *StringFieldFilterExact `json:"currency,omitempty"` - // Status Filter credit grants by status. - Status *BillingCreditGrantStatus `json:"status,omitempty"` + // Status Filters on the given string field value by exact match. + // All properties are optional; provide exactly one to specify the comparison. + Status *StringFieldFilterExact `json:"status,omitempty"` } // ListCreditTransactionsParamsFilter Filter options for listing credit transactions. type ListCreditTransactionsParamsFilter struct { - // Currency Filter credit transactions by currency. - Currency *BillingCurrencyCode `json:"currency,omitempty"` + // Currency Filters on the given string field value by exact match. + // All properties are optional; provide exactly one to specify the comparison. + Currency *StringFieldFilterExact `json:"currency,omitempty"` - // Type Filter credit transactions by type. - Type *BillingCreditTransactionType `json:"type,omitempty"` + // Type Filters on the given string field value by exact match. + // All properties are optional; provide exactly one to specify the comparison. + Type *StringFieldFilterExact `json:"type,omitempty"` } // ListCurrenciesParamsFilter Filter options for listing currencies. @@ -4470,7 +4471,7 @@ type Meter struct { Aggregation MeterAggregation `json:"aggregation"` // CreatedAt An ISO-8601 timestamp representation of entity creation date. - CreatedAt *DateTime `json:"created_at,omitempty"` + CreatedAt DateTime `json:"created_at"` // DeletedAt An ISO-8601 timestamp representation of entity deletion date. DeletedAt *DateTime `json:"deleted_at,omitempty"` @@ -4508,7 +4509,7 @@ type Meter struct { Name string `json:"name"` // UpdatedAt An ISO-8601 timestamp representation of entity last update date. - UpdatedAt *DateTime `json:"updated_at,omitempty"` + UpdatedAt DateTime `json:"updated_at"` // ValueProperty JSONPath expression to extract the value from the ingested event's data property. // @@ -4689,7 +4690,7 @@ type PlanAddon struct { Addon AddonReferenceItem `json:"addon"` // CreatedAt An ISO-8601 timestamp representation of entity creation date. - CreatedAt *DateTime `json:"created_at,omitempty"` + CreatedAt DateTime `json:"created_at"` // DeletedAt An ISO-8601 timestamp representation of entity deletion date. DeletedAt *DateTime `json:"deleted_at,omitempty"` @@ -4719,7 +4720,7 @@ type PlanAddon struct { Name string `json:"name"` // UpdatedAt An ISO-8601 timestamp representation of entity last update date. - UpdatedAt *DateTime `json:"updated_at,omitempty"` + UpdatedAt DateTime `json:"updated_at"` // ValidationErrors List of validation errors. ValidationErrors *[]ProductCatalogValidationError `json:"validation_errors,omitempty"` @@ -5248,7 +5249,10 @@ type ListCustomerChargesParams struct { // To filter charges by status add the following query param: `filter[status][oeq]=created,active` Filter *ListChargesParamsFilter `json:"filter,omitempty"` - // Expand Expands + // Expand Expand full objects for referenced entities. + // + // Supported values are: + // - `real_time_usage`: Expand the charge's real-time usage. Expand *[]BillingChargesExpand `form:"expand,omitempty" json:"expand,omitempty"` } @@ -9774,574 +9778,574 @@ var swaggerSpec = []string{ "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", - "4AybH1Z7I9PjAzK0UezX3tbKA7AbYsHJyakLSI7RZ1lGrs+jiKXZC1Lf7WvyxLvGfGPuJDO0eWQqj7Jc", - "sZj857s3P1duYX6DGbvNRpG+uTZVY/lJJJKi1q/pgkGKInNXouTi3T8IJFrQOYeJm2GOhU4Vo7GeM5Zp", - "zJBjCkYyyRdC9811A65DfXvDG4vrqZKLPslknzifxP4l+c15JF7xuF/4hV59ZEvvX4av+5cEYekxXzAB", - "6TCGwyEi1PvkhiY5Ky9/tv1rOx5zc2Po6IfIqk9zJrxSXLvrEWzXH/RYXM+UzNOryfKq7O/a3gqzuWKM", - "XBfD+zfXD7oPup4yOWMQb97r0pvt9Vg0+iXhbluwK49FIgYhK3sXiFXwSr/nGMRUZrd0kSbY8Y9mh9A9", - "tHBjpiIm5YZBx+WRuL58vwf0a+7Khkcy2fe5osIUVZ6At4N+tkxZH1oYi2dnz74dnD0dnD19f3b2Av77", - "Z7/241P48ezpj//rj//80x//eP7Dr+d//9vLp89+/q+zi//zlx/+1qfRgg24iPrn0YKRVyIa9mdpNng+", - "yHI1kX0u0jzrP33W6O1pqLdnW+nt2Vmjt2eh3r6t9vbdt//1z6d//+X8L7/++R9/evvu2ff9WSIn7Lb/", - "I/yPXEiVVnqTeWa6e25Olp8lAXYcTJatu9tSprmjG+/PZuu72fo8x3OwYA7rFagzxcXsZO71oVvb0w3S", - "hIoOHoBQrMWWi03s0JQLHWzppbOw6N4wpes23NU+gPfEhrpmNbZn73xrOjq0udMM4sisnY6fmo84b5WM", - "8ygjFzSjiZxtyS9OsE/QZ6uV1HzcqZHUbPJho96aEQQpKqHi4RtK7QZuiaACB8jos/lfZziZWdTV7nB2", - "xB1eraHfk3l1J+bV7dLNSpvsKpqYsezwBHG2V5FzcoJrmnC3TY2r7b6rCNIafw9Bk7tK+L7xEbxffjjl", - "c1+Vz31/5/uIxvHagLE0jgcQnVVrGXFQnQDCRlvUzOIWObCt74+n7iN6M6Hi3KzDKQXK6niNjsymUm3/", - "bAgn9otjyGMCHWPCkrUXJ6Tph39MlDc1IM4DXdeK/ttOCvh4TJlJgCYLgtz7SYD/hlVfc/37hS3kDfP4", - "Z6rkopWDvHvg3jmo39q2nefpurldGnak4dHF/q6eBT06dYWbMUB8+zBpuuvoMdDl2b4l97FkwgmT3F6v", - "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", - "ur46uvfl8sv/BAAA//8kPN73O7gDAA==", + "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", } // GetSwagger returns the content of the embedded swagger specification file diff --git a/api/v3/handlers/addons/convert.go b/api/v3/handlers/addons/convert.go index 5a33e62f42..6775f85c38 100644 --- a/api/v3/handlers/addons/convert.go +++ b/api/v3/handlers/addons/convert.go @@ -96,7 +96,7 @@ func FromAPIAddonInstanceType(source apiv3.AddonInstanceType) (productcatalog.Ad func ToAPIAddon(source addon.Addon) (apiv3.Addon, error) { var result apiv3.Addon - result.CreatedAt = lo.ToPtr(source.ManagedModel.CreatedAt) + result.CreatedAt = source.ManagedModel.CreatedAt result.Currency = string(source.AddonMeta.Currency) result.DeletedAt = source.ManagedModel.DeletedAt result.Description = source.AddonMeta.Description @@ -120,7 +120,7 @@ func ToAPIAddon(source addon.Addon) (apiv3.Addon, error) { } result.Status = status - result.UpdatedAt = lo.ToPtr(source.ManagedModel.UpdatedAt) + result.UpdatedAt = source.ManagedModel.UpdatedAt validationErrors, err := ToAPIProductCatalogValidationErrors(source) if err != nil { diff --git a/api/v3/handlers/apps/convert.go b/api/v3/handlers/apps/convert.go index 66fe04fdeb..ac33d5a67e 100644 --- a/api/v3/handlers/apps/convert.go +++ b/api/v3/handlers/apps/convert.go @@ -5,8 +5,6 @@ import ( "errors" "fmt" - "github.com/samber/lo" - api "github.com/openmeterio/openmeter/api/v3" "github.com/openmeterio/openmeter/api/v3/labels" "github.com/openmeterio/openmeter/api/v3/response" @@ -119,8 +117,8 @@ func toAPIBillingAppSandbox(sandboxApp appsandbox.Meta) (api.BillingAppSandbox, Definition: definition, Labels: labels.FromMetadata(sandboxApp.GetMetadata()), Description: sandboxApp.GetDescription(), - CreatedAt: lo.ToPtr(sandboxApp.CreatedAt), - UpdatedAt: lo.ToPtr(sandboxApp.UpdatedAt), + CreatedAt: sandboxApp.CreatedAt, + UpdatedAt: sandboxApp.UpdatedAt, DeletedAt: sandboxApp.DeletedAt, }, nil } @@ -141,8 +139,8 @@ func toAPIBillingAppStripe( Definition: definition, Labels: labels.FromMetadata(stripeApp.GetMetadata()), Description: stripeApp.GetDescription(), - CreatedAt: lo.ToPtr(stripeApp.CreatedAt), - UpdatedAt: lo.ToPtr(stripeApp.UpdatedAt), + CreatedAt: stripeApp.CreatedAt, + UpdatedAt: stripeApp.UpdatedAt, DeletedAt: stripeApp.DeletedAt, MaskedApiKey: stripeApp.MaskedAPIKey, @@ -167,8 +165,8 @@ func toAPIBillingAppExternalInvoicing(customInvoicingApp appcustominvoicing.Meta Definition: definition, Labels: labels.FromMetadata(customInvoicingApp.GetMetadata()), Description: customInvoicingApp.GetDescription(), - CreatedAt: lo.ToPtr(customInvoicingApp.CreatedAt), - UpdatedAt: lo.ToPtr(customInvoicingApp.UpdatedAt), + CreatedAt: customInvoicingApp.CreatedAt, + UpdatedAt: customInvoicingApp.UpdatedAt, DeletedAt: customInvoicingApp.DeletedAt, EnableDraftSyncHook: customInvoicingApp.Configuration.EnableDraftSyncHook, diff --git a/api/v3/handlers/billingprofiles/convert.gen.go b/api/v3/handlers/billingprofiles/convert.gen.go index c1f19dbd1f..7aed314f85 100644 --- a/api/v3/handlers/billingprofiles/convert.gen.go +++ b/api/v3/handlers/billingprofiles/convert.gen.go @@ -132,7 +132,7 @@ func init() { ToAPIBillingProfile = func(source billing.Profile) (v3.BillingProfile, error) { var v3BillingProfile v3.BillingProfile v3BillingProfile.Apps = pBillingProfileAppsToV3BillingProfileAppReferences(source.Apps) - v3BillingProfile.CreatedAt = timeTimeToPTimeTime(source.BaseProfile.CreatedAt) + v3BillingProfile.CreatedAt = timeTimeToTimeTime(source.BaseProfile.CreatedAt) v3BillingProfile.Default = source.BaseProfile.Default v3BillingProfile.DeletedAt = source.BaseProfile.DeletedAt v3BillingProfile.Description = source.BaseProfile.Description @@ -140,7 +140,7 @@ func init() { v3BillingProfile.Labels = ConvertMetadataToLabels(source.BaseProfile.Metadata) v3BillingProfile.Name = source.BaseProfile.Name v3BillingProfile.Supplier = ToAPIBillingParty(source.BaseProfile.Supplier) - v3BillingProfile.UpdatedAt = timeTimeToPTimeTime(source.BaseProfile.UpdatedAt) + v3BillingProfile.UpdatedAt = timeTimeToTimeTime(source.BaseProfile.UpdatedAt) v3BillingWorkflow, err := ToAPIBillingWorkflow(source.BaseProfile.WorkflowConfig) if err != nil { return v3BillingProfile, err @@ -238,6 +238,6 @@ func pV3BillingTaxConfigStripeToPProductcatalogStripeTaxConfig(source *v3.Billin } return pProductcatalogStripeTaxConfig } -func timeTimeToPTimeTime(source time.Time) *time.Time { - return &source +func timeTimeToTimeTime(source time.Time) time.Time { + return source } diff --git a/api/v3/handlers/currencies/convert.go b/api/v3/handlers/currencies/convert.go index a29e1b7fa8..f135be6e31 100644 --- a/api/v3/handlers/currencies/convert.go +++ b/api/v3/handlers/currencies/convert.go @@ -41,7 +41,7 @@ func ToAPIBillingCurrency(c currencies.Currency) (v3.BillingCurrency, error) { Name: c.Name, Symbol: &c.Symbol, Type: v3.BillingCurrencyCustomTypeCustom, - CreatedAt: &c.CreatedAt, + CreatedAt: c.CreatedAt, }) } return NewBillingCurrencyFrom(v3.BillingCurrencyFiat{ @@ -58,6 +58,6 @@ func ToAPIBillingCostBasis(cb currencies.CostBasis) v3.BillingCostBasis { FiatCode: cb.FiatCode, Rate: cb.Rate.String(), EffectiveFrom: &cb.EffectiveFrom, - CreatedAt: &cb.CreatedAt, + CreatedAt: cb.CreatedAt, } } diff --git a/api/v3/handlers/customers/charges/convert.go b/api/v3/handlers/customers/charges/convert.go index 4ed34e65a0..2a1e6cd304 100644 --- a/api/v3/handlers/customers/charges/convert.go +++ b/api/v3/handlers/customers/charges/convert.go @@ -37,7 +37,7 @@ func convertFlatFeeChargeToAPI(source flatfee.Charge) (api.BillingFlatFeeCharge, AdvanceAfter: source.State.AdvanceAfter, AmountAfterProration: ConvertDecimalToCurrencyAmount(source.ChargeBase.State.AmountAfterProration), BillingPeriod: ConvertClosedPeriodToAPI(source.ChargeBase.Intent.Intent.BillingPeriod), - CreatedAt: lo.ToPtr(source.ChargeBase.ManagedResource.ManagedModel.CreatedAt), + CreatedAt: source.ChargeBase.ManagedResource.ManagedModel.CreatedAt, Currency: ConvertCurrencyCodeToAPI(source.ChargeBase.Intent.Intent.Currency), Customer: ConvertCustomerIDToReference(source.ChargeBase.Intent.Intent.CustomerID), DeletedAt: source.ChargeBase.ManagedResource.ManagedModel.DeletedAt, @@ -60,7 +60,7 @@ func convertFlatFeeChargeToAPI(source flatfee.Charge) (api.BillingFlatFeeCharge, TaxConfig: convertTaxCodeConfigToAPI(source.ChargeBase.Intent.Intent.TaxConfig), Type: api.BillingFlatFeeChargeTypeFlatFee, UniqueReferenceId: source.ChargeBase.Intent.Intent.UniqueReferenceID, - UpdatedAt: lo.ToPtr(source.ChargeBase.ManagedResource.ManagedModel.UpdatedAt), + UpdatedAt: source.ChargeBase.ManagedResource.ManagedModel.UpdatedAt, }, nil } @@ -79,7 +79,7 @@ func convertUsageBasedChargeToAPI(source usagebased.Charge) (api.BillingUsageBas return api.BillingUsageBasedCharge{ AdvanceAfter: source.State.AdvanceAfter, BillingPeriod: ConvertClosedPeriodToAPI(source.ChargeBase.Intent.Intent.BillingPeriod), - CreatedAt: lo.ToPtr(source.ChargeBase.ManagedResource.ManagedModel.CreatedAt), + CreatedAt: source.ChargeBase.ManagedResource.ManagedModel.CreatedAt, Currency: ConvertCurrencyCodeToAPI(source.ChargeBase.Intent.Intent.Currency), Customer: ConvertCustomerIDToReference(source.ChargeBase.Intent.Intent.CustomerID), DeletedAt: source.ChargeBase.ManagedResource.ManagedModel.DeletedAt, @@ -101,7 +101,7 @@ func convertUsageBasedChargeToAPI(source usagebased.Charge) (api.BillingUsageBas Totals: convertUsageBasedChargeTotals(source), Type: api.BillingUsageBasedChargeTypeUsageBased, UniqueReferenceId: source.ChargeBase.Intent.Intent.UniqueReferenceID, - UpdatedAt: lo.ToPtr(source.ChargeBase.ManagedResource.ManagedModel.UpdatedAt), + UpdatedAt: source.ChargeBase.ManagedResource.ManagedModel.UpdatedAt, }, nil } diff --git a/api/v3/handlers/customers/convert.gen.go b/api/v3/handlers/customers/convert.gen.go index ec76b06520..b923c15539 100644 --- a/api/v3/handlers/customers/convert.gen.go +++ b/api/v3/handlers/customers/convert.gen.go @@ -64,7 +64,7 @@ func init() { ToAPIBillingCustomer = func(source customer.Customer) v3.BillingCustomer { var v3BillingCustomer v3.BillingCustomer v3BillingCustomer.BillingAddress = pModelsAddressToPV3BillingAddress(source.BillingAddress) - v3BillingCustomer.CreatedAt = timeTimeToPTimeTime(source.ManagedResource.ManagedModel.CreatedAt) + v3BillingCustomer.CreatedAt = timeTimeToTimeTime(source.ManagedResource.ManagedModel.CreatedAt) if source.Currency != nil { xstring := string(*source.Currency) v3BillingCustomer.Currency = &xstring @@ -78,7 +78,7 @@ func init() { v3BillingCustomer.Labels = ConvertMetadataAnnotationsToLabels(source) v3BillingCustomer.Name = source.ManagedResource.Name v3BillingCustomer.PrimaryEmail = source.PrimaryEmail - v3BillingCustomer.UpdatedAt = timeTimeToPTimeTime(source.ManagedResource.ManagedModel.UpdatedAt) + v3BillingCustomer.UpdatedAt = timeTimeToTimeTime(source.ManagedResource.ManagedModel.UpdatedAt) v3BillingCustomer.UsageAttribution = pCustomerCustomerUsageAttributionToPV3BillingCustomerUsageAttribution(source.UsageAttribution) return v3BillingCustomer } @@ -162,6 +162,6 @@ func responsePageMetaToV3PaginatedMeta(source response.PageMeta) v3.PaginatedMet v3PaginatedMeta.Page = responsePageMetaPageToV3PageMeta(source.Page) return v3PaginatedMeta } -func timeTimeToPTimeTime(source time.Time) *time.Time { - return &source +func timeTimeToTimeTime(source time.Time) time.Time { + return source } diff --git a/api/v3/handlers/customers/credits/convert.go b/api/v3/handlers/customers/credits/convert.go index 0a8d3693a7..e964eceb42 100644 --- a/api/v3/handlers/customers/credits/convert.go +++ b/api/v3/handlers/customers/credits/convert.go @@ -1,8 +1,10 @@ package customerscredits import ( + "context" "encoding/base64" "encoding/json" + "errors" "fmt" "time" @@ -10,6 +12,7 @@ import ( "github.com/samber/lo" api "github.com/openmeterio/openmeter/api/v3" + "github.com/openmeterio/openmeter/api/v3/filters" "github.com/openmeterio/openmeter/api/v3/labels" "github.com/openmeterio/openmeter/openmeter/billing/charges/creditpurchase" "github.com/openmeterio/openmeter/openmeter/billing/charges/meta" @@ -31,8 +34,8 @@ func toAPIBillingCreditGrant(charge creditpurchase.Charge) (api.BillingCreditGra Currency: api.BillingCurrencyCode(charge.Intent.Currency), FundingMethod: toAPIBillingCreditFundingMethod(charge.Intent.Settlement), Status: toAPIBillingCreditGrantStatus(charge), - CreatedAt: lo.ToPtr(charge.CreatedAt), - UpdatedAt: lo.ToPtr(charge.UpdatedAt), + CreatedAt: charge.CreatedAt, + UpdatedAt: charge.UpdatedAt, DeletedAt: charge.DeletedAt, Labels: labels.FromMetadata(charge.Intent.Metadata), } @@ -420,7 +423,7 @@ func toAPIBillingCreditTransactions(items []customerbalance.CreditTransaction) [ func toAPIBillingCreditTransaction(tx customerbalance.CreditTransaction) api.BillingCreditTransaction { apiTx := api.BillingCreditTransaction{ Id: tx.ID.ID, - CreatedAt: &tx.CreatedAt, + CreatedAt: tx.CreatedAt, BookedAt: tx.BookedAt, Type: toAPIBillingCreditTransactionType(tx.Type), Currency: api.BillingCurrencyCode(tx.Currency), @@ -486,3 +489,101 @@ func stringAnnotation(annotations models.Annotations, key string) string { return value } + +// filterStringExactToTransactionTypes converts a StringFieldFilterExact to a slice of CreditTransactionType values. +// Uses FromAPIFilterStringExact for mapping; validates that only allowed values are provided. +func filterStringExactToTransactionTypes(_ context.Context, f *filters.FilterStringExact) ([]customerbalance.CreditTransactionType, error) { + fs, err := filters.FromAPIFilterStringExact(f) + if err != nil { + return nil, err + } + if fs == nil { + return nil, nil + } + if fs.Ne != nil { + return nil, errors.New("only eq and oeq operators are supported for type") + } + + var values []string + if fs.Eq != nil { + values = append(values, *fs.Eq) + } + if fs.In != nil { + values = append(values, *fs.In...) + } + + result := make([]customerbalance.CreditTransactionType, 0, len(values)) + for _, v := range values { + switch api.BillingCreditTransactionType(v) { + case api.BillingCreditTransactionTypeFunded: + result = append(result, customerbalance.CreditTransactionTypeFunded) + case api.BillingCreditTransactionTypeConsumed: + result = append(result, customerbalance.CreditTransactionTypeConsumed) + default: + return nil, fmt.Errorf("unsupported credit transaction type: %s", v) + } + } + + return result, nil +} + +// filterStringExactToStatuses converts a StringFieldFilterExact to a slice of meta.ChargeStatus values. +// Uses FromAPIFilterStringExact for mapping; validates that only allowed values are provided. +func filterStringExactToStatuses(_ context.Context, f *filters.FilterStringExact, convert func(api.BillingCreditGrantStatus) (meta.ChargeStatus, error)) ([]meta.ChargeStatus, error) { + fs, err := filters.FromAPIFilterStringExact(f) + if err != nil { + return nil, err + } + if fs == nil { + return nil, nil + } + if fs.Ne != nil { + return nil, errors.New("only eq and oeq operators are supported for status") + } + + var values []string + if fs.Eq != nil { + values = append(values, *fs.Eq) + } + if fs.In != nil { + values = append(values, *fs.In...) + } + + result := make([]meta.ChargeStatus, 0, len(values)) + for _, v := range values { + converted, err := convert(api.BillingCreditGrantStatus(v)) + if err != nil { + return nil, err + } + result = append(result, converted) + } + + return result, nil +} + +// filterStringExactToCurrencies converts a StringFieldFilterExact to a slice of currencyx.Code values. +// Uses FromAPIFilterStringExact for mapping; validates that only allowed values are provided. +func filterStringExactToCurrencies(_ context.Context, f *filters.FilterStringExact) ([]currencyx.Code, error) { + fs, err := filters.FromAPIFilterStringExact(f) + if err != nil { + return nil, err + } + if fs == nil { + return nil, nil + } + if fs.Ne != nil { + return nil, errors.New("only eq and oeq operators are supported for currency") + } + + var codes []currencyx.Code + if fs.Eq != nil { + codes = append(codes, currencyx.Code(*fs.Eq)) + } + if fs.In != nil { + for _, v := range *fs.In { + codes = append(codes, currencyx.Code(v)) + } + } + + return codes, nil +} diff --git a/api/v3/handlers/customers/credits/get_balance.go b/api/v3/handlers/customers/credits/get_balance.go index 9322a1b1ad..4416c8bcf5 100644 --- a/api/v3/handlers/customers/credits/get_balance.go +++ b/api/v3/handlers/customers/credits/get_balance.go @@ -2,7 +2,6 @@ package customerscredits import ( "context" - "errors" "net/http" api "github.com/openmeterio/openmeter/api/v3" @@ -13,11 +12,8 @@ import ( "github.com/openmeterio/openmeter/pkg/currencyx" "github.com/openmeterio/openmeter/pkg/framework/commonhttp" "github.com/openmeterio/openmeter/pkg/framework/transport/httptransport" - "github.com/openmeterio/openmeter/pkg/models" ) -var errUnsupportedFeatureFilter = errors.New("feature filter is not supported for this balance endpoint") - type ( GetCustomerCreditBalanceRequest struct { CustomerID customer.CustomerID @@ -39,20 +35,6 @@ func (h *handler) GetCustomerCreditBalance() GetCustomerCreditBalanceHandler { return GetCustomerCreditBalanceRequest{}, err } - if args.Params.Filter != nil && args.Params.Filter.Feature != nil { - return GetCustomerCreditBalanceRequest{}, apierrors.NewBadRequestError( - ctx, - models.NewGenericValidationError(errUnsupportedFeatureFilter), - apierrors.InvalidParameters{ - { - Field: "filter.feature", - Reason: errUnsupportedFeatureFilter.Error(), - Source: apierrors.InvalidParamSourceQuery, - }, - }, - ) - } - request := GetCustomerCreditBalanceRequest{ CustomerID: customer.CustomerID{ Namespace: namespace, diff --git a/api/v3/handlers/customers/credits/list_grants.go b/api/v3/handlers/customers/credits/list_grants.go index 10ac61ee88..6179bc16d5 100644 --- a/api/v3/handlers/customers/credits/list_grants.go +++ b/api/v3/handlers/customers/credits/list_grants.go @@ -12,7 +12,6 @@ import ( "github.com/openmeterio/openmeter/api/v3/response" "github.com/openmeterio/openmeter/openmeter/billing/charges/creditpurchase" "github.com/openmeterio/openmeter/openmeter/billing/creditgrant" - "github.com/openmeterio/openmeter/pkg/currencyx" "github.com/openmeterio/openmeter/pkg/framework/commonhttp" "github.com/openmeterio/openmeter/pkg/framework/transport/httptransport" "github.com/openmeterio/openmeter/pkg/pagination" @@ -62,24 +61,29 @@ func (h *handler) ListCreditGrants() ListCreditGrantsHandler { } if args.Params.Filter != nil { - if args.Params.Filter.Status != nil { - status, err := fromAPIBillingCreditGrantStatus(*args.Params.Filter.Status) - if err != nil { - return ListCreditGrantsRequest{}, apierrors.NewBadRequestError(ctx, err, apierrors.InvalidParameters{ - { - Field: "filter[status]", - Reason: err.Error(), - Source: apierrors.InvalidParamSourceQuery, - }, - }) - } - req.Status = &status + statuses, err := filterStringExactToStatuses(ctx, args.Params.Filter.Status, fromAPIBillingCreditGrantStatus) + if err != nil { + return ListCreditGrantsRequest{}, apierrors.NewBadRequestError(ctx, err, apierrors.InvalidParameters{ + { + Field: "filter[status]", + Reason: err.Error(), + Source: apierrors.InvalidParamSourceQuery, + }, + }) } + req.Statuses = statuses - if args.Params.Filter.Currency != nil { - currency := currencyx.Code(*args.Params.Filter.Currency) - req.Currency = ¤cy + currencies, err := filterStringExactToCurrencies(ctx, args.Params.Filter.Currency) + if err != nil { + return ListCreditGrantsRequest{}, apierrors.NewBadRequestError(ctx, err, apierrors.InvalidParameters{ + { + Field: "filter[currency]", + Reason: err.Error(), + Source: apierrors.InvalidParamSourceQuery, + }, + }) } + req.Currencies = currencies } return req, nil diff --git a/api/v3/handlers/customers/credits/list_transactions.go b/api/v3/handlers/customers/credits/list_transactions.go index 9f57258fb8..5196d92155 100644 --- a/api/v3/handlers/customers/credits/list_transactions.go +++ b/api/v3/handlers/customers/credits/list_transactions.go @@ -12,7 +12,6 @@ import ( "github.com/openmeterio/openmeter/api/v3/apierrors" "github.com/openmeterio/openmeter/openmeter/customer" "github.com/openmeterio/openmeter/openmeter/ledger/customerbalance" - "github.com/openmeterio/openmeter/pkg/currencyx" "github.com/openmeterio/openmeter/pkg/framework/commonhttp" "github.com/openmeterio/openmeter/pkg/framework/transport/httptransport" ) @@ -92,12 +91,29 @@ func (h *handler) ListCreditTransactions() ListCreditTransactionsHandler { } if args.Params.Filter != nil { - req.Type = fromAPIBillingCreditTransactionType(args.Params.Filter.Type) + txTypes, err := filterStringExactToTransactionTypes(ctx, args.Params.Filter.Type) + if err != nil { + return ListCreditTransactionsRequest{}, apierrors.NewBadRequestError(ctx, err, apierrors.InvalidParameters{ + { + Field: "filter[type]", + Reason: err.Error(), + Source: apierrors.InvalidParamSourceQuery, + }, + }) + } + req.Types = txTypes - if args.Params.Filter.Currency != nil { - currency := currencyx.Code(*args.Params.Filter.Currency) - req.Currency = ¤cy + currencies, err := filterStringExactToCurrencies(ctx, args.Params.Filter.Currency) + if err != nil { + return ListCreditTransactionsRequest{}, apierrors.NewBadRequestError(ctx, err, apierrors.InvalidParameters{ + { + Field: "filter[currency]", + Reason: err.Error(), + Source: apierrors.InvalidParamSourceQuery, + }, + }) } + req.Currencies = currencies } return req, nil diff --git a/api/v3/handlers/features/convert.go b/api/v3/handlers/features/convert.go index b600511b63..3291f469eb 100644 --- a/api/v3/handlers/features/convert.go +++ b/api/v3/handlers/features/convert.go @@ -23,8 +23,8 @@ func convertFeatureToAPI(f feature.Feature) (api.Feature, error) { Name: f.Name, Description: f.Description, Labels: labels.FromMetadata(f.Metadata), - CreatedAt: &f.CreatedAt, - UpdatedAt: &f.UpdatedAt, + CreatedAt: f.CreatedAt, + UpdatedAt: f.UpdatedAt, DeletedAt: f.ArchivedAt, } diff --git a/api/v3/handlers/llmcost/convert.go b/api/v3/handlers/llmcost/convert.go index b43ffc7e0f..5cb99fe738 100644 --- a/api/v3/handlers/llmcost/convert.go +++ b/api/v3/handlers/llmcost/convert.go @@ -82,13 +82,8 @@ func domainPriceToAPI(p llmcost.Price) api.LLMCostPrice { Pricing: domainPricingToAPI(p.Pricing), } - if !p.CreatedAt.IsZero() { - out.CreatedAt = &p.CreatedAt - } - - if !p.UpdatedAt.IsZero() { - out.UpdatedAt = &p.UpdatedAt - } + out.CreatedAt = p.CreatedAt + out.UpdatedAt = p.UpdatedAt return out } diff --git a/api/v3/handlers/meters/convert.gen.go b/api/v3/handlers/meters/convert.gen.go index 8b2b345c2d..5821f24541 100644 --- a/api/v3/handlers/meters/convert.gen.go +++ b/api/v3/handlers/meters/convert.gen.go @@ -34,7 +34,7 @@ func init() { ToAPIMeter = func(source meter.Meter) v3.Meter { var v3Meter v3.Meter v3Meter.Aggregation = ToAPIMeterAggregation(source.Aggregation) - v3Meter.CreatedAt = timeTimeToPTimeTime(source.ManagedResource.ManagedModel.CreatedAt) + v3Meter.CreatedAt = timeTimeToTimeTime(source.ManagedResource.ManagedModel.CreatedAt) v3Meter.DeletedAt = source.ManagedResource.ManagedModel.DeletedAt v3Meter.Description = source.ManagedResource.Description v3Meter.Dimensions = &source.GroupBy @@ -44,7 +44,7 @@ func init() { v3Meter.Key = source.Key v3Meter.Labels = ConvertMetadataAnnotationsToLabels(source) v3Meter.Name = source.ManagedResource.Name - v3Meter.UpdatedAt = timeTimeToPTimeTime(source.ManagedResource.ManagedModel.UpdatedAt) + v3Meter.UpdatedAt = timeTimeToTimeTime(source.ManagedResource.ManagedModel.UpdatedAt) v3Meter.ValueProperty = source.ValueProperty return v3Meter } @@ -74,6 +74,6 @@ func responsePageMetaToV3PaginatedMeta(source response.PageMeta) v3.PaginatedMet v3PaginatedMeta.Page = responsePageMetaPageToV3PageMeta(source.Page) return v3PaginatedMeta } -func timeTimeToPTimeTime(source time.Time) *time.Time { - return &source +func timeTimeToTimeTime(source time.Time) time.Time { + return source } diff --git a/api/v3/handlers/plans/convert.go b/api/v3/handlers/plans/convert.go index 9aa18fb951..39025b9aad 100644 --- a/api/v3/handlers/plans/convert.go +++ b/api/v3/handlers/plans/convert.go @@ -43,7 +43,7 @@ func ToAPIBillingPlan(p plan.Plan) (api.BillingPlan, error) { resp := api.BillingPlan{ BillingCadence: p.BillingCadence.String(), - CreatedAt: lo.ToPtr(p.CreatedAt), + CreatedAt: p.CreatedAt, Currency: p.Currency.String(), DeletedAt: p.DeletedAt, Description: p.Description, @@ -52,7 +52,7 @@ func ToAPIBillingPlan(p plan.Plan) (api.BillingPlan, error) { Id: p.ID, Key: p.Key, Name: p.Name, - UpdatedAt: lo.ToPtr(p.UpdatedAt), + UpdatedAt: p.UpdatedAt, Version: p.Version, ProRatingEnabled: lo.ToPtr(p.ProRatingConfig.Enabled), ValidationErrors: ToAPIProductCatalogValidationErrors(validationIssues), diff --git a/api/v3/handlers/plans/convert_test.go b/api/v3/handlers/plans/convert_test.go index 4d7a172d34..f44246c5a8 100644 --- a/api/v3/handlers/plans/convert_test.go +++ b/api/v3/handlers/plans/convert_test.go @@ -66,10 +66,8 @@ func TestFromPlan(t *testing.T) { assert.Equal(t, api.CurrencyCode("USD"), result.Currency) assert.Equal(t, api.ISO8601Duration("P1M"), result.BillingCadence) assert.Equal(t, 1, result.Version) - require.NotNil(t, result.CreatedAt) - assert.Equal(t, now, *result.CreatedAt) - require.NotNil(t, result.UpdatedAt) - assert.Equal(t, now, *result.UpdatedAt) + assert.Equal(t, now, result.CreatedAt) + assert.Equal(t, now, result.UpdatedAt) assert.Nil(t, result.DeletedAt) assert.Nil(t, result.Description) }) diff --git a/api/v3/handlers/plans/planaddons/convert.go b/api/v3/handlers/plans/planaddons/convert.go index d01034f007..7871d6e390 100644 --- a/api/v3/handlers/plans/planaddons/convert.go +++ b/api/v3/handlers/plans/planaddons/convert.go @@ -1,8 +1,6 @@ package planaddons import ( - "github.com/samber/lo" - api "github.com/openmeterio/openmeter/api/v3" "github.com/openmeterio/openmeter/api/v3/labels" "github.com/openmeterio/openmeter/openmeter/productcatalog/planaddon" @@ -17,8 +15,8 @@ func ToAPIPlanAddon(a planaddon.PlanAddon) (api.PlanAddon, error) { Addon: api.AddonReferenceItem{Id: a.Addon.ID}, FromPlanPhase: a.PlanAddonConfig.FromPlanPhase, MaxQuantity: a.PlanAddonConfig.MaxQuantity, - CreatedAt: lo.ToPtr(a.CreatedAt), - UpdatedAt: lo.ToPtr(a.UpdatedAt), + CreatedAt: a.CreatedAt, + UpdatedAt: a.UpdatedAt, DeletedAt: a.DeletedAt, Labels: labels.FromMetadata(a.Metadata), ValidationErrors: ToAPIProductCatalogValidationErrors(validationIssues), diff --git a/api/v3/handlers/subscriptions/convert.go b/api/v3/handlers/subscriptions/convert.go index ff12a670bd..5b1793d965 100644 --- a/api/v3/handlers/subscriptions/convert.go +++ b/api/v3/handlers/subscriptions/convert.go @@ -21,8 +21,8 @@ func ToAPIBillingSubscription(subscription subscription.Subscription) api.Billin BillingAnchor: subscription.BillingAnchor, Status: api.BillingSubscriptionStatus(subscription.GetStatusAt(clock.Now())), Labels: labels.FromMetadataAnnotations(subscription.Metadata, subscription.Annotations), - CreatedAt: &subscription.CreatedAt, - UpdatedAt: &subscription.UpdatedAt, + CreatedAt: subscription.CreatedAt, + UpdatedAt: subscription.UpdatedAt, DeletedAt: subscription.DeletedAt, } diff --git a/api/v3/handlers/taxcodes/convert.gen.go b/api/v3/handlers/taxcodes/convert.gen.go index c447c2d71a..c50dccf919 100644 --- a/api/v3/handlers/taxcodes/convert.gen.go +++ b/api/v3/handlers/taxcodes/convert.gen.go @@ -41,19 +41,19 @@ func init() { ToAPIBillingTaxCode = func(source taxcode.TaxCode) (v3.BillingTaxCode, error) { var v3BillingTaxCode v3.BillingTaxCode v3BillingTaxCode.AppMappings = ToAPIBillingTaxCodeAppMappings(source.AppMappings) - v3BillingTaxCode.CreatedAt = timeTimeToPTimeTime(source.ManagedModel.CreatedAt) + v3BillingTaxCode.CreatedAt = timeTimeToTimeTime(source.ManagedModel.CreatedAt) v3BillingTaxCode.DeletedAt = source.ManagedModel.DeletedAt v3BillingTaxCode.Description = source.Description v3BillingTaxCode.Id = source.NamespacedID.ID v3BillingTaxCode.Key = source.Key v3BillingTaxCode.Labels = ConvertMetadataAnnotationsToLabels(source) v3BillingTaxCode.Name = source.Name - v3BillingTaxCode.UpdatedAt = timeTimeToPTimeTime(source.ManagedModel.UpdatedAt) + v3BillingTaxCode.UpdatedAt = timeTimeToTimeTime(source.ManagedModel.UpdatedAt) return v3BillingTaxCode, nil } } -func timeTimeToPTimeTime(source time.Time) *time.Time { - return &source +func timeTimeToTimeTime(source time.Time) time.Time { + return source } func v3BillingTaxCodeAppMappingListToTaxcodeTaxCodeAppMappings(source []v3.BillingTaxCodeAppMapping) taxcode.TaxCodeAppMappings { var taxcodeTaxCodeAppMappings taxcode.TaxCodeAppMappings diff --git a/api/v3/openapi.yaml b/api/v3/openapi.yaml index b8b4339bab..0103a87eb8 100644 --- a/api/v3/openapi.yaml +++ b/api/v3/openapi.yaml @@ -845,7 +845,11 @@ paths: - name: expand in: query required: false - description: Expands + description: |- + Expand full objects for referenced entities. + + Supported values are: + - `real_time_usage`: Expand the charge's real-time usage. schema: type: array items: @@ -2792,6 +2796,8 @@ components: required: - id - name + - created_at + - updated_at - key - version - instance_type @@ -3111,6 +3117,8 @@ components: required: - id - name + - created_at + - updated_at - type - definition - status @@ -3221,6 +3229,8 @@ components: required: - id - name + - created_at + - updated_at - type - definition - status @@ -3289,6 +3299,8 @@ components: required: - id - name + - created_at + - updated_at - type - definition - status @@ -3883,6 +3895,7 @@ components: - id - fiat_code - rate + - created_at properties: id: allOf: @@ -3984,6 +3997,8 @@ components: required: - id - name + - created_at + - updated_at - funding_method - currency - amount @@ -4201,6 +4216,7 @@ components: required: - id - name + - created_at - booked_at - type - currency @@ -4313,6 +4329,7 @@ components: - type - name - code + - created_at properties: id: allOf: @@ -4396,6 +4413,8 @@ components: required: - id - name + - created_at + - updated_at - key properties: id: @@ -4725,6 +4744,8 @@ components: required: - id - name + - created_at + - updated_at - type - customer - managed_by @@ -4954,6 +4975,8 @@ components: required: - id - name + - created_at + - updated_at - key - version - currency @@ -5297,6 +5320,8 @@ components: required: - id - name + - created_at + - updated_at - supplier - workflow - apps @@ -5546,6 +5571,8 @@ components: type: object required: - id + - created_at + - updated_at - customer_id - billing_anchor - status @@ -5866,6 +5893,8 @@ components: required: - id - name + - created_at + - updated_at - key - app_mappings properties: @@ -6069,6 +6098,8 @@ components: required: - id - name + - created_at + - updated_at - type - customer - managed_by @@ -7193,6 +7224,8 @@ components: required: - id - name + - created_at + - updated_at - key properties: id: @@ -7354,10 +7387,6 @@ components: allOf: - $ref: '#/components/schemas/BillingCurrencyCode' description: Filter credit balance by currency. - feature: - allOf: - - $ref: '#/components/schemas/ResourceKey' - description: Filter by specific feature. description: Filter options for getting a credit balance. ISO8601Duration: type: string @@ -7468,6 +7497,8 @@ components: - currency - source - effective_from + - created_at + - updated_at properties: id: allOf: @@ -7584,25 +7615,17 @@ components: type: object properties: status: - allOf: - - $ref: '#/components/schemas/BillingCreditGrantStatus' - description: Filter credit grants by status. + $ref: '#/components/schemas/StringFieldFilterExact' currency: - allOf: - - $ref: '#/components/schemas/CurrencyCode' - description: Filter credit grants by currency. + $ref: '#/components/schemas/StringFieldFilterExact' description: Filter options for listing credit grants. ListCreditTransactionsParamsFilter: type: object properties: type: - allOf: - - $ref: '#/components/schemas/BillingCreditTransactionType' - description: Filter credit transactions by type. + $ref: '#/components/schemas/StringFieldFilterExact' currency: - allOf: - - $ref: '#/components/schemas/BillingCurrencyCode' - description: Filter credit transactions by currency. + $ref: '#/components/schemas/StringFieldFilterExact' description: Filter options for listing credit transactions. ListCurrenciesParamsFilter: type: object @@ -7739,6 +7762,8 @@ components: required: - id - name + - created_at + - updated_at - key - aggregation - event_type @@ -8139,6 +8164,8 @@ components: required: - id - name + - created_at + - updated_at - addon - from_plan_phase properties: diff --git a/openmeter/billing/creditgrant/service.go b/openmeter/billing/creditgrant/service.go index cb04ac977f..a970820dfe 100644 --- a/openmeter/billing/creditgrant/service.go +++ b/openmeter/billing/creditgrant/service.go @@ -150,8 +150,8 @@ type ListInput struct { CustomerID string // Optional filters - Status *meta.ChargeStatus - Currency *currencyx.Code + Statuses []meta.ChargeStatus + Currencies []currencyx.Code } func (i ListInput) Validate() error { @@ -165,14 +165,14 @@ func (i ListInput) Validate() error { errs = append(errs, errors.New("customer ID is required")) } - if i.Status != nil { - if err := i.Status.Validate(); err != nil { + for _, s := range i.Statuses { + if err := s.Validate(); err != nil { errs = append(errs, err) } } - if i.Currency != nil { - if err := i.Currency.Validate(); err != nil { + for _, c := range i.Currencies { + if err := c.Validate(); err != nil { errs = append(errs, fmt.Errorf("currency: %w", err)) } } diff --git a/openmeter/billing/creditgrant/service/service.go b/openmeter/billing/creditgrant/service/service.go index 350947cc89..f051d16a0f 100644 --- a/openmeter/billing/creditgrant/service/service.go +++ b/openmeter/billing/creditgrant/service/service.go @@ -17,7 +17,6 @@ import ( "github.com/openmeterio/openmeter/openmeter/customer" "github.com/openmeterio/openmeter/openmeter/productcatalog" "github.com/openmeterio/openmeter/pkg/clock" - "github.com/openmeterio/openmeter/pkg/currencyx" "github.com/openmeterio/openmeter/pkg/framework/commonhttp" "github.com/openmeterio/openmeter/pkg/models" "github.com/openmeterio/openmeter/pkg/pagination" @@ -159,14 +158,8 @@ func (s *service) List(ctx context.Context, input creditgrant.ListInput) (pagina Namespace: input.Namespace, CustomerIDs: []string{input.CustomerID}, Expands: meta.Expands{meta.ExpandRealizations}, - } - - if input.Status != nil { - listInput.Statuses = []meta.ChargeStatus{*input.Status} - } - - if input.Currency != nil { - listInput.Currencies = []currencyx.Code{*input.Currency} + Statuses: input.Statuses, + Currencies: input.Currencies, } return s.creditPurchaseService.List(ctx, listInput) diff --git a/openmeter/ledger/customerbalance/funded_loader.go b/openmeter/ledger/customerbalance/funded_loader.go index d846f89eae..1bde2d0c44 100644 --- a/openmeter/ledger/customerbalance/funded_loader.go +++ b/openmeter/ledger/customerbalance/funded_loader.go @@ -6,6 +6,7 @@ import ( "github.com/openmeterio/openmeter/openmeter/billing/charges/creditpurchase" "github.com/openmeterio/openmeter/openmeter/billing/charges/meta" "github.com/openmeterio/openmeter/openmeter/ledger" + "github.com/openmeterio/openmeter/pkg/currencyx" "github.com/openmeterio/openmeter/pkg/models" ) @@ -18,12 +19,17 @@ func newFundedCreditTransactionLoader(s *service) creditTransactionLoader { } func (l *fundedCreditTransactionLoader) Load(ctx context.Context, input creditTransactionLoaderInput) (creditTransactionLoaderResult, error) { + var currency *currencyx.Code + if len(input.Currencies) == 1 { + currency = &input.Currencies[0] + } + result, err := l.service.CreditPurchaseSvc.ListFundedCreditActivities(ctx, creditpurchase.ListFundedCreditActivitiesInput{ Customer: input.CustomerID, Limit: input.Limit, After: toFundedCreditActivityCursor(input.After), Before: toFundedCreditActivityCursor(input.Before), - Currency: input.Currency, + Currency: currency, }) if err != nil { return creditTransactionLoaderResult{}, err diff --git a/openmeter/ledger/customerbalance/ledger_loader.go b/openmeter/ledger/customerbalance/ledger_loader.go index 45650e82fb..8c3e021f01 100644 --- a/openmeter/ledger/customerbalance/ledger_loader.go +++ b/openmeter/ledger/customerbalance/ledger_loader.go @@ -4,6 +4,7 @@ import ( "context" "github.com/openmeterio/openmeter/openmeter/ledger" + "github.com/openmeterio/openmeter/pkg/currencyx" ) type ledgerCreditTransactionLoader struct { @@ -19,13 +20,18 @@ func newLedgerCreditTransactionLoader(s *service, movement ledger.ListTransactio } func (l *ledgerCreditTransactionLoader) Load(ctx context.Context, input creditTransactionLoaderInput) (creditTransactionLoaderResult, error) { + var currency *currencyx.Code + if len(input.Currencies) == 1 { + currency = &input.Currencies[0] + } + result, err := l.service.Ledger.ListTransactions(ctx, ledger.ListTransactionsInput{ Namespace: input.CustomerID.Namespace, Cursor: input.After, Before: input.Before, Limit: input.Limit, AccountIDs: []string{input.AccountID}, - Currency: input.Currency, + Currency: currency, CreditMovement: l.movement, }) if err != nil { diff --git a/openmeter/ledger/customerbalance/loaders.go b/openmeter/ledger/customerbalance/loaders.go index 4469dee32b..9a4b3f58d5 100644 --- a/openmeter/ledger/customerbalance/loaders.go +++ b/openmeter/ledger/customerbalance/loaders.go @@ -14,7 +14,7 @@ type creditTransactionLoaderInput struct { Before *ledger.TransactionCursor CustomerID customer.CustomerID AccountID string - Currency *currencyx.Code + Currencies []currencyx.Code } type creditTransactionLoaderResult struct { @@ -40,8 +40,8 @@ var creditTransactionLoaderFactories = map[CreditTransactionType]creditTransacti }, } -func (s *service) creditTransactionLoaders(txType *CreditTransactionType) ([]creditTransactionLoader, error) { - if txType == nil { +func (s *service) creditTransactionLoaders(txTypes []CreditTransactionType) ([]creditTransactionLoader, error) { + if len(txTypes) == 0 { loaders := make([]creditTransactionLoader, 0, len(creditTransactionLoaderOrder)) for _, transactionType := range creditTransactionLoaderOrder { loaders = append(loaders, creditTransactionLoaderFactories[transactionType](s)) @@ -50,14 +50,15 @@ func (s *service) creditTransactionLoaders(txType *CreditTransactionType) ([]cre return loaders, nil } - if err := txType.Validate(); err != nil { - return nil, err - } + loaders := make([]creditTransactionLoader, 0, len(txTypes)) + for _, txType := range txTypes { + factory, ok := creditTransactionLoaderFactories[txType] + if !ok { + return nil, txType.Validate() + } - factory, ok := creditTransactionLoaderFactories[*txType] - if !ok { - return nil, txType.Validate() + loaders = append(loaders, factory(s)) } - return []creditTransactionLoader{factory(s)}, nil + return loaders, nil } diff --git a/openmeter/ledger/customerbalance/transactions.go b/openmeter/ledger/customerbalance/transactions.go index 170e8ff747..e006a49ea5 100644 --- a/openmeter/ledger/customerbalance/transactions.go +++ b/openmeter/ledger/customerbalance/transactions.go @@ -39,8 +39,8 @@ type ListCreditTransactionsInput struct { After *ledger.TransactionCursor Before *ledger.TransactionCursor - Type *CreditTransactionType - Currency *currencyx.Code + Types []CreditTransactionType + Currencies []currencyx.Code } func (i ListCreditTransactionsInput) Validate() error { @@ -70,14 +70,14 @@ func (i ListCreditTransactionsInput) Validate() error { errs = append(errs, fmt.Errorf("after and before cannot be set together")) } - if i.Type != nil { - if err := i.Type.Validate(); err != nil { + for _, t := range i.Types { + if err := t.Validate(); err != nil { errs = append(errs, fmt.Errorf("type: %w", err)) } } - if i.Currency != nil { - if err := i.Currency.Validate(); err != nil { + for _, c := range i.Currencies { + if err := c.Validate(); err != nil { errs = append(errs, fmt.Errorf("currency: %w", err)) } } @@ -122,7 +122,7 @@ func (s *service) ListCreditTransactions(ctx context.Context, input ListCreditTr return emptyCreditTransactions(), nil } - loaders, err := s.creditTransactionLoaders(input.Type) + loaders, err := s.creditTransactionLoaders(input.Types) if err != nil { return ListCreditTransactionsResult{}, err } @@ -133,7 +133,7 @@ func (s *service) ListCreditTransactions(ctx context.Context, input ListCreditTr Before: input.Before, CustomerID: input.CustomerID, AccountID: accountID, - Currency: input.Currency, + Currencies: input.Currencies, } loadedLists := make([][]CreditTransaction, 0, len(loaders)) diff --git a/openmeter/ledger/customerbalance/transactions_test.go b/openmeter/ledger/customerbalance/transactions_test.go index 6b0cf63d3a..121c5dd62e 100644 --- a/openmeter/ledger/customerbalance/transactions_test.go +++ b/openmeter/ledger/customerbalance/transactions_test.go @@ -23,7 +23,7 @@ func TestCreditTransactionLoaders_InvalidType(t *testing.T) { s := &service{} invalid := CreditTransactionType("invalid") - _, err := s.creditTransactionLoaders(&invalid) + _, err := s.creditTransactionLoaders([]CreditTransactionType{invalid}) require.Error(t, err) }