@cloudglab/yapi-cli 0.0.1

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.
Files changed (115) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/README.md +131 -0
  3. package/dist/bin/yapi.d.ts +2 -0
  4. package/dist/bin/yapi.js +8 -0
  5. package/dist/bin/yapi.js.map +1 -0
  6. package/dist/cli.d.ts +1 -0
  7. package/dist/cli.js +203 -0
  8. package/dist/cli.js.map +1 -0
  9. package/dist/core/changelog.d.ts +17 -0
  10. package/dist/core/changelog.js +117 -0
  11. package/dist/core/changelog.js.map +1 -0
  12. package/dist/core/cli-output.d.ts +13 -0
  13. package/dist/core/cli-output.js +65 -0
  14. package/dist/core/cli-output.js.map +1 -0
  15. package/dist/core/cli-registry.d.ts +38 -0
  16. package/dist/core/cli-registry.js +189 -0
  17. package/dist/core/cli-registry.js.map +1 -0
  18. package/dist/core/completion.d.ts +3 -0
  19. package/dist/core/completion.js +94 -0
  20. package/dist/core/completion.js.map +1 -0
  21. package/dist/core/doctor.d.ts +13 -0
  22. package/dist/core/doctor.js +124 -0
  23. package/dist/core/doctor.js.map +1 -0
  24. package/dist/core/errors.d.ts +38 -0
  25. package/dist/core/errors.js +74 -0
  26. package/dist/core/errors.js.map +1 -0
  27. package/dist/core/output.d.ts +27 -0
  28. package/dist/core/output.js +208 -0
  29. package/dist/core/output.js.map +1 -0
  30. package/dist/core/update-probe.d.ts +14 -0
  31. package/dist/core/update-probe.js +67 -0
  32. package/dist/core/update-probe.js.map +1 -0
  33. package/dist/core/write-guard.d.ts +25 -0
  34. package/dist/core/write-guard.js +36 -0
  35. package/dist/core/write-guard.js.map +1 -0
  36. package/dist/index.d.ts +4 -0
  37. package/dist/index.js +4 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/install.d.ts +13 -0
  40. package/dist/install.js +201 -0
  41. package/dist/install.js.map +1 -0
  42. package/dist/services/yapi/api.d.ts +696 -0
  43. package/dist/services/yapi/api.js +700 -0
  44. package/dist/services/yapi/api.js.map +1 -0
  45. package/dist/services/yapi/auth.d.ts +37 -0
  46. package/dist/services/yapi/auth.js +143 -0
  47. package/dist/services/yapi/auth.js.map +1 -0
  48. package/dist/services/yapi/authCache.d.ts +25 -0
  49. package/dist/services/yapi/authCache.js +80 -0
  50. package/dist/services/yapi/authCache.js.map +1 -0
  51. package/dist/services/yapi/cache.d.ts +27 -0
  52. package/dist/services/yapi/cache.js +88 -0
  53. package/dist/services/yapi/cache.js.map +1 -0
  54. package/dist/services/yapi/config.d.ts +12 -0
  55. package/dist/services/yapi/config.js +66 -0
  56. package/dist/services/yapi/config.js.map +1 -0
  57. package/dist/services/yapi/index.d.ts +6 -0
  58. package/dist/services/yapi/index.js +6 -0
  59. package/dist/services/yapi/index.js.map +1 -0
  60. package/dist/services/yapi/logger.d.ts +6 -0
  61. package/dist/services/yapi/logger.js +36 -0
  62. package/dist/services/yapi/logger.js.map +1 -0
  63. package/dist/services/yapi/types.d.ts +176 -0
  64. package/dist/services/yapi/types.js +2 -0
  65. package/dist/services/yapi/types.js.map +1 -0
  66. package/dist/tools/index.d.ts +2 -0
  67. package/dist/tools/index.js +5 -0
  68. package/dist/tools/index.js.map +1 -0
  69. package/dist/tools/shared.d.ts +33 -0
  70. package/dist/tools/shared.js +46 -0
  71. package/dist/tools/shared.js.map +1 -0
  72. package/dist/tools/yapi/docs-sync.d.ts +29 -0
  73. package/dist/tools/yapi/docs-sync.js +243 -0
  74. package/dist/tools/yapi/docs-sync.js.map +1 -0
  75. package/dist/tools/yapi/index.d.ts +6 -0
  76. package/dist/tools/yapi/index.js +7 -0
  77. package/dist/tools/yapi/index.js.map +1 -0
  78. package/dist/tools/yapi/register-auth.d.ts +2 -0
  79. package/dist/tools/yapi/register-auth.js +182 -0
  80. package/dist/tools/yapi/register-auth.js.map +1 -0
  81. package/dist/tools/yapi/register-group.d.ts +2 -0
  82. package/dist/tools/yapi/register-group.js +178 -0
  83. package/dist/tools/yapi/register-group.js.map +1 -0
  84. package/dist/tools/yapi/register-interface.d.ts +2 -0
  85. package/dist/tools/yapi/register-interface.js +359 -0
  86. package/dist/tools/yapi/register-interface.js.map +1 -0
  87. package/dist/tools/yapi/register-project.d.ts +2 -0
  88. package/dist/tools/yapi/register-project.js +300 -0
  89. package/dist/tools/yapi/register-project.js.map +1 -0
  90. package/dist/tools/yapi/register-test.d.ts +2 -0
  91. package/dist/tools/yapi/register-test.js +267 -0
  92. package/dist/tools/yapi/register-test.js.map +1 -0
  93. package/dist/tools/yapi/register-util.d.ts +2 -0
  94. package/dist/tools/yapi/register-util.js +565 -0
  95. package/dist/tools/yapi/register-util.js.map +1 -0
  96. package/dist/tools/yapi/register.d.ts +6 -0
  97. package/dist/tools/yapi/register.js +19 -0
  98. package/dist/tools/yapi/register.js.map +1 -0
  99. package/dist/tools/yapi/utils.d.ts +11 -0
  100. package/dist/tools/yapi/utils.js +28 -0
  101. package/dist/tools/yapi/utils.js.map +1 -0
  102. package/dist/version.d.ts +1 -0
  103. package/dist/version.js +2 -0
  104. package/dist/version.js.map +1 -0
  105. package/package.json +38 -0
  106. package/skills/yapi-cli/SKILL.md +126 -0
  107. package/skills/yapi-cli/reference/auth.md +106 -0
  108. package/skills/yapi-cli/reference/cli.md +60 -0
  109. package/skills/yapi-cli/reference/commands.md +152 -0
  110. package/skills/yapi-cli/reference/group.md +77 -0
  111. package/skills/yapi-cli/reference/install.md +82 -0
  112. package/skills/yapi-cli/reference/interface.md +185 -0
  113. package/skills/yapi-cli/reference/overview.md +52 -0
  114. package/skills/yapi-cli/reference/project.md +115 -0
  115. package/skills/yapi-cli/reference/test.md +130 -0
