@archildata/api-types 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +3 -0
- package/index.d.ts +1448 -0
- package/package.json +31 -0
package/index.d.ts
ADDED
|
@@ -0,0 +1,1448 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This file was auto-generated by openapi-typescript.
|
|
3
|
+
* Do not make direct changes to the file.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
export interface paths {
|
|
7
|
+
"/api/disks": {
|
|
8
|
+
parameters: {
|
|
9
|
+
query?: never;
|
|
10
|
+
header?: never;
|
|
11
|
+
path?: never;
|
|
12
|
+
cookie?: never;
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* List all disks
|
|
16
|
+
* @description Returns all disks owned by the authenticated account.
|
|
17
|
+
*/
|
|
18
|
+
get: operations["listDisks"];
|
|
19
|
+
put?: never;
|
|
20
|
+
/**
|
|
21
|
+
* Create a new disk
|
|
22
|
+
* @description Creates a new disk with the specified configuration. A default token
|
|
23
|
+
* user is automatically generated and returned in the response, so the
|
|
24
|
+
* disk is immediately mountable. The one-time token appears in
|
|
25
|
+
* `authorizedUsers[].token` and cannot be retrieved again.
|
|
26
|
+
*
|
|
27
|
+
* To provide your own users instead, pass the deprecated `authMethods`
|
|
28
|
+
* field or call AddDiskUser after creation.
|
|
29
|
+
*/
|
|
30
|
+
post: operations["createDisk"];
|
|
31
|
+
delete?: never;
|
|
32
|
+
options?: never;
|
|
33
|
+
head?: never;
|
|
34
|
+
patch?: never;
|
|
35
|
+
trace?: never;
|
|
36
|
+
};
|
|
37
|
+
"/api/disks/{id}": {
|
|
38
|
+
parameters: {
|
|
39
|
+
query?: never;
|
|
40
|
+
header?: never;
|
|
41
|
+
path?: never;
|
|
42
|
+
cookie?: never;
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* Get disk details
|
|
46
|
+
* @description Returns detailed information about a specific disk.
|
|
47
|
+
*/
|
|
48
|
+
get: operations["getDisk"];
|
|
49
|
+
put?: never;
|
|
50
|
+
post?: never;
|
|
51
|
+
/**
|
|
52
|
+
* Delete a disk
|
|
53
|
+
* @description Deletes a disk and all associated resources.
|
|
54
|
+
*/
|
|
55
|
+
delete: operations["deleteDisk"];
|
|
56
|
+
options?: never;
|
|
57
|
+
head?: never;
|
|
58
|
+
patch?: never;
|
|
59
|
+
trace?: never;
|
|
60
|
+
};
|
|
61
|
+
"/api/disks/{id}/users": {
|
|
62
|
+
parameters: {
|
|
63
|
+
query?: never;
|
|
64
|
+
header?: never;
|
|
65
|
+
path?: never;
|
|
66
|
+
cookie?: never;
|
|
67
|
+
};
|
|
68
|
+
get?: never;
|
|
69
|
+
put?: never;
|
|
70
|
+
/**
|
|
71
|
+
* Add user to disk
|
|
72
|
+
* @description Adds an authorized user to a disk. Users can authenticate via:
|
|
73
|
+
* - **token**: A shared token with a nickname and 4-character suffix
|
|
74
|
+
* - **awssts**: AWS STS role assumption with an IAM principal ARN
|
|
75
|
+
*/
|
|
76
|
+
post: operations["addDiskUser"];
|
|
77
|
+
delete?: never;
|
|
78
|
+
options?: never;
|
|
79
|
+
head?: never;
|
|
80
|
+
patch?: never;
|
|
81
|
+
trace?: never;
|
|
82
|
+
};
|
|
83
|
+
"/api/disks/{id}/users/{userType}": {
|
|
84
|
+
parameters: {
|
|
85
|
+
query?: never;
|
|
86
|
+
header?: never;
|
|
87
|
+
path?: never;
|
|
88
|
+
cookie?: never;
|
|
89
|
+
};
|
|
90
|
+
get?: never;
|
|
91
|
+
put?: never;
|
|
92
|
+
post?: never;
|
|
93
|
+
/**
|
|
94
|
+
* Remove user from disk
|
|
95
|
+
* @description Removes an authorized user from a disk.
|
|
96
|
+
*/
|
|
97
|
+
delete: operations["removeDiskUser"];
|
|
98
|
+
options?: never;
|
|
99
|
+
head?: never;
|
|
100
|
+
patch?: never;
|
|
101
|
+
trace?: never;
|
|
102
|
+
};
|
|
103
|
+
"/api/disks/{id}/allowed-ips": {
|
|
104
|
+
parameters: {
|
|
105
|
+
query?: never;
|
|
106
|
+
header?: never;
|
|
107
|
+
path?: never;
|
|
108
|
+
cookie?: never;
|
|
109
|
+
};
|
|
110
|
+
/**
|
|
111
|
+
* Get IP allowlist
|
|
112
|
+
* @description Returns the current IP allowlist for a disk.
|
|
113
|
+
*/
|
|
114
|
+
get: operations["getAllowedIPs"];
|
|
115
|
+
/**
|
|
116
|
+
* Set IP allowlist
|
|
117
|
+
* @description Replaces the IP allowlist for a disk. When non-empty, only clients connecting from listed IPs or CIDR ranges can mount the disk. Pass an empty array to remove all restrictions.
|
|
118
|
+
*/
|
|
119
|
+
put: operations["setAllowedIPs"];
|
|
120
|
+
post?: never;
|
|
121
|
+
delete?: never;
|
|
122
|
+
options?: never;
|
|
123
|
+
head?: never;
|
|
124
|
+
patch?: never;
|
|
125
|
+
trace?: never;
|
|
126
|
+
};
|
|
127
|
+
"/api/disks/{id}/exec": {
|
|
128
|
+
parameters: {
|
|
129
|
+
query?: never;
|
|
130
|
+
header?: never;
|
|
131
|
+
path?: never;
|
|
132
|
+
cookie?: never;
|
|
133
|
+
};
|
|
134
|
+
get?: never;
|
|
135
|
+
put?: never;
|
|
136
|
+
/**
|
|
137
|
+
* Execute a command on a disk
|
|
138
|
+
* @description Launches a container with the specified disk mounted, runs the given
|
|
139
|
+
* command to completion, and shuts down the container. Returns immediately
|
|
140
|
+
* with the container info; poll the container endpoint for completion.
|
|
141
|
+
*/
|
|
142
|
+
post: operations["execDisk"];
|
|
143
|
+
delete?: never;
|
|
144
|
+
options?: never;
|
|
145
|
+
head?: never;
|
|
146
|
+
patch?: never;
|
|
147
|
+
trace?: never;
|
|
148
|
+
};
|
|
149
|
+
"/api/disks/{id}/grep": {
|
|
150
|
+
parameters: {
|
|
151
|
+
query?: never;
|
|
152
|
+
header?: never;
|
|
153
|
+
path?: never;
|
|
154
|
+
cookie?: never;
|
|
155
|
+
};
|
|
156
|
+
get?: never;
|
|
157
|
+
put?: never;
|
|
158
|
+
/**
|
|
159
|
+
* Constant-time parallel grep over a directory on a disk
|
|
160
|
+
* @description Searches files under a directory on the disk for lines matching a
|
|
161
|
+
* regular expression. Listing and matching are fanned out across
|
|
162
|
+
* ephemeral exec containers, so the request finishes within the user's
|
|
163
|
+
* time budget regardless of the size of the directory.
|
|
164
|
+
*
|
|
165
|
+
* The user controls cost and latency with three knobs:
|
|
166
|
+
*
|
|
167
|
+
* - `maxDurationSeconds` is the wall-clock deadline.
|
|
168
|
+
* - `concurrency` is the maximum number of parallel grep workers.
|
|
169
|
+
* Higher concurrency finishes larger datasets within the deadline;
|
|
170
|
+
* the controlplane clamps to the runtime fleet's current capacity.
|
|
171
|
+
* - `maxResults` causes the search to short-circuit after the
|
|
172
|
+
* aggregator has collected this many matches.
|
|
173
|
+
*
|
|
174
|
+
* With `recursive: false` only files directly under `directory` are
|
|
175
|
+
* searched. With `recursive: true` subdirectories are walked
|
|
176
|
+
* breadth-first and grep workers are dispatched as soon as each level
|
|
177
|
+
* finishes listing — listing and matching overlap.
|
|
178
|
+
*
|
|
179
|
+
* The matches returned when stopping early on `maxResults` are a sample
|
|
180
|
+
* of whichever workers reported first, not the lexicographically first
|
|
181
|
+
* N. The response surfaces `stoppedReason` so callers can distinguish
|
|
182
|
+
* completion from early termination.
|
|
183
|
+
*/
|
|
184
|
+
post: operations["grepDisk"];
|
|
185
|
+
delete?: never;
|
|
186
|
+
options?: never;
|
|
187
|
+
head?: never;
|
|
188
|
+
patch?: never;
|
|
189
|
+
trace?: never;
|
|
190
|
+
};
|
|
191
|
+
"/api/exec": {
|
|
192
|
+
parameters: {
|
|
193
|
+
query?: never;
|
|
194
|
+
header?: never;
|
|
195
|
+
path?: never;
|
|
196
|
+
cookie?: never;
|
|
197
|
+
};
|
|
198
|
+
get?: never;
|
|
199
|
+
put?: never;
|
|
200
|
+
/**
|
|
201
|
+
* Execute a command with multiple disks mounted
|
|
202
|
+
* @description Launches a container with the supplied set of disks each mounted at its
|
|
203
|
+
* own relative path under `/mnt/archil`, runs the command to completion,
|
|
204
|
+
* and shuts down the container. Activation is atomic: every disk mounts
|
|
205
|
+
* or none of them do.
|
|
206
|
+
*
|
|
207
|
+
* Relative paths must be non-empty, non-absolute, and contain no `.` /
|
|
208
|
+
* `..` segments. Mounting two disks at the same relative path is an
|
|
209
|
+
* error.
|
|
210
|
+
*/
|
|
211
|
+
post: operations["exec"];
|
|
212
|
+
delete?: never;
|
|
213
|
+
options?: never;
|
|
214
|
+
head?: never;
|
|
215
|
+
patch?: never;
|
|
216
|
+
trace?: never;
|
|
217
|
+
};
|
|
218
|
+
"/api/tokens": {
|
|
219
|
+
parameters: {
|
|
220
|
+
query?: never;
|
|
221
|
+
header?: never;
|
|
222
|
+
path?: never;
|
|
223
|
+
cookie?: never;
|
|
224
|
+
};
|
|
225
|
+
/**
|
|
226
|
+
* List API tokens
|
|
227
|
+
* @description Returns all API tokens for the authenticated account.
|
|
228
|
+
*/
|
|
229
|
+
get: operations["listApiTokens"];
|
|
230
|
+
put?: never;
|
|
231
|
+
/**
|
|
232
|
+
* Create API token
|
|
233
|
+
* @description Creates a new API token for programmatic access. The full token value
|
|
234
|
+
* is only returned once at creation time.
|
|
235
|
+
*/
|
|
236
|
+
post: operations["createApiToken"];
|
|
237
|
+
delete?: never;
|
|
238
|
+
options?: never;
|
|
239
|
+
head?: never;
|
|
240
|
+
patch?: never;
|
|
241
|
+
trace?: never;
|
|
242
|
+
};
|
|
243
|
+
"/api/tokens/{id}": {
|
|
244
|
+
parameters: {
|
|
245
|
+
query?: never;
|
|
246
|
+
header?: never;
|
|
247
|
+
path?: never;
|
|
248
|
+
cookie?: never;
|
|
249
|
+
};
|
|
250
|
+
get?: never;
|
|
251
|
+
put?: never;
|
|
252
|
+
post?: never;
|
|
253
|
+
/**
|
|
254
|
+
* Delete API token
|
|
255
|
+
* @description Revokes and deletes an API token.
|
|
256
|
+
*/
|
|
257
|
+
delete: operations["deleteApiToken"];
|
|
258
|
+
options?: never;
|
|
259
|
+
head?: never;
|
|
260
|
+
patch?: never;
|
|
261
|
+
trace?: never;
|
|
262
|
+
};
|
|
263
|
+
}
|
|
264
|
+
export type webhooks = Record<string, never>;
|
|
265
|
+
export interface components {
|
|
266
|
+
schemas: {
|
|
267
|
+
ErrorResponse: {
|
|
268
|
+
/** @example false */
|
|
269
|
+
success: boolean;
|
|
270
|
+
/** @example Invalid request parameters */
|
|
271
|
+
error: string;
|
|
272
|
+
};
|
|
273
|
+
ApiResponse_Empty: {
|
|
274
|
+
/** @example true */
|
|
275
|
+
success: boolean;
|
|
276
|
+
};
|
|
277
|
+
ApiResponse_Message: {
|
|
278
|
+
/** @example true */
|
|
279
|
+
success: boolean;
|
|
280
|
+
data: {
|
|
281
|
+
message?: string;
|
|
282
|
+
};
|
|
283
|
+
};
|
|
284
|
+
CreateDiskRequest: {
|
|
285
|
+
/**
|
|
286
|
+
* @description Disk name (alphanumeric, dashes, underscores)
|
|
287
|
+
* @example my-data-disk
|
|
288
|
+
*/
|
|
289
|
+
name: string;
|
|
290
|
+
/** @description Storage mount to attach. Omit for archil-managed storage. */
|
|
291
|
+
mounts?: components["schemas"]["MountConfig"][];
|
|
292
|
+
/**
|
|
293
|
+
* @description IP allowlist for mount access. When non-empty, only clients connecting from these IPs or CIDR ranges can mount the disk. An empty list (default) allows all IPs.
|
|
294
|
+
* @example [
|
|
295
|
+
* "203.0.113.0/24",
|
|
296
|
+
* "198.51.100.42"
|
|
297
|
+
* ]
|
|
298
|
+
*/
|
|
299
|
+
allowedIps?: string[];
|
|
300
|
+
/**
|
|
301
|
+
* @deprecated
|
|
302
|
+
* @description Deprecated. Use AddDiskUser after creation instead. When provided, suppresses the default auto-generated token user.
|
|
303
|
+
*/
|
|
304
|
+
authMethods?: components["schemas"]["DiskUser"][];
|
|
305
|
+
};
|
|
306
|
+
MountConfig: components["schemas"]["S3Mount"] | components["schemas"]["GCSMount"] | components["schemas"]["R2Mount"] | components["schemas"]["S3CompatibleMount"] | components["schemas"]["AzureBlobMount"];
|
|
307
|
+
/**
|
|
308
|
+
* S3
|
|
309
|
+
* @description Mount configuration for Amazon S3 buckets
|
|
310
|
+
*/
|
|
311
|
+
S3Mount: {
|
|
312
|
+
/**
|
|
313
|
+
* @description Mount type identifier (enum property replaced by openapi-typescript)
|
|
314
|
+
* @enum {string}
|
|
315
|
+
*/
|
|
316
|
+
type: "s3";
|
|
317
|
+
/**
|
|
318
|
+
* @description S3 bucket name
|
|
319
|
+
* @example my-bucket
|
|
320
|
+
*/
|
|
321
|
+
bucketName: string;
|
|
322
|
+
/** @description AWS access key ID (optional for public buckets or IAM role auth) */
|
|
323
|
+
accessKeyId?: string;
|
|
324
|
+
/**
|
|
325
|
+
* Format: password
|
|
326
|
+
* @description AWS secret access key
|
|
327
|
+
*/
|
|
328
|
+
secretAccessKey?: string;
|
|
329
|
+
/** @description Session token for temporary credentials */
|
|
330
|
+
sessionToken?: string;
|
|
331
|
+
/**
|
|
332
|
+
* @description Prefix within the bucket
|
|
333
|
+
* @example data/
|
|
334
|
+
*/
|
|
335
|
+
bucketPrefix?: string;
|
|
336
|
+
};
|
|
337
|
+
/**
|
|
338
|
+
* Google Cloud Storage
|
|
339
|
+
* @description Mount configuration for Google Cloud Storage buckets
|
|
340
|
+
*/
|
|
341
|
+
GCSMount: {
|
|
342
|
+
/**
|
|
343
|
+
* @description Mount type identifier (enum property replaced by openapi-typescript)
|
|
344
|
+
* @enum {string}
|
|
345
|
+
*/
|
|
346
|
+
type: "gcs";
|
|
347
|
+
/**
|
|
348
|
+
* @description GCS bucket name
|
|
349
|
+
* @example my-gcs-bucket
|
|
350
|
+
*/
|
|
351
|
+
bucketName: string;
|
|
352
|
+
/** @description HMAC access key ID */
|
|
353
|
+
accessKeyId: string;
|
|
354
|
+
/**
|
|
355
|
+
* Format: password
|
|
356
|
+
* @description HMAC secret access key
|
|
357
|
+
*/
|
|
358
|
+
secretAccessKey: string;
|
|
359
|
+
/**
|
|
360
|
+
* @description Prefix within the bucket (optional)
|
|
361
|
+
* @example data/
|
|
362
|
+
*/
|
|
363
|
+
bucketPrefix?: string;
|
|
364
|
+
};
|
|
365
|
+
/**
|
|
366
|
+
* Cloudflare R2
|
|
367
|
+
* @description Mount configuration for Cloudflare R2 buckets
|
|
368
|
+
*/
|
|
369
|
+
R2Mount: {
|
|
370
|
+
/**
|
|
371
|
+
* @description Mount type identifier (enum property replaced by openapi-typescript)
|
|
372
|
+
* @enum {string}
|
|
373
|
+
*/
|
|
374
|
+
type: "r2";
|
|
375
|
+
/**
|
|
376
|
+
* @description R2 bucket name
|
|
377
|
+
* @example my-r2-bucket
|
|
378
|
+
*/
|
|
379
|
+
bucketName: string;
|
|
380
|
+
/**
|
|
381
|
+
* @description R2 endpoint URL
|
|
382
|
+
* @example https://accountid.r2.cloudflarestorage.com
|
|
383
|
+
*/
|
|
384
|
+
bucketEndpoint: string;
|
|
385
|
+
/** @description R2 access key ID */
|
|
386
|
+
accessKeyId: string;
|
|
387
|
+
/**
|
|
388
|
+
* Format: password
|
|
389
|
+
* @description R2 secret access key
|
|
390
|
+
*/
|
|
391
|
+
secretAccessKey: string;
|
|
392
|
+
/**
|
|
393
|
+
* @description Prefix within the bucket (optional)
|
|
394
|
+
* @example data/
|
|
395
|
+
*/
|
|
396
|
+
bucketPrefix?: string;
|
|
397
|
+
};
|
|
398
|
+
/**
|
|
399
|
+
* S3-Compatible
|
|
400
|
+
* @description Mount configuration for S3-compatible storage (MinIO, Backblaze B2, etc.)
|
|
401
|
+
*/
|
|
402
|
+
S3CompatibleMount: {
|
|
403
|
+
/**
|
|
404
|
+
* @description Mount type identifier (enum property replaced by openapi-typescript)
|
|
405
|
+
* @enum {string}
|
|
406
|
+
*/
|
|
407
|
+
type: "s3-compatible";
|
|
408
|
+
/**
|
|
409
|
+
* @description Bucket name
|
|
410
|
+
* @example my-bucket
|
|
411
|
+
*/
|
|
412
|
+
bucketName: string;
|
|
413
|
+
/**
|
|
414
|
+
* @description S3-compatible endpoint URL
|
|
415
|
+
* @example https://s3.us-west-001.backblazeb2.com
|
|
416
|
+
*/
|
|
417
|
+
bucketEndpoint: string;
|
|
418
|
+
/** @description Access key ID */
|
|
419
|
+
accessKeyId: string;
|
|
420
|
+
/**
|
|
421
|
+
* Format: password
|
|
422
|
+
* @description Secret access key
|
|
423
|
+
*/
|
|
424
|
+
secretAccessKey: string;
|
|
425
|
+
/**
|
|
426
|
+
* @description Prefix within the bucket (optional)
|
|
427
|
+
* @example data/
|
|
428
|
+
*/
|
|
429
|
+
bucketPrefix?: string;
|
|
430
|
+
};
|
|
431
|
+
/**
|
|
432
|
+
* Azure Blob Storage
|
|
433
|
+
* @description Mount configuration for Azure Blob Storage containers
|
|
434
|
+
*/
|
|
435
|
+
AzureBlobMount: {
|
|
436
|
+
/**
|
|
437
|
+
* @description Mount type identifier (enum property replaced by openapi-typescript)
|
|
438
|
+
* @enum {string}
|
|
439
|
+
*/
|
|
440
|
+
type: "azure-blob";
|
|
441
|
+
/**
|
|
442
|
+
* @description Azure blob container name
|
|
443
|
+
* @example my-container
|
|
444
|
+
*/
|
|
445
|
+
containerName: string;
|
|
446
|
+
/**
|
|
447
|
+
* @description Azure blob endpoint URL (optional if storageAccountName provided)
|
|
448
|
+
* @example https://myaccount.blob.core.windows.net
|
|
449
|
+
*/
|
|
450
|
+
endpoint?: string;
|
|
451
|
+
/**
|
|
452
|
+
* @description Azure storage account name (used to derive endpoint if not provided)
|
|
453
|
+
* @example myaccount
|
|
454
|
+
*/
|
|
455
|
+
storageAccountName?: string;
|
|
456
|
+
/** @description Azure AD tenant ID */
|
|
457
|
+
tenantId: string;
|
|
458
|
+
/** @description Azure AD application client ID */
|
|
459
|
+
clientId: string;
|
|
460
|
+
/**
|
|
461
|
+
* Format: password
|
|
462
|
+
* @description Azure AD application client secret
|
|
463
|
+
*/
|
|
464
|
+
clientSecret: string;
|
|
465
|
+
/**
|
|
466
|
+
* @description Prefix within the container
|
|
467
|
+
* @example data/
|
|
468
|
+
*/
|
|
469
|
+
bucketPrefix?: string;
|
|
470
|
+
};
|
|
471
|
+
TokenUser: {
|
|
472
|
+
/**
|
|
473
|
+
* @description discriminator enum property added by openapi-typescript
|
|
474
|
+
* @enum {string}
|
|
475
|
+
*/
|
|
476
|
+
type: "token";
|
|
477
|
+
/**
|
|
478
|
+
* @deprecated
|
|
479
|
+
* @description Deprecated. Client-provided token. If omitted, the server generates a cryptographically secure token and returns it in the response.
|
|
480
|
+
*/
|
|
481
|
+
principal?: string;
|
|
482
|
+
nickname: string;
|
|
483
|
+
/**
|
|
484
|
+
* @deprecated
|
|
485
|
+
* @description Deprecated. Last 4 characters of the token. Required when principal is provided; ignored when the server generates the token.
|
|
486
|
+
*/
|
|
487
|
+
tokenSuffix?: string;
|
|
488
|
+
};
|
|
489
|
+
AwsStsUser: {
|
|
490
|
+
/**
|
|
491
|
+
* @description discriminator enum property added by openapi-typescript
|
|
492
|
+
* @enum {string}
|
|
493
|
+
*/
|
|
494
|
+
type: "awssts";
|
|
495
|
+
/** @description IAM principal ARN */
|
|
496
|
+
principal: string;
|
|
497
|
+
};
|
|
498
|
+
DiskUser: components["schemas"]["TokenUser"] | components["schemas"]["AwsStsUser"];
|
|
499
|
+
DiskResponse: {
|
|
500
|
+
/**
|
|
501
|
+
* @description Disk ID
|
|
502
|
+
* @example dsk-0123456789abcdef
|
|
503
|
+
*/
|
|
504
|
+
id: string;
|
|
505
|
+
/** @description Disk name */
|
|
506
|
+
name: string;
|
|
507
|
+
/** @description Owning organization ID */
|
|
508
|
+
organization: string;
|
|
509
|
+
/**
|
|
510
|
+
* @description Disk status
|
|
511
|
+
* @enum {string}
|
|
512
|
+
*/
|
|
513
|
+
status: "available" | "creating" | "deleting" | "deleted" | "failed";
|
|
514
|
+
/** @description Filesystem handler status */
|
|
515
|
+
fsHandlerStatus?: string;
|
|
516
|
+
/** @description Cloud provider */
|
|
517
|
+
provider: string;
|
|
518
|
+
/** @description Disk region (e.g., aws-us-east-1, gcp-us-central1) */
|
|
519
|
+
region: string;
|
|
520
|
+
/**
|
|
521
|
+
* Format: date-time
|
|
522
|
+
* @description Creation timestamp
|
|
523
|
+
*/
|
|
524
|
+
createdAt: string;
|
|
525
|
+
/**
|
|
526
|
+
* Format: date-time
|
|
527
|
+
* @description Last access timestamp
|
|
528
|
+
*/
|
|
529
|
+
lastAccessed?: string;
|
|
530
|
+
/**
|
|
531
|
+
* Format: int64
|
|
532
|
+
* @description Total data size in bytes
|
|
533
|
+
*/
|
|
534
|
+
dataSize?: number;
|
|
535
|
+
/** @description Monthly usage amount formatted as a currency string (e.g., "$1.23") */
|
|
536
|
+
monthlyUsage?: string;
|
|
537
|
+
mounts?: components["schemas"]["MountResponse"][];
|
|
538
|
+
metrics?: components["schemas"]["DiskMetrics"];
|
|
539
|
+
connectedClients?: components["schemas"]["ConnectedClient"][];
|
|
540
|
+
authorizedUsers?: components["schemas"]["AuthorizedUser"][];
|
|
541
|
+
/**
|
|
542
|
+
* @description IP allowlist for mount access. Empty means all IPs are allowed.
|
|
543
|
+
* @example [
|
|
544
|
+
* "203.0.113.0/24"
|
|
545
|
+
* ]
|
|
546
|
+
*/
|
|
547
|
+
allowedIps?: string[];
|
|
548
|
+
/**
|
|
549
|
+
* @description Capabilities supported by this disk. Determined at creation
|
|
550
|
+
* time and immutable thereafter. Defined values:
|
|
551
|
+
*
|
|
552
|
+
* * `checkpoints` — checkpoints can be created on this disk. Not
|
|
553
|
+
* available for disks with bring-your-own buckets.
|
|
554
|
+
* @example [
|
|
555
|
+
* "checkpoints"
|
|
556
|
+
* ]
|
|
557
|
+
*/
|
|
558
|
+
capabilities?: "checkpoints"[];
|
|
559
|
+
};
|
|
560
|
+
MountResponse: {
|
|
561
|
+
/** @description Mount identifier */
|
|
562
|
+
id?: string;
|
|
563
|
+
/**
|
|
564
|
+
* @description Storage backend type
|
|
565
|
+
* @enum {string}
|
|
566
|
+
*/
|
|
567
|
+
type?: "s3" | "gcs" | "r2" | "s3-compatible" | "azure-blob";
|
|
568
|
+
/** @description Mount path */
|
|
569
|
+
path?: string;
|
|
570
|
+
/** @description Bucket/container name */
|
|
571
|
+
name?: string;
|
|
572
|
+
/**
|
|
573
|
+
* @description Access mode
|
|
574
|
+
* @example rw
|
|
575
|
+
* @enum {string}
|
|
576
|
+
*/
|
|
577
|
+
accessMode?: "rw" | "ro";
|
|
578
|
+
config?: components["schemas"]["MountConfigResponse"];
|
|
579
|
+
/**
|
|
580
|
+
* @description Current connection status
|
|
581
|
+
* @enum {string}
|
|
582
|
+
*/
|
|
583
|
+
connectionStatus?: "connected" | "disconnected";
|
|
584
|
+
/** @description Authentication error message (if disconnected) */
|
|
585
|
+
authError?: string;
|
|
586
|
+
/**
|
|
587
|
+
* @description How the mount authenticates to the storage backend
|
|
588
|
+
* @enum {string}
|
|
589
|
+
*/
|
|
590
|
+
authorizationType?: "iam" | "accessKeys" | "oauth";
|
|
591
|
+
};
|
|
592
|
+
/** @description Mount configuration details (secrets omitted) */
|
|
593
|
+
MountConfigResponse: {
|
|
594
|
+
/** @description Bucket name */
|
|
595
|
+
bucketName?: string;
|
|
596
|
+
/** @description Storage endpoint URL */
|
|
597
|
+
bucketEndpoint?: string;
|
|
598
|
+
/** @description Prefix within the bucket */
|
|
599
|
+
bucketPrefix?: string;
|
|
600
|
+
/** @description Session identifier for IAM-authorized mounts */
|
|
601
|
+
sessionId?: string;
|
|
602
|
+
};
|
|
603
|
+
DiskMetrics: {
|
|
604
|
+
/** @description Data transfer amount with unit (e.g., "1.5 GB") */
|
|
605
|
+
dataTransfer?: string;
|
|
606
|
+
/** @description Total request count as a formatted string (e.g., "1,234") */
|
|
607
|
+
requests?: string;
|
|
608
|
+
/** @description Average response time with unit (e.g., "45ms") */
|
|
609
|
+
avgResponseTime?: string;
|
|
610
|
+
};
|
|
611
|
+
ConnectedClient: {
|
|
612
|
+
id?: string;
|
|
613
|
+
ipAddress?: string;
|
|
614
|
+
/** Format: date-time */
|
|
615
|
+
connectedAt?: string;
|
|
616
|
+
};
|
|
617
|
+
AuthorizedUser: {
|
|
618
|
+
/** @enum {string} */
|
|
619
|
+
type?: "token" | "awssts";
|
|
620
|
+
/**
|
|
621
|
+
* @deprecated
|
|
622
|
+
* @description Use identifier instead. Only populated for awssts type (the IAM ARN).
|
|
623
|
+
*/
|
|
624
|
+
principal?: string;
|
|
625
|
+
nickname?: string;
|
|
626
|
+
tokenSuffix?: string;
|
|
627
|
+
/** @description The generated mount token. Only present in the response when the server generates the token (i.e. principal was not provided). This value is shown exactly once and cannot be retrieved again. */
|
|
628
|
+
token?: string;
|
|
629
|
+
/** @description Stable identifier for this user, returned in creation and list responses. Use this value with DELETE /api/disks/{id}/users/{type}?identifier={identifier} to remove the user. For awssts users, this is the IAM ARN. */
|
|
630
|
+
identifier?: string;
|
|
631
|
+
/** Format: date-time */
|
|
632
|
+
createdAt?: string;
|
|
633
|
+
};
|
|
634
|
+
/** @description All API responses use a standard envelope with `success: boolean` and `data` (on success) or `error: string` (on failure). The ApiResponse_* schemas each define the specific `data` shape for their endpoint. */
|
|
635
|
+
ApiResponse_DiskList: {
|
|
636
|
+
/** @example true */
|
|
637
|
+
success: boolean;
|
|
638
|
+
data: components["schemas"]["DiskResponse"][];
|
|
639
|
+
};
|
|
640
|
+
ApiResponse_Disk: {
|
|
641
|
+
/** @example true */
|
|
642
|
+
success: boolean;
|
|
643
|
+
data: components["schemas"]["DiskResponse"];
|
|
644
|
+
};
|
|
645
|
+
ApiResponse_CreateDisk: {
|
|
646
|
+
/** @example true */
|
|
647
|
+
success: boolean;
|
|
648
|
+
data: {
|
|
649
|
+
/** @example dsk-0123456789abcdef */
|
|
650
|
+
diskId?: string;
|
|
651
|
+
authorizedUsers?: components["schemas"]["AuthorizedUser"][];
|
|
652
|
+
};
|
|
653
|
+
};
|
|
654
|
+
ApiResponse_AuthorizedUser: {
|
|
655
|
+
/** @example true */
|
|
656
|
+
success: boolean;
|
|
657
|
+
data: components["schemas"]["AuthorizedUser"];
|
|
658
|
+
};
|
|
659
|
+
ApiResponse_AllowedIPs: {
|
|
660
|
+
/** @example true */
|
|
661
|
+
success: boolean;
|
|
662
|
+
data: {
|
|
663
|
+
/**
|
|
664
|
+
* @example [
|
|
665
|
+
* "203.0.113.0/24",
|
|
666
|
+
* "198.51.100.42"
|
|
667
|
+
* ]
|
|
668
|
+
*/
|
|
669
|
+
allowedIps: string[];
|
|
670
|
+
};
|
|
671
|
+
};
|
|
672
|
+
CreateApiTokenRequest: {
|
|
673
|
+
/** @description Token name */
|
|
674
|
+
name: string;
|
|
675
|
+
/** @description Token description */
|
|
676
|
+
description?: string;
|
|
677
|
+
};
|
|
678
|
+
ApiTokenResponse: {
|
|
679
|
+
/** @description Token hash/ID */
|
|
680
|
+
id?: string;
|
|
681
|
+
name?: string;
|
|
682
|
+
description?: string;
|
|
683
|
+
/** @description Last 4 characters of the token */
|
|
684
|
+
tokenSuffix?: string;
|
|
685
|
+
/** Format: date-time */
|
|
686
|
+
createdAt?: string;
|
|
687
|
+
/** Format: date-time */
|
|
688
|
+
lastUsedAt?: string;
|
|
689
|
+
};
|
|
690
|
+
ApiResponse_TokenList: {
|
|
691
|
+
/** @example true */
|
|
692
|
+
success: boolean;
|
|
693
|
+
data: {
|
|
694
|
+
tokens?: components["schemas"]["ApiTokenResponse"][];
|
|
695
|
+
};
|
|
696
|
+
};
|
|
697
|
+
ApiResponse_TokenCreated: {
|
|
698
|
+
/** @example true */
|
|
699
|
+
success: boolean;
|
|
700
|
+
data: components["schemas"]["ApiTokenResponse"] & {
|
|
701
|
+
/**
|
|
702
|
+
* @description Full token value (only shown at creation)
|
|
703
|
+
* @example key-abc123...
|
|
704
|
+
*/
|
|
705
|
+
token?: string;
|
|
706
|
+
};
|
|
707
|
+
};
|
|
708
|
+
ExecDiskRequest: {
|
|
709
|
+
/**
|
|
710
|
+
* @description Shell command to execute inside the container
|
|
711
|
+
* @example ls -la /mnt/archil
|
|
712
|
+
*/
|
|
713
|
+
command: string;
|
|
714
|
+
};
|
|
715
|
+
ExecDiskResult: {
|
|
716
|
+
/**
|
|
717
|
+
* @description Exit code of the command (0 = success)
|
|
718
|
+
* @example 0
|
|
719
|
+
*/
|
|
720
|
+
exitCode: number;
|
|
721
|
+
/** @description Standard output from the command */
|
|
722
|
+
stdout: string;
|
|
723
|
+
/** @description Standard error from the command */
|
|
724
|
+
stderr: string;
|
|
725
|
+
timing: components["schemas"]["ExecTiming"];
|
|
726
|
+
};
|
|
727
|
+
/** @description Server-measured timings for an exec request. */
|
|
728
|
+
ExecTiming: {
|
|
729
|
+
/**
|
|
730
|
+
* @description End-to-end wall clock measured on the server, from request arrival to response.
|
|
731
|
+
* @example 2450
|
|
732
|
+
*/
|
|
733
|
+
totalMs: number;
|
|
734
|
+
/**
|
|
735
|
+
* @description Time spent queueing, scheduling, booting/claiming a VM, and mounting the filesystem before the command started running.
|
|
736
|
+
* @example 150
|
|
737
|
+
*/
|
|
738
|
+
queueMs: number;
|
|
739
|
+
/**
|
|
740
|
+
* @description Time the user's command itself ran, measured by the runtime.
|
|
741
|
+
* @example 2300
|
|
742
|
+
*/
|
|
743
|
+
executeMs: number;
|
|
744
|
+
};
|
|
745
|
+
ApiResponse_ExecDisk: {
|
|
746
|
+
/** @example true */
|
|
747
|
+
success: boolean;
|
|
748
|
+
data: components["schemas"]["ExecDiskResult"];
|
|
749
|
+
};
|
|
750
|
+
ExecRequest: {
|
|
751
|
+
/**
|
|
752
|
+
* @description Map of relative path under `/mnt/archil` to the disk to mount
|
|
753
|
+
* there. At least one entry is required. Relative paths must be
|
|
754
|
+
* non-empty, non-absolute, and contain no `.` or `..` segments.
|
|
755
|
+
*
|
|
756
|
+
* Each value is either a plain disk ID string (mounts the disk's
|
|
757
|
+
* root, read-write) or an object that additionally selects a
|
|
758
|
+
* subdirectory of the disk and/or marks the mount as read-only,
|
|
759
|
+
* conditional, or requests delegation checkouts before the command
|
|
760
|
+
* starts. `checkoutPaths` are relative to that disk's exposed mount
|
|
761
|
+
* root. `queueMs` is an optional timeout for delegation acquisition;
|
|
762
|
+
* with `checkoutPaths`, it applies to each requested checkout, and
|
|
763
|
+
* without `checkoutPaths`, the mount root is acquired during mount
|
|
764
|
+
* setup. Delegation checkout options are rejected with `readOnly:
|
|
765
|
+
* true`.
|
|
766
|
+
* @example {
|
|
767
|
+
* "data": "dsk-abc123",
|
|
768
|
+
* "logs": {
|
|
769
|
+
* "disk": "dsk-def456",
|
|
770
|
+
* "subdirectory": "app/logs",
|
|
771
|
+
* "readOnly": true
|
|
772
|
+
* }
|
|
773
|
+
* }
|
|
774
|
+
*/
|
|
775
|
+
disks: {
|
|
776
|
+
[key: string]: string | components["schemas"]["ExecMount"];
|
|
777
|
+
};
|
|
778
|
+
/**
|
|
779
|
+
* @description Shell command to execute inside the container
|
|
780
|
+
* @example ls -la /mnt/archil/data /mnt/archil/logs
|
|
781
|
+
*/
|
|
782
|
+
command: string;
|
|
783
|
+
};
|
|
784
|
+
ExecMount: {
|
|
785
|
+
/**
|
|
786
|
+
* @description Disk ID to mount at this relative path
|
|
787
|
+
* @example dsk-abc123
|
|
788
|
+
*/
|
|
789
|
+
disk: string;
|
|
790
|
+
/**
|
|
791
|
+
* @description Subdirectory of the disk to expose at the mountpoint. Must be a
|
|
792
|
+
* relative path with no `.` or `..` segments. When omitted, the
|
|
793
|
+
* disk's root is exposed.
|
|
794
|
+
* @example app/logs
|
|
795
|
+
*/
|
|
796
|
+
subdirectory?: string;
|
|
797
|
+
/**
|
|
798
|
+
* @description When true, the disk is mounted read-only inside the container.
|
|
799
|
+
* Writes against the mount fail with EROFS.
|
|
800
|
+
* @default false
|
|
801
|
+
*/
|
|
802
|
+
readOnly: boolean;
|
|
803
|
+
/**
|
|
804
|
+
* @description When true, the disk is mounted in conditional mode, where mutating
|
|
805
|
+
* operations are sent directly to the server without a delegation
|
|
806
|
+
* checkout. This enables concurrent writes from multiple clients to
|
|
807
|
+
* the same disk.
|
|
808
|
+
* @default false
|
|
809
|
+
*/
|
|
810
|
+
conditional: boolean;
|
|
811
|
+
/**
|
|
812
|
+
* Format: uint64
|
|
813
|
+
* @description Optional delegation checkout queue timeout, in milliseconds. With
|
|
814
|
+
* `checkoutPaths`, it applies to each requested checkout. Without
|
|
815
|
+
* `checkoutPaths`, the exposed mount root is acquired during mount
|
|
816
|
+
* setup. Rejected with `readOnly: true`.
|
|
817
|
+
*/
|
|
818
|
+
queueMs?: number;
|
|
819
|
+
/**
|
|
820
|
+
* @description Paths relative to this disk's exposed mount root to check out before
|
|
821
|
+
* the command starts. May be set without `queueMs`; those checkouts
|
|
822
|
+
* try immediately without waiting in the delegation queue. Rejected
|
|
823
|
+
* with `readOnly: true`.
|
|
824
|
+
* @example [
|
|
825
|
+
* "src",
|
|
826
|
+
* "tmp/cache"
|
|
827
|
+
* ]
|
|
828
|
+
*/
|
|
829
|
+
checkoutPaths?: string[];
|
|
830
|
+
};
|
|
831
|
+
ApiResponse_Exec: {
|
|
832
|
+
/** @example true */
|
|
833
|
+
success: boolean;
|
|
834
|
+
data: components["schemas"]["ExecDiskResult"];
|
|
835
|
+
};
|
|
836
|
+
GrepDiskRequest: {
|
|
837
|
+
/**
|
|
838
|
+
* @description Directory on the disk to search, relative to the disk root.
|
|
839
|
+
* An empty string or "/" means the disk root.
|
|
840
|
+
* @example data/logs
|
|
841
|
+
*/
|
|
842
|
+
directory: string;
|
|
843
|
+
/**
|
|
844
|
+
* @description Extended regular expression (passed to `grep -E`)
|
|
845
|
+
* @example ERROR|FATAL
|
|
846
|
+
*/
|
|
847
|
+
pattern: string;
|
|
848
|
+
/**
|
|
849
|
+
* @description When true, walks subdirectories breadth-first.
|
|
850
|
+
* @default false
|
|
851
|
+
*/
|
|
852
|
+
recursive: boolean;
|
|
853
|
+
/**
|
|
854
|
+
* @description Wall-clock deadline for the entire request. Capped at 30
|
|
855
|
+
* seconds because the runtime exec container itself is bounded
|
|
856
|
+
* at ~30s; longer requests would have their workers killed
|
|
857
|
+
* mid-scan.
|
|
858
|
+
* @default 30
|
|
859
|
+
*/
|
|
860
|
+
maxDurationSeconds: number;
|
|
861
|
+
/**
|
|
862
|
+
* @description Maximum number of parallel grep workers. Higher values finish
|
|
863
|
+
* larger datasets within the deadline but consume more runtime
|
|
864
|
+
* capacity. The controlplane clamps this to the fleet's
|
|
865
|
+
* currently-available capacity.
|
|
866
|
+
* @default 50
|
|
867
|
+
*/
|
|
868
|
+
concurrency: number;
|
|
869
|
+
/**
|
|
870
|
+
* @description Stop scanning once the aggregator has this many matches.
|
|
871
|
+
* Returned matches are a sample of whichever workers reported
|
|
872
|
+
* first, not the lexicographically first N.
|
|
873
|
+
* @default 1000
|
|
874
|
+
*/
|
|
875
|
+
maxResults: number;
|
|
876
|
+
};
|
|
877
|
+
GrepMatch: {
|
|
878
|
+
/**
|
|
879
|
+
* @description Path to the file (relative to the disk root).
|
|
880
|
+
* @example data/logs/2026-05-03.log
|
|
881
|
+
*/
|
|
882
|
+
file: string;
|
|
883
|
+
/**
|
|
884
|
+
* @description 1-based line number where the match occurred.
|
|
885
|
+
* @example 142
|
|
886
|
+
*/
|
|
887
|
+
line: number;
|
|
888
|
+
/** @description The matching line. */
|
|
889
|
+
text: string;
|
|
890
|
+
};
|
|
891
|
+
/**
|
|
892
|
+
* @description Why the search stopped.
|
|
893
|
+
* - `completed`: every file under the directory was scanned successfully.
|
|
894
|
+
* - `incomplete`: pipeline ran to its natural end but one or more
|
|
895
|
+
* batches errored (invalid regex, unreadable file, runtime issue).
|
|
896
|
+
* Results may be partial or wrong; do not rely on completeness.
|
|
897
|
+
* - `max_results`: hit `maxResults` before scanning everything.
|
|
898
|
+
* - `deadline`: hit `maxDurationSeconds`.
|
|
899
|
+
* - `list_failed`: directory listing failed; partial results
|
|
900
|
+
* may be present.
|
|
901
|
+
* @enum {string}
|
|
902
|
+
*/
|
|
903
|
+
GrepStoppedReason: "completed" | "incomplete" | "max_results" | "deadline" | "list_failed";
|
|
904
|
+
GrepDiskResult: {
|
|
905
|
+
matches: components["schemas"]["GrepMatch"][];
|
|
906
|
+
stoppedReason: components["schemas"]["GrepStoppedReason"];
|
|
907
|
+
/** @description Files actually fed to a grep container. */
|
|
908
|
+
filesScanned: number;
|
|
909
|
+
/** @description Number of grep containers started for this request. */
|
|
910
|
+
containersDispatched: number;
|
|
911
|
+
/**
|
|
912
|
+
* Format: double
|
|
913
|
+
* @description Sum of per-container execution time in seconds, measured by the
|
|
914
|
+
* runtime. Approximates billable container-seconds.
|
|
915
|
+
*/
|
|
916
|
+
computeSecondsUsed: number;
|
|
917
|
+
/** @description End-to-end wall clock measured by the server. */
|
|
918
|
+
durationMs: number;
|
|
919
|
+
/**
|
|
920
|
+
* @description Wall-clock time spent enumerating files via listObjects, from
|
|
921
|
+
* the request's start to the moment listing fully drained (or
|
|
922
|
+
* was canceled). Listing and matching overlap, so listingMs +
|
|
923
|
+
* grepMs typically exceeds durationMs.
|
|
924
|
+
*/
|
|
925
|
+
listingMs: number;
|
|
926
|
+
/**
|
|
927
|
+
* @description Wall-clock time spent matching, from the first grep container
|
|
928
|
+
* being dispatched to the last container reporting results. 0 if
|
|
929
|
+
* no batches ran.
|
|
930
|
+
*/
|
|
931
|
+
grepMs: number;
|
|
932
|
+
};
|
|
933
|
+
ApiResponse_GrepDisk: {
|
|
934
|
+
/** @example true */
|
|
935
|
+
success: boolean;
|
|
936
|
+
data: components["schemas"]["GrepDiskResult"];
|
|
937
|
+
};
|
|
938
|
+
};
|
|
939
|
+
responses: {
|
|
940
|
+
/** @description Invalid or missing authentication credentials */
|
|
941
|
+
Unauthorized: {
|
|
942
|
+
headers: {
|
|
943
|
+
[name: string]: unknown;
|
|
944
|
+
};
|
|
945
|
+
content: {
|
|
946
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
947
|
+
};
|
|
948
|
+
};
|
|
949
|
+
/** @description Validation error */
|
|
950
|
+
ValidationError: {
|
|
951
|
+
headers: {
|
|
952
|
+
[name: string]: unknown;
|
|
953
|
+
};
|
|
954
|
+
content: {
|
|
955
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
956
|
+
};
|
|
957
|
+
};
|
|
958
|
+
/** @description Resource not found */
|
|
959
|
+
NotFound: {
|
|
960
|
+
headers: {
|
|
961
|
+
[name: string]: unknown;
|
|
962
|
+
};
|
|
963
|
+
content: {
|
|
964
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
965
|
+
};
|
|
966
|
+
};
|
|
967
|
+
/** @description Internal server error */
|
|
968
|
+
InternalError: {
|
|
969
|
+
headers: {
|
|
970
|
+
[name: string]: unknown;
|
|
971
|
+
};
|
|
972
|
+
content: {
|
|
973
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
974
|
+
};
|
|
975
|
+
};
|
|
976
|
+
};
|
|
977
|
+
parameters: {
|
|
978
|
+
/** @description Disk ID (format `dsk-{16 hex chars}`) */
|
|
979
|
+
DiskId: string;
|
|
980
|
+
/** @description Maximum number of items to return */
|
|
981
|
+
Limit: number;
|
|
982
|
+
/** @description Pagination cursor from a previous response */
|
|
983
|
+
Cursor: string;
|
|
984
|
+
};
|
|
985
|
+
requestBodies: never;
|
|
986
|
+
headers: never;
|
|
987
|
+
pathItems: never;
|
|
988
|
+
}
|
|
989
|
+
export type $defs = Record<string, never>;
|
|
990
|
+
export interface operations {
|
|
991
|
+
listDisks: {
|
|
992
|
+
parameters: {
|
|
993
|
+
query?: {
|
|
994
|
+
/** @description Maximum number of items to return */
|
|
995
|
+
limit?: components["parameters"]["Limit"];
|
|
996
|
+
/** @description Pagination cursor from a previous response */
|
|
997
|
+
cursor?: components["parameters"]["Cursor"];
|
|
998
|
+
/** @description Filter disks by exact name match. */
|
|
999
|
+
name?: string;
|
|
1000
|
+
};
|
|
1001
|
+
header?: never;
|
|
1002
|
+
path?: never;
|
|
1003
|
+
cookie?: never;
|
|
1004
|
+
};
|
|
1005
|
+
requestBody?: never;
|
|
1006
|
+
responses: {
|
|
1007
|
+
/** @description List of disks */
|
|
1008
|
+
200: {
|
|
1009
|
+
headers: {
|
|
1010
|
+
[name: string]: unknown;
|
|
1011
|
+
};
|
|
1012
|
+
content: {
|
|
1013
|
+
"application/json": components["schemas"]["ApiResponse_DiskList"];
|
|
1014
|
+
};
|
|
1015
|
+
};
|
|
1016
|
+
401: components["responses"]["Unauthorized"];
|
|
1017
|
+
500: components["responses"]["InternalError"];
|
|
1018
|
+
};
|
|
1019
|
+
};
|
|
1020
|
+
createDisk: {
|
|
1021
|
+
parameters: {
|
|
1022
|
+
query?: never;
|
|
1023
|
+
header?: never;
|
|
1024
|
+
path?: never;
|
|
1025
|
+
cookie?: never;
|
|
1026
|
+
};
|
|
1027
|
+
requestBody: {
|
|
1028
|
+
content: {
|
|
1029
|
+
"application/json": components["schemas"]["CreateDiskRequest"];
|
|
1030
|
+
};
|
|
1031
|
+
};
|
|
1032
|
+
responses: {
|
|
1033
|
+
/** @description Disk with this name already exists and configuration matches (idempotent) */
|
|
1034
|
+
200: {
|
|
1035
|
+
headers: {
|
|
1036
|
+
[name: string]: unknown;
|
|
1037
|
+
};
|
|
1038
|
+
content: {
|
|
1039
|
+
"application/json": components["schemas"]["ApiResponse_CreateDisk"];
|
|
1040
|
+
};
|
|
1041
|
+
};
|
|
1042
|
+
/** @description Disk created successfully */
|
|
1043
|
+
201: {
|
|
1044
|
+
headers: {
|
|
1045
|
+
[name: string]: unknown;
|
|
1046
|
+
};
|
|
1047
|
+
content: {
|
|
1048
|
+
"application/json": components["schemas"]["ApiResponse_CreateDisk"];
|
|
1049
|
+
};
|
|
1050
|
+
};
|
|
1051
|
+
400: components["responses"]["ValidationError"];
|
|
1052
|
+
401: components["responses"]["Unauthorized"];
|
|
1053
|
+
/** @description Access denied (e.g., preview region not enabled) */
|
|
1054
|
+
403: {
|
|
1055
|
+
headers: {
|
|
1056
|
+
[name: string]: unknown;
|
|
1057
|
+
};
|
|
1058
|
+
content: {
|
|
1059
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
1060
|
+
};
|
|
1061
|
+
};
|
|
1062
|
+
/** @description Disk with this name already exists but configuration differs */
|
|
1063
|
+
409: {
|
|
1064
|
+
headers: {
|
|
1065
|
+
[name: string]: unknown;
|
|
1066
|
+
};
|
|
1067
|
+
content: {
|
|
1068
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
1069
|
+
};
|
|
1070
|
+
};
|
|
1071
|
+
500: components["responses"]["InternalError"];
|
|
1072
|
+
};
|
|
1073
|
+
};
|
|
1074
|
+
getDisk: {
|
|
1075
|
+
parameters: {
|
|
1076
|
+
query?: never;
|
|
1077
|
+
header?: never;
|
|
1078
|
+
path: {
|
|
1079
|
+
/** @description Disk ID (format `dsk-{16 hex chars}`) */
|
|
1080
|
+
id: components["parameters"]["DiskId"];
|
|
1081
|
+
};
|
|
1082
|
+
cookie?: never;
|
|
1083
|
+
};
|
|
1084
|
+
requestBody?: never;
|
|
1085
|
+
responses: {
|
|
1086
|
+
/** @description Disk details */
|
|
1087
|
+
200: {
|
|
1088
|
+
headers: {
|
|
1089
|
+
[name: string]: unknown;
|
|
1090
|
+
};
|
|
1091
|
+
content: {
|
|
1092
|
+
"application/json": components["schemas"]["ApiResponse_Disk"];
|
|
1093
|
+
};
|
|
1094
|
+
};
|
|
1095
|
+
400: components["responses"]["ValidationError"];
|
|
1096
|
+
401: components["responses"]["Unauthorized"];
|
|
1097
|
+
404: components["responses"]["NotFound"];
|
|
1098
|
+
500: components["responses"]["InternalError"];
|
|
1099
|
+
};
|
|
1100
|
+
};
|
|
1101
|
+
deleteDisk: {
|
|
1102
|
+
parameters: {
|
|
1103
|
+
query?: never;
|
|
1104
|
+
header?: never;
|
|
1105
|
+
path: {
|
|
1106
|
+
/** @description Disk ID (format `dsk-{16 hex chars}`) */
|
|
1107
|
+
id: components["parameters"]["DiskId"];
|
|
1108
|
+
};
|
|
1109
|
+
cookie?: never;
|
|
1110
|
+
};
|
|
1111
|
+
requestBody?: never;
|
|
1112
|
+
responses: {
|
|
1113
|
+
/** @description Disk deleted successfully */
|
|
1114
|
+
200: {
|
|
1115
|
+
headers: {
|
|
1116
|
+
[name: string]: unknown;
|
|
1117
|
+
};
|
|
1118
|
+
content: {
|
|
1119
|
+
"application/json": components["schemas"]["ApiResponse_Empty"];
|
|
1120
|
+
};
|
|
1121
|
+
};
|
|
1122
|
+
400: components["responses"]["ValidationError"];
|
|
1123
|
+
401: components["responses"]["Unauthorized"];
|
|
1124
|
+
404: components["responses"]["NotFound"];
|
|
1125
|
+
500: components["responses"]["InternalError"];
|
|
1126
|
+
};
|
|
1127
|
+
};
|
|
1128
|
+
addDiskUser: {
|
|
1129
|
+
parameters: {
|
|
1130
|
+
query?: never;
|
|
1131
|
+
header?: never;
|
|
1132
|
+
path: {
|
|
1133
|
+
/** @description Disk ID (format `dsk-{16 hex chars}`) */
|
|
1134
|
+
id: components["parameters"]["DiskId"];
|
|
1135
|
+
};
|
|
1136
|
+
cookie?: never;
|
|
1137
|
+
};
|
|
1138
|
+
requestBody: {
|
|
1139
|
+
content: {
|
|
1140
|
+
"application/json": components["schemas"]["DiskUser"];
|
|
1141
|
+
};
|
|
1142
|
+
};
|
|
1143
|
+
responses: {
|
|
1144
|
+
/** @description User added successfully */
|
|
1145
|
+
201: {
|
|
1146
|
+
headers: {
|
|
1147
|
+
[name: string]: unknown;
|
|
1148
|
+
};
|
|
1149
|
+
content: {
|
|
1150
|
+
"application/json": components["schemas"]["ApiResponse_AuthorizedUser"];
|
|
1151
|
+
};
|
|
1152
|
+
};
|
|
1153
|
+
400: components["responses"]["ValidationError"];
|
|
1154
|
+
401: components["responses"]["Unauthorized"];
|
|
1155
|
+
500: components["responses"]["InternalError"];
|
|
1156
|
+
};
|
|
1157
|
+
};
|
|
1158
|
+
removeDiskUser: {
|
|
1159
|
+
parameters: {
|
|
1160
|
+
query?: {
|
|
1161
|
+
/** @description Identifier of the user to remove, as returned in the creation or list response. For awssts users, this is the IAM ARN. */
|
|
1162
|
+
identifier?: string;
|
|
1163
|
+
/**
|
|
1164
|
+
* @deprecated
|
|
1165
|
+
* @description Use identifier instead.
|
|
1166
|
+
*/
|
|
1167
|
+
principal?: string;
|
|
1168
|
+
};
|
|
1169
|
+
header?: never;
|
|
1170
|
+
path: {
|
|
1171
|
+
/** @description Disk ID (format `dsk-{16 hex chars}`) */
|
|
1172
|
+
id: components["parameters"]["DiskId"];
|
|
1173
|
+
/** @description The type of user authentication */
|
|
1174
|
+
userType: "token" | "awssts";
|
|
1175
|
+
};
|
|
1176
|
+
cookie?: never;
|
|
1177
|
+
};
|
|
1178
|
+
requestBody?: never;
|
|
1179
|
+
responses: {
|
|
1180
|
+
/** @description User removed successfully */
|
|
1181
|
+
200: {
|
|
1182
|
+
headers: {
|
|
1183
|
+
[name: string]: unknown;
|
|
1184
|
+
};
|
|
1185
|
+
content: {
|
|
1186
|
+
"application/json": components["schemas"]["ApiResponse_Message"];
|
|
1187
|
+
};
|
|
1188
|
+
};
|
|
1189
|
+
400: components["responses"]["ValidationError"];
|
|
1190
|
+
401: components["responses"]["Unauthorized"];
|
|
1191
|
+
500: components["responses"]["InternalError"];
|
|
1192
|
+
};
|
|
1193
|
+
};
|
|
1194
|
+
getAllowedIPs: {
|
|
1195
|
+
parameters: {
|
|
1196
|
+
query?: never;
|
|
1197
|
+
header?: never;
|
|
1198
|
+
path: {
|
|
1199
|
+
/** @description Disk ID (format `dsk-{16 hex chars}`) */
|
|
1200
|
+
id: components["parameters"]["DiskId"];
|
|
1201
|
+
};
|
|
1202
|
+
cookie?: never;
|
|
1203
|
+
};
|
|
1204
|
+
requestBody?: never;
|
|
1205
|
+
responses: {
|
|
1206
|
+
/** @description Current IP allowlist */
|
|
1207
|
+
200: {
|
|
1208
|
+
headers: {
|
|
1209
|
+
[name: string]: unknown;
|
|
1210
|
+
};
|
|
1211
|
+
content: {
|
|
1212
|
+
"application/json": components["schemas"]["ApiResponse_AllowedIPs"];
|
|
1213
|
+
};
|
|
1214
|
+
};
|
|
1215
|
+
401: components["responses"]["Unauthorized"];
|
|
1216
|
+
404: components["responses"]["NotFound"];
|
|
1217
|
+
500: components["responses"]["InternalError"];
|
|
1218
|
+
};
|
|
1219
|
+
};
|
|
1220
|
+
setAllowedIPs: {
|
|
1221
|
+
parameters: {
|
|
1222
|
+
query?: never;
|
|
1223
|
+
header?: never;
|
|
1224
|
+
path: {
|
|
1225
|
+
/** @description Disk ID (format `dsk-{16 hex chars}`) */
|
|
1226
|
+
id: components["parameters"]["DiskId"];
|
|
1227
|
+
};
|
|
1228
|
+
cookie?: never;
|
|
1229
|
+
};
|
|
1230
|
+
requestBody: {
|
|
1231
|
+
content: {
|
|
1232
|
+
"application/json": {
|
|
1233
|
+
/**
|
|
1234
|
+
* @description List of IPs or CIDR ranges. Empty array removes restrictions.
|
|
1235
|
+
* @example [
|
|
1236
|
+
* "203.0.113.0/24",
|
|
1237
|
+
* "198.51.100.42"
|
|
1238
|
+
* ]
|
|
1239
|
+
*/
|
|
1240
|
+
allowedIps: string[];
|
|
1241
|
+
};
|
|
1242
|
+
};
|
|
1243
|
+
};
|
|
1244
|
+
responses: {
|
|
1245
|
+
/** @description Allowlist updated */
|
|
1246
|
+
200: {
|
|
1247
|
+
headers: {
|
|
1248
|
+
[name: string]: unknown;
|
|
1249
|
+
};
|
|
1250
|
+
content: {
|
|
1251
|
+
"application/json": components["schemas"]["ApiResponse_AllowedIPs"];
|
|
1252
|
+
};
|
|
1253
|
+
};
|
|
1254
|
+
400: components["responses"]["ValidationError"];
|
|
1255
|
+
401: components["responses"]["Unauthorized"];
|
|
1256
|
+
404: components["responses"]["NotFound"];
|
|
1257
|
+
500: components["responses"]["InternalError"];
|
|
1258
|
+
};
|
|
1259
|
+
};
|
|
1260
|
+
execDisk: {
|
|
1261
|
+
parameters: {
|
|
1262
|
+
query?: never;
|
|
1263
|
+
header?: never;
|
|
1264
|
+
path: {
|
|
1265
|
+
/** @description Disk ID (format `dsk-{16 hex chars}`) */
|
|
1266
|
+
id: components["parameters"]["DiskId"];
|
|
1267
|
+
};
|
|
1268
|
+
cookie?: never;
|
|
1269
|
+
};
|
|
1270
|
+
requestBody: {
|
|
1271
|
+
content: {
|
|
1272
|
+
"application/json": components["schemas"]["ExecDiskRequest"];
|
|
1273
|
+
};
|
|
1274
|
+
};
|
|
1275
|
+
responses: {
|
|
1276
|
+
/** @description Command completed */
|
|
1277
|
+
200: {
|
|
1278
|
+
headers: {
|
|
1279
|
+
[name: string]: unknown;
|
|
1280
|
+
};
|
|
1281
|
+
content: {
|
|
1282
|
+
"application/json": components["schemas"]["ApiResponse_ExecDisk"];
|
|
1283
|
+
};
|
|
1284
|
+
};
|
|
1285
|
+
400: components["responses"]["ValidationError"];
|
|
1286
|
+
401: components["responses"]["Unauthorized"];
|
|
1287
|
+
404: components["responses"]["NotFound"];
|
|
1288
|
+
500: components["responses"]["InternalError"];
|
|
1289
|
+
/** @description Command timed out */
|
|
1290
|
+
504: {
|
|
1291
|
+
headers: {
|
|
1292
|
+
[name: string]: unknown;
|
|
1293
|
+
};
|
|
1294
|
+
content: {
|
|
1295
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
1296
|
+
};
|
|
1297
|
+
};
|
|
1298
|
+
};
|
|
1299
|
+
};
|
|
1300
|
+
grepDisk: {
|
|
1301
|
+
parameters: {
|
|
1302
|
+
query?: never;
|
|
1303
|
+
header?: never;
|
|
1304
|
+
path: {
|
|
1305
|
+
/** @description Disk ID (format `dsk-{16 hex chars}`) */
|
|
1306
|
+
id: components["parameters"]["DiskId"];
|
|
1307
|
+
};
|
|
1308
|
+
cookie?: never;
|
|
1309
|
+
};
|
|
1310
|
+
requestBody: {
|
|
1311
|
+
content: {
|
|
1312
|
+
"application/json": components["schemas"]["GrepDiskRequest"];
|
|
1313
|
+
};
|
|
1314
|
+
};
|
|
1315
|
+
responses: {
|
|
1316
|
+
/** @description Grep completed (possibly stopped early) */
|
|
1317
|
+
200: {
|
|
1318
|
+
headers: {
|
|
1319
|
+
[name: string]: unknown;
|
|
1320
|
+
};
|
|
1321
|
+
content: {
|
|
1322
|
+
"application/json": components["schemas"]["ApiResponse_GrepDisk"];
|
|
1323
|
+
};
|
|
1324
|
+
};
|
|
1325
|
+
400: components["responses"]["ValidationError"];
|
|
1326
|
+
401: components["responses"]["Unauthorized"];
|
|
1327
|
+
404: components["responses"]["NotFound"];
|
|
1328
|
+
500: components["responses"]["InternalError"];
|
|
1329
|
+
};
|
|
1330
|
+
};
|
|
1331
|
+
exec: {
|
|
1332
|
+
parameters: {
|
|
1333
|
+
query?: never;
|
|
1334
|
+
header?: never;
|
|
1335
|
+
path?: never;
|
|
1336
|
+
cookie?: never;
|
|
1337
|
+
};
|
|
1338
|
+
requestBody: {
|
|
1339
|
+
content: {
|
|
1340
|
+
"application/json": components["schemas"]["ExecRequest"];
|
|
1341
|
+
};
|
|
1342
|
+
};
|
|
1343
|
+
responses: {
|
|
1344
|
+
/** @description Command completed */
|
|
1345
|
+
200: {
|
|
1346
|
+
headers: {
|
|
1347
|
+
[name: string]: unknown;
|
|
1348
|
+
};
|
|
1349
|
+
content: {
|
|
1350
|
+
"application/json": components["schemas"]["ApiResponse_Exec"];
|
|
1351
|
+
};
|
|
1352
|
+
};
|
|
1353
|
+
400: components["responses"]["ValidationError"];
|
|
1354
|
+
401: components["responses"]["Unauthorized"];
|
|
1355
|
+
404: components["responses"]["NotFound"];
|
|
1356
|
+
500: components["responses"]["InternalError"];
|
|
1357
|
+
/** @description Command timed out */
|
|
1358
|
+
504: {
|
|
1359
|
+
headers: {
|
|
1360
|
+
[name: string]: unknown;
|
|
1361
|
+
};
|
|
1362
|
+
content: {
|
|
1363
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
1364
|
+
};
|
|
1365
|
+
};
|
|
1366
|
+
};
|
|
1367
|
+
};
|
|
1368
|
+
listApiTokens: {
|
|
1369
|
+
parameters: {
|
|
1370
|
+
query?: {
|
|
1371
|
+
/** @description Maximum number of items to return */
|
|
1372
|
+
limit?: components["parameters"]["Limit"];
|
|
1373
|
+
/** @description Pagination cursor from a previous response */
|
|
1374
|
+
cursor?: components["parameters"]["Cursor"];
|
|
1375
|
+
};
|
|
1376
|
+
header?: never;
|
|
1377
|
+
path?: never;
|
|
1378
|
+
cookie?: never;
|
|
1379
|
+
};
|
|
1380
|
+
requestBody?: never;
|
|
1381
|
+
responses: {
|
|
1382
|
+
/** @description List of API tokens */
|
|
1383
|
+
200: {
|
|
1384
|
+
headers: {
|
|
1385
|
+
[name: string]: unknown;
|
|
1386
|
+
};
|
|
1387
|
+
content: {
|
|
1388
|
+
"application/json": components["schemas"]["ApiResponse_TokenList"];
|
|
1389
|
+
};
|
|
1390
|
+
};
|
|
1391
|
+
401: components["responses"]["Unauthorized"];
|
|
1392
|
+
500: components["responses"]["InternalError"];
|
|
1393
|
+
};
|
|
1394
|
+
};
|
|
1395
|
+
createApiToken: {
|
|
1396
|
+
parameters: {
|
|
1397
|
+
query?: never;
|
|
1398
|
+
header?: never;
|
|
1399
|
+
path?: never;
|
|
1400
|
+
cookie?: never;
|
|
1401
|
+
};
|
|
1402
|
+
requestBody: {
|
|
1403
|
+
content: {
|
|
1404
|
+
"application/json": components["schemas"]["CreateApiTokenRequest"];
|
|
1405
|
+
};
|
|
1406
|
+
};
|
|
1407
|
+
responses: {
|
|
1408
|
+
/** @description Token created successfully */
|
|
1409
|
+
201: {
|
|
1410
|
+
headers: {
|
|
1411
|
+
[name: string]: unknown;
|
|
1412
|
+
};
|
|
1413
|
+
content: {
|
|
1414
|
+
"application/json": components["schemas"]["ApiResponse_TokenCreated"];
|
|
1415
|
+
};
|
|
1416
|
+
};
|
|
1417
|
+
400: components["responses"]["ValidationError"];
|
|
1418
|
+
401: components["responses"]["Unauthorized"];
|
|
1419
|
+
500: components["responses"]["InternalError"];
|
|
1420
|
+
};
|
|
1421
|
+
};
|
|
1422
|
+
deleteApiToken: {
|
|
1423
|
+
parameters: {
|
|
1424
|
+
query?: never;
|
|
1425
|
+
header?: never;
|
|
1426
|
+
path: {
|
|
1427
|
+
/** @description The token ID (hash) */
|
|
1428
|
+
id: string;
|
|
1429
|
+
};
|
|
1430
|
+
cookie?: never;
|
|
1431
|
+
};
|
|
1432
|
+
requestBody?: never;
|
|
1433
|
+
responses: {
|
|
1434
|
+
/** @description Token deleted successfully */
|
|
1435
|
+
200: {
|
|
1436
|
+
headers: {
|
|
1437
|
+
[name: string]: unknown;
|
|
1438
|
+
};
|
|
1439
|
+
content: {
|
|
1440
|
+
"application/json": components["schemas"]["ApiResponse_Message"];
|
|
1441
|
+
};
|
|
1442
|
+
};
|
|
1443
|
+
401: components["responses"]["Unauthorized"];
|
|
1444
|
+
404: components["responses"]["NotFound"];
|
|
1445
|
+
500: components["responses"]["InternalError"];
|
|
1446
|
+
};
|
|
1447
|
+
};
|
|
1448
|
+
}
|