2025-08-20 18:02:50 +09:00
|
|
|
// Subscription types from WHMCS
|
|
|
|
|
|
|
|
|
|
export interface Subscription {
|
|
|
|
|
id: number;
|
|
|
|
|
serviceId: number;
|
|
|
|
|
productName: string;
|
|
|
|
|
domain?: string;
|
2025-08-21 15:24:40 +09:00
|
|
|
cycle:
|
|
|
|
|
| "Monthly"
|
|
|
|
|
| "Quarterly"
|
|
|
|
|
| "Semi-Annually"
|
|
|
|
|
| "Annually"
|
|
|
|
|
| "Biennially"
|
|
|
|
|
| "Triennially"
|
|
|
|
|
| string;
|
|
|
|
|
status:
|
|
|
|
|
| "Active"
|
|
|
|
|
| "Suspended"
|
|
|
|
|
| "Terminated"
|
|
|
|
|
| "Cancelled"
|
|
|
|
|
| "Pending"
|
|
|
|
|
| "Completed"
|
|
|
|
|
| string;
|
|
|
|
|
nextDue?: string; // ISO
|
2025-08-20 18:02:50 +09:00
|
|
|
amount: number;
|
|
|
|
|
currency: string;
|
2025-08-21 15:24:40 +09:00
|
|
|
currencySymbol?: string; // e.g., '¥', '$'
|
2025-08-20 18:02:50 +09:00
|
|
|
registrationDate: string; // ISO
|
|
|
|
|
notes?: string;
|
|
|
|
|
customFields?: Record<string, string>;
|
|
|
|
|
// Additional WHMCS fields
|
|
|
|
|
orderNumber?: string;
|
|
|
|
|
groupName?: string;
|
|
|
|
|
paymentMethod?: string;
|
|
|
|
|
serverName?: string;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface SubscriptionList {
|
|
|
|
|
subscriptions: Subscription[];
|
|
|
|
|
totalCount: number;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface Product {
|
|
|
|
|
id: number;
|
|
|
|
|
name: string;
|
|
|
|
|
description?: string;
|
|
|
|
|
group: string;
|
|
|
|
|
pricing: ProductPricing[];
|
|
|
|
|
features?: string[];
|
|
|
|
|
configOptions?: ConfigOption[];
|
|
|
|
|
available: boolean;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface ProductPricing {
|
|
|
|
|
cycle: string;
|
|
|
|
|
price: number;
|
|
|
|
|
currency: string;
|
|
|
|
|
setup?: number;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface ConfigOption {
|
|
|
|
|
id: number;
|
|
|
|
|
name: string;
|
2025-08-21 15:24:40 +09:00
|
|
|
type: "dropdown" | "radio" | "quantity" | string;
|
2025-08-20 18:02:50 +09:00
|
|
|
options: ConfigOptionValue[];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface ConfigOptionValue {
|
|
|
|
|
id: number;
|
|
|
|
|
name: string;
|
|
|
|
|
price?: number;
|
|
|
|
|
}
|