orb-billing
Version:
The official TypeScript library for the Orb API
1,705 lines (1,432 loc) • 55.6 kB
text/typescript
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
import { APIResource } from '../../resource';
import * as Core from '../../core';
import * as Shared from '../shared';
import * as ExternalPlanIDAPI from './external-plan-id';
import {
ExternalPlanID,
ExternalPlanIDCreatePlanVersionParams,
ExternalPlanIDSetDefaultPlanVersionParams,
} from './external-plan-id';
import * as PlansAPI from '../plans/plans';
export class Beta extends APIResource {
externalPlanId: ExternalPlanIDAPI.ExternalPlanID = new ExternalPlanIDAPI.ExternalPlanID(this._client);
/**
* 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> {
return this._client.post(`/plans/${planId}/versions`, { body, ...options });
}
/**
* 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> {
return this._client.get(`/plans/${planId}/versions/${version}`, options);
}
/**
* This endpoint allows setting the default version of a plan.
*/
setDefaultPlanVersion(
planId: string,
body: BetaSetDefaultPlanVersionParams,
options?: Core.RequestOptions,
): Core.APIPromise<PlansAPI.Plan> {
return this._client.post(`/plans/${planId}/set_default_version`, { body, ...options });
}
}
/**
* 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 namespace BetaCreatePlanVersionParams {
export 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;
}
export 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;
}
export namespace AddPrice {
export 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;
}
export namespace NewPlanBulkWithFiltersPrice {
/**
* Configuration for bulk_with_filters pricing
*/
export 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>;
}
export namespace BulkWithFiltersConfig {
/**
* Configuration for a single property filter
*/
export 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
*/
export interface Tier {
/**
* Amount per unit
*/
unit_amount: string;
/**
* The lower bound for this tier
*/
tier_lower_bound?: string | null;
}
}
}
export 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;
}
export namespace NewPlanTieredWithProrationPrice {
/**
* Configuration for tiered_with_proration pricing
*/
export interface TieredWithProrationConfig {
/**
* Tiers for rating based on total usage quantities into the specified tier with
* proration
*/
tiers: Array<TieredWithProrationConfig.Tier>;
}
export namespace TieredWithProrationConfig {
/**
* Configuration for a single tiered with proration tier
*/
export interface Tier {
/**
* Inclusive tier starting value
*/
tier_lower_bound: string;
/**
* Amount per unit
*/
unit_amount: string;
}
}
}
export 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;
}
export namespace NewPlanGroupedWithMinMaxThresholdsPrice {
/**
* Configuration for grouped_with_min_max_thresholds pricing
*/
export 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;
}
}
export 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;
}
export namespace NewPlanCumulativeGroupedAllocationPrice {
/**
* Configuration for cumulative_grouped_allocation pricing
*/
export 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;
}
}
export 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;
}
export namespace NewPlanPercentCompositePrice {
/**
* Configuration for percent pricing
*/
export interface PercentConfig {
/**
* What percent of the component subtotals to charge
*/
percent: number;
}
}
export 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;
}
export namespace NewPlanEventOutputPrice {
/**
* Configuration for event_output pricing
*/
export 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;
}
}
}
export 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;
}
export 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;
}
export 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;
}
export 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;
}
export namespace ReplacePrice {
export 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;
}
export namespace NewPlanBulkWithFiltersPrice {
/**
* Configuration for bulk_with_filters pricing
*/
export 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>;
}
export namespace BulkWithFiltersConfig {
/**
* Configuration for a single property filter
*/
export 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
*/
export interface Tier {
/**
* Amount per unit
*/
unit_amount: string;
/**
* The lower bound for this tier
*/
tier_lower_bound?: string | null;
}
}
}
export 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;
}
export namespace NewPlanTieredWithProrationPrice {
/**
* Configuration for tiered_with_proration pricing
*/
export interface TieredWithProrationConfig {
/**
* Tiers for rating based on total usage quantities into the specified tier with
* proration
*/
tiers: Array<TieredWithProrationConfig.Tier>;
}
export namespace TieredWithProrationConfig {
/**
* Configuration for a single tiered with proration tier
*/
export interface Tier {
/**
* Inclusive tier starting value
*/
tier_lower_bound: string;
/**
* Amount per unit
*/
unit_amount: string;
}
}
}
export 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;
}
export namespace NewPlanGroupedWithMinMaxThresholdsPrice {
/**
* Configuration for grouped_with_min_max_thresholds pricing
*/
export 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;
}
}
export 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;
}
export namespace NewPlanCumulativeGroupedAllocationPrice {
/**
* Configuration for cumulative_grouped_allocation pricing
*/
export 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;
}
}
export 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