@leaflow/sdk 0.0.0-dev.101.g01ce843
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 +34 -0
- package/dist/account/v1/index.d.ts +54 -0
- package/dist/account/v1/index.js +5 -0
- package/dist/account/v1/schema.d.ts +1157 -0
- package/dist/account/v1/schema.js +5 -0
- package/dist/assistant/v1/index.d.ts +108 -0
- package/dist/assistant/v1/index.js +5 -0
- package/dist/assistant/v1/schema.d.ts +2840 -0
- package/dist/assistant/v1/schema.js +5 -0
- package/dist/billing/v1/index.d.ts +74 -0
- package/dist/billing/v1/index.js +5 -0
- package/dist/billing/v1/schema.d.ts +2445 -0
- package/dist/billing/v1/schema.js +5 -0
- package/dist/canopy/v1/index.d.ts +48 -0
- package/dist/canopy/v1/index.js +5 -0
- package/dist/canopy/v1/schema.d.ts +1100 -0
- package/dist/canopy/v1/schema.js +5 -0
- package/dist/compute/v1/index.d.ts +246 -0
- package/dist/compute/v1/index.js +5 -0
- package/dist/compute/v1/schema.d.ts +4924 -0
- package/dist/compute/v1/schema.js +5 -0
- package/dist/dns/v1/index.d.ts +42 -0
- package/dist/dns/v1/index.js +5 -0
- package/dist/dns/v1/schema.d.ts +883 -0
- package/dist/dns/v1/schema.js +5 -0
- package/dist/iam/v1/index.d.ts +84 -0
- package/dist/iam/v1/index.js +5 -0
- package/dist/iam/v1/schema.d.ts +1658 -0
- package/dist/iam/v1/schema.js +5 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.js +6 -0
- package/dist/monitoring/v1/index.d.ts +176 -0
- package/dist/monitoring/v1/index.js +5 -0
- package/dist/monitoring/v1/schema.d.ts +4181 -0
- package/dist/monitoring/v1/schema.js +5 -0
- package/dist/notification/v1/index.d.ts +76 -0
- package/dist/notification/v1/index.js +5 -0
- package/dist/notification/v1/schema.d.ts +2038 -0
- package/dist/notification/v1/schema.js +5 -0
- package/dist/support/v1/index.d.ts +50 -0
- package/dist/support/v1/index.js +5 -0
- package/dist/support/v1/schema.d.ts +1078 -0
- package/dist/support/v1/schema.js +5 -0
- package/dist/tunnel/v1/index.d.ts +16 -0
- package/dist/tunnel/v1/index.js +5 -0
- package/dist/tunnel/v1/schema.d.ts +401 -0
- package/dist/tunnel/v1/schema.js +5 -0
- package/package.json +74 -0
|
@@ -0,0 +1,1658 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This file was auto-generated by openapi-typescript.
|
|
3
|
+
* Do not make direct changes to the file.
|
|
4
|
+
*/
|
|
5
|
+
export interface paths {
|
|
6
|
+
"/api/v1/permissions": {
|
|
7
|
+
parameters: {
|
|
8
|
+
query?: never;
|
|
9
|
+
header?: never;
|
|
10
|
+
path?: never;
|
|
11
|
+
cookie?: never;
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* 列出全平台可授予的权限
|
|
15
|
+
* @description 各服务在启动时把自己那份目录注册进 IAM(和 AddFinalizer 同一段代码),所以这里是一份汇总,不只是 IAM 自己那几条。**IAM 不用它做判定**——判定在各服务自己那边,拿 Grant 配它自己那份目录算;这份汇总只是让界面画得出勾选框,它落后一个版本只会让界面上少几条可选项,不会让判定出错。一个还没启动过的服务,它的权限不在这里。
|
|
16
|
+
*/
|
|
17
|
+
get: operations["list-permissions"];
|
|
18
|
+
put?: never;
|
|
19
|
+
post?: never;
|
|
20
|
+
delete?: never;
|
|
21
|
+
options?: never;
|
|
22
|
+
head?: never;
|
|
23
|
+
patch?: never;
|
|
24
|
+
trace?: never;
|
|
25
|
+
};
|
|
26
|
+
"/api/v1/project": {
|
|
27
|
+
parameters: {
|
|
28
|
+
query?: never;
|
|
29
|
+
header?: never;
|
|
30
|
+
path?: never;
|
|
31
|
+
cookie?: never;
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* 查看一个项目
|
|
35
|
+
* @description 在项目里就看得到,不需要额外的读权限。
|
|
36
|
+
*/
|
|
37
|
+
get: operations["get-project"];
|
|
38
|
+
put?: never;
|
|
39
|
+
post?: never;
|
|
40
|
+
/**
|
|
41
|
+
* 删除项目
|
|
42
|
+
* @description 只有所有者能做,而且没有回头路:项目进入 DELETING,各服务开始清掉它下面的资源。项目行本身永远留着——查一个删掉的项目查得到,答案是它没了,而不是一个 404。
|
|
43
|
+
*/
|
|
44
|
+
delete: operations["delete-project"];
|
|
45
|
+
options?: never;
|
|
46
|
+
head?: never;
|
|
47
|
+
/** 改项目的名称与描述 */
|
|
48
|
+
patch: operations["update-project"];
|
|
49
|
+
trace?: never;
|
|
50
|
+
};
|
|
51
|
+
"/api/v1/membership": {
|
|
52
|
+
parameters: {
|
|
53
|
+
query?: never;
|
|
54
|
+
header?: never;
|
|
55
|
+
path?: never;
|
|
56
|
+
cookie?: never;
|
|
57
|
+
};
|
|
58
|
+
/**
|
|
59
|
+
* 查看我在这个项目里的身份
|
|
60
|
+
* @description 只给事实,不给结论:这里没有 allowed,因为 IAM 不知道你要做的是哪个操作——哪个操作需要哪条权限那份目录属于各个服务,判断在它们那边。
|
|
61
|
+
*/
|
|
62
|
+
get: operations["get-project-membership"];
|
|
63
|
+
put?: never;
|
|
64
|
+
post?: never;
|
|
65
|
+
delete?: never;
|
|
66
|
+
options?: never;
|
|
67
|
+
head?: never;
|
|
68
|
+
patch?: never;
|
|
69
|
+
trace?: never;
|
|
70
|
+
};
|
|
71
|
+
"/api/v1/invitations": {
|
|
72
|
+
parameters: {
|
|
73
|
+
query?: never;
|
|
74
|
+
header?: never;
|
|
75
|
+
path?: never;
|
|
76
|
+
cookie?: never;
|
|
77
|
+
};
|
|
78
|
+
/**
|
|
79
|
+
* 列出这个项目还在等的要约
|
|
80
|
+
* @description 在项目里就看得到,和成员列表同一条规则:谁被请了也是「这个项目有谁」的一部分。
|
|
81
|
+
*/
|
|
82
|
+
get: operations["list-project-invitations"];
|
|
83
|
+
put?: never;
|
|
84
|
+
/**
|
|
85
|
+
* 发出一份邀请
|
|
86
|
+
* @description 要约站 14 天。有上限是因为里面那些角色是按发出那一刻的项目校验的,一份活得比它所依据的安排还久的要约会授出现在没人打算授的权限。
|
|
87
|
+
*/
|
|
88
|
+
post: operations["issue-invitation"];
|
|
89
|
+
delete?: never;
|
|
90
|
+
options?: never;
|
|
91
|
+
head?: never;
|
|
92
|
+
patch?: never;
|
|
93
|
+
trace?: never;
|
|
94
|
+
};
|
|
95
|
+
"/api/v1/invitations/{invitationId}": {
|
|
96
|
+
parameters: {
|
|
97
|
+
query?: never;
|
|
98
|
+
header?: never;
|
|
99
|
+
path?: never;
|
|
100
|
+
cookie?: never;
|
|
101
|
+
};
|
|
102
|
+
get?: never;
|
|
103
|
+
put?: never;
|
|
104
|
+
post?: never;
|
|
105
|
+
/** 撤回一份还没被兑现的要约 */
|
|
106
|
+
delete: operations["revoke-invitation"];
|
|
107
|
+
options?: never;
|
|
108
|
+
head?: never;
|
|
109
|
+
patch?: never;
|
|
110
|
+
trace?: never;
|
|
111
|
+
};
|
|
112
|
+
"/api/v1/members:batchGet": {
|
|
113
|
+
parameters: {
|
|
114
|
+
query?: never;
|
|
115
|
+
header?: never;
|
|
116
|
+
path?: never;
|
|
117
|
+
cookie?: never;
|
|
118
|
+
};
|
|
119
|
+
get?: never;
|
|
120
|
+
put?: never;
|
|
121
|
+
/**
|
|
122
|
+
* Resolve members by id, including those who have left
|
|
123
|
+
* @description Resolves a set of account ids to the people behind them, scoped to the current project and **including members who have since left it**.
|
|
124
|
+
*
|
|
125
|
+
* This is what turns the ids held elsewhere in the product — who created a machine, who performed a logged operation — into names. The current member list cannot answer for somebody who has left, and those rows are exactly the ones a reader most often needs explained.
|
|
126
|
+
*
|
|
127
|
+
* Only ids that have belonged to the current project resolve; anything else is omitted, as are ids that do not resolve at all. Match the response against the request by id; the order is not significant.
|
|
128
|
+
*/
|
|
129
|
+
post: operations["batch-get-members"];
|
|
130
|
+
delete?: never;
|
|
131
|
+
options?: never;
|
|
132
|
+
head?: never;
|
|
133
|
+
patch?: never;
|
|
134
|
+
trace?: never;
|
|
135
|
+
};
|
|
136
|
+
"/api/v1/members": {
|
|
137
|
+
parameters: {
|
|
138
|
+
query?: never;
|
|
139
|
+
header?: never;
|
|
140
|
+
path?: never;
|
|
141
|
+
cookie?: never;
|
|
142
|
+
};
|
|
143
|
+
/** 列出项目成员 */
|
|
144
|
+
get: operations["list-members"];
|
|
145
|
+
put?: never;
|
|
146
|
+
post?: never;
|
|
147
|
+
delete?: never;
|
|
148
|
+
options?: never;
|
|
149
|
+
head?: never;
|
|
150
|
+
patch?: never;
|
|
151
|
+
trace?: never;
|
|
152
|
+
};
|
|
153
|
+
"/api/v1/members/{userId}": {
|
|
154
|
+
parameters: {
|
|
155
|
+
query?: never;
|
|
156
|
+
header?: never;
|
|
157
|
+
path?: never;
|
|
158
|
+
cookie?: never;
|
|
159
|
+
};
|
|
160
|
+
get?: never;
|
|
161
|
+
put?: never;
|
|
162
|
+
post?: never;
|
|
163
|
+
/**
|
|
164
|
+
* 移除成员,或者自己退出
|
|
165
|
+
* @description 移除别人要 iam:members.manage;退出只要求自己在这个项目里——任何人都可能被拉进一个项目,那么任何人就得能出去。所有者两条路都不行,先转移所有权。
|
|
166
|
+
*/
|
|
167
|
+
delete: operations["remove-member"];
|
|
168
|
+
options?: never;
|
|
169
|
+
head?: never;
|
|
170
|
+
patch?: never;
|
|
171
|
+
trace?: never;
|
|
172
|
+
};
|
|
173
|
+
"/api/v1/members/{userId}/roles": {
|
|
174
|
+
parameters: {
|
|
175
|
+
query?: never;
|
|
176
|
+
header?: never;
|
|
177
|
+
path?: never;
|
|
178
|
+
cookie?: never;
|
|
179
|
+
};
|
|
180
|
+
get?: never;
|
|
181
|
+
/**
|
|
182
|
+
* 设置一个成员持有的角色
|
|
183
|
+
* @description 整体替换而不是增删:调用方拿到的就是一份完整清单,让它自己算差集只会让「我以为我取消了那个角色」这种事变得可能。所有者身上的 OWNER 不受影响。
|
|
184
|
+
*/
|
|
185
|
+
put: operations["set-member-roles"];
|
|
186
|
+
post?: never;
|
|
187
|
+
delete?: never;
|
|
188
|
+
options?: never;
|
|
189
|
+
head?: never;
|
|
190
|
+
patch?: never;
|
|
191
|
+
trace?: never;
|
|
192
|
+
};
|
|
193
|
+
"/api/v1/members/{userId}/permissions": {
|
|
194
|
+
parameters: {
|
|
195
|
+
query?: never;
|
|
196
|
+
header?: never;
|
|
197
|
+
path?: never;
|
|
198
|
+
cookie?: never;
|
|
199
|
+
};
|
|
200
|
+
get?: never;
|
|
201
|
+
/**
|
|
202
|
+
* 设置一个成员直挂的权限
|
|
203
|
+
* @description 整体替换基础策略上直挂的那些权限。直挂让「给某个人临时开一条」不必先造一个只有他一个人持有的角色,但它不会随角色调整而更新,所以它适合一次性的、说得出理由的授予——角色仍然是主要的组织方式。要 iam:members.manage。
|
|
204
|
+
*/
|
|
205
|
+
put: operations["set-member-permissions"];
|
|
206
|
+
post?: never;
|
|
207
|
+
delete?: never;
|
|
208
|
+
options?: never;
|
|
209
|
+
head?: never;
|
|
210
|
+
patch?: never;
|
|
211
|
+
trace?: never;
|
|
212
|
+
};
|
|
213
|
+
"/api/v1/policies": {
|
|
214
|
+
parameters: {
|
|
215
|
+
query?: never;
|
|
216
|
+
header?: never;
|
|
217
|
+
path?: never;
|
|
218
|
+
cookie?: never;
|
|
219
|
+
};
|
|
220
|
+
/**
|
|
221
|
+
* 列出这个项目里的策略
|
|
222
|
+
* @description 在项目里就看得到,和成员列表同一条规则:谁被授了什么也是「这个项目有谁」的一部分。
|
|
223
|
+
*/
|
|
224
|
+
get: operations["list-policies"];
|
|
225
|
+
put?: never;
|
|
226
|
+
/**
|
|
227
|
+
* 附加一条策略
|
|
228
|
+
* @description 它建的是**附加**策略——要么带资源范围,要么方向是 deny。一条不限资源的 allow 是基础策略,每个成员只有一条,改它走 set-member-roles 和 set-member-permissions。roles 里不能有 OWNER 或 ADMIN:它们是规则而不是权限集合,「限定在三台机器上的所有者」讲不通。要 iam:members.manage。
|
|
229
|
+
*/
|
|
230
|
+
post: operations["attach-policy"];
|
|
231
|
+
delete?: never;
|
|
232
|
+
options?: never;
|
|
233
|
+
head?: never;
|
|
234
|
+
patch?: never;
|
|
235
|
+
trace?: never;
|
|
236
|
+
};
|
|
237
|
+
"/api/v1/policies/{policyId}": {
|
|
238
|
+
parameters: {
|
|
239
|
+
query?: never;
|
|
240
|
+
header?: never;
|
|
241
|
+
path?: never;
|
|
242
|
+
cookie?: never;
|
|
243
|
+
};
|
|
244
|
+
/**
|
|
245
|
+
* 查看一条策略
|
|
246
|
+
* @description 和 list-policies 同一条规则,在项目里就看得到:谁被授了什么也是「这个项目有谁」的一部分,读它不需要额外的权限。
|
|
247
|
+
*/
|
|
248
|
+
get: operations["get-policy"];
|
|
249
|
+
/**
|
|
250
|
+
* 改一条策略
|
|
251
|
+
* @description 整体替换而不是逐字段改:resources、roles、permissions 各自整份覆盖,没发的那份就是空的——只有「这就是这条策略现在的全貌」这一种语义说得清一次写入到底收回了什么。改不动的是策略的**种类**:基础策略(不限资源的 allow)加不上资源范围,这个成员的角色就存在它上面,给它加个范围等于让他在别的资源上什么都不是;一条带范围的策略反过来也不能把范围清空变成基础策略,那个位置每个成员只有一条。要换种类就删了重建。要 iam:members.manage。
|
|
252
|
+
*/
|
|
253
|
+
put: operations["update-policy"];
|
|
254
|
+
post?: never;
|
|
255
|
+
/**
|
|
256
|
+
* 摘掉一条策略
|
|
257
|
+
* @description 基础策略摘不掉——它是这个成员角色的落点,删了它这个人就不再持有任何角色,而「让他离开这个项目」是 remove-member 的事。要 iam:members.manage。
|
|
258
|
+
*/
|
|
259
|
+
delete: operations["detach-policy"];
|
|
260
|
+
options?: never;
|
|
261
|
+
head?: never;
|
|
262
|
+
patch?: never;
|
|
263
|
+
trace?: never;
|
|
264
|
+
};
|
|
265
|
+
"/api/v1/transfer-ownership": {
|
|
266
|
+
parameters: {
|
|
267
|
+
query?: never;
|
|
268
|
+
header?: never;
|
|
269
|
+
path?: never;
|
|
270
|
+
cookie?: never;
|
|
271
|
+
};
|
|
272
|
+
get?: never;
|
|
273
|
+
put?: never;
|
|
274
|
+
/**
|
|
275
|
+
* 转移项目所有权
|
|
276
|
+
* @description OWNER 唯一的移动方式,只有所有者本人能发起——能像普通角色那样授予的话,任何管理员都可以顺手把自己变成所有者。
|
|
277
|
+
*/
|
|
278
|
+
post: operations["transfer-project-ownership"];
|
|
279
|
+
delete?: never;
|
|
280
|
+
options?: never;
|
|
281
|
+
head?: never;
|
|
282
|
+
patch?: never;
|
|
283
|
+
trace?: never;
|
|
284
|
+
};
|
|
285
|
+
"/api/v1/roles": {
|
|
286
|
+
parameters: {
|
|
287
|
+
query?: never;
|
|
288
|
+
header?: never;
|
|
289
|
+
path?: never;
|
|
290
|
+
cookie?: never;
|
|
291
|
+
};
|
|
292
|
+
/** 列出项目里的角色 */
|
|
293
|
+
get: operations["list-roles"];
|
|
294
|
+
put?: never;
|
|
295
|
+
/** 建一个角色 */
|
|
296
|
+
post: operations["create-role"];
|
|
297
|
+
delete?: never;
|
|
298
|
+
options?: never;
|
|
299
|
+
head?: never;
|
|
300
|
+
patch?: never;
|
|
301
|
+
trace?: never;
|
|
302
|
+
};
|
|
303
|
+
"/api/v1/roles/{code}": {
|
|
304
|
+
parameters: {
|
|
305
|
+
query?: never;
|
|
306
|
+
header?: never;
|
|
307
|
+
path?: never;
|
|
308
|
+
cookie?: never;
|
|
309
|
+
};
|
|
310
|
+
/** 查看一个角色 */
|
|
311
|
+
get: operations["get-role"];
|
|
312
|
+
/**
|
|
313
|
+
* 改一个角色
|
|
314
|
+
* @description 名称、描述和权限整体替换。改完会在同一个事务里重新编译持有它的每一个成员——角色的权限变了,就是那些人的权限变了,而下一次请求是拿编译结果判定的。
|
|
315
|
+
*/
|
|
316
|
+
put: operations["update-role"];
|
|
317
|
+
post?: never;
|
|
318
|
+
/**
|
|
319
|
+
* 删一个角色
|
|
320
|
+
* @description 还有人持有时会被拒。级联摘掉那些绑定等于把每个持有者悄悄降级——请求里没有一个字说了这件事,事后也查不到。
|
|
321
|
+
*/
|
|
322
|
+
delete: operations["delete-role"];
|
|
323
|
+
options?: never;
|
|
324
|
+
head?: never;
|
|
325
|
+
patch?: never;
|
|
326
|
+
trace?: never;
|
|
327
|
+
};
|
|
328
|
+
"/api/v1/ssh-keys": {
|
|
329
|
+
parameters: {
|
|
330
|
+
query?: never;
|
|
331
|
+
header?: never;
|
|
332
|
+
path?: never;
|
|
333
|
+
cookie?: never;
|
|
334
|
+
};
|
|
335
|
+
/**
|
|
336
|
+
* 列出这个项目的公钥
|
|
337
|
+
* @description 归成员的和归项目的都在里面,靠每一条上的 owner_user_id 区分。
|
|
338
|
+
*/
|
|
339
|
+
get: operations["list-ssh-keys"];
|
|
340
|
+
put?: never;
|
|
341
|
+
/**
|
|
342
|
+
* 添加一把公钥
|
|
343
|
+
* @description owner=me 是自己的,是成员就能加;owner=project 是项目公用的,要 iam:ssh_keys.manage —— 它会进这个项目之后开出来的每一台机器。
|
|
344
|
+
*/
|
|
345
|
+
post: operations["create-ssh-key"];
|
|
346
|
+
delete?: never;
|
|
347
|
+
options?: never;
|
|
348
|
+
head?: never;
|
|
349
|
+
patch?: never;
|
|
350
|
+
trace?: never;
|
|
351
|
+
};
|
|
352
|
+
"/api/v1/ssh-keys/{keyId}": {
|
|
353
|
+
parameters: {
|
|
354
|
+
query?: never;
|
|
355
|
+
header?: never;
|
|
356
|
+
path?: never;
|
|
357
|
+
cookie?: never;
|
|
358
|
+
};
|
|
359
|
+
/** 查看一把公钥 */
|
|
360
|
+
get: operations["get-ssh-key"];
|
|
361
|
+
put?: never;
|
|
362
|
+
post?: never;
|
|
363
|
+
/**
|
|
364
|
+
* 吊销一把公钥
|
|
365
|
+
* @description 行留着,状态变成 REVOKED。事故之后要问的是当时信任的是哪把钥匙。
|
|
366
|
+
*/
|
|
367
|
+
delete: operations["revoke-ssh-key"];
|
|
368
|
+
options?: never;
|
|
369
|
+
head?: never;
|
|
370
|
+
/**
|
|
371
|
+
* 给公钥改名
|
|
372
|
+
* @description 只有名字能改:公钥、类型、指纹是同一样东西的三种说法,改其中一个会让这一行描述一把并不存在的钥匙。
|
|
373
|
+
*/
|
|
374
|
+
patch: operations["rename-ssh-key"];
|
|
375
|
+
trace?: never;
|
|
376
|
+
};
|
|
377
|
+
}
|
|
378
|
+
export type webhooks = Record<string, never>;
|
|
379
|
+
export interface components {
|
|
380
|
+
schemas: {
|
|
381
|
+
Error: {
|
|
382
|
+
code?: string;
|
|
383
|
+
message: string;
|
|
384
|
+
meta?: {
|
|
385
|
+
[key: string]: unknown;
|
|
386
|
+
};
|
|
387
|
+
/** Format: int64 */
|
|
388
|
+
status: number;
|
|
389
|
+
};
|
|
390
|
+
PermissionResource: {
|
|
391
|
+
/** @description 权限的代码,形如 compute:instance.delete。**这里没有展示名**:一条权限对人显示成什么字是本地化的,服务端存一份的话那一份只会是某一种语言,而读它的人可能读别的语言。译名归渲染它的那一层;它没跟上时界面显示的就是这个代码——一个自解释的降级,而且看得见 */
|
|
392
|
+
name: string;
|
|
393
|
+
/** @description 只有项目所有者能做,绑到自定义角色上也不会生效 */
|
|
394
|
+
owner_only: boolean;
|
|
395
|
+
/** @description 这条权限的判定对象是哪类资源,空表示它是项目级的。**它不必等于操作对象本身**——compute 的 route 表上没有 project_id,隔离本来就经父网络传递,所以 compute:route.create 的判定对象是 compute:private_network。非空同时意味着这条权限可以被限定到具体实例;create 和 list 一律留空 */
|
|
396
|
+
resource_type: string;
|
|
397
|
+
};
|
|
398
|
+
ResourceTypeResource: {
|
|
399
|
+
/** @description 资源类型的代码,形如 dns:zone。同样没有展示名:它该显示成「托管域名」还是「Zone」由渲染它的那一层按读者的语言决定 */
|
|
400
|
+
name: string;
|
|
401
|
+
};
|
|
402
|
+
CatalogResource: {
|
|
403
|
+
permissions: components["schemas"]["PermissionResource"][] | null;
|
|
404
|
+
/** @description 这个服务声明的资源类型。带资源范围的规则只落得到它们上面——一个没有被声明过的类型没人认得,限定在它上面的规则谁都判不出来 */
|
|
405
|
+
resource_types: components["schemas"]["ResourceTypeResource"][] | null;
|
|
406
|
+
service: string;
|
|
407
|
+
};
|
|
408
|
+
CatalogListResponseBody: {
|
|
409
|
+
items: components["schemas"]["CatalogResource"][] | null;
|
|
410
|
+
};
|
|
411
|
+
ResourceRefResource: {
|
|
412
|
+
/** @description 是字符串不是 uuid:dns 的 zone 标识是域名,而且不在 IAM 库里。匹配语义是 glob,所以 *.example.com 能表达一批子域名;uuid 和域名都不含 glob 元字符,对它们来说就是精确相等 */
|
|
413
|
+
id: string;
|
|
414
|
+
/** @description 形如 compute:instance、dns:zone,和权限名同一个命名空间 */
|
|
415
|
+
type: string;
|
|
416
|
+
};
|
|
417
|
+
RuleResource: {
|
|
418
|
+
/** @enum {string} */
|
|
419
|
+
effect: "allow" | "deny";
|
|
420
|
+
/** @description 权限名,支持尾部通配(compute:instance.*)。通配必须带服务前缀——一条光秃秃的 * 会把日后新上线的服务的操作也一起授出去,而那件事发生的时候没有任何人在场 */
|
|
421
|
+
permissions: string[] | null;
|
|
422
|
+
/** @description 为空表示整个项目范围;非空表示这条规则只在这些资源上成立,而那意味着它回答不了项目级的问题 */
|
|
423
|
+
resources: components["schemas"]["ResourceRefResource"][] | null;
|
|
424
|
+
};
|
|
425
|
+
GrantResource: {
|
|
426
|
+
admin: boolean;
|
|
427
|
+
owner: boolean;
|
|
428
|
+
/** @description 持有的角色编码,只用于展示 */
|
|
429
|
+
roles: string[] | null;
|
|
430
|
+
/** @description 他全部策略编译出来的规则。**不要自己遍历它做判定**——拿它配上自己那份权限目录交给 pkg/rbac:owner 不可被 deny、deny 优先于 admin、带资源范围的规则不参与项目级判定,那里面的顺序每一条都对着一种会静默放行的写法 */
|
|
431
|
+
rules: components["schemas"]["RuleResource"][] | null;
|
|
432
|
+
};
|
|
433
|
+
ProjectResource: {
|
|
434
|
+
ban_reason: string;
|
|
435
|
+
/** Format: date-time */
|
|
436
|
+
created_at: string;
|
|
437
|
+
created_by: string;
|
|
438
|
+
/**
|
|
439
|
+
* Format: date-time
|
|
440
|
+
* @description 盖上墓碑的那一刻
|
|
441
|
+
*/
|
|
442
|
+
deleted_at: string | null;
|
|
443
|
+
description: string;
|
|
444
|
+
/** Format: uuid */
|
|
445
|
+
id: string;
|
|
446
|
+
name: string;
|
|
447
|
+
/**
|
|
448
|
+
* Format: date-time
|
|
449
|
+
* @description 欠费的起始时间
|
|
450
|
+
*/
|
|
451
|
+
overdue_at: string | null;
|
|
452
|
+
/** @enum {string} */
|
|
453
|
+
status: "ACTIVE" | "SUSPENDED" | "BANNED" | "DELETING" | "DELETED";
|
|
454
|
+
/** @description 给人看的,不参与任何查询 */
|
|
455
|
+
status_reason: string;
|
|
456
|
+
/** Format: date-time */
|
|
457
|
+
updated_at: string;
|
|
458
|
+
};
|
|
459
|
+
ProjectAccessResource: {
|
|
460
|
+
grant: components["schemas"]["GrantResource"];
|
|
461
|
+
project: components["schemas"]["ProjectResource"];
|
|
462
|
+
};
|
|
463
|
+
UpdateProjectRequestBody: {
|
|
464
|
+
description?: string;
|
|
465
|
+
name?: string;
|
|
466
|
+
};
|
|
467
|
+
MembershipResource: {
|
|
468
|
+
grant: components["schemas"]["GrantResource"];
|
|
469
|
+
member: boolean;
|
|
470
|
+
project_status: string;
|
|
471
|
+
user_status: string;
|
|
472
|
+
};
|
|
473
|
+
InvitationResource: {
|
|
474
|
+
/** Format: date-time */
|
|
475
|
+
created_at: string;
|
|
476
|
+
email: string;
|
|
477
|
+
/** Format: date-time */
|
|
478
|
+
expires_at: string;
|
|
479
|
+
/** Format: uuid */
|
|
480
|
+
id: string;
|
|
481
|
+
invited_by: string;
|
|
482
|
+
/** Format: uuid */
|
|
483
|
+
project_id: string;
|
|
484
|
+
/** @description 兑现时会授予的角色编码 */
|
|
485
|
+
roles: string[] | null;
|
|
486
|
+
};
|
|
487
|
+
LengthAwarePageInvitationResource: {
|
|
488
|
+
/** @description 这一页的内容 */
|
|
489
|
+
items: components["schemas"]["InvitationResource"][];
|
|
490
|
+
/**
|
|
491
|
+
* Format: int64
|
|
492
|
+
* @description 这一页最多几条,回显请求里的值
|
|
493
|
+
*/
|
|
494
|
+
limit: number;
|
|
495
|
+
/**
|
|
496
|
+
* Format: int64
|
|
497
|
+
* @description 跳过了多少条,回显请求里的值
|
|
498
|
+
*/
|
|
499
|
+
offset: number;
|
|
500
|
+
/**
|
|
501
|
+
* Format: int64
|
|
502
|
+
* @description 命中的总条数,不只是这一页
|
|
503
|
+
*/
|
|
504
|
+
total: number;
|
|
505
|
+
};
|
|
506
|
+
IssueInvitationRequestBody: {
|
|
507
|
+
/** Format: email */
|
|
508
|
+
email: string;
|
|
509
|
+
/** @description 兑现时授予的角色编码。必须是这个项目已经定义的,OWNER 不行 */
|
|
510
|
+
roles: string[] | null;
|
|
511
|
+
};
|
|
512
|
+
IssuedInvitationResponseBody: {
|
|
513
|
+
invitation: components["schemas"]["InvitationResource"];
|
|
514
|
+
/** @description 兑现用的明文,**只在这一次响应里出现**。库里只有它的哈希,丢了只能撤销重发 */
|
|
515
|
+
token: string;
|
|
516
|
+
};
|
|
517
|
+
BatchGetMembersRequestBody: {
|
|
518
|
+
/** @description The account ids to resolve. Blank entries are ignored. */
|
|
519
|
+
ids: string[];
|
|
520
|
+
};
|
|
521
|
+
BatchGetMembersResponseBody: {
|
|
522
|
+
/** @description The people that resolved. Ids that never belonged to this project are absent, as are ids that do not resolve at all. */
|
|
523
|
+
items: components["schemas"]["ResolvedMemberResource"][];
|
|
524
|
+
};
|
|
525
|
+
/** @description A person referred to by an id held elsewhere in the project. Carries who they are, not what they may do — a member who has left holds nothing, and this shape has no grant to say so. */
|
|
526
|
+
ResolvedMemberResource: {
|
|
527
|
+
/** @description MD5 hash of the lowercased, trimmed email address, for use with Gravatar-compatible avatar services. Empty if the account has no email address. */
|
|
528
|
+
avatar_hash: string;
|
|
529
|
+
email: string;
|
|
530
|
+
first_name: string;
|
|
531
|
+
last_name: string;
|
|
532
|
+
/** @description True when this person is no longer a member of the project. */
|
|
533
|
+
left: boolean;
|
|
534
|
+
user_id: string;
|
|
535
|
+
};
|
|
536
|
+
MemberResource: {
|
|
537
|
+
/** @description MD5 hash of the lowercased, trimmed email address, for use with Gravatar-compatible avatar services. Empty if the account has no email address. */
|
|
538
|
+
avatar_hash: string;
|
|
539
|
+
/** Format: date-time */
|
|
540
|
+
created_at: string;
|
|
541
|
+
created_by: string;
|
|
542
|
+
email: string;
|
|
543
|
+
first_name: string;
|
|
544
|
+
grant: components["schemas"]["GrantResource"];
|
|
545
|
+
last_name: string;
|
|
546
|
+
user_id: string;
|
|
547
|
+
};
|
|
548
|
+
LengthAwarePageMemberResource: {
|
|
549
|
+
/** @description 这一页的内容 */
|
|
550
|
+
items: components["schemas"]["MemberResource"][];
|
|
551
|
+
/**
|
|
552
|
+
* Format: int64
|
|
553
|
+
* @description 这一页最多几条,回显请求里的值
|
|
554
|
+
*/
|
|
555
|
+
limit: number;
|
|
556
|
+
/**
|
|
557
|
+
* Format: int64
|
|
558
|
+
* @description 跳过了多少条,回显请求里的值
|
|
559
|
+
*/
|
|
560
|
+
offset: number;
|
|
561
|
+
/**
|
|
562
|
+
* Format: int64
|
|
563
|
+
* @description 命中的总条数,不只是这一页
|
|
564
|
+
*/
|
|
565
|
+
total: number;
|
|
566
|
+
};
|
|
567
|
+
SetMemberRolesRequestBody: {
|
|
568
|
+
/** @description 这个人应当持有的**全部**角色编码。OWNER 不能出现在这里 */
|
|
569
|
+
roles: string[] | null;
|
|
570
|
+
};
|
|
571
|
+
SetMemberPermissionsRequestBody: {
|
|
572
|
+
/** @description 这个人应当直挂的**全部**权限名,整体替换。角色给的那些不在这里,也不会被这次写入碰到 */
|
|
573
|
+
permissions: string[] | null;
|
|
574
|
+
};
|
|
575
|
+
PolicyResource: {
|
|
576
|
+
/** @description 基础策略是方向 allow、不限资源的那一条,每个成员恰好一条,装的是他的常规角色。改它走 PUT /members/{userId}/roles 和 PUT /members/{userId}/permissions */
|
|
577
|
+
base: boolean;
|
|
578
|
+
/** Format: date-time */
|
|
579
|
+
created_at: string;
|
|
580
|
+
/** @description 给人看的理由。一条附加策略事后最难回答的是「当初为什么开这一条」 */
|
|
581
|
+
description: string;
|
|
582
|
+
/** @enum {string} */
|
|
583
|
+
effect: "allow" | "deny";
|
|
584
|
+
/** Format: uuid */
|
|
585
|
+
id: string;
|
|
586
|
+
/** @description 直挂在这个人身上的权限名,不经过角色 */
|
|
587
|
+
permissions: string[] | null;
|
|
588
|
+
/** @description 为空表示整个项目范围 */
|
|
589
|
+
resources: components["schemas"]["ResourceRefResource"][] | null;
|
|
590
|
+
/** @description 这条策略带上的角色编码 */
|
|
591
|
+
roles: string[] | null;
|
|
592
|
+
/** Format: date-time */
|
|
593
|
+
updated_at: string;
|
|
594
|
+
user_id: string;
|
|
595
|
+
};
|
|
596
|
+
PolicyListResponseBody: {
|
|
597
|
+
items: components["schemas"]["PolicyResource"][] | null;
|
|
598
|
+
};
|
|
599
|
+
AttachPolicyRequestBody: {
|
|
600
|
+
/** @description 给人看的理由。一条附加策略事后最难回答的是「当初为什么开这一条」 */
|
|
601
|
+
description?: string;
|
|
602
|
+
/** @enum {string} */
|
|
603
|
+
effect: "allow" | "deny";
|
|
604
|
+
/** @description 直挂的权限名,用它就不必为一个人临时造一个只有他持有的角色 */
|
|
605
|
+
permissions?: string[] | null;
|
|
606
|
+
/** @description 这条策略只在这些资源上成立。留空只有配合 deny 才讲得通——一条不限资源的 allow 是基础策略,那一条已经有了 */
|
|
607
|
+
resources?: components["schemas"]["ResourceRefResource"][] | null;
|
|
608
|
+
/** @description 必须是这个项目已经定义的角色。OWNER 和 ADMIN 不行——它们是规则而不是权限集合,「限定在三台机器上的所有者」讲不通 */
|
|
609
|
+
roles?: string[] | null;
|
|
610
|
+
/** @description 必须已经是这个项目的成员 */
|
|
611
|
+
user_id: string;
|
|
612
|
+
};
|
|
613
|
+
UpdatePolicyRequestBody: {
|
|
614
|
+
/** @description 给人看的理由。它和这次改动一起替换,不然留下来的会是一句解释着上一个版本的话 */
|
|
615
|
+
description?: string;
|
|
616
|
+
/**
|
|
617
|
+
* @description 必须和这条策略当前的方向一致。方向改不动——那不是「改一条策略」,是一次意思完全相反的授权决定,改它的人多半以为自己在收紧,而读这行数据的下一个人看到的是一条方向和当初授予时不同、说明文字却还是旧的策略。仍然要求发这个字段而不是干脆不收,是因为整体替换的语义是「这就是这条策略现在的全貌」:少一个字段的话,调用方以为自己把 deny 改成了 allow,而服务端默默忽略了它。不一致时返回 PROJECT_POLICY_EFFECT_IMMUTABLE
|
|
618
|
+
* @enum {string}
|
|
619
|
+
*/
|
|
620
|
+
effect: "allow" | "deny";
|
|
621
|
+
/** @description 直挂的权限名,整份替换。没列进来的就是被收回了——它不是往上加一条 */
|
|
622
|
+
permissions?: string[] | null;
|
|
623
|
+
/** @description 这条策略的资源范围,整份替换。范围内容能改,有没有范围改不了:基础策略加不上范围,带范围的也清不空——清空之后它就是基础策略的形状,而那个位置每个成员只有一条 */
|
|
624
|
+
resources?: components["schemas"]["ResourceRefResource"][] | null;
|
|
625
|
+
/** @description 必须是这个项目已经定义的角色,整份替换。和挂上去那次一样不能有 OWNER 或 ADMIN */
|
|
626
|
+
roles?: string[] | null;
|
|
627
|
+
};
|
|
628
|
+
TransferOwnershipRequestBody: {
|
|
629
|
+
/** @description 接手的人必须已经是这个项目的成员 */
|
|
630
|
+
to_user_id: string;
|
|
631
|
+
};
|
|
632
|
+
OwnershipTransferResponseBody: {
|
|
633
|
+
/** @description 原所有者。他保留其余的角色——转让的是所有权,不是把人踢出去 */
|
|
634
|
+
from: components["schemas"]["MemberResource"];
|
|
635
|
+
to: components["schemas"]["MemberResource"];
|
|
636
|
+
};
|
|
637
|
+
RoleResource: {
|
|
638
|
+
/** @description 内置角色不可删、不可改权限:OWNER 和 ADMIN 的语义写在代码里 */
|
|
639
|
+
builtin: boolean;
|
|
640
|
+
code: string;
|
|
641
|
+
/** Format: date-time */
|
|
642
|
+
created_at: string;
|
|
643
|
+
description: string;
|
|
644
|
+
name: string;
|
|
645
|
+
permissions: string[] | null;
|
|
646
|
+
/** Format: date-time */
|
|
647
|
+
updated_at: string;
|
|
648
|
+
};
|
|
649
|
+
RoleListResponseBody: {
|
|
650
|
+
items: components["schemas"]["RoleResource"][] | null;
|
|
651
|
+
};
|
|
652
|
+
CreateRoleRequestBody: {
|
|
653
|
+
/** @description 小写字母开头,可含数字和下划线。建好之后不能改——成员绑定和邀请都指着它 */
|
|
654
|
+
code: string;
|
|
655
|
+
description?: string;
|
|
656
|
+
name: string;
|
|
657
|
+
/** @description 权限名。OwnerOnly 的那几条会被拒绝:绑上去也不会生效 */
|
|
658
|
+
permissions?: string[] | null;
|
|
659
|
+
};
|
|
660
|
+
UpdateRoleRequestBody: {
|
|
661
|
+
description?: string;
|
|
662
|
+
name: string;
|
|
663
|
+
permissions?: string[] | null;
|
|
664
|
+
};
|
|
665
|
+
SSHKeyResource: {
|
|
666
|
+
/** Format: date-time */
|
|
667
|
+
created_at: string;
|
|
668
|
+
fingerprint: string;
|
|
669
|
+
/** @description 平台生成并保管的那把。它的私钥不对外提供 */
|
|
670
|
+
has_private_key: boolean;
|
|
671
|
+
/** Format: uuid */
|
|
672
|
+
id: string;
|
|
673
|
+
key_type: string;
|
|
674
|
+
name: string;
|
|
675
|
+
/** @description 归属人;不给表示这把钥匙归项目本身 */
|
|
676
|
+
owner_user_id?: string;
|
|
677
|
+
public_key: string;
|
|
678
|
+
/** @description 用途标签。平台自己生成的那把是 platform */
|
|
679
|
+
purposes: string[] | null;
|
|
680
|
+
/** @enum {string} */
|
|
681
|
+
status: "ACTIVE" | "REVOKED";
|
|
682
|
+
};
|
|
683
|
+
LengthAwarePageSSHKeyResource: {
|
|
684
|
+
/** @description 这一页的内容 */
|
|
685
|
+
items: components["schemas"]["SSHKeyResource"][];
|
|
686
|
+
/**
|
|
687
|
+
* Format: int64
|
|
688
|
+
* @description 这一页最多几条,回显请求里的值
|
|
689
|
+
*/
|
|
690
|
+
limit: number;
|
|
691
|
+
/**
|
|
692
|
+
* Format: int64
|
|
693
|
+
* @description 跳过了多少条,回显请求里的值
|
|
694
|
+
*/
|
|
695
|
+
offset: number;
|
|
696
|
+
/**
|
|
697
|
+
* Format: int64
|
|
698
|
+
* @description 命中的总条数,不只是这一页
|
|
699
|
+
*/
|
|
700
|
+
total: number;
|
|
701
|
+
};
|
|
702
|
+
CreateSSHKeyRequestBody: {
|
|
703
|
+
name: string;
|
|
704
|
+
/**
|
|
705
|
+
* @description 这把钥匙归谁
|
|
706
|
+
* @default me
|
|
707
|
+
* @enum {string}
|
|
708
|
+
*/
|
|
709
|
+
owner?: "me" | "project";
|
|
710
|
+
/** @description OpenSSH 格式的公钥。类型和指纹从它算出来,都不可改 */
|
|
711
|
+
public_key: string;
|
|
712
|
+
/** @description 用途标签,比如 ci、bastion */
|
|
713
|
+
purposes?: string[] | null;
|
|
714
|
+
};
|
|
715
|
+
RenameSSHKeyRequestBody: {
|
|
716
|
+
name: string;
|
|
717
|
+
};
|
|
718
|
+
};
|
|
719
|
+
responses: never;
|
|
720
|
+
parameters: never;
|
|
721
|
+
requestBodies: never;
|
|
722
|
+
headers: never;
|
|
723
|
+
pathItems: never;
|
|
724
|
+
}
|
|
725
|
+
export type $defs = Record<string, never>;
|
|
726
|
+
export interface operations {
|
|
727
|
+
"list-permissions": {
|
|
728
|
+
parameters: {
|
|
729
|
+
query?: never;
|
|
730
|
+
header?: never;
|
|
731
|
+
path?: never;
|
|
732
|
+
cookie?: never;
|
|
733
|
+
};
|
|
734
|
+
requestBody?: never;
|
|
735
|
+
responses: {
|
|
736
|
+
/** @description OK */
|
|
737
|
+
200: {
|
|
738
|
+
headers: {
|
|
739
|
+
[name: string]: unknown;
|
|
740
|
+
};
|
|
741
|
+
content: {
|
|
742
|
+
"application/json": components["schemas"]["CatalogListResponseBody"];
|
|
743
|
+
};
|
|
744
|
+
};
|
|
745
|
+
/** @description Error */
|
|
746
|
+
default: {
|
|
747
|
+
headers: {
|
|
748
|
+
[name: string]: unknown;
|
|
749
|
+
};
|
|
750
|
+
content: {
|
|
751
|
+
"application/json": components["schemas"]["Error"];
|
|
752
|
+
};
|
|
753
|
+
};
|
|
754
|
+
};
|
|
755
|
+
};
|
|
756
|
+
"get-project": {
|
|
757
|
+
parameters: {
|
|
758
|
+
query?: never;
|
|
759
|
+
header?: never;
|
|
760
|
+
path?: never;
|
|
761
|
+
cookie?: never;
|
|
762
|
+
};
|
|
763
|
+
requestBody?: never;
|
|
764
|
+
responses: {
|
|
765
|
+
/** @description OK */
|
|
766
|
+
200: {
|
|
767
|
+
headers: {
|
|
768
|
+
[name: string]: unknown;
|
|
769
|
+
};
|
|
770
|
+
content: {
|
|
771
|
+
"application/json": components["schemas"]["ProjectAccessResource"];
|
|
772
|
+
};
|
|
773
|
+
};
|
|
774
|
+
/** @description Error */
|
|
775
|
+
default: {
|
|
776
|
+
headers: {
|
|
777
|
+
[name: string]: unknown;
|
|
778
|
+
};
|
|
779
|
+
content: {
|
|
780
|
+
"application/json": components["schemas"]["Error"];
|
|
781
|
+
};
|
|
782
|
+
};
|
|
783
|
+
};
|
|
784
|
+
};
|
|
785
|
+
"delete-project": {
|
|
786
|
+
parameters: {
|
|
787
|
+
query?: never;
|
|
788
|
+
header?: never;
|
|
789
|
+
path?: never;
|
|
790
|
+
cookie?: never;
|
|
791
|
+
};
|
|
792
|
+
requestBody?: never;
|
|
793
|
+
responses: {
|
|
794
|
+
/** @description OK */
|
|
795
|
+
200: {
|
|
796
|
+
headers: {
|
|
797
|
+
[name: string]: unknown;
|
|
798
|
+
};
|
|
799
|
+
content: {
|
|
800
|
+
"application/json": components["schemas"]["ProjectAccessResource"];
|
|
801
|
+
};
|
|
802
|
+
};
|
|
803
|
+
/** @description Error */
|
|
804
|
+
default: {
|
|
805
|
+
headers: {
|
|
806
|
+
[name: string]: unknown;
|
|
807
|
+
};
|
|
808
|
+
content: {
|
|
809
|
+
"application/json": components["schemas"]["Error"];
|
|
810
|
+
};
|
|
811
|
+
};
|
|
812
|
+
};
|
|
813
|
+
};
|
|
814
|
+
"update-project": {
|
|
815
|
+
parameters: {
|
|
816
|
+
query?: never;
|
|
817
|
+
header?: never;
|
|
818
|
+
path?: never;
|
|
819
|
+
cookie?: never;
|
|
820
|
+
};
|
|
821
|
+
requestBody: {
|
|
822
|
+
content: {
|
|
823
|
+
"application/json": components["schemas"]["UpdateProjectRequestBody"];
|
|
824
|
+
};
|
|
825
|
+
};
|
|
826
|
+
responses: {
|
|
827
|
+
/** @description OK */
|
|
828
|
+
200: {
|
|
829
|
+
headers: {
|
|
830
|
+
[name: string]: unknown;
|
|
831
|
+
};
|
|
832
|
+
content: {
|
|
833
|
+
"application/json": components["schemas"]["ProjectAccessResource"];
|
|
834
|
+
};
|
|
835
|
+
};
|
|
836
|
+
/** @description Error */
|
|
837
|
+
default: {
|
|
838
|
+
headers: {
|
|
839
|
+
[name: string]: unknown;
|
|
840
|
+
};
|
|
841
|
+
content: {
|
|
842
|
+
"application/json": components["schemas"]["Error"];
|
|
843
|
+
};
|
|
844
|
+
};
|
|
845
|
+
};
|
|
846
|
+
};
|
|
847
|
+
"get-project-membership": {
|
|
848
|
+
parameters: {
|
|
849
|
+
query?: never;
|
|
850
|
+
header?: never;
|
|
851
|
+
path?: never;
|
|
852
|
+
cookie?: never;
|
|
853
|
+
};
|
|
854
|
+
requestBody?: never;
|
|
855
|
+
responses: {
|
|
856
|
+
/** @description OK */
|
|
857
|
+
200: {
|
|
858
|
+
headers: {
|
|
859
|
+
[name: string]: unknown;
|
|
860
|
+
};
|
|
861
|
+
content: {
|
|
862
|
+
"application/json": components["schemas"]["MembershipResource"];
|
|
863
|
+
};
|
|
864
|
+
};
|
|
865
|
+
/** @description Error */
|
|
866
|
+
default: {
|
|
867
|
+
headers: {
|
|
868
|
+
[name: string]: unknown;
|
|
869
|
+
};
|
|
870
|
+
content: {
|
|
871
|
+
"application/json": components["schemas"]["Error"];
|
|
872
|
+
};
|
|
873
|
+
};
|
|
874
|
+
};
|
|
875
|
+
};
|
|
876
|
+
"list-project-invitations": {
|
|
877
|
+
parameters: {
|
|
878
|
+
query?: {
|
|
879
|
+
/** @description 这一页最多返回多少条 */
|
|
880
|
+
limit?: number;
|
|
881
|
+
/** @description 跳过多少条。要翻得更深请改用游标翻页的接口 */
|
|
882
|
+
offset?: number;
|
|
883
|
+
};
|
|
884
|
+
header?: never;
|
|
885
|
+
path?: never;
|
|
886
|
+
cookie?: never;
|
|
887
|
+
};
|
|
888
|
+
requestBody?: never;
|
|
889
|
+
responses: {
|
|
890
|
+
/** @description OK */
|
|
891
|
+
200: {
|
|
892
|
+
headers: {
|
|
893
|
+
[name: string]: unknown;
|
|
894
|
+
};
|
|
895
|
+
content: {
|
|
896
|
+
"application/json": components["schemas"]["LengthAwarePageInvitationResource"];
|
|
897
|
+
};
|
|
898
|
+
};
|
|
899
|
+
/** @description Error */
|
|
900
|
+
default: {
|
|
901
|
+
headers: {
|
|
902
|
+
[name: string]: unknown;
|
|
903
|
+
};
|
|
904
|
+
content: {
|
|
905
|
+
"application/json": components["schemas"]["Error"];
|
|
906
|
+
};
|
|
907
|
+
};
|
|
908
|
+
};
|
|
909
|
+
};
|
|
910
|
+
"issue-invitation": {
|
|
911
|
+
parameters: {
|
|
912
|
+
query?: never;
|
|
913
|
+
header?: never;
|
|
914
|
+
path?: never;
|
|
915
|
+
cookie?: never;
|
|
916
|
+
};
|
|
917
|
+
requestBody: {
|
|
918
|
+
content: {
|
|
919
|
+
"application/json": components["schemas"]["IssueInvitationRequestBody"];
|
|
920
|
+
};
|
|
921
|
+
};
|
|
922
|
+
responses: {
|
|
923
|
+
/** @description Created */
|
|
924
|
+
201: {
|
|
925
|
+
headers: {
|
|
926
|
+
[name: string]: unknown;
|
|
927
|
+
};
|
|
928
|
+
content: {
|
|
929
|
+
"application/json": components["schemas"]["IssuedInvitationResponseBody"];
|
|
930
|
+
};
|
|
931
|
+
};
|
|
932
|
+
/** @description Error */
|
|
933
|
+
default: {
|
|
934
|
+
headers: {
|
|
935
|
+
[name: string]: unknown;
|
|
936
|
+
};
|
|
937
|
+
content: {
|
|
938
|
+
"application/json": components["schemas"]["Error"];
|
|
939
|
+
};
|
|
940
|
+
};
|
|
941
|
+
};
|
|
942
|
+
};
|
|
943
|
+
"revoke-invitation": {
|
|
944
|
+
parameters: {
|
|
945
|
+
query?: never;
|
|
946
|
+
header?: never;
|
|
947
|
+
path: {
|
|
948
|
+
invitationId: string;
|
|
949
|
+
};
|
|
950
|
+
cookie?: never;
|
|
951
|
+
};
|
|
952
|
+
requestBody?: never;
|
|
953
|
+
responses: {
|
|
954
|
+
/** @description No Content */
|
|
955
|
+
204: {
|
|
956
|
+
headers: {
|
|
957
|
+
[name: string]: unknown;
|
|
958
|
+
};
|
|
959
|
+
content?: never;
|
|
960
|
+
};
|
|
961
|
+
/** @description Error */
|
|
962
|
+
default: {
|
|
963
|
+
headers: {
|
|
964
|
+
[name: string]: unknown;
|
|
965
|
+
};
|
|
966
|
+
content: {
|
|
967
|
+
"application/json": components["schemas"]["Error"];
|
|
968
|
+
};
|
|
969
|
+
};
|
|
970
|
+
};
|
|
971
|
+
};
|
|
972
|
+
"batch-get-members": {
|
|
973
|
+
parameters: {
|
|
974
|
+
query?: never;
|
|
975
|
+
header?: never;
|
|
976
|
+
path?: never;
|
|
977
|
+
cookie?: never;
|
|
978
|
+
};
|
|
979
|
+
requestBody: {
|
|
980
|
+
content: {
|
|
981
|
+
"application/json": components["schemas"]["BatchGetMembersRequestBody"];
|
|
982
|
+
};
|
|
983
|
+
};
|
|
984
|
+
responses: {
|
|
985
|
+
/** @description OK */
|
|
986
|
+
200: {
|
|
987
|
+
headers: {
|
|
988
|
+
[name: string]: unknown;
|
|
989
|
+
};
|
|
990
|
+
content: {
|
|
991
|
+
"application/json": components["schemas"]["BatchGetMembersResponseBody"];
|
|
992
|
+
};
|
|
993
|
+
};
|
|
994
|
+
/** @description Error */
|
|
995
|
+
default: {
|
|
996
|
+
headers: {
|
|
997
|
+
[name: string]: unknown;
|
|
998
|
+
};
|
|
999
|
+
content: {
|
|
1000
|
+
"application/json": components["schemas"]["Error"];
|
|
1001
|
+
};
|
|
1002
|
+
};
|
|
1003
|
+
};
|
|
1004
|
+
};
|
|
1005
|
+
"list-members": {
|
|
1006
|
+
parameters: {
|
|
1007
|
+
query?: {
|
|
1008
|
+
/** @description 这一页最多返回多少条 */
|
|
1009
|
+
limit?: number;
|
|
1010
|
+
/** @description 跳过多少条。要翻得更深请改用游标翻页的接口 */
|
|
1011
|
+
offset?: number;
|
|
1012
|
+
/** @description 按用户 ID、邮箱或姓名模糊匹配 */
|
|
1013
|
+
keyword?: string;
|
|
1014
|
+
};
|
|
1015
|
+
header?: never;
|
|
1016
|
+
path?: never;
|
|
1017
|
+
cookie?: never;
|
|
1018
|
+
};
|
|
1019
|
+
requestBody?: never;
|
|
1020
|
+
responses: {
|
|
1021
|
+
/** @description OK */
|
|
1022
|
+
200: {
|
|
1023
|
+
headers: {
|
|
1024
|
+
[name: string]: unknown;
|
|
1025
|
+
};
|
|
1026
|
+
content: {
|
|
1027
|
+
"application/json": components["schemas"]["LengthAwarePageMemberResource"];
|
|
1028
|
+
};
|
|
1029
|
+
};
|
|
1030
|
+
/** @description Error */
|
|
1031
|
+
default: {
|
|
1032
|
+
headers: {
|
|
1033
|
+
[name: string]: unknown;
|
|
1034
|
+
};
|
|
1035
|
+
content: {
|
|
1036
|
+
"application/json": components["schemas"]["Error"];
|
|
1037
|
+
};
|
|
1038
|
+
};
|
|
1039
|
+
};
|
|
1040
|
+
};
|
|
1041
|
+
"remove-member": {
|
|
1042
|
+
parameters: {
|
|
1043
|
+
query?: never;
|
|
1044
|
+
header?: never;
|
|
1045
|
+
path: {
|
|
1046
|
+
userId: string;
|
|
1047
|
+
};
|
|
1048
|
+
cookie?: never;
|
|
1049
|
+
};
|
|
1050
|
+
requestBody?: never;
|
|
1051
|
+
responses: {
|
|
1052
|
+
/** @description No Content */
|
|
1053
|
+
204: {
|
|
1054
|
+
headers: {
|
|
1055
|
+
[name: string]: unknown;
|
|
1056
|
+
};
|
|
1057
|
+
content?: never;
|
|
1058
|
+
};
|
|
1059
|
+
/** @description Error */
|
|
1060
|
+
default: {
|
|
1061
|
+
headers: {
|
|
1062
|
+
[name: string]: unknown;
|
|
1063
|
+
};
|
|
1064
|
+
content: {
|
|
1065
|
+
"application/json": components["schemas"]["Error"];
|
|
1066
|
+
};
|
|
1067
|
+
};
|
|
1068
|
+
};
|
|
1069
|
+
};
|
|
1070
|
+
"set-member-roles": {
|
|
1071
|
+
parameters: {
|
|
1072
|
+
query?: never;
|
|
1073
|
+
header?: never;
|
|
1074
|
+
path: {
|
|
1075
|
+
userId: string;
|
|
1076
|
+
};
|
|
1077
|
+
cookie?: never;
|
|
1078
|
+
};
|
|
1079
|
+
requestBody: {
|
|
1080
|
+
content: {
|
|
1081
|
+
"application/json": components["schemas"]["SetMemberRolesRequestBody"];
|
|
1082
|
+
};
|
|
1083
|
+
};
|
|
1084
|
+
responses: {
|
|
1085
|
+
/** @description OK */
|
|
1086
|
+
200: {
|
|
1087
|
+
headers: {
|
|
1088
|
+
[name: string]: unknown;
|
|
1089
|
+
};
|
|
1090
|
+
content: {
|
|
1091
|
+
"application/json": components["schemas"]["MemberResource"];
|
|
1092
|
+
};
|
|
1093
|
+
};
|
|
1094
|
+
/** @description Error */
|
|
1095
|
+
default: {
|
|
1096
|
+
headers: {
|
|
1097
|
+
[name: string]: unknown;
|
|
1098
|
+
};
|
|
1099
|
+
content: {
|
|
1100
|
+
"application/json": components["schemas"]["Error"];
|
|
1101
|
+
};
|
|
1102
|
+
};
|
|
1103
|
+
};
|
|
1104
|
+
};
|
|
1105
|
+
"set-member-permissions": {
|
|
1106
|
+
parameters: {
|
|
1107
|
+
query?: never;
|
|
1108
|
+
header?: never;
|
|
1109
|
+
path: {
|
|
1110
|
+
userId: string;
|
|
1111
|
+
};
|
|
1112
|
+
cookie?: never;
|
|
1113
|
+
};
|
|
1114
|
+
requestBody: {
|
|
1115
|
+
content: {
|
|
1116
|
+
"application/json": components["schemas"]["SetMemberPermissionsRequestBody"];
|
|
1117
|
+
};
|
|
1118
|
+
};
|
|
1119
|
+
responses: {
|
|
1120
|
+
/** @description OK */
|
|
1121
|
+
200: {
|
|
1122
|
+
headers: {
|
|
1123
|
+
[name: string]: unknown;
|
|
1124
|
+
};
|
|
1125
|
+
content: {
|
|
1126
|
+
"application/json": components["schemas"]["PolicyResource"];
|
|
1127
|
+
};
|
|
1128
|
+
};
|
|
1129
|
+
/** @description Error */
|
|
1130
|
+
default: {
|
|
1131
|
+
headers: {
|
|
1132
|
+
[name: string]: unknown;
|
|
1133
|
+
};
|
|
1134
|
+
content: {
|
|
1135
|
+
"application/json": components["schemas"]["Error"];
|
|
1136
|
+
};
|
|
1137
|
+
};
|
|
1138
|
+
};
|
|
1139
|
+
};
|
|
1140
|
+
"list-policies": {
|
|
1141
|
+
parameters: {
|
|
1142
|
+
query?: {
|
|
1143
|
+
/** @description 只看这个人身上的。不传表示整个项目的 */
|
|
1144
|
+
userId?: string;
|
|
1145
|
+
};
|
|
1146
|
+
header?: never;
|
|
1147
|
+
path?: never;
|
|
1148
|
+
cookie?: never;
|
|
1149
|
+
};
|
|
1150
|
+
requestBody?: never;
|
|
1151
|
+
responses: {
|
|
1152
|
+
/** @description OK */
|
|
1153
|
+
200: {
|
|
1154
|
+
headers: {
|
|
1155
|
+
[name: string]: unknown;
|
|
1156
|
+
};
|
|
1157
|
+
content: {
|
|
1158
|
+
"application/json": components["schemas"]["PolicyListResponseBody"];
|
|
1159
|
+
};
|
|
1160
|
+
};
|
|
1161
|
+
/** @description Error */
|
|
1162
|
+
default: {
|
|
1163
|
+
headers: {
|
|
1164
|
+
[name: string]: unknown;
|
|
1165
|
+
};
|
|
1166
|
+
content: {
|
|
1167
|
+
"application/json": components["schemas"]["Error"];
|
|
1168
|
+
};
|
|
1169
|
+
};
|
|
1170
|
+
};
|
|
1171
|
+
};
|
|
1172
|
+
"attach-policy": {
|
|
1173
|
+
parameters: {
|
|
1174
|
+
query?: never;
|
|
1175
|
+
header?: never;
|
|
1176
|
+
path?: never;
|
|
1177
|
+
cookie?: never;
|
|
1178
|
+
};
|
|
1179
|
+
requestBody: {
|
|
1180
|
+
content: {
|
|
1181
|
+
"application/json": components["schemas"]["AttachPolicyRequestBody"];
|
|
1182
|
+
};
|
|
1183
|
+
};
|
|
1184
|
+
responses: {
|
|
1185
|
+
/** @description Created */
|
|
1186
|
+
201: {
|
|
1187
|
+
headers: {
|
|
1188
|
+
[name: string]: unknown;
|
|
1189
|
+
};
|
|
1190
|
+
content: {
|
|
1191
|
+
"application/json": components["schemas"]["PolicyResource"];
|
|
1192
|
+
};
|
|
1193
|
+
};
|
|
1194
|
+
/** @description Error */
|
|
1195
|
+
default: {
|
|
1196
|
+
headers: {
|
|
1197
|
+
[name: string]: unknown;
|
|
1198
|
+
};
|
|
1199
|
+
content: {
|
|
1200
|
+
"application/json": components["schemas"]["Error"];
|
|
1201
|
+
};
|
|
1202
|
+
};
|
|
1203
|
+
};
|
|
1204
|
+
};
|
|
1205
|
+
"get-policy": {
|
|
1206
|
+
parameters: {
|
|
1207
|
+
query?: never;
|
|
1208
|
+
header?: never;
|
|
1209
|
+
path: {
|
|
1210
|
+
policyId: string;
|
|
1211
|
+
};
|
|
1212
|
+
cookie?: never;
|
|
1213
|
+
};
|
|
1214
|
+
requestBody?: never;
|
|
1215
|
+
responses: {
|
|
1216
|
+
/** @description OK */
|
|
1217
|
+
200: {
|
|
1218
|
+
headers: {
|
|
1219
|
+
[name: string]: unknown;
|
|
1220
|
+
};
|
|
1221
|
+
content: {
|
|
1222
|
+
"application/json": components["schemas"]["PolicyResource"];
|
|
1223
|
+
};
|
|
1224
|
+
};
|
|
1225
|
+
/** @description Error */
|
|
1226
|
+
default: {
|
|
1227
|
+
headers: {
|
|
1228
|
+
[name: string]: unknown;
|
|
1229
|
+
};
|
|
1230
|
+
content: {
|
|
1231
|
+
"application/json": components["schemas"]["Error"];
|
|
1232
|
+
};
|
|
1233
|
+
};
|
|
1234
|
+
};
|
|
1235
|
+
};
|
|
1236
|
+
"update-policy": {
|
|
1237
|
+
parameters: {
|
|
1238
|
+
query?: never;
|
|
1239
|
+
header?: never;
|
|
1240
|
+
path: {
|
|
1241
|
+
policyId: string;
|
|
1242
|
+
};
|
|
1243
|
+
cookie?: never;
|
|
1244
|
+
};
|
|
1245
|
+
requestBody: {
|
|
1246
|
+
content: {
|
|
1247
|
+
"application/json": components["schemas"]["UpdatePolicyRequestBody"];
|
|
1248
|
+
};
|
|
1249
|
+
};
|
|
1250
|
+
responses: {
|
|
1251
|
+
/** @description OK */
|
|
1252
|
+
200: {
|
|
1253
|
+
headers: {
|
|
1254
|
+
[name: string]: unknown;
|
|
1255
|
+
};
|
|
1256
|
+
content: {
|
|
1257
|
+
"application/json": components["schemas"]["PolicyResource"];
|
|
1258
|
+
};
|
|
1259
|
+
};
|
|
1260
|
+
/** @description Error */
|
|
1261
|
+
default: {
|
|
1262
|
+
headers: {
|
|
1263
|
+
[name: string]: unknown;
|
|
1264
|
+
};
|
|
1265
|
+
content: {
|
|
1266
|
+
"application/json": components["schemas"]["Error"];
|
|
1267
|
+
};
|
|
1268
|
+
};
|
|
1269
|
+
};
|
|
1270
|
+
};
|
|
1271
|
+
"detach-policy": {
|
|
1272
|
+
parameters: {
|
|
1273
|
+
query?: never;
|
|
1274
|
+
header?: never;
|
|
1275
|
+
path: {
|
|
1276
|
+
policyId: string;
|
|
1277
|
+
};
|
|
1278
|
+
cookie?: never;
|
|
1279
|
+
};
|
|
1280
|
+
requestBody?: never;
|
|
1281
|
+
responses: {
|
|
1282
|
+
/** @description No Content */
|
|
1283
|
+
204: {
|
|
1284
|
+
headers: {
|
|
1285
|
+
[name: string]: unknown;
|
|
1286
|
+
};
|
|
1287
|
+
content?: never;
|
|
1288
|
+
};
|
|
1289
|
+
/** @description Error */
|
|
1290
|
+
default: {
|
|
1291
|
+
headers: {
|
|
1292
|
+
[name: string]: unknown;
|
|
1293
|
+
};
|
|
1294
|
+
content: {
|
|
1295
|
+
"application/json": components["schemas"]["Error"];
|
|
1296
|
+
};
|
|
1297
|
+
};
|
|
1298
|
+
};
|
|
1299
|
+
};
|
|
1300
|
+
"transfer-project-ownership": {
|
|
1301
|
+
parameters: {
|
|
1302
|
+
query?: never;
|
|
1303
|
+
header?: never;
|
|
1304
|
+
path?: never;
|
|
1305
|
+
cookie?: never;
|
|
1306
|
+
};
|
|
1307
|
+
requestBody: {
|
|
1308
|
+
content: {
|
|
1309
|
+
"application/json": components["schemas"]["TransferOwnershipRequestBody"];
|
|
1310
|
+
};
|
|
1311
|
+
};
|
|
1312
|
+
responses: {
|
|
1313
|
+
/** @description OK */
|
|
1314
|
+
200: {
|
|
1315
|
+
headers: {
|
|
1316
|
+
[name: string]: unknown;
|
|
1317
|
+
};
|
|
1318
|
+
content: {
|
|
1319
|
+
"application/json": components["schemas"]["OwnershipTransferResponseBody"];
|
|
1320
|
+
};
|
|
1321
|
+
};
|
|
1322
|
+
/** @description Error */
|
|
1323
|
+
default: {
|
|
1324
|
+
headers: {
|
|
1325
|
+
[name: string]: unknown;
|
|
1326
|
+
};
|
|
1327
|
+
content: {
|
|
1328
|
+
"application/json": components["schemas"]["Error"];
|
|
1329
|
+
};
|
|
1330
|
+
};
|
|
1331
|
+
};
|
|
1332
|
+
};
|
|
1333
|
+
"list-roles": {
|
|
1334
|
+
parameters: {
|
|
1335
|
+
query?: never;
|
|
1336
|
+
header?: never;
|
|
1337
|
+
path?: never;
|
|
1338
|
+
cookie?: never;
|
|
1339
|
+
};
|
|
1340
|
+
requestBody?: never;
|
|
1341
|
+
responses: {
|
|
1342
|
+
/** @description OK */
|
|
1343
|
+
200: {
|
|
1344
|
+
headers: {
|
|
1345
|
+
[name: string]: unknown;
|
|
1346
|
+
};
|
|
1347
|
+
content: {
|
|
1348
|
+
"application/json": components["schemas"]["RoleListResponseBody"];
|
|
1349
|
+
};
|
|
1350
|
+
};
|
|
1351
|
+
/** @description Error */
|
|
1352
|
+
default: {
|
|
1353
|
+
headers: {
|
|
1354
|
+
[name: string]: unknown;
|
|
1355
|
+
};
|
|
1356
|
+
content: {
|
|
1357
|
+
"application/json": components["schemas"]["Error"];
|
|
1358
|
+
};
|
|
1359
|
+
};
|
|
1360
|
+
};
|
|
1361
|
+
};
|
|
1362
|
+
"create-role": {
|
|
1363
|
+
parameters: {
|
|
1364
|
+
query?: never;
|
|
1365
|
+
header?: never;
|
|
1366
|
+
path?: never;
|
|
1367
|
+
cookie?: never;
|
|
1368
|
+
};
|
|
1369
|
+
requestBody: {
|
|
1370
|
+
content: {
|
|
1371
|
+
"application/json": components["schemas"]["CreateRoleRequestBody"];
|
|
1372
|
+
};
|
|
1373
|
+
};
|
|
1374
|
+
responses: {
|
|
1375
|
+
/** @description Created */
|
|
1376
|
+
201: {
|
|
1377
|
+
headers: {
|
|
1378
|
+
[name: string]: unknown;
|
|
1379
|
+
};
|
|
1380
|
+
content: {
|
|
1381
|
+
"application/json": components["schemas"]["RoleResource"];
|
|
1382
|
+
};
|
|
1383
|
+
};
|
|
1384
|
+
/** @description Error */
|
|
1385
|
+
default: {
|
|
1386
|
+
headers: {
|
|
1387
|
+
[name: string]: unknown;
|
|
1388
|
+
};
|
|
1389
|
+
content: {
|
|
1390
|
+
"application/json": components["schemas"]["Error"];
|
|
1391
|
+
};
|
|
1392
|
+
};
|
|
1393
|
+
};
|
|
1394
|
+
};
|
|
1395
|
+
"get-role": {
|
|
1396
|
+
parameters: {
|
|
1397
|
+
query?: never;
|
|
1398
|
+
header?: never;
|
|
1399
|
+
path: {
|
|
1400
|
+
code: string;
|
|
1401
|
+
};
|
|
1402
|
+
cookie?: never;
|
|
1403
|
+
};
|
|
1404
|
+
requestBody?: never;
|
|
1405
|
+
responses: {
|
|
1406
|
+
/** @description OK */
|
|
1407
|
+
200: {
|
|
1408
|
+
headers: {
|
|
1409
|
+
[name: string]: unknown;
|
|
1410
|
+
};
|
|
1411
|
+
content: {
|
|
1412
|
+
"application/json": components["schemas"]["RoleResource"];
|
|
1413
|
+
};
|
|
1414
|
+
};
|
|
1415
|
+
/** @description Error */
|
|
1416
|
+
default: {
|
|
1417
|
+
headers: {
|
|
1418
|
+
[name: string]: unknown;
|
|
1419
|
+
};
|
|
1420
|
+
content: {
|
|
1421
|
+
"application/json": components["schemas"]["Error"];
|
|
1422
|
+
};
|
|
1423
|
+
};
|
|
1424
|
+
};
|
|
1425
|
+
};
|
|
1426
|
+
"update-role": {
|
|
1427
|
+
parameters: {
|
|
1428
|
+
query?: never;
|
|
1429
|
+
header?: never;
|
|
1430
|
+
path: {
|
|
1431
|
+
code: string;
|
|
1432
|
+
};
|
|
1433
|
+
cookie?: never;
|
|
1434
|
+
};
|
|
1435
|
+
requestBody: {
|
|
1436
|
+
content: {
|
|
1437
|
+
"application/json": components["schemas"]["UpdateRoleRequestBody"];
|
|
1438
|
+
};
|
|
1439
|
+
};
|
|
1440
|
+
responses: {
|
|
1441
|
+
/** @description OK */
|
|
1442
|
+
200: {
|
|
1443
|
+
headers: {
|
|
1444
|
+
[name: string]: unknown;
|
|
1445
|
+
};
|
|
1446
|
+
content: {
|
|
1447
|
+
"application/json": components["schemas"]["RoleResource"];
|
|
1448
|
+
};
|
|
1449
|
+
};
|
|
1450
|
+
/** @description Error */
|
|
1451
|
+
default: {
|
|
1452
|
+
headers: {
|
|
1453
|
+
[name: string]: unknown;
|
|
1454
|
+
};
|
|
1455
|
+
content: {
|
|
1456
|
+
"application/json": components["schemas"]["Error"];
|
|
1457
|
+
};
|
|
1458
|
+
};
|
|
1459
|
+
};
|
|
1460
|
+
};
|
|
1461
|
+
"delete-role": {
|
|
1462
|
+
parameters: {
|
|
1463
|
+
query?: never;
|
|
1464
|
+
header?: never;
|
|
1465
|
+
path: {
|
|
1466
|
+
code: string;
|
|
1467
|
+
};
|
|
1468
|
+
cookie?: never;
|
|
1469
|
+
};
|
|
1470
|
+
requestBody?: never;
|
|
1471
|
+
responses: {
|
|
1472
|
+
/** @description No Content */
|
|
1473
|
+
204: {
|
|
1474
|
+
headers: {
|
|
1475
|
+
[name: string]: unknown;
|
|
1476
|
+
};
|
|
1477
|
+
content?: never;
|
|
1478
|
+
};
|
|
1479
|
+
/** @description Error */
|
|
1480
|
+
default: {
|
|
1481
|
+
headers: {
|
|
1482
|
+
[name: string]: unknown;
|
|
1483
|
+
};
|
|
1484
|
+
content: {
|
|
1485
|
+
"application/json": components["schemas"]["Error"];
|
|
1486
|
+
};
|
|
1487
|
+
};
|
|
1488
|
+
};
|
|
1489
|
+
};
|
|
1490
|
+
"list-ssh-keys": {
|
|
1491
|
+
parameters: {
|
|
1492
|
+
query?: {
|
|
1493
|
+
/** @description 这一页最多返回多少条 */
|
|
1494
|
+
limit?: number;
|
|
1495
|
+
/** @description 跳过多少条。要翻得更深请改用游标翻页的接口 */
|
|
1496
|
+
offset?: number;
|
|
1497
|
+
/** @description 不传时两种都返回 */
|
|
1498
|
+
status?: "ACTIVE" | "REVOKED";
|
|
1499
|
+
/** @description 只列挂着这个用途的钥匙。平台自己生成的那把是 platform */
|
|
1500
|
+
purpose?: string;
|
|
1501
|
+
};
|
|
1502
|
+
header?: never;
|
|
1503
|
+
path?: never;
|
|
1504
|
+
cookie?: never;
|
|
1505
|
+
};
|
|
1506
|
+
requestBody?: never;
|
|
1507
|
+
responses: {
|
|
1508
|
+
/** @description OK */
|
|
1509
|
+
200: {
|
|
1510
|
+
headers: {
|
|
1511
|
+
[name: string]: unknown;
|
|
1512
|
+
};
|
|
1513
|
+
content: {
|
|
1514
|
+
"application/json": components["schemas"]["LengthAwarePageSSHKeyResource"];
|
|
1515
|
+
};
|
|
1516
|
+
};
|
|
1517
|
+
/** @description Error */
|
|
1518
|
+
default: {
|
|
1519
|
+
headers: {
|
|
1520
|
+
[name: string]: unknown;
|
|
1521
|
+
};
|
|
1522
|
+
content: {
|
|
1523
|
+
"application/json": components["schemas"]["Error"];
|
|
1524
|
+
};
|
|
1525
|
+
};
|
|
1526
|
+
};
|
|
1527
|
+
};
|
|
1528
|
+
"create-ssh-key": {
|
|
1529
|
+
parameters: {
|
|
1530
|
+
query?: never;
|
|
1531
|
+
header?: never;
|
|
1532
|
+
path?: never;
|
|
1533
|
+
cookie?: never;
|
|
1534
|
+
};
|
|
1535
|
+
requestBody: {
|
|
1536
|
+
content: {
|
|
1537
|
+
"application/json": components["schemas"]["CreateSSHKeyRequestBody"];
|
|
1538
|
+
};
|
|
1539
|
+
};
|
|
1540
|
+
responses: {
|
|
1541
|
+
/** @description Created */
|
|
1542
|
+
201: {
|
|
1543
|
+
headers: {
|
|
1544
|
+
[name: string]: unknown;
|
|
1545
|
+
};
|
|
1546
|
+
content: {
|
|
1547
|
+
"application/json": components["schemas"]["SSHKeyResource"];
|
|
1548
|
+
};
|
|
1549
|
+
};
|
|
1550
|
+
/** @description Error */
|
|
1551
|
+
default: {
|
|
1552
|
+
headers: {
|
|
1553
|
+
[name: string]: unknown;
|
|
1554
|
+
};
|
|
1555
|
+
content: {
|
|
1556
|
+
"application/json": components["schemas"]["Error"];
|
|
1557
|
+
};
|
|
1558
|
+
};
|
|
1559
|
+
};
|
|
1560
|
+
};
|
|
1561
|
+
"get-ssh-key": {
|
|
1562
|
+
parameters: {
|
|
1563
|
+
query?: never;
|
|
1564
|
+
header?: never;
|
|
1565
|
+
path: {
|
|
1566
|
+
keyId: string;
|
|
1567
|
+
};
|
|
1568
|
+
cookie?: never;
|
|
1569
|
+
};
|
|
1570
|
+
requestBody?: never;
|
|
1571
|
+
responses: {
|
|
1572
|
+
/** @description OK */
|
|
1573
|
+
200: {
|
|
1574
|
+
headers: {
|
|
1575
|
+
[name: string]: unknown;
|
|
1576
|
+
};
|
|
1577
|
+
content: {
|
|
1578
|
+
"application/json": components["schemas"]["SSHKeyResource"];
|
|
1579
|
+
};
|
|
1580
|
+
};
|
|
1581
|
+
/** @description Error */
|
|
1582
|
+
default: {
|
|
1583
|
+
headers: {
|
|
1584
|
+
[name: string]: unknown;
|
|
1585
|
+
};
|
|
1586
|
+
content: {
|
|
1587
|
+
"application/json": components["schemas"]["Error"];
|
|
1588
|
+
};
|
|
1589
|
+
};
|
|
1590
|
+
};
|
|
1591
|
+
};
|
|
1592
|
+
"revoke-ssh-key": {
|
|
1593
|
+
parameters: {
|
|
1594
|
+
query?: never;
|
|
1595
|
+
header?: never;
|
|
1596
|
+
path: {
|
|
1597
|
+
keyId: string;
|
|
1598
|
+
};
|
|
1599
|
+
cookie?: never;
|
|
1600
|
+
};
|
|
1601
|
+
requestBody?: never;
|
|
1602
|
+
responses: {
|
|
1603
|
+
/** @description OK */
|
|
1604
|
+
200: {
|
|
1605
|
+
headers: {
|
|
1606
|
+
[name: string]: unknown;
|
|
1607
|
+
};
|
|
1608
|
+
content: {
|
|
1609
|
+
"application/json": components["schemas"]["SSHKeyResource"];
|
|
1610
|
+
};
|
|
1611
|
+
};
|
|
1612
|
+
/** @description Error */
|
|
1613
|
+
default: {
|
|
1614
|
+
headers: {
|
|
1615
|
+
[name: string]: unknown;
|
|
1616
|
+
};
|
|
1617
|
+
content: {
|
|
1618
|
+
"application/json": components["schemas"]["Error"];
|
|
1619
|
+
};
|
|
1620
|
+
};
|
|
1621
|
+
};
|
|
1622
|
+
};
|
|
1623
|
+
"rename-ssh-key": {
|
|
1624
|
+
parameters: {
|
|
1625
|
+
query?: never;
|
|
1626
|
+
header?: never;
|
|
1627
|
+
path: {
|
|
1628
|
+
keyId: string;
|
|
1629
|
+
};
|
|
1630
|
+
cookie?: never;
|
|
1631
|
+
};
|
|
1632
|
+
requestBody: {
|
|
1633
|
+
content: {
|
|
1634
|
+
"application/json": components["schemas"]["RenameSSHKeyRequestBody"];
|
|
1635
|
+
};
|
|
1636
|
+
};
|
|
1637
|
+
responses: {
|
|
1638
|
+
/** @description OK */
|
|
1639
|
+
200: {
|
|
1640
|
+
headers: {
|
|
1641
|
+
[name: string]: unknown;
|
|
1642
|
+
};
|
|
1643
|
+
content: {
|
|
1644
|
+
"application/json": components["schemas"]["SSHKeyResource"];
|
|
1645
|
+
};
|
|
1646
|
+
};
|
|
1647
|
+
/** @description Error */
|
|
1648
|
+
default: {
|
|
1649
|
+
headers: {
|
|
1650
|
+
[name: string]: unknown;
|
|
1651
|
+
};
|
|
1652
|
+
content: {
|
|
1653
|
+
"application/json": components["schemas"]["Error"];
|
|
1654
|
+
};
|
|
1655
|
+
};
|
|
1656
|
+
};
|
|
1657
|
+
};
|
|
1658
|
+
}
|