@leaflow/sdk 0.54.3 → 0.55.0
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/dist/account/v1/index.d.ts +2 -2
- package/dist/account/v1/schema.d.ts +123 -122
- package/dist/assistant/v1/schema.d.ts +4 -0
- package/dist/billing/v1/index.d.ts +8 -2
- package/dist/billing/v1/schema.d.ts +174 -5
- package/dist/canopy/v1/schema.d.ts +113 -109
- package/dist/compute/v1/index.d.ts +4 -2
- package/dist/compute/v1/schema.d.ts +55 -0
- package/dist/dns/v1/index.d.ts +6 -6
- package/dist/dns/v1/schema.d.ts +4 -0
- package/dist/fleet/v1/index.d.ts +6 -0
- package/dist/fleet/v1/index.js +5 -0
- package/dist/fleet/v1/schema.d.ts +156 -0
- package/dist/fleet/v1/schema.js +5 -0
- package/dist/iam/v1/index.d.ts +4 -4
- package/dist/iam/v1/schema.d.ts +119 -115
- package/dist/index.d.ts +1 -0
- package/dist/monitoring/v1/index.d.ts +4 -4
- package/dist/monitoring/v1/schema.d.ts +4 -0
- package/dist/notification/v1/schema.d.ts +4 -0
- package/dist/support/v1/schema.d.ts +4 -0
- package/dist/tunnel/v1/schema.d.ts +39 -35
- package/package.json +1 -1
|
@@ -50,5 +50,5 @@ export type ListProjectsQuery = operations["list-projects"]["parameters"]["query
|
|
|
50
50
|
export type CreateProjectResult = operations["create-project"]["responses"][201]["content"]["application/json"];
|
|
51
51
|
/** `POST /account/v1/projects` 的请求体。 */
|
|
52
52
|
export type CreateProjectBody = NonNullable<operations["create-project"]["requestBody"]>["content"]["application/json"];
|
|
53
|
-
/** `POST /account/v1/projects/{projectId}/
|
|
54
|
-
export type
|
|
53
|
+
/** `POST /account/v1/projects/{projectId}/scoped-tokens` 成功时的响应体。 */
|
|
54
|
+
export type CreateScopedTokenResult = operations["create-scoped-token"]["responses"][201]["content"]["application/json"];
|
|
@@ -11,12 +11,12 @@ export interface paths {
|
|
|
11
11
|
cookie?: never;
|
|
12
12
|
};
|
|
13
13
|
/**
|
|
14
|
-
*
|
|
15
|
-
* @description
|
|
14
|
+
* Get registration and project creation settings
|
|
15
|
+
* @description No token required.
|
|
16
16
|
*
|
|
17
|
-
* `registration_mode`
|
|
17
|
+
* While `registration_mode` is not `OPEN`, `POST /account/v1/register` answers 403: `CLOSED` refuses everyone, and `INVITE_ONLY` accepts only an email address holding a project invitation. `project_creation_mode` behaves the same way, and `VERIFIED_ONLY` requires identity verification to have completed.
|
|
18
18
|
*
|
|
19
|
-
*
|
|
19
|
+
* Both quotas are `0` when unlimited. The decision itself is made at the moment of writing.
|
|
20
20
|
*/
|
|
21
21
|
get: operations["get-settings"];
|
|
22
22
|
put?: never;
|
|
@@ -35,10 +35,12 @@ export interface paths {
|
|
|
35
35
|
cookie?: never;
|
|
36
36
|
};
|
|
37
37
|
/**
|
|
38
|
-
*
|
|
39
|
-
* @description
|
|
40
|
-
*
|
|
41
|
-
*
|
|
38
|
+
* List countries and languages for registration
|
|
39
|
+
* @description No token required: the registration page renders both lists before an account exists.
|
|
40
|
+
*
|
|
41
|
+
* Country names and their order follow `Accept-Language`. A name is rendered in the requested language and the list is ordered by the rules of that language rather than by code point. Simplified Chinese applies when the header is absent.
|
|
42
|
+
*
|
|
43
|
+
* Retired codes such as the Soviet Union and Yugoslavia, and codes that denote no country such as the European Union, are not listed.
|
|
42
44
|
*/
|
|
43
45
|
get: operations["list-locales"];
|
|
44
46
|
put?: never;
|
|
@@ -57,10 +59,10 @@ export interface paths {
|
|
|
57
59
|
cookie?: never;
|
|
58
60
|
};
|
|
59
61
|
/**
|
|
60
|
-
*
|
|
61
|
-
* @description
|
|
62
|
+
* List the agreements registration requires
|
|
63
|
+
* @description No token required. Send the `type` and `version` of each one back unchanged to `POST /account/v1/register`.
|
|
62
64
|
*
|
|
63
|
-
*
|
|
65
|
+
* The array is empty while no agreement is in force, and registration then takes no `consents`.
|
|
64
66
|
*/
|
|
65
67
|
get: operations["list-agreements"];
|
|
66
68
|
put?: never;
|
|
@@ -79,16 +81,16 @@ export interface paths {
|
|
|
79
81
|
cookie?: never;
|
|
80
82
|
};
|
|
81
83
|
/**
|
|
82
|
-
*
|
|
83
|
-
* @description
|
|
84
|
+
* List the agreements the caller has consented to
|
|
85
|
+
* @description Every record, most recent first, including versions that are no longer current.
|
|
84
86
|
*/
|
|
85
87
|
get: operations["list-consents"];
|
|
86
88
|
put?: never;
|
|
87
89
|
/**
|
|
88
|
-
*
|
|
89
|
-
* @description
|
|
90
|
+
* Consent to the current agreements
|
|
91
|
+
* @description Call this once a new version is published, which is whenever `pending_agreements` on `GET /account/v1/me` is not empty.
|
|
90
92
|
*
|
|
91
|
-
*
|
|
93
|
+
* Only the version currently in force is accepted; consenting to an earlier one answers 409. Submitting the same version twice is not an error and leaves the first record in place.
|
|
92
94
|
*/
|
|
93
95
|
post: operations["accept-agreements"];
|
|
94
96
|
delete?: never;
|
|
@@ -107,10 +109,10 @@ export interface paths {
|
|
|
107
109
|
get?: never;
|
|
108
110
|
put?: never;
|
|
109
111
|
/**
|
|
110
|
-
*
|
|
111
|
-
* @description
|
|
112
|
+
* Register an account
|
|
113
|
+
* @description Call this after signing in at auth.leaflow.net, carrying the access token. The name and email address are taken from the sign-in claims and are not read from the request body.
|
|
112
114
|
*
|
|
113
|
-
* `consents`
|
|
115
|
+
* `consents` must cover every agreement returned by `GET /account/v1/agreements`, at the same versions. A missing agreement answers 400 and a stale version answers 409, in which case fetch the list again. An account that already exists answers 409.
|
|
114
116
|
*/
|
|
115
117
|
post: operations["register"];
|
|
116
118
|
delete?: never;
|
|
@@ -127,8 +129,8 @@ export interface paths {
|
|
|
127
129
|
cookie?: never;
|
|
128
130
|
};
|
|
129
131
|
/**
|
|
130
|
-
*
|
|
131
|
-
* @description `pending_agreements`
|
|
132
|
+
* Get the current account
|
|
133
|
+
* @description `pending_agreements` holds the agreements not yet consented to. While it is not empty, obtain consent and call `POST /account/v1/me/consents`.
|
|
132
134
|
*/
|
|
133
135
|
get: operations["get-account"];
|
|
134
136
|
put?: never;
|
|
@@ -137,8 +139,8 @@ export interface paths {
|
|
|
137
139
|
options?: never;
|
|
138
140
|
head?: never;
|
|
139
141
|
/**
|
|
140
|
-
*
|
|
141
|
-
* @description
|
|
142
|
+
* Update the country and language of the current account
|
|
143
|
+
* @description The name and email address cannot be changed here. They come from the identity provider, and a change would be overwritten at the next sign-in.
|
|
142
144
|
*/
|
|
143
145
|
patch: operations["update-account"];
|
|
144
146
|
trace?: never;
|
|
@@ -151,14 +153,14 @@ export interface paths {
|
|
|
151
153
|
cookie?: never;
|
|
152
154
|
};
|
|
153
155
|
/**
|
|
154
|
-
*
|
|
155
|
-
* @description
|
|
156
|
+
* Get identity verification status
|
|
157
|
+
* @description The status is `UNVERIFIED` rather than 404 when nothing has been submitted. The legal name and the document number appear in no response.
|
|
156
158
|
*/
|
|
157
159
|
get: operations["get-identity-verification"];
|
|
158
160
|
put?: never;
|
|
159
161
|
/**
|
|
160
|
-
*
|
|
161
|
-
* @description
|
|
162
|
+
* Submit identity verification
|
|
163
|
+
* @description A submission awaiting review, and an account already verified, are both refused. A rejected submission may be corrected and sent again.
|
|
162
164
|
*/
|
|
163
165
|
post: operations["submit-identity-verification"];
|
|
164
166
|
delete?: never;
|
|
@@ -175,8 +177,8 @@ export interface paths {
|
|
|
175
177
|
cookie?: never;
|
|
176
178
|
};
|
|
177
179
|
/**
|
|
178
|
-
*
|
|
179
|
-
* @description
|
|
180
|
+
* List invitations addressed to the caller
|
|
181
|
+
* @description Matched against the email address of the current account.
|
|
180
182
|
*/
|
|
181
183
|
get: operations["list-my-invitations"];
|
|
182
184
|
put?: never;
|
|
@@ -195,12 +197,12 @@ export interface paths {
|
|
|
195
197
|
cookie?: never;
|
|
196
198
|
};
|
|
197
199
|
/**
|
|
198
|
-
*
|
|
199
|
-
* @description
|
|
200
|
-
*
|
|
201
|
-
*
|
|
202
|
-
*
|
|
203
|
-
*
|
|
200
|
+
* Preview an invitation by its token
|
|
201
|
+
* @description No token required: whoever follows the link in an invitation email has usually not signed in, and may hold no account at all.
|
|
202
|
+
*
|
|
203
|
+
* The recipient address is masked (`t***@example.com`).
|
|
204
|
+
*
|
|
205
|
+
* A token that does not exist, one already redeemed, one revoked and one expired all answer the same 404.
|
|
204
206
|
*/
|
|
205
207
|
get: operations["preview-invitation-by-token"];
|
|
206
208
|
put?: never;
|
|
@@ -221,8 +223,8 @@ export interface paths {
|
|
|
221
223
|
get?: never;
|
|
222
224
|
put?: never;
|
|
223
225
|
/**
|
|
224
|
-
*
|
|
225
|
-
* @description token
|
|
226
|
+
* Accept an invitation by its token
|
|
227
|
+
* @description A token that does not match, and an invitation that no longer stands, answer the same way.
|
|
226
228
|
*/
|
|
227
229
|
post: operations["accept-invitation-by-token"];
|
|
228
230
|
delete?: never;
|
|
@@ -241,8 +243,8 @@ export interface paths {
|
|
|
241
243
|
get?: never;
|
|
242
244
|
put?: never;
|
|
243
245
|
/**
|
|
244
|
-
*
|
|
245
|
-
* @description
|
|
246
|
+
* Accept an invitation listed against the caller
|
|
247
|
+
* @description No token is required; the invitation is addressed to the email address of the current account.
|
|
246
248
|
*/
|
|
247
249
|
post: operations["accept-invitation"];
|
|
248
250
|
delete?: never;
|
|
@@ -259,14 +261,14 @@ export interface paths {
|
|
|
259
261
|
cookie?: never;
|
|
260
262
|
};
|
|
261
263
|
/**
|
|
262
|
-
*
|
|
263
|
-
* @description
|
|
264
|
+
* List the projects the caller belongs to
|
|
265
|
+
* @description Deleted projects are excluded unless `status=DELETED` asks for them by name.
|
|
264
266
|
*/
|
|
265
267
|
get: operations["list-projects"];
|
|
266
268
|
put?: never;
|
|
267
269
|
/**
|
|
268
|
-
*
|
|
269
|
-
* @description
|
|
270
|
+
* Create a project
|
|
271
|
+
* @description The caller becomes its owner. The project is created with the built-in `OWNER` and `ADMIN` roles and a `member` role carrying no permissions.
|
|
270
272
|
*/
|
|
271
273
|
post: operations["create-project"];
|
|
272
274
|
delete?: never;
|
|
@@ -275,7 +277,7 @@ export interface paths {
|
|
|
275
277
|
patch?: never;
|
|
276
278
|
trace?: never;
|
|
277
279
|
};
|
|
278
|
-
"/account/v1/projects/{projectId}/
|
|
280
|
+
"/account/v1/projects/{projectId}/scoped-tokens": {
|
|
279
281
|
parameters: {
|
|
280
282
|
query?: never;
|
|
281
283
|
header?: never;
|
|
@@ -285,18 +287,18 @@ export interface paths {
|
|
|
285
287
|
get?: never;
|
|
286
288
|
put?: never;
|
|
287
289
|
/**
|
|
288
|
-
*
|
|
289
|
-
* @description
|
|
290
|
+
* Exchange the access token for a scoped token
|
|
291
|
+
* @description Once a project has been chosen, exchange the access token for a scoped token for that project.
|
|
290
292
|
*
|
|
291
|
-
*
|
|
293
|
+
* **Only an access token issued by auth.leaflow.net is accepted; a scoped token is not.** Once a scoped token has expired, obtain a fresh access token at auth.leaflow.net and call this endpoint again.
|
|
292
294
|
*
|
|
293
|
-
*
|
|
295
|
+
* The exchange confirms that the account is usable, that the project exists, and that the caller is a member of it. A caller who is not a member obtains no token.
|
|
294
296
|
*
|
|
295
|
-
*
|
|
297
|
+
* A scoped token states identity only — the user and the project — and **carries no permissions**. Permissions are evaluated on every request, so a change of role takes effect immediately rather than at the next expiry.
|
|
296
298
|
*
|
|
297
|
-
*
|
|
299
|
+
* A project that is suspended, banned or being deleted still issues tokens; those states restrict writes, and the project remains readable.
|
|
298
300
|
*/
|
|
299
|
-
post: operations["
|
|
301
|
+
post: operations["create-scoped-token"];
|
|
300
302
|
delete?: never;
|
|
301
303
|
options?: never;
|
|
302
304
|
head?: never;
|
|
@@ -310,6 +312,10 @@ export interface components {
|
|
|
310
312
|
Error: {
|
|
311
313
|
code?: string;
|
|
312
314
|
message: string;
|
|
315
|
+
/**
|
|
316
|
+
* @description What a given `code` carries alongside the message. The keys depend on the code,
|
|
317
|
+
* and a client that does not recognise one ignores it.
|
|
318
|
+
*/
|
|
313
319
|
meta?: {
|
|
314
320
|
[key: string]: unknown;
|
|
315
321
|
};
|
|
@@ -319,21 +325,21 @@ export interface components {
|
|
|
319
325
|
SettingsResource: {
|
|
320
326
|
/**
|
|
321
327
|
* Format: int64
|
|
322
|
-
* @description
|
|
328
|
+
* @description Maximum number of members a project may hold; 0 means unlimited
|
|
323
329
|
*/
|
|
324
330
|
max_members_per_project: number;
|
|
325
331
|
/**
|
|
326
332
|
* Format: int64
|
|
327
|
-
* @description
|
|
333
|
+
* @description Maximum number of projects an account may own; 0 means unlimited. Deleted projects do not count
|
|
328
334
|
*/
|
|
329
335
|
max_projects_per_user: number;
|
|
330
336
|
/**
|
|
331
|
-
* @description VERIFIED_ONLY
|
|
337
|
+
* @description VERIFIED_ONLY requires identity verification to have completed; a submission under review does not qualify
|
|
332
338
|
* @enum {string}
|
|
333
339
|
*/
|
|
334
340
|
project_creation_mode: "OPEN" | "VERIFIED_ONLY" | "CLOSED";
|
|
335
341
|
/**
|
|
336
|
-
* @description INVITE_ONLY
|
|
342
|
+
* @description INVITE_ONLY accepts only an email address holding a project invitation
|
|
337
343
|
* @enum {string}
|
|
338
344
|
*/
|
|
339
345
|
registration_mode: "OPEN" | "INVITE_ONLY" | "CLOSED";
|
|
@@ -341,14 +347,14 @@ export interface components {
|
|
|
341
347
|
AgreementResource: {
|
|
342
348
|
/**
|
|
343
349
|
* Format: date-time
|
|
344
|
-
* @description
|
|
350
|
+
* @description From this moment on, registration requires this version
|
|
345
351
|
*/
|
|
346
352
|
effective_at: string;
|
|
347
353
|
/** @enum {string} */
|
|
348
354
|
type: "TERMS" | "PRIVACY" | "DPA";
|
|
349
|
-
/** @description
|
|
355
|
+
/** @description Where the text is published */
|
|
350
356
|
url: string;
|
|
351
|
-
/** @description
|
|
357
|
+
/** @description Send this value back unchanged when consenting */
|
|
352
358
|
version: string;
|
|
353
359
|
};
|
|
354
360
|
AgreementListResponseBody: {
|
|
@@ -358,7 +364,7 @@ export interface components {
|
|
|
358
364
|
/** Format: date-time */
|
|
359
365
|
consented_at: string;
|
|
360
366
|
/**
|
|
361
|
-
* @description OFFLINE
|
|
367
|
+
* @description OFFLINE is a consent given off the platform and recorded by an operator
|
|
362
368
|
* @enum {string}
|
|
363
369
|
*/
|
|
364
370
|
method: "CLICKWRAP" | "OFFLINE";
|
|
@@ -383,24 +389,24 @@ export interface components {
|
|
|
383
389
|
email: string;
|
|
384
390
|
/** Format: date-time */
|
|
385
391
|
email_verified_at: string | null;
|
|
386
|
-
/** @description
|
|
392
|
+
/** @description Taken from the sign-in claims; may be empty */
|
|
387
393
|
first_name: string;
|
|
388
|
-
/** @description
|
|
394
|
+
/** @description The subject issued by the identity provider */
|
|
389
395
|
id: string;
|
|
390
|
-
/** @description
|
|
396
|
+
/** @description Taken from the sign-in claims; may be empty */
|
|
391
397
|
last_name: string;
|
|
392
|
-
/** @description ISO 3166-1 alpha-2
|
|
398
|
+
/** @description ISO 3166-1 alpha-2. Empty on an account that registered before this was required; such an account continues to work and can set it from the settings page */
|
|
393
399
|
country?: string;
|
|
394
|
-
/** @description
|
|
400
|
+
/** @description Empty while never set, in which case `Accept-Language` applies, and the platform default when that is absent as well */
|
|
395
401
|
locale?: string;
|
|
396
402
|
pending_agreements: components["schemas"]["AgreementResource"][] | null;
|
|
397
403
|
/** @enum {string} */
|
|
398
404
|
status: "ACTIVE" | "SUSPENDED" | "BANNED" | "DELETING";
|
|
399
405
|
};
|
|
400
406
|
RegisterRequestBody: {
|
|
401
|
-
/** @description
|
|
407
|
+
/** @description Must cover every agreement currently in force, at the versions returned by GET /account/v1/agreements */
|
|
402
408
|
consents: components["schemas"]["ConsentBody"][] | null;
|
|
403
|
-
/** @description ISO 3166-1 alpha-2
|
|
409
|
+
/** @description ISO 3166-1 alpha-2 (CN, HK, US). Must denote a country or territory that exists; codes such as EU and ZZ hold a place in the standard without denoting one and are refused */
|
|
404
410
|
country: string;
|
|
405
411
|
locale: components["schemas"]["Locale"];
|
|
406
412
|
};
|
|
@@ -409,31 +415,31 @@ export interface components {
|
|
|
409
415
|
languages: components["schemas"]["LanguageOption"][];
|
|
410
416
|
};
|
|
411
417
|
CountryOption: {
|
|
412
|
-
/** @description ISO 3166-1 alpha-2
|
|
418
|
+
/** @description ISO 3166-1 alpha-2, sent back unchanged at registration */
|
|
413
419
|
code: string;
|
|
414
|
-
/** @description
|
|
420
|
+
/** @description The name rendered according to `Accept-Language` */
|
|
415
421
|
name: string;
|
|
416
422
|
};
|
|
417
423
|
LanguageOption: {
|
|
418
424
|
code: components["schemas"]["Locale"];
|
|
419
|
-
/** @description
|
|
425
|
+
/** @description The endonym of the language, written in that language itself. It does not follow `Accept-Language` */
|
|
420
426
|
name: string;
|
|
421
427
|
};
|
|
422
428
|
/**
|
|
423
|
-
* @description
|
|
429
|
+
* @description The language used for the interface and for email. It is independent of `country`, and neither can be inferred from the other
|
|
424
430
|
* @enum {string}
|
|
425
431
|
*/
|
|
426
432
|
Locale: "zh-Hans" | "zh-Hant-HK" | "en";
|
|
427
|
-
/** @description
|
|
433
|
+
/** @description Both fields are optional, and an omitted field is left unchanged */
|
|
428
434
|
UpdateAccountRequestBody: {
|
|
429
|
-
/** @description
|
|
435
|
+
/** @description As at registration */
|
|
430
436
|
country?: string;
|
|
431
437
|
locale?: components["schemas"]["Locale"];
|
|
432
438
|
};
|
|
433
439
|
IdentityVerificationResource: {
|
|
434
440
|
reject_reason: string;
|
|
435
441
|
/**
|
|
436
|
-
* @description PERSONAL
|
|
442
|
+
* @description PERSONAL and ENTERPRISE are two kinds of subject rather than two levels, and are not ordered
|
|
437
443
|
* @enum {string}
|
|
438
444
|
*/
|
|
439
445
|
status: "UNVERIFIED" | "PENDING" | "PERSONAL" | "ENTERPRISE" | "REJECTED";
|
|
@@ -443,24 +449,21 @@ export interface components {
|
|
|
443
449
|
verified_at: string | null;
|
|
444
450
|
};
|
|
445
451
|
SubmitIdentityVerificationRequestBody: {
|
|
446
|
-
/** @description
|
|
452
|
+
/** @description The document number. It is returned by no endpoint, and one number cannot be attached to two accounts */
|
|
447
453
|
id_number: string;
|
|
448
|
-
/** @description
|
|
454
|
+
/** @description The legal name. It is returned by no endpoint */
|
|
449
455
|
real_name: string;
|
|
450
456
|
};
|
|
451
|
-
/**
|
|
452
|
-
* @description 一封邀请在被接受之前能给出的全部信息。
|
|
453
|
-
* 它比 InvitationResource 少两样:要约 id 和完整的收件地址。id 不给是因为持有令牌不等于 这封要约列在你名下——真正列在你名下的那些走 list-my-invitations,那条是认过身份的。
|
|
454
|
-
*/
|
|
457
|
+
/** @description What an invitation states before it is accepted. It carries neither the invitation id nor the full recipient address; the invitations listed against the current account are returned by `list-my-invitations` */
|
|
455
458
|
InvitationPreviewResource: {
|
|
456
|
-
/** @description
|
|
459
|
+
/** @description The masked recipient address, enough for the recipient to recognise it */
|
|
457
460
|
email_masked: string;
|
|
458
461
|
/** Format: date-time */
|
|
459
462
|
expires_at: string;
|
|
460
|
-
/** @description
|
|
463
|
+
/** @description The display name of the sender, or their email address when no name is set */
|
|
461
464
|
invited_by_name: string;
|
|
462
465
|
project_name: string;
|
|
463
|
-
/** @description
|
|
466
|
+
/** @description The display names of the roles granted on acceptance */
|
|
464
467
|
role_names: string[] | null;
|
|
465
468
|
};
|
|
466
469
|
InvitationResource: {
|
|
@@ -471,42 +474,40 @@ export interface components {
|
|
|
471
474
|
expires_at: string;
|
|
472
475
|
/** Format: uuid */
|
|
473
476
|
id: string;
|
|
474
|
-
/** @description
|
|
477
|
+
/** @description The id of the account that issued the invitation */
|
|
475
478
|
invited_by: string;
|
|
476
|
-
/** @description
|
|
479
|
+
/** @description The display name of that account, or its email address when no name is set. It reflects the value at the time of reading rather than at the time the invitation was sent */
|
|
477
480
|
invited_by_name: string;
|
|
478
481
|
/** Format: uuid */
|
|
479
482
|
project_id: string;
|
|
480
|
-
/**
|
|
481
|
-
* @description 目标项目的名字。
|
|
482
|
-
* 它在这里,而这一度是刻意不给的——理由是「没接受就不是成员,而名字只有成员能读」。 那条克制在这个场景下站不住:邀请邮件正文里就写着项目名,收件人早就知道了,而一个 只显示 uuid 的邀请列表让人没法判断该不该接受。
|
|
483
|
-
*/
|
|
483
|
+
/** @description The name of the target project */
|
|
484
484
|
project_name: string;
|
|
485
|
-
/** @description
|
|
485
|
+
/** @description The role codes granted on acceptance */
|
|
486
486
|
roles: string[] | null;
|
|
487
|
-
/** @description
|
|
487
|
+
/** @description The display names of those codes, in the same order */
|
|
488
488
|
role_names: string[] | null;
|
|
489
489
|
};
|
|
490
490
|
LengthAwarePageInvitationResource: {
|
|
491
|
-
/** @description
|
|
491
|
+
/** @description The items in this page */
|
|
492
492
|
items: components["schemas"]["InvitationResource"][];
|
|
493
493
|
/**
|
|
494
494
|
* Format: int64
|
|
495
|
-
* @description
|
|
495
|
+
* @description Maximum number of items in this page, echoing the request
|
|
496
496
|
*/
|
|
497
497
|
limit: number;
|
|
498
498
|
/**
|
|
499
499
|
* Format: int64
|
|
500
|
-
* @description
|
|
500
|
+
* @description Number of items skipped, echoing the request
|
|
501
501
|
*/
|
|
502
502
|
offset: number;
|
|
503
503
|
/**
|
|
504
504
|
* Format: int64
|
|
505
|
-
* @description
|
|
505
|
+
* @description Total number of matches, not only this page
|
|
506
506
|
*/
|
|
507
507
|
total: number;
|
|
508
508
|
};
|
|
509
509
|
AcceptInvitationByTokenRequestBody: {
|
|
510
|
+
/** @description The token carried by the invitation link */
|
|
510
511
|
token: string;
|
|
511
512
|
};
|
|
512
513
|
ProjectResource: {
|
|
@@ -516,7 +517,7 @@ export interface components {
|
|
|
516
517
|
created_by: string;
|
|
517
518
|
/**
|
|
518
519
|
* Format: date-time
|
|
519
|
-
* @description
|
|
520
|
+
* @description When the project was deleted
|
|
520
521
|
*/
|
|
521
522
|
deleted_at: string | null;
|
|
522
523
|
description: string;
|
|
@@ -525,7 +526,7 @@ export interface components {
|
|
|
525
526
|
name: string;
|
|
526
527
|
/** @enum {string} */
|
|
527
528
|
status: "ACTIVE" | "SUSPENDED" | "BANNED" | "DELETING" | "DELETED";
|
|
528
|
-
/** @description
|
|
529
|
+
/** @description Written for a reader; it takes part in no query */
|
|
529
530
|
status_reason: string;
|
|
530
531
|
/** Format: date-time */
|
|
531
532
|
updated_at: string;
|
|
@@ -536,23 +537,23 @@ export interface components {
|
|
|
536
537
|
GrantResource: {
|
|
537
538
|
admin: boolean;
|
|
538
539
|
owner: boolean;
|
|
539
|
-
/** @description
|
|
540
|
+
/** @description The role codes held, for display only */
|
|
540
541
|
roles: string[] | null;
|
|
541
|
-
/** @description
|
|
542
|
+
/** @description **Do not walk these rules to reach a decision.** They are compiled from every policy that applies to the caller, and serve to render what a user may do. Each request is decided by the service handling it */
|
|
542
543
|
rules: components["schemas"]["RuleResource"][] | null;
|
|
543
544
|
};
|
|
544
545
|
ResourceRefResource: {
|
|
545
|
-
/** @description
|
|
546
|
+
/** @description A string rather than a UUID; a DNS zone, for one, is named by its domain. Matching is glob, so `*.example.com` covers a set of subdomains, while a value carrying no glob metacharacter matches exactly */
|
|
546
547
|
id: string;
|
|
547
|
-
/** @description
|
|
548
|
+
/** @description Of the form compute:instance or dns:zone, in the same namespace as permission names */
|
|
548
549
|
type: string;
|
|
549
550
|
};
|
|
550
551
|
RuleResource: {
|
|
551
552
|
/** @enum {string} */
|
|
552
553
|
effect: "allow" | "deny";
|
|
553
|
-
/** @description
|
|
554
|
+
/** @description A trailing wildcard is supported (compute:instance.*), and must carry the service prefix */
|
|
554
555
|
permissions: string[] | null;
|
|
555
|
-
/** @description
|
|
556
|
+
/** @description Empty means the rule holds across the whole project. While it is not empty the rule holds only on those resources, and therefore answers no project-level question */
|
|
556
557
|
resources: components["schemas"]["ResourceRefResource"][] | null;
|
|
557
558
|
};
|
|
558
559
|
ProjectAccessResource: {
|
|
@@ -560,21 +561,21 @@ export interface components {
|
|
|
560
561
|
project: components["schemas"]["ProjectResource"];
|
|
561
562
|
};
|
|
562
563
|
LengthAwarePageProjectAccessResource: {
|
|
563
|
-
/** @description
|
|
564
|
+
/** @description The items in this page */
|
|
564
565
|
items: components["schemas"]["ProjectAccessResource"][];
|
|
565
566
|
/**
|
|
566
567
|
* Format: int64
|
|
567
|
-
* @description
|
|
568
|
+
* @description Maximum number of items in this page, echoing the request
|
|
568
569
|
*/
|
|
569
570
|
limit: number;
|
|
570
571
|
/**
|
|
571
572
|
* Format: int64
|
|
572
|
-
* @description
|
|
573
|
+
* @description Number of items skipped, echoing the request
|
|
573
574
|
*/
|
|
574
575
|
offset: number;
|
|
575
576
|
/**
|
|
576
577
|
* Format: int64
|
|
577
|
-
* @description
|
|
578
|
+
* @description Total number of matches, not only this page
|
|
578
579
|
*/
|
|
579
580
|
total: number;
|
|
580
581
|
};
|
|
@@ -582,24 +583,24 @@ export interface components {
|
|
|
582
583
|
description?: string;
|
|
583
584
|
name: string;
|
|
584
585
|
};
|
|
585
|
-
|
|
586
|
+
ScopedTokenResponseBody: {
|
|
586
587
|
/**
|
|
587
588
|
* Format: date-time
|
|
588
|
-
* @description
|
|
589
|
+
* @description When the token expires. Exchange for a new one before then rather than waiting for the first 401
|
|
589
590
|
*/
|
|
590
591
|
expires_at: string;
|
|
591
592
|
/**
|
|
592
593
|
* Format: int64
|
|
593
|
-
* @description
|
|
594
|
+
* @description Seconds remaining before expiry
|
|
594
595
|
*/
|
|
595
596
|
expires_in: number;
|
|
596
|
-
/** @description
|
|
597
|
+
/** @description **A snapshot taken at the moment of the exchange. It is not carried in the token, and must not be cached.** It serves to render what a user may do; each request is decided again */
|
|
597
598
|
grant: components["schemas"]["GrantResource"];
|
|
598
|
-
/** @description
|
|
599
|
+
/** @description The project itself, so that no further lookup is needed after the exchange */
|
|
599
600
|
project: components["schemas"]["ProjectResource"];
|
|
600
|
-
/** @description
|
|
601
|
+
/** @description The scoped token, to be sent as `Authorization: Bearer` */
|
|
601
602
|
token: string;
|
|
602
|
-
/** @description
|
|
603
|
+
/** @description Always `Bearer` */
|
|
603
604
|
token_type: string;
|
|
604
605
|
};
|
|
605
606
|
};
|
|
@@ -920,9 +921,9 @@ export interface operations {
|
|
|
920
921
|
"list-my-invitations": {
|
|
921
922
|
parameters: {
|
|
922
923
|
query?: {
|
|
923
|
-
/** @description
|
|
924
|
+
/** @description Maximum number of items in this page */
|
|
924
925
|
limit?: number;
|
|
925
|
-
/** @description
|
|
926
|
+
/** @description Number of items to skip. Use the cursor-paged endpoint to page deeper */
|
|
926
927
|
offset?: number;
|
|
927
928
|
};
|
|
928
929
|
header?: never;
|
|
@@ -954,7 +955,7 @@ export interface operations {
|
|
|
954
955
|
"preview-invitation-by-token": {
|
|
955
956
|
parameters: {
|
|
956
957
|
query: {
|
|
957
|
-
/** @description
|
|
958
|
+
/** @description The token carried by the invitation link */
|
|
958
959
|
token: string;
|
|
959
960
|
};
|
|
960
961
|
header?: never;
|
|
@@ -1050,13 +1051,13 @@ export interface operations {
|
|
|
1050
1051
|
"list-projects": {
|
|
1051
1052
|
parameters: {
|
|
1052
1053
|
query?: {
|
|
1053
|
-
/** @description
|
|
1054
|
+
/** @description Maximum number of items in this page */
|
|
1054
1055
|
limit?: number;
|
|
1055
|
-
/** @description
|
|
1056
|
+
/** @description Number of items to skip. Use the cursor-paged endpoint to page deeper */
|
|
1056
1057
|
offset?: number;
|
|
1057
|
-
/** @description
|
|
1058
|
+
/** @description Matches against name or description */
|
|
1058
1059
|
keyword?: string;
|
|
1059
|
-
/** @description
|
|
1060
|
+
/** @description Filters by external status. Deleted projects are excluded while this is absent */
|
|
1060
1061
|
status?: "ACTIVE" | "SUSPENDED" | "BANNED" | "DELETING" | "DELETED";
|
|
1061
1062
|
};
|
|
1062
1063
|
header?: never;
|
|
@@ -1118,7 +1119,7 @@ export interface operations {
|
|
|
1118
1119
|
};
|
|
1119
1120
|
};
|
|
1120
1121
|
};
|
|
1121
|
-
"
|
|
1122
|
+
"create-scoped-token": {
|
|
1122
1123
|
parameters: {
|
|
1123
1124
|
query?: never;
|
|
1124
1125
|
header?: never;
|
|
@@ -1135,7 +1136,7 @@ export interface operations {
|
|
|
1135
1136
|
[name: string]: unknown;
|
|
1136
1137
|
};
|
|
1137
1138
|
content: {
|
|
1138
|
-
"application/json": components["schemas"]["
|
|
1139
|
+
"application/json": components["schemas"]["ScopedTokenResponseBody"];
|
|
1139
1140
|
};
|
|
1140
1141
|
};
|
|
1141
1142
|
/** @description Error */
|
|
@@ -679,6 +679,10 @@ export interface components {
|
|
|
679
679
|
Error: {
|
|
680
680
|
code?: string;
|
|
681
681
|
message: string;
|
|
682
|
+
/**
|
|
683
|
+
* @description What a given `code` carries alongside the message. The keys depend on the code,
|
|
684
|
+
* and a client that does not recognise one ignores it.
|
|
685
|
+
*/
|
|
682
686
|
meta?: {
|
|
683
687
|
[key: string]: unknown;
|
|
684
688
|
};
|