@@ -0,0 +1,696 @@
1
+ import type { YApiResponse, ApiInterface, ProjectInfo, CategoryInfo, ApiSearchResultItem, YApiUserInfo } from './types.js';
2
+ /**
3
+ * PBKDF2 密码加密(YApi LDAP 模式用)。
4
+ * YApi 服务端使用固定的 salt 和迭代次数。
5
+ */
6
+ export declare function encryptPassword(password: string, salt: string): string;
7
+ export declare class YApiError extends Error {
8
+ readonly code?: string | undefined;
9
+ readonly statusCode?: number | undefined;
10
+ constructor(message: string, code?: string | undefined, statusCode?: number | undefined);
11
+ }
12
+ export declare class YApiAuthError extends YApiError {
13
+ constructor(message?: string);
14
+ }
15
+ export declare class YApiNetworkError extends YApiError {
16
+ constructor(cause: Error);
17
+ }
18
+ export declare class YApiTimeoutError extends YApiError {
19
+ constructor(url: string);
20
+ }
21
+ /** YApi API 客户端 */
22
+ export declare class YApiService {
23
+ private readonly serverUrl;
24
+ private readonly getHeaders;
25
+ private readonly getToken;
26
+ private readonly timeoutMs;
27
+ private readonly maxRetries;
28
+ private requestId;
29
+ constructor(serverUrl: string, getHeaders: () => Record<string, string>, getToken: () => string | undefined, timeoutMs?: number, maxRetries?: number);
30
+ /** 发送 API 请求(带重试和超时) */
31
+ private request;
32
+ /** GET 请求 */
33
+ private get;
34
+ /** POST 请求 */
35
+ private post;
36
+ /** PUT 请求 */
37
+ private put;
38
+ /** DELETE 请求 */
39
+ private del;
40
+ /** HEAD 请求 */
41
+ private head;
42
+ /** OPTIONS 请求 */
43
+ private options;
44
+ /** PATCH 请求 */
45
+ private patch;
46
+ /** 密码登录 */
47
+ loginWithPassword(email: string, password: string): Promise<YApiResponse<{
48
+ _id: number;
49
+ username: string;
50
+ token: string;
51
+ }>>;
52
+ /** LDAP 登录(密码已加密) */
53
+ loginByLdap(email: string, encryptedPassword: string): Promise<{
54
+ token: string;
55
+ uid: string;
56
+ username: string;
57
+ }>;
58
+ /** 获取登录状态 */
59
+ getLoginStatus(): Promise<YApiResponse<{
60
+ _id: number;
61
+ username: string;
62
+ email: string;
63
+ role: string;
64
+ type: string;
65
+ }>>;
66
+ /** 登出 */
67
+ userLogout(): Promise<YApiResponse<unknown>>;
68
+ /** 获取用户信息 */
69
+ getUserInfo(): Promise<YApiResponse<YApiUserInfo>>;
70
+ /** 搜索接口(YApi 实际通过 GET /interface/list?q=xxx 实现) */
71
+ searchInterfaces(params: {
72
+ q: string;
73
+ page?: number;
74
+ limit?: number;
75
+ project_id?: number;
76
+ group_id?: number;
77
+ }): Promise<YApiResponse<{
78
+ list: ApiSearchResultItem[];
79
+ total: number;
80
+ }>>;
81
+ /** 获取分组列表 */
82
+ listGroups(): Promise<YApiResponse<Array<{
83
+ _id: number;
84
+ group_name: string;
85
+ project_count: number;
86
+ uid: number;
87
+ }>>>;
88
+ /** 获取分组详情 */
89
+ getGroup(groupId: number): Promise<YApiResponse<{
90
+ _id: number;
91
+ group_name: string;
92
+ members: Array<{
93
+ uid: number;
94
+ username: string;
95
+ email: string;
96
+ role: string;
97
+ }>;
98
+ }>>;
99
+ /** 获取我的分组 */
100
+ getMyGroup(): Promise<YApiResponse<Array<{
101
+ _id: number;
102
+ group_name: string;
103
+ project_count: number;
104
+ uid: number;
105
+ }>>>;
106
+ /** 创建分组 */
107
+ groupAdd(data: {
108
+ group_name: string;
109
+ desc?: string;
110
+ }): Promise<YApiResponse<{
111
+ _id: number;
112
+ }>>;
113
+ /** 更新分组 */
114
+ groupUp(data: {
115
+ group_id: number;
116
+ group_name?: string;
117
+ desc?: string;
118
+ }): Promise<YApiResponse<unknown>>;
119
+ /** 删除分组 */
120
+ groupDel(groupId: number): Promise<YApiResponse<unknown>>;
121
+ /** 添加分组成员 */
122
+ groupAddMember(data: {
123
+ id: number;
124
+ uid: number;
125
+ role?: string;
126
+ }): Promise<YApiResponse<unknown>>;
127
+ /** 修改分组成员角色 */
128
+ groupChangeMemberRole(data: {
129
+ group_id: number;
130
+ member_uid: number;
131
+ role: string;
132
+ }): Promise<YApiResponse<unknown>>;
133
+ /** 删除分组成员 */
134
+ groupDelMember(data: {
135
+ group_id: number;
136
+ member_uid: number;
137
+ }): Promise<YApiResponse<unknown>>;
138
+ /** 获取项目列表 */
139
+ listProjects(params?: {
140
+ page?: number;
141
+ limit?: number;
142
+ group_id?: number;
143
+ }): Promise<YApiResponse<{
144
+ list: ProjectInfo[];
145
+ total: number;
146
+ }>>;
147
+ /** 获取项目详情 */
148
+ getProject(projectId: number): Promise<YApiResponse<ProjectInfo>>;
149
+ /** 通过 token 获取项目信息 */
150
+ getProjectByToken(token: string): Promise<YApiResponse<ProjectInfo>>;
151
+ /** 创建项目 */
152
+ createProject(data: {
153
+ name: string;
154
+ basepath?: string;
155
+ group_id: number;
156
+ project_type?: string;
157
+ desc?: string;
158
+ icon?: string;
159
+ color?: string;
160
+ tag?: string[];
161
+ }): Promise<YApiResponse<{
162
+ _id: number;
163
+ }>>;
164
+ /** 更新项目 */
165
+ updateProject(data: {
166
+ id: number;
167
+ name?: string;
168
+ basepath?: string;
169
+ desc?: string;
170
+ icon?: string;
171
+ color?: string;
172
+ tag?: string[];
173
+ }): Promise<YApiResponse<ProjectInfo>>;
174
+ /** 搜索项目 */
175
+ searchProjects(query: string): Promise<YApiResponse<ProjectInfo[]>>;
176
+ /** 更新项目环境 */
177
+ updateProjectEnv(data: {
178
+ project_id: number;
179
+ env: Array<{
180
+ name: string;
181
+ domain: string;
182
+ }>;
183
+ }): Promise<YApiResponse<unknown>>;
184
+ /** 更新项目标签 */
185
+ updateProjectTag(data: {
186
+ project_id: number;
187
+ tag: string[];
188
+ }): Promise<YApiResponse<unknown>>;
189
+ /** 更新项目 Token(重新生成) */
190
+ updateProjectToken(projectId: number): Promise<YApiResponse<{
191
+ token: string;
192
+ }>>;
193
+ /** 检查项目名是否可用 */
194
+ checkProjectName(name: string, groupId: number): Promise<YApiResponse<unknown>>;
195
+ /** 复制项目 */
196
+ copyProject(projectId: number, name?: string): Promise<YApiResponse<{
197
+ _id: number;
198
+ }>>;
199
+ /** 获取 Swagger URL */
200
+ getProjectSwaggerUrl(projectId: number): Promise<YApiResponse<unknown>>;
201
+ /** 添加项目成员 */
202
+ addProjectMember(data: {
203
+ project_id: number;
204
+ uid: number;
205
+ role?: string;
206
+ }): Promise<YApiResponse<unknown>>;
207
+ /** 更新项目设置(upset 覆盖全部字段) */
208
+ upSetProject(data: Record<string, unknown>): Promise<YApiResponse<unknown>>;
209
+ /** 删除项目 */
210
+ deleteProject(projectId: number): Promise<YApiResponse<unknown>>;
211
+ /** 删除项目成员 */
212
+ delProjectMember(data: {
213
+ project_id: number;
214
+ uid: number;
215
+ }): Promise<YApiResponse<unknown>>;
216
+ /** 修改项目成员角色 */
217
+ changeProjectMemberRole(data: {
218
+ project_id: number;
219
+ member_uid: number;
220
+ role: string;
221
+ }): Promise<YApiResponse<unknown>>;
222
+ /** 修改成员邮件通知 */
223
+ changeProjectMemberEmailNotice(data: {
224
+ project_id: number;
225
+ uid: number;
226
+ email_notice: boolean;
227
+ }): Promise<YApiResponse<unknown>>;
228
+ /** 获取分类(目录)列表 */
229
+ listCategories(projectId: number): Promise<YApiResponse<CategoryInfo[]>>;
230
+ /** 获取分类详情 */
231
+ getCategory(catId: number): Promise<YApiResponse<CategoryInfo>>;
232
+ /** 添加分类 */
233
+ addCategory(data: {
234
+ name: string;
235
+ project_id: number;
236
+ desc?: string;
237
+ }): Promise<YApiResponse<{
238
+ _id: number;
239
+ }>>;
240
+ /** 更新分类 */
241
+ updateCategory(data: {
242
+ catid: number;
243
+ name?: string;
244
+ desc?: string;
245
+ status?: string;
246
+ }): Promise<YApiResponse<unknown>>;
247
+ /** 删除分类 */
248
+ deleteCategory(catId: number): Promise<YApiResponse<unknown>>;
249
+ /** 获取接口列表 */
250
+ listInterfaces(params?: {
251
+ page?: number;
252
+ limit?: number;
253
+ project_id?: number;
254
+ group_id?: number;
255
+ status?: string;
256
+ tag?: string;
257
+ method?: string;
258
+ /** 搜索关键词(YApi 服务端会在标题/路径上模糊匹配) */
259
+ q?: string;
260
+ }): Promise<YApiResponse<{
261
+ list: ApiInterface[];
262
+ total: number;
263
+ }>>;
264
+ /** 获取接口详情 */
265
+ getInterfaceDetail(interfaceId: number): Promise<YApiResponse<ApiInterface>>;
266
+ /** 创建接口 */
267
+ createInterface(data: {
268
+ project_id: number;
269
+ title: string;
270
+ path: string;
271
+ method: string;
272
+ catid: number;
273
+ status?: string;
274
+ tag?: string[];
275
+ desc?: string;
276
+ req_query?: Array<{
277
+ name: string;
278
+ example?: string;
279
+ desc?: string;
280
+ required?: string;
281
+ }>;
282
+ req_headers?: Array<{
283
+ name: string;
284
+ example?: string;
285
+ desc?: string;
286
+ required?: string;
287
+ }>;
288
+ req_body_type?: string;
289
+ req_body_other?: string;
290
+ res_body_type?: string;
291
+ res_body?: string;
292
+ }): Promise<YApiResponse<ApiInterface>>;
293
+ /** 更新接口 */
294
+ updateInterface(data: {
295
+ id: number;
296
+ title?: string;
297
+ path?: string;
298
+ method?: string;
299
+ catid?: number;
300
+ status?: string;
301
+ tag?: string[];
302
+ desc?: string;
303
+ req_query?: Array<{
304
+ name: string;
305
+ example?: string;
306
+ desc?: string;
307
+ required?: string;
308
+ }>;
309
+ req_headers?: Array<{
310
+ name: string;
311
+ example?: string;
312
+ desc?: string;
313
+ required?: string;
314
+ }>;
315
+ req_body_type?: string;
316
+ req_body_other?: string;
317
+ res_body_type?: string;
318
+ res_body?: string;
319
+ /** 是否开启 Mock */
320
+ is_mock_open?: boolean;
321
+ /** 自定义 Mock 脚本(沙箱执行) */
322
+ mock_custom_script?: string;
323
+ }): Promise<YApiResponse<ApiInterface>>;
324
+ /** 删除接口 */
325
+ deleteInterface(interfaceId: number): Promise<YApiResponse<null>>;
326
+ /** 批量删除接口 */
327
+ batchDeleteInterfaces(ids: number[]): Promise<YApiResponse<null>>;
328
+ /** 获取接口列表(按分类) */
329
+ listInterfacesByCategory(catId: number): Promise<YApiResponse<{
330
+ count: number;
331
+ total: number;
332
+ list: ApiInterface[];
333
+ }>>;
334
+ /** 保存接口(若 id 存在则更新,否则创建) */
335
+ saveInterface(data: {
336
+ id?: number;
337
+ project_id: number;
338
+ title: string;
339
+ path: string;
340
+ method: string;
341
+ catid?: number;
342
+ status?: string;
343
+ tag?: string[];
344
+ desc?: string;
345
+ req_body_type?: string;
346
+ req_body_other?: string;
347
+ res_body_type?: string;
348
+ res_body?: string;
349
+ }): Promise<YApiResponse<ApiInterface>>;
350
+ /** 获取接口列表(公开项目) */
351
+ listPublicInterfaces(params: {
352
+ project_id: number;
353
+ page?: number;
354
+ limit?: number;
355
+ keyword?: string;
356
+ }): Promise<YApiResponse<{
357
+ list: ApiInterface[];
358
+ total: number;
359
+ }>>;
360
+ /** schema 转 JSON */
361
+ schemaToJson(schema: string): Promise<YApiResponse<unknown>>;
362
+ /** 获取接口列表(菜单模式) */
363
+ listInterfacesByMenu(projectId: number): Promise<YApiResponse<Array<{
364
+ _id: number;
365
+ title: string;
366
+ path: string;
367
+ method: string;
368
+ catid: number;
369
+ }>>>;
370
+ /** 获取自定义字段 */
371
+ getCustomField(projectId: number): Promise<YApiResponse<unknown>>;
372
+ /** 更新接口排序 */
373
+ upInterfaceIndex(data: {
374
+ id: number;
375
+ index: number;
376
+ }): Promise<YApiResponse<unknown>>;
377
+ /** 更新分类排序 */
378
+ upCatIndex(data: {
379
+ catid: number;
380
+ index: number;
381
+ }): Promise<YApiResponse<unknown>>;
382
+ /** 导入接口(swagger 等格式) */
383
+ interUpload(data: {
384
+ project_id: number;
385
+ content: string;
386
+ type: string;
387
+ }): Promise<YApiResponse<unknown>>;
388
+ /** 下载浏览器扩展 CRX */
389
+ downloadCrx(): Promise<YApiResponse<any>>;
390
+ /** 获取接口变更日志 */
391
+ listInterfaceLogs(params: {
392
+ type: string;
393
+ apid: number;
394
+ typeid?: number;
395
+ page?: number;
396
+ limit?: number;
397
+ }): Promise<YApiResponse<{
398
+ list: Array<{
399
+ _id: number;
400
+ uid: number;
401
+ username: string;
402
+ type: string;
403
+ content: string;
404
+ add_time: number;
405
+ }>;
406
+ total: number;
407
+ }>>;
408
+ /** 获取日志列表(按更新时间排序) */
409
+ listLogsByUpdate(params: {
410
+ type: string;
411
+ apid: number;
412
+ limit?: number;
413
+ }): Promise<YApiResponse<Array<{
414
+ _id: number;
415
+ uid: number;
416
+ username: string;
417
+ type: string;
418
+ content: string;
419
+ add_time: number;
420
+ }>>>;
421
+ /** 获取关注的项目列表 */
422
+ listFollowedProjects(): Promise<YApiResponse<ProjectInfo[]>>;
423
+ /** 关注项目 */
424
+ followProject(projectId: number): Promise<YApiResponse<null>>;
425
+ /** 取消关注项目 */
426
+ unfollowProject(projectId: number): Promise<YApiResponse<null>>;
427
+ /** 获取项目 token */
428
+ getProjectToken(projectId: number): Promise<YApiResponse<{
429
+ token: string;
430
+ }>>;
431
+ /** 获取项目环境列表 */
432
+ listProjectEnvs(projectId: number): Promise<YApiResponse<{
433
+ _id: number;
434
+ env: Array<{
435
+ _id: string;
436
+ name: string;
437
+ domain: string;
438
+ }>;
439
+ }>>;
440
+ /** 获取项目成员列表 */
441
+ listProjectMembers(projectId: number): Promise<YApiResponse<Array<{
442
+ _id: number;
443
+ uid: number;
444
+ username: string;
445
+ role: string;
446
+ email: string;
447
+ }>>>;
448
+ /** 获取分组成员列表 */
449
+ listGroupMembers(groupId: number): Promise<YApiResponse<Array<{
450
+ _id: number;
451
+ uid: number;
452
+ username: string;
453
+ role: string;
454
+ email: string;
455
+ }>>>;
456
+ /** 获取用户列表(需要管理员权限) */
457
+ listUsers(params?: {
458
+ page?: number;
459
+ limit?: number;
460
+ }): Promise<YApiResponse<{
461
+ list: Array<{
462
+ _id: number;
463
+ uid: number;
464
+ username: string;
465
+ email: string;
466
+ role: string;
467
+ add_time: number;
468
+ }>;
469
+ total: number;
470
+ }>>;
471
+ /** 搜索用户 */
472
+ searchUsers(query: string): Promise<YApiResponse<Array<{
473
+ _id: number;
474
+ uid: number;
475
+ username: string;
476
+ email: string;
477
+ }>>>;
478
+ /** 查找用户 by ID */
479
+ findUserById(uid: number): Promise<YApiResponse<{
480
+ _id: number;
481
+ uid: number;
482
+ username: string;
483
+ email: string;
484
+ role: string;
485
+ }>>;
486
+ /** 更新用户 */
487
+ updateUser(data: {
488
+ id: number;
489
+ username?: string;
490
+ email?: string;
491
+ role?: string;
492
+ }): Promise<YApiResponse<unknown>>;
493
+ /** 修改密码 */
494
+ changePassword(data: {
495
+ old_password: string;
496
+ new_password: string;
497
+ }): Promise<YApiResponse<unknown>>;
498
+ /** 获取用户项目列表 */
499
+ listUserProjects(): Promise<YApiResponse<Array<{
500
+ _id: number;
501
+ name: string;
502
+ basepath: string;
503
+ }>>>;
504
+ /** 标记用户学习教程 */
505
+ upStudy(): Promise<YApiResponse<unknown>>;
506
+ /** 用户注册(需要管理员权限) */
507
+ userRegister(data: {
508
+ username: string;
509
+ password: string;
510
+ email: string;
511
+ role?: string;
512
+ }): Promise<YApiResponse<{
513
+ _id: number;
514
+ }>>;
515
+ /** 删除用户(需要管理员权限) */
516
+ userDelete(uid: number): Promise<YApiResponse<unknown>>;
517
+ /** Token 登录(静默认证,不需要交互) */
518
+ loginByToken(token: string): Promise<YApiResponse<{
519
+ _id: number;
520
+ username: string;
521
+ email: string;
522
+ role: string;
523
+ }>>;
524
+ /** 获取用户头像 URL */
525
+ getUserAvatar(uid: number): Promise<YApiResponse<string>>;
526
+ /** 上传头像 */
527
+ uploadUserAvatar(data: {
528
+ uid: number;
529
+ base64: string;
530
+ }): Promise<YApiResponse<unknown>>;
531
+ /** 获取项目测试集合列表 */
532
+ listCollections(projectId: number): Promise<YApiResponse<Array<{
533
+ _id: number;
534
+ name: string;
535
+ project_id: number;
536
+ uid: number;
537
+ add_time: number;
538
+ up_time: number;
539
+ }>>>;
540
+ /** 创建测试集合 */
541
+ createCollection(data: {
542
+ project_id: number;
543
+ name: string;
544
+ desc?: string;
545
+ }): Promise<YApiResponse<{
546
+ _id: number;
547
+ }>>;
548
+ /** 获取集合测试用例列表 */
549
+ listCollectionCases(colId: number): Promise<YApiResponse<Array<{
550
+ _id: number;
551
+ col_id: number;
552
+ project_id: number;
553
+ case_type: string;
554
+ index: number;
555
+ }>>>;
556
+ /** 添加测试用例 */
557
+ addTestCase(data: {
558
+ col_id: number;
559
+ case_type?: string;
560
+ project_id?: number;
561
+ req_url?: string;
562
+ req_method?: string;
563
+ req_params?: any[];
564
+ req_query?: any[];
565
+ req_headers?: any[];
566
+ req_body_type?: string;
567
+ req_body_form?: any[];
568
+ req_body_other?: string;
569
+ }): Promise<YApiResponse<{
570
+ _id: number;
571
+ }>>;
572
+ /** 更新测试用例 */
573
+ updateTestCase(data: {
574
+ id: number;
575
+ case_type?: string;
576
+ req_url?: string;
577
+ req_method?: string;
578
+ [key: string]: any;
579
+ }): Promise<YApiResponse<unknown>>;
580
+ /** 获取测试用例详情 */
581
+ getTestCase(caseId: number): Promise<YApiResponse<any>>;
582
+ /** 更新测试集合 */
583
+ updateCollection(data: {
584
+ id: number;
585
+ name?: string;
586
+ desc?: string;
587
+ }): Promise<YApiResponse<unknown>>;
588
+ /** 删除测试集合 */
589
+ deleteCollection(colId: number): Promise<YApiResponse<unknown>>;
590
+ /** 删除测试用例 */
591
+ deleteTestCase(caseId: number): Promise<YApiResponse<unknown>>;
592
+ /** 批量添加测试用例 */
593
+ addTestCaseList(data: {
594
+ col_id: number;
595
+ project_id: number;
596
+ case_list: any[];
597
+ }): Promise<YApiResponse<{
598
+ count: number;
599
+ }>>;
600
+ /** 克隆用例列表 */
601
+ cloneTestCaseList(data: {
602
+ col_id: number;
603
+ project_id: number;
604
+ src_col_id: number;
605
+ }): Promise<YApiResponse<{
606
+ count: number;
607
+ }>>;
608
+ /** 运行测试用例脚本 */
609
+ runTestCaseScript(data: {
610
+ col_id: number;
611
+ params?: any;
612
+ }): Promise<YApiResponse<any>>;
613
+ /** 获取测试用例环境变量列表 */
614
+ getTestCaseEnvList(caseId: number): Promise<YApiResponse<any>>;
615
+ /** 获取用例列表(支持变量参数) */
616
+ getCaseListByVariableParams(colId: number): Promise<YApiResponse<any>>;
617
+ /** 更新用例排序 */
618
+ upCaseIndex(data: {
619
+ col_id: number;
620
+ ids: number[];
621
+ }): Promise<YApiResponse<unknown>>;
622
+ /** 更新集合排序 */
623
+ upColIndex(data: {
624
+ project_id: number;
625
+ ids: number[];
626
+ }): Promise<YApiResponse<unknown>>;
627
+ /** 导出项目 JSON 格式 */
628
+ exportProjectJson(projectId: number): Promise<any>;
629
+ /** 导出项目 Swagger 格式 */
630
+ exportProjectSwagger(projectId: number): Promise<any>;
631
+ /** 导出项目 OpenAPI 3.0 格式 */
632
+ exportProjectOpenAPI3(projectId: number): Promise<any>;
633
+ /** 导入数据到项目 */
634
+ importData(data: {
635
+ project_id: number;
636
+ type: string;
637
+ content: string;
638
+ merge: 'normal' | 'good' | 'merge';
639
+ }): Promise<YApiResponse<any>>;
640
+ /** 获取开放接口数据(Open API) */
641
+ projectInterfaceData(params: {
642
+ project_id: number;
643
+ page?: number;
644
+ limit?: number;
645
+ keyword?: string;
646
+ }): Promise<YApiResponse<{
647
+ list: ApiInterface[];
648
+ total: number;
649
+ }>>;
650
+ /** 运行自动测试(Open API) */
651
+ runAutoTest(params: {
652
+ pid: number;
653
+ col_id: number;
654
+ env_params_id?: number;
655
+ }): Promise<YApiResponse<any>>;
656
+ /** 测试 POST 请求 */
657
+ testPost(url: string, body?: unknown): Promise<YApiResponse<any>>;
658
+ /** 测试 GET 请求 */
659
+ testGet(url: string): Promise<YApiResponse<any>>;
660
+ /** 测试 PUT 请求 */
661
+ testPut(url: string, body?: unknown): Promise<YApiResponse<any>>;
662
+ /** 测试 DELETE 请求 */
663
+ testDelete(url: string): Promise<YApiResponse<any>>;
664
+ /** 测试 HEAD 请求 */
665
+ testHead(url: string): Promise<YApiResponse<any>>;
666
+ /** 测试 OPTIONS 请求 */
667
+ testOptions(url: string): Promise<YApiResponse<any>>;
668
+ /** 测试 PATCH 请求 */
669
+ testPatch(url: string, body?: unknown): Promise<YApiResponse<any>>;
670
+ /** 测试文件上传 */
671
+ testFilesUpload(data: {
672
+ url: string;
673
+ files: Array<{
674
+ name: string;
675
+ path: string;
676
+ }>;
677
+ }): Promise<YApiResponse<any>>;
678
+ /** 测试单文件上传 */
679
+ testSingleUpload(data: {
680
+ url: string;
681
+ file: string;
682
+ }): Promise<YApiResponse<any>>;
683
+ /** 测试 HTTP 状态码 */
684
+ testHttpCode(data: {
685
+ url: string;
686
+ code: number;
687
+ }): Promise<YApiResponse<any>>;
688
+ /** 测试原始请求 */
689
+ testRaw(data: {
690
+ url: string;
691
+ raw: string;
692
+ type?: string;
693
+ }): Promise<YApiResponse<any>>;
694
+ /** 获取测试响应 */
695
+ testResponse(url: string): Promise<YApiResponse<any>>;
696
+ }