♻️ refactor: Refactor server management API endpoints and typings

This commit is contained in:
web
2025-08-26 09:37:15 -07:00
parent 217ddce60c
commit 4f7cc807af
141 changed files with 5665 additions and 10338 deletions
+207
View File
@@ -2,6 +2,87 @@
/* eslint-disable */
import request from '@/utils/request';
/** Filter balance log GET /v1/admin/log/balance/list */
export async function filterBalanceLog(
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
params: API.FilterBalanceLogParams,
options?: { [key: string]: any },
) {
return request<API.Response & { data?: API.FilterBalanceLogResponse }>(
'/v1/admin/log/balance/list',
{
method: 'GET',
params: {
...params,
},
...(options || {}),
},
);
}
/** Filter commission log GET /v1/admin/log/commission/list */
export async function filterCommissionLog(
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
params: API.FilterCommissionLogParams,
options?: { [key: string]: any },
) {
return request<API.Response & { data?: API.FilterCommissionLogResponse }>(
'/v1/admin/log/commission/list',
{
method: 'GET',
params: {
...params,
},
...(options || {}),
},
);
}
/** Filter email log GET /v1/admin/log/email/list */
export async function filterEmailLog(
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
params: API.FilterEmailLogParams,
options?: { [key: string]: any },
) {
return request<API.Response & { data?: API.FilterEmailLogResponse }>('/v1/admin/log/email/list', {
method: 'GET',
params: {
...params,
},
...(options || {}),
});
}
/** Filter gift log GET /v1/admin/log/gift/list */
export async function filterGiftLog(
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
params: API.FilterGiftLogParams,
options?: { [key: string]: any },
) {
return request<API.Response & { data?: API.FilterGiftLogResponse }>('/v1/admin/log/gift/list', {
method: 'GET',
params: {
...params,
},
...(options || {}),
});
}
/** Filter login log GET /v1/admin/log/login/list */
export async function filterLoginLog(
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
params: API.FilterLoginLogParams,
options?: { [key: string]: any },
) {
return request<API.Response & { data?: API.FilterLoginLogResponse }>('/v1/admin/log/login/list', {
method: 'GET',
params: {
...params,
},
...(options || {}),
});
}
/** Get message log list GET /v1/admin/log/message/list */
export async function getMessageLogList(
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
@@ -19,3 +100,129 @@ export async function getMessageLogList(
},
);
}
/** Filter mobile log GET /v1/admin/log/mobile/list */
export async function filterMobileLog(
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
params: API.FilterMobileLogParams,
options?: { [key: string]: any },
) {
return request<API.Response & { data?: API.FilterMobileLogResponse }>(
'/v1/admin/log/mobile/list',
{
method: 'GET',
params: {
...params,
},
...(options || {}),
},
);
}
/** Filter register log GET /v1/admin/log/register/list */
export async function filterRegisterLog(
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
params: API.FilterRegisterLogParams,
options?: { [key: string]: any },
) {
return request<API.Response & { data?: API.FilterRegisterLogResponse }>(
'/v1/admin/log/register/list',
{
method: 'GET',
params: {
...params,
},
...(options || {}),
},
);
}
/** Filter server traffic log GET /v1/admin/log/server/traffic/list */
export async function filterServerTrafficLog(
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
params: API.FilterServerTrafficLogParams,
options?: { [key: string]: any },
) {
return request<API.Response & { data?: API.FilterServerTrafficLogResponse }>(
'/v1/admin/log/server/traffic/list',
{
method: 'GET',
params: {
...params,
},
...(options || {}),
},
);
}
/** Filter subscribe log GET /v1/admin/log/subscribe/list */
export async function filterSubscribeLog(
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
params: API.FilterSubscribeLogParams,
options?: { [key: string]: any },
) {
return request<API.Response & { data?: API.FilterSubscribeLogResponse }>(
'/v1/admin/log/subscribe/list',
{
method: 'GET',
params: {
...params,
},
...(options || {}),
},
);
}
/** Filter reset subscribe log GET /v1/admin/log/subscribe/reset/list */
export async function filterResetSubscribeLog(
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
params: API.FilterResetSubscribeLogParams,
options?: { [key: string]: any },
) {
return request<API.Response & { data?: API.FilterResetSubscribeLogResponse }>(
'/v1/admin/log/subscribe/reset/list',
{
method: 'GET',
params: {
...params,
},
...(options || {}),
},
);
}
/** Filter user subscribe traffic log GET /v1/admin/log/subscribe/traffic/list */
export async function filterUserSubscribeTrafficLog(
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
params: API.FilterUserSubscribeTrafficLogParams,
options?: { [key: string]: any },
) {
return request<API.Response & { data?: API.FilterSubscribeTrafficResponse }>(
'/v1/admin/log/subscribe/traffic/list',
{
method: 'GET',
params: {
...params,
},
...(options || {}),
},
);
}
/** Filter traffic log details GET /v1/admin/log/traffic/details */
export async function filterTrafficLogDetails(
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
params: API.FilterTrafficLogDetailsParams,
options?: { [key: string]: any },
) {
return request<API.Response & { data?: API.FilterTrafficLogDetailsResponse }>(
'/v1/admin/log/traffic/details',
{
method: 'GET',
params: {
...params,
},
...(options || {}),
},
);
}
+100 -162
View File
@@ -2,10 +2,13 @@
/* eslint-disable */
import request from '@/utils/request';
/** Update node PUT /v1/admin/server/ */
export async function updateNode(body: API.UpdateNodeRequest, options?: { [key: string]: any }) {
return request<API.Response & { data?: any }>('/v1/admin/server/', {
method: 'PUT',
/** Create Server POST /v1/admin/server/create */
export async function createServer(
body: API.CreateServerRequest,
options?: { [key: string]: any },
) {
return request<API.Response & { data?: any }>('/v1/admin/server/create', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
@@ -14,9 +17,61 @@ export async function updateNode(body: API.UpdateNodeRequest, options?: { [key:
});
}
/** Create node POST /v1/admin/server/ */
/** Delete Server POST /v1/admin/server/delete */
export async function deleteServer(
body: API.DeleteServerRequest,
options?: { [key: string]: any },
) {
return request<API.Response & { data?: any }>('/v1/admin/server/delete', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
data: body,
...(options || {}),
});
}
/** Filter Server List GET /v1/admin/server/list */
export async function filterServerList(
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
params: API.FilterServerListParams,
options?: { [key: string]: any },
) {
return request<API.Response & { data?: API.FilterServerListResponse }>('/v1/admin/server/list', {
method: 'GET',
params: {
...params,
},
...(options || {}),
});
}
/** Check if there is any server or node to migrate GET /v1/admin/server/migrate/has */
export async function hasMigrateSeverNode(options?: { [key: string]: any }) {
return request<API.Response & { data?: API.HasMigrateSeverNodeResponse }>(
'/v1/admin/server/migrate/has',
{
method: 'GET',
...(options || {}),
},
);
}
/** Migrate server and node data to new database POST /v1/admin/server/migrate/run */
export async function migrateServerNode(options?: { [key: string]: any }) {
return request<API.Response & { data?: API.MigrateServerNodeResponse }>(
'/v1/admin/server/migrate/run',
{
method: 'POST',
...(options || {}),
},
);
}
/** Create Node POST /v1/admin/server/node/create */
export async function createNode(body: API.CreateNodeRequest, options?: { [key: string]: any }) {
return request<API.Response & { data?: any }>('/v1/admin/server/', {
return request<API.Response & { data?: any }>('/v1/admin/server/node/create', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
@@ -26,10 +81,10 @@ export async function createNode(body: API.CreateNodeRequest, options?: { [key:
});
}
/** Delete node DELETE /v1/admin/server/ */
/** Delete Node POST /v1/admin/server/node/delete */
export async function deleteNode(body: API.DeleteNodeRequest, options?: { [key: string]: any }) {
return request<API.Response & { data?: any }>('/v1/admin/server/', {
method: 'DELETE',
return request<API.Response & { data?: any }>('/v1/admin/server/node/delete', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
@@ -38,57 +93,30 @@ export async function deleteNode(body: API.DeleteNodeRequest, options?: { [key:
});
}
/** Batch delete node DELETE /v1/admin/server/batch */
export async function batchDeleteNode(
body: API.BatchDeleteNodeRequest,
options?: { [key: string]: any },
) {
return request<API.Response & { data?: any }>('/v1/admin/server/batch', {
method: 'DELETE',
headers: {
'Content-Type': 'application/json',
},
data: body,
...(options || {}),
});
}
/** Get node detail GET /v1/admin/server/detail */
export async function getNodeDetail(
/** Filter Node List GET /v1/admin/server/node/list */
export async function filterNodeList(
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
params: API.GetNodeDetailParams,
params: API.FilterNodeListParams,
options?: { [key: string]: any },
) {
return request<API.Response & { data?: API.Server }>('/v1/admin/server/detail', {
method: 'GET',
params: {
...params,
return request<API.Response & { data?: API.FilterNodeListResponse }>(
'/v1/admin/server/node/list',
{
method: 'GET',
params: {
...params,
},
...(options || {}),
},
...(options || {}),
});
);
}
/** Update node group PUT /v1/admin/server/group */
export async function updateNodeGroup(
body: API.UpdateNodeGroupRequest,
/** Toggle Node Status POST /v1/admin/server/node/status/toggle */
export async function toggleNodeStatus(
body: API.ToggleNodeStatusRequest,
options?: { [key: string]: any },
) {
return request<API.Response & { data?: any }>('/v1/admin/server/group', {
method: 'PUT',
headers: {
'Content-Type': 'application/json',
},
data: body,
...(options || {}),
});
}
/** Create node group POST /v1/admin/server/group */
export async function createNodeGroup(
body: API.CreateNodeGroupRequest,
options?: { [key: string]: any },
) {
return request<API.Response & { data?: any }>('/v1/admin/server/group', {
return request<API.Response & { data?: any }>('/v1/admin/server/node/status/toggle', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
@@ -98,13 +126,10 @@ export async function createNodeGroup(
});
}
/** Delete node group DELETE /v1/admin/server/group */
export async function deleteNodeGroup(
body: API.DeleteNodeGroupRequest,
options?: { [key: string]: any },
) {
return request<API.Response & { data?: any }>('/v1/admin/server/group', {
method: 'DELETE',
/** Update Node POST /v1/admin/server/node/update */
export async function updateNode(body: API.UpdateNodeRequest, options?: { [key: string]: any }) {
return request<API.Response & { data?: any }>('/v1/admin/server/node/update', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
@@ -113,68 +138,30 @@ export async function deleteNodeGroup(
});
}
/** Batch delete node group DELETE /v1/admin/server/group/batch */
export async function batchDeleteNodeGroup(
body: API.BatchDeleteNodeGroupRequest,
options?: { [key: string]: any },
) {
return request<API.Response & { data?: any }>('/v1/admin/server/group/batch', {
method: 'DELETE',
headers: {
'Content-Type': 'application/json',
},
data: body,
...(options || {}),
});
}
/** Get node group list GET /v1/admin/server/group/list */
export async function getNodeGroupList(options?: { [key: string]: any }) {
return request<API.Response & { data?: API.GetNodeGroupListResponse }>(
'/v1/admin/server/group/list',
{
method: 'GET',
...(options || {}),
},
);
}
/** Get node list GET /v1/admin/server/list */
export async function getNodeList(
/** Get Server Protocols GET /v1/admin/server/protocols */
export async function getServerProtocols(
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
params: API.GetNodeListParams,
params: API.GetServerProtocolsParams,
options?: { [key: string]: any },
) {
return request<API.Response & { data?: API.GetNodeServerListResponse }>('/v1/admin/server/list', {
method: 'GET',
params: {
...params,
return request<API.Response & { data?: API.GetServerProtocolsResponse }>(
'/v1/admin/server/protocols',
{
method: 'GET',
params: {
...params,
},
...(options || {}),
},
...(options || {}),
});
);
}
/** Update rule group PUT /v1/admin/server/rule_group */
export async function updateRuleGroup(
body: API.UpdateRuleGroupRequest,
/** Update Server POST /v1/admin/server/update */
export async function updateServer(
body: API.UpdateServerRequest,
options?: { [key: string]: any },
) {
return request<API.Response & { data?: any }>('/v1/admin/server/rule_group', {
method: 'PUT',
headers: {
'Content-Type': 'application/json',
},
data: body,
...(options || {}),
});
}
/** Create rule group POST /v1/admin/server/rule_group */
export async function createRuleGroup(
body: API.CreateRuleGroupRequest,
options?: { [key: string]: any },
) {
return request<API.Response & { data?: any }>('/v1/admin/server/rule_group', {
return request<API.Response & { data?: any }>('/v1/admin/server/update', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
@@ -183,52 +170,3 @@ export async function createRuleGroup(
...(options || {}),
});
}
/** Delete rule group DELETE /v1/admin/server/rule_group */
export async function deleteRuleGroup(
body: API.DeleteRuleGroupRequest,
options?: { [key: string]: any },
) {
return request<API.Response & { data?: any }>('/v1/admin/server/rule_group', {
method: 'DELETE',
headers: {
'Content-Type': 'application/json',
},
data: body,
...(options || {}),
});
}
/** Get rule group list GET /v1/admin/server/rule_group_list */
export async function getRuleGroupList(options?: { [key: string]: any }) {
return request<API.Response & { data?: API.GetRuleGroupResponse }>(
'/v1/admin/server/rule_group_list',
{
method: 'GET',
...(options || {}),
},
);
}
/** Node sort POST /v1/admin/server/sort */
export async function nodeSort(body: API.NodeSortRequest, options?: { [key: string]: any }) {
return request<API.Response & { data?: any }>('/v1/admin/server/sort', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
data: body,
...(options || {}),
});
}
/** Get node tag list GET /v1/admin/server/tag/list */
export async function getNodeTagList(options?: { [key: string]: any }) {
return request<API.Response & { data?: API.GetNodeTagListResponse }>(
'/v1/admin/server/tag/list',
{
method: 'GET',
...(options || {}),
},
);
}
+508 -151
View File
@@ -118,6 +118,15 @@ declare namespace API {
enabled: boolean;
};
type BalanceLog = {
type: number;
user_id: number;
amount: number;
order_id?: number;
balance: number;
timestamp: number;
};
type BatchDeleteCouponRequest = {
ids: number[];
};
@@ -126,14 +135,6 @@ declare namespace API {
ids: number[];
};
type BatchDeleteNodeGroupRequest = {
ids: number[];
};
type BatchDeleteNodeRequest = {
ids: number[];
};
type BatchDeleteSubscribeGroupRequest = {
ids: number[];
};
@@ -181,6 +182,14 @@ declare namespace API {
orderNo: string;
};
type CommissionLog = {
type: number;
user_id: number;
amount: number;
order_no: string;
created_at: number;
};
type Coupon = {
id: number;
name: string;
@@ -247,26 +256,14 @@ declare namespace API {
show: boolean;
};
type CreateNodeGroupRequest = {
name: string;
description: string;
};
type CreateNodeRequest = {
name: string;
tags: string[];
country: string;
city: string;
server_addr: string;
relay_mode: string;
relay_node: NodeRelay[];
speed_limit: number;
traffic_ratio: number;
group_id: number;
tags?: string[];
port: number;
address: string;
server_id: number;
protocol: string;
config: Record<string, any>;
enable: boolean;
sort: number;
enabled: boolean;
};
type CreateOrderRequest = {
@@ -299,14 +296,14 @@ declare namespace API {
enable: boolean;
};
type CreateRuleGroupRequest = {
type CreateServerRequest = {
name: string;
icon: string;
type: string;
tags: string[];
rules: string;
default: boolean;
enable: boolean;
country?: string;
city?: string;
ratio: number;
address: string;
sort?: number;
protocols: Protocol[];
};
type CreateSubscribeApplicationRequest = {
@@ -339,8 +336,8 @@ declare namespace API {
device_limit: number;
quota: number;
group_id: number;
server_group: number[];
server: number[];
nodes: number[];
node_tags: string[];
show: boolean;
sell: boolean;
deduction_ratio: number;
@@ -406,10 +403,6 @@ declare namespace API {
id: number;
};
type DeleteNodeGroupRequest = {
id: number;
};
type DeleteNodeRequest = {
id: number;
};
@@ -418,7 +411,7 @@ declare namespace API {
id: number;
};
type DeleteRuleGroupRequest = {
type DeleteServerRequest = {
id: number;
};
@@ -490,6 +483,287 @@ declare namespace API {
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;
@@ -668,48 +942,10 @@ declare namespace API {
list: MessageLog[];
};
type GetNodeDetailParams = {
id: number;
};
type GetNodeDetailRequest = {
id: number;
};
type GetNodeGroupListResponse = {
total: number;
list: ServerGroup[];
};
type GetNodeListParams = {
page: number;
size: number;
tags?: string;
group_id?: number;
search?: string;
};
type GetNodeMultiplierResponse = {
periods: TimePeriod[];
};
type GetNodeServerListRequest = {
page: number;
size: number;
tags?: string;
group_id?: number;
search?: string;
};
type GetNodeServerListResponse = {
total: number;
list: Server[];
};
type GetNodeTagListResponse = {
tags: string[];
};
type GetOrderListParams = {
page: number;
size: number;
@@ -764,9 +1000,16 @@ declare namespace API {
count: number;
};
type GetRuleGroupResponse = {
total: number;
list: ServerRuleGroup[];
type GetServerProtocolsParams = {
id: number;
};
type GetServerProtocolsRequest = {
id: number;
};
type GetServerProtocolsResponse = {
protocols: Protocol[];
};
type GetSubscribeApplicationListParams = {
@@ -1000,6 +1243,21 @@ declare namespace API {
total: number;
};
type GiftLog = {
type: number;
user_id: number;
order_no: string;
subscribe_id: number;
amount: number;
balance: number;
remark?: string;
created_at: number;
};
type HasMigrateSeverNodeResponse = {
has_migrate: boolean;
};
type Hysteria2 = {
port: number;
hop_ports: string;
@@ -1018,6 +1276,15 @@ declare namespace API {
id: number;
};
type LoginLog = {
user_id: number;
method: string;
login_ip: string;
user_agent: string;
success: boolean;
login_time: number;
};
type LogResponse = {
list: Record<string, any>;
};
@@ -1033,12 +1300,31 @@ declare namespace API {
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;
created_at: number;
updated_at: number;
};
type NodeConfig = {
node_secret: string;
node_pull_interval: number;
@@ -1051,23 +1337,6 @@ declare namespace API {
prefix: string;
};
type NodeSortRequest = {
sort: SortItem[];
};
type NodeStatus = {
online: Record<string, any>;
cpu: number;
mem: number;
disk: number;
updated_at: number;
};
type OnlineUser = {
uid: number;
ip: string;
};
type Order = {
id: number;
user_id: number;
@@ -1203,6 +1472,34 @@ declare namespace API {
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;
@@ -1305,6 +1602,15 @@ declare namespace API {
ip_register_limit_duration: number;
};
type RegisterLog = {
user_id: number;
auth_method: string;
identifier: string;
register_ip: string;
user_agent: string;
register_time: number;
};
type RenewalOrderRequest = {
user_subscribe_id: number;
quantity: number;
@@ -1316,6 +1622,14 @@ declare namespace API {
order_no: string;
};
type ResetSubscribeLog = {
type: number;
user_id: number;
user_subscribe_id: number;
order_no?: string;
reset_at: number;
};
type ResetSubscribeTrafficLog = {
id: number;
type: number;
@@ -1361,23 +1675,17 @@ declare namespace API {
type Server = {
id: number;
tags: string[];
name: string;
country: string;
city: string;
name: string;
server_addr: string;
relay_mode: string;
relay_node: NodeRelay[];
speed_limit: number;
traffic_ratio: number;
group_id: number;
protocol: string;
config: Record<string, any>;
enable: boolean;
ratio: number;
address: string;
sort: number;
protocols: Protocol[];
last_reported_at: number;
status: ServerStatus;
created_at: number;
updated_at: number;
status: NodeStatus;
sort: number;
};
type ServerGroup = {
@@ -1388,6 +1696,15 @@ declare namespace API {
updated_at: number;
};
type ServerOnlineUser = {
ip: string[];
user_id: number;
subscribe: string;
subscribe_id: number;
traffic: number;
expired_at: number;
};
type ServerRuleGroup = {
id: number;
icon: string;
@@ -1401,6 +1718,13 @@ declare namespace API {
updated_at: number;
};
type ServerStatus = {
online: ServerOnlineUser[];
cpu: number;
mem: number;
disk: number;
};
type ServerTotalDataResponse = {
online_user_ips: number;
online_servers: number;
@@ -1423,6 +1747,21 @@ declare namespace API {
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[];
};
@@ -1478,8 +1817,8 @@ declare namespace API {
device_limit: number;
quota: number;
group_id: number;
server_group: number[];
server: number[];
nodes: number[];
node_tags: string[];
show: boolean;
sell: boolean;
sort: number;
@@ -1542,8 +1881,8 @@ declare namespace API {
device_limit?: number;
quota?: number;
group_id?: number;
server_group?: number[];
server?: number[];
nodes?: number[];
node_tags?: string[];
show?: boolean;
sell?: boolean;
sort?: number;
@@ -1556,6 +1895,15 @@ declare namespace API {
sold: number;
};
type SubscribeLog = {
user_id: number;
token: string;
user_agent: string;
client_ip: string;
user_subscribe_id: number;
subscribed_at: number;
};
type SubscribeSortRequest = {
sort: SortItem[];
};
@@ -1601,6 +1949,11 @@ declare namespace API {
multiplier: number;
};
type ToggleNodeStatusRequest = {
id: number;
enable: boolean;
};
type TosConfig = {
tos_content: string;
};
@@ -1615,6 +1968,16 @@ declare namespace API {
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;
@@ -1694,28 +2057,15 @@ declare namespace API {
show: boolean;
};
type UpdateNodeGroupRequest = {
id: number;
name: string;
description: string;
};
type UpdateNodeRequest = {
id: number;
tags: string[];
country: string;
city: string;
name: string;
server_addr: string;
relay_mode: string;
relay_node: NodeRelay[];
speed_limit: number;
traffic_ratio: number;
group_id: number;
tags?: string[];
port: number;
address: string;
server_id: number;
protocol: string;
config: Record<string, any>;
enable: boolean;
sort: number;
enabled: boolean;
};
type UpdateOrderStatusRequest = {
@@ -1739,15 +2089,15 @@ declare namespace API {
enable: boolean;
};
type UpdateRuleGroupRequest = {
type UpdateServerRequest = {
id: number;
icon: string;
type: string;
name: string;
tags: string[];
rules: string;
default: boolean;
enable: boolean;
country?: string;
city?: string;
ratio: number;
address: string;
sort?: number;
protocols: Protocol[];
};
type UpdateSubscribeApplicationRequest = {
@@ -1783,8 +2133,8 @@ declare namespace API {
device_limit: number;
quota: number;
group_id: number;
server_group: number[];
server: number[];
nodes: number[];
node_tags: string[];
show: boolean;
sell: boolean;
sort: number;
@@ -1872,16 +2222,6 @@ declare namespace API {
verified: boolean;
};
type UserBalanceLog = {
id: number;
user_id: number;
amount: number;
type: number;
order_id: number;
balance: number;
created_at: number;
};
type UserDevice = {
id: number;
ip: string;
@@ -1964,6 +2304,23 @@ declare namespace API {
created_at: 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;