chargebee
Version:
A library for integrating with Chargebee.
319 lines (298 loc) • 9.86 kB
TypeScript
///<reference path='./../core.d.ts'/>
///<reference path='./../index.d.ts'/>
///<reference path='./filter.d.ts'/>
declare module 'chargebee' {
export interface Coupon {
[key: string]: unknown;
id: string;
name: string;
invoice_name?: string;
discount_type: 'fixed_amount' | 'percentage' | 'offer_quantity';
discount_percentage?: number;
discount_amount?: number;
discount_quantity?: number;
currency_code?: string;
duration_type: 'one_time' | 'forever' | 'limited_period';
duration_month?: number;
valid_from?: number;
valid_till?: number;
max_redemptions?: number;
status?: 'active' | 'expired' | 'archived' | 'deleted' | 'future';
apply_discount_on:
| 'plans'
| 'plans_and_addons'
| 'plans_with_quantity'
| 'not_applicable';
apply_on: 'invoice_amount' | 'each_specified_item';
plan_constraint: 'none' | 'all' | 'specific' | 'not_applicable';
addon_constraint: 'none' | 'all' | 'specific' | 'not_applicable';
created_at: number;
archived_at?: number;
resource_version?: number;
updated_at?: number;
included_in_mrr?: boolean;
period?: number;
period_unit?: PeriodUnitEnum;
plan_ids?: string[];
addon_ids?: string[];
item_constraints?: Coupon.ItemConstraint[];
item_constraint_criteria?: Coupon.ItemConstraintCriteria[];
redemptions?: number;
invoice_notes?: string;
meta_data?: any;
coupon_constraints?: Coupon.CouponConstraint[];
deleted: boolean;
}
export namespace Coupon {
export class CouponResource {
create(
input: CreateInputParam,
headers?: ChargebeeRequestHeader,
): Promise<ChargebeeResponse<CreateResponse>>;
createForItems(
input: CreateForItemsInputParam,
headers?: ChargebeeRequestHeader,
): Promise<ChargebeeResponse<CreateForItemsResponse>>;
updateForItems(
coupon_id: string,
input: UpdateForItemsInputParam,
headers?: ChargebeeRequestHeader,
): Promise<ChargebeeResponse<UpdateForItemsResponse>>;
list(
input?: ListInputParam,
headers?: ChargebeeRequestHeader,
): Promise<ChargebeeResponse<ListResponse>>;
retrieve(
coupon_id: string,
headers?: ChargebeeRequestHeader,
): Promise<ChargebeeResponse<RetrieveResponse>>;
update(
coupon_id: string,
input?: UpdateInputParam,
headers?: ChargebeeRequestHeader,
): Promise<ChargebeeResponse<UpdateResponse>>;
delete(
coupon_id: string,
headers?: ChargebeeRequestHeader,
): Promise<ChargebeeResponse<DeleteResponse>>;
copy(
input: CopyInputParam,
headers?: ChargebeeRequestHeader,
): Promise<ChargebeeResponse<CopyResponse>>;
unarchive(
coupon_id: string,
headers?: ChargebeeRequestHeader,
): Promise<ChargebeeResponse<UnarchiveResponse>>;
}
export interface CreateResponse {
coupon: Coupon;
}
export interface CreateForItemsResponse {
coupon: Coupon;
}
export interface UpdateForItemsResponse {
coupon: Coupon;
}
export interface ListResponse {
list: { coupon: Coupon }[];
next_offset?: string;
}
export interface RetrieveResponse {
coupon: Coupon;
}
export interface UpdateResponse {
coupon: Coupon;
}
export interface DeleteResponse {
coupon: Coupon;
}
export interface CopyResponse {
coupon: Coupon;
}
export interface UnarchiveResponse {
coupon: Coupon;
}
export interface ItemConstraint {
item_type: 'plan' | 'addon' | 'charge';
constraint: 'none' | 'all' | 'specific' | 'criteria';
item_price_ids?: any[];
}
export interface ItemConstraintCriteria {
item_type: 'plan' | 'addon' | 'charge';
currencies?: any[];
item_family_ids?: any[];
item_price_periods?: any[];
}
export interface CouponConstraint {
entity_type: 'customer';
type:
| 'max_redemptions'
| 'unique_by'
| 'existing_customer'
| 'new_customer';
value?: string;
}
// REQUEST PARAMS
//---------------
export interface CreateInputParam {
id: string;
name: string;
invoice_name?: string;
discount_type?: 'fixed_amount' | 'percentage' | 'offer_quantity';
discount_amount?: number;
currency_code?: string;
discount_percentage?: number;
discount_quantity?: number;
apply_on: 'invoice_amount' | 'each_specified_item';
duration_type?: 'one_time' | 'forever' | 'limited_period';
duration_month?: number;
valid_till?: number;
max_redemptions?: number;
invoice_notes?: string;
meta_data?: any;
included_in_mrr?: boolean;
period?: number;
period_unit?: PeriodUnitEnum;
plan_constraint?: 'none' | 'all' | 'specific';
addon_constraint?: 'none' | 'all' | 'specific';
plan_ids?: string[];
addon_ids?: string[];
status?: 'active' | 'archived';
}
export interface CreateForItemsInputParam {
id: string;
name: string;
invoice_name?: string;
discount_type?: 'fixed_amount' | 'percentage' | 'offer_quantity';
discount_amount?: number;
currency_code?: string;
discount_percentage?: number;
discount_quantity?: number;
apply_on: 'invoice_amount' | 'each_specified_item';
duration_type?: 'one_time' | 'forever' | 'limited_period';
duration_month?: number;
valid_from?: number;
valid_till?: number;
max_redemptions?: number;
invoice_notes?: string;
meta_data?: any;
included_in_mrr?: boolean;
period?: number;
period_unit?: PeriodUnitEnum;
status?: 'active' | 'archived';
item_constraints?: ItemConstraintsCreateForItemsInputParam[];
item_constraint_criteria?: ItemConstraintCriteriaCreateForItemsInputParam[];
coupon_constraints?: CouponConstraintsCreateForItemsInputParam[];
[key: `cf_${string}`]: unknown;
}
export interface UpdateForItemsInputParam {
name?: string;
invoice_name?: string;
discount_type?: 'fixed_amount' | 'percentage' | 'offer_quantity';
discount_amount?: number;
currency_code?: string;
discount_percentage?: number;
discount_quantity?: number;
apply_on?: 'invoice_amount' | 'each_specified_item';
duration_type?: 'one_time' | 'forever' | 'limited_period';
duration_month?: number;
valid_from?: number;
valid_till?: number;
max_redemptions?: number;
invoice_notes?: string;
meta_data?: any;
included_in_mrr?: boolean;
period?: number;
period_unit?: PeriodUnitEnum;
item_constraints?: ItemConstraintsUpdateForItemsInputParam[];
item_constraint_criteria?: ItemConstraintCriteriaUpdateForItemsInputParam[];
coupon_constraints?: CouponConstraintsUpdateForItemsInputParam[];
[key: `cf_${string}`]: unknown;
}
export interface ListInputParam {
limit?: number;
offset?: string;
id?: filter.String;
name?: filter.String;
discount_type?: filter.Enum;
duration_type?: filter.Enum;
status?: filter.Enum;
apply_on?: filter.Enum;
created_at?: filter.Timestamp;
updated_at?: filter.Timestamp;
currency_code?: filter.String;
'sort_by[asc]'?: string;
'sort_by[desc]'?: string;
[key: `cf_${string}`]: unknown;
}
export interface UpdateInputParam {
name?: string;
invoice_name?: string;
discount_type?: 'fixed_amount' | 'percentage' | 'offer_quantity';
discount_amount?: number;
currency_code?: string;
discount_percentage?: number;
discount_quantity?: number;
apply_on?: 'invoice_amount' | 'each_specified_item';
duration_type?: 'one_time' | 'forever' | 'limited_period';
duration_month?: number;
valid_till?: number;
max_redemptions?: number;
invoice_notes?: string;
meta_data?: any;
included_in_mrr?: boolean;
period?: number;
period_unit?: PeriodUnitEnum;
plan_constraint?: 'none' | 'all' | 'specific';
addon_constraint?: 'none' | 'all' | 'specific';
plan_ids?: string[];
addon_ids?: string[];
}
export interface CopyInputParam {
from_site: string;
id_at_from_site: string;
id?: string;
for_site_merging?: boolean;
}
export interface ItemConstraintCriteriaCreateForItemsInputParam {
item_type?: 'plan' | 'addon' | 'charge';
item_family_ids?: any;
currencies?: any;
item_price_periods?: any;
}
export interface CouponConstraintsCreateForItemsInputParam {
entity_type: 'customer';
type:
| 'max_redemptions'
| 'unique_by'
| 'existing_customer'
| 'new_customer';
value?: string;
}
export interface ItemConstraintsCreateForItemsInputParam {
constraint: 'none' | 'all' | 'specific' | 'criteria';
item_type: 'plan' | 'addon' | 'charge';
item_price_ids?: any;
}
export interface ItemConstraintCriteriaUpdateForItemsInputParam {
item_type?: 'plan' | 'addon' | 'charge';
item_family_ids?: any;
currencies?: any;
item_price_periods?: any;
}
export interface CouponConstraintsUpdateForItemsInputParam {
entity_type: 'customer';
type:
| 'max_redemptions'
| 'unique_by'
| 'existing_customer'
| 'new_customer';
value?: string;
}
export interface ItemConstraintsUpdateForItemsInputParam {
constraint: 'none' | 'all' | 'specific' | 'criteria';
item_type: 'plan' | 'addon' | 'charge';
item_price_ids?: any;
}
}
}