orb-billing
Version:
The official TypeScript library for the Orb API
270 lines • 11.7 kB
TypeScript
import { APIResource } from "../resource.js";
import * as Core from "../core.js";
import * as Shared from "./shared.js";
import * as CustomersAPI from "./customers/customers.js";
import * as PlansAPI from "./plans/plans.js";
export declare class SubscriptionChanges extends APIResource {
/**
* This endpoint returns a subscription change given an identifier.
*
* A subscription change is created by including
* `Create-Pending-Subscription-Change: True` in the header of a subscription
* mutation API call (e.g.
* [create subscription endpoint](/api-reference/subscription/create-subscription),
* [schedule plan change endpoint](/api-reference/subscription/schedule-plan-change),
* ...). The subscription change will be referenced by the
* `pending_subscription_change` field in the response.
*/
retrieve(subscriptionChangeId: string, options?: Core.RequestOptions): Core.APIPromise<SubscriptionChangeRetrieveResponse>;
/**
* Apply a subscription change to perform the intended action. If a positive amount
* is passed with a request to this endpoint, any eligible invoices that were
* created will be issued immediately if they only contain in-advance fees.
*/
apply(subscriptionChangeId: string, body?: SubscriptionChangeApplyParams, options?: Core.RequestOptions): Core.APIPromise<SubscriptionChangeApplyResponse>;
apply(subscriptionChangeId: string, options?: Core.RequestOptions): Core.APIPromise<SubscriptionChangeApplyResponse>;
/**
* Cancel a subscription change. The change can no longer be applied. A
* subscription can only have one "pending" change at a time - use this endpoint to
* cancel an existing change before creating a new one.
*/
cancel(subscriptionChangeId: string, options?: Core.RequestOptions): Core.APIPromise<SubscriptionChangeCancelResponse>;
}
export interface MutatedSubscription {
id: string;
/**
* The current plan phase that is active, only if the subscription's plan has
* phases.
*/
active_plan_phase_order: number | null;
/**
* The adjustment intervals for this subscription sorted by the start_date of the
* adjustment interval.
*/
adjustment_intervals: Array<Shared.AdjustmentInterval>;
/**
* Determines whether issued invoices for this subscription will automatically be
* charged with the saved payment method on the due date. This property defaults to
* the plan's behavior. If null, defaults to the customer's setting.
*/
auto_collection: boolean | null;
billing_cycle_anchor_configuration: Shared.BillingCycleAnchorConfiguration;
/**
* The day of the month on which the billing cycle is anchored. If the maximum
* number of days in a month is greater than this value, the last day of the month
* is the billing cycle day (e.g. billing_cycle_day=31 for April means the billing
* period begins on the 30th.
*/
billing_cycle_day: number;
created_at: string;
/**
* The end of the current billing period. This is an exclusive timestamp, such that
* the instant returned is not part of the billing period. Set to null for
* subscriptions that are not currently active.
*/
current_billing_period_end_date: string | null;
/**
* The start date of the current billing period. This is an inclusive timestamp;
* the instant returned is exactly the beginning of the billing period. Set to null
* if the subscription is not currently active.
*/
current_billing_period_start_date: string | null;
/**
* A customer is a buyer of your products, and the other party to the billing
* relationship.
*
* In Orb, customers are assigned system generated identifiers automatically, but
* it's often desirable to have these match existing identifiers in your system. To
* avoid having to denormalize Orb ID information, you can pass in an
* `external_customer_id` with your own identifier. See
* [Customer ID Aliases](/events-and-metrics/customer-aliases) for further
* information about how these aliases work in Orb.
*
* In addition to having an identifier in your system, a customer may exist in a
* payment provider solution like Stripe. Use the `payment_provider_id` and the
* `payment_provider` enum field to express this mapping.
*
* A customer also has a timezone (from the standard
* [IANA timezone database](https://www.iana.org/time-zones)), which defaults to
* your account's timezone. See [Timezone localization](/essentials/timezones) for
* information on what this timezone parameter influences within Orb.
*/
customer: CustomersAPI.Customer;
/**
* Determines the default memo on this subscriptions' invoices. Note that if this
* is not provided, it is determined by the plan configuration.
*/
default_invoice_memo: string | null;
/**
* @deprecated The discount intervals for this subscription sorted by the
* start_date. This field is deprecated in favor of `adjustment_intervals`.
*/
discount_intervals: Array<Shared.AmountDiscountInterval | Shared.PercentageDiscountInterval | Shared.UsageDiscountInterval>;
/**
* The date Orb stops billing for this subscription.
*/
end_date: string | null;
fixed_fee_quantity_schedule: Array<Shared.FixedFeeQuantityScheduleEntry>;
invoicing_threshold: string | null;
/**
* @deprecated The maximum intervals for this subscription sorted by the
* start_date. This field is deprecated in favor of `adjustment_intervals`.
*/
maximum_intervals: Array<Shared.MaximumInterval>;
/**
* User specified key-value pairs for the resource. If not present, this defaults
* to an empty dictionary. 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;
};
/**
* @deprecated The minimum intervals for this subscription sorted by the
* start_date. This field is deprecated in favor of `adjustment_intervals`.
*/
minimum_intervals: Array<Shared.MinimumInterval>;
/**
* The name of the subscription.
*/
name: string;
/**
* Determines the difference between the invoice issue date for subscription
* invoices as the date that they are due. A value of `0` here represents that the
* invoice is due on issue, whereas a value of `30` represents that the customer
* has a month to pay the invoice.
*/
net_terms: number;
/**
* A pending subscription change if one exists on this subscription.
*/
pending_subscription_change: Shared.SubscriptionChangeMinified | null;
/**
* The [Plan](/core-concepts#plan-and-price) resource represents a plan that can be
* subscribed to by a customer. Plans define the billing behavior of the
* subscription. You can see more about how to configure prices in the
* [Price resource](/reference/price).
*/
plan: PlansAPI.Plan | null;
/**
* The price intervals for this subscription.
*/
price_intervals: Array<Shared.PriceInterval>;
redeemed_coupon: Shared.CouponRedemption | null;
/**
* The date Orb starts billing for this subscription.
*/
start_date: string;
status: 'active' | 'ended' | 'upcoming';
trial_info: Shared.SubscriptionTrialInfo;
/**
* The resources that were changed as part of this operation. Only present when
* fetched through the subscription changes API or if the
* `include_changed_resources` parameter was passed in the request.
*/
changed_resources?: Shared.ChangedSubscriptionResources | null;
}
/**
* A subscription change represents a desired new subscription / pending change to
* an existing subscription. It is a way to first preview the effects on the
* subscription as well as any changes/creation of invoices (see
* `subscription.changed_resources`).
*/
export interface SubscriptionChangeRetrieveResponse {
id: string;
/**
* Subscription change will be cancelled at this time and can no longer be applied.
*/
expiration_time: string;
status: 'pending' | 'applied' | 'cancelled';
subscription: MutatedSubscription | null;
/**
* When this change was applied.
*/
applied_at?: string | null;
/**
* When this change was cancelled.
*/
cancelled_at?: string | null;
}
/**
* A subscription change represents a desired new subscription / pending change to
* an existing subscription. It is a way to first preview the effects on the
* subscription as well as any changes/creation of invoices (see
* `subscription.changed_resources`).
*/
export interface SubscriptionChangeApplyResponse {
id: string;
/**
* Subscription change will be cancelled at this time and can no longer be applied.
*/
expiration_time: string;
status: 'pending' | 'applied' | 'cancelled';
subscription: MutatedSubscription | null;
/**
* When this change was applied.
*/
applied_at?: string | null;
/**
* When this change was cancelled.
*/
cancelled_at?: string | null;
}
/**
* A subscription change represents a desired new subscription / pending change to
* an existing subscription. It is a way to first preview the effects on the
* subscription as well as any changes/creation of invoices (see
* `subscription.changed_resources`).
*/
export interface SubscriptionChangeCancelResponse {
id: string;
/**
* Subscription change will be cancelled at this time and can no longer be applied.
*/
expiration_time: string;
status: 'pending' | 'applied' | 'cancelled';
subscription: MutatedSubscription | null;
/**
* When this change was applied.
*/
applied_at?: string | null;
/**
* When this change was cancelled.
*/
cancelled_at?: string | null;
}
export interface SubscriptionChangeApplyParams {
/**
* Description to apply to the balance transaction representing this credit.
*/
description?: string | null;
/**
* Mark all pending invoices that are payable as paid. If amount is also provided,
* mark as paid and credit the difference to the customer's balance.
*/
mark_as_paid?: boolean | null;
/**
* An optional external ID to associate with the payment. Only applicable when
* mark_as_paid is true.
*/
payment_external_id?: string | null;
/**
* Optional notes about the payment. Only applicable when mark_as_paid is true.
*/
payment_notes?: string | null;
/**
* A date string to specify the date the payment was received. Only applicable when
* mark_as_paid is true. If not provided, defaults to the current date.
*/
payment_received_date?: string | null;
/**
* Amount already collected to apply to the customer's balance. If mark_as_paid is
* also provided, credit the difference to the customer's balance.
*/
previously_collected_amount?: string | null;
}
export declare namespace SubscriptionChanges {
export { type MutatedSubscription as MutatedSubscription, type SubscriptionChangeRetrieveResponse as SubscriptionChangeRetrieveResponse, type SubscriptionChangeApplyResponse as SubscriptionChangeApplyResponse, type SubscriptionChangeCancelResponse as SubscriptionChangeCancelResponse, type SubscriptionChangeApplyParams as SubscriptionChangeApplyParams, };
}
//# sourceMappingURL=subscription-changes.d.ts.map