2024-12-01 15:44:51 +07:00

599 lines
11 KiB
TypeScript

declare namespace API {
type Announcement = {
id: number;
title: string;
content: string;
enable: boolean;
created_at: number;
updated_at: number;
};
type Application = {
id: number;
name: string;
platform: string;
subscribe_type: string;
icon: string;
url: string;
};
type ApplicationResponse = {
windows: Application[];
mac: Application[];
linux: Application[];
android: Application[];
ios: Application[];
};
type CheckoutOrderRequest = {
orderNo: string;
};
type CheckoutOrderResponse = {
type: string;
checkout_url?: string;
stripe?: StripePayment;
};
type CloseOrderRequest = {
orderNo: string;
};
type Coupon = {
id: number;
name: string;
code: string;
count: number;
type: number;
discount: number;
start_time: number;
expire_time: number;
user_limit: number;
subscribe: number[];
used_count: number;
enable: boolean;
created_at: number;
updated_at: number;
};
type CreateUserTicketFollowRequest = {
ticket_id: number;
from: string;
type: number;
content: string;
};
type CreateUserTicketRequest = {
title: string;
description: string;
};
type CurrencyConfig = {
currency_unit: string;
currency_symbol: string;
access_key: string;
};
type Document = {
id: number;
title: string;
content: string;
tags: string[];
show: boolean;
created_at: number;
updated_at: number;
};
type EmailSmtpConfig = {
email_smtp_host: string;
email_smtp_port: number;
email_smtp_user: string;
email_smtp_pass: string;
email_smtp_from: string;
email_smtp_ssl: boolean;
verify_email_template: string;
maintenance_email_template: string;
expiration_email_template: string;
};
type Follow = {
id: number;
ticket_id: number;
from: string;
type: number;
content: string;
created_at: number;
};
type GetAvailablePaymentMethodsResponse = {
list: PaymentConfig[];
};
type GetUserTicketDetailRequest = {
id: number;
};
type GetUserTicketDetailsParams = {
id: number;
};
type GetUserTicketListParams = {
page: number;
size: number;
status?: number;
search?: string;
};
type GetUserTicketListRequest = {
page: number;
size: number;
status?: number;
search?: string;
};
type GetUserTicketListResponse = {
total: number;
list: Ticket[];
};
type InviteConfig = {
forced_invite: boolean;
referral_percentage: number;
only_first_purchase: boolean;
};
type NodeConfig = {
node_secret: string;
node_pull_interval: number;
node_push_interval: number;
};
type Order = {
id: number;
user_id: number;
order_no: string;
type: number;
quantity: number;
price: number;
amount: number;
discount: number;
coupon: string;
coupon_discount: number;
method: string;
fee_amount: number;
trade_no: string;
status: number;
subscribe_id: number;
created_at: number;
updated_at: number;
};
type OrderDetail = {
id: number;
user_id: number;
order_no: string;
type: number;
quantity: number;
price: number;
amount: number;
discount: number;
coupon: string;
coupon_discount: number;
method: string;
fee_amount: number;
trade_no: string;
status: number;
subscribe_id: number;
subscribe: Subscribe;
created_at: number;
updated_at: number;
};
type PaymentConfig = {
id: number;
name: string;
mark: string;
icon?: string;
domain?: string;
config: Record<string, any>;
fee_mode: number;
fee_percent?: number;
fee_amount?: number;
enable: boolean;
};
type PreOrderResponse = {
price: number;
amount: number;
discount: number;
coupon: string;
coupon_discount: number;
fee_amount: number;
};
type PreRenewalOrderResponse = {
orderNo: string;
};
type PurchaseOrderRequest = {
subscribe_id: number;
quantity: number;
payment: string;
coupon?: string;
};
type PurchaseOrderResponse = {
order_no: string;
};
type Push = {
push_at: number;
count: number;
};
type QueryAnnouncementParams = {
page: number;
size: number;
};
type QueryAnnouncementRequest = {
page: number;
size: number;
};
type QueryAnnouncementResponse = {
total: number;
announcements: Announcement[];
};
type QueryDocumentDetailParams = {
id: number;
};
type QueryDocumentDetailRequest = {
id: number;
};
type QueryDocumentListResponse = {
total: number;
list: Document[];
};
type QueryOrderDetailParams = {
order_no: string;
};
type QueryOrderDetailRequest = {
order_no: string;
};
type QueryOrderListParams = {
page: number;
size: number;
};
type QueryOrderListRequest = {
page: number;
size: number;
};
type QueryOrderListResponse = {
total: number;
list: OrderDetail[];
};
type QuerySubscribeGroupListResponse = {
list: SubscribeGroup[];
total: number;
};
type QuerySubscribeListResponse = {
list: Subscribe[];
total: number;
};
type QueryUserAffiliateResponse = {
sum: number;
list: UserAffiliate[];
total: number;
};
type QueryUserBalanceLogListResponse = {
list: UserBalanceLog[];
total: number;
};
type QueryUserSubscribeListResponse = {
list: UserSubscribe[];
total: number;
};
type RechargeOrderRequest = {
amount: number;
payment: string;
};
type RechargeOrderResponse = {
order_no: string;
};
type RegisterConfig = {
stop_register: boolean;
enable_trial: boolean;
enable_email_verify: boolean;
enable_email_domain_suffix: boolean;
email_domain_suffix_list: string;
enable_ip_register_limit: boolean;
ip_register_limit: number;
ip_register_limit_duration: number;
};
type RenewalOrderRequest = {
subscribe_id: number;
quantity: number;
payment: string;
coupon?: string;
subscribe_mark: string;
};
type RenewalOrderResponse = {
order_no: string;
};
type ResetTrafficOrderRequest = {
subscribe_id: number;
subscribe_mark: string;
payment: string;
};
type ResetTrafficOrderResponse = {
order_no: string;
};
type Response = {
/** 状态码 */
code?: number;
/** 消息 */
msg?: string;
/** 数据 */
data?: Record<string, any>;
};
type Server = {
id: number;
name: string;
server_addr: string;
speed_limit: number;
traffic_ratio: number;
groupId: number;
protocol: string;
enable: boolean;
vmess?: Vmess;
vless?: Vless;
trojan?: Trojan;
shadowsocks?: Shadowsocks;
created_at: number;
updated_at: number;
last: Push;
};
type ServerGroup = {
id: number;
name: string;
description: string;
created_at: number;
updated_at: number;
};
type Shadowsocks = {
method: string;
port: number;
enable_relay: boolean;
relay_host: string;
relay_port: number;
};
type SiteConfig = {
host: string;
site_name: string;
site_desc: string;
site_logo: string;
};
type StripePayment = {
method: string;
client_secret: string;
publishable_key: string;
};
type Subscribe = {
id: number;
name: string;
description: string;
unit_price: number;
discount: SubscribeDiscount[];
replacement: number;
inventory: number;
traffic: number;
speed_limit: number;
device_limit: number;
quota: number;
group_id: number;
server_group: number[];
server: number[];
show: boolean;
sell: boolean;
created_at: number;
updated_at: number;
};
type SubscribeConfig = {
single_model: boolean;
subscribe_path: string;
subscribe_domain: string;
pan_domain: boolean;
};
type SubscribeDiscount = {
months: number;
discount: number;
};
type SubscribeGroup = {
id: number;
name: string;
description: string;
created_at: number;
updated_at: number;
};
type SubscribeType = {
subscribe_types: string[];
};
type TelegramConfig = {
telegram_bot_token: string;
telegram_group_url: string;
telegram_notify: boolean;
};
type Ticket = {
id: number;
title: string;
description: string;
user_id: number;
follow?: Follow[];
status: number;
created_at: number;
updated_at: number;
};
type TosConfig = {
tos_content: string;
};
type Trojan = {
network: string;
port: number;
host: string;
sni: string;
allow_insecure: boolean;
transport: Record<string, any>;
enable_relay: boolean;
relay_host: string;
relay_port: number;
};
type UpdateUserNotifyRequest = {
enable_balance_notify: boolean;
enable_login_notify: boolean;
enable_subscribe_notify: boolean;
enable_trade_notify: boolean;
};
type UpdateUserNotifySettingRequet = {
telegram: number;
enable_email_notify: boolean;
enable_telegram_notify: boolean;
};
type UpdateUserPasswordRequest = {
password: string;
};
type UpdateUserTicketStatusRequest = {
id: number;
status: number;
};
type User = {
id: number;
email: string;
avatar: string;
balance: number;
telegram: number;
refer_code: string;
referer_id: number;
enable: boolean;
is_admin?: boolean;
valid_email: boolean;
enable_email_notify: boolean;
enable_telegram_notify: boolean;
enable_balance_notify: boolean;
enable_login_notify: boolean;
enable_subscribe_notify: boolean;
enable_trade_notify: boolean;
created_at: number;
updated_at: number;
deleted_at?: number;
is_del?: boolean;
};
type UserAffiliate = {
email: string;
avatar: string;
registered_at: number;
enable: boolean;
};
type UserBalanceLog = {
id: number;
user_id: number;
amount: number;
type: number;
order_id: number;
balance: number;
created_at: number;
};
type UserSubscribe = {
id: number;
user_id: number;
order_id: number;
subscribe_id: number;
subscribe: Subscribe;
start_time: number;
expire_time: number;
traffic: number;
download: number;
upload: number;
mark: string;
status: number;
created_at: number;
updated_at: number;
};
type VerifyConfig = {
turnstile_site_key: string;
turnstile_secret: string;
enable_login_verify: boolean;
enable_register_verify: boolean;
enable_reset_password_verify: boolean;
};
type Vless = {
host: string;
port: number;
network: string;
transport: Record<string, any>;
security: string;
security_config: Record<string, any>;
xtls: string;
enable_relay: boolean;
relay_host: string;
relay_port: number;
};
type Vmess = {
host: string;
port: number;
enable_tls: boolean;
tls_config: Record<string, any>;
network: string;
transport: Record<string, any>;
enable_relay: boolean;
relay_host: string;
relay_port: number;
};
}