@maxio-com/advanced-billing-sdk
Version:
Ultimate billing and pricing flexibility for B2B SaaS. Maxio integrates directly into your product, so you can seamlessly manage your product catalog, bill customers, and collect payments.
82 lines (78 loc) • 3.56 kB
text/typescript
/**
* AdvancedBilling
*
* This file was automatically generated for Maxio by APIMATIC v3.0 ( https://www.apimatic.io ).
*/
import {
bigint,
boolean,
expandoObject,
lazy,
optional,
Schema,
string,
} from '../schema.js';
import {
CompoundingStrategy,
compoundingStrategySchema,
} from './compoundingStrategy.js';
import {
CouponPayloadPercentage,
couponPayloadPercentageSchema,
} from './containers/couponPayloadPercentage.js';
export interface CouponPayload {
/** Required when creating a new coupon. This name is not displayed to customers and is limited to 255 characters. */
name?: string;
/** Required when creating a new coupon. The code is limited to 255 characters. May contain uppercase alphanumeric characters and these special characters (which allow for email addresses to be used): “%”, “@”, “+”, “-”, “_”, and “.” */
code?: string;
/** Required when creating a new coupon. A description of the coupon that can be displayed to customers in transactions and on statements. The description is limited to 255 characters. */
description?: string;
/** Required when creating a new percentage coupon. Can't be used together with amount_in_cents. Percentage discount */
percentage?: CouponPayloadPercentage;
/** Required when creating a new flat amount coupon. Can't be used together with percentage. Flat USD discount */
amountInCents?: bigint;
/** If set to true, discount is not limited (credits will carry forward to next billing). Can't be used together with restrictions. */
allowNegativeBalance?: boolean;
recurring?: boolean;
/** After the end of the given day, this coupon code will be invalid for new signups. Recurring discounts started before this date will continue to recur even after this date. */
endDate?: string;
productFamilyId?: string;
/** A stackable coupon can be combined with other coupons on a Subscription. */
stackable?: boolean;
/** Applicable only to stackable coupons. For `compound`, Percentage-based discounts will be calculated against the remaining price, after prior discounts have been calculated. For `full-price`, Percentage-based discounts will always be calculated against the original item price, before other discounts are applied. */
compoundingStrategy?: CompoundingStrategy;
excludeMidPeriodAllocations?: boolean;
applyOnCancelAtEndOfPeriod?: boolean;
applyOnSubscriptionExpiration?: boolean;
[key: string]: unknown;
}
export const couponPayloadSchema: Schema<CouponPayload> = lazy(() =>
expandoObject({
name: ['name', optional(string())],
code: ['code', optional(string())],
description: ['description', optional(string())],
percentage: ['percentage', optional(couponPayloadPercentageSchema)],
amountInCents: ['amount_in_cents', optional(bigint())],
allowNegativeBalance: ['allow_negative_balance', optional(boolean())],
recurring: ['recurring', optional(boolean())],
endDate: ['end_date', optional(string())],
productFamilyId: ['product_family_id', optional(string())],
stackable: ['stackable', optional(boolean())],
compoundingStrategy: [
'compounding_strategy',
optional(compoundingStrategySchema),
],
excludeMidPeriodAllocations: [
'exclude_mid_period_allocations',
optional(boolean()),
],
applyOnCancelAtEndOfPeriod: [
'apply_on_cancel_at_end_of_period',
optional(boolean()),
],
applyOnSubscriptionExpiration: [
'apply_on_subscription_expiration',
optional(boolean()),
],
})
);