adspower-browser 2.1.2 → 2.1.4-beta
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.MD +7 -5
- package/cli/index.js +131 -19
- package/cwd/lib/main.min.js +2 -2
- package/package.json +1 -1
package/README.MD
CHANGED
|
@@ -142,6 +142,8 @@ ads close-browser <profile_id> # Or JSON: profile_id? | profil
|
|
|
142
142
|
ads create-browser '{"group_id":"0","user_proxy_config":{"proxy_soft":"no_proxy"},...}' # group_id + account field required; proxy optional (defaults to no_proxy; proxyid takes priority over user_proxy_config when both given)
|
|
143
143
|
ads update-browser '{"profile_id":"...",...}' # profile_id required
|
|
144
144
|
ads delete-browser '{"profile_id":["..."]}' # profile_id required
|
|
145
|
+
ads get-recycle-bin-list '{}' # page?, limit? (1-100). Omit either to use the Local API backend default. Last 30 days only
|
|
146
|
+
ads restore-recycle-bin '{"profile_id":["id1","id2"],"group_id":"123"}' # profile_id[] or profile_no[], group_id required
|
|
145
147
|
ads get-browser-list '{}' # CLI defaults to page=1,limit=200. Or group_id?, limit?, page?, profile_id[]?, profile_no[]?, sort_type?, sort_order?, tag_ids?, tags_filter?, name?, name_filter?
|
|
146
148
|
ads get-opened-browser # No params
|
|
147
149
|
```
|
|
@@ -171,12 +173,12 @@ ads get-group-list '{}' # group_name?, page_size?, page?
|
|
|
171
173
|
### Member
|
|
172
174
|
|
|
173
175
|
```bash
|
|
174
|
-
ads create-member '{"user_group_id":"...","email":"alice@example.com","password":"password1","identity":4}' # identity: 2 admin, 3 manager, 4 staff
|
|
175
|
-
ads update-member '{"user_id":"...","name":"Alice"}' # omit
|
|
176
|
+
ads create-member '{"user_group_id":"...","email":"alice@example.com","password":"password1","identity":4}' # identity: 2 admin, 3 manager, 4 staff; manager optional; member only for identity 3
|
|
177
|
+
ads update-member '{"user_id":"...","name":"Alice"}' # omit to keep; empty name/manager/remark/member/authorized_group can clear; do not empty email or identity
|
|
176
178
|
ads reset-member-password '{"user_id":"..."}' # unbind_phone?: 0|1; new_password is in the response
|
|
177
|
-
ads delete-member '{"user_id":"..."}'
|
|
178
|
-
ads get-member-list '{}' # user_group_id?, user_id[]?, email[]?, page?, limit? (default
|
|
179
|
-
ads get-member-group-list '{}' # page?, limit? (default
|
|
179
|
+
ads delete-member '{"user_id":"..."}' # permanent, not recoverable
|
|
180
|
+
ads get-member-list '{}' # user_group_id?, user_id[]?, email[]?, page?, limit? (default 50, max 200)
|
|
181
|
+
ads get-member-group-list '{}' # page?, limit? (default 50, max 200)
|
|
180
182
|
```
|
|
181
183
|
|
|
182
184
|
### Application (categories)
|
package/cli/index.js
CHANGED
|
@@ -610,6 +610,23 @@ var LOCAL_API_CONTRACTS = {
|
|
|
610
610
|
profile_id: { apiName: "profile_id", location: "body" }
|
|
611
611
|
}
|
|
612
612
|
},
|
|
613
|
+
"get-recycle-bin-list": {
|
|
614
|
+
method: "POST",
|
|
615
|
+
path: "/api/v2/browser-profile/recycle-bin/list",
|
|
616
|
+
params: {
|
|
617
|
+
page: { apiName: "page", location: "body" },
|
|
618
|
+
limit: { apiName: "limit", location: "body" }
|
|
619
|
+
}
|
|
620
|
+
},
|
|
621
|
+
"restore-recycle-bin": {
|
|
622
|
+
method: "POST",
|
|
623
|
+
path: "/api/v2/browser-profile/recycle-bin/restore",
|
|
624
|
+
params: {
|
|
625
|
+
profile_id: { apiName: "profile_id", location: "body" },
|
|
626
|
+
profile_no: { apiName: "profile_no", location: "body" },
|
|
627
|
+
group_id: { apiName: "group_id", location: "body" }
|
|
628
|
+
}
|
|
629
|
+
},
|
|
613
630
|
"get-browser-list": {
|
|
614
631
|
method: "POST",
|
|
615
632
|
path: "/api/v2/browser-profile/list",
|
|
@@ -816,6 +833,14 @@ var LOCAL_API_CONTRACTS = {
|
|
|
816
833
|
ipchecker: { apiName: "ipchecker", location: "body" }
|
|
817
834
|
}
|
|
818
835
|
},
|
|
836
|
+
"get-dynamic-proxy-traffic": {
|
|
837
|
+
method: "POST",
|
|
838
|
+
path: "/api/v2/proxy/dynamic-proxy-traffic",
|
|
839
|
+
params: {
|
|
840
|
+
start_date: { apiName: "start_date", location: "body" },
|
|
841
|
+
end_date: { apiName: "end_date", location: "body" }
|
|
842
|
+
}
|
|
843
|
+
},
|
|
819
844
|
"get-proxy-list": {
|
|
820
845
|
method: "POST",
|
|
821
846
|
path: "/api/v2/proxy-list/list",
|
|
@@ -948,6 +973,8 @@ var API_ENDPOINTS = {
|
|
|
948
973
|
GET_BROWSER_LIST: LOCAL_API_CONTRACTS["get-browser-list"].path,
|
|
949
974
|
UPDATE_BROWSER: LOCAL_API_CONTRACTS["update-browser"].path,
|
|
950
975
|
DELETE_BROWSER: LOCAL_API_CONTRACTS["delete-browser"].path,
|
|
976
|
+
GET_RECYCLE_BIN_LIST: LOCAL_API_CONTRACTS["get-recycle-bin-list"].path,
|
|
977
|
+
RESTORE_RECYCLE_BIN: LOCAL_API_CONTRACTS["restore-recycle-bin"].path,
|
|
951
978
|
GET_PROFILE_COOKIES: LOCAL_API_CONTRACTS["get-profile-cookies"].path,
|
|
952
979
|
GET_PROFILE_UA: LOCAL_API_CONTRACTS["get-profile-ua"].path,
|
|
953
980
|
CLOSE_ALL_PROFILES: LOCAL_API_CONTRACTS["close-all-profiles"].path,
|
|
@@ -957,6 +984,7 @@ var API_ENDPOINTS = {
|
|
|
957
984
|
GET_BROWSER_ACTIVE: LOCAL_API_CONTRACTS["get-browser-active"].path,
|
|
958
985
|
CREATE_PROXY: LOCAL_API_CONTRACTS["create-proxy"].path,
|
|
959
986
|
UPDATE_PROXY: LOCAL_API_CONTRACTS["update-proxy"].path,
|
|
987
|
+
GET_DYNAMIC_PROXY_TRAFFIC: LOCAL_API_CONTRACTS["get-dynamic-proxy-traffic"].path,
|
|
960
988
|
GET_PROXY_LIST: LOCAL_API_CONTRACTS["get-proxy-list"].path,
|
|
961
989
|
DELETE_PROXY: LOCAL_API_CONTRACTS["delete-proxy"].path,
|
|
962
990
|
GET_OPENED_BROWSER: LOCAL_API_CONTRACTS["get-opened-browser"].path,
|
|
@@ -1032,6 +1060,18 @@ var TOOL_INTENT_BY_NAME = {
|
|
|
1032
1060
|
triggersEn: "remove profile, delete account, trash browser",
|
|
1033
1061
|
triggersZh: "\u5220\u9664\u73AF\u5883,\u79FB\u9664profile,\u5220\u6389\u6D4F\u89C8\u5668\u8D26\u53F7"
|
|
1034
1062
|
},
|
|
1063
|
+
"get-recycle-bin-list": {
|
|
1064
|
+
intentEn: "List browser profiles in the recycle bin from the last 30 days.",
|
|
1065
|
+
intentZh: "\u67E5\u8BE2\u8FD1 30 \u5929\u56DE\u6536\u7AD9\u4E2D\u7684\u6D4F\u89C8\u5668\u73AF\u5883\u3002",
|
|
1066
|
+
triggersEn: "recycle bin, deleted profiles, trash list, recently deleted",
|
|
1067
|
+
triggersZh: "\u56DE\u6536\u7AD9,\u5DF2\u5220\u9664\u73AF\u5883,\u6700\u8FD1\u5220\u9664,\u5783\u573E\u6876\u5217\u8868"
|
|
1068
|
+
},
|
|
1069
|
+
"restore-recycle-bin": {
|
|
1070
|
+
intentEn: "Restore one or more deleted browser profiles from the recycle bin into a target group.",
|
|
1071
|
+
intentZh: "\u628A\u56DE\u6536\u7AD9\u91CC\u7684\u4E00\u4E2A\u6216\u591A\u4E2A\u73AF\u5883\u6062\u590D\u5230\u6307\u5B9A\u5206\u7EC4\u3002",
|
|
1072
|
+
triggersEn: "restore profile, recover deleted browser, undelete environment",
|
|
1073
|
+
triggersZh: "\u6062\u590D\u73AF\u5883,\u8FD8\u539F\u56DE\u6536\u7AD9,\u627E\u56DE\u5DF2\u5220\u9664\u73AF\u5883"
|
|
1074
|
+
},
|
|
1035
1075
|
"get-browser-list": {
|
|
1036
1076
|
intentEn: "List or search browser profiles (pagination, filters).",
|
|
1037
1077
|
intentZh: "\u5206\u9875/\u6761\u4EF6\u67E5\u8BE2\u6D4F\u89C8\u5668 profile \u5217\u8868\u3002",
|
|
@@ -1135,10 +1175,10 @@ var TOOL_INTENT_BY_NAME = {
|
|
|
1135
1175
|
triggersZh: "\u91CD\u7F6E\u5BC6\u7801,\u6539\u5BC6\u7801,\u89E3\u7ED1\u624B\u673A"
|
|
1136
1176
|
},
|
|
1137
1177
|
"delete-member": {
|
|
1138
|
-
intentEn: "
|
|
1139
|
-
intentZh: "\u6309 user_id \u5220\u9664\u56E2\u961F\u6210\u5458\u3002",
|
|
1140
|
-
triggersEn: "remove member, delete user, delete staff",
|
|
1141
|
-
triggersZh: "\u5220\u9664\u6210\u5458,\u79FB\u9664\u7528\u6237,\u5220\u5458\u5DE5"
|
|
1178
|
+
intentEn: "Permanently delete a team member by user_id. Hard delete, not recoverable.",
|
|
1179
|
+
intentZh: "\u6309 user_id \u5F7B\u5E95\u5220\u9664\u56E2\u961F\u6210\u5458\uFF0C\u4E0D\u53EF\u6062\u590D\u3002",
|
|
1180
|
+
triggersEn: "remove member, delete user, delete staff, hard delete",
|
|
1181
|
+
triggersZh: "\u5220\u9664\u6210\u5458,\u79FB\u9664\u7528\u6237,\u5220\u5458\u5DE5,\u5F7B\u5E95\u5220\u9664"
|
|
1142
1182
|
},
|
|
1143
1183
|
"get-member-list": {
|
|
1144
1184
|
intentEn: "List or search team members (pagination, user_id, email).",
|
|
@@ -1176,6 +1216,12 @@ var TOOL_INTENT_BY_NAME = {
|
|
|
1176
1216
|
triggersEn: "edit proxy, change proxy host",
|
|
1177
1217
|
triggersZh: "\u4FEE\u6539\u4EE3\u7406,\u66F4\u65B0\u4EE3\u7406"
|
|
1178
1218
|
},
|
|
1219
|
+
"get-dynamic-proxy-traffic": {
|
|
1220
|
+
intentEn: "Query and return dynamic proxy traffic for the current team, including available traffic, traffic package expiration dates, and daily traffic consumption for the current month or a specified date range.",
|
|
1221
|
+
intentZh: "\u67E5\u8BE2\u5E76\u8FD4\u56DE\u5F53\u524D\u56E2\u961F\u52A8\u6001\u4EE3\u7406\u7684\u6D41\u91CF\u4FE1\u606F\uFF0C\u5305\u62EC\u53EF\u7528\u6D41\u91CF\u3001\u6D41\u91CF\u5305\u5230\u671F\u65E5\u671F\uFF0C\u4EE5\u53CA\u672C\u6708\u6216\u6307\u5B9A\u65E5\u671F\u8303\u56F4\u5185\u7684\u6BCF\u65E5\u6D41\u91CF\u6D88\u8017\u60C5\u51B5\u3002",
|
|
1222
|
+
triggersEn: "dynamic proxy traffic, available traffic, traffic package expiration, daily traffic consumption",
|
|
1223
|
+
triggersZh: "\u52A8\u6001\u4EE3\u7406\u6D41\u91CF,\u53EF\u7528\u6D41\u91CF,\u6D41\u91CF\u5305\u5230\u671F\u65E5\u671F,\u6BCF\u65E5\u6D41\u91CF\u6D88\u8017"
|
|
1224
|
+
},
|
|
1179
1225
|
"get-proxy-list": {
|
|
1180
1226
|
intentEn: "List proxies with filters/pagination.",
|
|
1181
1227
|
intentZh: "\u5206\u9875/\u6761\u4EF6\u67E5\u8BE2\u4EE3\u7406\u5217\u8868\u3002",
|
|
@@ -1357,7 +1403,7 @@ function buildRequestBodyFor(command, params) {
|
|
|
1357
1403
|
}
|
|
1358
1404
|
const value = withContractDefault(params[inputName], config2.default);
|
|
1359
1405
|
if (value !== void 0) {
|
|
1360
|
-
requestBody[config2.apiName] = toContractValue(value);
|
|
1406
|
+
requestBody[config2.apiName] = command === "restore-recycle-bin" && (inputName === "profile_id" || inputName === "profile_no") && Array.isArray(value) ? value.join(",") : toContractValue(value);
|
|
1361
1407
|
}
|
|
1362
1408
|
});
|
|
1363
1409
|
return requestBody;
|
|
@@ -1535,6 +1581,34 @@ var browserHandlers = {
|
|
|
1535
1581
|
}
|
|
1536
1582
|
throw new Error(response.data.msg);
|
|
1537
1583
|
},
|
|
1584
|
+
async getRecycleBinList(params) {
|
|
1585
|
+
const response = await getApiClient().post(
|
|
1586
|
+
`${getLocalApiBase()}${API_ENDPOINTS.GET_RECYCLE_BIN_LIST}`,
|
|
1587
|
+
buildRequestBodyFor("get-recycle-bin-list", params)
|
|
1588
|
+
);
|
|
1589
|
+
if (response.data.code === 0) {
|
|
1590
|
+
return JSON.stringify(response.data.data, null, 2);
|
|
1591
|
+
}
|
|
1592
|
+
throw new Error(response.data.msg);
|
|
1593
|
+
},
|
|
1594
|
+
async restoreRecycleBin(params) {
|
|
1595
|
+
const _p = params;
|
|
1596
|
+
if (_p.profile_id && Array.isArray(_p.profile_id)) {
|
|
1597
|
+
_p.profile_id = _p.profile_id.join(",");
|
|
1598
|
+
}
|
|
1599
|
+
if (_p.profile_no && Array.isArray(_p.profile_no)) {
|
|
1600
|
+
_p.profile_no = _p.profile_no.join(",");
|
|
1601
|
+
}
|
|
1602
|
+
console.log(_p);
|
|
1603
|
+
const response = await getApiClient().post(
|
|
1604
|
+
`${getLocalApiBase()}${API_ENDPOINTS.RESTORE_RECYCLE_BIN}`,
|
|
1605
|
+
buildRequestBodyFor("restore-recycle-bin", _p)
|
|
1606
|
+
);
|
|
1607
|
+
if (response.data.code === 0) {
|
|
1608
|
+
return JSON.stringify(response.data.data, null, 2);
|
|
1609
|
+
}
|
|
1610
|
+
throw new Error(response.data.msg);
|
|
1611
|
+
},
|
|
1538
1612
|
async getBrowserList(params) {
|
|
1539
1613
|
const requestBody = buildRequestBodyFor("get-browser-list", params);
|
|
1540
1614
|
const response = await getApiClient().post(`${getLocalApiBase()}${API_ENDPOINTS.GET_BROWSER_LIST}`, requestBody);
|
|
@@ -1773,6 +1847,14 @@ var proxyHandlers = {
|
|
|
1773
1847
|
}
|
|
1774
1848
|
throw new Error(response.data.msg);
|
|
1775
1849
|
},
|
|
1850
|
+
async getDynamicProxyTraffic(params = {}) {
|
|
1851
|
+
const requestBody = buildRequestBodyFor("get-dynamic-proxy-traffic", params);
|
|
1852
|
+
const response = await getApiClient().post(`${getLocalApiBase()}${API_ENDPOINTS.GET_DYNAMIC_PROXY_TRAFFIC}`, requestBody);
|
|
1853
|
+
if (response.data.code === 0) {
|
|
1854
|
+
return JSON.stringify(response.data.data, null, 2);
|
|
1855
|
+
}
|
|
1856
|
+
throw new Error(response.data.msg);
|
|
1857
|
+
},
|
|
1776
1858
|
async getProxyList(params) {
|
|
1777
1859
|
const requestBody = buildRequestBodyFor("get-proxy-list", params);
|
|
1778
1860
|
const response = await getApiClient().post(`${getLocalApiBase()}${API_ENDPOINTS.GET_PROXY_LIST}`, requestBody);
|
|
@@ -2514,6 +2596,17 @@ var schemas = {
|
|
|
2514
2596
|
deleteBrowserSchema: import_zod.z.object({
|
|
2515
2597
|
profile_id: import_zod.z.array(import_zod.z.string()).describe("The profile ids of the browsers to delete, it is required when you want to delete the browser")
|
|
2516
2598
|
}).strict(),
|
|
2599
|
+
getRecycleBinListSchema: import_zod.z.object({
|
|
2600
|
+
page: import_zod.z.number().int().min(1).optional().describe("Page number. Omit to use the Local API backend default. Only profiles deleted in the last 30 days and visible to the caller are returned."),
|
|
2601
|
+
limit: import_zod.z.number().int().min(1).max(100).optional().describe("Profiles per page, range 1-100. Omit to use the Local API backend default.")
|
|
2602
|
+
}).strict(),
|
|
2603
|
+
restoreRecycleBinSchema: import_zod.z.object({
|
|
2604
|
+
profile_id: nonEmptyStringArraySchema.optional().describe("Array of one or more profile IDs in the recycle bin. Either profile_id or profile_no is required. If both are provided, profile_id takes priority."),
|
|
2605
|
+
profile_no: import_zod.z.array(import_zod.z.string().regex(/^\d+$/, "Profile number must be a numeric string")).min(1).optional().describe("Array of one or more profile serial numbers in the recycle bin. Either profile_id or profile_no is required. If both are provided, profile_id takes priority."),
|
|
2606
|
+
group_id: import_zod.z.string().regex(/^\d+$/, "Group ID must be a numeric string").describe('Target group ID after restore. Use get-group-list to find a group the caller can use. "0" is ungrouped.')
|
|
2607
|
+
}).strict().refine((data) => data.profile_id || data.profile_no, {
|
|
2608
|
+
message: "Either profile_id or profile_no must be provided"
|
|
2609
|
+
}),
|
|
2517
2610
|
getBrowserListSchema: import_zod.z.object({
|
|
2518
2611
|
group_id: import_zod.z.string().regex(/^\d+$/, "Group ID must be a numeric string").optional().describe("Query by group ID; searches all groups if empty"),
|
|
2519
2612
|
limit: import_zod.z.number().min(1).max(200).optional().describe("Profiles per page, range 1 ~ 200. If omitted the CLI sends limit=200; the Local API itself defaults to only 1, so always rely on this CLI default or pass an explicit value"),
|
|
@@ -2580,8 +2673,8 @@ var schemas = {
|
|
|
2580
2673
|
email: import_zod.z.string().max(70).describe("Member email, max 70 characters"),
|
|
2581
2674
|
password: import_zod.z.string().min(8).max(50).describe("Login password in plaintext, 8 to 50 characters. The Local API hashes it before storing"),
|
|
2582
2675
|
identity: import_zod.z.union([import_zod.z.literal(2), import_zod.z.literal(3), import_zod.z.literal(4)]).describe("Role type: 2 admin, 3 manager, 4 staff"),
|
|
2583
|
-
manager: import_zod.z.string().max(15).optional().describe("Direct manager user_id.
|
|
2584
|
-
member: import_zod.z.array(import_zod.z.string()).max(300).optional().describe("Direct subordinate user_id list, max 300.
|
|
2676
|
+
manager: import_zod.z.string().max(15).optional().describe("Direct manager user_id. Optional even when identity is 4 (staff); omit for no manager. Only staff may send this field"),
|
|
2677
|
+
member: import_zod.z.array(import_zod.z.string()).max(300).optional().describe("Direct subordinate user_id list, max 300. Only for identity 3 (manager). Do not send for admin (2); the Local API will reject it"),
|
|
2585
2678
|
authorized_group: import_zod.z.array(import_zod.z.string()).max(1500).optional().describe("Authorized browser group ids, max 1500. Empty array means no groups"),
|
|
2586
2679
|
profile_limit: import_zod.z.number().optional().describe("Profile quota for this member"),
|
|
2587
2680
|
remark: import_zod.z.string().max(100).optional().describe("Remark, max 100 characters")
|
|
@@ -2589,33 +2682,33 @@ var schemas = {
|
|
|
2589
2682
|
updateMemberSchema: import_zod.z.object({
|
|
2590
2683
|
user_id: import_zod.z.string().max(50).describe("Member user_id to update"),
|
|
2591
2684
|
user_group_id: import_zod.z.string().max(50).optional().describe("Member group / role id"),
|
|
2592
|
-
name: import_zod.z.string().max(50).optional().describe("Member display name, max 50 characters. Empty string clears the name"),
|
|
2593
|
-
email: import_zod.z.string().max(70).optional().describe("Member email, max 70 characters"),
|
|
2594
|
-
identity: import_zod.z.union([import_zod.z.literal(2), import_zod.z.literal(3), import_zod.z.literal(4)]).optional().describe("Role type: 2 admin, 3 manager, 4 staff"),
|
|
2595
|
-
manager: import_zod.z.string().max(15).optional().describe("Direct manager user_id. Empty string clears the manager"),
|
|
2596
|
-
member: import_zod.z.array(import_zod.z.string()).max(300).optional().describe("Direct subordinate user_id list, max 300. Empty array clears subordinates"),
|
|
2685
|
+
name: import_zod.z.string().max(50).optional().describe("Member display name, max 50 characters. Empty string clears the name. Omit to keep unchanged"),
|
|
2686
|
+
email: import_zod.z.string().max(70).optional().describe("Member email, max 70 characters. Omit to keep unchanged. Do not send empty string; it will fail validation"),
|
|
2687
|
+
identity: import_zod.z.union([import_zod.z.literal(2), import_zod.z.literal(3), import_zod.z.literal(4)]).optional().describe("Role type: 2 admin, 3 manager, 4 staff. Omit to keep unchanged. Do not send empty; it will fail validation"),
|
|
2688
|
+
manager: import_zod.z.string().max(15).optional().describe("Direct manager user_id. Empty string clears the manager. Omit to keep unchanged. Only staff may send this field"),
|
|
2689
|
+
member: import_zod.z.array(import_zod.z.string()).max(300).optional().describe("Direct subordinate user_id list, max 300. Only for identity 3 (manager). Empty array clears subordinates. Do not send for admin (2)"),
|
|
2597
2690
|
authorized_group: import_zod.z.array(import_zod.z.string()).max(1500).optional().describe("Authorized browser group ids, max 1500. Omit to keep current groups. Empty array plus group_update_type 1 (default) replaces/clears; 2 appends/keeps"),
|
|
2598
2691
|
group_update_type: import_zod.z.union([import_zod.z.literal(1), import_zod.z.literal(2)]).optional().describe("How authorized_group is applied: 1 replace (default), 2 append"),
|
|
2599
2692
|
profile_limit: import_zod.z.number().optional().describe("Profile quota for this member"),
|
|
2600
|
-
remark: import_zod.z.string().max(100).optional().describe("Remark, max 100 characters. Empty string clears the remark")
|
|
2693
|
+
remark: import_zod.z.string().max(100).optional().describe("Remark, max 100 characters. Empty string clears the remark. Omit to keep unchanged")
|
|
2601
2694
|
}).strict(),
|
|
2602
2695
|
resetMemberPasswordSchema: import_zod.z.object({
|
|
2603
2696
|
user_id: import_zod.z.string().max(50).describe("Member user_id whose password will be reset"),
|
|
2604
2697
|
unbind_phone: import_zod.z.union([import_zod.z.literal(0), import_zod.z.literal(1)]).optional().describe("Whether to unbind the member phone: 1 unbind, 0 keep. Default 0")
|
|
2605
2698
|
}).strict(),
|
|
2606
2699
|
deleteMemberSchema: import_zod.z.object({
|
|
2607
|
-
user_id: import_zod.z.string().max(50).describe("Member user_id to delete")
|
|
2700
|
+
user_id: import_zod.z.string().max(50).describe("Member user_id to permanently delete. Hard delete, not recoverable, does not go to recycle bin")
|
|
2608
2701
|
}).strict(),
|
|
2609
2702
|
getMemberListSchema: import_zod.z.object({
|
|
2610
2703
|
user_group_id: import_zod.z.string().max(50).optional().describe("Filter by member group / role id"),
|
|
2611
2704
|
user_id: import_zod.z.array(import_zod.z.string()).max(50).optional().describe('Filter by member user_id list, max 50. Example: ["1001","1002"]'),
|
|
2612
2705
|
email: import_zod.z.array(import_zod.z.string()).max(50).optional().describe('Filter by member email list, max 50. Example: ["a@b.com"]'),
|
|
2613
|
-
page: import_zod.z.number().int().min(1).max(
|
|
2614
|
-
limit: import_zod.z.number().int().min(1).max(
|
|
2706
|
+
page: import_zod.z.number().int().min(1).max(2e4).optional().describe("Page number, default 1, max 20000"),
|
|
2707
|
+
limit: import_zod.z.number().int().min(1).max(200).optional().describe("Page size, default 50, max 200. Omitting limit returns 50 rows")
|
|
2615
2708
|
}).strict(),
|
|
2616
2709
|
getMemberGroupListSchema: import_zod.z.object({
|
|
2617
|
-
page: import_zod.z.number().int().min(1).max(
|
|
2618
|
-
limit: import_zod.z.number().int().min(1).max(
|
|
2710
|
+
page: import_zod.z.number().int().min(1).max(2e4).optional().describe("Page number, default 1, max 20000"),
|
|
2711
|
+
limit: import_zod.z.number().int().min(1).max(200).optional().describe("Page size, default 50, max 200. Omitting limit returns 50 rows")
|
|
2619
2712
|
}).strict(),
|
|
2620
2713
|
getApplicationListSchema: import_zod.z.object({
|
|
2621
2714
|
category_id: import_zod.z.string().optional().describe("Extension category_id"),
|
|
@@ -2648,6 +2741,10 @@ var schemas = {
|
|
|
2648
2741
|
remark: import_zod.z.string().optional().describe("Remark/description for the proxy"),
|
|
2649
2742
|
ipchecker: import_zod.z.enum(["ip2location", "ipapi", "ipfoxy"]).optional().describe("IP checker.")
|
|
2650
2743
|
}).strict(),
|
|
2744
|
+
getDynamicProxyTrafficSchema: import_zod.z.object({
|
|
2745
|
+
start_date: import_zod.z.iso.date().optional().describe("Query start date in YYYY-MM-DD format. Defaults to the first day of the current month in the Local API when omitted"),
|
|
2746
|
+
end_date: import_zod.z.iso.date().optional().describe("Query end date in YYYY-MM-DD format. Defaults to the current date in the Local API when omitted")
|
|
2747
|
+
}).strict(),
|
|
2651
2748
|
getProxyListSchema: import_zod.z.object({
|
|
2652
2749
|
limit: import_zod.z.number().optional().describe("Profiles per page. Number of proxies returned per page, range 1 ~ 200, default is 50"),
|
|
2653
2750
|
page: import_zod.z.number().optional().describe("Page number for results, default is 1"),
|
|
@@ -2826,6 +2923,16 @@ var STATELESS_HANDLERS = {
|
|
|
2826
2923
|
description: buildCliCommandDescription("delete-browser", "Delete the browser"),
|
|
2827
2924
|
paramsDescription: schemaParamsDescription(schemas.deleteBrowserSchema, "delete-browser")
|
|
2828
2925
|
},
|
|
2926
|
+
"get-recycle-bin-list": {
|
|
2927
|
+
fn: browserHandlers.getRecycleBinList,
|
|
2928
|
+
description: buildCliCommandDescription("get-recycle-bin-list", "List browser profiles in the recycle bin from the last 30 days"),
|
|
2929
|
+
paramsDescription: schemaParamsDescription(schemas.getRecycleBinListSchema, "get-recycle-bin-list")
|
|
2930
|
+
},
|
|
2931
|
+
"restore-recycle-bin": {
|
|
2932
|
+
fn: browserHandlers.restoreRecycleBin,
|
|
2933
|
+
description: buildCliCommandDescription("restore-recycle-bin", "Restore one or more deleted browser profiles from the recycle bin into a group"),
|
|
2934
|
+
paramsDescription: schemaParamsDescription(schemas.restoreRecycleBinSchema, "restore-recycle-bin")
|
|
2935
|
+
},
|
|
2829
2936
|
"get-browser-list": {
|
|
2830
2937
|
fn: browserHandlers.getBrowserList,
|
|
2831
2938
|
description: buildCliCommandDescription("get-browser-list", "Get the list of browsers"),
|
|
@@ -2934,7 +3041,7 @@ var STATELESS_HANDLERS = {
|
|
|
2934
3041
|
},
|
|
2935
3042
|
"delete-member": {
|
|
2936
3043
|
fn: memberHandlers.deleteMember,
|
|
2937
|
-
description: buildCliCommandDescription("delete-member", "
|
|
3044
|
+
description: buildCliCommandDescription("delete-member", "Permanently delete a team member"),
|
|
2938
3045
|
paramsDescription: schemaParamsDescription(schemas.deleteMemberSchema, "delete-member")
|
|
2939
3046
|
},
|
|
2940
3047
|
"get-member-list": {
|
|
@@ -2973,6 +3080,11 @@ var STATELESS_HANDLERS = {
|
|
|
2973
3080
|
description: buildCliCommandDescription("update-proxy", "Update the proxy"),
|
|
2974
3081
|
paramsDescription: schemaParamsDescription(schemas.updateProxySchema, "update-proxy")
|
|
2975
3082
|
},
|
|
3083
|
+
"get-dynamic-proxy-traffic": {
|
|
3084
|
+
fn: proxyHandlers.getDynamicProxyTraffic,
|
|
3085
|
+
description: buildCliCommandDescription("get-dynamic-proxy-traffic", "Query and return dynamic proxy traffic for the current team, including available traffic, traffic package expiration dates, and daily traffic consumption for the current month or a specified date range."),
|
|
3086
|
+
paramsDescription: schemaParamsDescription(schemas.getDynamicProxyTrafficSchema, "get-dynamic-proxy-traffic")
|
|
3087
|
+
},
|
|
2976
3088
|
"get-proxy-list": {
|
|
2977
3089
|
fn: proxyHandlers.getProxyList,
|
|
2978
3090
|
description: buildCliCommandDescription("get-proxy-list", "Get the list of proxies"),
|