2392 lines
44 KiB
TypeScript

declare namespace API {
type Ads = {
id: number;
title: string;
type: string;
content: string;
description: string;
target_url: string;
start_time: number;
end_time: number;
status: number;
created_at: number;
updated_at: number;
};
type AlipayNotifyResponse = {
return_code: string;
};
type Announcement = {
id: number;
title: string;
content: string;
show: boolean;
pinned: boolean;
popup: boolean;
created_at: number;
updated_at: number;
};
type AnyTLS = {
port: number;
security_config: SecurityConfig;
};
type Application = {
id: number;
icon: string;
name: string;
description: string;
subscribe_type: string;
};
type ApplicationPlatform = {
ios?: ApplicationVersion[];
macos?: ApplicationVersion[];
linux?: ApplicationVersion[];
android?: ApplicationVersion[];
windows?: ApplicationVersion[];
harmony?: ApplicationVersion[];
};
type ApplicationResponse = {
applications: ApplicationResponseInfo[];
};
type ApplicationResponseInfo = {
id: number;
name: string;
icon: string;
description: string;
subscribe_type: string;
platform: ApplicationPlatform;
};
type ApplicationVersion = {
id: number;
url: string;
version: string;
description: string;
is_default: boolean;
};
type AppUserSubcbribe = {
id: number;
name: string;
upload: number;
traffic: number;
download: number;
device_limit: number;
start_time: string;
expire_time: string;
list: AppUserSubscbribeNode[];
};
type AppUserSubscbribeNode = {
id: number;
name: string;
uuid: string;
protocol: string;
relay_mode: string;
relay_node: string;
server_addr: string;
speed_limit: number;
tags: string[];
traffic: number;
traffic_ratio: number;
upload: number;
config: string;
country: string;
city: string;
latitude: string;
longitude: string;
created_at: number;
download: number;
};
type AuthConfig = {
mobile: MobileAuthenticateConfig;
email: EmailAuthticateConfig;
register: PubilcRegisterConfig;
};
type AuthMethodConfig = {
id: number;
method: string;
config: Record<string, any>;
enabled: boolean;
};
type BalanceLog = {
type: number;
user_id: number;
amount: number;
order_no?: string;
balance: number;
timestamp: number;
};
type BatchDeleteCouponRequest = {
ids: number[];
};
type BatchDeleteDocumentRequest = {
ids: number[];
};
type BatchDeleteSubscribeGroupRequest = {
ids: number[];
};
type BatchDeleteSubscribeRequest = {
ids: number[];
};
type BatchDeleteUserRequest = {
ids: number[];
};
type BatchSendEmailTask = {
id: number;
subject: string;
content: string;
recipients: string;
scope: string;
register_start_time: number;
register_end_time: number;
additional: string;
scheduled: number;
interval: number;
limit: number;
status: number;
errors: string;
total: number;
current: number;
created_at: number;
updated_at: number;
};
type CheckoutOrderRequest = {
orderNo: string;
returnUrl?: string;
};
type CheckoutOrderResponse = {
type: string;
checkout_url?: string;
stripe?: StripePayment;
};
type CloseOrderRequest = {
orderNo: string;
};
type CommissionLog = {
type: number;
user_id: number;
amount: number;
order_no: string;
timestamp: number;
};
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 CreateAdsRequest = {
title: string;
type: string;
content: string;
description: string;
target_url: string;
start_time: number;
end_time: number;
status: number;
};
type CreateAnnouncementRequest = {
title: string;
content: string;
};
type CreateBatchSendEmailTaskRequest = {
subject: string;
content: string;
scope: string;
register_start_time?: number;
register_end_time?: number;
additional?: string;
scheduled?: number;
interval?: number;
limit?: number;
};
type CreateCouponRequest = {
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;
};
type CreateDocumentRequest = {
title: string;
content: string;
tags?: string[];
show: boolean;
};
type CreateNodeRequest = {
name: string;
tags?: string[];
port: number;
address: string;
server_id: number;
protocol: string;
enabled: boolean;
};
type CreateOrderRequest = {
user_id: number;
type: number;
quantity?: number;
price: number;
amount: number;
discount?: number;
coupon?: string;
coupon_discount?: number;
commission: number;
fee_amount: number;
payment_id: number;
trade_no?: string;
status?: number;
subscribe_id?: number;
};
type CreatePaymentMethodRequest = {
name: string;
platform: string;
description: string;
icon?: string;
domain?: string;
config: Record<string, any>;
fee_mode: number;
fee_percent?: number;
fee_amount?: number;
enable: boolean;
};
type CreateServerRequest = {
name: string;
country?: string;
city?: string;
ratio: number;
address: string;
sort?: number;
protocols: Protocol[];
};
type CreateSubscribeApplicationRequest = {
name: string;
description?: string;
icon?: string;
scheme?: string;
user_agent: string;
is_default: boolean;
template: string;
output_format: string;
download_link: DownloadLink;
};
type CreateSubscribeGroupRequest = {
name: string;
description: string;
};
type CreateSubscribeRequest = {
name: string;
language: string;
description: string;
unit_price: number;
unit_time: string;
discount: SubscribeDiscount[];
replacement: number;
inventory: number;
traffic: number;
speed_limit: number;
device_limit: number;
quota: number;
nodes: number[];
node_tags: string[];
show: boolean;
sell: boolean;
deduction_ratio: number;
allow_deduction: boolean;
reset_cycle: number;
renewal_reset: boolean;
};
type CreateTicketFollowRequest = {
ticket_id: number;
from: string;
type: number;
content: string;
};
type CreateUserAuthMethodRequest = {
user_id: number;
auth_type: string;
auth_identifier: string;
};
type CreateUserRequest = {
email: string;
telephone: string;
telephone_area_code: string;
password: string;
product_id: number;
duration: number;
referral_percentage: number;
only_first_purchase: boolean;
referer_user: string;
refer_code: string;
balance: number;
commission: number;
gift_amount: number;
is_admin: boolean;
};
type CreateUserSubscribeRequest = {
user_id: number;
expired_at: number;
traffic: number;
subscribe_id: number;
};
type CurrencyConfig = {
access_key: string;
currency_unit: string;
currency_symbol: string;
};
type DeleteAdsRequest = {
id: number;
};
type DeleteAnnouncementRequest = {
id: number;
};
type DeleteCouponRequest = {
id: number;
};
type DeleteDocumentRequest = {
id: number;
};
type DeleteNodeRequest = {
id: number;
};
type DeletePaymentMethodRequest = {
id: number;
};
type DeleteServerRequest = {
id: number;
};
type DeleteSubscribeApplicationRequest = {
id: number;
};
type DeleteSubscribeGroupRequest = {
id: number;
};
type DeleteSubscribeRequest = {
id: number;
};
type DeleteUserAuthMethodRequest = {
user_id: number;
auth_type: string;
};
type DeleteUserDeivceRequest = {
id: number;
};
type DeleteUserParams = {
id: number;
};
type DeleteUserSubscribeRequest = {
user_subscribe_id: number;
};
type Document = {
id: number;
title: string;
content: string;
tags: string[];
show: boolean;
created_at: number;
updated_at: number;
};
type DownloadLink = {
ios?: string;
android?: string;
windows?: string;
mac?: string;
linux?: string;
harmony?: string;
};
type EmailAuthticateConfig = {
enable: boolean;
enable_verify: boolean;
enable_domain_suffix: boolean;
domain_suffix_list: string;
};
type EPayNotifyRequest = {
pid: number;
trade_no: string;
out_trade_no: string;
type: string;
name: string;
money: string;
trade_status: string;
param: string;
sign: string;
sign_type: string;
};
type FilterBalanceLogParams = {
page: number;
size: number;
date?: string;
search?: string;
user_id?: number;
};
type FilterBalanceLogRequest = {
page?: number;
size?: number;
date?: string;
search?: string;
user_id?: number;
};
type FilterBalanceLogResponse = {
total: number;
list: BalanceLog[];
};
type FilterCommissionLogParams = {
page: number;
size: number;
date?: string;
search?: string;
user_id?: number;
};
type FilterCommissionLogRequest = {
page?: number;
size?: number;
date?: string;
search?: string;
user_id?: number;
};
type FilterCommissionLogResponse = {
total: number;
list: CommissionLog[];
};
type FilterEmailLogParams = {
page: number;
size: number;
date?: string;
search?: string;
};
type FilterEmailLogResponse = {
total: number;
list: MessageLog[];
};
type FilterGiftLogParams = {
page: number;
size: number;
date?: string;
search?: string;
user_id?: number;
};
type FilterGiftLogRequest = {
page?: number;
size?: number;
date?: string;
search?: string;
user_id?: number;
};
type FilterGiftLogResponse = {
total: number;
list: GiftLog[];
};
type FilterLoginLogParams = {
page: number;
size: number;
date?: string;
search?: string;
user_id?: number;
};
type FilterLoginLogRequest = {
page?: number;
size?: number;
date?: string;
search?: string;
user_id?: number;
};
type FilterLoginLogResponse = {
total: number;
list: LoginLog[];
};
type FilterLogParams = {
page: number;
size: number;
date?: string;
search?: string;
};
type FilterMobileLogParams = {
page: number;
size: number;
date?: string;
search?: string;
};
type FilterMobileLogResponse = {
total: number;
list: MessageLog[];
};
type FilterNodeListParams = {
page: number;
size: number;
search?: string;
};
type FilterNodeListRequest = {
page: number;
size: number;
search?: string;
};
type FilterNodeListResponse = {
total: number;
list: Node[];
};
type FilterRegisterLogParams = {
page: number;
size: number;
date?: string;
search?: string;
user_id?: number;
};
type FilterRegisterLogRequest = {
page?: number;
size?: number;
date?: string;
search?: string;
user_id?: number;
};
type FilterRegisterLogResponse = {
total: number;
list: RegisterLog[];
};
type FilterResetSubscribeLogParams = {
page: number;
size: number;
date?: string;
search?: string;
user_subscribe_id?: number;
};
type FilterResetSubscribeLogRequest = {
page?: number;
size?: number;
date?: string;
search?: string;
user_subscribe_id?: number;
};
type FilterResetSubscribeLogResponse = {
total: number;
list: ResetSubscribeLog[];
};
type FilterServerListParams = {
page: number;
size: number;
search?: string;
};
type FilterServerListRequest = {
page: number;
size: number;
search?: string;
};
type FilterServerListResponse = {
total: number;
list: Server[];
};
type FilterServerTrafficLogParams = {
page: number;
size: number;
date?: string;
search?: string;
server_id?: number;
};
type FilterServerTrafficLogRequest = {
page?: number;
size?: number;
date?: string;
search?: string;
server_id?: number;
};
type FilterServerTrafficLogResponse = {
total: number;
list: ServerTrafficLog[];
};
type FilterSubscribeLogParams = {
page: number;
size: number;
date?: string;
search?: string;
user_id?: number;
};
type FilterSubscribeLogRequest = {
page?: number;
size?: number;
date?: string;
search?: string;
user_id?: number;
};
type FilterSubscribeLogResponse = {
total: number;
list: SubscribeLog[];
};
type FilterSubscribeTrafficRequest = {
page?: number;
size?: number;
date?: string;
search?: string;
user_id?: number;
user_subscribe_id?: number;
};
type FilterSubscribeTrafficResponse = {
total: number;
list: UserSubscribeTrafficLog[];
};
type FilterTrafficLogDetailsParams = {
page: number;
size: number;
date?: string;
search?: string;
server_id?: number;
subscribe_id?: number;
user_id?: number;
};
type FilterTrafficLogDetailsRequest = {
page?: number;
size?: number;
date?: string;
search?: string;
server_id?: number;
subscribe_id?: number;
user_id?: number;
};
type FilterTrafficLogDetailsResponse = {
total: number;
list: TrafficLogDetails[];
};
type FilterUserSubscribeTrafficLogParams = {
page: number;
size: number;
date?: string;
search?: string;
user_id?: number;
user_subscribe_id?: number;
};
type Follow = {
id: number;
ticket_id: number;
from: string;
type: number;
content: string;
created_at: number;
};
type GetAdsDetailParams = {
id: number;
};
type GetAdsDetailRequest = {
id: number;
};
type GetAdsListParams = {
page: number;
size: number;
status?: number;
search?: string;
};
type GetAdsListRequest = {
page: number;
size: number;
status?: number;
search?: string;
};
type GetAdsListResponse = {
total: number;
list: Ads[];
};
type GetAnnouncementListParams = {
page: number;
size: number;
show?: boolean;
pinned?: boolean;
popup?: boolean;
search?: string;
};
type GetAnnouncementListRequest = {
page: number;
size: number;
show?: boolean;
pinned?: boolean;
popup?: boolean;
search?: string;
};
type GetAnnouncementListResponse = {
total: number;
list: Announcement[];
};
type GetAnnouncementParams = {
id: number;
};
type GetAnnouncementRequest = {
id: number;
};
type GetAuthMethodConfigParams = {
method: string;
};
type GetAuthMethodConfigRequest = {
method: string;
};
type GetAuthMethodListResponse = {
list: AuthMethodConfig[];
};
type GetAvailablePaymentMethodsResponse = {
list: PaymentMethod[];
};
type GetBatchSendEmailTaskListParams = {
page: number;
size: number;
scope?: string;
status?: number;
};
type GetBatchSendEmailTaskListRequest = {
page: number;
size: number;
scope?: string;
status?: number;
};
type GetBatchSendEmailTaskListResponse = {
total: number;
list: BatchSendEmailTask[];
};
type GetBatchSendEmailTaskStatusRequest = {
id: number;
};
type GetBatchSendEmailTaskStatusResponse = {
status: number;
current: number;
total: number;
errors: string;
};
type GetCouponListParams = {
page: number;
size: number;
subscribe?: number;
search?: string;
};
type GetCouponListRequest = {
page: number;
size: number;
subscribe?: number;
search?: string;
};
type GetCouponListResponse = {
total: number;
list: Coupon[];
};
type GetDetailRequest = {
id: number;
};
type GetDocumentDetailRequest = {
id: number;
};
type GetDocumentListParams = {
page: number;
size: number;
tag?: string;
search?: string;
};
type GetDocumentListRequest = {
page: number;
size: number;
tag?: string;
search?: string;
};
type GetDocumentListResponse = {
total: number;
list: Document[];
};
type GetMessageLogListParams = {
page: number;
size: number;
type: number;
search?: string;
};
type GetMessageLogListRequest = {
page: number;
size: number;
type: number;
search?: string;
};
type GetMessageLogListResponse = {
total: number;
list: MessageLog[];
};
type GetNodeMultiplierResponse = {
periods: TimePeriod[];
};
type GetOrderListParams = {
page: number;
size: number;
user_id?: number;
status?: number;
subscribe_id?: number;
search?: string;
};
type GetOrderListRequest = {
page: number;
size: number;
user_id?: number;
status?: number;
subscribe_id?: number;
search?: string;
};
type GetOrderListResponse = {
total: number;
list: Order[];
};
type GetPaymentMethodListParams = {
page: number;
size: number;
platform?: string;
search?: string;
enable?: boolean;
};
type GetPaymentMethodListRequest = {
page: number;
size: number;
platform?: string;
search?: string;
enable?: boolean;
};
type GetPaymentMethodListResponse = {
total: number;
list: PaymentMethodDetail[];
};
type GetPreSendEmailCountRequest = {
scope: string;
register_start_time?: number;
register_end_time?: number;
};
type GetPreSendEmailCountResponse = {
count: number;
};
type GetServerProtocolsParams = {
id: number;
};
type GetServerProtocolsRequest = {
id: number;
};
type GetServerProtocolsResponse = {
protocols: Protocol[];
};
type GetSubscribeApplicationListParams = {
page: number;
size: number;
};
type GetSubscribeApplicationListRequest = {
page: number;
size: number;
};
type GetSubscribeApplicationListResponse = {
total: number;
list: SubscribeApplication[];
};
type GetSubscribeDetailsParams = {
id: number;
};
type GetSubscribeDetailsRequest = {
id: number;
};
type GetSubscribeGroupListResponse = {
list: SubscribeGroup[];
total: number;
};
type GetSubscribeListParams = {
page: number;
size: number;
language?: string;
search?: string;
};
type GetSubscribeListRequest = {
page: number;
size: number;
language?: string;
search?: string;
};
type GetSubscribeListResponse = {
list: SubscribeItem[];
total: number;
};
type GetTicketListParams = {
page: number;
size: number;
user_id?: number;
status?: number;
search?: string;
};
type GetTicketListRequest = {
page: number;
size: number;
user_id?: number;
status?: number;
search?: string;
};
type GetTicketListResponse = {
total: number;
list: Ticket[];
};
type GetTicketParams = {
id: number;
};
type GetTicketRequest = {
id: number;
};
type GetUserAuthMethodRequest = {
user_id: number;
};
type GetUserAuthMethodResponse = {
auth_methods: UserAuthMethod[];
};
type GetUserDetailParams = {
id: number;
};
type GetUserListParams = {
page: number;
size: number;
search?: string;
user_id?: number;
subscribe_id?: number;
user_subscribe_id?: number;
};
type GetUserListRequest = {
page: number;
size: number;
search?: string;
user_id?: number;
subscribe_id?: number;
user_subscribe_id?: number;
};
type GetUserListResponse = {
total: number;
list: User[];
};
type GetUserLoginLogsParams = {
page: number;
size: number;
user_id: number;
};
type GetUserLoginLogsRequest = {
page: number;
size: number;
user_id: number;
};
type GetUserLoginLogsResponse = {
list: UserLoginLog[];
total: number;
};
type GetUserSubscribeByIdParams = {
id: number;
};
type GetUserSubscribeByIdRequest = {
id: number;
};
type GetUserSubscribeDevicesParams = {
page: number;
size: number;
user_id: number;
subscribe_id: number;
};
type GetUserSubscribeDevicesRequest = {
page: number;
size: number;
user_id: number;
subscribe_id: number;
};
type GetUserSubscribeDevicesResponse = {
list: UserDevice[];
total: number;
};
type GetUserSubscribeListRequest = {
page: number;
size: number;
user_id: number;
};
type GetUserSubscribeListResponse = {
list: UserSubscribe[];
total: number;
};
type GetUserSubscribeLogsParams = {
page: number;
size: number;
user_id: number;
subscribe_id?: number;
};
type GetUserSubscribeLogsRequest = {
page: number;
size: number;
user_id: number;
subscribe_id?: number;
};
type GetUserSubscribeLogsResponse = {
list: UserSubscribeLog[];
total: number;
};
type GetUserSubscribeParams = {
page: number;
size: number;
user_id: number;
};
type GetUserSubscribeResetTrafficLogsParams = {
page: number;
size: number;
user_subscribe_id: number;
};
type GetUserSubscribeResetTrafficLogsRequest = {
page: number;
size: number;
user_subscribe_id: number;
};
type GetUserSubscribeResetTrafficLogsResponse = {
list: ResetSubscribeTrafficLog[];
total: number;
};
type GetUserSubscribeTrafficLogsParams = {
page: number;
size: number;
user_id: number;
subscribe_id: number;
start_time: number;
end_time: number;
};
type GetUserSubscribeTrafficLogsRequest = {
page: number;
size: number;
user_id: number;
subscribe_id: number;
start_time: number;
end_time: number;
};
type GetUserSubscribeTrafficLogsResponse = {
list: TrafficLog[];
total: number;
};
type GiftLog = {
type: number;
user_id: number;
order_no: string;
subscribe_id: number;
amount: number;
balance: number;
remark?: string;
timestamp: number;
};
type HasMigrateSeverNodeResponse = {
has_migrate: boolean;
};
type Hysteria2 = {
port: number;
hop_ports: string;
hop_interval: number;
obfs_password: string;
security_config: SecurityConfig;
};
type InviteConfig = {
forced_invite: boolean;
referral_percentage: number;
only_first_purchase: boolean;
};
type KickOfflineRequest = {
id: number;
};
type LoginLog = {
user_id: number;
method: string;
login_ip: string;
user_agent: string;
success: boolean;
timestamp: number;
};
type LogResponse = {
list: Record<string, any>;
};
type LogSetting = {
auto_clear: boolean;
clear_days: number;
};
type MessageLog = {
id: number;
type: number;
platform: string;
to: string;
subject: string;
content: Record<string, any>;
status: number;
created_at: number;
};
type MigrateServerNodeResponse = {
succee: number;
fail: number;
message?: string;
};
type MobileAuthenticateConfig = {
enable: boolean;
enable_whitelist: boolean;
whitelist: string[];
};
type Node = {
id: number;
name: string;
tags: string[];
port: number;
address: string;
server_id: number;
protocol: string;
enabled: boolean;
sort?: number;
created_at: number;
updated_at: number;
};
type NodeConfig = {
node_secret: string;
node_pull_interval: number;
node_push_interval: number;
};
type NodeRelay = {
host: string;
port: number;
prefix: string;
};
type Order = {
id: number;
user_id: number;
order_no: string;
type: number;
quantity: number;
price: number;
amount: number;
gift_amount: number;
discount: number;
coupon: string;
coupon_discount: number;
commission?: number;
payment: PaymentMethod;
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;
gift_amount: number;
discount: number;
coupon: string;
coupon_discount: number;
commission?: number;
payment: PaymentMethod;
method: string;
fee_amount: number;
trade_no: string;
status: number;
subscribe_id: number;
subscribe: Subscribe;
created_at: number;
updated_at: number;
};
type OrdersStatistics = {
date?: string;
amount_total: number;
new_order_amount: number;
renewal_order_amount: number;
list?: OrdersStatistics[];
};
type PaymentConfig = {
id: number;
name: string;
platform: string;
description: string;
icon?: string;
domain?: string;
config: Record<string, any>;
fee_mode: number;
fee_percent?: number;
fee_amount?: number;
enable: boolean;
};
type PaymentMethod = {
id: number;
name: string;
platform: string;
description: string;
icon: string;
fee_mode: number;
fee_percent: number;
fee_amount: number;
};
type PaymentMethodDetail = {
id: number;
name: string;
platform: string;
description: string;
icon: string;
domain: string;
config: Record<string, any>;
fee_mode: number;
fee_percent: number;
fee_amount: number;
enable: boolean;
notify_url: string;
};
type PlatformInfo = {
platform: string;
platform_url: string;
platform_field_description: Record<string, any>;
};
type PlatformResponse = {
list: PlatformInfo[];
};
type PreOrderResponse = {
price: number;
amount: number;
discount: number;
gift_amount: number;
coupon: string;
coupon_discount: number;
fee_amount: number;
};
type PreRenewalOrderResponse = {
orderNo: string;
};
type PreviewSubscribeTemplateParams = {
id: number;
};
type PreviewSubscribeTemplateRequest = {
id: number;
};
type PreviewSubscribeTemplateResponse = {
/** 预览的模板内容 */
template: string;
};
type PrivacyPolicyConfig = {
privacy_policy: string;
};
type Protocol = {
type: string;
port: number;
security?: string;
sni?: string;
allow_insecure?: boolean;
fingerprint?: string;
reality_server_addr?: string;
reality_server_port?: number;
reality_private_key?: string;
reality_public_key?: string;
reality_short_id?: string;
transport?: string;
host?: string;
path?: string;
service_name?: string;
cipher?: string;
server_key?: string;
flow?: string;
hop_ports?: string;
hop_interval?: number;
obfs_password?: string;
disable_sni?: boolean;
reduce_rtt?: boolean;
udp_relay_mode?: string;
congestion_controller?: string;
};
type PubilcRegisterConfig = {
stop_register: boolean;
enable_ip_register_limit: boolean;
ip_register_limit: number;
ip_register_limit_duration: number;
};
type PubilcVerifyCodeConfig = {
verify_code_interval: number;
};
type PurchaseOrderRequest = {
subscribe_id: number;
quantity: number;
payment?: number;
coupon?: string;
};
type PurchaseOrderResponse = {
order_no: string;
};
type QueryAnnouncementRequest = {
page: number;
size: number;
pinned: boolean;
popup: boolean;
};
type QueryAnnouncementResponse = {
total: number;
announcements: Announcement[];
};
type QueryDocumentDetailRequest = {
id: number;
};
type QueryDocumentListResponse = {
total: number;
list: Document[];
};
type QueryNodeTagResponse = {
tags: string[];
};
type QueryOrderDetailRequest = {
order_no: string;
};
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 QueryUserAffiliateCountResponse = {
registers: number;
total_commission: number;
};
type QueryUserAffiliateListRequest = {
page: number;
size: number;
};
type QueryUserAffiliateListResponse = {
list: UserAffiliate[];
total: number;
};
type RechargeOrderRequest = {
amount: number;
payment: number;
};
type RechargeOrderResponse = {
order_no: string;
};
type RegisterConfig = {
stop_register: boolean;
enable_trial: boolean;
trial_subscribe: number;
trial_time: number;
trial_time_unit: string;
enable_ip_register_limit: boolean;
ip_register_limit: number;
ip_register_limit_duration: number;
};
type RegisterLog = {
user_id: number;
auth_method: string;
identifier: string;
register_ip: string;
user_agent: string;
timestamp: number;
};
type RenewalOrderRequest = {
user_subscribe_id: number;
quantity: number;
payment: number;
coupon?: string;
};
type RenewalOrderResponse = {
order_no: string;
};
type ResetSortRequest = {
sort: SortItem[];
};
type ResetSubscribeLog = {
type: number;
user_id: number;
user_subscribe_id: number;
order_no?: string;
timestamp: number;
};
type ResetSubscribeTrafficLog = {
id: number;
type: number;
user_subscribe_id: number;
order_no?: string;
timestamp: number;
};
type ResetTrafficOrderRequest = {
user_subscribe_id: number;
payment: number;
};
type ResetTrafficOrderResponse = {
order_no: string;
};
type Response = {
/** 状态码 */
code?: number;
/** 消息 */
msg?: string;
/** 数据 */
data?: Record<string, any>;
};
type RevenueStatisticsResponse = {
today: OrdersStatistics;
monthly: OrdersStatistics;
all: OrdersStatistics;
};
type SecurityConfig = {
sni: string;
allow_insecure: boolean;
fingerprint: string;
reality_server_addr: string;
reality_server_port: number;
reality_private_key: string;
reality_public_key: string;
reality_short_id: string;
};
type Server = {
id: number;
name: string;
country: string;
city: string;
ratio: number;
address: string;
sort: number;
protocols: Protocol[];
last_reported_at: number;
status: ServerStatus;
created_at: number;
updated_at: number;
};
type ServerGroup = {
id: number;
name: string;
description: string;
created_at: number;
updated_at: number;
};
type ServerOnlineIP = {
ip: string;
protocol: string;
};
type ServerOnlineUser = {
ip: ServerOnlineIP[];
user_id: number;
subscribe: string;
subscribe_id: number;
traffic: number;
expired_at: number;
};
type ServerRuleGroup = {
id: number;
icon: string;
name: string;
type: string;
tags: string[];
rules: string;
enable: boolean;
default: boolean;
created_at: number;
updated_at: number;
};
type ServerStatus = {
cpu: number;
mem: number;
disk: number;
protocol: string;
online: ServerOnlineUser[];
status: string;
};
type ServerTotalDataResponse = {
online_users: number;
online_servers: number;
offline_servers: number;
today_upload: number;
today_download: number;
monthly_upload: number;
monthly_download: number;
updated_at: number;
server_traffic_ranking_today: ServerTrafficData[];
server_traffic_ranking_yesterday: ServerTrafficData[];
user_traffic_ranking_today: UserTrafficData[];
user_traffic_ranking_yesterday: UserTrafficData[];
};
type ServerTrafficData = {
server_id: number;
name: string;
upload: number;
download: number;
};
type ServerTrafficLog = {
/** Server ID */
server_id: number;
/** Upload traffic in bytes */
upload: number;
/** Download traffic in bytes */
download: number;
/** Total traffic in bytes (Upload + Download) */
total: number;
/** Date in YYYY-MM-DD format */
date: string;
/** Whether to show detailed traffic */
details: boolean;
};
type SetNodeMultiplierRequest = {
periods: TimePeriod[];
};
type Shadowsocks = {
method: string;
port: number;
server_key: string;
};
type SiteConfig = {
host: string;
site_name: string;
site_desc: string;
site_logo: string;
keywords: string;
custom_html: string;
custom_data: string;
};
type SiteCustomDataContacts = {
email: string;
telephone: string;
address: string;
};
type SortItem = {
id: number;
sort: number;
};
type StopBatchSendEmailTaskRequest = {
id: number;
};
type StripePayment = {
method: string;
client_secret: string;
publishable_key: string;
};
type Subscribe = {
id: number;
name: string;
language: string;
description: string;
unit_price: number;
unit_time: string;
discount: SubscribeDiscount[];
replacement: number;
inventory: number;
traffic: number;
speed_limit: number;
device_limit: number;
quota: number;
nodes: number[];
node_tags: string[];
show: boolean;
sell: boolean;
sort: number;
deduction_ratio: number;
allow_deduction: boolean;
reset_cycle: number;
renewal_reset: boolean;
created_at: number;
updated_at: number;
};
type SubscribeApplication = {
id: number;
name: string;
description?: string;
icon?: string;
scheme?: string;
user_agent: string;
is_default: boolean;
template: string;
output_format: string;
download_link?: DownloadLink;
created_at: number;
updated_at: number;
};
type SubscribeConfig = {
single_model: boolean;
subscribe_path: string;
subscribe_domain: string;
pan_domain: boolean;
user_agent_limit: boolean;
user_agent_list: string;
};
type SubscribeDiscount = {
quantity: number;
discount: number;
};
type SubscribeGroup = {
id: number;
name: string;
description: string;
created_at: number;
updated_at: number;
};
type SubscribeItem = {
id?: number;
name?: string;
language?: string;
description?: string;
unit_price?: number;
unit_time?: string;
discount?: SubscribeDiscount[];
replacement?: number;
inventory?: number;
traffic?: number;
speed_limit?: number;
device_limit?: number;
quota?: number;
nodes?: number[];
node_tags?: string[];
show?: boolean;
sell?: boolean;
sort?: number;
deduction_ratio?: number;
allow_deduction?: boolean;
reset_cycle?: number;
renewal_reset?: boolean;
created_at?: number;
updated_at?: number;
sold: number;
};
type SubscribeLog = {
user_id: number;
token: string;
user_agent: string;
client_ip: string;
user_subscribe_id: number;
timestamp: number;
};
type SubscribeSortRequest = {
sort: SortItem[];
};
type SubscribeType = {
subscribe_types: string[];
};
type TelegramConfig = {
telegram_bot_token: string;
telegram_group_url: string;
telegram_notify: boolean;
telegram_web_hook_domain: string;
};
type TestEmailSendRequest = {
email: string;
};
type TestSmsSendRequest = {
area_code: string;
telephone: string;
};
type Ticket = {
id: number;
title: string;
description: string;
user_id: number;
follow?: Follow[];
status: number;
created_at: number;
updated_at: number;
};
type TicketWaitRelpyResponse = {
count: number;
};
type TimePeriod = {
start_time: string;
end_time: string;
multiplier: number;
};
type ToggleNodeStatusRequest = {
id: number;
enable: boolean;
};
type TosConfig = {
tos_content: string;
};
type TrafficLog = {
id: number;
server_id: number;
user_id: number;
subscribe_id: number;
download: number;
upload: number;
timestamp: number;
};
type TrafficLogDetails = {
id: number;
server_id: number;
user_id: number;
subscribe_id: number;
download: number;
upload: number;
timestamp: number;
};
type TransportConfig = {
path: string;
host: string;
service_name: string;
};
type Trojan = {
port: number;
transport: string;
transport_config: TransportConfig;
security: string;
security_config: SecurityConfig;
};
type Tuic = {
port: number;
disable_sni: boolean;
reduce_rtt: boolean;
udp_relay_mode: string;
congestion_controller: string;
security_config: SecurityConfig;
};
type UpdateAdsRequest = {
id: number;
title: string;
type: string;
content: string;
description: string;
target_url: string;
start_time: number;
end_time: number;
status: number;
};
type UpdateAnnouncementEnableRequest = {
id: number;
enable: boolean;
};
type UpdateAnnouncementRequest = {
id: number;
title: string;
content: string;
show: boolean;
pinned: boolean;
popup: boolean;
};
type UpdateAuthMethodConfigRequest = {
id: number;
method: string;
config: Record<string, any>;
enabled: boolean;
};
type UpdateCouponRequest = {
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;
};
type UpdateDocumentRequest = {
id: number;
title: string;
content: string;
tags?: string[];
show: boolean;
};
type UpdateNodeRequest = {
id: number;
name: string;
tags?: string[];
port: number;
address: string;
server_id: number;
protocol: string;
enabled: boolean;
};
type UpdateOrderStatusRequest = {
id: number;
status: number;
payment_id?: number;
trade_no?: string;
};
type UpdatePaymentMethodRequest = {
id: number;
name: string;
platform: string;
description: string;
icon?: string;
domain?: string;
config: Record<string, any>;
fee_mode: number;
fee_percent?: number;
fee_amount?: number;
enable: boolean;
};
type UpdateServerRequest = {
id: number;
name: string;
country?: string;
city?: string;
ratio: number;
address: string;
sort?: number;
protocols: Protocol[];
};
type UpdateSubscribeApplicationRequest = {
id: number;
name: string;
description?: string;
icon?: string;
scheme?: string;
user_agent: string;
is_default: boolean;
template: string;
output_format: string;
download_link?: DownloadLink;
};
type UpdateSubscribeGroupRequest = {
id: number;
name: string;
description: string;
};
type UpdateSubscribeRequest = {
id: number;
name: string;
language: string;
description: string;
unit_price: number;
unit_time: string;
discount: SubscribeDiscount[];
replacement: number;
inventory: number;
traffic: number;
speed_limit: number;
device_limit: number;
quota: number;
nodes: number[];
node_tags: string[];
show: boolean;
sell: boolean;
sort: number;
deduction_ratio: number;
allow_deduction: boolean;
reset_cycle: number;
renewal_reset: boolean;
};
type UpdateTicketStatusRequest = {
id: number;
status: number;
};
type UpdateUserAuthMethodRequest = {
user_id: number;
auth_type: string;
auth_identifier: string;
};
type UpdateUserBasiceInfoRequest = {
user_id: number;
password: string;
avatar: string;
balance: number;
commission: number;
referral_percentage: number;
only_first_purchase: boolean;
gift_amount: number;
telegram: number;
refer_code: string;
referer_id: number;
enable: boolean;
is_admin: boolean;
};
type UpdateUserNotifySettingRequest = {
user_id: number;
enable_balance_notify: boolean;
enable_login_notify: boolean;
enable_subscribe_notify: boolean;
enable_trade_notify: boolean;
};
type UpdateUserSubscribeRequest = {
user_subscribe_id: number;
subscribe_id: number;
traffic: number;
expired_at: number;
upload: number;
download: number;
};
type User = {
id: number;
avatar: string;
balance: number;
commission: number;
referral_percentage: number;
only_first_purchase: boolean;
gift_amount: number;
telegram: number;
refer_code: string;
referer_id: number;
enable: boolean;
is_admin?: boolean;
enable_balance_notify: boolean;
enable_login_notify: boolean;
enable_subscribe_notify: boolean;
enable_trade_notify: boolean;
auth_methods: UserAuthMethod[];
user_devices: UserDevice[];
created_at: number;
updated_at: number;
deleted_at?: number;
is_del?: boolean;
};
type UserAffiliate = {
avatar: string;
identifier: string;
registered_at: number;
enable: boolean;
};
type UserAuthMethod = {
auth_type: string;
auth_identifier: string;
verified: boolean;
};
type UserDevice = {
id: number;
ip: string;
identifier: string;
user_agent: string;
online: boolean;
enabled: boolean;
created_at: number;
updated_at: number;
};
type UserLoginLog = {
id: number;
user_id: number;
login_ip: string;
user_agent: string;
success: boolean;
timestamp: number;
};
type UserStatistics = {
date?: string;
register: number;
new_order_users: number;
renewal_order_users: number;
list?: UserStatistics[];
};
type UserStatisticsResponse = {
today: UserStatistics;
monthly: UserStatistics;
all: UserStatistics;
};
type UserSubscribe = {
id: number;
user_id: number;
order_id: number;
subscribe_id: number;
subscribe: Subscribe;
start_time: number;
expire_time: number;
finished_at: number;
reset_time: number;
traffic: number;
download: number;
upload: number;
token: string;
status: number;
created_at: number;
updated_at: number;
};
type UserSubscribeDetail = {
id: number;
user_id: number;
user: User;
order_id: number;
subscribe_id: number;
subscribe: Subscribe;
start_time: number;
expire_time: number;
reset_time: number;
traffic: number;
download: number;
upload: number;
token: string;
status: number;
created_at: number;
updated_at: number;
};
type UserSubscribeLog = {
id: number;
user_id: number;
user_subscribe_id: number;
token: string;
ip: string;
user_agent: string;
timestamp: number;
};
type UserSubscribeTrafficLog = {
/** Subscribe ID */
subscribe_id: number;
/** User ID */
user_id: number;
/** Upload traffic in bytes */
upload: number;
/** Download traffic in bytes */
download: number;
/** Total traffic in bytes (Upload + Download) */
total: number;
/** Date in YYYY-MM-DD format */
date: string;
/** Whether to show detailed traffic */
details: boolean;
};
type UserTrafficData = {
sid: number;
upload: number;
download: number;
};
type VerifyCodeConfig = {
verify_code_expire_time: number;
verify_code_limit: number;
verify_code_interval: number;
};
type VerifyConfig = {
turnstile_site_key: string;
turnstile_secret: string;
enable_login_verify: boolean;
enable_register_verify: boolean;
enable_reset_password_verify: boolean;
};
type VersionResponse = {
version: string;
};
type Vless = {
port: number;
flow: string;
transport: string;
transport_config: TransportConfig;
security: string;
security_config: SecurityConfig;
};
type Vmess = {
port: number;
transport: string;
transport_config: TransportConfig;
security: string;
security_config: SecurityConfig;
};
}