pancake-client-sdk
Version:
Official TypeScript SDK for Pancake POS API
110 lines (109 loc) • 2.71 kB
TypeScript
export interface LoyaltyProgram {
id: string;
name: string;
is_active: boolean;
points_currency_ratio: number;
min_points_to_redeem: number;
point_expiry_months?: number;
created_at: string;
updated_at: string;
}
export interface LoyaltyTier {
id: string;
name: string;
min_points: number;
benefits: LoyaltyBenefit[];
color?: string;
icon_url?: string;
}
export interface LoyaltyBenefit {
type: 'discount_percent' | 'discount_amount' | 'free_shipping' | 'bonus_points' | 'custom';
value: number;
description?: string;
conditions?: {
min_order_value?: number;
max_discount_value?: number;
product_ids?: string[];
category_ids?: number[];
};
}
export interface LoyaltyTransaction {
id: string;
customer_id: string;
type: 'earn' | 'redeem' | 'expire' | 'adjust';
points: number;
order_id?: string;
reason?: string;
expiry_date?: string;
created_at: string;
created_by?: {
id: string;
name: string;
};
}
export interface CustomerLoyalty {
customer_id: string;
total_points: number;
tier_id: string;
tier_info: LoyaltyTier;
points_history: {
valid_points: number;
expiring_points: number;
next_expiry_date?: string;
next_expiry_points?: number;
};
lifetime_points: number;
year_to_date_points: number;
}
export interface CreateLoyaltyProgramRequest {
name: string;
points_currency_ratio: number;
min_points_to_redeem: number;
point_expiry_months?: number;
}
export interface CreateLoyaltyTierRequest {
name: string;
min_points: number;
benefits: LoyaltyBenefit[];
color?: string;
icon_url?: string;
}
export interface AdjustPointsRequest {
customer_id: string;
points: number;
reason: string;
expiry_date?: string;
}
export interface RedeemPointsRequest {
customer_id: string;
points: number;
order_id?: string;
}
export interface LoyaltyTransactionListParams {
page_size?: number;
page_number?: number;
customer_id?: string;
type?: string;
from_date?: string;
to_date?: string;
}
export interface LoyaltyAnalytics {
total_active_members: number;
points_statistics: {
total_points_issued: number;
total_points_redeemed: number;
total_points_expired: number;
total_active_points: number;
};
tier_distribution: {
tier_id: string;
tier_name: string;
member_count: number;
}[];
monthly_activity: {
month: string;
points_earned: number;
points_redeemed: number;
new_members: number;
}[];
}