@leaflow/sdk 0.0.0-dev.125.ged02bc4 → 0.0.0-dev.129.g409f04f
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 +148 -122
- package/dist/assistant/v1/schema.d.ts +29 -0
- package/dist/billing/v1/index.d.ts +8 -2
- package/dist/billing/v1/schema.d.ts +184 -5
- package/dist/canopy/v1/schema.d.ts +138 -109
- package/dist/compute/v1/index.d.ts +4 -2
- package/dist/compute/v1/schema.d.ts +80 -0
- package/dist/dns/v1/index.d.ts +6 -6
- package/dist/dns/v1/schema.d.ts +29 -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 +181 -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 +144 -115
- package/dist/index.d.ts +1 -0
- package/dist/monitoring/v1/index.d.ts +4 -4
- package/dist/monitoring/v1/schema.d.ts +29 -0
- package/dist/notification/v1/schema.d.ts +29 -0
- package/dist/support/v1/schema.d.ts +29 -0
- package/dist/tunnel/v1/schema.d.ts +64 -35
- package/package.json +1 -1
|
@@ -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;
|
|
@@ -311,6 +313,12 @@ export interface components {
|
|
|
311
313
|
code?: string;
|
|
312
314
|
message: string;
|
|
313
315
|
meta?: {
|
|
316
|
+
/**
|
|
317
|
+
* @description Present on every response whose `code` is `VALIDATION_FAILED`, and on no
|
|
318
|
+
* other response.
|
|
319
|
+
*/
|
|
320
|
+
violations?: components["schemas"]["Violation"][];
|
|
321
|
+
} & {
|
|
314
322
|
[key: string]: unknown;
|
|
315
323
|
};
|
|
316
324
|
/** Format: int64 */
|
|
@@ -319,21 +327,21 @@ export interface components {
|
|
|
319
327
|
SettingsResource: {
|
|
320
328
|
/**
|
|
321
329
|
* Format: int64
|
|
322
|
-
* @description
|
|
330
|
+
* @description Maximum number of members a project may hold; 0 means unlimited
|
|
323
331
|
*/
|
|
324
332
|
max_members_per_project: number;
|
|
325
333
|
/**
|
|
326
334
|
* Format: int64
|
|
327
|
-
* @description
|
|
335
|
+
* @description Maximum number of projects an account may own; 0 means unlimited. Deleted projects do not count
|
|
328
336
|
*/
|
|
329
337
|
max_projects_per_user: number;
|
|
330
338
|
/**
|
|
331
|
-
* @description VERIFIED_ONLY
|
|
339
|
+
* @description VERIFIED_ONLY requires identity verification to have completed; a submission under review does not qualify
|
|
332
340
|
* @enum {string}
|
|
333
341
|
*/
|
|
334
342
|
project_creation_mode: "OPEN" | "VERIFIED_ONLY" | "CLOSED";
|
|
335
343
|
/**
|
|
336
|
-
* @description INVITE_ONLY
|
|
344
|
+
* @description INVITE_ONLY accepts only an email address holding a project invitation
|
|
337
345
|
* @enum {string}
|
|
338
346
|
*/
|
|
339
347
|
registration_mode: "OPEN" | "INVITE_ONLY" | "CLOSED";
|
|
@@ -341,14 +349,14 @@ export interface components {
|
|
|
341
349
|
AgreementResource: {
|
|
342
350
|
/**
|
|
343
351
|
* Format: date-time
|
|
344
|
-
* @description
|
|
352
|
+
* @description From this moment on, registration requires this version
|
|
345
353
|
*/
|
|
346
354
|
effective_at: string;
|
|
347
355
|
/** @enum {string} */
|
|
348
356
|
type: "TERMS" | "PRIVACY" | "DPA";
|
|
349
|
-
/** @description
|
|
357
|
+
/** @description Where the text is published */
|
|
350
358
|
url: string;
|
|
351
|
-
/** @description
|
|
359
|
+
/** @description Send this value back unchanged when consenting */
|
|
352
360
|
version: string;
|
|
353
361
|
};
|
|
354
362
|
AgreementListResponseBody: {
|
|
@@ -358,7 +366,7 @@ export interface components {
|
|
|
358
366
|
/** Format: date-time */
|
|
359
367
|
consented_at: string;
|
|
360
368
|
/**
|
|
361
|
-
* @description OFFLINE
|
|
369
|
+
* @description OFFLINE is a consent given off the platform and recorded by an operator
|
|
362
370
|
* @enum {string}
|
|
363
371
|
*/
|
|
364
372
|
method: "CLICKWRAP" | "OFFLINE";
|
|
@@ -383,24 +391,24 @@ export interface components {
|
|
|
383
391
|
email: string;
|
|
384
392
|
/** Format: date-time */
|
|
385
393
|
email_verified_at: string | null;
|
|
386
|
-
/** @description
|
|
394
|
+
/** @description Taken from the sign-in claims; may be empty */
|
|
387
395
|
first_name: string;
|
|
388
|
-
/** @description
|
|
396
|
+
/** @description The subject issued by the identity provider */
|
|
389
397
|
id: string;
|
|
390
|
-
/** @description
|
|
398
|
+
/** @description Taken from the sign-in claims; may be empty */
|
|
391
399
|
last_name: string;
|
|
392
|
-
/** @description ISO 3166-1 alpha-2
|
|
400
|
+
/** @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
401
|
country?: string;
|
|
394
|
-
/** @description
|
|
402
|
+
/** @description Empty while never set, in which case `Accept-Language` applies, and the platform default when that is absent as well */
|
|
395
403
|
locale?: string;
|
|
396
404
|
pending_agreements: components["schemas"]["AgreementResource"][] | null;
|
|
397
405
|
/** @enum {string} */
|
|
398
406
|
status: "ACTIVE" | "SUSPENDED" | "BANNED" | "DELETING";
|
|
399
407
|
};
|
|
400
408
|
RegisterRequestBody: {
|
|
401
|
-
/** @description
|
|
409
|
+
/** @description Must cover every agreement currently in force, at the versions returned by GET /account/v1/agreements */
|
|
402
410
|
consents: components["schemas"]["ConsentBody"][] | null;
|
|
403
|
-
/** @description ISO 3166-1 alpha-2
|
|
411
|
+
/** @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
412
|
country: string;
|
|
405
413
|
locale: components["schemas"]["Locale"];
|
|
406
414
|
};
|
|
@@ -409,31 +417,31 @@ export interface components {
|
|
|
409
417
|
languages: components["schemas"]["LanguageOption"][];
|
|
410
418
|
};
|
|
411
419
|
CountryOption: {
|
|
412
|
-
/** @description ISO 3166-1 alpha-2
|
|
420
|
+
/** @description ISO 3166-1 alpha-2, sent back unchanged at registration */
|
|
413
421
|
code: string;
|
|
414
|
-
/** @description
|
|
422
|
+
/** @description The name rendered according to `Accept-Language` */
|
|
415
423
|
name: string;
|
|
416
424
|
};
|
|
417
425
|
LanguageOption: {
|
|
418
426
|
code: components["schemas"]["Locale"];
|
|
419
|
-
/** @description
|
|
427
|
+
/** @description The endonym of the language, written in that language itself. It does not follow `Accept-Language` */
|
|
420
428
|
name: string;
|
|
421
429
|
};
|
|
422
430
|
/**
|
|
423
|
-
* @description
|
|
431
|
+
* @description The language used for the interface and for email. It is independent of `country`, and neither can be inferred from the other
|
|
424
432
|
* @enum {string}
|
|
425
433
|
*/
|
|
426
434
|
Locale: "zh-Hans" | "zh-Hant-HK" | "en";
|
|
427
|
-
/** @description
|
|
435
|
+
/** @description Both fields are optional, and an omitted field is left unchanged */
|
|
428
436
|
UpdateAccountRequestBody: {
|
|
429
|
-
/** @description
|
|
437
|
+
/** @description As at registration */
|
|
430
438
|
country?: string;
|
|
431
439
|
locale?: components["schemas"]["Locale"];
|
|
432
440
|
};
|
|
433
441
|
IdentityVerificationResource: {
|
|
434
442
|
reject_reason: string;
|
|
435
443
|
/**
|
|
436
|
-
* @description PERSONAL
|
|
444
|
+
* @description PERSONAL and ENTERPRISE are two kinds of subject rather than two levels, and are not ordered
|
|
437
445
|
* @enum {string}
|
|
438
446
|
*/
|
|
439
447
|
status: "UNVERIFIED" | "PENDING" | "PERSONAL" | "ENTERPRISE" | "REJECTED";
|
|
@@ -443,24 +451,21 @@ export interface components {
|
|
|
443
451
|
verified_at: string | null;
|
|
444
452
|
};
|
|
445
453
|
SubmitIdentityVerificationRequestBody: {
|
|
446
|
-
/** @description
|
|
454
|
+
/** @description The document number. It is returned by no endpoint, and one number cannot be attached to two accounts */
|
|
447
455
|
id_number: string;
|
|
448
|
-
/** @description
|
|
456
|
+
/** @description The legal name. It is returned by no endpoint */
|
|
449
457
|
real_name: string;
|
|
450
458
|
};
|
|
451
|
-
/**
|
|
452
|
-
* @description 一封邀请在被接受之前能给出的全部信息。
|
|
453
|
-
* 它比 InvitationResource 少两样:要约 id 和完整的收件地址。id 不给是因为持有令牌不等于 这封要约列在你名下——真正列在你名下的那些走 list-my-invitations,那条是认过身份的。
|
|
454
|
-
*/
|
|
459
|
+
/** @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
460
|
InvitationPreviewResource: {
|
|
456
|
-
/** @description
|
|
461
|
+
/** @description The masked recipient address, enough for the recipient to recognise it */
|
|
457
462
|
email_masked: string;
|
|
458
463
|
/** Format: date-time */
|
|
459
464
|
expires_at: string;
|
|
460
|
-
/** @description
|
|
465
|
+
/** @description The display name of the sender, or their email address when no name is set */
|
|
461
466
|
invited_by_name: string;
|
|
462
467
|
project_name: string;
|
|
463
|
-
/** @description
|
|
468
|
+
/** @description The display names of the roles granted on acceptance */
|
|
464
469
|
role_names: string[] | null;
|
|
465
470
|
};
|
|
466
471
|
InvitationResource: {
|
|
@@ -471,42 +476,40 @@ export interface components {
|
|
|
471
476
|
expires_at: string;
|
|
472
477
|
/** Format: uuid */
|
|
473
478
|
id: string;
|
|
474
|
-
/** @description
|
|
479
|
+
/** @description The id of the account that issued the invitation */
|
|
475
480
|
invited_by: string;
|
|
476
|
-
/** @description
|
|
481
|
+
/** @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
482
|
invited_by_name: string;
|
|
478
483
|
/** Format: uuid */
|
|
479
484
|
project_id: string;
|
|
480
|
-
/**
|
|
481
|
-
* @description 目标项目的名字。
|
|
482
|
-
* 它在这里,而这一度是刻意不给的——理由是「没接受就不是成员,而名字只有成员能读」。 那条克制在这个场景下站不住:邀请邮件正文里就写着项目名,收件人早就知道了,而一个 只显示 uuid 的邀请列表让人没法判断该不该接受。
|
|
483
|
-
*/
|
|
485
|
+
/** @description The name of the target project */
|
|
484
486
|
project_name: string;
|
|
485
|
-
/** @description
|
|
487
|
+
/** @description The role codes granted on acceptance */
|
|
486
488
|
roles: string[] | null;
|
|
487
|
-
/** @description
|
|
489
|
+
/** @description The display names of those codes, in the same order */
|
|
488
490
|
role_names: string[] | null;
|
|
489
491
|
};
|
|
490
492
|
LengthAwarePageInvitationResource: {
|
|
491
|
-
/** @description
|
|
493
|
+
/** @description The items in this page */
|
|
492
494
|
items: components["schemas"]["InvitationResource"][];
|
|
493
495
|
/**
|
|
494
496
|
* Format: int64
|
|
495
|
-
* @description
|
|
497
|
+
* @description Maximum number of items in this page, echoing the request
|
|
496
498
|
*/
|
|
497
499
|
limit: number;
|
|
498
500
|
/**
|
|
499
501
|
* Format: int64
|
|
500
|
-
* @description
|
|
502
|
+
* @description Number of items skipped, echoing the request
|
|
501
503
|
*/
|
|
502
504
|
offset: number;
|
|
503
505
|
/**
|
|
504
506
|
* Format: int64
|
|
505
|
-
* @description
|
|
507
|
+
* @description Total number of matches, not only this page
|
|
506
508
|
*/
|
|
507
509
|
total: number;
|
|
508
510
|
};
|
|
509
511
|
AcceptInvitationByTokenRequestBody: {
|
|
512
|
+
/** @description The token carried by the invitation link */
|
|
510
513
|
token: string;
|
|
511
514
|
};
|
|
512
515
|
ProjectResource: {
|
|
@@ -516,7 +519,7 @@ export interface components {
|
|
|
516
519
|
created_by: string;
|
|
517
520
|
/**
|
|
518
521
|
* Format: date-time
|
|
519
|
-
* @description
|
|
522
|
+
* @description When the project was deleted
|
|
520
523
|
*/
|
|
521
524
|
deleted_at: string | null;
|
|
522
525
|
description: string;
|
|
@@ -525,7 +528,7 @@ export interface components {
|
|
|
525
528
|
name: string;
|
|
526
529
|
/** @enum {string} */
|
|
527
530
|
status: "ACTIVE" | "SUSPENDED" | "BANNED" | "DELETING" | "DELETED";
|
|
528
|
-
/** @description
|
|
531
|
+
/** @description Written for a reader; it takes part in no query */
|
|
529
532
|
status_reason: string;
|
|
530
533
|
/** Format: date-time */
|
|
531
534
|
updated_at: string;
|
|
@@ -536,23 +539,23 @@ export interface components {
|
|
|
536
539
|
GrantResource: {
|
|
537
540
|
admin: boolean;
|
|
538
541
|
owner: boolean;
|
|
539
|
-
/** @description
|
|
542
|
+
/** @description The role codes held, for display only */
|
|
540
543
|
roles: string[] | null;
|
|
541
|
-
/** @description
|
|
544
|
+
/** @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
545
|
rules: components["schemas"]["RuleResource"][] | null;
|
|
543
546
|
};
|
|
544
547
|
ResourceRefResource: {
|
|
545
|
-
/** @description
|
|
548
|
+
/** @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
549
|
id: string;
|
|
547
|
-
/** @description
|
|
550
|
+
/** @description Of the form compute:instance or dns:zone, in the same namespace as permission names */
|
|
548
551
|
type: string;
|
|
549
552
|
};
|
|
550
553
|
RuleResource: {
|
|
551
554
|
/** @enum {string} */
|
|
552
555
|
effect: "allow" | "deny";
|
|
553
|
-
/** @description
|
|
556
|
+
/** @description A trailing wildcard is supported (compute:instance.*), and must carry the service prefix */
|
|
554
557
|
permissions: string[] | null;
|
|
555
|
-
/** @description
|
|
558
|
+
/** @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
559
|
resources: components["schemas"]["ResourceRefResource"][] | null;
|
|
557
560
|
};
|
|
558
561
|
ProjectAccessResource: {
|
|
@@ -560,21 +563,21 @@ export interface components {
|
|
|
560
563
|
project: components["schemas"]["ProjectResource"];
|
|
561
564
|
};
|
|
562
565
|
LengthAwarePageProjectAccessResource: {
|
|
563
|
-
/** @description
|
|
566
|
+
/** @description The items in this page */
|
|
564
567
|
items: components["schemas"]["ProjectAccessResource"][];
|
|
565
568
|
/**
|
|
566
569
|
* Format: int64
|
|
567
|
-
* @description
|
|
570
|
+
* @description Maximum number of items in this page, echoing the request
|
|
568
571
|
*/
|
|
569
572
|
limit: number;
|
|
570
573
|
/**
|
|
571
574
|
* Format: int64
|
|
572
|
-
* @description
|
|
575
|
+
* @description Number of items skipped, echoing the request
|
|
573
576
|
*/
|
|
574
577
|
offset: number;
|
|
575
578
|
/**
|
|
576
579
|
* Format: int64
|
|
577
|
-
* @description
|
|
580
|
+
* @description Total number of matches, not only this page
|
|
578
581
|
*/
|
|
579
582
|
total: number;
|
|
580
583
|
};
|
|
@@ -582,26 +585,49 @@ export interface components {
|
|
|
582
585
|
description?: string;
|
|
583
586
|
name: string;
|
|
584
587
|
};
|
|
585
|
-
|
|
588
|
+
ScopedTokenResponseBody: {
|
|
586
589
|
/**
|
|
587
590
|
* Format: date-time
|
|
588
|
-
* @description
|
|
591
|
+
* @description When the token expires. Exchange for a new one before then rather than waiting for the first 401
|
|
589
592
|
*/
|
|
590
593
|
expires_at: string;
|
|
591
594
|
/**
|
|
592
595
|
* Format: int64
|
|
593
|
-
* @description
|
|
596
|
+
* @description Seconds remaining before expiry
|
|
594
597
|
*/
|
|
595
598
|
expires_in: number;
|
|
596
|
-
/** @description
|
|
599
|
+
/** @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
600
|
grant: components["schemas"]["GrantResource"];
|
|
598
|
-
/** @description
|
|
601
|
+
/** @description The project itself, so that no further lookup is needed after the exchange */
|
|
599
602
|
project: components["schemas"]["ProjectResource"];
|
|
600
|
-
/** @description
|
|
603
|
+
/** @description The scoped token, to be sent as `Authorization: Bearer` */
|
|
601
604
|
token: string;
|
|
602
|
-
/** @description
|
|
605
|
+
/** @description Always `Bearer` */
|
|
603
606
|
token_type: string;
|
|
604
607
|
};
|
|
608
|
+
/**
|
|
609
|
+
* @description A single mismatch between the request and the contract.
|
|
610
|
+
*
|
|
611
|
+
* Use `field` to locate the input, `rule` to decide what to tell the user, and
|
|
612
|
+
* `reason` only for diagnostics.
|
|
613
|
+
*/
|
|
614
|
+
Violation: {
|
|
615
|
+
/**
|
|
616
|
+
* @description Dot-separated path to the field, such as `name` or
|
|
617
|
+
* `schedule.0.start_time_seconds`.
|
|
618
|
+
*/
|
|
619
|
+
field: string;
|
|
620
|
+
/**
|
|
621
|
+
* @description The JSON Schema keyword that failed, such as `minLength`, `minimum` or
|
|
622
|
+
* `pattern`.
|
|
623
|
+
*/
|
|
624
|
+
rule: string;
|
|
625
|
+
/**
|
|
626
|
+
* @description The validator's own wording, in English. Intended for diagnostics; do not
|
|
627
|
+
* display it to end users.
|
|
628
|
+
*/
|
|
629
|
+
reason?: string;
|
|
630
|
+
};
|
|
605
631
|
};
|
|
606
632
|
responses: never;
|
|
607
633
|
parameters: never;
|
|
@@ -920,9 +946,9 @@ export interface operations {
|
|
|
920
946
|
"list-my-invitations": {
|
|
921
947
|
parameters: {
|
|
922
948
|
query?: {
|
|
923
|
-
/** @description
|
|
949
|
+
/** @description Maximum number of items in this page */
|
|
924
950
|
limit?: number;
|
|
925
|
-
/** @description
|
|
951
|
+
/** @description Number of items to skip. Use the cursor-paged endpoint to page deeper */
|
|
926
952
|
offset?: number;
|
|
927
953
|
};
|
|
928
954
|
header?: never;
|
|
@@ -954,7 +980,7 @@ export interface operations {
|
|
|
954
980
|
"preview-invitation-by-token": {
|
|
955
981
|
parameters: {
|
|
956
982
|
query: {
|
|
957
|
-
/** @description
|
|
983
|
+
/** @description The token carried by the invitation link */
|
|
958
984
|
token: string;
|
|
959
985
|
};
|
|
960
986
|
header?: never;
|
|
@@ -1050,13 +1076,13 @@ export interface operations {
|
|
|
1050
1076
|
"list-projects": {
|
|
1051
1077
|
parameters: {
|
|
1052
1078
|
query?: {
|
|
1053
|
-
/** @description
|
|
1079
|
+
/** @description Maximum number of items in this page */
|
|
1054
1080
|
limit?: number;
|
|
1055
|
-
/** @description
|
|
1081
|
+
/** @description Number of items to skip. Use the cursor-paged endpoint to page deeper */
|
|
1056
1082
|
offset?: number;
|
|
1057
|
-
/** @description
|
|
1083
|
+
/** @description Matches against name or description */
|
|
1058
1084
|
keyword?: string;
|
|
1059
|
-
/** @description
|
|
1085
|
+
/** @description Filters by external status. Deleted projects are excluded while this is absent */
|
|
1060
1086
|
status?: "ACTIVE" | "SUSPENDED" | "BANNED" | "DELETING" | "DELETED";
|
|
1061
1087
|
};
|
|
1062
1088
|
header?: never;
|
|
@@ -1118,7 +1144,7 @@ export interface operations {
|
|
|
1118
1144
|
};
|
|
1119
1145
|
};
|
|
1120
1146
|
};
|
|
1121
|
-
"
|
|
1147
|
+
"create-scoped-token": {
|
|
1122
1148
|
parameters: {
|
|
1123
1149
|
query?: never;
|
|
1124
1150
|
header?: never;
|
|
@@ -1135,7 +1161,7 @@ export interface operations {
|
|
|
1135
1161
|
[name: string]: unknown;
|
|
1136
1162
|
};
|
|
1137
1163
|
content: {
|
|
1138
|
-
"application/json": components["schemas"]["
|
|
1164
|
+
"application/json": components["schemas"]["ScopedTokenResponseBody"];
|
|
1139
1165
|
};
|
|
1140
1166
|
};
|
|
1141
1167
|
/** @description Error */
|