@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.
157 lines (153 loc) • 7.28 kB
text/typescript
/**
* AdvancedBilling
*
* This file was automatically generated for Maxio by APIMATIC v3.0 ( https://www.apimatic.io ).
*/
import {
array,
bigint,
boolean,
expandoObject,
lazy,
nullable,
number,
optional,
Schema,
string,
} from '../schema';
import {
ExpirationIntervalUnit,
expirationIntervalUnitSchema,
} from './expirationIntervalUnit';
import { IntervalUnit, intervalUnitSchema } from './intervalUnit';
import { ProductFamily, productFamilySchema } from './productFamily';
import { PublicSignupPage, publicSignupPageSchema } from './publicSignupPage';
export interface Product {
id?: number;
/** The product name */
name?: string;
/** The product API handle */
handle?: string | null;
/** The product description */
description?: string | null;
/** E.g. Internal ID or SKU Number */
accountingCode?: string | null;
/** Deprecated value that can be ignored unless you have legacy hosted pages. For Public Signup Page users, please read this attribute from under the signup page. */
requestCreditCard?: boolean;
/** A numerical interval for the length a subscription to this product will run before it expires. See the description of interval for a description of how this value is coupled with an interval unit to calculate the full interval */
expirationInterval?: number | null;
/** A string representing the expiration interval unit for this product, either month, day or never */
expirationIntervalUnit?: ExpirationIntervalUnit | null;
/** Timestamp indicating when this product was created */
createdAt?: string;
/** Timestamp indicating when this product was last updated */
updatedAt?: string;
/** The product price, in integer cents */
priceInCents?: bigint;
/** The numerical interval. i.e. an interval of ‘30’ coupled with an interval_unit of day would mean this product would renew every 30 days */
interval?: number;
/** A string representing the interval unit for this product, either month or day */
intervalUnit?: IntervalUnit;
/** The up front charge you have specified. */
initialChargeInCents?: bigint | null;
/** The price of the trial period for a subscription to this product, in integer cents. */
trialPriceInCents?: bigint | null;
/** A numerical interval for the length of the trial period of a subscription to this product. See the description of interval for a description of how this value is coupled with an interval unit to calculate the full interval */
trialInterval?: number | null;
/** A string representing the trial interval unit for this product, either month or day */
trialIntervalUnit?: IntervalUnit | null;
/** Timestamp indicating when this product was archived */
archivedAt?: string | null;
/** Boolean that controls whether a payment profile is required to be entered for customers wishing to sign up on this product. */
requireCreditCard?: boolean;
returnParams?: string | null;
taxable?: boolean;
/** The url to which a customer will be returned after a successful account update */
updateReturnUrl?: string | null;
initialChargeAfterTrial?: boolean | null;
/** The version of the product */
versionNumber?: number;
/** The parameters will append to the url after a successful account update. See [help documentation](https://help.chargify.com/products/product-editing.html#return-parameters-after-account-update) */
updateReturnParams?: string | null;
productFamily?: ProductFamily;
publicSignupPages?: PublicSignupPage[];
productPricePointName?: string;
/** A boolean indicating whether to request a billing address on any Self-Service Pages that are used by subscribers of this product. */
requestBillingAddress?: boolean;
/** A boolean indicating whether a billing address is required to add a payment profile, especially at signup. */
requireBillingAddress?: boolean;
/** A boolean indicating whether a shipping address is required for the customer, especially at signup. */
requireShippingAddress?: boolean;
/** A string representing the tax code related to the product type. This is especially important when using the Avalara service to tax based on locale. This attribute has a max length of 10 characters. */
taxCode?: string | null;
defaultProductPricePointId?: number;
useSiteExchangeRate?: boolean | null;
/** One of the following: Business Software, Consumer Software, Digital Services, Physical Goods, Other */
itemCategory?: string | null;
productPricePointId?: number;
productPricePointHandle?: string | null;
[key: string]: unknown;
}
export const productSchema: Schema<Product> = expandoObject({
id: ['id', optional(number())],
name: ['name', optional(string())],
handle: ['handle', optional(nullable(string()))],
description: ['description', optional(nullable(string()))],
accountingCode: ['accounting_code', optional(nullable(string()))],
requestCreditCard: ['request_credit_card', optional(boolean())],
expirationInterval: ['expiration_interval', optional(nullable(number()))],
expirationIntervalUnit: [
'expiration_interval_unit',
optional(nullable(expirationIntervalUnitSchema)),
],
createdAt: ['created_at', optional(string())],
updatedAt: ['updated_at', optional(string())],
priceInCents: ['price_in_cents', optional(bigint())],
interval: ['interval', optional(number())],
intervalUnit: ['interval_unit', optional(intervalUnitSchema)],
initialChargeInCents: [
'initial_charge_in_cents',
optional(nullable(bigint())),
],
trialPriceInCents: ['trial_price_in_cents', optional(nullable(bigint()))],
trialInterval: ['trial_interval', optional(nullable(number()))],
trialIntervalUnit: [
'trial_interval_unit',
optional(nullable(intervalUnitSchema)),
],
archivedAt: ['archived_at', optional(nullable(string()))],
requireCreditCard: ['require_credit_card', optional(boolean())],
returnParams: ['return_params', optional(nullable(string()))],
taxable: ['taxable', optional(boolean())],
updateReturnUrl: ['update_return_url', optional(nullable(string()))],
initialChargeAfterTrial: [
'initial_charge_after_trial',
optional(nullable(boolean())),
],
versionNumber: ['version_number', optional(number())],
updateReturnParams: ['update_return_params', optional(nullable(string()))],
productFamily: ['product_family', optional(lazy(() => productFamilySchema))],
publicSignupPages: [
'public_signup_pages',
optional(array(lazy(() => publicSignupPageSchema))),
],
productPricePointName: ['product_price_point_name', optional(string())],
requestBillingAddress: ['request_billing_address', optional(boolean())],
requireBillingAddress: ['require_billing_address', optional(boolean())],
requireShippingAddress: ['require_shipping_address', optional(boolean())],
taxCode: ['tax_code', optional(nullable(string()))],
defaultProductPricePointId: [
'default_product_price_point_id',
optional(number()),
],
useSiteExchangeRate: [
'use_site_exchange_rate',
optional(nullable(boolean())),
],
itemCategory: ['item_category', optional(nullable(string()))],
productPricePointId: ['product_price_point_id', optional(number())],
productPricePointHandle: [
'product_price_point_handle',
optional(nullable(string())),
],
});