UNPKG

orb-billing

Version:

The official TypeScript library for the Orb API

1,188 lines (1,187 loc) 63 kB
import { APIResource } from "../../resource.js"; import * as Core from "../../core.js"; import * as Shared from "../shared.js"; import * as ExternalPlanIDAPI from "./external-plan-id.js"; import { ExternalPlanID, ExternalPlanIDCreatePlanVersionParams, ExternalPlanIDSetDefaultPlanVersionParams } from "./external-plan-id.js"; import * as PlansAPI from "../plans/plans.js"; export declare class Beta extends APIResource { externalPlanId: ExternalPlanIDAPI.ExternalPlanID; /** * This endpoint allows the creation of a new plan version for an existing plan. */ createPlanVersion(planId: string, body: BetaCreatePlanVersionParams, options?: Core.RequestOptions): Core.APIPromise<PlanVersion>; /** * This endpoint is used to fetch a plan version. It returns the phases, prices, * and adjustments present on this version of the plan. */ fetchPlanVersion(planId: string, version: string, options?: Core.RequestOptions): Core.APIPromise<PlanVersion>; /** * This endpoint allows setting the default version of a plan. */ setDefaultPlanVersion(planId: string, body: BetaSetDefaultPlanVersionParams, options?: Core.RequestOptions): Core.APIPromise<PlansAPI.Plan>; } /** * The PlanVersion resource represents the prices and adjustments present on a * specific version of a plan. */ export interface PlanVersion { /** * Adjustments for this plan. If the plan has phases, this includes adjustments * across all phases of the plan. */ adjustments: Array<Shared.PlanPhaseUsageDiscountAdjustment | Shared.PlanPhaseAmountDiscountAdjustment | Shared.PlanPhasePercentageDiscountAdjustment | Shared.PlanPhaseMinimumAdjustment | Shared.PlanPhaseMaximumAdjustment>; created_at: string; plan_phases: Array<PlanVersionPhase> | null; /** * Prices for this plan. If the plan has phases, this includes prices across all * phases of the plan. */ prices: Array<Shared.Price>; version: number; } export interface PlanVersionPhase { id: string; description: string | null; /** * How many terms of length `duration_unit` this phase is active for. If null, this * phase is evergreen and active indefinitely */ duration: number | null; duration_unit: 'daily' | 'monthly' | 'quarterly' | 'semi_annual' | 'annual' | null; name: string; /** * Determines the ordering of the phase in a plan's lifecycle. 1 = first phase. */ order: number; } export interface BetaCreatePlanVersionParams { /** * New version number. */ version: number; /** * Additional adjustments to be added to the plan. */ add_adjustments?: Array<BetaCreatePlanVersionParams.AddAdjustment> | null; /** * Additional prices to be added to the plan. */ add_prices?: Array<BetaCreatePlanVersionParams.AddPrice> | null; /** * Adjustments to be removed from the plan. */ remove_adjustments?: Array<BetaCreatePlanVersionParams.RemoveAdjustment> | null; /** * Prices to be removed from the plan. */ remove_prices?: Array<BetaCreatePlanVersionParams.RemovePrice> | null; /** * Adjustments to be replaced with additional adjustments on the plan. */ replace_adjustments?: Array<BetaCreatePlanVersionParams.ReplaceAdjustment> | null; /** * Prices to be replaced with additional prices on the plan. */ replace_prices?: Array<BetaCreatePlanVersionParams.ReplacePrice> | null; /** * Set this new plan version as the default */ set_as_default?: boolean | null; } export declare namespace BetaCreatePlanVersionParams { interface AddAdjustment { /** * The definition of a new adjustment to create and add to the plan. */ adjustment: Shared.NewPercentageDiscount | Shared.NewUsageDiscount | Shared.NewAmountDiscount | Shared.NewMinimum | Shared.NewMaximum; /** * The phase to add this adjustment to. */ plan_phase_order?: number | null; } interface AddPrice { /** * The allocation price to add to the plan. */ allocation_price?: Shared.NewAllocationPrice | null; /** * The phase to add this price to. */ plan_phase_order?: number | null; /** * New plan price request body params. */ price?: Shared.NewPlanUnitPrice | Shared.NewPlanTieredPrice | Shared.NewPlanBulkPrice | AddPrice.NewPlanBulkWithFiltersPrice | Shared.NewPlanPackagePrice | Shared.NewPlanMatrixPrice | Shared.NewPlanThresholdTotalAmountPrice | Shared.NewPlanTieredPackagePrice | Shared.NewPlanTieredWithMinimumPrice | Shared.NewPlanGroupedTieredPrice | Shared.NewPlanTieredPackageWithMinimumPrice | Shared.NewPlanPackageWithAllocationPrice | Shared.NewPlanUnitWithPercentPrice | Shared.NewPlanMatrixWithAllocationPrice | AddPrice.NewPlanTieredWithProrationPrice | Shared.NewPlanUnitWithProrationPrice | Shared.NewPlanGroupedAllocationPrice | Shared.NewPlanBulkWithProrationPrice | Shared.NewPlanGroupedWithProratedMinimumPrice | Shared.NewPlanGroupedWithMeteredMinimumPrice | AddPrice.NewPlanGroupedWithMinMaxThresholdsPrice | Shared.NewPlanMatrixWithDisplayNamePrice | Shared.NewPlanGroupedTieredPackagePrice | Shared.NewPlanMaxGroupTieredPackagePrice | Shared.NewPlanScalableMatrixWithUnitPricingPrice | Shared.NewPlanScalableMatrixWithTieredPricingPrice | Shared.NewPlanCumulativeGroupedBulkPrice | AddPrice.NewPlanCumulativeGroupedAllocationPrice | Shared.NewPlanMinimumCompositePrice | AddPrice.NewPlanPercentCompositePrice | AddPrice.NewPlanEventOutputPrice | null; } namespace AddPrice { interface NewPlanBulkWithFiltersPrice { /** * Configuration for bulk_with_filters pricing */ bulk_with_filters_config: NewPlanBulkWithFiltersPrice.BulkWithFiltersConfig; /** * The cadence to bill for this price on. */ cadence: 'annual' | 'semi_annual' | 'monthly' | 'quarterly' | 'one_time' | 'custom'; /** * The id of the item the price will be associated with. */ item_id: string; /** * The pricing model type */ model_type: 'bulk_with_filters'; /** * The name of the price. */ name: string; /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ billable_metric_id?: string | null; /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ billed_in_advance?: boolean | null; /** * For custom cadence: specifies the duration of the billing period in days or * months. */ billing_cycle_configuration?: Shared.NewBillingCycleConfiguration | null; /** * The per unit conversion rate of the price currency to the invoicing currency. */ conversion_rate?: number | null; /** * The configuration for the rate of the price currency to the invoicing currency. */ conversion_rate_config?: Shared.UnitConversionRateConfig | Shared.TieredConversionRateConfig | null; /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ currency?: string | null; /** * For dimensional price: specifies a price group and dimension values */ dimensional_price_configuration?: Shared.NewDimensionalPriceConfiguration | null; /** * An alias for the price. */ external_price_id?: string | null; /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ fixed_price_quantity?: number | null; /** * The property used to group this price on an invoice */ invoice_grouping_key?: string | null; /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ invoicing_cycle_configuration?: Shared.NewBillingCycleConfiguration | null; /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared * by setting `metadata` to `null`. */ metadata?: { [key: string]: string | null; } | null; /** * A transient ID that can be used to reference this price when adding adjustments * in the same API call. */ reference_id?: string | null; } namespace NewPlanBulkWithFiltersPrice { /** * Configuration for bulk_with_filters pricing */ interface BulkWithFiltersConfig { /** * Property filters to apply (all must match) */ filters: Array<BulkWithFiltersConfig.Filter>; /** * Bulk tiers for rating based on total usage volume */ tiers: Array<BulkWithFiltersConfig.Tier>; } namespace BulkWithFiltersConfig { /** * Configuration for a single property filter */ interface Filter { /** * Event property key to filter on */ property_key: string; /** * Event property value to match */ property_value: string; } /** * Configuration for a single bulk pricing tier */ interface Tier { /** * Amount per unit */ unit_amount: string; /** * The lower bound for this tier */ tier_lower_bound?: string | null; } } } interface NewPlanTieredWithProrationPrice { /** * The cadence to bill for this price on. */ cadence: 'annual' | 'semi_annual' | 'monthly' | 'quarterly' | 'one_time' | 'custom'; /** * The id of the item the price will be associated with. */ item_id: string; /** * The pricing model type */ model_type: 'tiered_with_proration'; /** * The name of the price. */ name: string; /** * Configuration for tiered_with_proration pricing */ tiered_with_proration_config: NewPlanTieredWithProrationPrice.TieredWithProrationConfig; /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ billable_metric_id?: string | null; /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ billed_in_advance?: boolean | null; /** * For custom cadence: specifies the duration of the billing period in days or * months. */ billing_cycle_configuration?: Shared.NewBillingCycleConfiguration | null; /** * The per unit conversion rate of the price currency to the invoicing currency. */ conversion_rate?: number | null; /** * The configuration for the rate of the price currency to the invoicing currency. */ conversion_rate_config?: Shared.UnitConversionRateConfig | Shared.TieredConversionRateConfig | null; /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ currency?: string | null; /** * For dimensional price: specifies a price group and dimension values */ dimensional_price_configuration?: Shared.NewDimensionalPriceConfiguration | null; /** * An alias for the price. */ external_price_id?: string | null; /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ fixed_price_quantity?: number | null; /** * The property used to group this price on an invoice */ invoice_grouping_key?: string | null; /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ invoicing_cycle_configuration?: Shared.NewBillingCycleConfiguration | null; /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared * by setting `metadata` to `null`. */ metadata?: { [key: string]: string | null; } | null; /** * A transient ID that can be used to reference this price when adding adjustments * in the same API call. */ reference_id?: string | null; } namespace NewPlanTieredWithProrationPrice { /** * Configuration for tiered_with_proration pricing */ interface TieredWithProrationConfig { /** * Tiers for rating based on total usage quantities into the specified tier with * proration */ tiers: Array<TieredWithProrationConfig.Tier>; } namespace TieredWithProrationConfig { /** * Configuration for a single tiered with proration tier */ interface Tier { /** * Inclusive tier starting value */ tier_lower_bound: string; /** * Amount per unit */ unit_amount: string; } } } interface NewPlanGroupedWithMinMaxThresholdsPrice { /** * The cadence to bill for this price on. */ cadence: 'annual' | 'semi_annual' | 'monthly' | 'quarterly' | 'one_time' | 'custom'; /** * Configuration for grouped_with_min_max_thresholds pricing */ grouped_with_min_max_thresholds_config: NewPlanGroupedWithMinMaxThresholdsPrice.GroupedWithMinMaxThresholdsConfig; /** * The id of the item the price will be associated with. */ item_id: string; /** * The pricing model type */ model_type: 'grouped_with_min_max_thresholds'; /** * The name of the price. */ name: string; /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ billable_metric_id?: string | null; /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ billed_in_advance?: boolean | null; /** * For custom cadence: specifies the duration of the billing period in days or * months. */ billing_cycle_configuration?: Shared.NewBillingCycleConfiguration | null; /** * The per unit conversion rate of the price currency to the invoicing currency. */ conversion_rate?: number | null; /** * The configuration for the rate of the price currency to the invoicing currency. */ conversion_rate_config?: Shared.UnitConversionRateConfig | Shared.TieredConversionRateConfig | null; /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ currency?: string | null; /** * For dimensional price: specifies a price group and dimension values */ dimensional_price_configuration?: Shared.NewDimensionalPriceConfiguration | null; /** * An alias for the price. */ external_price_id?: string | null; /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ fixed_price_quantity?: number | null; /** * The property used to group this price on an invoice */ invoice_grouping_key?: string | null; /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ invoicing_cycle_configuration?: Shared.NewBillingCycleConfiguration | null; /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared * by setting `metadata` to `null`. */ metadata?: { [key: string]: string | null; } | null; /** * A transient ID that can be used to reference this price when adding adjustments * in the same API call. */ reference_id?: string | null; } namespace NewPlanGroupedWithMinMaxThresholdsPrice { /** * Configuration for grouped_with_min_max_thresholds pricing */ interface GroupedWithMinMaxThresholdsConfig { /** * The event property used to group before applying thresholds */ grouping_key: string; /** * The maximum amount to charge each group */ maximum_charge: string; /** * The minimum amount to charge each group, regardless of usage */ minimum_charge: string; /** * The base price charged per group */ per_unit_rate: string; } } interface NewPlanCumulativeGroupedAllocationPrice { /** * The cadence to bill for this price on. */ cadence: 'annual' | 'semi_annual' | 'monthly' | 'quarterly' | 'one_time' | 'custom'; /** * Configuration for cumulative_grouped_allocation pricing */ cumulative_grouped_allocation_config: NewPlanCumulativeGroupedAllocationPrice.CumulativeGroupedAllocationConfig; /** * The id of the item the price will be associated with. */ item_id: string; /** * The pricing model type */ model_type: 'cumulative_grouped_allocation'; /** * The name of the price. */ name: string; /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ billable_metric_id?: string | null; /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ billed_in_advance?: boolean | null; /** * For custom cadence: specifies the duration of the billing period in days or * months. */ billing_cycle_configuration?: Shared.NewBillingCycleConfiguration | null; /** * The per unit conversion rate of the price currency to the invoicing currency. */ conversion_rate?: number | null; /** * The configuration for the rate of the price currency to the invoicing currency. */ conversion_rate_config?: Shared.UnitConversionRateConfig | Shared.TieredConversionRateConfig | null; /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ currency?: string | null; /** * For dimensional price: specifies a price group and dimension values */ dimensional_price_configuration?: Shared.NewDimensionalPriceConfiguration | null; /** * An alias for the price. */ external_price_id?: string | null; /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ fixed_price_quantity?: number | null; /** * The property used to group this price on an invoice */ invoice_grouping_key?: string | null; /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ invoicing_cycle_configuration?: Shared.NewBillingCycleConfiguration | null; /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared * by setting `metadata` to `null`. */ metadata?: { [key: string]: string | null; } | null; /** * A transient ID that can be used to reference this price when adding adjustments * in the same API call. */ reference_id?: string | null; } namespace NewPlanCumulativeGroupedAllocationPrice { /** * Configuration for cumulative_grouped_allocation pricing */ interface CumulativeGroupedAllocationConfig { /** * The overall allocation across all groups */ cumulative_allocation: string; /** * The allocation per individual group */ group_allocation: string; /** * The event property used to group usage before applying allocations */ grouping_key: string; /** * The amount to charge for each unit outside of the allocation */ unit_amount: string; } } interface NewPlanPercentCompositePrice { /** * The cadence to bill for this price on. */ cadence: 'annual' | 'semi_annual' | 'monthly' | 'quarterly' | 'one_time' | 'custom'; /** * The id of the item the price will be associated with. */ item_id: string; /** * The pricing model type */ model_type: 'percent'; /** * The name of the price. */ name: string; /** * Configuration for percent pricing */ percent_config: NewPlanPercentCompositePrice.PercentConfig; /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ billable_metric_id?: string | null; /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ billed_in_advance?: boolean | null; /** * For custom cadence: specifies the duration of the billing period in days or * months. */ billing_cycle_configuration?: Shared.NewBillingCycleConfiguration | null; /** * The per unit conversion rate of the price currency to the invoicing currency. */ conversion_rate?: number | null; /** * The configuration for the rate of the price currency to the invoicing currency. */ conversion_rate_config?: Shared.UnitConversionRateConfig | Shared.TieredConversionRateConfig | null; /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ currency?: string | null; /** * For dimensional price: specifies a price group and dimension values */ dimensional_price_configuration?: Shared.NewDimensionalPriceConfiguration | null; /** * An alias for the price. */ external_price_id?: string | null; /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ fixed_price_quantity?: number | null; /** * The property used to group this price on an invoice */ invoice_grouping_key?: string | null; /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ invoicing_cycle_configuration?: Shared.NewBillingCycleConfiguration | null; /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared * by setting `metadata` to `null`. */ metadata?: { [key: string]: string | null; } | null; /** * A transient ID that can be used to reference this price when adding adjustments * in the same API call. */ reference_id?: string | null; } namespace NewPlanPercentCompositePrice { /** * Configuration for percent pricing */ interface PercentConfig { /** * What percent of the component subtotals to charge */ percent: number; } } interface NewPlanEventOutputPrice { /** * The cadence to bill for this price on. */ cadence: 'annual' | 'semi_annual' | 'monthly' | 'quarterly' | 'one_time' | 'custom'; /** * Configuration for event_output pricing */ event_output_config: NewPlanEventOutputPrice.EventOutputConfig; /** * The id of the item the price will be associated with. */ item_id: string; /** * The pricing model type */ model_type: 'event_output'; /** * The name of the price. */ name: string; /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ billable_metric_id?: string | null; /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ billed_in_advance?: boolean | null; /** * For custom cadence: specifies the duration of the billing period in days or * months. */ billing_cycle_configuration?: Shared.NewBillingCycleConfiguration | null; /** * The per unit conversion rate of the price currency to the invoicing currency. */ conversion_rate?: number | null; /** * The configuration for the rate of the price currency to the invoicing currency. */ conversion_rate_config?: Shared.UnitConversionRateConfig | Shared.TieredConversionRateConfig | null; /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ currency?: string | null; /** * For dimensional price: specifies a price group and dimension values */ dimensional_price_configuration?: Shared.NewDimensionalPriceConfiguration | null; /** * An alias for the price. */ external_price_id?: string | null; /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ fixed_price_quantity?: number | null; /** * The property used to group this price on an invoice */ invoice_grouping_key?: string | null; /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ invoicing_cycle_configuration?: Shared.NewBillingCycleConfiguration | null; /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared * by setting `metadata` to `null`. */ metadata?: { [key: string]: string | null; } | null; /** * A transient ID that can be used to reference this price when adding adjustments * in the same API call. */ reference_id?: string | null; } namespace NewPlanEventOutputPrice { /** * Configuration for event_output pricing */ interface EventOutputConfig { /** * The key in the event data to extract the unit rate from. */ unit_rating_key: string; /** * If provided, this amount will be used as the unit rate when an event does not * have a value for the `unit_rating_key`. If not provided, events missing a unit * rate will be ignored. */ default_unit_rate?: string | null; /** * An optional key in the event data to group by (e.g., event ID). All events will * also be grouped by their unit rate. */ grouping_key?: string | null; } } } interface RemoveAdjustment { /** * The id of the adjustment to remove from on the plan. */ adjustment_id: string; /** * The phase to remove this adjustment from. */ plan_phase_order?: number | null; } interface RemovePrice { /** * The id of the price to remove from the plan. */ price_id: string; /** * The phase to remove this price from. */ plan_phase_order?: number | null; } interface ReplaceAdjustment { /** * The definition of a new adjustment to create and add to the plan. */ adjustment: Shared.NewPercentageDiscount | Shared.NewUsageDiscount | Shared.NewAmountDiscount | Shared.NewMinimum | Shared.NewMaximum; /** * The id of the adjustment on the plan to replace in the plan. */ replaces_adjustment_id: string; /** * The phase to replace this adjustment from. */ plan_phase_order?: number | null; } interface ReplacePrice { /** * The id of the price on the plan to replace in the plan. */ replaces_price_id: string; /** * The allocation price to add to the plan. */ allocation_price?: Shared.NewAllocationPrice | null; /** * The phase to replace this price from. */ plan_phase_order?: number | null; /** * New plan price request body params. */ price?: Shared.NewPlanUnitPrice | Shared.NewPlanTieredPrice | Shared.NewPlanBulkPrice | ReplacePrice.NewPlanBulkWithFiltersPrice | Shared.NewPlanPackagePrice | Shared.NewPlanMatrixPrice | Shared.NewPlanThresholdTotalAmountPrice | Shared.NewPlanTieredPackagePrice | Shared.NewPlanTieredWithMinimumPrice | Shared.NewPlanGroupedTieredPrice | Shared.NewPlanTieredPackageWithMinimumPrice | Shared.NewPlanPackageWithAllocationPrice | Shared.NewPlanUnitWithPercentPrice | Shared.NewPlanMatrixWithAllocationPrice | ReplacePrice.NewPlanTieredWithProrationPrice | Shared.NewPlanUnitWithProrationPrice | Shared.NewPlanGroupedAllocationPrice | Shared.NewPlanBulkWithProrationPrice | Shared.NewPlanGroupedWithProratedMinimumPrice | Shared.NewPlanGroupedWithMeteredMinimumPrice | ReplacePrice.NewPlanGroupedWithMinMaxThresholdsPrice | Shared.NewPlanMatrixWithDisplayNamePrice | Shared.NewPlanGroupedTieredPackagePrice | Shared.NewPlanMaxGroupTieredPackagePrice | Shared.NewPlanScalableMatrixWithUnitPricingPrice | Shared.NewPlanScalableMatrixWithTieredPricingPrice | Shared.NewPlanCumulativeGroupedBulkPrice | ReplacePrice.NewPlanCumulativeGroupedAllocationPrice | Shared.NewPlanMinimumCompositePrice | ReplacePrice.NewPlanPercentCompositePrice | ReplacePrice.NewPlanEventOutputPrice | null; } namespace ReplacePrice { interface NewPlanBulkWithFiltersPrice { /** * Configuration for bulk_with_filters pricing */ bulk_with_filters_config: NewPlanBulkWithFiltersPrice.BulkWithFiltersConfig; /** * The cadence to bill for this price on. */ cadence: 'annual' | 'semi_annual' | 'monthly' | 'quarterly' | 'one_time' | 'custom'; /** * The id of the item the price will be associated with. */ item_id: string; /** * The pricing model type */ model_type: 'bulk_with_filters'; /** * The name of the price. */ name: string; /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ billable_metric_id?: string | null; /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ billed_in_advance?: boolean | null; /** * For custom cadence: specifies the duration of the billing period in days or * months. */ billing_cycle_configuration?: Shared.NewBillingCycleConfiguration | null; /** * The per unit conversion rate of the price currency to the invoicing currency. */ conversion_rate?: number | null; /** * The configuration for the rate of the price currency to the invoicing currency. */ conversion_rate_config?: Shared.UnitConversionRateConfig | Shared.TieredConversionRateConfig | null; /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ currency?: string | null; /** * For dimensional price: specifies a price group and dimension values */ dimensional_price_configuration?: Shared.NewDimensionalPriceConfiguration | null; /** * An alias for the price. */ external_price_id?: string | null; /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ fixed_price_quantity?: number | null; /** * The property used to group this price on an invoice */ invoice_grouping_key?: string | null; /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ invoicing_cycle_configuration?: Shared.NewBillingCycleConfiguration | null; /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared * by setting `metadata` to `null`. */ metadata?: { [key: string]: string | null; } | null; /** * A transient ID that can be used to reference this price when adding adjustments * in the same API call. */ reference_id?: string | null; } namespace NewPlanBulkWithFiltersPrice { /** * Configuration for bulk_with_filters pricing */ interface BulkWithFiltersConfig { /** * Property filters to apply (all must match) */ filters: Array<BulkWithFiltersConfig.Filter>; /** * Bulk tiers for rating based on total usage volume */ tiers: Array<BulkWithFiltersConfig.Tier>; } namespace BulkWithFiltersConfig { /** * Configuration for a single property filter */ interface Filter { /** * Event property key to filter on */ property_key: string; /** * Event property value to match */ property_value: string; } /** * Configuration for a single bulk pricing tier */ interface Tier { /** * Amount per unit */ unit_amount: string; /** * The lower bound for this tier */ tier_lower_bound?: string | null; } } } interface NewPlanTieredWithProrationPrice { /** * The cadence to bill for this price on. */ cadence: 'annual' | 'semi_annual' | 'monthly' | 'quarterly' | 'one_time' | 'custom'; /** * The id of the item the price will be associated with. */ item_id: string; /** * The pricing model type */ model_type: 'tiered_with_proration'; /** * The name of the price. */ name: string; /** * Configuration for tiered_with_proration pricing */ tiered_with_proration_config: NewPlanTieredWithProrationPrice.TieredWithProrationConfig; /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ billable_metric_id?: string | null; /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ billed_in_advance?: boolean | null; /** * For custom cadence: specifies the duration of the billing period in days or * months. */ billing_cycle_configuration?: Shared.NewBillingCycleConfiguration | null; /** * The per unit conversion rate of the price currency to the invoicing currency. */ conversion_rate?: number | null; /** * The configuration for the rate of the price currency to the invoicing currency. */ conversion_rate_config?: Shared.UnitConversionRateConfig | Shared.TieredConversionRateConfig | null; /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ currency?: string | null; /** * For dimensional price: specifies a price group and dimension values */ dimensional_price_configuration?: Shared.NewDimensionalPriceConfiguration | null; /** * An alias for the price. */ external_price_id?: string | null; /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ fixed_price_quantity?: number | null; /** * The property used to group this price on an invoice */ invoice_grouping_key?: string | null; /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ invoicing_cycle_configuration?: Shared.NewBillingCycleConfiguration | null; /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared * by setting `metadata` to `null`. */ metadata?: { [key: string]: string | null; } | null; /** * A transient ID that can be used to reference this price when adding adjustments * in the same API call. */ reference_id?: string | null; } namespace NewPlanTieredWithProrationPrice { /** * Configuration for tiered_with_proration pricing */ interface TieredWithProrationConfig { /** * Tiers for rating based on total usage quantities into the specified tier with * proration */ tiers: Array<TieredWithProrationConfig.Tier>; } namespace TieredWithProrationConfig { /** * Configuration for a single tiered with proration tier */ interface Tier { /** * Inclusive tier starting value */ tier_lower_bound: string; /** * Amount per unit */ unit_amount: string; } } } interface NewPlanGroupedWithMinMaxThresholdsPrice { /** * The cadence to bill for this price on. */ cadence: 'annual' | 'semi_annual' | 'monthly' | 'quarterly' | 'one_time' | 'custom'; /** * Configuration for grouped_with_min_max_thresholds pricing */ grouped_with_min_max_thresholds_config: NewPlanGroupedWithMinMaxThresholdsPrice.GroupedWithMinMaxThresholdsConfig; /** * The id of the item the price will be associated with. */ item_id: string; /** * The pricing model type */ model_type: 'grouped_with_min_max_thresholds'; /** * The name of the price. */ name: string; /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ billable_metric_id?: string | null; /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ billed_in_advance?: boolean | null; /** * For custom cadence: specifies the duration of the billing period in days or * months. */ billing_cycle_configuration?: Shared.NewBillingCycleConfiguration | null; /** * The per unit conversion rate of the price currency to the invoicing currency. */ conversion_rate?: number | null; /** * The configuration for the rate of the price currency to the invoicing currency. */ conversion_rate_config?: Shared.UnitConversionRateConfig | Shared.TieredConversionRateConfig | null; /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ currency?: string | null; /** * For dimensional price: specifies a price group and dimension values */ dimensional_price_configuration?: Shared.NewDimensionalPriceConfiguration | null; /** * An alias for the price. */ external_price_id?: string | null; /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ fixed_price_quantity?: number | null; /** * The property used to group this price on an invoice */ invoice_grouping_key?: string | null; /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ invoicing_cycle_configuration?: Shared.NewBillingCycleConfiguration | null; /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared * by setting `metadata` to `null`. */ metadata?: { [key: string]: string | null; } | null; /** * A transient ID that can be used to reference this price when adding adjustments * in the same API call. */ reference_id?: string | null; } namespace NewPlanGroupedWithMinMaxThresholdsPrice { /** * Configuration for grouped_with_min_max_thresholds pricing */ interface GroupedWithMinMaxThresholdsConfig { /** * The event property used to group before applying thresholds */ grouping_key: string; /** * The maximum amount to charge each group */ maximum_charge: string; /** * The minimum amount to charge each group, regardless of usage */ minimum_charge: string; /** * The base price charged per group */ per_unit_rate: string; } } interface NewPlanCumulativeGroupedAllocationPrice { /** * The cadence to bill for this price on. */ cadence: 'annual' | 'semi_annual' | 'monthly' | 'quarterly' | 'one_time' | 'custom'; /** * Configuration for cumulative_grouped_allocation pricing */ cumulative_grouped_allocation_config: NewPlanCumulativeGroupedAllocationPrice.CumulativeGroupedAllocationConfig; /**