diff --git a/.agents/skills/api/rules/aip-126-enums.md b/.agents/skills/api/rules/aip-126-enums.md index 9a711872c3..21e7e4fc69 100644 --- a/.agents/skills/api/rules/aip-126-enums.md +++ b/.agents/skills/api/rules/aip-126-enums.md @@ -3,5 +3,5 @@ Reference: https://kong-aip.netlify.app/aip/126/ - All enum wire values must be `snake_case` (enforced as an error by the `casing-aip-errors` linter rule). -- Every enum must define an `unknown` member as the zero/default value. +- Prefer defining an `unknown` member as the zero/default value. This is a recommendation, not a requirement — most domains (charges, subscriptions, currencies) omit it, so do not flag its absence as a violation. - Prefer enums over booleans for two-state fields — this allows a third state to be added later without a breaking change. diff --git a/api/spec/packages/aip-client-javascript/src/index.ts b/api/spec/packages/aip-client-javascript/src/index.ts index 2cd9e718a5..c87aae3ca7 100644 --- a/api/spec/packages/aip-client-javascript/src/index.ts +++ b/api/spec/packages/aip-client-javascript/src/index.ts @@ -64,15 +64,15 @@ export type { CreateLabels, TaxConfigStripe, TaxConfigExternalInvoicing, - FlatFeeDiscounts, + ChargeFlatFeeDiscounts, PriceFree, WorkflowCollectionAlignmentSubscription, WorkflowPaymentChargeAutomaticallySettings, WorkflowPaymentSendInvoiceSettings, - InvoiceExternalIds, + InvoiceExternalReferences, InvoiceAvailableActionDetails, InvoiceWorkflowInvoicingSettings, - InvoiceLineExternalIds, + InvoiceLineExternalReferences, LlmCostProvider, LlmCostModel, RateCardStaticEntitlement, @@ -157,7 +157,6 @@ export type { QueryFilterStringMapItem, CustomerKeyReference, CustomerUsageAttribution, - BillingAddress, Address, AppStripeCreateCheckoutSessionCustomerUpdate, AppStripeCreateCheckoutSessionConsentCollectionPaymentMethodReuseAgreement, @@ -232,9 +231,8 @@ export type { CreateCustomerRequest, Customer, UpsertCustomerRequest, - InvoiceCustomer, PartyAddresses, - Supplier, + InvoiceCustomer, AppStripeCreateCheckoutSessionConsentCollection, ListCustomerEntitlementAccessResponseData, WorkflowCollectionAlignmentAnchored, @@ -262,7 +260,7 @@ export type { PricePagePaginatedResponse, CreateCreditGrantRequest, CreditGrant, - CreateFlatFeeChargeRequest, + CreateChargeFlatFeeRequest, WorkflowTaxSettings, SubscriptionAddonPagePaginatedResponse, PlanAddonPagePaginatedResponse, @@ -271,8 +269,7 @@ export type { MeterQueryRequest, CustomerPagePaginatedResponse, Party, - InvoiceBase, - CreditNoteInvoice, + Supplier, AppStripeCreateCheckoutSessionRequestOptions, TaxCodePagePaginatedResponse, InvoiceWorkflowSettings, @@ -284,14 +281,15 @@ export type { UpdateFeatureRequest, CreditGrantPagePaginatedResponse, BadRequest, + InvoiceBase, CustomerStripeCreateCheckoutSessionRequest, WorkflowCollectionSettings, AppPagePaginatedResponse, ProfileApps, GovernanceQueryResponse, - FlatFeeCharge, - UsageBasedCharge, - CreateUsageBasedChargeRequest, + ChargeFlatFee, + ChargeUsageBased, + CreateChargeUsageBasedRequest, InvoiceLineRateCard, RateCard, FeaturePagePaginatedResponse, @@ -310,7 +308,7 @@ export type { UpsertPlanRequest, AddonPagePaginatedResponse, ProfilePagePaginatedResponse, - StandardInvoice, + InvoiceStandard, PlanPagePaginatedResponse, SortQueryInput, BaseErrorInput, @@ -368,6 +366,6 @@ export type { UpsertPlanRequestInput, AddonPagePaginatedResponseInput, ProfilePagePaginatedResponseInput, - StandardInvoiceInput, + InvoiceStandardInput, PlanPagePaginatedResponseInput, } from './models/types.js' diff --git a/api/spec/packages/aip-client-javascript/src/models/operations/customers.ts b/api/spec/packages/aip-client-javascript/src/models/operations/customers.ts index 6639e02010..ddc08dd08e 100644 --- a/api/spec/packages/aip-client-javascript/src/models/operations/customers.ts +++ b/api/spec/packages/aip-client-javascript/src/models/operations/customers.ts @@ -5,11 +5,11 @@ import type { AppStripeCreateCheckoutSessionResult, AppStripeCreateCustomerPortalSessionResult, ChargePagePaginatedResponse, + CreateChargeFlatFeeRequest, + CreateChargeUsageBasedRequest, CreateCreditAdjustmentRequest as CreateCreditAdjustmentRequestBody, CreateCreditGrantRequestInput, CreateCustomerRequest as CreateCustomerRequestBody, - CreateFlatFeeChargeRequest, - CreateUsageBasedChargeRequest, CreditAdjustment, CreditBalances, CreditGrant, @@ -172,7 +172,7 @@ export type ListCustomerChargesResponse = ChargePagePaginatedResponse export type CreateCustomerChargesRequest = { customerId: string - body: CreateFlatFeeChargeRequest | CreateUsageBasedChargeRequest + body: CreateChargeFlatFeeRequest | CreateChargeUsageBasedRequest } export type CreateCustomerChargesResponse = z.output< typeof schemas.createCustomerChargesResponse diff --git a/api/spec/packages/aip-client-javascript/src/models/schemas.ts b/api/spec/packages/aip-client-javascript/src/models/schemas.ts index eec918df5c..2625ca546e 100644 --- a/api/spec/packages/aip-client-javascript/src/models/schemas.ts +++ b/api/spec/packages/aip-client-javascript/src/models/schemas.ts @@ -584,11 +584,11 @@ export const chargesExpand = z "Expands for customer charges. Values: - `real_time_usage`: The charge's real-time usage.", ) -export const resourceManagedBy = z - .enum(['manual', 'system', 'subscription']) +export const lifecycleController = z + .enum(['system', 'manual']) .describe( - 'Identifies which system manages a resource. Values: - `manual`: The resource is managed manually (overridden by our API users). - `system`: The resource is managed by the system. - `subscription`: The resource is managed by the subscription.', + 'Identifies whether a resource lifecycle is controlled by OpenMeter or manually overridden by the API user. Values: - `system`: The resource lifecycle is controlled by OpenMeter. - `manual`: The resource lifecycle was manually overridden by the API user.', ) export const chargeStatus = z @@ -630,7 +630,7 @@ export const pricePaymentTerm = z .union([z.literal('in_advance'), z.literal('in_arrears')]) .describe('The payment term of a flat price.') -export const flatFeeDiscounts = z +export const chargeFlatFeeDiscounts = z .object({ percentage: z .number() @@ -741,22 +741,29 @@ export const invoiceValidationIssueSeverity = z .enum(['critical', 'warning']) .describe('Severity level of an invoice validation issue.') -export const invoiceExternalIds = z +export const invoiceExternalReferences = z .object({ - invoicing: z + invoicing_id: z .string() .optional() .describe( 'The ID assigned by the external invoicing app (e.g. Stripe invoice ID).', ), + payment_id: z + .string() + .optional() + + .describe( + 'The ID assigned by the external payment app (e.g. Stripe payment intent ID).', + ), }) .describe( 'External identifiers assigned to an invoice by third-party systems.', ) -export const standardInvoiceStatus = z +export const invoiceStandardStatus = z .enum([ 'draft', 'issuing', @@ -807,24 +814,16 @@ export const invoiceWorkflowInvoicingSettings = z 'Invoice-level invoicing settings. A subset of BillingWorkflowInvoicingSettings limited to fields that are meaningful per-invoice. progressive_billing is omitted as it is a gather-time / profile-level decision.', ) -export const invoiceLineManagedBy = z - .enum(['subscription', 'system', 'manual']) - .describe('Indicates what entity manages the lifecycle of an invoice line.') - export const invoiceDiscountReason = z .enum(['maximum_spend', 'ratecard_percentage', 'ratecard_usage']) .describe('The reason a discount was applied to an invoice line.') -export const invoiceLineExternalIds = z +export const invoiceLineExternalReferences = z .object({ - invoicing: z + invoicing_id: z .string() .optional() .describe('The ID assigned by the external invoicing app.'), - tax: z - .string() - .optional() - .describe('The ID assigned by the external tax app.'), }) .describe( @@ -1208,10 +1207,6 @@ export const invoiceType = z .enum(['standard']) .describe('The type of a billing invoice.') -export const creditNoteInvoiceStatus = z - .enum(['draft', 'issued']) - .describe('Lifecycle status of a credit note invoice.') - export const invoiceLineType = z .enum(['standard_line']) .describe('Line item type discriminator.') @@ -2283,18 +2278,6 @@ export const customerUsageAttribution = z 'Mapping to attribute metered usage to the customer. One customer can have zero or more subjects, but one subject can only belong to one customer.', ) -export const billingAddress = z - .object({ - country: countryCode.optional(), - postal_code: z.string().optional().describe('Postal code.'), - state: z.string().optional().describe('State or province.'), - city: z.string().optional().describe('City.'), - line1: z.string().optional().describe('First line of the address.'), - line2: z.string().optional().describe('Second line of the address.'), - phone_number: z.string().optional().describe('Phone number.'), - }) - .describe('Address') - export const address = z .object({ country: countryCode.optional(), @@ -2704,7 +2687,7 @@ export const invoiceLineAmountDiscount = z .string() .optional() .describe('Optional human-readable description of the discount.'), - external_ids: invoiceLineExternalIds.optional(), + external_references: invoiceLineExternalReferences.optional(), amount: numeric, }) .describe('A monetary amount discount applied to an invoice line item.') @@ -2717,7 +2700,7 @@ export const invoiceLineUsageDiscount = z .string() .optional() .describe('Optional human-readable description of the discount.'), - external_ids: invoiceLineExternalIds.optional(), + external_references: invoiceLineExternalReferences.optional(), quantity: numeric, }) .describe('A usage quantity discount applied to an invoice line item.') @@ -2730,7 +2713,7 @@ export const invoiceLineBaseDiscount = z .string() .optional() .describe('Optional human-readable description of the discount.'), - external_ids: invoiceLineExternalIds.optional(), + external_references: invoiceLineExternalReferences.optional(), }) .describe('Base fields shared by all invoice line item discounts.') @@ -3433,7 +3416,7 @@ export const createCustomerRequest = z .optional() .describe('The primary email address of the customer.'), currency: currencyCode.optional(), - billing_address: billingAddress.optional(), + billing_address: address.optional(), }) .describe('Customer create request.') @@ -3464,7 +3447,7 @@ export const customer = z .optional() .describe('The primary email address of the customer.'), currency: currencyCode.optional(), - billing_address: billingAddress.optional(), + billing_address: address.optional(), }) .describe( @@ -3493,39 +3476,31 @@ export const upsertCustomerRequest = z .optional() .describe('The primary email address of the customer.'), currency: currencyCode.optional(), - billing_address: billingAddress.optional(), + billing_address: address.optional(), }) .describe('Customer upsert request.') -export const invoiceCustomer = z - .object({ - id: ulid, - key: externalResourceKey.optional(), - name: z.string().describe('Human-readable name of the customer.'), - billing_address: billingAddress.optional(), - usage_attribution: customerUsageAttribution, - }) - - .describe( - "Snapshot of the customer's information at the time the invoice was issued.", - ) - export const partyAddresses = z .object({ billing_address: address, }) .describe('A collection of addresses for the party.') -export const supplier = z +export const invoiceCustomer = z .object({ - id: z.string().describe('Unique identifier for the supplier.'), - name: z.string().describe('Human-readable name of the supplier.'), - tax_id: z.string().optional().describe('Tax identity of the supplier.'), - address: address, + id: ulid, + name: z + .string() + .min(1) + .max(256) + .describe('Display name of the resource. Between 1 and 256 characters.'), + usage_attribution: customerUsageAttribution.optional(), + billing_address: address.optional(), + key: externalResourceKey.optional(), }) .describe( - "Snapshot of the supplier's information at the time the invoice was issued.", + "Snapshot of the customer's information at the time the invoice was issued.", ) export const appStripeCreateCheckoutSessionConsentCollection = z @@ -4041,7 +4016,7 @@ export const creditGrant = z 'A credit grant allocates credits to a customer. Credits are drawn down against charges according to the settlement mode configured on the rate card.', ) -export const createFlatFeeChargeRequest = z +export const createChargeFlatFeeRequest = z .object({ name: z .string() @@ -4068,7 +4043,7 @@ export const createFlatFeeChargeRequest = z settlement_mode: settlementMode, tax_config: taxConfig.optional(), payment_term: pricePaymentTerm, - discounts: flatFeeDiscounts.optional(), + discounts: chargeFlatFeeDiscounts.optional(), feature_key: z .string() .optional() @@ -4170,75 +4145,21 @@ export const party = z }) .describe('Party represents a person or business entity.') -export const invoiceBase = z +export const supplier = z .object({ - id: ulid, - description: z + id: z.string().optional().describe('Unique identifier for the party.'), + name: z .string() - .max(1024) .optional() - - .describe( - 'Optional description of the resource. Maximum 1024 characters.', - ), - labels: labels.optional(), - created_at: dateTime, - updated_at: dateTime, - deleted_at: dateTime.optional(), - number: invoiceNumber, - currency: currencyCode, - supplier: supplier, - customer: invoiceCustomer, - totals: totals, - service_period: closedPeriod, - validation_issues: z - .array(invoiceValidationIssue) - .optional() - - .describe( - 'Validation issues found during invoice processing. Present only when there are one or more validation findings. An empty list is omitted.', - ), - external_ids: invoiceExternalIds.optional(), + .describe('Legal name or representation of the party.'), + tax_id: partyTaxIdentity.optional(), + addresses: partyAddresses.optional(), }) .describe( - 'Base fields shared by all invoice types. Spread this model into each concrete invoice variant.', + "Snapshot of the supplier's information at the time the invoice was issued. Structurally a read-only subset of `BillingParty` (the type configured on the billing profile), so the snapshot stays aligned with the source. `key` is omitted because it is not part of the snapshotted supplier data.", ) -export const creditNoteInvoice = z - .object({ - id: ulid, - description: z - .string() - .max(1024) - .optional() - - .describe( - 'Optional description of the resource. Maximum 1024 characters.', - ), - labels: labels.optional(), - created_at: dateTime, - updated_at: dateTime, - deleted_at: dateTime.optional(), - number: invoiceNumber, - currency: currencyCode, - supplier: supplier, - customer: invoiceCustomer, - totals: totals, - service_period: closedPeriod, - validation_issues: z - .array(invoiceValidationIssue) - .optional() - - .describe( - 'Validation issues found during invoice processing. Present only when there are one or more validation findings. An empty list is omitted.', - ), - external_ids: invoiceExternalIds.optional(), - type: invoiceType, - status: creditNoteInvoiceStatus, - }) - .describe('A credit note invoice.') - export const appStripeCreateCheckoutSessionRequestOptions = z .object({ billing_address_collection: @@ -4341,7 +4262,7 @@ export const taxCodePagePaginatedResponse = z export const invoiceWorkflowSettings = z .object({ - source_billing_profile_id: ulid, + source_billing_profile: profileReference, workflow: invoiceWorkflow, }) @@ -4377,7 +4298,7 @@ export const invoiceDetailedLine = z .array(invoiceLineCreditsApplied) .optional() .describe('Credit applied to this detailed line.'), - external_ids: invoiceLineExternalIds.optional(), + external_references: invoiceLineExternalReferences.optional(), quantity: numeric, unit_price: numeric, }) @@ -4508,6 +4429,41 @@ export const badRequest = z ) .describe('Bad Request.') +export const invoiceBase = z + .object({ + id: ulid, + description: z + .string() + .max(1024) + .optional() + + .describe( + 'Optional description of the resource. Maximum 1024 characters.', + ), + labels: labels.optional(), + created_at: dateTime, + updated_at: dateTime, + deleted_at: dateTime.optional(), + number: invoiceNumber, + currency: currencyCode, + supplier: supplier, + customer: invoiceCustomer, + totals: totals, + service_period: closedPeriod, + validation_issues: z + .array(invoiceValidationIssue) + .optional() + + .describe( + 'Validation issues found during invoice processing. Present only when there are one or more validation findings. An empty list is omitted.', + ), + external_references: invoiceExternalReferences.optional(), + }) + + .describe( + 'Base fields shared by all invoice types. Spread this model into each concrete invoice variant.', + ) + export const customerStripeCreateCheckoutSessionRequest = z .object({ stripe_options: appStripeCreateCheckoutSessionRequestOptions, @@ -4563,7 +4519,7 @@ export const governanceQueryResponse = z }) .describe('Response of the governance query.') -export const flatFeeCharge = z +export const chargeFlatFee = z .object({ id: ulid, name: z @@ -4585,7 +4541,7 @@ export const flatFeeCharge = z deleted_at: dateTime.optional(), type: z.literal('flat_fee').describe('The type of the charge.'), customer: billingCustomerReference, - managed_by: resourceManagedBy, + lifecycle_controller: lifecycleController, subscription: subscriptionReference.optional(), currency: currencyCode, status: chargeStatus, @@ -4601,7 +4557,7 @@ export const flatFeeCharge = z settlement_mode: settlementMode, tax_config: taxConfig.optional(), payment_term: pricePaymentTerm, - discounts: flatFeeDiscounts.optional(), + discounts: chargeFlatFeeDiscounts.optional(), feature_key: z .string() .optional() @@ -4613,7 +4569,7 @@ export const flatFeeCharge = z }) .describe('A flat fee charge for a customer.') -export const usageBasedCharge = z +export const chargeUsageBased = z .object({ id: ulid, name: z @@ -4635,7 +4591,7 @@ export const usageBasedCharge = z deleted_at: dateTime.optional(), type: z.literal('usage_based').describe('The type of the charge.'), customer: billingCustomerReference, - managed_by: resourceManagedBy, + lifecycle_controller: lifecycleController, subscription: subscriptionReference.optional(), currency: currencyCode, status: chargeStatus, @@ -4657,7 +4613,7 @@ export const usageBasedCharge = z }) .describe('A usage-based charge for a customer.') -export const createUsageBasedChargeRequest = z +export const createChargeUsageBasedRequest = z .object({ name: z .string() @@ -4695,10 +4651,7 @@ export const invoiceLineRateCard = z .object({ price: price, tax_config: rateCardTaxConfig.optional(), - feature_key: z - .string() - .optional() - .describe("The feature key associated with this line's rate card."), + feature_key: resourceKey.optional(), discounts: rateCardDiscounts.optional(), }) .describe('Rate card configuration snapshot for a usage-based invoice line.') @@ -4752,13 +4705,13 @@ export const workflow = z .describe('Billing workflow settings.') export const charge = z - .discriminatedUnion('type', [flatFeeCharge, usageBasedCharge]) + .discriminatedUnion('type', [chargeFlatFee, chargeUsageBased]) .describe('Customer charge.') export const createChargeRequest = z .discriminatedUnion('type', [ - createFlatFeeChargeRequest, - createUsageBasedChargeRequest, + createChargeFlatFeeRequest, + createChargeUsageBasedRequest, ]) .describe('Customer charge.') @@ -4785,7 +4738,7 @@ export const invoiceStandardLine = z type: z .literal('standard_line') .describe('The type of charge this line item represents.'), - managed_by: invoiceLineManagedBy, + lifecycle_controller: lifecycleController, service_period: closedPeriod, totals: totals, discounts: invoiceLineDiscounts.optional(), @@ -4793,7 +4746,7 @@ export const invoiceStandardLine = z .array(invoiceLineCreditsApplied) .optional() .describe('Credit applied to this line item.'), - external_ids: invoiceLineExternalIds.optional(), + external_references: invoiceLineExternalReferences.optional(), subscription: subscriptionReference.optional(), rate_card: invoiceLineRateCard, detailed_lines: z @@ -5150,7 +5103,7 @@ export const profilePagePaginatedResponse = z }) .describe('Page paginated response.') -export const standardInvoice = z +export const invoiceStandard = z .object({ id: ulid, description: z @@ -5178,11 +5131,11 @@ export const standardInvoice = z .describe( 'Validation issues found during invoice processing. Present only when there are one or more validation findings. An empty list is omitted.', ), - external_ids: invoiceExternalIds.optional(), + external_references: invoiceExternalReferences.optional(), type: z .literal('standard') .describe('Discriminator field identifying this as a standard invoice.'), - status: standardInvoiceStatus, + status: invoiceStandardStatus, status_details: invoiceStatusDetails, issued_at: dateTime.optional(), draft_until: dateTime.optional(), @@ -5209,10 +5162,10 @@ export const planPagePaginatedResponse = z .describe('Page paginated response.') export const invoice = z - .discriminatedUnion('type', [standardInvoice]) + .discriminatedUnion('type', [invoiceStandard]) .describe( - 'An invoice issued to a customer. The `type` field determines the concrete variant: - `standard`: a standard invoice for charges owed. - `credit_note`: a credit note reducing a previous invoice amount.', + 'An invoice issued to a customer. The `type` field determines the concrete variant: - `standard`: a standard invoice for charges owed.', ) export const listMeteringEventsQueryParams = z.object({ diff --git a/api/spec/packages/aip-client-javascript/src/models/types.ts b/api/spec/packages/aip-client-javascript/src/models/types.ts index 4909eef086..d1c5c856c8 100644 --- a/api/spec/packages/aip-client-javascript/src/models/types.ts +++ b/api/spec/packages/aip-client-javascript/src/models/types.ts @@ -126,7 +126,7 @@ export interface TaxConfigExternalInvoicing { } /** Discounts applicable to flat fee charges. This is the same as `ProductCatalog.Discounts` but without the `usage` field, which is not applicable to flat fee charges. */ -export interface FlatFeeDiscounts { +export interface ChargeFlatFeeDiscounts { /** Percentage discount applied to the price (0–100). */ percentage?: number } @@ -158,9 +158,11 @@ export interface WorkflowPaymentSendInvoiceSettings { } /** External identifiers assigned to an invoice by third-party systems. */ -export interface InvoiceExternalIds { +export interface InvoiceExternalReferences { /** The ID assigned by the external invoicing app (e.g. Stripe invoice ID). */ - invoicing?: string + invoicing_id?: string + /** The ID assigned by the external payment app (e.g. Stripe payment intent ID). */ + payment_id?: string } /** Details about an available invoice action including the resulting state. */ @@ -178,11 +180,9 @@ export interface InvoiceWorkflowInvoicingSettings { } /** External identifiers for an invoice line item assigned by third-party systems. */ -export interface InvoiceLineExternalIds { +export interface InvoiceLineExternalReferences { /** The ID assigned by the external invoicing app. */ - invoicing?: string - /** The ID assigned by the external tax app. */ - tax?: string + invoicing_id?: string } /** LLM Provider */ @@ -1113,24 +1113,6 @@ export interface CustomerUsageAttribution { subject_keys: string[] } -/** Address */ -export interface BillingAddress { - /** Country code in [ISO 3166-1](https://www.iso.org/iso-3166-country-codes.html) alpha-2 format. */ - country?: string - /** Postal code. */ - postal_code?: string - /** State or province. */ - state?: string - /** City. */ - city?: string - /** First line of the address. */ - line1?: string - /** Second line of the address. */ - line2?: string - /** Phone number. */ - phone_number?: string -} - /** Address */ export interface Address { /** Country code in [ISO 3166-1](https://www.iso.org/iso-3166-country-codes.html) alpha-2 format. */ @@ -1462,7 +1444,7 @@ export interface InvoiceLineAmountDiscount { /** Optional human-readable description of the discount. */ description?: string /** External identifiers for this discount. */ - external_ids?: InvoiceLineExternalIds + external_references?: InvoiceLineExternalReferences /** The monetary amount deducted. */ amount: string } @@ -1476,7 +1458,7 @@ export interface InvoiceLineUsageDiscount { /** Optional human-readable description of the discount. */ description?: string /** External identifiers for this discount. */ - external_ids?: InvoiceLineExternalIds + external_references?: InvoiceLineExternalReferences /** The usage quantity deducted (in billing units). */ quantity: string } @@ -1490,7 +1472,7 @@ export interface InvoiceLineBaseDiscount { /** Optional human-readable description of the discount. */ description?: string /** External identifiers for this discount. */ - external_ids?: InvoiceLineExternalIds + external_references?: InvoiceLineExternalReferences } /** Filter options for listing currencies. */ @@ -2272,7 +2254,7 @@ export interface CreateCustomerRequest { /** Currency of the customer. Used for billing, tax and invoicing. */ currency?: string /** The billing address of the customer. Used for tax and invoicing. */ - billing_address?: BillingAddress + billing_address?: Address } /** Customers can be individuals or organizations that can subscribe to plans and have access to features. */ @@ -2297,7 +2279,7 @@ export interface Customer { /** Currency of the customer. Used for billing, tax and invoicing. */ currency?: string /** The billing address of the customer. Used for tax and invoicing. */ - billing_address?: BillingAddress + billing_address?: Address } /** Customer upsert request. */ @@ -2314,21 +2296,7 @@ export interface UpsertCustomerRequest { /** Currency of the customer. Used for billing, tax and invoicing. */ currency?: string /** The billing address of the customer. Used for tax and invoicing. */ - billing_address?: BillingAddress -} - -/** Snapshot of the customer's information at the time the invoice was issued. */ -export interface InvoiceCustomer { - /** Unique identifier for the customer. */ - id: string - /** Optional external resource key for the customer. */ - key?: string - /** Human-readable name of the customer. */ - name: string - /** Optional billing address of the customer. */ - billing_address?: BillingAddress - /** Usage attribution configuration for the customer on this invoice. */ - usage_attribution: CustomerUsageAttribution + billing_address?: Address } /** A collection of addresses for the party. */ @@ -2337,16 +2305,17 @@ export interface PartyAddresses { billing_address: Address } -/** Snapshot of the supplier's information at the time the invoice was issued. */ -export interface Supplier { - /** Unique identifier for the supplier. */ +/** Snapshot of the customer's information at the time the invoice was issued. */ +export interface InvoiceCustomer { id: string - /** Human-readable name of the supplier. */ + /** Display name of the resource. Between 1 and 256 characters. */ name: string - /** Tax identity of the supplier. */ - tax_id?: string - /** Address of the supplier. */ - address: Address + /** Mapping to attribute metered usage to the customer by the event subject. */ + usage_attribution?: CustomerUsageAttribution + /** The billing address of the customer. Used for tax and invoicing. */ + billing_address?: Address + /** Optional external resource key for the customer. Omitted when the customer was created without a key. Unlike on the customer resource itself, the key is optional here because the invoice snapshot may predate or omit it. */ + key?: string } /** Checkout Session consent collection configuration. */ @@ -2696,7 +2665,7 @@ export interface CreditGrant { } /** Flat fee charge create request. */ -export interface CreateFlatFeeChargeRequest { +export interface CreateChargeFlatFeeRequest { /** Display name of the resource. Between 1 and 256 characters. */ name: string /** Optional description of the resource. Maximum 1024 characters. */ @@ -2719,7 +2688,7 @@ export interface CreateFlatFeeChargeRequest { /** Payment term of the flat fee charge. */ payment_term: 'in_advance' | 'in_arrears' /** The discounts applied to the charge. */ - discounts?: FlatFeeDiscounts + discounts?: ChargeFlatFeeDiscounts /** The feature associated with the charge, when applicable. */ feature_key?: string /** The proration configuration of the charge. */ @@ -2805,68 +2774,16 @@ export interface Party { addresses?: PartyAddresses } -/** Base fields shared by all invoice types. Spread this model into each concrete invoice variant. */ -export interface InvoiceBase { - id: string - /** Optional description of the resource. Maximum 1024 characters. */ - description?: string - labels?: Labels - /** An ISO-8601 timestamp representation of entity creation date. */ - created_at: string - /** An ISO-8601 timestamp representation of entity last update date. */ - updated_at: string - /** An ISO-8601 timestamp representation of entity deletion date. */ - deleted_at?: string - /** Human-readable invoice number generated by the invoicing app. */ - number: string - /** Three-letter ISO 4217 currency code for the invoice. */ - currency: string - /** Snapshot of the supplier's contact information at the time the invoice was issued. */ - supplier: Supplier - /** Snapshot of the customer's information at the time the invoice was issued. */ - customer: InvoiceCustomer - /** Aggregated financial totals for the invoice. */ - totals: Totals - /** The service period covered by this invoice. For flat fee the service period can be empty which means `from` will be equals to `to`. In other cases those fields will be filled with the actual service period. */ - service_period: ClosedPeriod - /** Validation issues found during invoice processing. Present only when there are one or more validation findings. An empty list is omitted. */ - validation_issues?: InvoiceValidationIssue[] - /** External identifiers assigned to this invoice by third-party systems. */ - external_ids?: InvoiceExternalIds -} - -/** A credit note invoice. */ -export interface CreditNoteInvoice { - id: string - /** Optional description of the resource. Maximum 1024 characters. */ - description?: string - labels?: Labels - /** An ISO-8601 timestamp representation of entity creation date. */ - created_at: string - /** An ISO-8601 timestamp representation of entity last update date. */ - updated_at: string - /** An ISO-8601 timestamp representation of entity deletion date. */ - deleted_at?: string - /** Human-readable invoice number generated by the invoicing app. */ - number: string - /** Three-letter ISO 4217 currency code for the invoice. */ - currency: string - /** Snapshot of the supplier's contact information at the time the invoice was issued. */ - supplier: Supplier - /** Snapshot of the customer's information at the time the invoice was issued. */ - customer: InvoiceCustomer - /** Aggregated financial totals for the invoice. */ - totals: Totals - /** The service period covered by this invoice. For flat fee the service period can be empty which means `from` will be equals to `to`. In other cases those fields will be filled with the actual service period. */ - service_period: ClosedPeriod - /** Validation issues found during invoice processing. Present only when there are one or more validation findings. An empty list is omitted. */ - validation_issues?: InvoiceValidationIssue[] - /** External identifiers assigned to this invoice by third-party systems. */ - external_ids?: InvoiceExternalIds - /** Discriminator field identifying this as a credit note invoice. */ - type: 'standard' - /** Current lifecycle status of the credit note. */ - status: 'draft' | 'issued' +/** Snapshot of the supplier's information at the time the invoice was issued. Structurally a read-only subset of `BillingParty` (the type configured on the billing profile), so the snapshot stays aligned with the source. `key` is omitted because it is not part of the snapshotted supplier data. */ +export interface Supplier { + /** Unique identifier for the party. */ + id?: string + /** Legal name or representation of the party. */ + name?: string + /** The entity's legal identification used for tax purposes. They may have other numbers, but we're only interested in those valid for tax purposes. */ + tax_id?: PartyTaxIdentity + /** Address for where information should be sent if needed. */ + addresses?: PartyAddresses } /** Configuration options for creating a Stripe Checkout Session. Based on Stripe's [Checkout Session API parameters](https://docs.stripe.com/api/checkout/sessions/create). */ @@ -2913,8 +2830,8 @@ export interface TaxCodePagePaginatedResponse { /** Snapshot of the billing workflow configuration captured at invoice creation. */ export interface InvoiceWorkflowSettings { - /** The ID of the billing profile that was the source of this workflow snapshot. */ - source_billing_profile_id: string + /** The billing profile that was the source of this workflow snapshot. */ + source_billing_profile: ProfileReference /** The workflow configuration that was active when the invoice was created. Only the fields that are meaningful at the per-invoice level are included: invoicing behaviour (auto-advance, draft period) and payment settings (collection method, due date). Profile-wide settings such as collection alignment, progressive billing, and tax policy are omitted. */ workflow: InvoiceWorkflow } @@ -2944,7 +2861,7 @@ export interface InvoiceDetailedLine { /** Credit applied to this detailed line. */ credits_applied?: InvoiceLineCreditsApplied[] /** External identifiers for this detailed line. */ - external_ids?: InvoiceLineExternalIds + external_references?: InvoiceLineExternalReferences /** The quantity of the detailed line. */ quantity: string /** The unit price of the detailed line. */ @@ -3028,6 +2945,36 @@ export interface BadRequest extends BaseError { )[] } +/** Base fields shared by all invoice types. Spread this model into each concrete invoice variant. */ +export interface InvoiceBase { + id: string + /** Optional description of the resource. Maximum 1024 characters. */ + description?: string + labels?: Labels + /** An ISO-8601 timestamp representation of entity creation date. */ + created_at: string + /** An ISO-8601 timestamp representation of entity last update date. */ + updated_at: string + /** An ISO-8601 timestamp representation of entity deletion date. */ + deleted_at?: string + /** Human-readable invoice number generated by the invoicing app. */ + number: string + /** Three-letter ISO 4217 currency code for the invoice. */ + currency: string + /** Snapshot of the supplier's contact information at the time the invoice was issued. */ + supplier: Supplier + /** Snapshot of the customer's information at the time the invoice was issued. */ + customer: InvoiceCustomer + /** Aggregated financial totals for the invoice. */ + totals: Totals + /** The service period covered by this invoice. For flat fee the service period can be empty which means `from` will be equals to `to`. In other cases those fields will be filled with the actual service period. */ + service_period: ClosedPeriod + /** Validation issues found during invoice processing. Present only when there are one or more validation findings. An empty list is omitted. */ + validation_issues?: InvoiceValidationIssue[] + /** External identifiers assigned to this invoice by third-party systems. */ + external_references?: InvoiceExternalReferences +} + /** Request to create a Stripe Checkout Session for the customer. Checkout Sessions are used to collect payment method information from customers in a secure, Stripe-hosted interface. This integration uses setup mode to collect payment methods that can be charged later for subscription billing. */ export interface CustomerStripeCreateCheckoutSessionRequest { /** Options for configuring the Stripe Checkout Session. These options are passed directly to Stripe's [checkout session creation API](https://docs.stripe.com/api/checkout/sessions/create). */ @@ -3071,7 +3018,7 @@ export interface GovernanceQueryResponse { } /** A flat fee charge for a customer. */ -export interface FlatFeeCharge { +export interface ChargeFlatFee { id: string /** Display name of the resource. Between 1 and 256 characters. */ name: string @@ -3088,8 +3035,8 @@ export interface FlatFeeCharge { type: 'flat_fee' /** The customer owning the charge. */ customer: BillingCustomerReference - /** The charge is managed by the following entity. */ - managed_by: 'manual' | 'system' | 'subscription' + /** Indicates whether the charge lifecycle is controlled by OpenMeter or manually overridden by the API user. */ + lifecycle_controller: 'system' | 'manual' /** The subscription that originated the charge, when the charge was created from a subscription item. */ subscription?: SubscriptionReference /** The currency of the charge. */ @@ -3115,7 +3062,7 @@ export interface FlatFeeCharge { /** Payment term of the flat fee charge. */ payment_term: 'in_advance' | 'in_arrears' /** The discounts applied to the charge. */ - discounts?: FlatFeeDiscounts + discounts?: ChargeFlatFeeDiscounts /** The feature associated with the charge, when applicable. */ feature_key?: string /** The proration configuration of the charge. */ @@ -3129,7 +3076,7 @@ export interface FlatFeeCharge { } /** A usage-based charge for a customer. */ -export interface UsageBasedCharge { +export interface ChargeUsageBased { id: string /** Display name of the resource. Between 1 and 256 characters. */ name: string @@ -3146,8 +3093,8 @@ export interface UsageBasedCharge { type: 'usage_based' /** The customer owning the charge. */ customer: BillingCustomerReference - /** The charge is managed by the following entity. */ - managed_by: 'manual' | 'system' | 'subscription' + /** Indicates whether the charge lifecycle is controlled by OpenMeter or manually overridden by the API user. */ + lifecycle_controller: 'system' | 'manual' /** The subscription that originated the charge, when the charge was created from a subscription item. */ subscription?: SubscriptionReference /** The currency of the charge. */ @@ -3181,7 +3128,7 @@ export interface UsageBasedCharge { } /** Usage-based charge create request. */ -export interface CreateUsageBasedChargeRequest { +export interface CreateChargeUsageBasedRequest { /** Display name of the resource. Between 1 and 256 characters. */ name: string /** Optional description of the resource. Maximum 1024 characters. */ @@ -3292,8 +3239,8 @@ export interface InvoiceStandardLine { deleted_at?: string /** The type of charge this line item represents. */ type: 'standard_line' - /** The entity that manages this line item's lifecycle. */ - managed_by: 'subscription' | 'system' | 'manual' + /** Indicates whether this line item's lifecycle is controlled by OpenMeter or manually overridden by the API user. */ + lifecycle_controller: 'system' | 'manual' /** The service period covered by this line item. */ service_period: ClosedPeriod /** Aggregated financial totals for the line item. */ @@ -3303,7 +3250,7 @@ export interface InvoiceStandardLine { /** Credit applied to this line item. */ credits_applied?: InvoiceLineCreditsApplied[] /** External identifiers for this line item assigned by third-party systems. */ - external_ids?: InvoiceLineExternalIds + external_references?: InvoiceLineExternalReferences /** Reference to the subscription item that generated this line. */ subscription?: SubscriptionReference /** The rate card configuration snapshot used to price this line item. */ @@ -3450,7 +3397,7 @@ export interface UpsertBillingProfileRequest { /** Page paginated response. */ export interface ChargePagePaginatedResponse { - data: (FlatFeeCharge | UsageBasedCharge)[] + data: (ChargeFlatFee | ChargeUsageBased)[] meta: PaginatedMeta } @@ -3537,7 +3484,7 @@ export interface ProfilePagePaginatedResponse { } /** A standard invoice for charges owed by the customer. */ -export interface StandardInvoice { +export interface InvoiceStandard { id: string /** Optional description of the resource. Maximum 1024 characters. */ description?: string @@ -3563,7 +3510,7 @@ export interface StandardInvoice { /** Validation issues found during invoice processing. Present only when there are one or more validation findings. An empty list is omitted. */ validation_issues?: InvoiceValidationIssue[] /** External identifiers assigned to this invoice by third-party systems. */ - external_ids?: InvoiceExternalIds + external_references?: InvoiceExternalReferences /** Discriminator field identifying this as a standard invoice. */ type: 'standard' /** Current lifecycle status of the invoice. */ @@ -3928,8 +3875,8 @@ export interface AppStripeCreateCheckoutSessionRequestOptionsInput { } export interface InvoiceWorkflowSettingsInput { - /** The ID of the billing profile that was the source of this workflow snapshot. */ - source_billing_profile_id: string + /** The billing profile that was the source of this workflow snapshot. */ + source_billing_profile: ProfileReference /** The workflow configuration that was active when the invoice was created. Only the fields that are meaningful at the per-invoice level are included: invoicing behaviour (auto-advance, draft period) and payment settings (collection method, due date). Profile-wide settings such as collection alignment, progressive billing, and tax policy are omitted. */ workflow: InvoiceWorkflowInput } @@ -3958,7 +3905,7 @@ export interface InvoiceDetailedLineInput { /** Credit applied to this detailed line. */ credits_applied?: InvoiceLineCreditsApplied[] /** External identifiers for this detailed line. */ - external_ids?: InvoiceLineExternalIds + external_references?: InvoiceLineExternalReferences /** The quantity of the detailed line. */ quantity: string /** The unit price of the detailed line. */ @@ -4053,8 +4000,8 @@ export interface InvoiceStandardLineInput { deleted_at?: string /** The type of charge this line item represents. */ type: 'standard_line' - /** The entity that manages this line item's lifecycle. */ - managed_by: 'subscription' | 'system' | 'manual' + /** Indicates whether this line item's lifecycle is controlled by OpenMeter or manually overridden by the API user. */ + lifecycle_controller: 'system' | 'manual' /** The service period covered by this line item. */ service_period: ClosedPeriod /** Aggregated financial totals for the line item. */ @@ -4064,7 +4011,7 @@ export interface InvoiceStandardLineInput { /** Credit applied to this line item. */ credits_applied?: InvoiceLineCreditsApplied[] /** External identifiers for this line item assigned by third-party systems. */ - external_ids?: InvoiceLineExternalIds + external_references?: InvoiceLineExternalReferences /** Reference to the subscription item that generated this line. */ subscription?: SubscriptionReference /** The rate card configuration snapshot used to price this line item. */ @@ -4279,7 +4226,7 @@ export interface ProfilePagePaginatedResponseInput { meta: PaginatedMeta } -export interface StandardInvoiceInput { +export interface InvoiceStandardInput { id: string /** Optional description of the resource. Maximum 1024 characters. */ description?: string @@ -4305,7 +4252,7 @@ export interface StandardInvoiceInput { /** Validation issues found during invoice processing. Present only when there are one or more validation findings. An empty list is omitted. */ validation_issues?: InvoiceValidationIssue[] /** External identifiers assigned to this invoice by third-party systems. */ - external_ids?: InvoiceExternalIds + external_references?: InvoiceExternalReferences /** Discriminator field identifying this as a standard invoice. */ type: 'standard' /** Current lifecycle status of the invoice. */ diff --git a/api/spec/packages/aip/src/customers/charges/charges.tsp b/api/spec/packages/aip/src/customers/charges/charges.tsp index 3443d6da0a..806a6c66db 100644 --- a/api/spec/packages/aip/src/customers/charges/charges.tsp +++ b/api/spec/packages/aip/src/customers/charges/charges.tsp @@ -45,9 +45,9 @@ enum ChargeStatus { * This is the same as `ProductCatalog.Discounts` but without the `usage` field, * which is not applicable to flat fee charges. */ -@friendlyName("BillingFlatFeeDiscounts") +@friendlyName("BillingChargeFlatFeeDiscounts") @summary("Flat fee charge discounts") -model FlatFeeDiscounts { +model ChargeFlatFeeDiscounts { ...OmitProperties; } @@ -75,11 +75,12 @@ model ChargeBase { customer: CustomerReference; /** - * The charge is managed by the following entity. + * Indicates whether the charge lifecycle is controlled by OpenMeter or manually + * overridden by the API user. */ @visibility(Lifecycle.Read) - @summary("Managed by") - managed_by: Shared.ResourceManagedBy; + @summary("Lifecycle controller") + lifecycle_controller: Shared.LifecycleController; /** * The subscription that originated the charge, when the charge was created from a @@ -165,9 +166,9 @@ model ChargeBase { * A flat fee charge for a customer. */ #suppress "@openmeter/api-spec-aip/repeated-prefix-grouping" "" -@friendlyName("BillingFlatFeeCharge") +@friendlyName("BillingChargeFlatFee") @summary("Flat fee charge") -model FlatFeeCharge { +model ChargeFlatFee { ...ChargeBase; /** @@ -182,7 +183,7 @@ model FlatFeeCharge { */ @visibility(Lifecycle.Read, Lifecycle.Create) @summary("Discounts") - discounts?: FlatFeeDiscounts; + discounts?: ChargeFlatFeeDiscounts; /** * The feature associated with the charge, when applicable. @@ -248,9 +249,9 @@ model ChargeTotals { /** * A usage-based charge for a customer. */ -@friendlyName("BillingUsageBasedCharge") +@friendlyName("BillingChargeUsageBased") @summary("Usage-based charge") -model UsageBasedCharge { +model ChargeUsageBased { ...ChargeBase; /** @@ -294,12 +295,12 @@ union Charge { /** * A flat fee charge. */ - flat_fee: FlatFeeCharge, + flat_fee: ChargeFlatFee, /** * A usage-based charge. */ - usage_based: UsageBasedCharge, + usage_based: ChargeUsageBased, } /** @@ -325,12 +326,12 @@ union CreateCharge { /** * A flat fee charge. */ - flat_fee: CreateFlatFeeCharge, + flat_fee: CreateChargeFlatFee, /** * A usage-based charge. */ - usage_based: CreateUsageBasedCharge, + usage_based: CreateChargeUsageBased, } /** @@ -338,9 +339,9 @@ union CreateCharge { */ @doc("Flat fee charge create request.") @withVisibility(Lifecycle.Create) -@friendlyName("CreateFlatFeeChargeRequest") -model CreateFlatFeeCharge { - ...OmitProperties; +@friendlyName("CreateChargeFlatFeeRequest") +model CreateChargeFlatFee { + ...OmitProperties; /** * The full, unprorated service period of the charge. @@ -362,9 +363,9 @@ model CreateFlatFeeCharge { */ @doc("Usage-based charge create request.") @withVisibility(Lifecycle.Create) -@friendlyName("CreateUsageBasedChargeRequest") -model CreateUsageBasedCharge { - ...OmitProperties; +@friendlyName("CreateChargeUsageBasedRequest") +model CreateChargeUsageBased { + ...OmitProperties; /** * The full, unprorated service period of the charge. @@ -380,3 +381,16 @@ model CreateUsageBasedCharge { @summary("Billing period") billing_period?: Shared.ClosedPeriod; } + +/** + * Reference to a charge associated with an invoice line. + */ +@friendlyName("BillingChargeReference") +model ChargeReference { + /** + * Unique identifier for the charge. + */ + @visibility(Lifecycle.Read) + @summary("ID") + id: Shared.ULID; +} diff --git a/api/spec/packages/aip/src/customers/customer.tsp b/api/spec/packages/aip/src/customers/customer.tsp index 0aa6c2e5ea..1b98366f0f 100644 --- a/api/spec/packages/aip/src/customers/customer.tsp +++ b/api/spec/packages/aip/src/customers/customer.tsp @@ -41,63 +41,7 @@ model Customer { */ @visibility(Lifecycle.Create, Lifecycle.Read, Lifecycle.Update) @summary("Billing Address") - billing_address?: Address; -} - -/** - * Address - */ -@friendlyName("BillingAddress") -model Address { - /** - * Country code in [ISO 3166-1](https://www.iso.org/iso-3166-country-codes.html) - * alpha-2 format. - */ - @visibility(Lifecycle.Create, Lifecycle.Read, Lifecycle.Update) - @summary("Country") - country?: Shared.CountryCode; - - /** - * Postal code. - */ - @visibility(Lifecycle.Create, Lifecycle.Read, Lifecycle.Update) - @summary("Postal Code") - postal_code?: string; - - /** - * State or province. - */ - @visibility(Lifecycle.Create, Lifecycle.Read, Lifecycle.Update) - @summary("State") - state?: string; - - /** - * City. - */ - @visibility(Lifecycle.Create, Lifecycle.Read, Lifecycle.Update) - @summary("City") - city?: string; - - /** - * First line of the address. - */ - @visibility(Lifecycle.Create, Lifecycle.Read, Lifecycle.Update) - @summary("Line 1") - line1?: string; - - /** - * Second line of the address. - */ - @visibility(Lifecycle.Create, Lifecycle.Read, Lifecycle.Update) - @summary("Line 2") - line2?: string; - - /** - * Phone number. - */ - @visibility(Lifecycle.Create, Lifecycle.Read, Lifecycle.Update) - @summary("Phone Number") - phone_number?: string; + billing_address?: Shared.Address; } /** diff --git a/api/spec/packages/aip/src/invoices/invoice.tsp b/api/spec/packages/aip/src/invoices/invoice.tsp index ec6abb4774..e22b220184 100644 --- a/api/spec/packages/aip/src/invoices/invoice.tsp +++ b/api/spec/packages/aip/src/invoices/invoice.tsp @@ -31,13 +31,12 @@ scalar InvoiceNumber extends string; * The `type` field determines the concrete variant: * * - `standard`: a standard invoice for charges owed. - * - `credit_note`: a credit note reducing a previous invoice amount. */ @friendlyName("BillingInvoice") @discriminated(#{ discriminatorPropertyName: "type", envelope: "none" }) -union BillingInvoice { +union Invoice { @summary("Standard invoice") - standard: BillingStandardInvoice, + standard: InvoiceStandard, // @summary("Credit note invoice") // credit_note: BillingCreditNoteInvoice, @@ -47,7 +46,7 @@ union BillingInvoice { * The type of a billing invoice. */ @friendlyName("BillingInvoiceType") -enum BillingInvoiceType { +enum InvoiceType { /** * A standard invoice for charges owed by the customer. */ @@ -65,7 +64,7 @@ enum BillingInvoiceType { * Spread this model into each concrete invoice variant. */ @friendlyName("BillingInvoiceBase") -model BillingInvoiceBase { +model InvoiceBase { ...OmitProperties; /** @@ -73,7 +72,7 @@ model BillingInvoiceBase { */ @visibility(Lifecycle.Read) @summary("Number") - number: Invoices.InvoiceNumber; + number: InvoiceNumber; /** * Three-letter ISO 4217 currency code for the invoice. @@ -88,14 +87,14 @@ model BillingInvoiceBase { */ @visibility(Lifecycle.Read) @summary("Supplier") - supplier: BillingSupplier; + supplier: Supplier; /** * Snapshot of the customer's information at the time the invoice was issued. */ @visibility(Lifecycle.Read) @summary("Customer") - customer: BillingInvoiceCustomer; + customer: InvoiceCustomer; /** * Aggregated financial totals for the invoice. @@ -123,14 +122,14 @@ model BillingInvoiceBase { */ @visibility(Lifecycle.Read) @summary("Validation issues") - validation_issues?: BillingInvoiceValidationIssue[]; + validation_issues?: InvoiceValidationIssue[]; /** * External identifiers assigned to this invoice by third-party systems. */ @visibility(Lifecycle.Read) - @summary("External IDs") - external_ids?: BillingInvoiceExternalIds; + @summary("External references") + external_references?: InvoiceExternalReferences; } /** @@ -142,9 +141,9 @@ model BillingInvoiceBase { */ @friendlyName("BillingInvoiceLine") @discriminated(#{ discriminatorPropertyName: "type", envelope: "none" }) -union BillingInvoiceLine { +union InvoiceLine { @summary("Standard invoice line") - standard_line: BillingInvoiceStandardLine, + standard_line: InvoiceStandardLine, // @summary("Credit note invoice") // credit_note: BillingCreditNoteInvoice, @@ -153,30 +152,30 @@ union BillingInvoiceLine { /** * A standard invoice for charges owed by the customer. */ -@friendlyName("BillingStandardInvoice") -model BillingStandardInvoice { - ...BillingInvoiceBase; +@friendlyName("BillingInvoiceStandard") +model InvoiceStandard { + ...InvoiceBase; /** * Discriminator field identifying this as a standard invoice. */ @visibility(Lifecycle.Read) @summary("Type") - type: BillingInvoiceType.Standard; + type: InvoiceType.Standard; /** * Current lifecycle status of the invoice. */ @visibility(Lifecycle.Read) @summary("Status") - status: BillingStandardInvoiceStatus; + status: InvoiceStandardStatus; /** * Detailed status information including available actions and workflow state. */ @visibility(Lifecycle.Read) @summary("Status details") - status_details: BillingInvoiceStatusDetails; + status_details: InvoiceStatusDetails; /** * Timestamp when the invoice was issued to the customer. @@ -227,7 +226,7 @@ model BillingStandardInvoice { */ @visibility(Lifecycle.Read) @summary("Workflow") - workflow: BillingInvoiceWorkflowSettings; + workflow: InvoiceWorkflowSettings; /** * Line items on this invoice. @@ -237,14 +236,14 @@ model BillingStandardInvoice { */ @visibility(Lifecycle.Read) @summary("Lines") - lines?: BillingInvoiceLine[]; + lines?: InvoiceLine[]; } /** * Lifecycle status of a standard invoice. */ -@friendlyName("BillingStandardInvoiceStatus") -enum BillingStandardInvoiceStatus { +@friendlyName("BillingInvoiceStandardStatus") +enum InvoiceStandardStatus { /** * The invoice is in draft and can still be modified. */ @@ -286,125 +285,92 @@ enum BillingStandardInvoiceStatus { Voided: "voided", } -/** - * A credit note invoice. - * - * @placeholder Credit note domain support is not yet implemented. This model is a - * forward-compatibility placeholder and will be expanded in a future release. - */ -@friendlyName("BillingCreditNoteInvoice") -model BillingCreditNoteInvoice { - ...BillingInvoiceBase; - - /** - * Discriminator field identifying this as a credit note invoice. - */ - @visibility(Lifecycle.Read) - @summary("Type") - type: BillingInvoiceType; - - /** - * Current lifecycle status of the credit note. - */ - @visibility(Lifecycle.Read) - @summary("Status") - status: BillingCreditNoteInvoiceStatus; -} - -/** - * Lifecycle status of a credit note invoice. - */ -@friendlyName("BillingCreditNoteInvoiceStatus") -enum BillingCreditNoteInvoiceStatus { - /** - * The credit note is in draft state. - */ - Draft: "draft", - - /** - * The credit note has been issued. - */ - Issued: "issued", -} +// /** +// * A credit note invoice. +// * +// * @placeholder Credit note domain support is not yet implemented. This model is a +// * forward-compatibility placeholder and will be expanded in a future release. +// */ +// @friendlyName("BillingInvoiceCreditNote") +// model InvoiceCreditNote { +// ...InvoiceBase; + +// /** +// * Discriminator field identifying this as a credit note invoice. +// */ +// @visibility(Lifecycle.Read) +// @summary("Type") +// type: InvoiceType.CreditNote; + +// /** +// * Current lifecycle status of the credit note. +// */ +// @visibility(Lifecycle.Read) +// @summary("Status") +// status: InvoiceStatusCreditNote; +// } + +// /** +// * Lifecycle status of a credit note invoice. +// */ +// @friendlyName("BillingInvoiceStatusCreditNote") +// enum InvoiceStatusCreditNote { +// /** +// * The credit note is in draft state. +// */ +// Draft: "draft", + +// /** +// * The credit note has been issued. +// */ +// Issued: "issued", +// } /** * Snapshot of the customer's information at the time the invoice was issued. */ @friendlyName("BillingInvoiceCustomer") -model BillingInvoiceCustomer { - /** - * Unique identifier for the customer. - */ - @visibility(Lifecycle.Read) - id: Shared.ULID; +@withVisibility(Lifecycle.Read) +model InvoiceCustomer { + ...PickProperties< + Customers.Customer, + "id" | "name" | "usage_attribution" | "billing_address" + >; /** * Optional external resource key for the customer. + * + * Omitted when the customer was created without a key. Unlike on the customer + * resource itself, the key is optional here because the invoice snapshot may + * predate or omit it. */ - @visibility(Lifecycle.Read) key?: Shared.ExternalResourceKey; - - /** - * Human-readable name of the customer. - */ - @visibility(Lifecycle.Read) - name: string; - - /** - * Optional billing address of the customer. - */ - @visibility(Lifecycle.Read) - billing_address?: Customers.Address; - - /** - * Usage attribution configuration for the customer on this invoice. - */ - @visibility(Lifecycle.Read) - @summary("Usage attribution") - usage_attribution: Customers.CustomerUsageAttribution; } /** * Snapshot of the supplier's information at the time the invoice was issued. + * + * Structurally a read-only subset of `BillingParty` (the type configured on the + * billing profile), so the snapshot stays aligned with the source. `key` is + * omitted because it is not part of the snapshotted supplier data. */ @friendlyName("BillingSupplier") -model BillingSupplier { - /** - * Unique identifier for the supplier. - */ - @visibility(Lifecycle.Read) - id: string; - - /** - * Human-readable name of the supplier. - */ - @visibility(Lifecycle.Read, Lifecycle.Create, Lifecycle.Update) - name: string; - - /** - * Tax identity of the supplier. - */ - @visibility(Lifecycle.Read, Lifecycle.Create, Lifecycle.Update) - tax_id?: string; - - /** - * Address of the supplier. - */ - @visibility(Lifecycle.Read, Lifecycle.Create, Lifecycle.Update) - address: Shared.Address; +@withVisibility(Lifecycle.Read) +model Supplier { + ...OmitProperties; } /** * Snapshot of the billing workflow configuration captured at invoice creation. */ @friendlyName("BillingInvoiceWorkflowSettings") -model BillingInvoiceWorkflowSettings { +model InvoiceWorkflowSettings { /** - * The ID of the billing profile that was the source of this workflow snapshot. + * The billing profile that was the source of this workflow snapshot. */ @visibility(Lifecycle.Read) - @summary("Source billing profile ID") - source_billing_profile_id: Shared.ULID; + @summary("Source billing profile") + source_billing_profile: Billing.BillingProfileReference; /** * The workflow configuration that was active when the invoice was created. @@ -471,7 +437,7 @@ model BillingInvoiceWorkflowInvoicingSettings { * Detailed status information for a standard invoice. */ @friendlyName("BillingInvoiceStatusDetails") -model BillingInvoiceStatusDetails { +model InvoiceStatusDetails { /** * Whether the invoice is immutable (i.e. cannot be modified or deleted). */ @@ -499,7 +465,7 @@ model BillingInvoiceStatusDetails { */ @visibility(Lifecycle.Read) @summary("Available actions") - available_actions: BillingInvoiceAvailableActions; + available_actions: InvoiceAvailableActions; } /** @@ -509,48 +475,48 @@ model BillingInvoiceStatusDetails { * A field is present only when that action is permitted from the current state. */ @friendlyName("BillingInvoiceAvailableActions") -model BillingInvoiceAvailableActions { +model InvoiceAvailableActions { /** * Advance the invoice to the next workflow step. */ @visibility(Lifecycle.Read) @summary("Advance") - advance?: BillingInvoiceAvailableActionDetails; + advance?: InvoiceAvailableActionDetails; /** * Approve the invoice for issuance. */ @visibility(Lifecycle.Read) @summary("Approve") - approve?: BillingInvoiceAvailableActionDetails; + approve?: InvoiceAvailableActionDetails; /** * Delete the invoice. */ @visibility(Lifecycle.Read) @summary("Delete") - delete?: BillingInvoiceAvailableActionDetails; + delete?: InvoiceAvailableActionDetails; /** * Retry a failed workflow step. */ @visibility(Lifecycle.Read) @summary("Retry") - retry?: BillingInvoiceAvailableActionDetails; + retry?: InvoiceAvailableActionDetails; /** * Snapshot the current usage quantities. */ @visibility(Lifecycle.Read) @summary("Snapshot quantities") - snapshot_quantities?: BillingInvoiceAvailableActionDetails; + snapshot_quantities?: InvoiceAvailableActionDetails; } /** * Details about an available invoice action including the resulting state. */ @friendlyName("BillingInvoiceAvailableActionDetails") -model BillingInvoiceAvailableActionDetails { +model InvoiceAvailableActionDetails { /** * The extended status the invoice will transition to after performing this action. */ @@ -562,21 +528,28 @@ model BillingInvoiceAvailableActionDetails { /** * External identifiers assigned to an invoice by third-party systems. */ -@friendlyName("BillingInvoiceExternalIds") -model BillingInvoiceExternalIds { +@friendlyName("BillingInvoiceExternalReferences") +model InvoiceExternalReferences { /** * The ID assigned by the external invoicing app (e.g. Stripe invoice ID). */ @visibility(Lifecycle.Read) @summary("Invoicing ID") - invoicing?: string; + invoicing_id?: string; + + /** + * The ID assigned by the external payment app (e.g. Stripe payment intent ID). + */ + @visibility(Lifecycle.Read) + @summary("Payment ID") + payment_id?: string; } /** * Severity level of an invoice validation issue. */ @friendlyName("BillingInvoiceValidationIssueSeverity") -enum BillingInvoiceValidationIssueSeverity { +enum InvoiceValidationIssueSeverity { /** * A critical issue that prevents the invoice from being finalized. */ @@ -596,13 +569,13 @@ enum BillingInvoiceValidationIssueSeverity { * `attributes`, plus a `severity` and optional `field` path. */ @friendlyName("BillingInvoiceValidationIssue") -model BillingInvoiceValidationIssue is Shared.BaseError { +model InvoiceValidationIssue is Shared.BaseError { /** * Severity of the validation issue. */ @visibility(Lifecycle.Read) @summary("Severity") - severity: BillingInvoiceValidationIssueSeverity; + severity: InvoiceValidationIssueSeverity; /** * JSON path to the field that caused this validation issue, if applicable. @@ -618,7 +591,7 @@ model BillingInvoiceValidationIssue is Shared.BaseError { * Line item type discriminator. */ @friendlyName("BillingInvoiceLineType") -enum BillingInvoiceLineType { +enum InvoiceLineType { /** * A standard line item representing a single charge. */ @@ -630,27 +603,6 @@ enum BillingInvoiceLineType { // CreditPurchase: "credit_purchase"; } -/** - * Indicates what entity manages the lifecycle of an invoice line. - */ -@friendlyName("BillingInvoiceLineManagedBy") -enum BillingInvoiceLineManagedBy { - /** - * The line is managed by a subscription. - */ - Subscription: "subscription", - - /** - * The line is managed by the billing system. - */ - System: "system", - - /** - * The line was created manually. - */ - Manual: "manual", -} - /** * A top-level line item on an invoice. * @@ -659,7 +611,7 @@ enum BillingInvoiceLineManagedBy { * present. */ @friendlyName("BillingInvoiceStandardLine") -model BillingInvoiceStandardLine { +model InvoiceStandardLine { ...Shared.Resource; /** @@ -667,14 +619,15 @@ model BillingInvoiceStandardLine { */ @visibility(Lifecycle.Read) @summary("Type") - type: BillingInvoiceLineType.StandardLine; + type: InvoiceLineType.StandardLine; /** - * The entity that manages this line item's lifecycle. + * Indicates whether this line item's lifecycle is controlled by OpenMeter or + * manually overridden by the API user. */ @visibility(Lifecycle.Read) - @summary("Managed by") - managed_by: BillingInvoiceLineManagedBy; + @summary("Lifecycle controller") + lifecycle_controller: Shared.LifecycleController; /** * The service period covered by this line item. @@ -695,21 +648,21 @@ model BillingInvoiceStandardLine { */ @visibility(Lifecycle.Read) @summary("Discounts") - discounts?: BillingInvoiceLineDiscounts; + discounts?: InvoiceLineDiscounts; /** * Credit applied to this line item. */ @visibility(Lifecycle.Read) @summary("Credit applied") - credits_applied?: BillingInvoiceLineCreditsApplied[]; + credits_applied?: InvoiceLineCreditsApplied[]; /** * External identifiers for this line item assigned by third-party systems. */ @visibility(Lifecycle.Read) - @summary("External IDs") - external_ids?: BillingInvoiceLineExternalIds; + @summary("External references") + external_references?: InvoiceLineExternalReferences; /** * Reference to the subscription item that generated this line. @@ -723,7 +676,7 @@ model BillingInvoiceStandardLine { */ @visibility(Lifecycle.Read) @summary("Rate card") - rate_card: BillingInvoiceLineRateCard; + rate_card: InvoiceLineRateCard; /** * Detailed sub-lines that this line has been broken down into. @@ -732,34 +685,21 @@ model BillingInvoiceStandardLine { */ @visibility(Lifecycle.Read) @summary("Detailed lines") - detailed_lines: BillingInvoiceDetailedLine[]; + detailed_lines: InvoiceDetailedLine[]; /** * Reference to the charge associated with this line item. */ @visibility(Lifecycle.Read) @summary("Charge") - charge?: BillingChargeReference; -} - -/** - * Reference to a charge associated with an invoice line. - */ -@friendlyName("BillingChargeReference") -model BillingChargeReference { - /** - * Unique identifier for the charge. - */ - @visibility(Lifecycle.Read) - @summary("ID") - id: Shared.ULID; + charge?: Customers.ChargeReference; } /** * Rate card configuration snapshot for a usage-based invoice line. */ @friendlyName("BillingInvoiceLineRateCard") -model BillingInvoiceLineRateCard { +model InvoiceLineRateCard { /** * The price definition used to calculate charges for this line. */ @@ -779,7 +719,7 @@ model BillingInvoiceLineRateCard { */ @visibility(Lifecycle.Read) @summary("Feature key") - feature_key?: string; + feature_key?: Shared.ResourceKey; /** * Discount configuration from the rate card. @@ -793,27 +733,27 @@ model BillingInvoiceLineRateCard { * Discounts applied to an invoice line item. */ @friendlyName("BillingInvoiceLineDiscounts") -model BillingInvoiceLineDiscounts { +model InvoiceLineDiscounts { /** * Monetary amount discounts (e.g. from maximum spend commitments). */ @visibility(Lifecycle.Read) @summary("Amount discounts") - amount?: BillingInvoiceLineAmountDiscount[]; + amount?: InvoiceLineAmountDiscount[]; /** * Usage quantity discounts (e.g. free tier usage allowances). */ @visibility(Lifecycle.Read) @summary("Usage discounts") - usage?: BillingInvoiceLineUsageDiscount[]; + usage?: InvoiceLineUsageDiscount[]; } /** * The reason a discount was applied to an invoice line. */ @friendlyName("BillingInvoiceDiscountReason") -enum BillingInvoiceDiscountReason { +enum InvoiceDiscountReason { /** * Discount applied because a maximum spend commitment was reached. */ @@ -834,7 +774,7 @@ enum BillingInvoiceDiscountReason { * Base fields shared by all invoice line item discounts. */ @friendlyName("BillingInvoiceLineBaseDiscount") -model BillingInvoiceLineBaseDiscount { +model InvoiceLineBaseDiscount { /** * Unique identifier for the discount. */ @@ -847,7 +787,7 @@ model BillingInvoiceLineBaseDiscount { */ @visibility(Lifecycle.Read) @summary("Reason") - reason: BillingInvoiceDiscountReason; + reason: InvoiceDiscountReason; /** * Optional human-readable description of the discount. @@ -860,16 +800,16 @@ model BillingInvoiceLineBaseDiscount { * External identifiers for this discount. */ @visibility(Lifecycle.Read) - @summary("External IDs") - external_ids?: BillingInvoiceLineExternalIds; + @summary("External references") + external_references?: InvoiceLineExternalReferences; } /** * A monetary amount discount applied to an invoice line item. */ @friendlyName("BillingInvoiceLineAmountDiscount") -model BillingInvoiceLineAmountDiscount { - ...BillingInvoiceLineBaseDiscount; +model InvoiceLineAmountDiscount { + ...InvoiceLineBaseDiscount; /** * The monetary amount deducted. @@ -883,8 +823,8 @@ model BillingInvoiceLineAmountDiscount { * A usage quantity discount applied to an invoice line item. */ @friendlyName("BillingInvoiceLineUsageDiscount") -model BillingInvoiceLineUsageDiscount { - ...BillingInvoiceLineBaseDiscount; +model InvoiceLineUsageDiscount { + ...InvoiceLineBaseDiscount; /** * The usage quantity deducted (in billing units). @@ -898,7 +838,7 @@ model BillingInvoiceLineUsageDiscount { * A credit allocation applied to an invoice line item. */ @friendlyName("BillingInvoiceLineCreditsApplied") -model BillingInvoiceLineCreditsApplied { +model InvoiceLineCreditsApplied { /** * The monetary amount credited. */ @@ -917,28 +857,21 @@ model BillingInvoiceLineCreditsApplied { /** * External identifiers for an invoice line item assigned by third-party systems. */ -@friendlyName("BillingInvoiceLineExternalIds") -model BillingInvoiceLineExternalIds { +@friendlyName("BillingInvoiceLineExternalReferences") +model InvoiceLineExternalReferences { /** * The ID assigned by the external invoicing app. */ @visibility(Lifecycle.Read) @summary("Invoicing ID") - invoicing?: string; - - /** - * The ID assigned by the external tax app. - */ - @visibility(Lifecycle.Read) - @summary("Tax ID") - tax?: string; + invoicing_id?: string; } /** * Cost category of a detailed invoice line item. */ @friendlyName("BillingInvoiceDetailedLineCostCategory") -enum BillingInvoiceDetailedLineCostCategory { +enum InvoiceDetailedLineCostCategory { /** * A regular charge. */ @@ -957,7 +890,7 @@ enum BillingInvoiceDetailedLineCostCategory { * usage-based parent line after quantity snapshotting. */ @friendlyName("BillingInvoiceDetailedLine") -model BillingInvoiceDetailedLine { +model InvoiceDetailedLine { ...Shared.Resource; /** @@ -979,28 +912,28 @@ model BillingInvoiceDetailedLine { */ @visibility(Lifecycle.Read) @summary("Category") - category: BillingInvoiceDetailedLineCostCategory = BillingInvoiceDetailedLineCostCategory.Regular; + category: InvoiceDetailedLineCostCategory = InvoiceDetailedLineCostCategory.Regular; /** * Discounts applied to this detailed line. */ @visibility(Lifecycle.Read) @summary("Discounts") - discounts?: BillingInvoiceLineDiscounts; + discounts?: InvoiceLineDiscounts; /** * Credit applied to this detailed line. */ @visibility(Lifecycle.Read) @summary("Credit applied") - credits_applied?: BillingInvoiceLineCreditsApplied[]; + credits_applied?: InvoiceLineCreditsApplied[]; /** * External identifiers for this detailed line. */ @visibility(Lifecycle.Read) - @summary("External IDs") - external_ids?: BillingInvoiceLineExternalIds; + @summary("External references") + external_references?: InvoiceLineExternalReferences; /** * The quantity of the detailed line. diff --git a/api/spec/packages/aip/src/invoices/operations.tsp b/api/spec/packages/aip/src/invoices/operations.tsp index a40b7e5eb0..5669d1ddfe 100644 --- a/api/spec/packages/aip/src/invoices/operations.tsp +++ b/api/spec/packages/aip/src/invoices/operations.tsp @@ -28,7 +28,7 @@ interface InvoicesOperations { @operationId("get-invoice") @summary("Get a billing invoice") get(@path invoiceId: Shared.ULID): - | Shared.GetResponse + | Shared.GetResponse | Common.NotFound | Common.ErrorResponses; } diff --git a/api/spec/packages/aip/src/shared/enums.tsp b/api/spec/packages/aip/src/shared/enums.tsp index 794c759158..54050b434c 100644 --- a/api/spec/packages/aip/src/shared/enums.tsp +++ b/api/spec/packages/aip/src/shared/enums.tsp @@ -1,18 +1,17 @@ namespace Shared; /** - * Identifies which system manages a resource. + * Identifies whether a resource lifecycle is controlled by OpenMeter or manually + * overridden by the API user. * * Values: * - * - `manual`: The resource is managed manually (overridden by our API users). - * - `system`: The resource is managed by the system. - * - `subscription`: The resource is managed by the subscription. + * - `system`: The resource lifecycle is controlled by OpenMeter. + * - `manual`: The resource lifecycle was manually overridden by the API user. */ -@friendlyName("ResourceManagedBy") -@summary("Resource managed by") -enum ResourceManagedBy { - Manual: "manual", +@friendlyName("BillingLifecycleController") +@summary("Lifecycle controller") +enum LifecycleController { System: "system", - Subscription: "subscription", + Manual: "manual", } diff --git a/api/v3/api.gen.go b/api/v3/api.gen.go index cbf26efeba..c7c23ea94b 100644 --- a/api/v3/api.gen.go +++ b/api/v3/api.gen.go @@ -308,6 +308,21 @@ func (e BillingAppType) Valid() bool { } } +// Defines values for BillingChargeFlatFeeType. +const ( + BillingChargeFlatFeeTypeFlatFee BillingChargeFlatFeeType = "flat_fee" +) + +// Valid indicates whether the value is a known member of the BillingChargeFlatFeeType enum. +func (e BillingChargeFlatFeeType) Valid() bool { + switch e { + case BillingChargeFlatFeeTypeFlatFee: + return true + default: + return false + } +} + // Defines values for BillingChargeStatus. const ( BillingChargeStatusActive BillingChargeStatus = "active" @@ -332,6 +347,21 @@ func (e BillingChargeStatus) Valid() bool { } } +// Defines values for BillingChargeUsageBasedType. +const ( + BillingChargeUsageBasedTypeUsageBased BillingChargeUsageBasedType = "usage_based" +) + +// Valid indicates whether the value is a known member of the BillingChargeUsageBasedType enum. +func (e BillingChargeUsageBasedType) Valid() bool { + switch e { + case BillingChargeUsageBasedTypeUsageBased: + return true + default: + return false + } +} + // Defines values for BillingChargesExpand. const ( BillingChargesExpandRealTimeUsage BillingChargesExpand = "real_time_usage" @@ -581,21 +611,6 @@ func (e BillingFeatureManualUnitCostType) Valid() bool { } } -// Defines values for BillingFlatFeeChargeType. -const ( - BillingFlatFeeChargeTypeFlatFee BillingFlatFeeChargeType = "flat_fee" -) - -// Valid indicates whether the value is a known member of the BillingFlatFeeChargeType enum. -func (e BillingFlatFeeChargeType) Valid() bool { - switch e { - case BillingFlatFeeChargeTypeFlatFee: - return true - default: - return false - } -} - // Defines values for BillingInvoiceDetailedLineCostCategory. const ( BillingInvoiceDetailedLineCostCategoryCommitment BillingInvoiceDetailedLineCostCategory = "commitment" @@ -635,21 +650,15 @@ func (e BillingInvoiceDiscountReason) Valid() bool { } } -// Defines values for BillingInvoiceLineManagedBy. +// Defines values for BillingInvoiceStandardType. const ( - BillingInvoiceLineManagedByManual BillingInvoiceLineManagedBy = "manual" - BillingInvoiceLineManagedBySubscription BillingInvoiceLineManagedBy = "subscription" - BillingInvoiceLineManagedBySystem BillingInvoiceLineManagedBy = "system" + BillingInvoiceStandardTypeStandard BillingInvoiceStandardType = "standard" ) -// Valid indicates whether the value is a known member of the BillingInvoiceLineManagedBy enum. -func (e BillingInvoiceLineManagedBy) Valid() bool { +// Valid indicates whether the value is a known member of the BillingInvoiceStandardType enum. +func (e BillingInvoiceStandardType) Valid() bool { switch e { - case BillingInvoiceLineManagedByManual: - return true - case BillingInvoiceLineManagedBySubscription: - return true - case BillingInvoiceLineManagedBySystem: + case BillingInvoiceStandardTypeStandard: return true default: return false @@ -671,6 +680,42 @@ func (e BillingInvoiceStandardLineType) Valid() bool { } } +// Defines values for BillingInvoiceStandardStatus. +const ( + BillingInvoiceStandardStatusDraft BillingInvoiceStandardStatus = "draft" + BillingInvoiceStandardStatusIssued BillingInvoiceStandardStatus = "issued" + BillingInvoiceStandardStatusIssuing BillingInvoiceStandardStatus = "issuing" + BillingInvoiceStandardStatusOverdue BillingInvoiceStandardStatus = "overdue" + BillingInvoiceStandardStatusPaid BillingInvoiceStandardStatus = "paid" + BillingInvoiceStandardStatusPaymentProcessing BillingInvoiceStandardStatus = "payment_processing" + BillingInvoiceStandardStatusUncollectible BillingInvoiceStandardStatus = "uncollectible" + BillingInvoiceStandardStatusVoided BillingInvoiceStandardStatus = "voided" +) + +// Valid indicates whether the value is a known member of the BillingInvoiceStandardStatus enum. +func (e BillingInvoiceStandardStatus) Valid() bool { + switch e { + case BillingInvoiceStandardStatusDraft: + return true + case BillingInvoiceStandardStatusIssued: + return true + case BillingInvoiceStandardStatusIssuing: + return true + case BillingInvoiceStandardStatusOverdue: + return true + case BillingInvoiceStandardStatusPaid: + return true + case BillingInvoiceStandardStatusPaymentProcessing: + return true + case BillingInvoiceStandardStatusUncollectible: + return true + case BillingInvoiceStandardStatusVoided: + return true + default: + return false + } +} + // Defines values for BillingInvoiceValidationIssueSeverity. const ( BillingInvoiceValidationIssueSeverityCritical BillingInvoiceValidationIssueSeverity = "critical" @@ -689,6 +734,24 @@ func (e BillingInvoiceValidationIssueSeverity) Valid() bool { } } +// Defines values for BillingLifecycleController. +const ( + BillingLifecycleControllerManual BillingLifecycleController = "manual" + BillingLifecycleControllerSystem BillingLifecycleController = "system" +) + +// Valid indicates whether the value is a known member of the BillingLifecycleController enum. +func (e BillingLifecycleController) Valid() bool { + switch e { + case BillingLifecycleControllerManual: + return true + case BillingLifecycleControllerSystem: + return true + default: + return false + } +} + // Defines values for BillingPlanStatus. const ( BillingPlanStatusActive BillingPlanStatus = "active" @@ -887,57 +950,6 @@ func (e BillingSettlementMode) Valid() bool { } } -// Defines values for BillingStandardInvoiceType. -const ( - BillingStandardInvoiceTypeStandard BillingStandardInvoiceType = "standard" -) - -// Valid indicates whether the value is a known member of the BillingStandardInvoiceType enum. -func (e BillingStandardInvoiceType) Valid() bool { - switch e { - case BillingStandardInvoiceTypeStandard: - return true - default: - return false - } -} - -// Defines values for BillingStandardInvoiceStatus. -const ( - BillingStandardInvoiceStatusDraft BillingStandardInvoiceStatus = "draft" - BillingStandardInvoiceStatusIssued BillingStandardInvoiceStatus = "issued" - BillingStandardInvoiceStatusIssuing BillingStandardInvoiceStatus = "issuing" - BillingStandardInvoiceStatusOverdue BillingStandardInvoiceStatus = "overdue" - BillingStandardInvoiceStatusPaid BillingStandardInvoiceStatus = "paid" - BillingStandardInvoiceStatusPaymentProcessing BillingStandardInvoiceStatus = "payment_processing" - BillingStandardInvoiceStatusUncollectible BillingStandardInvoiceStatus = "uncollectible" - BillingStandardInvoiceStatusVoided BillingStandardInvoiceStatus = "voided" -) - -// Valid indicates whether the value is a known member of the BillingStandardInvoiceStatus enum. -func (e BillingStandardInvoiceStatus) Valid() bool { - switch e { - case BillingStandardInvoiceStatusDraft: - return true - case BillingStandardInvoiceStatusIssued: - return true - case BillingStandardInvoiceStatusIssuing: - return true - case BillingStandardInvoiceStatusOverdue: - return true - case BillingStandardInvoiceStatusPaid: - return true - case BillingStandardInvoiceStatusPaymentProcessing: - return true - case BillingStandardInvoiceStatusUncollectible: - return true - case BillingStandardInvoiceStatusVoided: - return true - default: - return false - } -} - // Defines values for BillingSubscriptionEditTimingEnum. const ( BillingSubscriptionEditTimingEnumImmediate BillingSubscriptionEditTimingEnum = "immediate" @@ -1040,21 +1052,6 @@ func (e BillingUnitConfigRoundingMode) Valid() bool { } } -// Defines values for BillingUsageBasedChargeType. -const ( - BillingUsageBasedChargeTypeUsageBased BillingUsageBasedChargeType = "usage_based" -) - -// Valid indicates whether the value is a known member of the BillingUsageBasedChargeType enum. -func (e BillingUsageBasedChargeType) Valid() bool { - switch e { - case BillingUsageBasedChargeTypeUsageBased: - return true - default: - return false - } -} - // Defines values for BillingWorkflowCollectionAlignmentAnchoredType. const ( BillingWorkflowCollectionAlignmentAnchoredTypeAnchored BillingWorkflowCollectionAlignmentAnchoredType = "anchored" @@ -1133,30 +1130,30 @@ func (e BillingWorkflowPaymentSendInvoiceSettingsCollectionMethod) Valid() bool } } -// Defines values for CreateFlatFeeChargeRequestType. +// Defines values for CreateChargeFlatFeeRequestType. const ( - CreateFlatFeeChargeRequestTypeFlatFee CreateFlatFeeChargeRequestType = "flat_fee" + CreateChargeFlatFeeRequestTypeFlatFee CreateChargeFlatFeeRequestType = "flat_fee" ) -// Valid indicates whether the value is a known member of the CreateFlatFeeChargeRequestType enum. -func (e CreateFlatFeeChargeRequestType) Valid() bool { +// Valid indicates whether the value is a known member of the CreateChargeFlatFeeRequestType enum. +func (e CreateChargeFlatFeeRequestType) Valid() bool { switch e { - case CreateFlatFeeChargeRequestTypeFlatFee: + case CreateChargeFlatFeeRequestTypeFlatFee: return true default: return false } } -// Defines values for CreateUsageBasedChargeRequestType. +// Defines values for CreateChargeUsageBasedRequestType. const ( - CreateUsageBasedChargeRequestTypeUsageBased CreateUsageBasedChargeRequestType = "usage_based" + CreateChargeUsageBasedRequestTypeUsageBased CreateChargeUsageBasedRequestType = "usage_based" ) -// Valid indicates whether the value is a known member of the CreateUsageBasedChargeRequestType enum. -func (e CreateUsageBasedChargeRequestType) Valid() bool { +// Valid indicates whether the value is a known member of the CreateChargeUsageBasedRequestType enum. +func (e CreateChargeUsageBasedRequestType) Valid() bool { switch e { - case CreateUsageBasedChargeRequestTypeUsageBased: + case CreateChargeUsageBasedRequestTypeUsageBased: return true default: return false @@ -1460,27 +1457,6 @@ func (e MeteringEventDatacontenttype) Valid() bool { } } -// Defines values for ResourceManagedBy. -const ( - ResourceManagedByManual ResourceManagedBy = "manual" - ResourceManagedBySubscription ResourceManagedBy = "subscription" - ResourceManagedBySystem ResourceManagedBy = "system" -) - -// Valid indicates whether the value is a known member of the ResourceManagedBy enum. -func (e ResourceManagedBy) Valid() bool { - switch e { - case ResourceManagedByManual: - return true - case ResourceManagedBySubscription: - return true - case ResourceManagedBySystem: - return true - default: - return false - } -} - // Addon Add-on allows extending subscriptions with compatible plans with additional // ratecards. type Addon struct { @@ -1668,31 +1644,6 @@ type BaseError struct { Type *string `json:"type,omitempty"` } -// BillingAddress Address -type BillingAddress struct { - // City City. - City *string `json:"city,omitempty"` - - // Country Country code in [ISO 3166-1](https://www.iso.org/iso-3166-country-codes.html) - // alpha-2 format. - Country *CountryCode `json:"country,omitempty"` - - // Line1 First line of the address. - Line1 *string `json:"line1,omitempty"` - - // Line2 Second line of the address. - Line2 *string `json:"line2,omitempty"` - - // PhoneNumber Phone number. - PhoneNumber *string `json:"phone_number,omitempty"` - - // PostalCode Postal code. - PostalCode *string `json:"postal_code,omitempty"` - - // State State or province. - State *string `json:"state,omitempty"` -} - // BillingApp Installed application. type BillingApp struct { union json.RawMessage @@ -2254,6 +2205,109 @@ type BillingCharge struct { union json.RawMessage } +// BillingChargeFlatFee A flat fee charge for a customer. +type BillingChargeFlatFee struct { + // AdvanceAfter The earliest time when the charge should be advanced again by background + // processing. + AdvanceAfter *DateTime `json:"advance_after,omitempty"` + + // AmountAfterProration The amount after proration of the charge. + AmountAfterProration CurrencyAmount `json:"amount_after_proration"` + + // BillingPeriod The billing period the charge belongs to. + BillingPeriod ClosedPeriod `json:"billing_period"` + + // CreatedAt An ISO-8601 timestamp representation of entity creation date. + CreatedAt DateTime `json:"created_at"` + + // Currency The currency of the charge. + Currency CurrencyCode `json:"currency"` + + // Customer The customer owning the charge. + Customer BillingCustomerReference `json:"customer"` + + // DeletedAt An ISO-8601 timestamp representation of entity deletion date. + DeletedAt *DateTime `json:"deleted_at,omitempty"` + + // Description Optional description of the resource. + // + // Maximum 1024 characters. + Description *string `json:"description,omitempty"` + + // Discounts The discounts applied to the charge. + Discounts *BillingChargeFlatFeeDiscounts `json:"discounts,omitempty"` + + // FeatureKey The feature associated with the charge, when applicable. + FeatureKey *string `json:"feature_key,omitempty"` + + // FullServicePeriod The full, unprorated service period of the charge. + FullServicePeriod ClosedPeriod `json:"full_service_period"` + Id ULID `json:"id"` + + // InvoiceAt The timestamp when the charge is intended to be invoiced. + InvoiceAt DateTime `json:"invoice_at"` + + // Labels Labels store metadata of an entity that can be used for filtering an entity list or for searching across entity types. + // + // Keys must be of length 1-63 characters, and cannot start with "kong", "konnect", "mesh", "kic", or "_". + Labels *Labels `json:"labels,omitempty"` + + // LifecycleController Indicates whether the charge lifecycle is controlled by OpenMeter or manually + // overridden by the API user. + LifecycleController BillingLifecycleController `json:"lifecycle_controller"` + + // Name Display name of the resource. + // + // Between 1 and 256 characters. + Name string `json:"name"` + + // PaymentTerm Payment term of the flat fee charge. + PaymentTerm BillingPricePaymentTerm `json:"payment_term"` + + // Price The price of the charge. + Price BillingPrice `json:"price"` + + // ProrationConfiguration The proration configuration of the charge. + ProrationConfiguration BillingRateCardProrationConfiguration `json:"proration_configuration"` + + // ServicePeriod The effective service period covered by the charge. + ServicePeriod ClosedPeriod `json:"service_period"` + + // SettlementMode Settlement mode of the charge. + SettlementMode BillingSettlementMode `json:"settlement_mode"` + + // Status The lifecycle status of the charge. + Status BillingChargeStatus `json:"status"` + + // Subscription The subscription that originated the charge, when the charge was created from a + // subscription item. + Subscription *BillingSubscriptionReference `json:"subscription,omitempty"` + + // TaxConfig Tax configuration of the charge. + TaxConfig *BillingTaxConfig `json:"tax_config,omitempty"` + + // Type The type of the charge. + Type BillingChargeFlatFeeType `json:"type"` + + // UniqueReferenceId Unique reference ID of the charge. + UniqueReferenceId *string `json:"unique_reference_id,omitempty"` + + // UpdatedAt An ISO-8601 timestamp representation of entity last update date. + UpdatedAt DateTime `json:"updated_at"` +} + +// BillingChargeFlatFeeType The type of the charge. +type BillingChargeFlatFeeType string + +// BillingChargeFlatFeeDiscounts Discounts applicable to flat fee charges. +// +// This is the same as `ProductCatalog.Discounts` but without the `usage` field, +// which is not applicable to flat fee charges. +type BillingChargeFlatFeeDiscounts struct { + // Percentage Percentage discount applied to the price (0–100). + Percentage *float32 `json:"percentage,omitempty"` +} + // BillingChargeReference Reference to a charge associated with an invoice line. type BillingChargeReference struct { // Id Unique identifier for the charge. @@ -2283,33 +2337,121 @@ type BillingChargeTotals struct { Realtime *BillingTotals `json:"realtime,omitempty"` } -// BillingChargesExpand Expands for customer charges. -// -// Values: -// -// - `real_time_usage`: The charge's real-time usage. -type BillingChargesExpand string +// BillingChargeUsageBased A usage-based charge for a customer. +type BillingChargeUsageBased struct { + // AdvanceAfter The earliest time when the charge should be advanced again by background + // processing. + AdvanceAfter *DateTime `json:"advance_after,omitempty"` + + // BillingPeriod The billing period the charge belongs to. + BillingPeriod ClosedPeriod `json:"billing_period"` -// 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"` - // 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 be set to - // `now` by the system. - EffectiveFrom *DateTime `json:"effective_from,omitempty"` + // Currency The currency of the charge. + Currency CurrencyCode `json:"currency"` - // FiatCode The fiat currency code for the cost basis. - FiatCode CurrencyCode `json:"fiat_code"` - Id ULID `json:"id"` + // Customer The customer owning the charge. + Customer BillingCustomerReference `json:"customer"` - // Rate The cost rate for the currency. - Rate Numeric `json:"rate"` -} + // DeletedAt An ISO-8601 timestamp representation of entity deletion date. + DeletedAt *DateTime `json:"deleted_at,omitempty"` -// BillingCreditAdjustment A credit adjustment can be used to make manual adjustments to a customer's -// credit balance. + // Description Optional description of the resource. + // + // Maximum 1024 characters. + Description *string `json:"description,omitempty"` + + // Discounts Discounts applied to the usage-based charge. + Discounts *BillingRateCardDiscounts `json:"discounts,omitempty"` + + // FeatureKey The feature associated with the charge. + FeatureKey string `json:"feature_key"` + + // FullServicePeriod The full, unprorated service period of the charge. + FullServicePeriod ClosedPeriod `json:"full_service_period"` + Id ULID `json:"id"` + + // InvoiceAt The timestamp when the charge is intended to be invoiced. + InvoiceAt DateTime `json:"invoice_at"` + + // Labels Labels store metadata of an entity that can be used for filtering an entity list or for searching across entity types. + // + // Keys must be of length 1-63 characters, and cannot start with "kong", "konnect", "mesh", "kic", or "_". + Labels *Labels `json:"labels,omitempty"` + + // LifecycleController Indicates whether the charge lifecycle is controlled by OpenMeter or manually + // overridden by the API user. + LifecycleController BillingLifecycleController `json:"lifecycle_controller"` + + // Name Display name of the resource. + // + // Between 1 and 256 characters. + Name string `json:"name"` + + // Price The price of the charge. + Price BillingPrice `json:"price"` + + // ServicePeriod The effective service period covered by the charge. + ServicePeriod ClosedPeriod `json:"service_period"` + + // SettlementMode Settlement mode of the charge. + SettlementMode BillingSettlementMode `json:"settlement_mode"` + + // Status The lifecycle status of the charge. + Status BillingChargeStatus `json:"status"` + + // Subscription The subscription that originated the charge, when the charge was created from a + // subscription item. + Subscription *BillingSubscriptionReference `json:"subscription,omitempty"` + + // TaxConfig Tax configuration of the charge. + TaxConfig *BillingTaxConfig `json:"tax_config,omitempty"` + + // Totals Aggregated booked and realtime totals for the charge. + Totals BillingChargeTotals `json:"totals"` + + // Type The type of the charge. + Type BillingChargeUsageBasedType `json:"type"` + + // UniqueReferenceId Unique reference ID of the charge. + UniqueReferenceId *string `json:"unique_reference_id,omitempty"` + + // UpdatedAt An ISO-8601 timestamp representation of entity last update date. + UpdatedAt DateTime `json:"updated_at"` +} + +// BillingChargeUsageBasedType The type of the charge. +type BillingChargeUsageBasedType string + +// BillingChargesExpand Expands for customer charges. +// +// Values: +// +// - `real_time_usage`: The charge's real-time usage. +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"` + + // 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 be set to + // `now` by the system. + EffectiveFrom *DateTime `json:"effective_from,omitempty"` + + // FiatCode The fiat currency code for the cost basis. + FiatCode CurrencyCode `json:"fiat_code"` + Id ULID `json:"id"` + + // Rate The cost rate for the currency. + Rate Numeric `json:"rate"` +} + +// BillingCreditAdjustment A credit adjustment can be used to make manual adjustments to a customer's +// credit balance. // // Supported use-cases: // @@ -2629,7 +2771,7 @@ type BillingCurrencyType string // have access to features. type BillingCustomer struct { // BillingAddress The billing address of the customer. Used for tax and invoicing. - BillingAddress *BillingAddress `json:"billing_address,omitempty"` + BillingAddress *Address `json:"billing_address,omitempty"` // CreatedAt An ISO-8601 timestamp representation of entity creation date. CreatedAt DateTime `json:"created_at"` @@ -2819,114 +2961,11 @@ type BillingFeatureUnitCost struct { union json.RawMessage } -// BillingFlatFeeCharge A flat fee charge for a customer. -type BillingFlatFeeCharge struct { - // AdvanceAfter The earliest time when the charge should be advanced again by background - // processing. - AdvanceAfter *DateTime `json:"advance_after,omitempty"` - - // AmountAfterProration The amount after proration of the charge. - AmountAfterProration CurrencyAmount `json:"amount_after_proration"` - - // BillingPeriod The billing period the charge belongs to. - BillingPeriod ClosedPeriod `json:"billing_period"` - - // CreatedAt An ISO-8601 timestamp representation of entity creation date. - CreatedAt DateTime `json:"created_at"` - - // Currency The currency of the charge. - Currency CurrencyCode `json:"currency"` - - // Customer The customer owning the charge. - Customer BillingCustomerReference `json:"customer"` - - // DeletedAt An ISO-8601 timestamp representation of entity deletion date. - DeletedAt *DateTime `json:"deleted_at,omitempty"` - - // Description Optional description of the resource. - // - // Maximum 1024 characters. - Description *string `json:"description,omitempty"` - - // Discounts The discounts applied to the charge. - Discounts *BillingFlatFeeDiscounts `json:"discounts,omitempty"` - - // FeatureKey The feature associated with the charge, when applicable. - FeatureKey *string `json:"feature_key,omitempty"` - - // FullServicePeriod The full, unprorated service period of the charge. - FullServicePeriod ClosedPeriod `json:"full_service_period"` - Id ULID `json:"id"` - - // InvoiceAt The timestamp when the charge is intended to be invoiced. - InvoiceAt DateTime `json:"invoice_at"` - - // Labels Labels store metadata of an entity that can be used for filtering an entity list or for searching across entity types. - // - // Keys must be of length 1-63 characters, and cannot start with "kong", "konnect", "mesh", "kic", or "_". - Labels *Labels `json:"labels,omitempty"` - - // ManagedBy The charge is managed by the following entity. - ManagedBy ResourceManagedBy `json:"managed_by"` - - // Name Display name of the resource. - // - // Between 1 and 256 characters. - Name string `json:"name"` - - // PaymentTerm Payment term of the flat fee charge. - PaymentTerm BillingPricePaymentTerm `json:"payment_term"` - - // Price The price of the charge. - Price BillingPrice `json:"price"` - - // ProrationConfiguration The proration configuration of the charge. - ProrationConfiguration BillingRateCardProrationConfiguration `json:"proration_configuration"` - - // ServicePeriod The effective service period covered by the charge. - ServicePeriod ClosedPeriod `json:"service_period"` - - // SettlementMode Settlement mode of the charge. - SettlementMode BillingSettlementMode `json:"settlement_mode"` - - // Status The lifecycle status of the charge. - Status BillingChargeStatus `json:"status"` - - // Subscription The subscription that originated the charge, when the charge was created from a - // subscription item. - Subscription *BillingSubscriptionReference `json:"subscription,omitempty"` - - // TaxConfig Tax configuration of the charge. - TaxConfig *BillingTaxConfig `json:"tax_config,omitempty"` - - // Type The type of the charge. - Type BillingFlatFeeChargeType `json:"type"` - - // UniqueReferenceId Unique reference ID of the charge. - UniqueReferenceId *string `json:"unique_reference_id,omitempty"` - - // UpdatedAt An ISO-8601 timestamp representation of entity last update date. - UpdatedAt DateTime `json:"updated_at"` -} - -// BillingFlatFeeChargeType The type of the charge. -type BillingFlatFeeChargeType string - -// BillingFlatFeeDiscounts Discounts applicable to flat fee charges. -// -// This is the same as `ProductCatalog.Discounts` but without the `usage` field, -// which is not applicable to flat fee charges. -type BillingFlatFeeDiscounts struct { - // Percentage Percentage discount applied to the price (0–100). - Percentage *float32 `json:"percentage,omitempty"` -} - // BillingInvoice An invoice issued to a customer. // // The `type` field determines the concrete variant: // // - `standard`: a standard invoice for charges owed. -// - `credit_note`: a credit note reducing a previous invoice amount. type BillingInvoice struct { union json.RawMessage } @@ -2960,20 +2999,26 @@ type BillingInvoiceAvailableActions struct { // BillingInvoiceCustomer Snapshot of the customer's information at the time the invoice was issued. type BillingInvoiceCustomer struct { - // BillingAddress Optional billing address of the customer. - BillingAddress *BillingAddress `json:"billing_address,omitempty"` + // BillingAddress The billing address of the customer. Used for tax and invoicing. + BillingAddress *Address `json:"billing_address,omitempty"` - // Id Unique identifier for the customer. + // Id ULID (Universally Unique Lexicographically Sortable Identifier). Id ULID `json:"id"` // Key Optional external resource key for the customer. + // + // Omitted when the customer was created without a key. Unlike on the customer + // resource itself, the key is optional here because the invoice snapshot may + // predate or omit it. Key *ExternalResourceKey `json:"key,omitempty"` - // Name Human-readable name of the customer. + // Name Display name of the resource. + // + // Between 1 and 256 characters. Name string `json:"name"` - // UsageAttribution Usage attribution configuration for the customer on this invoice. - UsageAttribution BillingCustomerUsageAttribution `json:"usage_attribution"` + // UsageAttribution Mapping to attribute metered usage to the customer by the event subject. + UsageAttribution *BillingCustomerUsageAttribution `json:"usage_attribution,omitempty"` } // BillingInvoiceDetailedLine A detailed (child) sub-line belonging to a parent invoice line. @@ -3001,9 +3046,9 @@ type BillingInvoiceDetailedLine struct { // Discounts Discounts applied to this detailed line. Discounts *BillingInvoiceLineDiscounts `json:"discounts,omitempty"` - // ExternalIds External identifiers for this detailed line. - ExternalIds *BillingInvoiceLineExternalIds `json:"external_ids,omitempty"` - Id ULID `json:"id"` + // ExternalReferences External identifiers for this detailed line. + ExternalReferences *BillingInvoiceLineExternalReferences `json:"external_references,omitempty"` + Id ULID `json:"id"` // Labels Labels store metadata of an entity that can be used for filtering an entity list or for searching across entity types. // @@ -3037,10 +3082,13 @@ type BillingInvoiceDetailedLineCostCategory string // BillingInvoiceDiscountReason The reason a discount was applied to an invoice line. type BillingInvoiceDiscountReason string -// BillingInvoiceExternalIds External identifiers assigned to an invoice by third-party systems. -type BillingInvoiceExternalIds struct { - // Invoicing The ID assigned by the external invoicing app (e.g. Stripe invoice ID). - Invoicing *string `json:"invoicing,omitempty"` +// BillingInvoiceExternalReferences External identifiers assigned to an invoice by third-party systems. +type BillingInvoiceExternalReferences struct { + // InvoicingId The ID assigned by the external invoicing app (e.g. Stripe invoice ID). + InvoicingId *string `json:"invoicing_id,omitempty"` + + // PaymentId The ID assigned by the external payment app (e.g. Stripe payment intent ID). + PaymentId *string `json:"payment_id,omitempty"` } // BillingInvoiceLine A top-level line item on an invoice. @@ -3060,8 +3108,8 @@ type BillingInvoiceLineAmountDiscount struct { // Description Optional human-readable description of the discount. Description *string `json:"description,omitempty"` - // ExternalIds External identifiers for this discount. - ExternalIds *BillingInvoiceLineExternalIds `json:"external_ids,omitempty"` + // ExternalReferences External identifiers for this discount. + ExternalReferences *BillingInvoiceLineExternalReferences `json:"external_references,omitempty"` // Id Unique identifier for the discount. Id ULID `json:"id"` @@ -3088,25 +3136,19 @@ type BillingInvoiceLineDiscounts struct { Usage *[]BillingInvoiceLineUsageDiscount `json:"usage,omitempty"` } -// BillingInvoiceLineExternalIds External identifiers for an invoice line item assigned by third-party systems. -type BillingInvoiceLineExternalIds struct { - // Invoicing The ID assigned by the external invoicing app. - Invoicing *string `json:"invoicing,omitempty"` - - // Tax The ID assigned by the external tax app. - Tax *string `json:"tax,omitempty"` +// BillingInvoiceLineExternalReferences External identifiers for an invoice line item assigned by third-party systems. +type BillingInvoiceLineExternalReferences struct { + // InvoicingId The ID assigned by the external invoicing app. + InvoicingId *string `json:"invoicing_id,omitempty"` } -// BillingInvoiceLineManagedBy Indicates what entity manages the lifecycle of an invoice line. -type BillingInvoiceLineManagedBy string - // BillingInvoiceLineRateCard Rate card configuration snapshot for a usage-based invoice line. type BillingInvoiceLineRateCard struct { // Discounts Discount configuration from the rate card. Discounts *BillingRateCardDiscounts `json:"discounts,omitempty"` // FeatureKey The feature key associated with this line's rate card. - FeatureKey *string `json:"feature_key,omitempty"` + FeatureKey *ResourceKey `json:"feature_key,omitempty"` // Price The price definition used to calculate charges for this line. Price BillingPrice `json:"price"` @@ -3120,8 +3162,8 @@ type BillingInvoiceLineUsageDiscount struct { // Description Optional human-readable description of the discount. Description *string `json:"description,omitempty"` - // ExternalIds External identifiers for this discount. - ExternalIds *BillingInvoiceLineExternalIds `json:"external_ids,omitempty"` + // ExternalReferences External identifiers for this discount. + ExternalReferences *BillingInvoiceLineExternalReferences `json:"external_references,omitempty"` // Id Unique identifier for the discount. Id ULID `json:"id"` @@ -3143,6 +3185,102 @@ type BillingInvoiceLineUsageDiscount struct { // prefix) type BillingInvoiceNumber = string +// BillingInvoiceStandard A standard invoice for charges owed by the customer. +type BillingInvoiceStandard struct { + // CollectionAt Timestamp when collection was initiated for this invoice. + CollectionAt *DateTime `json:"collection_at,omitempty"` + + // CreatedAt An ISO-8601 timestamp representation of entity creation date. + CreatedAt DateTime `json:"created_at"` + + // Currency Three-letter ISO 4217 currency code for the invoice. + Currency CurrencyCode `json:"currency"` + + // Customer Snapshot of the customer's information at the time the invoice was issued. + Customer BillingInvoiceCustomer `json:"customer"` + + // DeletedAt An ISO-8601 timestamp representation of entity deletion date. + DeletedAt *DateTime `json:"deleted_at,omitempty"` + + // Description Optional description of the resource. + // + // Maximum 1024 characters. + Description *string `json:"description,omitempty"` + + // DraftUntil Timestamp until which the invoice remains in draft state. + // + // The invoice advances automatically once this time is reached. + DraftUntil *DateTime `json:"draft_until,omitempty"` + + // DueAt Timestamp when payment is due. + DueAt *DateTime `json:"due_at,omitempty"` + + // ExternalReferences External identifiers assigned to this invoice by third-party systems. + ExternalReferences *BillingInvoiceExternalReferences `json:"external_references,omitempty"` + Id ULID `json:"id"` + + // IssuedAt Timestamp when the invoice was issued to the customer. + IssuedAt *DateTime `json:"issued_at,omitempty"` + + // Labels Labels store metadata of an entity that can be used for filtering an entity list or for searching across entity types. + // + // Keys must be of length 1-63 characters, and cannot start with "kong", "konnect", "mesh", "kic", or "_". + Labels *Labels `json:"labels,omitempty"` + + // Lines Line items on this invoice. + // + // Always returned on single-resource GET; omitted on list endpoints unless + // explicitly expanded. + Lines *[]BillingInvoiceLine `json:"lines,omitempty"` + + // Number Human-readable invoice number generated by the invoicing app. + Number BillingInvoiceNumber `json:"number"` + + // QuantitySnapshottedAt Timestamp when usage quantities were last snapshotted for this invoice. + QuantitySnapshottedAt *DateTime `json:"quantity_snapshotted_at,omitempty"` + + // SentToCustomerAt Timestamp when the invoice was sent to the customer. + SentToCustomerAt *DateTime `json:"sent_to_customer_at,omitempty"` + + // ServicePeriod The service period covered by this invoice. + // + // For flat fee the service period can be empty which means `from` will be equals + // to `to`. In other cases those fields will be filled with the actual service + // period. + ServicePeriod ClosedPeriod `json:"service_period"` + + // Status Current lifecycle status of the invoice. + Status BillingInvoiceStandardStatus `json:"status"` + + // StatusDetails Detailed status information including available actions and workflow state. + StatusDetails BillingInvoiceStatusDetails `json:"status_details"` + + // Supplier Snapshot of the supplier's contact information at the time the invoice was + // issued. + Supplier BillingSupplier `json:"supplier"` + + // Totals Aggregated financial totals for the invoice. + Totals BillingTotals `json:"totals"` + + // Type Discriminator field identifying this as a standard invoice. + Type BillingInvoiceStandardType `json:"type"` + + // UpdatedAt An ISO-8601 timestamp representation of entity last update date. + UpdatedAt DateTime `json:"updated_at"` + + // ValidationIssues Validation issues found during invoice processing. + // + // Present only when there are one or more validation findings. An empty list is + // omitted. + ValidationIssues *[]BillingInvoiceValidationIssue `json:"validation_issues,omitempty"` + + // Workflow Workflow configuration snapshot captured at invoice creation time. + Workflow BillingInvoiceWorkflowSettings `json:"workflow"` +} + +// BillingInvoiceStandardType Discriminator field identifying this as a standard invoice. +type BillingInvoiceStandardType string + // BillingInvoiceStandardLine A top-level line item on an invoice. // // Each line represents a single charge, typically associated with a rate card from @@ -3174,17 +3312,18 @@ type BillingInvoiceStandardLine struct { // Discounts Discounts applied to this line item. Discounts *BillingInvoiceLineDiscounts `json:"discounts,omitempty"` - // ExternalIds External identifiers for this line item assigned by third-party systems. - ExternalIds *BillingInvoiceLineExternalIds `json:"external_ids,omitempty"` - Id ULID `json:"id"` + // ExternalReferences External identifiers for this line item assigned by third-party systems. + ExternalReferences *BillingInvoiceLineExternalReferences `json:"external_references,omitempty"` + Id ULID `json:"id"` // Labels Labels store metadata of an entity that can be used for filtering an entity list or for searching across entity types. // // Keys must be of length 1-63 characters, and cannot start with "kong", "konnect", "mesh", "kic", or "_". Labels *Labels `json:"labels,omitempty"` - // ManagedBy The entity that manages this line item's lifecycle. - ManagedBy BillingInvoiceLineManagedBy `json:"managed_by"` + // LifecycleController Indicates whether this line item's lifecycle is controlled by OpenMeter or + // manually overridden by the API user. + LifecycleController BillingLifecycleController `json:"lifecycle_controller"` // Name Display name of the resource. // @@ -3213,6 +3352,9 @@ type BillingInvoiceStandardLine struct { // BillingInvoiceStandardLineType The type of charge this line item represents. type BillingInvoiceStandardLineType string +// BillingInvoiceStandardStatus Lifecycle status of a standard invoice. +type BillingInvoiceStandardStatus string + // BillingInvoiceStatusDetails Detailed status information for a standard invoice. type BillingInvoiceStatusDetails struct { // AvailableActions The set of state-transition actions currently available for this invoice. @@ -3284,8 +3426,8 @@ type BillingInvoiceWorkflowInvoicingSettings struct { // BillingInvoiceWorkflowSettings Snapshot of the billing workflow configuration captured at invoice creation. type BillingInvoiceWorkflowSettings struct { - // SourceBillingProfileId The ID of the billing profile that was the source of this workflow snapshot. - SourceBillingProfileId ULID `json:"source_billing_profile_id"` + // SourceBillingProfile The billing profile that was the source of this workflow snapshot. + SourceBillingProfile BillingProfileReference `json:"source_billing_profile"` // Workflow The workflow configuration that was active when the invoice was created. // @@ -3296,6 +3438,15 @@ type BillingInvoiceWorkflowSettings struct { Workflow BillingInvoiceWorkflow `json:"workflow"` } +// BillingLifecycleController Identifies whether a resource lifecycle is controlled by OpenMeter or manually +// overridden by the API user. +// +// Values: +// +// - `system`: The resource lifecycle is controlled by OpenMeter. +// - `manual`: The resource lifecycle was manually overridden by the API user. +type BillingLifecycleController string + // BillingParty Party represents a person or business entity. type BillingParty struct { // Addresses Address for where information should be sent if needed. @@ -3778,105 +3929,6 @@ type BillingSpendCommitments struct { MinimumAmount *Numeric `json:"minimum_amount,omitempty"` } -// BillingStandardInvoice A standard invoice for charges owed by the customer. -type BillingStandardInvoice struct { - // CollectionAt Timestamp when collection was initiated for this invoice. - CollectionAt *DateTime `json:"collection_at,omitempty"` - - // CreatedAt An ISO-8601 timestamp representation of entity creation date. - CreatedAt DateTime `json:"created_at"` - - // Currency Three-letter ISO 4217 currency code for the invoice. - Currency CurrencyCode `json:"currency"` - - // Customer Snapshot of the customer's information at the time the invoice was issued. - Customer BillingInvoiceCustomer `json:"customer"` - - // DeletedAt An ISO-8601 timestamp representation of entity deletion date. - DeletedAt *DateTime `json:"deleted_at,omitempty"` - - // Description Optional description of the resource. - // - // Maximum 1024 characters. - Description *string `json:"description,omitempty"` - - // DraftUntil Timestamp until which the invoice remains in draft state. - // - // The invoice advances automatically once this time is reached. - DraftUntil *DateTime `json:"draft_until,omitempty"` - - // DueAt Timestamp when payment is due. - DueAt *DateTime `json:"due_at,omitempty"` - - // ExternalIds External identifiers assigned to this invoice by third-party systems. - ExternalIds *BillingInvoiceExternalIds `json:"external_ids,omitempty"` - Id ULID `json:"id"` - - // IssuedAt Timestamp when the invoice was issued to the customer. - IssuedAt *DateTime `json:"issued_at,omitempty"` - - // Labels Labels store metadata of an entity that can be used for filtering an entity list or for searching across entity types. - // - // Keys must be of length 1-63 characters, and cannot start with "kong", "konnect", "mesh", "kic", or "_". - Labels *Labels `json:"labels,omitempty"` - - // Lines Line items on this invoice. - // - // Always returned on single-resource GET; omitted on list endpoints unless - // explicitly expanded. - Lines *[]BillingInvoiceLine `json:"lines,omitempty"` - - // Number Human-readable invoice number generated by the invoicing app. - Number BillingInvoiceNumber `json:"number"` - - // QuantitySnapshottedAt Timestamp when usage quantities were last snapshotted for this invoice. - QuantitySnapshottedAt *DateTime `json:"quantity_snapshotted_at,omitempty"` - - // SentToCustomerAt Timestamp when the invoice was sent to the customer. - SentToCustomerAt *DateTime `json:"sent_to_customer_at,omitempty"` - - // ServicePeriod The service period covered by this invoice. - // - // For flat fee the service period can be empty which means `from` will be equals - // to `to`. In other cases those fields will be filled with the actual service - // period. - ServicePeriod ClosedPeriod `json:"service_period"` - - // Status Current lifecycle status of the invoice. - Status BillingStandardInvoiceStatus `json:"status"` - - // StatusDetails Detailed status information including available actions and workflow state. - StatusDetails BillingInvoiceStatusDetails `json:"status_details"` - - // Supplier Snapshot of the supplier's contact information at the time the invoice was - // issued. - Supplier BillingSupplier `json:"supplier"` - - // Totals Aggregated financial totals for the invoice. - Totals BillingTotals `json:"totals"` - - // Type Discriminator field identifying this as a standard invoice. - Type BillingStandardInvoiceType `json:"type"` - - // UpdatedAt An ISO-8601 timestamp representation of entity last update date. - UpdatedAt DateTime `json:"updated_at"` - - // ValidationIssues Validation issues found during invoice processing. - // - // Present only when there are one or more validation findings. An empty list is - // omitted. - ValidationIssues *[]BillingInvoiceValidationIssue `json:"validation_issues,omitempty"` - - // Workflow Workflow configuration snapshot captured at invoice creation time. - Workflow BillingInvoiceWorkflowSettings `json:"workflow"` -} - -// BillingStandardInvoiceType Discriminator field identifying this as a standard invoice. -type BillingStandardInvoiceType string - -// BillingStandardInvoiceStatus Lifecycle status of a standard invoice. -type BillingStandardInvoiceStatus string - // BillingSubscription Subscription. type BillingSubscription struct { // BillingAnchor A billing anchor is the fixed point in time that determines the subscription's @@ -4105,18 +4157,23 @@ type BillingSubscriptionReference struct { type BillingSubscriptionStatus string // BillingSupplier Snapshot of the supplier's information at the time the invoice was issued. +// +// Structurally a read-only subset of `BillingParty` (the type configured on the +// billing profile), so the snapshot stays aligned with the source. `key` is +// omitted because it is not part of the snapshotted supplier data. type BillingSupplier struct { - // Address Address of the supplier. - Address Address `json:"address"` + // Addresses Address for where information should be sent if needed. + Addresses *BillingPartyAddresses `json:"addresses,omitempty"` - // Id Unique identifier for the supplier. - Id string `json:"id"` + // Id Unique identifier for the party. + Id *string `json:"id,omitempty"` - // Name Human-readable name of the supplier. - Name string `json:"name"` + // Name Legal name or representation of the party. + Name *string `json:"name,omitempty"` - // TaxId Tax identity of the supplier. - TaxId *string `json:"tax_id,omitempty"` + // TaxId The entity's legal identification used for tax purposes. They may have other + // numbers, but we're only interested in those valid for tax purposes. + TaxId *BillingPartyTaxIdentity `json:"tax_id,omitempty"` } // BillingTaxBehavior Tax behavior. @@ -4276,127 +4333,40 @@ type BillingUnitConfig struct { // Optional. When omitted, no unit label is rendered. DisplayUnit *string `json:"display_unit,omitempty"` - // Operation The arithmetic operation to apply to the raw metered quantity. - Operation BillingUnitConfigOperation `json:"operation"` - - // Precision The number of decimal places to retain after rounding. - // - // Only meaningful when rounding is not "none". Defaults to 0 (round to whole - // numbers). - Precision *int `json:"precision,omitempty"` - - // Rounding The rounding mode applied to the converted quantity for invoicing. - // - // Defaults to none (no rounding). Entitlement checks always use the precise - // (unrounded) value. - Rounding *BillingUnitConfigRoundingMode `json:"rounding,omitempty"` -} - -// BillingUnitConfigOperation The arithmetic operation used to convert raw metered units into billing units. -// -// - `divide`: Divide the metered quantity by the conversion factor (e.g., bytes ÷ -// 1e9 = GB). -// - `multiply`: Multiply the metered quantity by the conversion factor (e.g., cost -// × 1.2 = cost + 20% margin). -type BillingUnitConfigOperation string - -// BillingUnitConfigRoundingMode The rounding mode applied to the converted quantity for invoicing. -// -// Rounding is applied only to the invoiced quantity. Entitlement balance checks -// use the precise decimal value after conversion. -// -// - `ceiling`: Round up to the next integer (typical for package-style billing). -// - `floor`: Round down to the previous integer. -// - `half_up`: Round to the nearest integer, with 0.5 rounding up. -// - `none`: No rounding; the converted value is used as-is. -type BillingUnitConfigRoundingMode string - -// BillingUsageBasedCharge A usage-based charge for a customer. -type BillingUsageBasedCharge struct { - // AdvanceAfter The earliest time when the charge should be advanced again by background - // processing. - AdvanceAfter *DateTime `json:"advance_after,omitempty"` - - // BillingPeriod The billing period the charge belongs to. - BillingPeriod ClosedPeriod `json:"billing_period"` - - // CreatedAt An ISO-8601 timestamp representation of entity creation date. - CreatedAt DateTime `json:"created_at"` - - // Currency The currency of the charge. - Currency CurrencyCode `json:"currency"` - - // Customer The customer owning the charge. - Customer BillingCustomerReference `json:"customer"` - - // DeletedAt An ISO-8601 timestamp representation of entity deletion date. - DeletedAt *DateTime `json:"deleted_at,omitempty"` - - // Description Optional description of the resource. - // - // Maximum 1024 characters. - Description *string `json:"description,omitempty"` - - // Discounts Discounts applied to the usage-based charge. - Discounts *BillingRateCardDiscounts `json:"discounts,omitempty"` - - // FeatureKey The feature associated with the charge. - FeatureKey string `json:"feature_key"` - - // FullServicePeriod The full, unprorated service period of the charge. - FullServicePeriod ClosedPeriod `json:"full_service_period"` - Id ULID `json:"id"` - - // InvoiceAt The timestamp when the charge is intended to be invoiced. - InvoiceAt DateTime `json:"invoice_at"` - - // Labels Labels store metadata of an entity that can be used for filtering an entity list or for searching across entity types. - // - // Keys must be of length 1-63 characters, and cannot start with "kong", "konnect", "mesh", "kic", or "_". - Labels *Labels `json:"labels,omitempty"` - - // ManagedBy The charge is managed by the following entity. - ManagedBy ResourceManagedBy `json:"managed_by"` - - // Name Display name of the resource. - // - // Between 1 and 256 characters. - Name string `json:"name"` - - // Price The price of the charge. - Price BillingPrice `json:"price"` - - // ServicePeriod The effective service period covered by the charge. - ServicePeriod ClosedPeriod `json:"service_period"` - - // SettlementMode Settlement mode of the charge. - SettlementMode BillingSettlementMode `json:"settlement_mode"` - - // Status The lifecycle status of the charge. - Status BillingChargeStatus `json:"status"` - - // Subscription The subscription that originated the charge, when the charge was created from a - // subscription item. - Subscription *BillingSubscriptionReference `json:"subscription,omitempty"` - - // TaxConfig Tax configuration of the charge. - TaxConfig *BillingTaxConfig `json:"tax_config,omitempty"` - - // Totals Aggregated booked and realtime totals for the charge. - Totals BillingChargeTotals `json:"totals"` - - // Type The type of the charge. - Type BillingUsageBasedChargeType `json:"type"` + // Operation The arithmetic operation to apply to the raw metered quantity. + Operation BillingUnitConfigOperation `json:"operation"` - // UniqueReferenceId Unique reference ID of the charge. - UniqueReferenceId *string `json:"unique_reference_id,omitempty"` + // Precision The number of decimal places to retain after rounding. + // + // Only meaningful when rounding is not "none". Defaults to 0 (round to whole + // numbers). + Precision *int `json:"precision,omitempty"` - // UpdatedAt An ISO-8601 timestamp representation of entity last update date. - UpdatedAt DateTime `json:"updated_at"` + // Rounding The rounding mode applied to the converted quantity for invoicing. + // + // Defaults to none (no rounding). Entitlement checks always use the precise + // (unrounded) value. + Rounding *BillingUnitConfigRoundingMode `json:"rounding,omitempty"` } -// BillingUsageBasedChargeType The type of the charge. -type BillingUsageBasedChargeType string +// BillingUnitConfigOperation The arithmetic operation used to convert raw metered units into billing units. +// +// - `divide`: Divide the metered quantity by the conversion factor (e.g., bytes ÷ +// 1e9 = GB). +// - `multiply`: Multiply the metered quantity by the conversion factor (e.g., cost +// × 1.2 = cost + 20% margin). +type BillingUnitConfigOperation string + +// BillingUnitConfigRoundingMode The rounding mode applied to the converted quantity for invoicing. +// +// Rounding is applied only to the invoiced quantity. Entitlement balance checks +// use the precise decimal value after conversion. +// +// - `ceiling`: Round up to the next integer (typical for package-style billing). +// - `floor`: Round down to the previous integer. +// - `half_up`: Round to the nearest integer, with 0.5 rounding up. +// - `none`: No rounding; the converted value is used as-is. +type BillingUnitConfigRoundingMode string // BillingWorkflow Billing workflow settings. type BillingWorkflow struct { @@ -4634,11 +4604,131 @@ type CreateBillingProfileRequest struct { Workflow BillingWorkflow `json:"workflow"` } +// CreateChargeFlatFeeRequest Flat fee charge create request. +type CreateChargeFlatFeeRequest struct { + // AmountBeforeProration The amount before proration of the charge. + AmountBeforeProration CurrencyAmount `json:"amount_before_proration"` + + // BillingPeriod The billing period the charge belongs to. + BillingPeriod *ClosedPeriod `json:"billing_period,omitempty"` + + // Currency The currency of the charge. + Currency CurrencyCode `json:"currency"` + + // Description Optional description of the resource. + // + // Maximum 1024 characters. + Description *string `json:"description,omitempty"` + + // Discounts The discounts applied to the charge. + Discounts *BillingChargeFlatFeeDiscounts `json:"discounts,omitempty"` + + // FeatureKey The feature associated with the charge, when applicable. + FeatureKey *string `json:"feature_key,omitempty"` + + // FullServicePeriod The full, unprorated service period of the charge. + FullServicePeriod *ClosedPeriod `json:"full_service_period,omitempty"` + + // InvoiceAt The timestamp when the charge is intended to be invoiced. + InvoiceAt DateTime `json:"invoice_at"` + + // Labels Labels store metadata of an entity that can be used for filtering an entity list or for searching across entity types. + // + // Keys must be of length 1-63 characters, and cannot start with "kong", "konnect", "mesh", "kic", or "_". + Labels *Labels `json:"labels,omitempty"` + + // Name Display name of the resource. + // + // Between 1 and 256 characters. + Name string `json:"name"` + + // PaymentTerm Payment term of the flat fee charge. + PaymentTerm BillingPricePaymentTerm `json:"payment_term"` + + // ProrationConfiguration The proration configuration of the charge. + ProrationConfiguration BillingRateCardProrationConfiguration `json:"proration_configuration"` + + // ServicePeriod The effective service period covered by the charge. + ServicePeriod ClosedPeriod `json:"service_period"` + + // SettlementMode Settlement mode of the charge. + SettlementMode BillingSettlementMode `json:"settlement_mode"` + + // TaxConfig Tax configuration of the charge. + TaxConfig *BillingTaxConfig `json:"tax_config,omitempty"` + + // Type The type of the charge. + Type CreateChargeFlatFeeRequestType `json:"type"` + + // UniqueReferenceId Unique reference ID of the charge. + UniqueReferenceId *string `json:"unique_reference_id,omitempty"` +} + +// CreateChargeFlatFeeRequestType The type of the charge. +type CreateChargeFlatFeeRequestType string + // CreateChargeRequest Customer charge. type CreateChargeRequest struct { union json.RawMessage } +// CreateChargeUsageBasedRequest Usage-based charge create request. +type CreateChargeUsageBasedRequest struct { + // BillingPeriod The billing period the charge belongs to. + BillingPeriod *ClosedPeriod `json:"billing_period,omitempty"` + + // Currency The currency of the charge. + Currency CurrencyCode `json:"currency"` + + // Description Optional description of the resource. + // + // Maximum 1024 characters. + Description *string `json:"description,omitempty"` + + // Discounts Discounts applied to the usage-based charge. + Discounts *BillingRateCardDiscounts `json:"discounts,omitempty"` + + // FeatureKey The feature associated with the charge. + FeatureKey string `json:"feature_key"` + + // FullServicePeriod The full, unprorated service period of the charge. + FullServicePeriod *ClosedPeriod `json:"full_service_period,omitempty"` + + // InvoiceAt The timestamp when the charge is intended to be invoiced. + InvoiceAt DateTime `json:"invoice_at"` + + // Labels Labels store metadata of an entity that can be used for filtering an entity list or for searching across entity types. + // + // Keys must be of length 1-63 characters, and cannot start with "kong", "konnect", "mesh", "kic", or "_". + Labels *Labels `json:"labels,omitempty"` + + // Name Display name of the resource. + // + // Between 1 and 256 characters. + Name string `json:"name"` + + // Price The price of the charge. + Price BillingPrice `json:"price"` + + // ServicePeriod The effective service period covered by the charge. + ServicePeriod ClosedPeriod `json:"service_period"` + + // SettlementMode Settlement mode of the charge. + SettlementMode BillingSettlementMode `json:"settlement_mode"` + + // TaxConfig Tax configuration of the charge. + TaxConfig *BillingTaxConfig `json:"tax_config,omitempty"` + + // Type The type of the charge. + Type CreateChargeUsageBasedRequestType `json:"type"` + + // UniqueReferenceId Unique reference ID of the charge. + UniqueReferenceId *string `json:"unique_reference_id,omitempty"` +} + +// CreateChargeUsageBasedRequestType The type of the charge. +type CreateChargeUsageBasedRequestType string + // CreateCostBasisRequest CostBasis create request. type CreateCostBasisRequest struct { // EffectiveFrom An ISO-8601 timestamp representation of the date from which the cost basis is @@ -4791,7 +4881,7 @@ type CreateCurrencyCustomRequest struct { // CreateCustomerRequest Customer create request. type CreateCustomerRequest struct { // BillingAddress The billing address of the customer. Used for tax and invoicing. - BillingAddress *BillingAddress `json:"billing_address,omitempty"` + BillingAddress *Address `json:"billing_address,omitempty"` // Currency Currency of the customer. Used for billing, tax and invoicing. Currency *CurrencyCode `json:"currency,omitempty"` @@ -4852,69 +4942,6 @@ type CreateFeatureRequest struct { UnitCost *BillingFeatureUnitCost `json:"unit_cost,omitempty"` } -// CreateFlatFeeChargeRequest Flat fee charge create request. -type CreateFlatFeeChargeRequest struct { - // AmountBeforeProration The amount before proration of the charge. - AmountBeforeProration CurrencyAmount `json:"amount_before_proration"` - - // BillingPeriod The billing period the charge belongs to. - BillingPeriod *ClosedPeriod `json:"billing_period,omitempty"` - - // Currency The currency of the charge. - Currency CurrencyCode `json:"currency"` - - // Description Optional description of the resource. - // - // Maximum 1024 characters. - Description *string `json:"description,omitempty"` - - // Discounts The discounts applied to the charge. - Discounts *BillingFlatFeeDiscounts `json:"discounts,omitempty"` - - // FeatureKey The feature associated with the charge, when applicable. - FeatureKey *string `json:"feature_key,omitempty"` - - // FullServicePeriod The full, unprorated service period of the charge. - FullServicePeriod *ClosedPeriod `json:"full_service_period,omitempty"` - - // InvoiceAt The timestamp when the charge is intended to be invoiced. - InvoiceAt DateTime `json:"invoice_at"` - - // Labels Labels store metadata of an entity that can be used for filtering an entity list or for searching across entity types. - // - // Keys must be of length 1-63 characters, and cannot start with "kong", "konnect", "mesh", "kic", or "_". - Labels *Labels `json:"labels,omitempty"` - - // Name Display name of the resource. - // - // Between 1 and 256 characters. - Name string `json:"name"` - - // PaymentTerm Payment term of the flat fee charge. - PaymentTerm BillingPricePaymentTerm `json:"payment_term"` - - // ProrationConfiguration The proration configuration of the charge. - ProrationConfiguration BillingRateCardProrationConfiguration `json:"proration_configuration"` - - // ServicePeriod The effective service period covered by the charge. - ServicePeriod ClosedPeriod `json:"service_period"` - - // SettlementMode Settlement mode of the charge. - SettlementMode BillingSettlementMode `json:"settlement_mode"` - - // TaxConfig Tax configuration of the charge. - TaxConfig *BillingTaxConfig `json:"tax_config,omitempty"` - - // Type The type of the charge. - Type CreateFlatFeeChargeRequestType `json:"type"` - - // UniqueReferenceId Unique reference ID of the charge. - UniqueReferenceId *string `json:"unique_reference_id,omitempty"` -} - -// CreateFlatFeeChargeRequestType The type of the charge. -type CreateFlatFeeChargeRequestType string - // CreateMeterRequest Meter create request. type CreateMeterRequest struct { // Aggregation The aggregation type to use for the meter. @@ -5056,63 +5083,6 @@ type CreateTaxCodeRequest struct { Name string `json:"name"` } -// CreateUsageBasedChargeRequest Usage-based charge create request. -type CreateUsageBasedChargeRequest struct { - // BillingPeriod The billing period the charge belongs to. - BillingPeriod *ClosedPeriod `json:"billing_period,omitempty"` - - // Currency The currency of the charge. - Currency CurrencyCode `json:"currency"` - - // Description Optional description of the resource. - // - // Maximum 1024 characters. - Description *string `json:"description,omitempty"` - - // Discounts Discounts applied to the usage-based charge. - Discounts *BillingRateCardDiscounts `json:"discounts,omitempty"` - - // FeatureKey The feature associated with the charge. - FeatureKey string `json:"feature_key"` - - // FullServicePeriod The full, unprorated service period of the charge. - FullServicePeriod *ClosedPeriod `json:"full_service_period,omitempty"` - - // InvoiceAt The timestamp when the charge is intended to be invoiced. - InvoiceAt DateTime `json:"invoice_at"` - - // Labels Labels store metadata of an entity that can be used for filtering an entity list or for searching across entity types. - // - // Keys must be of length 1-63 characters, and cannot start with "kong", "konnect", "mesh", "kic", or "_". - Labels *Labels `json:"labels,omitempty"` - - // Name Display name of the resource. - // - // Between 1 and 256 characters. - Name string `json:"name"` - - // Price The price of the charge. - Price BillingPrice `json:"price"` - - // ServicePeriod The effective service period covered by the charge. - ServicePeriod ClosedPeriod `json:"service_period"` - - // SettlementMode Settlement mode of the charge. - SettlementMode BillingSettlementMode `json:"settlement_mode"` - - // TaxConfig Tax configuration of the charge. - TaxConfig *BillingTaxConfig `json:"tax_config,omitempty"` - - // Type The type of the charge. - Type CreateUsageBasedChargeRequestType `json:"type"` - - // UniqueReferenceId Unique reference ID of the charge. - UniqueReferenceId *string `json:"unique_reference_id,omitempty"` -} - -// CreateUsageBasedChargeRequestType The type of the charge. -type CreateUsageBasedChargeRequestType string - // CreditBalance The credit balance by currency. type CreditBalance struct { // Available Credits that can be consumed right now. Derived from cleared grants after @@ -6277,15 +6247,6 @@ type RecurringPeriod struct { // ResourceKey A key is a unique string that is used to identify a resource. type ResourceKey = string -// ResourceManagedBy Identifies which system manages a resource. -// -// Values: -// -// - `manual`: The resource is managed manually (overridden by our API users). -// - `system`: The resource is managed by the system. -// - `subscription`: The resource is managed by the subscription. -type ResourceManagedBy string - // SortQuery The `asc` suffix is optional as the default sort order is ascending. // The `desc` suffix is used to specify a descending order. // Multiple sort attributes may be provided via a comma separated list. @@ -6514,7 +6475,7 @@ type UpsertCustomerBillingDataRequest struct { // UpsertCustomerRequest Customer upsert request. type UpsertCustomerRequest struct { // BillingAddress The billing address of the customer. Used for tax and invoicing. - BillingAddress *BillingAddress `json:"billing_address,omitempty"` + BillingAddress *Address `json:"billing_address,omitempty"` // Currency Currency of the customer. Used for billing, tax and invoicing. Currency *CurrencyCode `json:"currency,omitempty"` @@ -7189,23 +7150,23 @@ func (t *BillingApp) UnmarshalJSON(b []byte) error { return err } -// AsBillingFlatFeeCharge returns the union data inside the BillingCharge as a BillingFlatFeeCharge -func (t BillingCharge) AsBillingFlatFeeCharge() (BillingFlatFeeCharge, error) { - var body BillingFlatFeeCharge +// AsBillingChargeFlatFee returns the union data inside the BillingCharge as a BillingChargeFlatFee +func (t BillingCharge) AsBillingChargeFlatFee() (BillingChargeFlatFee, error) { + var body BillingChargeFlatFee err := json.Unmarshal(t.union, &body) return body, err } -// FromBillingFlatFeeCharge overwrites any union data inside the BillingCharge as the provided BillingFlatFeeCharge -func (t *BillingCharge) FromBillingFlatFeeCharge(v BillingFlatFeeCharge) error { +// FromBillingChargeFlatFee overwrites any union data inside the BillingCharge as the provided BillingChargeFlatFee +func (t *BillingCharge) FromBillingChargeFlatFee(v BillingChargeFlatFee) error { v.Type = "flat_fee" b, err := json.Marshal(v) t.union = b return err } -// MergeBillingFlatFeeCharge performs a merge with any union data inside the BillingCharge, using the provided BillingFlatFeeCharge -func (t *BillingCharge) MergeBillingFlatFeeCharge(v BillingFlatFeeCharge) error { +// MergeBillingChargeFlatFee performs a merge with any union data inside the BillingCharge, using the provided BillingChargeFlatFee +func (t *BillingCharge) MergeBillingChargeFlatFee(v BillingChargeFlatFee) error { v.Type = "flat_fee" b, err := json.Marshal(v) if err != nil { @@ -7217,23 +7178,23 @@ func (t *BillingCharge) MergeBillingFlatFeeCharge(v BillingFlatFeeCharge) error return err } -// AsBillingUsageBasedCharge returns the union data inside the BillingCharge as a BillingUsageBasedCharge -func (t BillingCharge) AsBillingUsageBasedCharge() (BillingUsageBasedCharge, error) { - var body BillingUsageBasedCharge +// AsBillingChargeUsageBased returns the union data inside the BillingCharge as a BillingChargeUsageBased +func (t BillingCharge) AsBillingChargeUsageBased() (BillingChargeUsageBased, error) { + var body BillingChargeUsageBased err := json.Unmarshal(t.union, &body) return body, err } -// FromBillingUsageBasedCharge overwrites any union data inside the BillingCharge as the provided BillingUsageBasedCharge -func (t *BillingCharge) FromBillingUsageBasedCharge(v BillingUsageBasedCharge) error { +// FromBillingChargeUsageBased overwrites any union data inside the BillingCharge as the provided BillingChargeUsageBased +func (t *BillingCharge) FromBillingChargeUsageBased(v BillingChargeUsageBased) error { v.Type = "usage_based" b, err := json.Marshal(v) t.union = b return err } -// MergeBillingUsageBasedCharge performs a merge with any union data inside the BillingCharge, using the provided BillingUsageBasedCharge -func (t *BillingCharge) MergeBillingUsageBasedCharge(v BillingUsageBasedCharge) error { +// MergeBillingChargeUsageBased performs a merge with any union data inside the BillingCharge, using the provided BillingChargeUsageBased +func (t *BillingCharge) MergeBillingChargeUsageBased(v BillingChargeUsageBased) error { v.Type = "usage_based" b, err := json.Marshal(v) if err != nil { @@ -7260,9 +7221,9 @@ func (t BillingCharge) ValueByDiscriminator() (interface{}, error) { } switch discriminator { case "flat_fee": - return t.AsBillingFlatFeeCharge() + return t.AsBillingChargeFlatFee() case "usage_based": - return t.AsBillingUsageBasedCharge() + return t.AsBillingChargeUsageBased() default: return nil, errors.New("unknown discriminator value: " + discriminator) } @@ -7456,23 +7417,23 @@ func (t *BillingFeatureUnitCost) UnmarshalJSON(b []byte) error { return err } -// AsBillingStandardInvoice returns the union data inside the BillingInvoice as a BillingStandardInvoice -func (t BillingInvoice) AsBillingStandardInvoice() (BillingStandardInvoice, error) { - var body BillingStandardInvoice +// AsBillingInvoiceStandard returns the union data inside the BillingInvoice as a BillingInvoiceStandard +func (t BillingInvoice) AsBillingInvoiceStandard() (BillingInvoiceStandard, error) { + var body BillingInvoiceStandard err := json.Unmarshal(t.union, &body) return body, err } -// FromBillingStandardInvoice overwrites any union data inside the BillingInvoice as the provided BillingStandardInvoice -func (t *BillingInvoice) FromBillingStandardInvoice(v BillingStandardInvoice) error { +// FromBillingInvoiceStandard overwrites any union data inside the BillingInvoice as the provided BillingInvoiceStandard +func (t *BillingInvoice) FromBillingInvoiceStandard(v BillingInvoiceStandard) error { v.Type = "standard" b, err := json.Marshal(v) t.union = b return err } -// MergeBillingStandardInvoice performs a merge with any union data inside the BillingInvoice, using the provided BillingStandardInvoice -func (t *BillingInvoice) MergeBillingStandardInvoice(v BillingStandardInvoice) error { +// MergeBillingInvoiceStandard performs a merge with any union data inside the BillingInvoice, using the provided BillingInvoiceStandard +func (t *BillingInvoice) MergeBillingInvoiceStandard(v BillingInvoiceStandard) error { v.Type = "standard" b, err := json.Marshal(v) if err != nil { @@ -7499,7 +7460,7 @@ func (t BillingInvoice) ValueByDiscriminator() (interface{}, error) { } switch discriminator { case "standard": - return t.AsBillingStandardInvoice() + return t.AsBillingInvoiceStandard() default: return nil, errors.New("unknown discriminator value: " + discriminator) } @@ -8112,23 +8073,23 @@ func (t *BillingWorkflowPaymentSettings) UnmarshalJSON(b []byte) error { return err } -// AsCreateFlatFeeChargeRequest returns the union data inside the CreateChargeRequest as a CreateFlatFeeChargeRequest -func (t CreateChargeRequest) AsCreateFlatFeeChargeRequest() (CreateFlatFeeChargeRequest, error) { - var body CreateFlatFeeChargeRequest +// AsCreateChargeFlatFeeRequest returns the union data inside the CreateChargeRequest as a CreateChargeFlatFeeRequest +func (t CreateChargeRequest) AsCreateChargeFlatFeeRequest() (CreateChargeFlatFeeRequest, error) { + var body CreateChargeFlatFeeRequest err := json.Unmarshal(t.union, &body) return body, err } -// FromCreateFlatFeeChargeRequest overwrites any union data inside the CreateChargeRequest as the provided CreateFlatFeeChargeRequest -func (t *CreateChargeRequest) FromCreateFlatFeeChargeRequest(v CreateFlatFeeChargeRequest) error { +// FromCreateChargeFlatFeeRequest overwrites any union data inside the CreateChargeRequest as the provided CreateChargeFlatFeeRequest +func (t *CreateChargeRequest) FromCreateChargeFlatFeeRequest(v CreateChargeFlatFeeRequest) error { v.Type = "flat_fee" b, err := json.Marshal(v) t.union = b return err } -// MergeCreateFlatFeeChargeRequest performs a merge with any union data inside the CreateChargeRequest, using the provided CreateFlatFeeChargeRequest -func (t *CreateChargeRequest) MergeCreateFlatFeeChargeRequest(v CreateFlatFeeChargeRequest) error { +// MergeCreateChargeFlatFeeRequest performs a merge with any union data inside the CreateChargeRequest, using the provided CreateChargeFlatFeeRequest +func (t *CreateChargeRequest) MergeCreateChargeFlatFeeRequest(v CreateChargeFlatFeeRequest) error { v.Type = "flat_fee" b, err := json.Marshal(v) if err != nil { @@ -8140,23 +8101,23 @@ func (t *CreateChargeRequest) MergeCreateFlatFeeChargeRequest(v CreateFlatFeeCha return err } -// AsCreateUsageBasedChargeRequest returns the union data inside the CreateChargeRequest as a CreateUsageBasedChargeRequest -func (t CreateChargeRequest) AsCreateUsageBasedChargeRequest() (CreateUsageBasedChargeRequest, error) { - var body CreateUsageBasedChargeRequest +// AsCreateChargeUsageBasedRequest returns the union data inside the CreateChargeRequest as a CreateChargeUsageBasedRequest +func (t CreateChargeRequest) AsCreateChargeUsageBasedRequest() (CreateChargeUsageBasedRequest, error) { + var body CreateChargeUsageBasedRequest err := json.Unmarshal(t.union, &body) return body, err } -// FromCreateUsageBasedChargeRequest overwrites any union data inside the CreateChargeRequest as the provided CreateUsageBasedChargeRequest -func (t *CreateChargeRequest) FromCreateUsageBasedChargeRequest(v CreateUsageBasedChargeRequest) error { +// FromCreateChargeUsageBasedRequest overwrites any union data inside the CreateChargeRequest as the provided CreateChargeUsageBasedRequest +func (t *CreateChargeRequest) FromCreateChargeUsageBasedRequest(v CreateChargeUsageBasedRequest) error { v.Type = "usage_based" b, err := json.Marshal(v) t.union = b return err } -// MergeCreateUsageBasedChargeRequest performs a merge with any union data inside the CreateChargeRequest, using the provided CreateUsageBasedChargeRequest -func (t *CreateChargeRequest) MergeCreateUsageBasedChargeRequest(v CreateUsageBasedChargeRequest) error { +// MergeCreateChargeUsageBasedRequest performs a merge with any union data inside the CreateChargeRequest, using the provided CreateChargeUsageBasedRequest +func (t *CreateChargeRequest) MergeCreateChargeUsageBasedRequest(v CreateChargeUsageBasedRequest) error { v.Type = "usage_based" b, err := json.Marshal(v) if err != nil { @@ -8183,9 +8144,9 @@ func (t CreateChargeRequest) ValueByDiscriminator() (interface{}, error) { } switch discriminator { case "flat_fee": - return t.AsCreateFlatFeeChargeRequest() + return t.AsCreateChargeFlatFeeRequest() case "usage_based": - return t.AsCreateUsageBasedChargeRequest() + return t.AsCreateChargeUsageBasedRequest() default: return nil, errors.New("unknown discriminator value: " + discriminator) } @@ -11900,768 +11861,765 @@ func HandlerWithOptions(si ServerInterface, options ChiServerOptions) http.Handl // Base64 encoded, gzipped, json marshaled Swagger object var swaggerSpec = []string{ - "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", - "rRP2zLMEAA==", + "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", } // GetSwagger returns the content of the embedded swagger specification file diff --git a/api/v3/handlers/billinginvoices/convert.go b/api/v3/handlers/billinginvoices/convert.go index 4ffddb783d..6e4ea5ef11 100644 --- a/api/v3/handlers/billinginvoices/convert.go +++ b/api/v3/handlers/billinginvoices/convert.go @@ -33,7 +33,7 @@ func ToAPIBillingInvoice(inv billing.Invoice) (api.BillingInvoice, error) { return out, err } - if err := out.FromBillingStandardInvoice(stdAPI); err != nil { + if err := out.FromBillingInvoiceStandard(stdAPI); err != nil { return out, fmt.Errorf("setting standard invoice union: %w", err) } @@ -50,21 +50,21 @@ func ToAPIBillingInvoice(inv billing.Invoice) (api.BillingInvoice, error) { return out, nil } -func toAPIStandardInvoice(std billing.StandardInvoice) (api.BillingStandardInvoice, error) { +func toAPIStandardInvoice(std billing.StandardInvoice) (api.BillingInvoiceStandard, error) { // Sort lines for consistent output — matches v1 behavior. std.SortLines() workflow, err := toAPIWorkflow(std.Workflow) if err != nil { - return api.BillingStandardInvoice{}, fmt.Errorf("converting workflow: %w", err) + return api.BillingInvoiceStandard{}, fmt.Errorf("converting workflow: %w", err) } outLines, err := mapLines(std.Lines.OrEmpty()) if err != nil { - return api.BillingStandardInvoice{}, err + return api.BillingInvoiceStandard{}, err } - return api.BillingStandardInvoice{ + return api.BillingInvoiceStandard{ Id: std.ID, Number: std.Number, Description: std.Description, @@ -80,14 +80,14 @@ func toAPIStandardInvoice(std billing.StandardInvoice) (api.BillingStandardInvoi QuantitySnapshottedAt: std.QuantitySnapshotedAt, ServicePeriod: api.ClosedPeriod(lo.FromPtr(std.Period)), Currency: api.CurrencyCode(std.Currency), - Type: api.BillingStandardInvoiceTypeStandard, - Status: api.BillingStandardInvoiceStatus(std.Status.ShortStatus()), + Type: api.BillingInvoiceStandardTypeStandard, + Status: api.BillingInvoiceStandardStatus(std.Status.ShortStatus()), StatusDetails: toAPIStatusDetails(std.StatusDetails, std.Status), Customer: toAPIInvoiceCustomer(std.Customer), Supplier: billingprofiles.ToAPIBillingSupplier(std.Supplier), Totals: chargeshandler.ToAPIBillingTotals(std.Totals), ValidationIssues: mapValidationIssues(std.ValidationIssues), - ExternalIds: toAPIInvoiceExternalIds(std.ExternalIDs), + ExternalReferences: toAPIInvoiceExternalReferences(std.ExternalIDs), Workflow: workflow, Lines: outLines, }, nil @@ -124,13 +124,12 @@ func toAPIInvoiceCustomer(c billing.InvoiceCustomer) api.BillingInvoiceCustomer Id: c.CustomerID, Key: c.Key, Name: c.Name, - UsageAttribution: api.BillingCustomerUsageAttribution{ - SubjectKeys: []api.UsageAttributionSubjectKey{}, - }, } if c.UsageAttribution != nil { - out.UsageAttribution.SubjectKeys = c.UsageAttribution.SubjectKeys + out.UsageAttribution = &api.BillingCustomerUsageAttribution{ + SubjectKeys: c.UsageAttribution.SubjectKeys, + } } if c.BillingAddress != nil && !lo.IsEmpty(*c.BillingAddress) { @@ -138,7 +137,7 @@ func toAPIInvoiceCustomer(c billing.InvoiceCustomer) api.BillingInvoiceCustomer if c.BillingAddress.Country != nil { country = lo.ToPtr(api.CountryCode(*c.BillingAddress.Country)) } - out.BillingAddress = &api.BillingAddress{ + out.BillingAddress = &api.Address{ City: c.BillingAddress.City, Country: country, Line1: c.BillingAddress.Line1, @@ -182,7 +181,9 @@ func toAPIWorkflow(w billing.InvoiceWorkflow) (api.BillingInvoiceWorkflowSetting } return api.BillingInvoiceWorkflowSettings{ - SourceBillingProfileId: w.SourceBillingProfileID, + SourceBillingProfile: api.BillingProfileReference{ + Id: w.SourceBillingProfileID, + }, Workflow: api.BillingInvoiceWorkflow{ Invoicing: invoicing, Payment: payment, @@ -207,13 +208,14 @@ func mapValidationIssues(issues []billing.ValidationIssue) *[]api.BillingInvoice return &out } -func toAPIInvoiceExternalIds(e externalid.InvoiceExternalIDs) *api.BillingInvoiceExternalIds { - if e.Invoicing == "" { +func toAPIInvoiceExternalReferences(e externalid.InvoiceExternalIDs) *api.BillingInvoiceExternalReferences { + if e.Invoicing == "" && e.Payment == "" { return nil } - return &api.BillingInvoiceExternalIds{ - Invoicing: lo.ToPtr(e.Invoicing), + return &api.BillingInvoiceExternalReferences{ + InvoicingId: lo.EmptyableToPtr(e.Invoicing), + PaymentId: lo.EmptyableToPtr(e.Payment), } } @@ -269,24 +271,24 @@ func mapStandardLine(line *billing.StandardLine) (api.BillingInvoiceStandardLine } return api.BillingInvoiceStandardLine{ - Id: line.ID, - Name: line.Name, - Description: line.Description, - Labels: labels.FromMetadata(line.Metadata), - CreatedAt: line.CreatedAt, - UpdatedAt: line.UpdatedAt, - DeletedAt: line.DeletedAt, - Type: api.BillingInvoiceStandardLineTypeStandardLine, - ManagedBy: api.BillingInvoiceLineManagedBy(line.ManagedBy), - ServicePeriod: chargeshandler.ConvertClosedPeriodToAPI(line.Period), - Totals: chargeshandler.ToAPIBillingTotals(line.Totals), - Charge: chargeRef, - Subscription: subRef, - ExternalIds: toAPILineExternalIds(line.ExternalIDs), - CreditsApplied: mapCreditApplies(line.CreditsApplied), - Discounts: mapLineDiscounts(line.Discounts), - RateCard: rateCard, - DetailedLines: detailedLines, + Id: line.ID, + Name: line.Name, + Description: line.Description, + Labels: labels.FromMetadata(line.Metadata), + CreatedAt: line.CreatedAt, + UpdatedAt: line.UpdatedAt, + DeletedAt: line.DeletedAt, + Type: api.BillingInvoiceStandardLineTypeStandardLine, + LifecycleController: chargeshandler.ConvertLifecycleControllerToAPI(line.ManagedBy), + ServicePeriod: chargeshandler.ConvertClosedPeriodToAPI(line.Period), + Totals: chargeshandler.ToAPIBillingTotals(line.Totals), + Charge: chargeRef, + Subscription: subRef, + ExternalReferences: toAPILineExternalReferences(line.ExternalIDs), + CreditsApplied: mapCreditApplies(line.CreditsApplied), + Discounts: mapLineDiscounts(line.Discounts), + RateCard: rateCard, + DetailedLines: detailedLines, }, nil } @@ -330,20 +332,20 @@ func mapDetailedLines(dls billing.DetailedLines) ([]api.BillingInvoiceDetailedLi func mapDetailedLine(dl billing.DetailedLine) (api.BillingInvoiceDetailedLine, error) { return api.BillingInvoiceDetailedLine{ - Id: dl.ID, - Name: dl.Name, - Description: dl.Description, - CreatedAt: dl.CreatedAt, - UpdatedAt: dl.UpdatedAt, - DeletedAt: dl.DeletedAt, - Category: api.BillingInvoiceDetailedLineCostCategory(dl.Category), - ServicePeriod: chargeshandler.ConvertClosedPeriodToAPI(dl.ServicePeriod), - Quantity: dl.Quantity.String(), - UnitPrice: dl.PerUnitAmount.String(), - Totals: chargeshandler.ToAPIBillingTotals(dl.Totals), - CreditsApplied: mapCreditApplies(dl.CreditsApplied), - Discounts: mapAmountDiscounts(dl.AmountDiscounts), - ExternalIds: toAPILineExternalIds(dl.ExternalIDs), + Id: dl.ID, + Name: dl.Name, + Description: dl.Description, + CreatedAt: dl.CreatedAt, + UpdatedAt: dl.UpdatedAt, + DeletedAt: dl.DeletedAt, + Category: api.BillingInvoiceDetailedLineCostCategory(dl.Category), + ServicePeriod: chargeshandler.ConvertClosedPeriodToAPI(dl.ServicePeriod), + Quantity: dl.Quantity.String(), + UnitPrice: dl.PerUnitAmount.String(), + Totals: chargeshandler.ToAPIBillingTotals(dl.Totals), + CreditsApplied: mapCreditApplies(dl.CreditsApplied), + Discounts: mapAmountDiscounts(dl.AmountDiscounts), + ExternalReferences: toAPILineExternalReferences(dl.ExternalIDs), }, nil } @@ -391,11 +393,11 @@ func mapLineDiscounts(d billing.StandardLineDiscounts) *api.BillingInvoiceLineDi usageDiscounts := lo.Map(d.Usage, func(ud billing.UsageLineDiscountManaged, _ int) api.BillingInvoiceLineUsageDiscount { return api.BillingInvoiceLineUsageDiscount{ - Id: ud.ID, - Quantity: ud.Quantity.String(), - Description: ud.Description, - ExternalIds: toAPILineExternalIds(ud.ExternalIDs), - Reason: api.BillingInvoiceDiscountReason(ud.Reason.Type()), + Id: ud.ID, + Quantity: ud.Quantity.String(), + Description: ud.Description, + ExternalReferences: toAPILineExternalReferences(ud.ExternalIDs), + Reason: api.BillingInvoiceDiscountReason(ud.Reason.Type()), } }) @@ -411,11 +413,11 @@ func mapAmountDiscounts(d billing.AmountLineDiscountsManaged) *api.BillingInvoic amountDiscounts := lo.Map(d, func(ad billing.AmountLineDiscountManaged, _ int) api.BillingInvoiceLineAmountDiscount { return api.BillingInvoiceLineAmountDiscount{ - Id: ad.ID, - Amount: ad.Amount.String(), - Description: ad.Description, - ExternalIds: toAPILineExternalIds(ad.ExternalIDs), - Reason: api.BillingInvoiceDiscountReason(ad.Reason.Type()), + Id: ad.ID, + Amount: ad.Amount.String(), + Description: ad.Description, + ExternalReferences: toAPILineExternalReferences(ad.ExternalIDs), + Reason: api.BillingInvoiceDiscountReason(ad.Reason.Type()), } }) @@ -424,12 +426,12 @@ func mapAmountDiscounts(d billing.AmountLineDiscountsManaged) *api.BillingInvoic } } -func toAPILineExternalIds(e externalid.LineExternalIDs) *api.BillingInvoiceLineExternalIds { +func toAPILineExternalReferences(e externalid.LineExternalIDs) *api.BillingInvoiceLineExternalReferences { if e.Invoicing == "" { return nil } - return &api.BillingInvoiceLineExternalIds{ - Invoicing: lo.ToPtr(e.Invoicing), + return &api.BillingInvoiceLineExternalReferences{ + InvoicingId: lo.ToPtr(e.Invoicing), } } diff --git a/api/v3/handlers/billingprofiles/convert.go b/api/v3/handlers/billingprofiles/convert.go index 26f909e833..cabb4d6964 100644 --- a/api/v3/handlers/billingprofiles/convert.go +++ b/api/v3/handlers/billingprofiles/convert.go @@ -141,7 +141,12 @@ func ToAPIBillingParty(supplier billing.SupplierContact) api.BillingParty { Name: &supplier.Name, } - if supplier.Address.Country != nil { + // Emit the billing address whenever any address field is present. Gating on + // Country alone would drop line1/city/state/phone-only addresses from + // supplier snapshots, since every address field is optional in the API shape. + addr := supplier.Address + if addr.Country != nil || addr.PostalCode != nil || addr.State != nil || + addr.City != nil || addr.Line1 != nil || addr.Line2 != nil || addr.PhoneNumber != nil { party.Addresses = &api.BillingPartyAddresses{ BillingAddress: ToAPIAddress(supplier.Address), } @@ -156,20 +161,17 @@ func ToAPIBillingParty(supplier billing.SupplierContact) api.BillingParty { return party } -// ToAPIBillingSupplier converts billing.SupplierContact to API BillingSupplier +// ToAPIBillingSupplier converts billing.SupplierContact to the invoice's +// BillingSupplier snapshot, a read-only subset of BillingParty. func ToAPIBillingSupplier(supplier billing.SupplierContact) api.BillingSupplier { - result := api.BillingSupplier{ - Id: supplier.ID, - Name: supplier.Name, - } - - result.Address = ToAPIAddress(supplier.Address) + party := ToAPIBillingParty(supplier) - if supplier.TaxCode != nil { - result.TaxId = supplier.TaxCode + return api.BillingSupplier{ + Id: party.Id, + Name: party.Name, + TaxId: party.TaxId, + Addresses: party.Addresses, } - - return result } // FromAPIBillingParty converts API BillingParty to billing.SupplierContact diff --git a/api/v3/handlers/customers/charges/convert.go b/api/v3/handlers/customers/charges/convert.go index 47d33490d1..276922a6ad 100644 --- a/api/v3/handlers/customers/charges/convert.go +++ b/api/v3/handlers/customers/charges/convert.go @@ -27,16 +27,16 @@ import ( var ConvertMetadataToLabels = labels.FromMetadata[models.Metadata] // convertFlatFeeChargeToAPI maps a flatfee.Charge to the API representation. -func convertFlatFeeChargeToAPI(source flatfee.Charge) (api.BillingFlatFeeCharge, error) { +func convertFlatFeeChargeToAPI(source flatfee.Charge) (api.BillingChargeFlatFee, error) { var price api.BillingPrice if err := price.FromBillingPriceFlat(api.BillingPriceFlat{ Amount: source.ChargeBase.Intent.AmountBeforeProration.String(), Type: api.BillingPriceFlatTypeFlat, }); err != nil { - return api.BillingFlatFeeCharge{}, fmt.Errorf("setting flat fee price union: %w", err) + return api.BillingChargeFlatFee{}, fmt.Errorf("setting flat fee price union: %w", err) } - return api.BillingFlatFeeCharge{ + return api.BillingChargeFlatFee{ AdvanceAfter: source.State.AdvanceAfter, AmountAfterProration: ConvertDecimalToCurrencyAmount(source.ChargeBase.State.AmountAfterProration), BillingPeriod: ConvertClosedPeriodToAPI(source.ChargeBase.Intent.Intent.BillingPeriod), @@ -51,7 +51,7 @@ func convertFlatFeeChargeToAPI(source flatfee.Charge) (api.BillingFlatFeeCharge, Id: source.ChargeBase.ManagedResource.ID, InvoiceAt: source.ChargeBase.Intent.InvoiceAt, Labels: ConvertMetadataToLabels(source.ChargeBase.Intent.Intent.Metadata), - ManagedBy: ConvertManagedByToAPI(source.ChargeBase.Intent.Intent.ManagedBy), + LifecycleController: ConvertLifecycleControllerToAPI(source.ChargeBase.Intent.Intent.ManagedBy), Name: source.ChargeBase.Intent.Intent.Name, PaymentTerm: ConvertPaymentTermToAPI(source.ChargeBase.Intent.PaymentTerm), Price: price, @@ -61,50 +61,50 @@ func convertFlatFeeChargeToAPI(source flatfee.Charge) (api.BillingFlatFeeCharge, Status: ConvertChargeStatusToAPI(meta.ChargeStatus(source.Status)), Subscription: subscriptionRefPtrToAPI(source.ChargeBase.Intent.Intent.Subscription), TaxConfig: convertTaxCodeConfigToAPI(source.ChargeBase.Intent.Intent.TaxConfig), - Type: api.BillingFlatFeeChargeTypeFlatFee, + Type: api.BillingChargeFlatFeeTypeFlatFee, UniqueReferenceId: source.ChargeBase.Intent.Intent.UniqueReferenceID, UpdatedAt: source.ChargeBase.ManagedResource.ManagedModel.UpdatedAt, }, nil } // convertUsageBasedChargeToAPI maps a usagebased.Charge to the API representation. -func convertUsageBasedChargeToAPI(source usagebased.Charge) (api.BillingUsageBasedCharge, error) { +func convertUsageBasedChargeToAPI(source usagebased.Charge) (api.BillingChargeUsageBased, error) { status, err := ConvertUsageBasedStatusToAPI(source.ChargeBase.Status) if err != nil { - return api.BillingUsageBasedCharge{}, fmt.Errorf("converting usage based charge status: %w", err) + return api.BillingChargeUsageBased{}, fmt.Errorf("converting usage based charge status: %w", err) } price, err := toAPIBillingPrice(source.Intent.Price) if err != nil { - return api.BillingUsageBasedCharge{}, fmt.Errorf("converting price: %w", err) - } - - return api.BillingUsageBasedCharge{ - AdvanceAfter: source.State.AdvanceAfter, - BillingPeriod: ConvertClosedPeriodToAPI(source.ChargeBase.Intent.Intent.BillingPeriod), - 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, - Description: source.ChargeBase.Intent.Intent.Description, - Discounts: convertUsageBasedDiscounts(source.Intent.Discounts), - FeatureKey: source.ChargeBase.Intent.FeatureKey, - FullServicePeriod: ConvertClosedPeriodToAPI(source.ChargeBase.Intent.Intent.FullServicePeriod), - Id: source.ChargeBase.ManagedResource.ID, - InvoiceAt: source.ChargeBase.Intent.InvoiceAt, - Labels: ConvertMetadataToLabels(source.ChargeBase.Intent.Intent.Metadata), - ManagedBy: ConvertManagedByToAPI(source.ChargeBase.Intent.Intent.ManagedBy), - Name: source.ChargeBase.Intent.Intent.Name, - Price: price, - ServicePeriod: ConvertClosedPeriodToAPI(source.ChargeBase.Intent.Intent.ServicePeriod), - SettlementMode: ConvertSettlementModeToAPI(source.ChargeBase.Intent.SettlementMode), - Status: lo.FromPtr(status), - Subscription: subscriptionRefPtrToAPI(source.ChargeBase.Intent.Intent.Subscription), - TaxConfig: convertTaxCodeConfigToAPI(source.ChargeBase.Intent.Intent.TaxConfig), - Totals: convertUsageBasedChargeTotals(source), - Type: api.BillingUsageBasedChargeTypeUsageBased, - UniqueReferenceId: source.ChargeBase.Intent.Intent.UniqueReferenceID, - UpdatedAt: source.ChargeBase.ManagedResource.ManagedModel.UpdatedAt, + return api.BillingChargeUsageBased{}, fmt.Errorf("converting price: %w", err) + } + + return api.BillingChargeUsageBased{ + AdvanceAfter: source.State.AdvanceAfter, + BillingPeriod: ConvertClosedPeriodToAPI(source.ChargeBase.Intent.Intent.BillingPeriod), + 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, + Description: source.ChargeBase.Intent.Intent.Description, + Discounts: convertUsageBasedDiscounts(source.Intent.Discounts), + FeatureKey: source.ChargeBase.Intent.FeatureKey, + FullServicePeriod: ConvertClosedPeriodToAPI(source.ChargeBase.Intent.Intent.FullServicePeriod), + Id: source.ChargeBase.ManagedResource.ID, + InvoiceAt: source.ChargeBase.Intent.InvoiceAt, + Labels: ConvertMetadataToLabels(source.ChargeBase.Intent.Intent.Metadata), + LifecycleController: ConvertLifecycleControllerToAPI(source.ChargeBase.Intent.Intent.ManagedBy), + Name: source.ChargeBase.Intent.Intent.Name, + Price: price, + ServicePeriod: ConvertClosedPeriodToAPI(source.ChargeBase.Intent.Intent.ServicePeriod), + SettlementMode: ConvertSettlementModeToAPI(source.ChargeBase.Intent.SettlementMode), + Status: lo.FromPtr(status), + Subscription: subscriptionRefPtrToAPI(source.ChargeBase.Intent.Intent.Subscription), + TaxConfig: convertTaxCodeConfigToAPI(source.ChargeBase.Intent.Intent.TaxConfig), + Totals: convertUsageBasedChargeTotals(source), + Type: api.BillingChargeUsageBasedTypeUsageBased, + UniqueReferenceId: source.ChargeBase.Intent.Intent.UniqueReferenceID, + UpdatedAt: source.ChargeBase.ManagedResource.ManagedModel.UpdatedAt, }, nil } @@ -131,7 +131,7 @@ func convertChargeToAPI(charge billingcharges.Charge) (api.BillingCharge, error) if err != nil { return out, err } - if err := out.FromBillingFlatFeeCharge(apiFF); err != nil { + if err := out.FromBillingChargeFlatFee(apiFF); err != nil { return out, fmt.Errorf("setting flat fee charge union: %w", err) } @@ -144,7 +144,7 @@ func convertChargeToAPI(charge billingcharges.Charge) (api.BillingCharge, error) if err != nil { return out, err } - if err := out.FromBillingUsageBasedCharge(apiUB); err != nil { + if err := out.FromBillingChargeUsageBased(apiUB); err != nil { return out, fmt.Errorf("setting usage based charge union: %w", err) } @@ -272,12 +272,12 @@ func toAPIBillingPriceTier(t productcatalog.PriceTier, _ int) api.BillingPriceTi } // convertFlatFeeDiscounts maps the optional percentage discount to the anonymous API struct. -func convertFlatFeeDiscounts(pd *productcatalog.PercentageDiscount) *api.BillingFlatFeeDiscounts { +func convertFlatFeeDiscounts(pd *productcatalog.PercentageDiscount) *api.BillingChargeFlatFeeDiscounts { if pd == nil { return nil } pct := float32(pd.Percentage.InexactFloat64()) - return &api.BillingFlatFeeDiscounts{Percentage: &pct} + return &api.BillingChargeFlatFeeDiscounts{Percentage: &pct} } // convertUsageBasedDiscounts maps usage-based discounts to the API type. @@ -359,9 +359,14 @@ func ConvertPaymentTermToAPI(pt productcatalog.PaymentTermType) api.BillingPrice return api.BillingPricePaymentTerm(pt) } -// ConvertManagedByToAPI casts an InvoiceLineManagedBy to its API equivalent. -func ConvertManagedByToAPI(mb billing.InvoiceLineManagedBy) api.ResourceManagedBy { - return api.ResourceManagedBy(mb) +// ConvertLifecycleControllerToAPI maps the internal lifecycle owner to the public +// lifecycle controller. Subscription-owned resources are OpenMeter-controlled. +func ConvertLifecycleControllerToAPI(mb billing.InvoiceLineManagedBy) api.BillingLifecycleController { + if mb == billing.ManuallyManagedLine { + return api.BillingLifecycleControllerManual + } + + return api.BillingLifecycleControllerSystem } // ConvertCurrencyCodeToAPI casts a currencyx.Code to an API CurrencyCode. @@ -403,7 +408,7 @@ func convertAPIChargeStatus(s string) (meta.ChargeStatus, error) { } } -func convertFlatFeeChargeAPIToIntent(customerID string, flatFee api.CreateFlatFeeChargeRequest) (billingcharges.ChargeIntent, error) { +func convertFlatFeeChargeAPIToIntent(customerID string, flatFee api.CreateChargeFlatFeeRequest) (billingcharges.ChargeIntent, error) { var zero billingcharges.ChargeIntent taxConfig, err := billingprofiles.FromAPIBillingTaxConfig(flatFee.TaxConfig) @@ -469,7 +474,7 @@ func convertFlatFeeChargeAPIToIntent(customerID string, flatFee api.CreateFlatFe }), nil } -func convertUsageBaseChargeAPIToIntent(customerID string, usageBasedFee api.CreateUsageBasedChargeRequest) (billingcharges.ChargeIntent, error) { +func convertUsageBaseChargeAPIToIntent(customerID string, usageBasedFee api.CreateChargeUsageBasedRequest) (billingcharges.ChargeIntent, error) { var zero billingcharges.ChargeIntent taxConfig, err := billingprofiles.FromAPIBillingTaxConfig(usageBasedFee.TaxConfig) diff --git a/api/v3/handlers/customers/charges/create.go b/api/v3/handlers/customers/charges/create.go index 59019cf5ff..08cceba55e 100644 --- a/api/v3/handlers/customers/charges/create.go +++ b/api/v3/handlers/customers/charges/create.go @@ -52,8 +52,8 @@ func (h *handler) CreateCustomerCharge() CreateCustomerChargesHandler { } switch discriminator { - case string(api.BillingFlatFeeChargeTypeFlatFee): - flatFee, err := body.AsCreateFlatFeeChargeRequest() + case string(api.BillingChargeFlatFeeTypeFlatFee): + flatFee, err := body.AsCreateChargeFlatFeeRequest() if err != nil { return CreateCustomerChargesRequest{}, apierrors.NewBadRequestError(ctx, err, apierrors.InvalidParameters{ { @@ -76,8 +76,8 @@ func (h *handler) CreateCustomerCharge() CreateCustomerChargesHandler { } input.Intents = append(input.Intents, intent) - case string(api.BillingUsageBasedChargeTypeUsageBased): - usageBasedFee, err := body.AsCreateUsageBasedChargeRequest() + case string(api.BillingChargeUsageBasedTypeUsageBased): + usageBasedFee, err := body.AsCreateChargeUsageBasedRequest() if err != nil { return CreateCustomerChargesRequest{}, apierrors.NewBadRequestError(ctx, err, apierrors.InvalidParameters{ { diff --git a/api/v3/handlers/customers/convert.gen.go b/api/v3/handlers/customers/convert.gen.go index b923c15539..3672b6b976 100644 --- a/api/v3/handlers/customers/convert.gen.go +++ b/api/v3/handlers/customers/convert.gen.go @@ -35,7 +35,7 @@ func init() { currencyxCode := currencyx.Code(*source.Currency) customerCustomerMutate.Currency = ¤cyxCode } - customerCustomerMutate.BillingAddress = pV3BillingAddressToPModelsAddress(source.BillingAddress) + customerCustomerMutate.BillingAddress = pV3AddressToPModelsAddress(source.BillingAddress) pModelsMetadata, err := ConvertLabelsToMetadata(source.Labels) if err != nil { return customerCustomerMutate, err @@ -53,7 +53,7 @@ func init() { currencyxCode := currencyx.Code(*source.Currency) customerCustomerMutate.Currency = ¤cyxCode } - customerCustomerMutate.BillingAddress = pV3BillingAddressToPModelsAddress(source.BillingAddress) + customerCustomerMutate.BillingAddress = pV3AddressToPModelsAddress(source.BillingAddress) pModelsMetadata, err := ConvertLabelsToMetadata(source.Labels) if err != nil { return customerCustomerMutate, err @@ -63,7 +63,7 @@ func init() { } ToAPIBillingCustomer = func(source customer.Customer) v3.BillingCustomer { var v3BillingCustomer v3.BillingCustomer - v3BillingCustomer.BillingAddress = pModelsAddressToPV3BillingAddress(source.BillingAddress) + v3BillingCustomer.BillingAddress = pModelsAddressToPV3Address(source.BillingAddress) v3BillingCustomer.CreatedAt = timeTimeToTimeTime(source.ManagedResource.ManagedModel.CreatedAt) if source.Currency != nil { xstring := string(*source.Currency) @@ -103,25 +103,25 @@ func pCustomerCustomerUsageAttributionToPV3BillingCustomerUsageAttribution(sourc } return pV3BillingCustomerUsageAttribution } -func pModelsAddressToPV3BillingAddress(source *models.Address) *v3.BillingAddress { - var pV3BillingAddress *v3.BillingAddress +func pModelsAddressToPV3Address(source *models.Address) *v3.Address { + var pV3Address *v3.Address if source != nil { - var v3BillingAddress v3.BillingAddress - v3BillingAddress.City = (*source).City + var v3Address v3.Address + v3Address.City = (*source).City if (*source).Country != nil { xstring := string(*(*source).Country) - v3BillingAddress.Country = &xstring + v3Address.Country = &xstring } - v3BillingAddress.Line1 = (*source).Line1 - v3BillingAddress.Line2 = (*source).Line2 - v3BillingAddress.PhoneNumber = (*source).PhoneNumber - v3BillingAddress.PostalCode = (*source).PostalCode - v3BillingAddress.State = (*source).State - pV3BillingAddress = &v3BillingAddress + v3Address.Line1 = (*source).Line1 + v3Address.Line2 = (*source).Line2 + v3Address.PhoneNumber = (*source).PhoneNumber + v3Address.PostalCode = (*source).PostalCode + v3Address.State = (*source).State + pV3Address = &v3Address } - return pV3BillingAddress + return pV3Address } -func pV3BillingAddressToPModelsAddress(source *v3.BillingAddress) *models.Address { +func pV3AddressToPModelsAddress(source *v3.Address) *models.Address { var pModelsAddress *models.Address if source != nil { var modelsAddress models.Address diff --git a/api/v3/openapi.yaml b/api/v3/openapi.yaml index 41984708e0..2163136954 100644 --- a/api/v3/openapi.yaml +++ b/api/v3/openapi.yaml @@ -345,7 +345,7 @@ paths: $ref: '#/components/schemas/ULID' responses: '200': - description: BillingInvoice response. + description: Invoice response. content: application/json: schema: @@ -3241,42 +3241,6 @@ components: $ref: '#/components/schemas/PaginatedMeta' additionalProperties: false description: Page paginated response. - BillingAddress: - type: object - properties: - country: - allOf: - - $ref: '#/components/schemas/CountryCode' - description: |- - Country code in [ISO 3166-1](https://www.iso.org/iso-3166-country-codes.html) - alpha-2 format. - title: Country - postal_code: - type: string - description: Postal code. - title: Postal Code - state: - type: string - description: State or province. - title: State - city: - type: string - description: City. - title: City - line1: - type: string - description: First line of the address. - title: Line 1 - line2: - type: string - description: Second line of the address. - title: Line 2 - phone_number: - type: string - description: Phone number. - title: Phone Number - additionalProperties: false - description: Address BillingApp: type: object oneOf: @@ -4121,15 +4085,205 @@ components: BillingCharge: type: object oneOf: - - $ref: '#/components/schemas/BillingFlatFeeCharge' - - $ref: '#/components/schemas/BillingUsageBasedCharge' + - $ref: '#/components/schemas/BillingChargeFlatFee' + - $ref: '#/components/schemas/BillingChargeUsageBased' discriminator: propertyName: type mapping: - flat_fee: '#/components/schemas/BillingFlatFeeCharge' - usage_based: '#/components/schemas/BillingUsageBasedCharge' + flat_fee: '#/components/schemas/BillingChargeFlatFee' + usage_based: '#/components/schemas/BillingChargeUsageBased' description: Customer charge. title: Customer charge + BillingChargeFlatFee: + type: object + required: + - id + - name + - created_at + - updated_at + - type + - customer + - lifecycle_controller + - currency + - status + - invoice_at + - service_period + - full_service_period + - billing_period + - settlement_mode + - payment_term + - proration_configuration + - amount_after_proration + - price + properties: + id: + allOf: + - $ref: '#/components/schemas/ULID' + readOnly: true + name: + type: string + minLength: 1 + maxLength: 256 + description: |- + Display name of the resource. + + Between 1 and 256 characters. + description: + type: string + maxLength: 1024 + description: |- + Optional description of the resource. + + Maximum 1024 characters. + labels: + $ref: '#/components/schemas/Labels' + created_at: + allOf: + - $ref: '#/components/schemas/DateTime' + description: An ISO-8601 timestamp representation of entity creation date. + readOnly: true + updated_at: + allOf: + - $ref: '#/components/schemas/DateTime' + description: An ISO-8601 timestamp representation of entity last update date. + readOnly: true + deleted_at: + allOf: + - $ref: '#/components/schemas/DateTime' + description: An ISO-8601 timestamp representation of entity deletion date. + readOnly: true + type: + type: string + enum: + - flat_fee + description: The type of the charge. + title: Type + customer: + allOf: + - $ref: '#/components/schemas/BillingCustomerReference' + description: The customer owning the charge. + title: Customer + readOnly: true + lifecycle_controller: + allOf: + - $ref: '#/components/schemas/BillingLifecycleController' + description: |- + Indicates whether the charge lifecycle is controlled by OpenMeter or manually + overridden by the API user. + title: Lifecycle controller + readOnly: true + subscription: + allOf: + - $ref: '#/components/schemas/BillingSubscriptionReference' + description: |- + The subscription that originated the charge, when the charge was created from a + subscription item. + title: Subscription + readOnly: true + currency: + allOf: + - $ref: '#/components/schemas/CurrencyCode' + description: The currency of the charge. + title: Currency + status: + allOf: + - $ref: '#/components/schemas/BillingChargeStatus' + description: The lifecycle status of the charge. + title: Status + readOnly: true + invoice_at: + allOf: + - $ref: '#/components/schemas/DateTime' + description: The timestamp when the charge is intended to be invoiced. + title: Invoice at + service_period: + allOf: + - $ref: '#/components/schemas/ClosedPeriod' + description: The effective service period covered by the charge. + title: Service period + full_service_period: + allOf: + - $ref: '#/components/schemas/ClosedPeriod' + description: The full, unprorated service period of the charge. + title: Full service period + readOnly: true + billing_period: + allOf: + - $ref: '#/components/schemas/ClosedPeriod' + description: The billing period the charge belongs to. + title: Billing period + readOnly: true + advance_after: + allOf: + - $ref: '#/components/schemas/DateTime' + description: |- + The earliest time when the charge should be advanced again by background + processing. + title: Advance after + readOnly: true + unique_reference_id: + type: string + description: Unique reference ID of the charge. + title: Unique reference ID + settlement_mode: + allOf: + - $ref: '#/components/schemas/BillingSettlementMode' + description: Settlement mode of the charge. + title: Settlement mode + tax_config: + allOf: + - $ref: '#/components/schemas/BillingTaxConfig' + description: Tax configuration of the charge. + title: Tax configuration + payment_term: + allOf: + - $ref: '#/components/schemas/BillingPricePaymentTerm' + description: Payment term of the flat fee charge. + title: Payment term + discounts: + allOf: + - $ref: '#/components/schemas/BillingChargeFlatFeeDiscounts' + description: The discounts applied to the charge. + title: Discounts + feature_key: + type: string + description: The feature associated with the charge, when applicable. + title: Feature key + proration_configuration: + allOf: + - $ref: '#/components/schemas/BillingRateCardProrationConfiguration' + description: The proration configuration of the charge. + title: Proration configuration + amount_after_proration: + allOf: + - $ref: '#/components/schemas/CurrencyAmount' + description: The amount after proration of the charge. + title: Amount after proration + readOnly: true + price: + allOf: + - $ref: '#/components/schemas/BillingPrice' + description: The price of the charge. + title: Price + readOnly: true + additionalProperties: false + description: A flat fee charge for a customer. + title: Flat fee charge + BillingChargeFlatFeeDiscounts: + type: object + properties: + percentage: + type: number + minimum: 0 + maximum: 100 + description: Percentage discount applied to the price (0–100). + additionalProperties: false + description: |- + Discounts applicable to flat fee charges. + + This is the same as `ProductCatalog.Discounts` but without the `usage` field, + which is not applicable to flat fee charges. + title: Flat fee charge discounts BillingChargeReference: type: object required: @@ -4185,41 +4339,204 @@ components: The totals of a change. RealTime is only expanded when the `real_time_usage` expand is used. - BillingChargesExpand: - type: string - enum: - - real_time_usage - description: |- - Expands for customer charges. - - Values: - - - `real_time_usage`: The charge's real-time usage. - title: Customer charge expands - BillingCostBasis: + BillingChargeUsageBased: type: object required: - id - - fiat_code - - rate + - name - created_at + - updated_at + - type + - customer + - lifecycle_controller + - currency + - status + - invoice_at + - service_period + - full_service_period + - billing_period + - settlement_mode + - feature_key + - totals + - price properties: id: allOf: - $ref: '#/components/schemas/ULID' readOnly: true - fiat_code: - allOf: - - $ref: '#/components/schemas/CurrencyCode' - description: The fiat currency code for the cost basis. - rate: - allOf: - - $ref: '#/components/schemas/Numeric' - description: The cost rate for the currency. - effective_from: - allOf: - - $ref: '#/components/schemas/DateTime' - description: |- + name: + type: string + minLength: 1 + maxLength: 256 + description: |- + Display name of the resource. + + Between 1 and 256 characters. + description: + type: string + maxLength: 1024 + description: |- + Optional description of the resource. + + Maximum 1024 characters. + labels: + $ref: '#/components/schemas/Labels' + created_at: + allOf: + - $ref: '#/components/schemas/DateTime' + description: An ISO-8601 timestamp representation of entity creation date. + readOnly: true + updated_at: + allOf: + - $ref: '#/components/schemas/DateTime' + description: An ISO-8601 timestamp representation of entity last update date. + readOnly: true + deleted_at: + allOf: + - $ref: '#/components/schemas/DateTime' + description: An ISO-8601 timestamp representation of entity deletion date. + readOnly: true + type: + type: string + enum: + - usage_based + description: The type of the charge. + title: Type + customer: + allOf: + - $ref: '#/components/schemas/BillingCustomerReference' + description: The customer owning the charge. + title: Customer + readOnly: true + lifecycle_controller: + allOf: + - $ref: '#/components/schemas/BillingLifecycleController' + description: |- + Indicates whether the charge lifecycle is controlled by OpenMeter or manually + overridden by the API user. + title: Lifecycle controller + readOnly: true + subscription: + allOf: + - $ref: '#/components/schemas/BillingSubscriptionReference' + description: |- + The subscription that originated the charge, when the charge was created from a + subscription item. + title: Subscription + readOnly: true + currency: + allOf: + - $ref: '#/components/schemas/CurrencyCode' + description: The currency of the charge. + title: Currency + status: + allOf: + - $ref: '#/components/schemas/BillingChargeStatus' + description: The lifecycle status of the charge. + title: Status + readOnly: true + invoice_at: + allOf: + - $ref: '#/components/schemas/DateTime' + description: The timestamp when the charge is intended to be invoiced. + title: Invoice at + service_period: + allOf: + - $ref: '#/components/schemas/ClosedPeriod' + description: The effective service period covered by the charge. + title: Service period + full_service_period: + allOf: + - $ref: '#/components/schemas/ClosedPeriod' + description: The full, unprorated service period of the charge. + title: Full service period + readOnly: true + billing_period: + allOf: + - $ref: '#/components/schemas/ClosedPeriod' + description: The billing period the charge belongs to. + title: Billing period + readOnly: true + advance_after: + allOf: + - $ref: '#/components/schemas/DateTime' + description: |- + The earliest time when the charge should be advanced again by background + processing. + title: Advance after + readOnly: true + unique_reference_id: + type: string + description: Unique reference ID of the charge. + title: Unique reference ID + settlement_mode: + allOf: + - $ref: '#/components/schemas/BillingSettlementMode' + description: Settlement mode of the charge. + title: Settlement mode + tax_config: + allOf: + - $ref: '#/components/schemas/BillingTaxConfig' + description: Tax configuration of the charge. + title: Tax configuration + discounts: + allOf: + - $ref: '#/components/schemas/BillingRateCardDiscounts' + description: Discounts applied to the usage-based charge. + title: Discounts + feature_key: + type: string + description: The feature associated with the charge. + title: Feature key + totals: + allOf: + - $ref: '#/components/schemas/BillingChargeTotals' + description: Aggregated booked and realtime totals for the charge. + title: Totals for the charge + readOnly: true + price: + allOf: + - $ref: '#/components/schemas/BillingPrice' + description: The price of the charge. + title: Price + additionalProperties: false + description: A usage-based charge for a customer. + title: Usage-based charge + BillingChargesExpand: + type: string + enum: + - real_time_usage + description: |- + Expands for customer charges. + + Values: + + - `real_time_usage`: The charge's real-time usage. + title: Customer charge expands + BillingCostBasis: + type: object + required: + - id + - fiat_code + - rate + - created_at + properties: + id: + allOf: + - $ref: '#/components/schemas/ULID' + readOnly: true + fiat_code: + allOf: + - $ref: '#/components/schemas/CurrencyCode' + description: The fiat currency code for the cost basis. + rate: + allOf: + - $ref: '#/components/schemas/Numeric' + description: The cost rate for the currency. + effective_from: + allOf: + - $ref: '#/components/schemas/DateTime' + description: |- 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 be set to `now` by the system. @@ -4821,7 +5138,7 @@ components: title: Currency billing_address: allOf: - - $ref: '#/components/schemas/BillingAddress' + - $ref: '#/components/schemas/Address' description: The billing address of the customer. Used for tax and invoicing. title: Billing Address additionalProperties: false @@ -5090,32 +5407,79 @@ components: description: |- Per-unit cost configuration for a feature. Either a fixed manual amount or a dynamic LLM cost lookup. - BillingFlatFeeCharge: + BillingInvoice: + type: object + oneOf: + - $ref: '#/components/schemas/BillingInvoiceStandard' + discriminator: + propertyName: type + mapping: + standard: '#/components/schemas/BillingInvoiceStandard' + description: |- + An invoice issued to a customer. + + The `type` field determines the concrete variant: + + - `standard`: a standard invoice for charges owed. + BillingInvoiceAvailableActionDetails: + type: object + required: + - resulting_state + properties: + resulting_state: + type: string + description: The extended status the invoice will transition to after performing this action. + title: Resulting state + readOnly: true + additionalProperties: false + description: Details about an available invoice action including the resulting state. + BillingInvoiceAvailableActions: + type: object + properties: + advance: + allOf: + - $ref: '#/components/schemas/BillingInvoiceAvailableActionDetails' + description: Advance the invoice to the next workflow step. + title: Advance + readOnly: true + approve: + allOf: + - $ref: '#/components/schemas/BillingInvoiceAvailableActionDetails' + description: Approve the invoice for issuance. + title: Approve + readOnly: true + delete: + allOf: + - $ref: '#/components/schemas/BillingInvoiceAvailableActionDetails' + description: Delete the invoice. + title: Delete + readOnly: true + retry: + allOf: + - $ref: '#/components/schemas/BillingInvoiceAvailableActionDetails' + description: Retry a failed workflow step. + title: Retry + readOnly: true + snapshot_quantities: + allOf: + - $ref: '#/components/schemas/BillingInvoiceAvailableActionDetails' + description: Snapshot the current usage quantities. + title: Snapshot quantities + readOnly: true + additionalProperties: false + description: |- + The set of state-transition actions available for an invoice in its current + status. + + A field is present only when that action is permitted from the current state. + BillingInvoiceCustomer: type: object required: - id - name - - created_at - - updated_at - - type - - customer - - managed_by - - currency - - status - - invoice_at - - service_period - - full_service_period - - billing_period - - settlement_mode - - payment_term - - proration_configuration - - amount_after_proration - - price properties: id: - allOf: - - $ref: '#/components/schemas/ULID' - readOnly: true + $ref: '#/components/schemas/ULID' name: type: string minLength: 1 @@ -5124,258 +5488,25 @@ components: Display name of the resource. Between 1 and 256 characters. - description: - type: string - maxLength: 1024 - description: |- - Optional description of the resource. - - Maximum 1024 characters. - labels: - $ref: '#/components/schemas/Labels' - created_at: - allOf: - - $ref: '#/components/schemas/DateTime' - description: An ISO-8601 timestamp representation of entity creation date. - readOnly: true - updated_at: - allOf: - - $ref: '#/components/schemas/DateTime' - description: An ISO-8601 timestamp representation of entity last update date. - readOnly: true - deleted_at: - allOf: - - $ref: '#/components/schemas/DateTime' - description: An ISO-8601 timestamp representation of entity deletion date. - readOnly: true - type: - type: string - enum: - - flat_fee - description: The type of the charge. - title: Type - customer: - allOf: - - $ref: '#/components/schemas/BillingCustomerReference' - description: The customer owning the charge. - title: Customer - readOnly: true - managed_by: - allOf: - - $ref: '#/components/schemas/ResourceManagedBy' - description: The charge is managed by the following entity. - title: Managed by - readOnly: true - subscription: - allOf: - - $ref: '#/components/schemas/BillingSubscriptionReference' - description: |- - The subscription that originated the charge, when the charge was created from a - subscription item. - title: Subscription - readOnly: true - currency: - allOf: - - $ref: '#/components/schemas/CurrencyCode' - description: The currency of the charge. - title: Currency - status: - allOf: - - $ref: '#/components/schemas/BillingChargeStatus' - description: The lifecycle status of the charge. - title: Status - readOnly: true - invoice_at: - allOf: - - $ref: '#/components/schemas/DateTime' - description: The timestamp when the charge is intended to be invoiced. - title: Invoice at - service_period: - allOf: - - $ref: '#/components/schemas/ClosedPeriod' - description: The effective service period covered by the charge. - title: Service period - full_service_period: - allOf: - - $ref: '#/components/schemas/ClosedPeriod' - description: The full, unprorated service period of the charge. - title: Full service period - readOnly: true - billing_period: - allOf: - - $ref: '#/components/schemas/ClosedPeriod' - description: The billing period the charge belongs to. - title: Billing period - readOnly: true - advance_after: - allOf: - - $ref: '#/components/schemas/DateTime' - description: |- - The earliest time when the charge should be advanced again by background - processing. - title: Advance after - readOnly: true - unique_reference_id: - type: string - description: Unique reference ID of the charge. - title: Unique reference ID - settlement_mode: - allOf: - - $ref: '#/components/schemas/BillingSettlementMode' - description: Settlement mode of the charge. - title: Settlement mode - tax_config: - allOf: - - $ref: '#/components/schemas/BillingTaxConfig' - description: Tax configuration of the charge. - title: Tax configuration - payment_term: - allOf: - - $ref: '#/components/schemas/BillingPricePaymentTerm' - description: Payment term of the flat fee charge. - title: Payment term - discounts: - allOf: - - $ref: '#/components/schemas/BillingFlatFeeDiscounts' - description: The discounts applied to the charge. - title: Discounts - feature_key: - type: string - description: The feature associated with the charge, when applicable. - title: Feature key - proration_configuration: - allOf: - - $ref: '#/components/schemas/BillingRateCardProrationConfiguration' - description: The proration configuration of the charge. - title: Proration configuration - amount_after_proration: - allOf: - - $ref: '#/components/schemas/CurrencyAmount' - description: The amount after proration of the charge. - title: Amount after proration - readOnly: true - price: - allOf: - - $ref: '#/components/schemas/BillingPrice' - description: The price of the charge. - title: Price - readOnly: true - additionalProperties: false - description: A flat fee charge for a customer. - title: Flat fee charge - BillingFlatFeeDiscounts: - type: object - properties: - percentage: - type: number - minimum: 0 - maximum: 100 - description: Percentage discount applied to the price (0–100). - additionalProperties: false - description: |- - Discounts applicable to flat fee charges. - - This is the same as `ProductCatalog.Discounts` but without the `usage` field, - which is not applicable to flat fee charges. - title: Flat fee charge discounts - BillingInvoice: - type: object - oneOf: - - $ref: '#/components/schemas/BillingStandardInvoice' - discriminator: - propertyName: type - mapping: - standard: '#/components/schemas/BillingStandardInvoice' - description: |- - An invoice issued to a customer. - - The `type` field determines the concrete variant: - - - `standard`: a standard invoice for charges owed. - - `credit_note`: a credit note reducing a previous invoice amount. - BillingInvoiceAvailableActionDetails: - type: object - required: - - resulting_state - properties: - resulting_state: - type: string - description: The extended status the invoice will transition to after performing this action. - title: Resulting state - readOnly: true - additionalProperties: false - description: Details about an available invoice action including the resulting state. - BillingInvoiceAvailableActions: - type: object - properties: - advance: - allOf: - - $ref: '#/components/schemas/BillingInvoiceAvailableActionDetails' - description: Advance the invoice to the next workflow step. - title: Advance - readOnly: true - approve: - allOf: - - $ref: '#/components/schemas/BillingInvoiceAvailableActionDetails' - description: Approve the invoice for issuance. - title: Approve - readOnly: true - delete: - allOf: - - $ref: '#/components/schemas/BillingInvoiceAvailableActionDetails' - description: Delete the invoice. - title: Delete - readOnly: true - retry: - allOf: - - $ref: '#/components/schemas/BillingInvoiceAvailableActionDetails' - description: Retry a failed workflow step. - title: Retry - readOnly: true - snapshot_quantities: + usage_attribution: allOf: - - $ref: '#/components/schemas/BillingInvoiceAvailableActionDetails' - description: Snapshot the current usage quantities. - title: Snapshot quantities - readOnly: true - additionalProperties: false - description: |- - The set of state-transition actions available for an invoice in its current - status. - - A field is present only when that action is permitted from the current state. - BillingInvoiceCustomer: - type: object - required: - - id - - name - - usage_attribution - properties: - id: + - $ref: '#/components/schemas/BillingCustomerUsageAttribution' + description: Mapping to attribute metered usage to the customer by the event subject. + title: Usage Attribution + billing_address: allOf: - - $ref: '#/components/schemas/ULID' - description: Unique identifier for the customer. - readOnly: true + - $ref: '#/components/schemas/Address' + description: The billing address of the customer. Used for tax and invoicing. + title: Billing Address key: allOf: - $ref: '#/components/schemas/ExternalResourceKey' - description: Optional external resource key for the customer. - readOnly: true - name: - type: string - description: Human-readable name of the customer. - readOnly: true - billing_address: - allOf: - - $ref: '#/components/schemas/BillingAddress' - description: Optional billing address of the customer. - readOnly: true - usage_attribution: - allOf: - - $ref: '#/components/schemas/BillingCustomerUsageAttribution' - description: Usage attribution configuration for the customer on this invoice. - title: Usage attribution - readOnly: true + description: |- + Optional external resource key for the customer. + + Omitted when the customer was created without a key. Unlike on the customer + resource itself, the key is optional here because the invoice snapshot may + predate or omit it. additionalProperties: false description: Snapshot of the customer's information at the time the invoice was issued. BillingInvoiceDetailedLine: @@ -5459,11 +5590,11 @@ components: description: Credit applied to this detailed line. title: Credit applied readOnly: true - external_ids: + external_references: allOf: - - $ref: '#/components/schemas/BillingInvoiceLineExternalIds' + - $ref: '#/components/schemas/BillingInvoiceLineExternalReferences' description: External identifiers for this detailed line. - title: External IDs + title: External references readOnly: true quantity: allOf: @@ -5496,14 +5627,19 @@ components: - ratecard_percentage - ratecard_usage description: The reason a discount was applied to an invoice line. - BillingInvoiceExternalIds: + BillingInvoiceExternalReferences: type: object properties: - invoicing: + invoicing_id: type: string description: The ID assigned by the external invoicing app (e.g. Stripe invoice ID). title: Invoicing ID readOnly: true + payment_id: + type: string + description: The ID assigned by the external payment app (e.g. Stripe payment intent ID). + title: Payment ID + readOnly: true additionalProperties: false description: External identifiers assigned to an invoice by third-party systems. BillingInvoiceLine: @@ -5544,11 +5680,11 @@ components: description: Optional human-readable description of the discount. title: Description readOnly: true - external_ids: + external_references: allOf: - - $ref: '#/components/schemas/BillingInvoiceLineExternalIds' + - $ref: '#/components/schemas/BillingInvoiceLineExternalReferences' description: External identifiers for this discount. - title: External IDs + title: External references readOnly: true amount: allOf: @@ -5595,28 +5731,16 @@ components: readOnly: true additionalProperties: false description: Discounts applied to an invoice line item. - BillingInvoiceLineExternalIds: + BillingInvoiceLineExternalReferences: type: object properties: - invoicing: + invoicing_id: type: string description: The ID assigned by the external invoicing app. title: Invoicing ID readOnly: true - tax: - type: string - description: The ID assigned by the external tax app. - title: Tax ID - readOnly: true additionalProperties: false description: External identifiers for an invoice line item assigned by third-party systems. - BillingInvoiceLineManagedBy: - type: string - enum: - - subscription - - system - - manual - description: Indicates what entity manages the lifecycle of an invoice line. BillingInvoiceLineRateCard: type: object required: @@ -5635,7 +5759,8 @@ components: title: Tax config readOnly: true feature_key: - type: string + allOf: + - $ref: '#/components/schemas/ResourceKey' description: The feature key associated with this line's rate card. title: Feature key readOnly: true @@ -5666,39 +5791,221 @@ components: description: The reason this discount was applied. title: Reason readOnly: true - description: - type: string - description: Optional human-readable description of the discount. - title: Description + description: + type: string + description: Optional human-readable description of the discount. + title: Description + readOnly: true + external_references: + allOf: + - $ref: '#/components/schemas/BillingInvoiceLineExternalReferences' + description: External identifiers for this discount. + title: External references + readOnly: true + quantity: + allOf: + - $ref: '#/components/schemas/Numeric' + description: The usage quantity deducted (in billing units). + title: Quantity + readOnly: true + additionalProperties: false + description: A usage quantity discount applied to an invoice line item. + BillingInvoiceNumber: + type: string + minLength: 1 + maxLength: 256 + description: |- + InvoiceNumber is a unique identifier for the invoice, generated by the invoicing + app. + + The uniqueness depends on a lot of factors: + + - app setting (unique per app or unique per customer) + - multiple app scenarios (multiple apps generating invoices with the same + prefix) + example: INV-2024-01-01-01 + BillingInvoiceStandard: + type: object + required: + - id + - created_at + - updated_at + - number + - currency + - supplier + - customer + - totals + - service_period + - type + - status + - status_details + - workflow + properties: + id: + allOf: + - $ref: '#/components/schemas/ULID' + readOnly: true + description: + type: string + maxLength: 1024 + description: |- + Optional description of the resource. + + Maximum 1024 characters. + labels: + $ref: '#/components/schemas/Labels' + created_at: + allOf: + - $ref: '#/components/schemas/DateTime' + description: An ISO-8601 timestamp representation of entity creation date. + readOnly: true + updated_at: + allOf: + - $ref: '#/components/schemas/DateTime' + description: An ISO-8601 timestamp representation of entity last update date. + readOnly: true + deleted_at: + allOf: + - $ref: '#/components/schemas/DateTime' + description: An ISO-8601 timestamp representation of entity deletion date. + readOnly: true + number: + allOf: + - $ref: '#/components/schemas/BillingInvoiceNumber' + description: Human-readable invoice number generated by the invoicing app. + title: Number + readOnly: true + currency: + allOf: + - $ref: '#/components/schemas/CurrencyCode' + description: Three-letter ISO 4217 currency code for the invoice. + title: Currency + readOnly: true + supplier: + allOf: + - $ref: '#/components/schemas/BillingSupplier' + description: |- + Snapshot of the supplier's contact information at the time the invoice was + issued. + title: Supplier + readOnly: true + customer: + allOf: + - $ref: '#/components/schemas/BillingInvoiceCustomer' + description: Snapshot of the customer's information at the time the invoice was issued. + title: Customer + readOnly: true + totals: + allOf: + - $ref: '#/components/schemas/BillingTotals' + description: Aggregated financial totals for the invoice. + title: Totals + readOnly: true + service_period: + allOf: + - $ref: '#/components/schemas/ClosedPeriod' + description: |- + The service period covered by this invoice. + + For flat fee the service period can be empty which means `from` will be equals + to `to`. In other cases those fields will be filled with the actual service + period. + title: Service period + readOnly: true + validation_issues: + type: array + items: + $ref: '#/components/schemas/BillingInvoiceValidationIssue' + description: |- + Validation issues found during invoice processing. + + Present only when there are one or more validation findings. An empty list is + omitted. + title: Validation issues + readOnly: true + external_references: + allOf: + - $ref: '#/components/schemas/BillingInvoiceExternalReferences' + description: External identifiers assigned to this invoice by third-party systems. + title: External references + readOnly: true + type: + type: string + enum: + - standard + description: Discriminator field identifying this as a standard invoice. + title: Type + readOnly: true + status: + allOf: + - $ref: '#/components/schemas/BillingInvoiceStandardStatus' + description: Current lifecycle status of the invoice. + title: Status + readOnly: true + status_details: + allOf: + - $ref: '#/components/schemas/BillingInvoiceStatusDetails' + description: Detailed status information including available actions and workflow state. + title: Status details + readOnly: true + issued_at: + allOf: + - $ref: '#/components/schemas/DateTime' + description: Timestamp when the invoice was issued to the customer. + title: Issued at + readOnly: true + draft_until: + allOf: + - $ref: '#/components/schemas/DateTime' + description: |- + Timestamp until which the invoice remains in draft state. + + The invoice advances automatically once this time is reached. + title: Draft until + readOnly: true + quantity_snapshotted_at: + allOf: + - $ref: '#/components/schemas/DateTime' + description: Timestamp when usage quantities were last snapshotted for this invoice. + title: Quantity snapshotted at + readOnly: true + collection_at: + allOf: + - $ref: '#/components/schemas/DateTime' + description: Timestamp when collection was initiated for this invoice. + title: Collection at + readOnly: true + due_at: + allOf: + - $ref: '#/components/schemas/DateTime' + description: Timestamp when payment is due. + title: Due at readOnly: true - external_ids: + sent_to_customer_at: allOf: - - $ref: '#/components/schemas/BillingInvoiceLineExternalIds' - description: External identifiers for this discount. - title: External IDs + - $ref: '#/components/schemas/DateTime' + description: Timestamp when the invoice was sent to the customer. + title: Sent to customer at readOnly: true - quantity: + workflow: allOf: - - $ref: '#/components/schemas/Numeric' - description: The usage quantity deducted (in billing units). - title: Quantity + - $ref: '#/components/schemas/BillingInvoiceWorkflowSettings' + description: Workflow configuration snapshot captured at invoice creation time. + title: Workflow readOnly: true - additionalProperties: false - description: A usage quantity discount applied to an invoice line item. - BillingInvoiceNumber: - type: string - minLength: 1 - maxLength: 256 - description: |- - InvoiceNumber is a unique identifier for the invoice, generated by the invoicing - app. - - The uniqueness depends on a lot of factors: + lines: + type: array + items: + $ref: '#/components/schemas/BillingInvoiceLine' + description: |- + Line items on this invoice. - - app setting (unique per app or unique per customer) - - multiple app scenarios (multiple apps generating invoices with the same - prefix) - example: INV-2024-01-01-01 + Always returned on single-resource GET; omitted on list endpoints unless + explicitly expanded. + title: Lines + readOnly: true + additionalProperties: false + description: A standard invoice for charges owed by the customer. BillingInvoiceStandardLine: type: object required: @@ -5707,7 +6014,7 @@ components: - created_at - updated_at - type - - managed_by + - lifecycle_controller - service_period - totals - rate_card @@ -5756,11 +6063,13 @@ components: description: The type of charge this line item represents. title: Type readOnly: true - managed_by: + lifecycle_controller: allOf: - - $ref: '#/components/schemas/BillingInvoiceLineManagedBy' - description: The entity that manages this line item's lifecycle. - title: Managed by + - $ref: '#/components/schemas/BillingLifecycleController' + description: |- + Indicates whether this line item's lifecycle is controlled by OpenMeter or + manually overridden by the API user. + title: Lifecycle controller readOnly: true service_period: allOf: @@ -5787,11 +6096,11 @@ components: description: Credit applied to this line item. title: Credit applied readOnly: true - external_ids: + external_references: allOf: - - $ref: '#/components/schemas/BillingInvoiceLineExternalIds' + - $ref: '#/components/schemas/BillingInvoiceLineExternalReferences' description: External identifiers for this line item assigned by third-party systems. - title: External IDs + title: External references readOnly: true subscription: allOf: @@ -5828,6 +6137,18 @@ components: Each line represents a single charge, typically associated with a rate card from a subscription. Detailed (child) lines are nested under `detailed_lines` when present. + BillingInvoiceStandardStatus: + type: string + enum: + - draft + - issuing + - issued + - payment_processing + - overdue + - paid + - uncollectible + - voided + description: Lifecycle status of a standard invoice. BillingInvoiceStatusDetails: type: object required: @@ -5958,14 +6279,14 @@ components: BillingInvoiceWorkflowSettings: type: object required: - - source_billing_profile_id + - source_billing_profile - workflow properties: - source_billing_profile_id: + source_billing_profile: allOf: - - $ref: '#/components/schemas/ULID' - description: The ID of the billing profile that was the source of this workflow snapshot. - title: Source billing profile ID + - $ref: '#/components/schemas/BillingProfileReference' + description: The billing profile that was the source of this workflow snapshot. + title: Source billing profile readOnly: true workflow: allOf: @@ -5981,6 +6302,20 @@ components: readOnly: true additionalProperties: false description: Snapshot of the billing workflow configuration captured at invoice creation. + BillingLifecycleController: + type: string + enum: + - system + - manual + description: |- + Identifies whether a resource lifecycle is controlled by OpenMeter or manually + overridden by the API user. + + Values: + + - `system`: The resource lifecycle is controlled by OpenMeter. + - `manual`: The resource lifecycle was manually overridden by the API user. + title: Lifecycle controller BillingParty: type: object properties: @@ -6757,209 +7092,15 @@ components: - $ref: '#/components/schemas/Numeric' description: The customer is committed to spend at least the amount. title: Minimum amount - maximum_amount: - allOf: - - $ref: '#/components/schemas/Numeric' - description: The customer is limited to spend at most the amount. - title: Maximum amount - additionalProperties: false - description: |- - Spend commitments for a rate card. The customer is committed to spend at least - the minimum amount and at most the maximum amount. - BillingStandardInvoice: - type: object - required: - - id - - created_at - - updated_at - - number - - currency - - supplier - - customer - - totals - - service_period - - type - - status - - status_details - - workflow - properties: - id: - allOf: - - $ref: '#/components/schemas/ULID' - readOnly: true - description: - type: string - maxLength: 1024 - description: |- - Optional description of the resource. - - Maximum 1024 characters. - labels: - $ref: '#/components/schemas/Labels' - created_at: - allOf: - - $ref: '#/components/schemas/DateTime' - description: An ISO-8601 timestamp representation of entity creation date. - readOnly: true - updated_at: - allOf: - - $ref: '#/components/schemas/DateTime' - description: An ISO-8601 timestamp representation of entity last update date. - readOnly: true - deleted_at: - allOf: - - $ref: '#/components/schemas/DateTime' - description: An ISO-8601 timestamp representation of entity deletion date. - readOnly: true - number: - allOf: - - $ref: '#/components/schemas/BillingInvoiceNumber' - description: Human-readable invoice number generated by the invoicing app. - title: Number - readOnly: true - currency: - allOf: - - $ref: '#/components/schemas/CurrencyCode' - description: Three-letter ISO 4217 currency code for the invoice. - title: Currency - readOnly: true - supplier: - allOf: - - $ref: '#/components/schemas/BillingSupplier' - description: |- - Snapshot of the supplier's contact information at the time the invoice was - issued. - title: Supplier - readOnly: true - customer: - allOf: - - $ref: '#/components/schemas/BillingInvoiceCustomer' - description: Snapshot of the customer's information at the time the invoice was issued. - title: Customer - readOnly: true - totals: - allOf: - - $ref: '#/components/schemas/BillingTotals' - description: Aggregated financial totals for the invoice. - title: Totals - readOnly: true - service_period: - allOf: - - $ref: '#/components/schemas/ClosedPeriod' - description: |- - The service period covered by this invoice. - - For flat fee the service period can be empty which means `from` will be equals - to `to`. In other cases those fields will be filled with the actual service - period. - title: Service period - readOnly: true - validation_issues: - type: array - items: - $ref: '#/components/schemas/BillingInvoiceValidationIssue' - description: |- - Validation issues found during invoice processing. - - Present only when there are one or more validation findings. An empty list is - omitted. - title: Validation issues - readOnly: true - external_ids: - allOf: - - $ref: '#/components/schemas/BillingInvoiceExternalIds' - description: External identifiers assigned to this invoice by third-party systems. - title: External IDs - readOnly: true - type: - type: string - enum: - - standard - description: Discriminator field identifying this as a standard invoice. - title: Type - readOnly: true - status: - allOf: - - $ref: '#/components/schemas/BillingStandardInvoiceStatus' - description: Current lifecycle status of the invoice. - title: Status - readOnly: true - status_details: - allOf: - - $ref: '#/components/schemas/BillingInvoiceStatusDetails' - description: Detailed status information including available actions and workflow state. - title: Status details - readOnly: true - issued_at: - allOf: - - $ref: '#/components/schemas/DateTime' - description: Timestamp when the invoice was issued to the customer. - title: Issued at - readOnly: true - draft_until: - allOf: - - $ref: '#/components/schemas/DateTime' - description: |- - Timestamp until which the invoice remains in draft state. - - The invoice advances automatically once this time is reached. - title: Draft until - readOnly: true - quantity_snapshotted_at: - allOf: - - $ref: '#/components/schemas/DateTime' - description: Timestamp when usage quantities were last snapshotted for this invoice. - title: Quantity snapshotted at - readOnly: true - collection_at: - allOf: - - $ref: '#/components/schemas/DateTime' - description: Timestamp when collection was initiated for this invoice. - title: Collection at - readOnly: true - due_at: - allOf: - - $ref: '#/components/schemas/DateTime' - description: Timestamp when payment is due. - title: Due at - readOnly: true - sent_to_customer_at: - allOf: - - $ref: '#/components/schemas/DateTime' - description: Timestamp when the invoice was sent to the customer. - title: Sent to customer at - readOnly: true - workflow: - allOf: - - $ref: '#/components/schemas/BillingInvoiceWorkflowSettings' - description: Workflow configuration snapshot captured at invoice creation time. - title: Workflow - readOnly: true - lines: - type: array - items: - $ref: '#/components/schemas/BillingInvoiceLine' - description: |- - Line items on this invoice. - - Always returned on single-resource GET; omitted on list endpoints unless - explicitly expanded. - title: Lines - readOnly: true + maximum_amount: + allOf: + - $ref: '#/components/schemas/Numeric' + description: The customer is limited to spend at most the amount. + title: Maximum amount additionalProperties: false - description: A standard invoice for charges owed by the customer. - BillingStandardInvoiceStatus: - type: string - enum: - - draft - - issuing - - issued - - payment_processing - - overdue - - paid - - uncollectible - - voided - description: Lifecycle status of a standard invoice. + description: |- + Spend commitments for a rate card. The customer is committed to spend at least + the minimum amount and at most the maximum amount. BillingSubscription: type: object required: @@ -7325,27 +7466,30 @@ components: description: Subscription status. BillingSupplier: type: object - required: - - id - - name - - address properties: id: type: string - description: Unique identifier for the supplier. - readOnly: true + description: Unique identifier for the party. name: type: string - description: Human-readable name of the supplier. + description: Legal name or representation of the party. tax_id: - type: string - description: Tax identity of the supplier. - address: allOf: - - $ref: '#/components/schemas/Address' - description: Address of the supplier. + - $ref: '#/components/schemas/BillingPartyTaxIdentity' + description: |- + The entity's legal identification used for tax purposes. They may have other + numbers, but we're only interested in those valid for tax purposes. + addresses: + allOf: + - $ref: '#/components/schemas/BillingPartyAddresses' + description: Address for where information should be sent if needed. additionalProperties: false - description: Snapshot of the supplier's information at the time the invoice was issued. + description: |- + Snapshot of the supplier's information at the time the invoice was issued. + + Structurally a read-only subset of `BillingParty` (the type configured on the + billing profile), so the snapshot stays aligned with the source. `key` is + omitted because it is not part of the snapshotted supplier data. BillingTaxBehavior: type: string enum: @@ -7602,232 +7746,71 @@ components: description: |- The number of decimal places to retain after rounding. - Only meaningful when rounding is not "none". Defaults to 0 (round to whole - numbers). - title: Rounding precision (decimal places) - default: 0 - display_unit: - type: string - description: |- - A human-readable label for the converted unit shown on invoices and in the - customer portal (e.g., "GB", "hours", "M tokens"). - - Optional. When omitted, no unit label is rendered. - title: Display unit label - additionalProperties: false - description: |- - Unit conversion configuration. - - Transforms raw metered quantities into billing-ready units before pricing and - entitlement evaluation. Applied at the rate card level so the same feature can - be billed in different units across plans. - - Examples: - - - Meter bytes, bill GB: operation=divide, conversionFactor=1e9, - rounding=ceiling, displayUnit="GB" - - Meter seconds, bill hours: operation=divide, conversionFactor=3600, - rounding=ceiling, displayUnit="hours" - - Cost + 20% margin: operation=multiply, conversionFactor=1.2 - - Bill per million tokens: operation=divide, conversionFactor=1e6, - rounding=ceiling, displayUnit="M" - - v1 equivalents: - - - DynamicPrice(multiplier): operation=multiply, conversionFactor=multiplier + - UnitPrice(amount=1) - - PackagePrice(amount, quantityPerPkg): operation=divide, - conversionFactor=quantityPerPkg, rounding=ceiling + UnitPrice(amount) - BillingUnitConfigOperation: - type: string - enum: - - divide - - multiply - description: |- - The arithmetic operation used to convert raw metered units into billing units. - - - `divide`: Divide the metered quantity by the conversion factor (e.g., bytes ÷ - 1e9 = GB). - - `multiply`: Multiply the metered quantity by the conversion factor (e.g., cost - × 1.2 = cost + 20% margin). - BillingUnitConfigRoundingMode: - type: string - enum: - - ceiling - - floor - - half_up - - none - description: |- - The rounding mode applied to the converted quantity for invoicing. - - Rounding is applied only to the invoiced quantity. Entitlement balance checks - use the precise decimal value after conversion. - - - `ceiling`: Round up to the next integer (typical for package-style billing). - - `floor`: Round down to the previous integer. - - `half_up`: Round to the nearest integer, with 0.5 rounding up. - - `none`: No rounding; the converted value is used as-is. - BillingUsageBasedCharge: - type: object - required: - - id - - name - - created_at - - updated_at - - type - - customer - - managed_by - - currency - - status - - invoice_at - - service_period - - full_service_period - - billing_period - - settlement_mode - - feature_key - - totals - - price - properties: - id: - allOf: - - $ref: '#/components/schemas/ULID' - readOnly: true - name: - type: string - minLength: 1 - maxLength: 256 - description: |- - Display name of the resource. - - Between 1 and 256 characters. - description: - type: string - maxLength: 1024 - description: |- - Optional description of the resource. - - Maximum 1024 characters. - labels: - $ref: '#/components/schemas/Labels' - created_at: - allOf: - - $ref: '#/components/schemas/DateTime' - description: An ISO-8601 timestamp representation of entity creation date. - readOnly: true - updated_at: - allOf: - - $ref: '#/components/schemas/DateTime' - description: An ISO-8601 timestamp representation of entity last update date. - readOnly: true - deleted_at: - allOf: - - $ref: '#/components/schemas/DateTime' - description: An ISO-8601 timestamp representation of entity deletion date. - readOnly: true - type: - type: string - enum: - - usage_based - description: The type of the charge. - title: Type - customer: - allOf: - - $ref: '#/components/schemas/BillingCustomerReference' - description: The customer owning the charge. - title: Customer - readOnly: true - managed_by: - allOf: - - $ref: '#/components/schemas/ResourceManagedBy' - description: The charge is managed by the following entity. - title: Managed by - readOnly: true - subscription: - allOf: - - $ref: '#/components/schemas/BillingSubscriptionReference' - description: |- - The subscription that originated the charge, when the charge was created from a - subscription item. - title: Subscription - readOnly: true - currency: - allOf: - - $ref: '#/components/schemas/CurrencyCode' - description: The currency of the charge. - title: Currency - status: - allOf: - - $ref: '#/components/schemas/BillingChargeStatus' - description: The lifecycle status of the charge. - title: Status - readOnly: true - invoice_at: - allOf: - - $ref: '#/components/schemas/DateTime' - description: The timestamp when the charge is intended to be invoiced. - title: Invoice at - service_period: - allOf: - - $ref: '#/components/schemas/ClosedPeriod' - description: The effective service period covered by the charge. - title: Service period - full_service_period: - allOf: - - $ref: '#/components/schemas/ClosedPeriod' - description: The full, unprorated service period of the charge. - title: Full service period - readOnly: true - billing_period: - allOf: - - $ref: '#/components/schemas/ClosedPeriod' - description: The billing period the charge belongs to. - title: Billing period - readOnly: true - advance_after: - allOf: - - $ref: '#/components/schemas/DateTime' - description: |- - The earliest time when the charge should be advanced again by background - processing. - title: Advance after - readOnly: true - unique_reference_id: - type: string - description: Unique reference ID of the charge. - title: Unique reference ID - settlement_mode: - allOf: - - $ref: '#/components/schemas/BillingSettlementMode' - description: Settlement mode of the charge. - title: Settlement mode - tax_config: - allOf: - - $ref: '#/components/schemas/BillingTaxConfig' - description: Tax configuration of the charge. - title: Tax configuration - discounts: - allOf: - - $ref: '#/components/schemas/BillingRateCardDiscounts' - description: Discounts applied to the usage-based charge. - title: Discounts - feature_key: - type: string - description: The feature associated with the charge. - title: Feature key - totals: - allOf: - - $ref: '#/components/schemas/BillingChargeTotals' - description: Aggregated booked and realtime totals for the charge. - title: Totals for the charge - readOnly: true - price: - allOf: - - $ref: '#/components/schemas/BillingPrice' - description: The price of the charge. - title: Price + Only meaningful when rounding is not "none". Defaults to 0 (round to whole + numbers). + title: Rounding precision (decimal places) + default: 0 + display_unit: + type: string + description: |- + A human-readable label for the converted unit shown on invoices and in the + customer portal (e.g., "GB", "hours", "M tokens"). + + Optional. When omitted, no unit label is rendered. + title: Display unit label additionalProperties: false - description: A usage-based charge for a customer. - title: Usage-based charge + description: |- + Unit conversion configuration. + + Transforms raw metered quantities into billing-ready units before pricing and + entitlement evaluation. Applied at the rate card level so the same feature can + be billed in different units across plans. + + Examples: + + - Meter bytes, bill GB: operation=divide, conversionFactor=1e9, + rounding=ceiling, displayUnit="GB" + - Meter seconds, bill hours: operation=divide, conversionFactor=3600, + rounding=ceiling, displayUnit="hours" + - Cost + 20% margin: operation=multiply, conversionFactor=1.2 + - Bill per million tokens: operation=divide, conversionFactor=1e6, + rounding=ceiling, displayUnit="M" + + v1 equivalents: + + - DynamicPrice(multiplier): operation=multiply, conversionFactor=multiplier + + UnitPrice(amount=1) + - PackagePrice(amount, quantityPerPkg): operation=divide, + conversionFactor=quantityPerPkg, rounding=ceiling + UnitPrice(amount) + BillingUnitConfigOperation: + type: string + enum: + - divide + - multiply + description: |- + The arithmetic operation used to convert raw metered units into billing units. + + - `divide`: Divide the metered quantity by the conversion factor (e.g., bytes ÷ + 1e9 = GB). + - `multiply`: Multiply the metered quantity by the conversion factor (e.g., cost + × 1.2 = cost + 20% margin). + BillingUnitConfigRoundingMode: + type: string + enum: + - ceiling + - floor + - half_up + - none + description: |- + The rounding mode applied to the converted quantity for invoicing. + + Rounding is applied only to the invoiced quantity. Entitlement balance checks + use the precise decimal value after conversion. + + - `ceiling`: Round up to the next integer (typical for package-style billing). + - `floor`: Round down to the previous integer. + - `half_up`: Round to the nearest integer, with 0.5 rounding up. + - `none`: No rounding; the converted value is used as-is. BillingWorkflow: type: object properties: @@ -8168,44 +8151,235 @@ components: Between 1 and 256 characters. description: type: string - maxLength: 1024 - description: |- - Optional description of the resource. - - Maximum 1024 characters. - labels: - $ref: '#/components/schemas/Labels' - supplier: + maxLength: 1024 + description: |- + Optional description of the resource. + + Maximum 1024 characters. + labels: + $ref: '#/components/schemas/Labels' + supplier: + allOf: + - $ref: '#/components/schemas/BillingParty' + description: |- + The name and contact information for the supplier this billing profile + represents + workflow: + allOf: + - $ref: '#/components/schemas/BillingWorkflow' + description: The billing workflow settings for this profile + apps: + allOf: + - $ref: '#/components/schemas/BillingProfileAppReferences' + description: The applications used by this billing profile. + default: + type: boolean + description: Whether this is the default profile. + additionalProperties: false + description: BillingProfile create request. + CreateChargeFlatFeeRequest: + type: object + required: + - name + - type + - currency + - invoice_at + - service_period + - settlement_mode + - payment_term + - proration_configuration + - amount_before_proration + properties: + name: + type: string + minLength: 1 + maxLength: 256 + description: |- + Display name of the resource. + + Between 1 and 256 characters. + description: + type: string + maxLength: 1024 + description: |- + Optional description of the resource. + + Maximum 1024 characters. + labels: + $ref: '#/components/schemas/Labels' + type: + type: string + enum: + - flat_fee + description: The type of the charge. + title: Type + currency: + allOf: + - $ref: '#/components/schemas/CurrencyCode' + description: The currency of the charge. + title: Currency + invoice_at: + allOf: + - $ref: '#/components/schemas/DateTime' + description: The timestamp when the charge is intended to be invoiced. + title: Invoice at + service_period: + allOf: + - $ref: '#/components/schemas/ClosedPeriod' + description: The effective service period covered by the charge. + title: Service period + unique_reference_id: + type: string + description: Unique reference ID of the charge. + title: Unique reference ID + settlement_mode: + allOf: + - $ref: '#/components/schemas/BillingSettlementMode' + description: Settlement mode of the charge. + title: Settlement mode + tax_config: + allOf: + - $ref: '#/components/schemas/BillingTaxConfig' + description: Tax configuration of the charge. + title: Tax configuration + payment_term: + allOf: + - $ref: '#/components/schemas/BillingPricePaymentTerm' + description: Payment term of the flat fee charge. + title: Payment term + discounts: + allOf: + - $ref: '#/components/schemas/BillingChargeFlatFeeDiscounts' + description: The discounts applied to the charge. + title: Discounts + feature_key: + type: string + description: The feature associated with the charge, when applicable. + title: Feature key + proration_configuration: + allOf: + - $ref: '#/components/schemas/BillingRateCardProrationConfiguration' + description: The proration configuration of the charge. + title: Proration configuration + amount_before_proration: + allOf: + - $ref: '#/components/schemas/CurrencyAmount' + description: The amount before proration of the charge. + title: Amount before proration + full_service_period: + allOf: + - $ref: '#/components/schemas/ClosedPeriod' + description: The full, unprorated service period of the charge. + title: Full service period + billing_period: + allOf: + - $ref: '#/components/schemas/ClosedPeriod' + description: The billing period the charge belongs to. + title: Billing period + additionalProperties: false + description: Flat fee charge create request. + CreateChargeRequest: + type: object + oneOf: + - $ref: '#/components/schemas/CreateChargeFlatFeeRequest' + - $ref: '#/components/schemas/CreateChargeUsageBasedRequest' + discriminator: + propertyName: type + mapping: + flat_fee: '#/components/schemas/CreateChargeFlatFeeRequest' + usage_based: '#/components/schemas/CreateChargeUsageBasedRequest' + description: Customer charge. + title: Customer charge create request. + CreateChargeUsageBasedRequest: + type: object + required: + - name + - type + - currency + - invoice_at + - service_period + - settlement_mode + - feature_key + - price + properties: + name: + type: string + minLength: 1 + maxLength: 256 + description: |- + Display name of the resource. + + Between 1 and 256 characters. + description: + type: string + maxLength: 1024 + description: |- + Optional description of the resource. + + Maximum 1024 characters. + labels: + $ref: '#/components/schemas/Labels' + type: + type: string + enum: + - usage_based + description: The type of the charge. + title: Type + currency: + allOf: + - $ref: '#/components/schemas/CurrencyCode' + description: The currency of the charge. + title: Currency + invoice_at: + allOf: + - $ref: '#/components/schemas/DateTime' + description: The timestamp when the charge is intended to be invoiced. + title: Invoice at + service_period: + allOf: + - $ref: '#/components/schemas/ClosedPeriod' + description: The effective service period covered by the charge. + title: Service period + unique_reference_id: + type: string + description: Unique reference ID of the charge. + title: Unique reference ID + settlement_mode: + allOf: + - $ref: '#/components/schemas/BillingSettlementMode' + description: Settlement mode of the charge. + title: Settlement mode + tax_config: + allOf: + - $ref: '#/components/schemas/BillingTaxConfig' + description: Tax configuration of the charge. + title: Tax configuration + discounts: + allOf: + - $ref: '#/components/schemas/BillingRateCardDiscounts' + description: Discounts applied to the usage-based charge. + title: Discounts + feature_key: + type: string + description: The feature associated with the charge. + title: Feature key + price: allOf: - - $ref: '#/components/schemas/BillingParty' - description: |- - The name and contact information for the supplier this billing profile - represents - workflow: + - $ref: '#/components/schemas/BillingPrice' + description: The price of the charge. + title: Price + full_service_period: allOf: - - $ref: '#/components/schemas/BillingWorkflow' - description: The billing workflow settings for this profile - apps: + - $ref: '#/components/schemas/ClosedPeriod' + description: The full, unprorated service period of the charge. + title: Full service period + billing_period: allOf: - - $ref: '#/components/schemas/BillingProfileAppReferences' - description: The applications used by this billing profile. - default: - type: boolean - description: Whether this is the default profile. + - $ref: '#/components/schemas/ClosedPeriod' + description: The billing period the charge belongs to. + title: Billing period additionalProperties: false - description: BillingProfile create request. - CreateChargeRequest: - type: object - oneOf: - - $ref: '#/components/schemas/CreateFlatFeeChargeRequest' - - $ref: '#/components/schemas/CreateUsageBasedChargeRequest' - discriminator: - propertyName: type - mapping: - flat_fee: '#/components/schemas/CreateFlatFeeChargeRequest' - usage_based: '#/components/schemas/CreateUsageBasedChargeRequest' - description: Customer charge. - title: Customer charge create request. + description: Usage-based charge create request. CreateCostBasisRequest: type: object required: @@ -8471,7 +8645,7 @@ components: title: Currency billing_address: allOf: - - $ref: '#/components/schemas/BillingAddress' + - $ref: '#/components/schemas/Address' description: The billing address of the customer. Used for tax and invoicing. title: Billing Address additionalProperties: false @@ -8518,107 +8692,6 @@ components: title: Unit cost additionalProperties: false description: Feature create request. - CreateFlatFeeChargeRequest: - type: object - required: - - name - - type - - currency - - invoice_at - - service_period - - settlement_mode - - payment_term - - proration_configuration - - amount_before_proration - properties: - name: - type: string - minLength: 1 - maxLength: 256 - description: |- - Display name of the resource. - - Between 1 and 256 characters. - description: - type: string - maxLength: 1024 - description: |- - Optional description of the resource. - - Maximum 1024 characters. - labels: - $ref: '#/components/schemas/Labels' - type: - type: string - enum: - - flat_fee - description: The type of the charge. - title: Type - currency: - allOf: - - $ref: '#/components/schemas/CurrencyCode' - description: The currency of the charge. - title: Currency - invoice_at: - allOf: - - $ref: '#/components/schemas/DateTime' - description: The timestamp when the charge is intended to be invoiced. - title: Invoice at - service_period: - allOf: - - $ref: '#/components/schemas/ClosedPeriod' - description: The effective service period covered by the charge. - title: Service period - unique_reference_id: - type: string - description: Unique reference ID of the charge. - title: Unique reference ID - settlement_mode: - allOf: - - $ref: '#/components/schemas/BillingSettlementMode' - description: Settlement mode of the charge. - title: Settlement mode - tax_config: - allOf: - - $ref: '#/components/schemas/BillingTaxConfig' - description: Tax configuration of the charge. - title: Tax configuration - payment_term: - allOf: - - $ref: '#/components/schemas/BillingPricePaymentTerm' - description: Payment term of the flat fee charge. - title: Payment term - discounts: - allOf: - - $ref: '#/components/schemas/BillingFlatFeeDiscounts' - description: The discounts applied to the charge. - title: Discounts - feature_key: - type: string - description: The feature associated with the charge, when applicable. - title: Feature key - proration_configuration: - allOf: - - $ref: '#/components/schemas/BillingRateCardProrationConfiguration' - description: The proration configuration of the charge. - title: Proration configuration - amount_before_proration: - allOf: - - $ref: '#/components/schemas/CurrencyAmount' - description: The amount before proration of the charge. - title: Amount before proration - full_service_period: - allOf: - - $ref: '#/components/schemas/ClosedPeriod' - description: The full, unprorated service period of the charge. - title: Full service period - billing_period: - allOf: - - $ref: '#/components/schemas/ClosedPeriod' - description: The billing period the charge belongs to. - title: Billing period - additionalProperties: false - description: Flat fee charge create request. CreateMeterRequest: type: object required: @@ -8833,96 +8906,6 @@ components: title: App type to tax code mappings additionalProperties: false description: TaxCode create request. - CreateUsageBasedChargeRequest: - type: object - required: - - name - - type - - currency - - invoice_at - - service_period - - settlement_mode - - feature_key - - price - properties: - name: - type: string - minLength: 1 - maxLength: 256 - description: |- - Display name of the resource. - - Between 1 and 256 characters. - description: - type: string - maxLength: 1024 - description: |- - Optional description of the resource. - - Maximum 1024 characters. - labels: - $ref: '#/components/schemas/Labels' - type: - type: string - enum: - - usage_based - description: The type of the charge. - title: Type - currency: - allOf: - - $ref: '#/components/schemas/CurrencyCode' - description: The currency of the charge. - title: Currency - invoice_at: - allOf: - - $ref: '#/components/schemas/DateTime' - description: The timestamp when the charge is intended to be invoiced. - title: Invoice at - service_period: - allOf: - - $ref: '#/components/schemas/ClosedPeriod' - description: The effective service period covered by the charge. - title: Service period - unique_reference_id: - type: string - description: Unique reference ID of the charge. - title: Unique reference ID - settlement_mode: - allOf: - - $ref: '#/components/schemas/BillingSettlementMode' - description: Settlement mode of the charge. - title: Settlement mode - tax_config: - allOf: - - $ref: '#/components/schemas/BillingTaxConfig' - description: Tax configuration of the charge. - title: Tax configuration - discounts: - allOf: - - $ref: '#/components/schemas/BillingRateCardDiscounts' - description: Discounts applied to the usage-based charge. - title: Discounts - feature_key: - type: string - description: The feature associated with the charge. - title: Feature key - price: - allOf: - - $ref: '#/components/schemas/BillingPrice' - description: The price of the charge. - title: Price - full_service_period: - allOf: - - $ref: '#/components/schemas/ClosedPeriod' - description: The full, unprorated service period of the charge. - title: Full service period - billing_period: - allOf: - - $ref: '#/components/schemas/ClosedPeriod' - description: The billing period the charge belongs to. - title: Billing period - additionalProperties: false - description: Usage-based charge create request. CreditBalance: type: object required: @@ -10672,21 +10655,6 @@ components: description: A key is a unique string that is used to identify a resource. title: Resource Key example: resource_key - ResourceManagedBy: - type: string - enum: - - manual - - system - - subscription - description: |- - Identifies which system manages a resource. - - Values: - - - `manual`: The resource is managed manually (overridden by our API users). - - `system`: The resource is managed by the system. - - `subscription`: The resource is managed by the subscription. - title: Resource managed by StringFieldFilter: anyOf: - type: string @@ -11158,7 +11126,7 @@ components: title: Currency billing_address: allOf: - - $ref: '#/components/schemas/BillingAddress' + - $ref: '#/components/schemas/Address' description: The billing address of the customer. Used for tax and invoicing. title: Billing Address additionalProperties: false diff --git a/e2e/billinginvoices_v3_test.go b/e2e/billinginvoices_v3_test.go index 8e972ef9d3..2714eaefbe 100644 --- a/e2e/billinginvoices_v3_test.go +++ b/e2e/billinginvoices_v3_test.go @@ -226,11 +226,11 @@ func TestV3GetBillingInvoice(t *testing.T) { require.NotNil(t, inv) // The union must decode as a standard invoice. - stdInv, err := inv.AsBillingStandardInvoice() - require.NoError(t, err, "expected invoice to decode as BillingStandardInvoice") + stdInv, err := inv.AsBillingInvoiceStandard() + require.NoError(t, err, "expected invoice to decode as BillingInvoiceStandard") assert.Equal(t, invoiceID, stdInv.Id) - assert.Equal(t, apiv3.BillingStandardInvoiceTypeStandard, stdInv.Type) + assert.Equal(t, apiv3.BillingInvoiceStandardTypeStandard, stdInv.Type) assert.Equal(t, apiv3.CurrencyCode("USD"), stdInv.Currency) assert.NotEmpty(t, stdInv.Status) assert.NotEmpty(t, stdInv.CreatedAt)