@blaxel/core 0.2.59-preview.42 → 0.2.59-preview.43

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/dist/cjs/.tsbuildinfo +1 -1
  2. package/dist/cjs/client/sdk.gen.js +142 -155
  3. package/dist/cjs/common/settings.js +2 -2
  4. package/dist/cjs/sandbox/action.js +2 -2
  5. package/dist/cjs/sandbox/client/sdk.gen.js +1 -103
  6. package/dist/cjs/sandbox/interpreter.js +7 -4
  7. package/dist/cjs/sandbox/preview.js +11 -8
  8. package/dist/cjs/sandbox/sandbox.js +3 -3
  9. package/dist/cjs/sandbox/session.js +11 -11
  10. package/dist/cjs/sandbox/types.js +4 -1
  11. package/dist/cjs/tools/index.js +1 -3
  12. package/dist/cjs/types/client/sdk.gen.d.ts +177 -166
  13. package/dist/cjs/types/client/types.gen.d.ts +1805 -1375
  14. package/dist/cjs/types/sandbox/client/sdk.gen.d.ts +1 -31
  15. package/dist/cjs/types/sandbox/client/types.gen.d.ts +0 -83
  16. package/dist/cjs/types/sandbox/preview.d.ts +2 -2
  17. package/dist/cjs/types/sandbox/sandbox.d.ts +3 -3
  18. package/dist/cjs/types/volume/index.d.ts +3 -3
  19. package/dist/cjs/volume/index.js +12 -14
  20. package/dist/cjs-browser/.tsbuildinfo +1 -1
  21. package/dist/cjs-browser/client/sdk.gen.js +142 -155
  22. package/dist/cjs-browser/common/settings.js +2 -2
  23. package/dist/cjs-browser/sandbox/action.js +2 -2
  24. package/dist/cjs-browser/sandbox/client/sdk.gen.js +1 -103
  25. package/dist/cjs-browser/sandbox/interpreter.js +7 -4
  26. package/dist/cjs-browser/sandbox/preview.js +11 -8
  27. package/dist/cjs-browser/sandbox/sandbox.js +3 -3
  28. package/dist/cjs-browser/sandbox/session.js +11 -11
  29. package/dist/cjs-browser/sandbox/types.js +4 -1
  30. package/dist/cjs-browser/tools/index.js +1 -3
  31. package/dist/cjs-browser/types/client/sdk.gen.d.ts +177 -166
  32. package/dist/cjs-browser/types/client/types.gen.d.ts +1805 -1375
  33. package/dist/cjs-browser/types/sandbox/client/sdk.gen.d.ts +1 -31
  34. package/dist/cjs-browser/types/sandbox/client/types.gen.d.ts +0 -83
  35. package/dist/cjs-browser/types/sandbox/preview.d.ts +2 -2
  36. package/dist/cjs-browser/types/sandbox/sandbox.d.ts +3 -3
  37. package/dist/cjs-browser/types/volume/index.d.ts +3 -3
  38. package/dist/cjs-browser/volume/index.js +12 -14
  39. package/dist/esm/.tsbuildinfo +1 -1
  40. package/dist/esm/client/sdk.gen.js +140 -151
  41. package/dist/esm/common/settings.js +2 -2
  42. package/dist/esm/sandbox/action.js +2 -2
  43. package/dist/esm/sandbox/client/sdk.gen.js +0 -96
  44. package/dist/esm/sandbox/interpreter.js +7 -4
  45. package/dist/esm/sandbox/preview.js +11 -8
  46. package/dist/esm/sandbox/sandbox.js +3 -3
  47. package/dist/esm/sandbox/session.js +11 -11
  48. package/dist/esm/sandbox/types.js +4 -1
  49. package/dist/esm/tools/index.js +1 -3
  50. package/dist/esm/volume/index.js +12 -14
  51. package/dist/esm-browser/.tsbuildinfo +1 -1
  52. package/dist/esm-browser/client/sdk.gen.js +140 -151
  53. package/dist/esm-browser/common/settings.js +2 -2
  54. package/dist/esm-browser/sandbox/action.js +2 -2
  55. package/dist/esm-browser/sandbox/client/sdk.gen.js +0 -96
  56. package/dist/esm-browser/sandbox/interpreter.js +7 -4
  57. package/dist/esm-browser/sandbox/preview.js +11 -8
  58. package/dist/esm-browser/sandbox/sandbox.js +3 -3
  59. package/dist/esm-browser/sandbox/session.js +11 -11
  60. package/dist/esm-browser/sandbox/types.js +4 -1
  61. package/dist/esm-browser/tools/index.js +1 -3
  62. package/dist/esm-browser/volume/index.js +12 -14
  63. package/package.json +1 -1
@@ -1,58 +1,77 @@
1
1
  /**
2
- * ACL
2
+ * Serverless AI agent deployment that runs your custom agent code as an auto-scaling API endpoint. Agents are deployed from your code repository and expose a global inference URL for querying.
3
3
  */
4
- export type Acl = TimeFields & {
5
- /**
6
- * ACL id
7
- */
8
- id?: string;
4
+ export type Agent = {
5
+ events?: CoreEvents;
6
+ metadata: Metadata;
7
+ spec: AgentSpec;
8
+ status?: Status;
9
+ };
10
+ /**
11
+ * Serverless AI agent deployment that runs your custom agent code as an auto-scaling API endpoint. Agents are deployed from your code repository and expose a global inference URL for querying.
12
+ */
13
+ export type AgentWritable = {
14
+ events?: CoreEventsWritable;
15
+ metadata: MetadataWritable;
16
+ spec: AgentSpecWritable;
17
+ status?: Status;
18
+ };
19
+ /**
20
+ * Runtime configuration defining how the AI agent is deployed and scaled globally
21
+ */
22
+ export type AgentRuntime = {
9
23
  /**
10
- * Resource ID
24
+ * Environment variables injected into the agent. Supports Kubernetes EnvVar format with valueFrom references.
11
25
  */
12
- resource_id?: string;
26
+ envs?: Array<Env>;
13
27
  /**
14
- * Resource type
28
+ * Infrastructure generation: mk2 (containers, 2-10s cold starts, 15+ global regions) or mk3 (microVMs, sub-25ms cold starts)
15
29
  */
16
- resource_type?: string;
30
+ generation?: 'mk2' | 'mk3';
17
31
  /**
18
- * Role
32
+ * Container image built by Blaxel when deploying with 'bl deploy'. This field is auto-populated during deployment.
19
33
  */
20
- role?: string;
34
+ image?: string;
21
35
  /**
22
- * Subject ID
36
+ * Maximum number of concurrent agent instances for auto-scaling under load
23
37
  */
24
- subject_id?: string;
38
+ maxScale?: number;
25
39
  /**
26
- * Subject type
40
+ * Memory allocation in megabytes. Also determines CPU allocation (CPU cores = memory in MB / 2048, e.g., 4096MB = 2 CPUs).
27
41
  */
28
- subject_type?: string;
42
+ memory?: number;
29
43
  /**
30
- * Workspace name
44
+ * Minimum instances to keep warm. Set to 1+ to eliminate cold starts, 0 for scale-to-zero.
31
45
  */
32
- workspace?: string;
46
+ minScale?: number;
33
47
  };
34
48
  /**
35
- * Agent
49
+ * Configuration for an AI agent including runtime settings, repository source, and deployment triggers
36
50
  */
37
- export type Agent = {
38
- events?: CoreEvents;
39
- metadata?: Metadata;
40
- spec?: AgentSpec;
51
+ export type AgentSpec = {
41
52
  /**
42
- * Agent status
53
+ * When false, the agent is disabled and will not serve inference requests
43
54
  */
44
- status?: string;
55
+ enabled?: boolean;
56
+ policies?: PoliciesList;
57
+ repository?: Repository;
58
+ revision?: RevisionConfiguration;
59
+ runtime?: AgentRuntime;
60
+ triggers?: Triggers;
45
61
  };
46
62
  /**
47
- * Agent specification
63
+ * Configuration for an AI agent including runtime settings, repository source, and deployment triggers
48
64
  */
49
- export type AgentSpec = CoreSpec & {
65
+ export type AgentSpecWritable = {
50
66
  /**
51
- * Description, small description computed from the prompt
67
+ * When false, the agent is disabled and will not serve inference requests
52
68
  */
53
- description?: string;
69
+ enabled?: boolean;
70
+ policies?: PoliciesList;
54
71
  repository?: Repository;
55
- triggers?: Triggers;
72
+ revision?: RevisionConfiguration;
73
+ runtime?: AgentRuntime;
74
+ triggers?: TriggersWritable;
56
75
  };
57
76
  /**
58
77
  * Long-lived API key for accessing Blaxel
@@ -61,15 +80,15 @@ export type ApiKey = TimeFields & OwnerFields & {
61
80
  /**
62
81
  * Api key
63
82
  */
64
- apiKey?: string;
83
+ readonly apiKey?: string;
65
84
  /**
66
- * Duration until expiration (in seconds)
85
+ * Duration until expiration. Supports formats like '30d' (30 days), '24h' (24 hours), '1w' (1 week). If not set, the API key never expires.
67
86
  */
68
87
  expires_in?: string;
69
88
  /**
70
89
  * Api key id, to retrieve it from the API
71
90
  */
72
- id?: string;
91
+ readonly id?: string;
73
92
  /**
74
93
  * Name for the API key
75
94
  */
@@ -77,28 +96,28 @@ export type ApiKey = TimeFields & OwnerFields & {
77
96
  /**
78
97
  * User subject identifier
79
98
  */
80
- sub?: string;
99
+ readonly sub?: string;
81
100
  /**
82
- * Subject type
101
+ * Subject type (user or service_account)
83
102
  */
84
103
  sub_type?: string;
85
104
  };
86
105
  /**
87
- * Array of metrics
88
- */
89
- export type ArrayMetric = Array<Metric>;
90
- /**
91
- * Billable time metric
106
+ * Long-lived API key for accessing Blaxel
92
107
  */
93
- export type BillableTimeMetric = {
108
+ export type ApiKeyWritable = TimeFields & OwnerFields & {
109
+ /**
110
+ * Duration until expiration. Supports formats like '30d' (30 days), '24h' (24 hours), '1w' (1 week). If not set, the API key never expires.
111
+ */
112
+ expires_in?: string;
94
113
  /**
95
- * Billable time
114
+ * Name for the API key
96
115
  */
97
- billableTime?: Array<JobsChartValue>;
116
+ name?: string;
98
117
  /**
99
- * Total memory allocation in GB-seconds
118
+ * Subject type (user or service_account)
100
119
  */
101
- totalAllocation?: number;
120
+ sub_type?: string;
102
121
  };
103
122
  /**
104
123
  * Configuration
@@ -164,33 +183,42 @@ export type CoreEvent = {
164
183
  type?: string;
165
184
  };
166
185
  /**
167
- * Core events
168
- */
169
- export type CoreEvents = Array<CoreEvent>;
170
- /**
171
- * Core specification
186
+ * Core event
172
187
  */
173
- export type CoreSpec = {
188
+ export type CoreEventWritable = {
189
+ /**
190
+ * Canary revisionID link to the event
191
+ */
192
+ canaryRevision?: string;
174
193
  /**
175
- * Optional configurations for the object
194
+ * Event message
176
195
  */
177
- configurations?: {
178
- key?: SpecConfiguration;
179
- };
196
+ message?: string;
180
197
  /**
181
- * Enable or disable the resource
198
+ * RevisionID link to the event
182
199
  */
183
- enabled?: boolean;
184
- flavors?: Flavors;
185
- integrationConnections?: IntegrationConnectionsList;
186
- policies?: PoliciesList;
187
- revision?: RevisionConfiguration;
188
- runtime?: Runtime;
200
+ revision?: string;
189
201
  /**
190
- * Sandbox mode
202
+ * Event status
191
203
  */
192
- sandbox?: boolean;
204
+ status?: string;
205
+ /**
206
+ * Event time
207
+ */
208
+ time?: string;
209
+ /**
210
+ * Event type
211
+ */
212
+ type?: string;
193
213
  };
214
+ /**
215
+ * Events happening on a resource deployed on Blaxel
216
+ */
217
+ export type CoreEvents = Array<CoreEvent>;
218
+ /**
219
+ * Events happening on a resource deployed on Blaxel
220
+ */
221
+ export type CoreEventsWritable = Array<CoreEventWritable>;
194
222
  /**
195
223
  * Configuration
196
224
  */
@@ -232,29 +260,29 @@ export type CreateJobExecutionRequest = {
232
260
  workspaceId?: string;
233
261
  };
234
262
  /**
235
- * Response for creating a job execution
263
+ * Response returned when a job execution is successfully created. Contains identifiers and the tasks that will be executed.
236
264
  */
237
265
  export type CreateJobExecutionResponse = {
238
266
  /**
239
- * Execution ID
267
+ * Unique identifier for the created execution. Use this ID to track execution status, retrieve logs, or cancel the execution.
240
268
  */
241
269
  executionId?: string;
242
270
  /**
243
- * Unique message ID
271
+ * Unique identifier for this request, used for idempotency and tracking. Auto-generated if not provided in the request.
244
272
  */
245
273
  id?: string;
246
274
  /**
247
- * Job ID
275
+ * Name of the job that this execution belongs to
248
276
  */
249
277
  jobId?: string;
250
278
  /**
251
- * Array of task parameters for parallel execution
279
+ * Array of task configurations that will be executed in parallel according to the job's concurrency settings. Each task can have custom parameters.
252
280
  */
253
281
  tasks?: Array<{
254
282
  [key: string]: unknown;
255
283
  }>;
256
284
  /**
257
- * Workspace ID
285
+ * Name of the workspace where the job execution was created
258
286
  */
259
287
  workspaceId?: string;
260
288
  };
@@ -265,8 +293,18 @@ export type CreateJobExecutionResponse = {
265
293
  * <preview-id>.preview.<base-domain> (e.g., abc123.preview.example.com)
266
294
  */
267
295
  export type CustomDomain = {
268
- metadata?: CustomDomainMetadata;
269
- spec?: CustomDomainSpec;
296
+ metadata: CustomDomainMetadata;
297
+ spec: CustomDomainSpec;
298
+ };
299
+ /**
300
+ * Custom domain for preview deployments
301
+ * The custom domain represents a base domain (e.g., example.com) that will be used
302
+ * to serve preview deployments. Each preview will be accessible at a subdomain:
303
+ * <preview-id>.preview.<base-domain> (e.g., abc123.preview.example.com)
304
+ */
305
+ export type CustomDomainWritable = {
306
+ metadata: CustomDomainMetadataWritable;
307
+ spec: CustomDomainSpecWritable;
270
308
  };
271
309
  /**
272
310
  * Custom domain metadata
@@ -286,6 +324,24 @@ export type CustomDomainMetadata = TimeFields & OwnerFields & {
286
324
  */
287
325
  workspace?: string;
288
326
  };
327
+ /**
328
+ * Custom domain metadata
329
+ */
330
+ export type CustomDomainMetadataWritable = TimeFields & OwnerFields & {
331
+ /**
332
+ * Display name for the custom domain
333
+ */
334
+ displayName?: string;
335
+ labels?: MetadataLabels;
336
+ /**
337
+ * Domain name (e.g., "example.com")
338
+ */
339
+ name?: string;
340
+ /**
341
+ * Workspace name
342
+ */
343
+ workspace?: string;
344
+ };
289
345
  /**
290
346
  * Custom domain specification
291
347
  */
@@ -297,7 +353,7 @@ export type CustomDomainSpec = {
297
353
  /**
298
354
  * Last verification attempt timestamp
299
355
  */
300
- lastVerifiedAt?: string;
356
+ readonly lastVerifiedAt?: string;
301
357
  /**
302
358
  * Region that the custom domain is associated with
303
359
  */
@@ -305,7 +361,7 @@ export type CustomDomainSpec = {
305
361
  /**
306
362
  * Current status of the domain (pending, verified, failed)
307
363
  */
308
- status?: string;
364
+ status?: 'pending' | 'verified' | 'failed';
309
365
  /**
310
366
  * Map of TXT record names to values for domain verification
311
367
  */
@@ -315,7 +371,30 @@ export type CustomDomainSpec = {
315
371
  /**
316
372
  * Error message if verification failed
317
373
  */
318
- verificationError?: string;
374
+ readonly verificationError?: string;
375
+ };
376
+ /**
377
+ * Custom domain specification
378
+ */
379
+ export type CustomDomainSpecWritable = {
380
+ /**
381
+ * CNAME target for the domain
382
+ */
383
+ cnameRecords?: string;
384
+ /**
385
+ * Region that the custom domain is associated with
386
+ */
387
+ region?: string;
388
+ /**
389
+ * Current status of the domain (pending, verified, failed)
390
+ */
391
+ status?: 'pending' | 'verified' | 'failed';
392
+ /**
393
+ * Map of TXT record names to values for domain verification
394
+ */
395
+ txtRecords?: {
396
+ [key: string]: string;
397
+ };
319
398
  };
320
399
  /**
321
400
  * Entrypoint of the artifact
@@ -324,7 +403,9 @@ export type Entrypoint = {
324
403
  /**
325
404
  * Args of the entrypoint
326
405
  */
327
- args?: Array<unknown>;
406
+ args?: Array<{
407
+ [key: string]: unknown;
408
+ }>;
328
409
  /**
329
410
  * Command of the entrypoint
330
411
  */
@@ -333,27 +414,63 @@ export type Entrypoint = {
333
414
  * Env of the entrypoint
334
415
  */
335
416
  env?: {
336
- [key: string]: unknown;
417
+ [key: string]: string;
337
418
  };
338
419
  /**
339
420
  * Super Gateway args of the entrypoint
340
421
  */
341
- superGatewayArgs?: Array<unknown>;
422
+ superGatewayArgs?: Array<{
423
+ [key: string]: unknown;
424
+ }>;
425
+ };
426
+ /**
427
+ * Environment variable with name and value
428
+ */
429
+ export type Env = {
430
+ /**
431
+ * Name of the environment variable
432
+ */
433
+ name?: string;
434
+ /**
435
+ * Whether the value is a secret
436
+ */
437
+ secret?: boolean;
438
+ /**
439
+ * Value of the environment variable
440
+ */
441
+ value?: string;
442
+ };
443
+ /**
444
+ * Standard error response returned by the API when a request fails
445
+ */
446
+ export type _Error = {
447
+ /**
448
+ * HTTP status code of the error
449
+ */
450
+ code?: number;
451
+ /**
452
+ * Error type or code identifying the kind of error
453
+ */
454
+ error: string;
455
+ /**
456
+ * Human-readable error message describing what went wrong
457
+ */
458
+ message?: string;
342
459
  };
343
460
  /**
344
- * Expiration policy for sandbox lifecycle management
461
+ * Expiration policy for automatic sandbox cleanup based on time conditions
345
462
  */
346
463
  export type ExpirationPolicy = {
347
464
  /**
348
- * Action to take when policy is triggered
465
+ * Action to take when the expiration condition is met
349
466
  */
350
- action?: string;
467
+ action?: 'delete';
351
468
  /**
352
- * Type of expiration policy
469
+ * Type of expiration policy: ttl-idle (delete after inactivity), ttl-max-age (delete after total lifetime), or date (delete at specific time)
353
470
  */
354
- type?: string;
471
+ type?: 'ttl-idle' | 'ttl-max-age' | 'date';
355
472
  /**
356
- * Duration value (e.g., '1h', '24h', '7d')
473
+ * Duration value for TTL policies (e.g., '30m', '24h', '7d') or ISO 8601 date for date policies
357
474
  */
358
475
  value?: string;
359
476
  };
@@ -368,7 +485,7 @@ export type Flavor = {
368
485
  /**
369
486
  * Flavor type (e.g. cpu, gpu)
370
487
  */
371
- type?: string;
488
+ type?: 'cpu' | 'gpu';
372
489
  };
373
490
  /**
374
491
  * Types of hardware available for deployments
@@ -384,12 +501,7 @@ export type Form = {
384
501
  config?: {
385
502
  [key: string]: unknown;
386
503
  };
387
- /**
388
- * OAuth of the artifact
389
- */
390
- oauth?: {
391
- [key: string]: unknown;
392
- };
504
+ oauth?: OAuth;
393
505
  /**
394
506
  * Secrets of the artifact
395
507
  */
@@ -398,74 +510,101 @@ export type Form = {
398
510
  };
399
511
  };
400
512
  /**
401
- * Function
513
+ * MCP server deployment that exposes tools for AI agents via the Model Context Protocol (MCP). Deployed as a serverless auto-scaling endpoint using streamable HTTP transport.
402
514
  */
403
515
  export type _Function = {
404
516
  events?: CoreEvents;
405
- metadata?: Metadata;
406
- spec?: FunctionSpec;
407
- /**
408
- * Function status
409
- */
410
- status?: string;
517
+ metadata: Metadata;
518
+ spec: FunctionSpec;
519
+ status?: Status;
411
520
  };
412
521
  /**
413
- * Function specification
522
+ * MCP server deployment that exposes tools for AI agents via the Model Context Protocol (MCP). Deployed as a serverless auto-scaling endpoint using streamable HTTP transport.
414
523
  */
415
- export type FunctionSpec = CoreSpec & {
416
- /**
417
- * Function description, very important for the agent function to work with an LLM
418
- */
419
- description?: string;
420
- triggers?: Triggers;
524
+ export type FunctionWritable = {
525
+ events?: CoreEventsWritable;
526
+ metadata: MetadataWritable;
527
+ spec: FunctionSpecWritable;
528
+ status?: Status;
421
529
  };
422
530
  /**
423
- * Histogram bucket
531
+ * Runtime configuration defining how the MCP server function is deployed and scaled
424
532
  */
425
- export type HistogramBucket = {
533
+ export type FunctionRuntime = {
534
+ /**
535
+ * Environment variables injected into the function. Supports Kubernetes EnvVar format with valueFrom references.
536
+ */
537
+ envs?: Array<Env>;
538
+ /**
539
+ * Infrastructure generation: mk2 (containers, 2-10s cold starts, 15+ global regions) or mk3 (microVMs, sub-25ms cold starts)
540
+ */
541
+ generation?: 'mk2' | 'mk3';
542
+ /**
543
+ * Container image built by Blaxel when deploying with 'bl deploy'. This field is auto-populated during deployment.
544
+ */
545
+ image?: string;
426
546
  /**
427
- * Count
547
+ * Maximum number of concurrent function instances for auto-scaling
428
548
  */
429
- count?: number;
549
+ maxScale?: number;
430
550
  /**
431
- * End
551
+ * Memory allocation in megabytes. Also determines CPU allocation (CPU cores = memory in MB / 2048, e.g., 4096MB = 2 CPUs).
432
552
  */
433
- end?: number;
553
+ memory?: number;
434
554
  /**
435
- * Start
555
+ * Minimum instances to keep warm. Set to 1+ to eliminate cold starts, 0 for scale-to-zero.
436
556
  */
437
- start?: number;
557
+ minScale?: number;
438
558
  };
439
559
  /**
440
- * Histogram stats
560
+ * Configuration for an MCP server function including runtime settings, transport protocol, and connected integrations
441
561
  */
442
- export type HistogramStats = {
562
+ export type FunctionSpec = {
443
563
  /**
444
- * Average request duration
564
+ * When false, the function is disabled and will not serve requests
445
565
  */
446
- average?: number;
566
+ enabled?: boolean;
567
+ integrationConnections?: IntegrationConnectionsList;
568
+ policies?: PoliciesList;
569
+ revision?: RevisionConfiguration;
570
+ runtime?: FunctionRuntime;
447
571
  /**
448
- * P50 request duration
572
+ * Transport compatibility for the MCP, can be "websocket" or "http-stream"
449
573
  */
450
- p50?: number;
574
+ transport?: 'websocket' | 'http-stream';
575
+ triggers?: Triggers;
576
+ };
577
+ /**
578
+ * Configuration for an MCP server function including runtime settings, transport protocol, and connected integrations
579
+ */
580
+ export type FunctionSpecWritable = {
451
581
  /**
452
- * P90 request duration
582
+ * When false, the function is disabled and will not serve requests
453
583
  */
454
- p90?: number;
584
+ enabled?: boolean;
585
+ integrationConnections?: IntegrationConnectionsList;
586
+ policies?: PoliciesList;
587
+ revision?: RevisionConfiguration;
588
+ runtime?: FunctionRuntime;
455
589
  /**
456
- * P99 request duration
590
+ * Transport compatibility for the MCP, can be "websocket" or "http-stream"
457
591
  */
458
- p99?: number;
592
+ transport?: 'websocket' | 'http-stream';
593
+ triggers?: TriggersWritable;
459
594
  };
460
595
  export type Image = {
461
- metadata?: ImageMetadata;
462
- spec?: ImageSpec;
596
+ metadata: ImageMetadata;
597
+ spec: ImageSpec;
598
+ };
599
+ export type ImageWritable = {
600
+ metadata: ImageMetadataWritable;
601
+ spec: ImageSpecWritable;
463
602
  };
464
603
  export type ImageMetadata = {
465
604
  /**
466
605
  * The date and time when the image was created.
467
606
  */
468
- createdAt?: string;
607
+ readonly createdAt?: string;
469
608
  /**
470
609
  * The display name of the image (registry/workspace/repository).
471
610
  */
@@ -473,7 +612,7 @@ export type ImageMetadata = {
473
612
  /**
474
613
  * The date and time when the image was last deployed (most recent across all tags).
475
614
  */
476
- lastDeployedAt?: string;
615
+ readonly lastDeployedAt?: string;
477
616
  /**
478
617
  * The name of the image (repository name).
479
618
  */
@@ -485,27 +624,47 @@ export type ImageMetadata = {
485
624
  /**
486
625
  * The date and time when the image was last updated.
487
626
  */
488
- updatedAt?: string;
627
+ readonly updatedAt?: string;
489
628
  /**
490
629
  * The workspace of the image.
491
630
  */
492
- workspace?: string;
631
+ readonly workspace?: string;
632
+ };
633
+ export type ImageMetadataWritable = {
634
+ /**
635
+ * The display name of the image (registry/workspace/repository).
636
+ */
637
+ displayName?: string;
638
+ /**
639
+ * The name of the image (repository name).
640
+ */
641
+ name?: string;
642
+ /**
643
+ * The resource type of the image.
644
+ */
645
+ resourceType?: string;
493
646
  };
494
647
  export type ImageSpec = {
495
648
  /**
496
649
  * The size of the image in bytes.
497
650
  */
498
- size?: number;
651
+ readonly size?: number;
499
652
  /**
500
653
  * List of tags available for this image.
501
654
  */
502
655
  tags?: Array<ImageTag>;
503
656
  };
657
+ export type ImageSpecWritable = {
658
+ /**
659
+ * List of tags available for this image.
660
+ */
661
+ tags?: Array<ImageTagWritable>;
662
+ };
504
663
  export type ImageTag = {
505
664
  /**
506
665
  * The date and time when the tag was created.
507
666
  */
508
- createdAt?: string;
667
+ readonly createdAt?: string;
509
668
  /**
510
669
  * The name of the tag.
511
670
  */
@@ -513,11 +672,17 @@ export type ImageTag = {
513
672
  /**
514
673
  * The size of the image in bytes.
515
674
  */
516
- size?: number;
675
+ readonly size?: number;
517
676
  /**
518
677
  * The date and time when the tag was last updated.
519
678
  */
520
- updatedAt?: string;
679
+ readonly updatedAt?: string;
680
+ };
681
+ export type ImageTagWritable = {
682
+ /**
683
+ * The name of the tag.
684
+ */
685
+ name?: string;
521
686
  };
522
687
  /**
523
688
  * Integration
@@ -546,32 +711,39 @@ export type Integration = {
546
711
  repositories?: Array<IntegrationRepository>;
547
712
  };
548
713
  /**
549
- * Integration Connection
714
+ * Configured connection to an external service (LLM provider, API, SaaS, database) storing credentials and settings for use by workspace resources.
550
715
  */
551
716
  export type IntegrationConnection = {
552
- metadata?: Metadata;
553
- spec?: IntegrationConnectionSpec;
717
+ metadata: Metadata;
718
+ spec: IntegrationConnectionSpec;
554
719
  };
555
720
  /**
556
- * Integration connection specification
721
+ * Configured connection to an external service (LLM provider, API, SaaS, database) storing credentials and settings for use by workspace resources.
722
+ */
723
+ export type IntegrationConnectionWritable = {
724
+ metadata: MetadataWritable;
725
+ spec: IntegrationConnectionSpec;
726
+ };
727
+ /**
728
+ * Specification defining the integration type, configuration parameters, and encrypted credentials
557
729
  */
558
730
  export type IntegrationConnectionSpec = {
559
731
  /**
560
- * Additional configuration for the integration
732
+ * Non-sensitive configuration parameters for the integration (e.g., organization ID, region)
561
733
  */
562
734
  config?: {
563
735
  [key: string]: string;
564
736
  };
565
737
  /**
566
- * Integration type
738
+ * Integration provider type (e.g., openai, anthropic, github, slack)
567
739
  */
568
740
  integration?: string;
569
741
  /**
570
- * Sandbox mode
742
+ * Whether this connection uses sandbox/test credentials instead of production
571
743
  */
572
744
  sandbox?: boolean;
573
745
  /**
574
- * Integration secret
746
+ * Encrypted credentials and API keys for authenticating with the external service
575
747
  */
576
748
  secret?: {
577
749
  [key: string]: string;
@@ -589,7 +761,9 @@ export type IntegrationEndpoint = {
589
761
  /**
590
762
  * Integration endpoint ignore models
591
763
  */
592
- ignoreModels?: Array<unknown>;
764
+ ignoreModels?: Array<{
765
+ [key: string]: unknown;
766
+ }>;
593
767
  /**
594
768
  * Integration endpoint method
595
769
  */
@@ -597,7 +771,9 @@ export type IntegrationEndpoint = {
597
771
  /**
598
772
  * Integration endpoint models
599
773
  */
600
- models?: Array<unknown>;
774
+ models?: Array<{
775
+ [key: string]: unknown;
776
+ }>;
601
777
  /**
602
778
  * Integration endpoint stream key
603
779
  */
@@ -635,156 +811,150 @@ export type IntegrationHeaders = {
635
811
  [key: string]: string;
636
812
  };
637
813
  /**
638
- * Model obtained from an external authentication provider, such as HuggingFace, OpenAI, etc...
814
+ * Integration organization
639
815
  */
640
- export type IntegrationModel = {
816
+ export type IntegrationOrganization = {
641
817
  /**
642
- * Provider model author
818
+ * Provider organization avatar URL
643
819
  */
644
- author?: string;
820
+ avatar_url?: string;
645
821
  /**
646
- * Provider model created at
822
+ * Provider organization display name
647
823
  */
648
- created_at?: string;
824
+ displayName?: string;
649
825
  /**
650
- * Provider model downloads
826
+ * Provider organization ID
651
827
  */
652
- downloads?: number;
828
+ id?: string;
653
829
  /**
654
- * Model endpoint URL
830
+ * Provider organization name
655
831
  */
656
- endpoint?: string;
832
+ name?: string;
833
+ };
834
+ /**
835
+ * Integration query params
836
+ */
837
+ export type IntegrationQueryParams = {
838
+ [key: string]: string;
839
+ };
840
+ /**
841
+ * Integration repository
842
+ */
843
+ export type IntegrationRepository = {
657
844
  /**
658
- * Provider model ID
845
+ * Repository ID
659
846
  */
660
847
  id?: string;
661
848
  /**
662
- * Provider model library name
849
+ * Whether the repository has Blaxel imports
663
850
  */
664
- library_name?: string;
851
+ isBl?: boolean;
665
852
  /**
666
- * Provider model likes
667
- */
668
- likes?: number;
669
- /**
670
- * Is the model private
671
- */
672
- model_private?: string;
673
- /**
674
- * Provider model name
853
+ * Repository name
675
854
  */
676
855
  name?: string;
677
856
  /**
678
- * Provider model pipeline tag
679
- */
680
- pipeline_tag?: string;
681
- /**
682
- * Provider model tags
857
+ * Repository owner
683
858
  */
684
- tags?: Array<string>;
859
+ organization?: string;
685
860
  /**
686
- * Provider model trending score
861
+ * Repository URL
687
862
  */
688
- trending_score?: number;
863
+ url?: string;
689
864
  };
690
865
  /**
691
- * Integration organization
866
+ * Batch processing job definition for running parallel AI tasks. Jobs can execute multiple tasks concurrently with configurable parallelism, retries, and timeouts.
692
867
  */
693
- export type IntegrationOrganization = {
694
- /**
695
- * Provider organization avatar URL
696
- */
697
- avatar_url?: string;
698
- /**
699
- * Provider organization display name
700
- */
701
- displayName?: string;
702
- /**
703
- * Provider organization ID
704
- */
705
- id?: string;
868
+ export type Job = {
869
+ events?: CoreEvents;
870
+ metadata: Metadata;
871
+ spec: JobSpec;
872
+ status?: Status;
873
+ };
874
+ /**
875
+ * Batch processing job definition for running parallel AI tasks. Jobs can execute multiple tasks concurrently with configurable parallelism, retries, and timeouts.
876
+ */
877
+ export type JobWritable = {
878
+ events?: CoreEventsWritable;
879
+ metadata: MetadataWritable;
880
+ spec: JobSpecWritable;
881
+ status?: Status;
882
+ };
883
+ /**
884
+ * Job execution
885
+ */
886
+ export type JobExecution = {
887
+ metadata: JobExecutionMetadata;
888
+ spec: JobExecutionSpec;
889
+ stats?: JobExecutionStats;
890
+ status?: JobExecutionStatus;
706
891
  /**
707
- * Provider organization name
892
+ * List of execution tasks
708
893
  */
709
- name?: string;
894
+ tasks?: Array<JobExecutionTask>;
710
895
  };
711
896
  /**
712
- * Integration query params
897
+ * Job execution
713
898
  */
714
- export type IntegrationQueryParams = {
715
- [key: string]: string;
899
+ export type JobExecutionWritable = {
900
+ metadata: JobExecutionMetadataWritable;
901
+ spec: JobExecutionSpecWritable;
902
+ stats?: JobExecutionStatsWritable;
903
+ status?: JobExecutionStatus;
904
+ /**
905
+ * List of execution tasks
906
+ */
907
+ tasks?: Array<JobExecutionTaskWritable>;
716
908
  };
717
909
  /**
718
- * Integration repository
910
+ * Job execution metadata
719
911
  */
720
- export type IntegrationRepository = {
912
+ export type JobExecutionMetadata = {
721
913
  /**
722
- * Repository ID
914
+ * Cluster ID
723
915
  */
724
- id?: string;
916
+ cluster?: string;
725
917
  /**
726
- * Whether the repository has Blaxel imports
918
+ * Completion timestamp
727
919
  */
728
- isBl?: boolean;
920
+ completedAt?: string;
729
921
  /**
730
- * Repository name
922
+ * Creation timestamp
731
923
  */
732
- name?: string;
924
+ createdAt?: string;
733
925
  /**
734
- * Repository owner
926
+ * Deletion timestamp
735
927
  */
736
- organization?: string;
928
+ deletedAt?: string;
737
929
  /**
738
- * Repository URL
930
+ * Expiration timestamp
739
931
  */
740
- url?: string;
741
- };
742
- /**
743
- * Job
744
- */
745
- export type Job = {
746
- events?: CoreEvents;
747
- metadata?: Metadata;
748
- spec?: JobSpec;
932
+ expiredAt?: string;
749
933
  /**
750
- * Job status
934
+ * Execution ID
751
935
  */
752
- status?: string;
753
- };
754
- /**
755
- * Job execution
756
- */
757
- export type JobExecution = {
758
- metadata?: JobExecutionMetadata;
759
- spec?: JobExecutionSpec;
760
- stats?: JobExecutionStats;
761
- status?: JobExecutionStatus;
936
+ id?: string;
762
937
  /**
763
- * List of execution tasks
938
+ * Job name
764
939
  */
765
- tasks?: Array<JobExecutionTask>;
766
- };
767
- /**
768
- * Configuration for a job execution
769
- */
770
- export type JobExecutionConfig = {
940
+ job?: string;
771
941
  /**
772
- * The maximum number of concurrent tasks for an execution
942
+ * Start timestamp
773
943
  */
774
- maxConcurrentTasks?: number;
944
+ startedAt?: string;
775
945
  /**
776
- * The maximum number of retries for the job execution
946
+ * Last update timestamp
777
947
  */
778
- maxRetries?: number;
948
+ updatedAt?: string;
779
949
  /**
780
- * The timeout for the job execution in seconds
950
+ * Workspace ID
781
951
  */
782
- timeout?: number;
952
+ workspace?: string;
783
953
  };
784
954
  /**
785
955
  * Job execution metadata
786
956
  */
787
- export type JobExecutionMetadata = {
957
+ export type JobExecutionMetadataWritable = {
788
958
  /**
789
959
  * Cluster ID
790
960
  */
@@ -843,6 +1013,23 @@ export type JobExecutionSpec = {
843
1013
  */
844
1014
  timeout?: number;
845
1015
  };
1016
+ /**
1017
+ * Job execution specification
1018
+ */
1019
+ export type JobExecutionSpecWritable = {
1020
+ /**
1021
+ * Number of parallel tasks
1022
+ */
1023
+ parallelism?: number;
1024
+ /**
1025
+ * List of execution tasks
1026
+ */
1027
+ tasks?: Array<JobExecutionTaskWritable>;
1028
+ /**
1029
+ * Job timeout in seconds (captured at execution creation time)
1030
+ */
1031
+ timeout?: number;
1032
+ };
846
1033
  /**
847
1034
  * Job execution statistics
848
1035
  */
@@ -872,10 +1059,39 @@ export type JobExecutionStats = {
872
1059
  */
873
1060
  total?: number;
874
1061
  };
1062
+ /**
1063
+ * Job execution statistics
1064
+ */
1065
+ export type JobExecutionStatsWritable = {
1066
+ /**
1067
+ * Number of cancelled tasks
1068
+ */
1069
+ cancelled?: number;
1070
+ /**
1071
+ * Number of failed tasks
1072
+ */
1073
+ failure?: number;
1074
+ /**
1075
+ * Number of retried tasks
1076
+ */
1077
+ retried?: number;
1078
+ /**
1079
+ * Number of running tasks
1080
+ */
1081
+ running?: number;
1082
+ /**
1083
+ * Number of successful tasks
1084
+ */
1085
+ success?: number;
1086
+ /**
1087
+ * Total number of tasks
1088
+ */
1089
+ total?: number;
1090
+ };
875
1091
  /**
876
1092
  * Job execution status
877
1093
  */
878
- export type JobExecutionStatus = string;
1094
+ export type JobExecutionStatus = 'queued' | 'pending' | 'running' | 'cancelling' | 'cancelled' | 'failed' | 'succeeded' | 'timeout';
879
1095
  /**
880
1096
  * Job execution task
881
1097
  */
@@ -888,6 +1104,18 @@ export type JobExecutionTask = {
888
1104
  spec?: JobExecutionTaskSpec;
889
1105
  status?: JobExecutionTaskStatus;
890
1106
  };
1107
+ /**
1108
+ * Job execution task
1109
+ */
1110
+ export type JobExecutionTaskWritable = {
1111
+ /**
1112
+ * Task conditions
1113
+ */
1114
+ conditions?: Array<JobExecutionTaskCondition>;
1115
+ metadata?: JobExecutionTaskMetadataWritable;
1116
+ spec?: JobExecutionTaskSpec;
1117
+ status?: JobExecutionTaskStatus;
1118
+ };
891
1119
  /**
892
1120
  * Job execution task condition
893
1121
  */
@@ -924,11 +1152,11 @@ export type JobExecutionTaskMetadata = {
924
1152
  /**
925
1153
  * Completion timestamp
926
1154
  */
927
- completedAt?: string;
1155
+ readonly completedAt?: string;
928
1156
  /**
929
1157
  * Creation timestamp
930
1158
  */
931
- createdAt?: string;
1159
+ readonly createdAt?: string;
932
1160
  /**
933
1161
  * Task name
934
1162
  */
@@ -936,15 +1164,24 @@ export type JobExecutionTaskMetadata = {
936
1164
  /**
937
1165
  * Scheduled timestamp
938
1166
  */
939
- scheduledAt?: string;
1167
+ readonly scheduledAt?: string;
940
1168
  /**
941
1169
  * Start timestamp
942
1170
  */
943
- startedAt?: string;
1171
+ readonly startedAt?: string;
944
1172
  /**
945
1173
  * Last update timestamp
946
1174
  */
947
- updatedAt?: string;
1175
+ readonly updatedAt?: string;
1176
+ };
1177
+ /**
1178
+ * Job execution task metadata
1179
+ */
1180
+ export type JobExecutionTaskMetadataWritable = {
1181
+ /**
1182
+ * Task name
1183
+ */
1184
+ name?: string;
948
1185
  };
949
1186
  /**
950
1187
  * Job execution task specification
@@ -962,158 +1199,74 @@ export type JobExecutionTaskSpec = {
962
1199
  /**
963
1200
  * Job execution task status
964
1201
  */
965
- export type JobExecutionTaskStatus = string;
1202
+ export type JobExecutionTaskStatus = 'unspecified' | 'pending' | 'reconciling' | 'failed' | 'succeeded' | 'running' | 'cancelled';
966
1203
  /**
967
- * Metrics for job
1204
+ * Runtime configuration defining how batch job tasks are executed with parallelism and retry settings
968
1205
  */
969
- export type JobMetrics = {
970
- /**
971
- * Billable time
972
- */
973
- billableTime?: Array<JobsChartValue>;
1206
+ export type JobRuntime = {
974
1207
  /**
975
- * CPU usage
1208
+ * Environment variables injected into job tasks. Supports Kubernetes EnvVar format with valueFrom references.
976
1209
  */
977
- cpuUsage?: Array<JobsChartValue>;
1210
+ envs?: Array<Env>;
978
1211
  /**
979
- * Executions chart
1212
+ * Infrastructure generation: mk2 (containers, 2-10s cold starts) or mk3 (microVMs, sub-25ms cold starts)
980
1213
  */
981
- executionsChart?: Array<JobsSuccessFailedChart>;
1214
+ generation?: 'mk2' | 'mk3';
982
1215
  /**
983
- * Executions running
1216
+ * Container image built by Blaxel when deploying with 'bl deploy'. This field is auto-populated during deployment.
984
1217
  */
985
- executionsRunning?: Array<JobsChartValue>;
986
- /**
987
- * Total executions
988
- */
989
- executionsTotal?: {
990
- [key: string]: unknown;
991
- };
1218
+ image?: string;
992
1219
  /**
993
- * RAM usage
1220
+ * Maximum number of tasks that can run simultaneously within a single execution
994
1221
  */
995
- ramUsage?: Array<JobsChartValue>;
1222
+ maxConcurrentTasks?: number;
996
1223
  /**
997
- * Tasks chart
1224
+ * Number of automatic retry attempts for failed tasks before marking as failed
998
1225
  */
999
- tasksChart?: Array<JobsSuccessFailedChart>;
1226
+ maxRetries?: number;
1000
1227
  /**
1001
- * Tasks running
1228
+ * Memory allocation in megabytes. Also determines CPU allocation (CPU cores = memory in MB / 2048, e.g., 4096MB = 2 CPUs).
1002
1229
  */
1003
- tasksRunning?: Array<JobsChartValue>;
1230
+ memory?: number;
1231
+ ports?: Ports;
1004
1232
  /**
1005
- * Total tasks
1233
+ * Maximum execution time in seconds before a task is terminated
1006
1234
  */
1007
- tasksTotal?: {
1008
- [key: string]: unknown;
1009
- };
1235
+ timeout?: number;
1010
1236
  };
1011
1237
  /**
1012
- * Job specification
1238
+ * Configuration for a batch job including execution parameters, parallelism settings, and deployment region
1013
1239
  */
1014
- export type JobSpec = CoreSpec & {
1240
+ export type JobSpec = {
1241
+ /**
1242
+ * When false, the job is disabled and new executions cannot be triggered
1243
+ */
1244
+ enabled?: boolean;
1245
+ policies?: PoliciesList;
1015
1246
  /**
1016
1247
  * Region where the job should be created (e.g. us-was-1, eu-lon-1)
1017
1248
  */
1018
1249
  region?: string;
1250
+ revision?: RevisionConfiguration;
1251
+ runtime?: JobRuntime;
1019
1252
  triggers?: Triggers;
1020
1253
  };
1021
1254
  /**
1022
- * Jobs CPU usage
1023
- */
1024
- export type JobsChartValue = {
1025
- /**
1026
- * Metric timestamp
1027
- */
1028
- timestamp?: string;
1029
- /**
1030
- * Metric value
1031
- */
1032
- value?: number;
1033
- };
1034
- /**
1035
- * Jobs chart
1036
- */
1037
- export type JobsNetworkChart = {
1038
- /**
1039
- * Received
1040
- */
1041
- received?: Array<JobsChartValue>;
1042
- /**
1043
- * Sent
1044
- */
1045
- sent?: Array<JobsChartValue>;
1046
- };
1047
- /**
1048
- * Jobs chart
1049
- */
1050
- export type JobsSuccessFailedChart = {
1051
- failed?: JobsChartValue;
1052
- retried?: JobsChartValue;
1053
- success?: JobsChartValue;
1054
- /**
1055
- * Metric timestamp
1056
- */
1057
- timestamp?: string;
1058
- total?: JobsChartValue;
1059
- };
1060
- /**
1061
- * Jobs executions
1062
- */
1063
- export type JobsTotal = {
1064
- /**
1065
- * Failed executions
1066
- */
1067
- failed?: number;
1068
- /**
1069
- * Running executions
1070
- */
1071
- running?: number;
1072
- /**
1073
- * Success executions
1074
- */
1075
- success?: number;
1076
- /**
1077
- * Total executions
1078
- */
1079
- total?: number;
1080
- };
1081
- /**
1082
- * Last N requests
1255
+ * Configuration for a batch job including execution parameters, parallelism settings, and deployment region
1083
1256
  */
1084
- export type LastNRequestsMetric = {
1257
+ export type JobSpecWritable = {
1085
1258
  /**
1086
- * Timestamp
1259
+ * When false, the job is disabled and new executions cannot be triggered
1087
1260
  */
1088
- date?: string;
1089
- /**
1090
- * Status code
1091
- */
1092
- statusCode?: string;
1093
- /**
1094
- * Workload ID
1095
- */
1096
- workloadId?: string;
1097
- /**
1098
- * Workload type
1099
- */
1100
- workloadType?: string;
1101
- /**
1102
- * Workspace
1103
- */
1104
- workspace?: string;
1105
- };
1106
- /**
1107
- * Latency metrics
1108
- */
1109
- export type LatencyMetric = {
1261
+ enabled?: boolean;
1262
+ policies?: PoliciesList;
1110
1263
  /**
1111
- * Global histogram
1264
+ * Region where the job should be created (e.g. us-was-1, eu-lon-1)
1112
1265
  */
1113
- globalHistogram?: Array<HistogramBucket>;
1114
- globalStats?: HistogramStats;
1115
- histogramPerCode?: HistogramBucket;
1116
- statsPerCode?: HistogramStats;
1266
+ region?: string;
1267
+ revision?: RevisionConfiguration;
1268
+ runtime?: JobRuntime;
1269
+ triggers?: TriggersWritable;
1117
1270
  };
1118
1271
  /**
1119
1272
  * Location availability for policies
@@ -1145,47 +1298,80 @@ export type LocationResponse = {
1145
1298
  status?: string;
1146
1299
  };
1147
1300
  /**
1148
- * Response for logs
1301
+ * Definition of an MCP from the MCP Hub
1149
1302
  */
1150
- export type LogsResponse = {
1303
+ export type McpDefinition = TimeFields & {
1151
1304
  /**
1152
- * Data
1305
+ * Categories of the artifact
1153
1306
  */
1154
- data?: Array<unknown>;
1155
- };
1156
- /**
1157
- * Response data for logs
1158
- */
1159
- export type LogsResponseData = {
1307
+ categories?: Array<{
1308
+ [key: string]: unknown;
1309
+ }>;
1160
1310
  /**
1161
- * Body of the log
1311
+ * If the artifact is coming soon
1162
1312
  */
1163
- body?: string;
1313
+ coming_soon?: boolean;
1164
1314
  /**
1165
- * Log attributes
1315
+ * Description of the artifact
1166
1316
  */
1167
- logAttributes?: Array<unknown>;
1317
+ description?: string;
1168
1318
  /**
1169
- * Severity number of the log
1319
+ * Display name of the artifact
1170
1320
  */
1171
- severityNumber?: number;
1321
+ displayName?: string;
1172
1322
  /**
1173
- * Timestamp of the log
1323
+ * If the artifact is enterprise
1174
1324
  */
1175
- timestamp?: string;
1325
+ enterprise?: boolean;
1326
+ entrypoint?: Entrypoint;
1327
+ form?: Form;
1328
+ /**
1329
+ * If the artifact is hidden
1330
+ */
1331
+ hidden?: boolean;
1176
1332
  /**
1177
- * Trace ID of the log
1333
+ * Hidden secrets of the artifact
1178
1334
  */
1179
- traceId?: string;
1335
+ hiddenSecrets?: Array<string>;
1336
+ /**
1337
+ * Icon of the artifact
1338
+ */
1339
+ icon?: string;
1340
+ /**
1341
+ * Image of the artifact
1342
+ */
1343
+ image?: string;
1344
+ /**
1345
+ * Integration of the artifact
1346
+ */
1347
+ integration?: string;
1348
+ /**
1349
+ * Long description of the artifact
1350
+ */
1351
+ longDescription?: string;
1352
+ /**
1353
+ * Name of the artifact
1354
+ */
1355
+ name?: string;
1356
+ /**
1357
+ * Transport compatibility for the MCP, can be "websocket" or "http-stream"
1358
+ */
1359
+ transport?: string;
1360
+ /**
1361
+ * URL of the artifact
1362
+ */
1363
+ url?: string;
1180
1364
  };
1181
1365
  /**
1182
1366
  * Definition of an MCP from the MCP Hub
1183
1367
  */
1184
- export type McpDefinition = TimeFields & {
1368
+ export type McpDefinitionWritable = TimeFields & {
1185
1369
  /**
1186
1370
  * Categories of the artifact
1187
1371
  */
1188
- categories?: Array<unknown>;
1372
+ categories?: Array<{
1373
+ [key: string]: unknown;
1374
+ }>;
1189
1375
  /**
1190
1376
  * If the artifact is coming soon
1191
1377
  */
@@ -1202,18 +1388,8 @@ export type McpDefinition = TimeFields & {
1202
1388
  * If the artifact is enterprise
1203
1389
  */
1204
1390
  enterprise?: boolean;
1205
- /**
1206
- * Entrypoint of the artifact
1207
- */
1208
- entrypoint?: {
1209
- [key: string]: unknown;
1210
- };
1211
- /**
1212
- * Form of the artifact
1213
- */
1214
- form?: {
1215
- [key: string]: unknown;
1216
- };
1391
+ entrypoint?: Entrypoint;
1392
+ form?: Form;
1217
1393
  /**
1218
1394
  * If the artifact is hidden
1219
1395
  */
@@ -1252,152 +1428,107 @@ export type McpDefinition = TimeFields & {
1252
1428
  url?: string;
1253
1429
  };
1254
1430
  /**
1255
- * Memory allocation by service name
1431
+ * Common metadata fields shared by all Blaxel resources including name, labels, timestamps, and ownership information
1256
1432
  */
1257
- export type MemoryAllocationByName = {
1433
+ export type Metadata = TimeFields & OwnerFields & {
1258
1434
  /**
1259
- * Memory allocation value
1435
+ * Human-readable name for display in the UI. Can contain spaces and special characters, max 63 characters.
1260
1436
  */
1261
- allocation?: number;
1437
+ displayName?: string;
1438
+ labels?: MetadataLabels;
1262
1439
  /**
1263
- * Name
1440
+ * Unique identifier for the resource within the workspace. Must be lowercase alphanumeric with hyphens, max 49 characters. Immutable after creation.
1264
1441
  */
1265
- name?: string;
1266
- };
1267
- /**
1268
- * Metrics for memory allocation
1269
- */
1270
- export type MemoryAllocationMetric = {
1442
+ name: string;
1443
+ /**
1444
+ * Billing plan tier applied to this resource (inherited from workspace account)
1445
+ */
1446
+ readonly plan?: string;
1271
1447
  /**
1272
- * Total memory allocation in GB-seconds
1448
+ * Auto-generated endpoint URL for accessing this resource (for agents, functions, models, sandboxes)
1273
1449
  */
1274
- totalAllocation?: number;
1450
+ readonly url?: string;
1451
+ /**
1452
+ * Name of the workspace this resource belongs to (read-only, set automatically)
1453
+ */
1454
+ readonly workspace?: string;
1275
1455
  };
1276
1456
  /**
1277
- * Metadata
1457
+ * Common metadata fields shared by all Blaxel resources including name, labels, timestamps, and ownership information
1278
1458
  */
1279
- export type Metadata = TimeFields & OwnerFields & {
1459
+ export type MetadataWritable = TimeFields & OwnerFields & {
1280
1460
  /**
1281
- * Model display name
1461
+ * Human-readable name for display in the UI. Can contain spaces and special characters, max 63 characters.
1282
1462
  */
1283
1463
  displayName?: string;
1284
1464
  labels?: MetadataLabels;
1285
1465
  /**
1286
- * Model name
1287
- */
1288
- name?: string;
1289
- /**
1290
- * Plan
1466
+ * Unique identifier for the resource within the workspace. Must be lowercase alphanumeric with hyphens, max 49 characters. Immutable after creation.
1291
1467
  */
1292
- plan?: unknown;
1293
- /**
1294
- * URL
1295
- */
1296
- url?: string;
1297
- /**
1298
- * Workspace name
1299
- */
1300
- workspace?: string;
1468
+ name: string;
1301
1469
  };
1302
1470
  /**
1303
- * Labels
1471
+ * Key-value pairs for organizing and filtering resources. Labels can be used to categorize resources by environment, project, team, or any custom taxonomy.
1304
1472
  */
1305
1473
  export type MetadataLabels = {
1306
1474
  [key: string]: string;
1307
1475
  };
1308
1476
  /**
1309
- * Metric
1477
+ * Gateway endpoint to external LLM provider APIs (OpenAI, Anthropic, etc.) with unified access control, credentials management, and usage tracking.
1310
1478
  */
1311
- export type Metric = {
1312
- /**
1313
- * Metric value
1314
- */
1315
- rate?: number;
1316
- /**
1317
- * Metric value
1318
- */
1319
- requestTotal?: number;
1320
- /**
1321
- * Metric timestamp
1322
- */
1323
- timestamp?: string;
1479
+ export type Model = {
1480
+ events?: CoreEvents;
1481
+ metadata: Metadata;
1482
+ spec: ModelSpec;
1483
+ status?: Status;
1324
1484
  };
1325
1485
  /**
1326
- * Metrics for resources
1486
+ * Gateway endpoint to external LLM provider APIs (OpenAI, Anthropic, etc.) with unified access control, credentials management, and usage tracking.
1327
1487
  */
1328
- export type Metrics = {
1329
- /**
1330
- * Metrics for agents
1331
- */
1332
- agents?: unknown;
1333
- /**
1334
- * Metrics for functions
1335
- */
1336
- functions?: unknown;
1337
- inferenceErrorGlobal?: ArrayMetric;
1338
- /**
1339
- * Historical requests for all resources globally
1340
- */
1341
- inferenceGlobal?: Array<unknown>;
1342
- /**
1343
- * Historical requests for all resources globally
1344
- */
1345
- items?: Array<RequestTotalResponseData>;
1346
- /**
1347
- * Metrics for jobs
1348
- */
1349
- jobs?: unknown;
1350
- /**
1351
- * Metric value
1352
- */
1353
- lastNRequests?: Array<LastNRequestsMetric>;
1354
- /**
1355
- * Metrics for models
1356
- */
1357
- models?: {
1358
- [key: string]: unknown;
1359
- };
1360
- /**
1361
- * Number of requests for all resources globally
1362
- */
1363
- requestTotal?: number;
1488
+ export type ModelWritable = {
1489
+ events?: CoreEventsWritable;
1490
+ metadata: MetadataWritable;
1491
+ spec: ModelSpec;
1492
+ status?: Status;
1493
+ };
1494
+ /**
1495
+ * Configuration identifying which external LLM provider and model this gateway endpoint proxies to
1496
+ */
1497
+ export type ModelRuntime = {
1364
1498
  /**
1365
- * Number of requests for all resources globally per code
1499
+ * Provider-specific endpoint name (e.g., HuggingFace Inference Endpoints name)
1366
1500
  */
1367
- requestTotalPerCode?: {
1368
- [key: string]: unknown;
1369
- };
1501
+ endpointName?: string;
1370
1502
  /**
1371
- * Number of requests per second for all resources globally
1503
+ * Model identifier at the provider (e.g., gpt-4.1, claude-sonnet-4-20250514, mistral-large-latest)
1372
1504
  */
1373
- rps?: number;
1505
+ model?: string;
1374
1506
  /**
1375
- * Number of requests per second for all resources globally per code
1507
+ * Organization or account identifier at the provider (required for some providers like OpenAI)
1376
1508
  */
1377
- rpsPerCode?: {
1378
- [key: string]: unknown;
1379
- };
1509
+ organization?: string;
1380
1510
  /**
1381
- * Metrics for sandboxes
1511
+ * LLM provider type determining the API protocol and authentication method
1382
1512
  */
1383
- sandboxes?: unknown;
1513
+ type?: 'hf_private_endpoint' | 'hf_public_endpoint' | 'huggingface' | 'public_model' | 'mcp' | 'openai' | 'anthropic' | 'gemini' | 'mistral' | 'deepseek' | 'cohere' | 'cerebras' | 'xai' | 'vertexai' | 'azure-openai-service' | 'azure-ai-inference' | 'azure-marketplace' | 'groq';
1384
1514
  };
1385
1515
  /**
1386
- * Logical object representing a model
1516
+ * Configuration for a model gateway endpoint including provider type, credentials, and access policies
1387
1517
  */
1388
- export type Model = {
1389
- events?: CoreEvents;
1390
- metadata?: Metadata;
1391
- spec?: ModelSpec;
1518
+ export type ModelSpec = {
1392
1519
  /**
1393
- * Model status
1520
+ * When false, the model endpoint is disabled and will not accept inference requests
1394
1521
  */
1395
- status?: string;
1522
+ enabled?: boolean;
1523
+ flavors?: Flavors;
1524
+ integrationConnections?: IntegrationConnectionsList;
1525
+ policies?: PoliciesList;
1526
+ runtime?: ModelRuntime;
1527
+ /**
1528
+ * When true, uses sandbox/test credentials from the integration connection
1529
+ */
1530
+ sandbox?: boolean;
1396
1531
  };
1397
- /**
1398
- * Model specification
1399
- */
1400
- export type ModelSpec = CoreSpec & unknown;
1401
1532
  /**
1402
1533
  * OAuth of the artifact
1403
1534
  */
@@ -1405,7 +1536,9 @@ export type OAuth = {
1405
1536
  /**
1406
1537
  * Scope of the OAuth
1407
1538
  */
1408
- scope?: Array<unknown>;
1539
+ scope?: Array<{
1540
+ [key: string]: unknown;
1541
+ }>;
1409
1542
  /**
1410
1543
  * Type of the OAuth
1411
1544
  */
@@ -1418,11 +1551,11 @@ export type OwnerFields = {
1418
1551
  /**
1419
1552
  * The user or service account who created the resource
1420
1553
  */
1421
- createdBy?: string;
1554
+ readonly createdBy?: string;
1422
1555
  /**
1423
1556
  * The user or service account who updated the resource
1424
1557
  */
1425
- updatedBy?: string;
1558
+ readonly updatedBy?: string;
1426
1559
  };
1427
1560
  /**
1428
1561
  * Pending invitation in workspace
@@ -1445,6 +1578,27 @@ export type PendingInvitation = TimeFields & OwnerFields & {
1445
1578
  */
1446
1579
  workspace?: string;
1447
1580
  };
1581
+ /**
1582
+ * Pending invitation in workspace
1583
+ */
1584
+ export type PendingInvitationWritable = TimeFields & OwnerFields & {
1585
+ /**
1586
+ * User email
1587
+ */
1588
+ email?: string;
1589
+ /**
1590
+ * User sub
1591
+ */
1592
+ invitedBy?: string;
1593
+ /**
1594
+ * ACL role
1595
+ */
1596
+ role?: string;
1597
+ /**
1598
+ * Workspace name
1599
+ */
1600
+ workspace?: string;
1601
+ };
1448
1602
  /**
1449
1603
  * Pending invitation accept
1450
1604
  */
@@ -1455,6 +1609,16 @@ export type PendingInvitationAccept = {
1455
1609
  email?: string;
1456
1610
  workspace?: Workspace;
1457
1611
  };
1612
+ /**
1613
+ * Pending invitation accept
1614
+ */
1615
+ export type PendingInvitationAcceptWritable = {
1616
+ /**
1617
+ * User email
1618
+ */
1619
+ email?: string;
1620
+ workspace?: WorkspaceWritable;
1621
+ };
1458
1622
  /**
1459
1623
  * Pending invitation in workspace
1460
1624
  */
@@ -1516,26 +1680,28 @@ export type PendingInvitationWorkspaceDetails = {
1516
1680
  /**
1517
1681
  * List of user emails in the workspace
1518
1682
  */
1519
- emails?: Array<unknown>;
1683
+ emails?: Array<{
1684
+ [key: string]: unknown;
1685
+ }>;
1520
1686
  /**
1521
1687
  * Number of users in the workspace
1522
1688
  */
1523
1689
  user_number?: number;
1524
1690
  };
1691
+ export type PoliciesList = Array<string>;
1525
1692
  /**
1526
- * Pod template specification
1693
+ * Rule that controls how a deployment is made and served (e.g. location restrictions)
1527
1694
  */
1528
- export type PodTemplateSpec = {
1529
- [key: string]: unknown;
1695
+ export type Policy = {
1696
+ metadata: Metadata;
1697
+ spec: PolicySpec;
1530
1698
  };
1531
- export type Policies = Array<Policy>;
1532
- export type PoliciesList = Array<string>;
1533
1699
  /**
1534
1700
  * Rule that controls how a deployment is made and served (e.g. location restrictions)
1535
1701
  */
1536
- export type Policy = {
1537
- metadata?: Metadata;
1538
- spec?: PolicySpec;
1702
+ export type PolicyWritable = {
1703
+ metadata: MetadataWritable;
1704
+ spec: PolicySpec;
1539
1705
  };
1540
1706
  /**
1541
1707
  * Policy location
@@ -1548,7 +1714,7 @@ export type PolicyLocation = {
1548
1714
  /**
1549
1715
  * Policy location type
1550
1716
  */
1551
- type?: string;
1717
+ type?: 'location' | 'country' | 'continent';
1552
1718
  };
1553
1719
  /**
1554
1720
  * PolicyLocations is a local type that wraps a slice of Location
@@ -1586,7 +1752,7 @@ export type PolicyMaxTokens = {
1586
1752
  /**
1587
1753
  * PolicyResourceType is a type of resource, e.g. model, function, etc.
1588
1754
  */
1589
- export type PolicyResourceType = string;
1755
+ export type PolicyResourceType = 'model' | 'function' | 'agent' | 'sandbox';
1590
1756
  /**
1591
1757
  * PolicyResourceTypes is a local type that wraps a slice of PolicyResourceType
1592
1758
  */
@@ -1606,7 +1772,7 @@ export type PolicySpec = {
1606
1772
  /**
1607
1773
  * Policy type, can be location or flavor
1608
1774
  */
1609
- type?: string;
1775
+ type?: 'location' | 'flavor' | 'maxToken';
1610
1776
  };
1611
1777
  /**
1612
1778
  * A port for a resource
@@ -1619,11 +1785,11 @@ export type Port = {
1619
1785
  /**
1620
1786
  * The protocol of the port
1621
1787
  */
1622
- protocol?: string;
1788
+ protocol?: 'HTTP' | 'TCP' | 'UDP';
1623
1789
  /**
1624
1790
  * The target port of the port
1625
1791
  */
1626
- target?: number;
1792
+ target: number;
1627
1793
  };
1628
1794
  /**
1629
1795
  * Set of ports for a resource
@@ -1633,8 +1799,15 @@ export type Ports = Array<Port>;
1633
1799
  * Preview of a Resource
1634
1800
  */
1635
1801
  export type Preview = {
1636
- metadata?: PreviewMetadata;
1637
- spec?: PreviewSpec;
1802
+ metadata: PreviewMetadata;
1803
+ spec: PreviewSpec;
1804
+ };
1805
+ /**
1806
+ * Preview of a Resource
1807
+ */
1808
+ export type PreviewWritable = {
1809
+ metadata: PreviewMetadataWritable;
1810
+ spec: PreviewSpecWritable;
1638
1811
  };
1639
1812
  /**
1640
1813
  * PreviewMetadata
@@ -1647,7 +1820,32 @@ export type PreviewMetadata = TimeFields & OwnerFields & {
1647
1820
  /**
1648
1821
  * Preview name
1649
1822
  */
1650
- name?: string;
1823
+ name: string;
1824
+ /**
1825
+ * Resource name
1826
+ */
1827
+ resourceName?: string;
1828
+ /**
1829
+ * Resource type
1830
+ */
1831
+ resourceType?: string;
1832
+ /**
1833
+ * Workspace name
1834
+ */
1835
+ workspace?: string;
1836
+ };
1837
+ /**
1838
+ * PreviewMetadata
1839
+ */
1840
+ export type PreviewMetadataWritable = TimeFields & OwnerFields & {
1841
+ /**
1842
+ * Model display name
1843
+ */
1844
+ displayName?: string;
1845
+ /**
1846
+ * Preview name
1847
+ */
1848
+ name: string;
1651
1849
  /**
1652
1850
  * Resource name
1653
1851
  */
@@ -1688,7 +1886,7 @@ export type PreviewSpec = {
1688
1886
  /**
1689
1887
  * Region where the preview is deployed, this is readonly
1690
1888
  */
1691
- region?: string;
1889
+ readonly region?: string;
1692
1890
  /**
1693
1891
  * Those headers will be set in all requests to your preview. This is especially useful to set the Authorization header.
1694
1892
  */
@@ -1708,14 +1906,62 @@ export type PreviewSpec = {
1708
1906
  /**
1709
1907
  * URL of the preview
1710
1908
  */
1711
- url?: string;
1909
+ readonly url?: string;
1910
+ };
1911
+ /**
1912
+ * Preview of a Resource
1913
+ */
1914
+ export type PreviewSpecWritable = {
1915
+ /**
1916
+ * Custom domain bound to this preview
1917
+ */
1918
+ customDomain?: string;
1919
+ /**
1920
+ * The expiration date for the preview in ISO 8601 format - 2024-12-31T23:59:59Z
1921
+ */
1922
+ expires?: string;
1923
+ /**
1924
+ * Port of the preview
1925
+ */
1926
+ port?: number;
1927
+ /**
1928
+ * Prefix URL
1929
+ */
1930
+ prefixUrl?: string;
1931
+ /**
1932
+ * Whether the preview is public
1933
+ */
1934
+ public?: boolean;
1935
+ /**
1936
+ * Those headers will be set in all requests to your preview. This is especially useful to set the Authorization header.
1937
+ */
1938
+ requestHeaders?: {
1939
+ [key: string]: string;
1940
+ };
1941
+ /**
1942
+ * Those headers will be set in all responses of your preview. This is especially useful to set the CORS headers.
1943
+ */
1944
+ responseHeaders?: {
1945
+ [key: string]: string;
1946
+ };
1947
+ /**
1948
+ * Time to live for the preview (e.g., "1h", "24h", "7d"). After this duration, the preview will be automatically deleted.
1949
+ */
1950
+ ttl?: string;
1712
1951
  };
1713
1952
  /**
1714
1953
  * Token for a Preview
1715
1954
  */
1716
1955
  export type PreviewToken = {
1717
- metadata?: PreviewTokenMetadata;
1718
- spec?: PreviewTokenSpec;
1956
+ metadata: PreviewTokenMetadata;
1957
+ spec: PreviewTokenSpec;
1958
+ };
1959
+ /**
1960
+ * Token for a Preview
1961
+ */
1962
+ export type PreviewTokenWritable = {
1963
+ metadata: PreviewTokenMetadata;
1964
+ spec: PreviewTokenSpecWritable;
1719
1965
  };
1720
1966
  /**
1721
1967
  * PreviewTokenMetadata
@@ -1724,7 +1970,7 @@ export type PreviewTokenMetadata = {
1724
1970
  /**
1725
1971
  * Token name
1726
1972
  */
1727
- name?: string;
1973
+ name: string;
1728
1974
  /**
1729
1975
  * Preview name
1730
1976
  */
@@ -1749,7 +1995,7 @@ export type PreviewTokenSpec = {
1749
1995
  /**
1750
1996
  * Whether the token is expired
1751
1997
  */
1752
- expired?: boolean;
1998
+ readonly expired?: boolean;
1753
1999
  /**
1754
2000
  * Expiration time of the token
1755
2001
  */
@@ -1757,7 +2003,16 @@ export type PreviewTokenSpec = {
1757
2003
  /**
1758
2004
  * Token
1759
2005
  */
1760
- token?: string;
2006
+ readonly token?: string;
2007
+ };
2008
+ /**
2009
+ * Spec for a Preview Token
2010
+ */
2011
+ export type PreviewTokenSpecWritable = {
2012
+ /**
2013
+ * Expiration time of the token
2014
+ */
2015
+ expiresAt?: string;
1761
2016
  };
1762
2017
  /**
1763
2018
  * Private location available for policies
@@ -1786,350 +2041,46 @@ export type PublicIps = {
1786
2041
  [key: string]: PublicIp;
1787
2042
  };
1788
2043
  /**
1789
- * Region
1790
- */
1791
- export type Region = {
1792
- /**
1793
- * Region display name
1794
- */
1795
- allowed?: string;
1796
- /**
1797
- * Region display name
1798
- */
1799
- continent?: string;
1800
- /**
1801
- * Region display name
1802
- */
1803
- country?: string;
1804
- /**
1805
- * Region display name
1806
- */
1807
- infoGeneration?: string;
1808
- /**
1809
- * Region display name
1810
- */
1811
- location?: string;
1812
- /**
1813
- * Region name
1814
- */
1815
- name?: string;
1816
- };
1817
- /**
1818
- * Repository
1819
- */
1820
- export type Repository = {
1821
- /**
1822
- * Repository type
1823
- */
1824
- type?: string;
1825
- /**
1826
- * Repository URL
1827
- */
1828
- url?: string;
1829
- };
1830
- /**
1831
- * Request duration over time metric
1832
- */
1833
- export type RequestDurationOverTimeMetric = {
1834
- /**
1835
- * Average request duration
1836
- */
1837
- average?: number;
1838
- /**
1839
- * P50 request duration
1840
- */
1841
- p50?: number;
1842
- /**
1843
- * P90 request duration
1844
- */
1845
- p90?: number;
1846
- /**
1847
- * P99 request duration
1848
- */
1849
- p99?: number;
1850
- /**
1851
- * Timestamp
1852
- */
1853
- timestamp?: string;
1854
- };
1855
- /**
1856
- * Request duration over time metrics
1857
- */
1858
- export type RequestDurationOverTimeMetrics = {
1859
- /**
1860
- * Request duration over time
1861
- */
1862
- requestDurationOverTime?: Array<RequestDurationOverTimeMetric>;
1863
- };
1864
- /**
1865
- * Request total by origin metric
1866
- */
1867
- export type RequestTotalByOriginMetric = {
1868
- /**
1869
- * Request total by origin
1870
- */
1871
- requestTotalByOrigin?: {
1872
- [key: string]: unknown;
1873
- };
1874
- /**
1875
- * Request total by origin and code
1876
- */
1877
- requestTotalByOriginAndCode?: {
1878
- [key: string]: unknown;
1879
- };
1880
- };
1881
- /**
1882
- * Metrics for request total
1883
- */
1884
- export type RequestTotalMetric = {
1885
- /**
1886
- * Historical requests for all resources globally
1887
- */
1888
- items?: Array<RequestTotalResponseData>;
1889
- /**
1890
- * Number of requests for all resources globally
1891
- */
1892
- requestTotal?: number;
1893
- /**
1894
- * Number of requests for all resources globally per code
1895
- */
1896
- requestTotalPerCode?: {
1897
- [key: string]: unknown;
1898
- };
1899
- /**
1900
- * Number of requests per second for all resources globally
1901
- */
1902
- rps?: number;
1903
- /**
1904
- * Number of requests for all resources globally
1905
- */
1906
- rpsPerCode?: {
1907
- [key: string]: unknown;
1908
- };
1909
- };
1910
- /**
1911
- * Request total response data
1912
- */
1913
- export type RequestTotalResponseData = {
1914
- /**
1915
- * Request total
1916
- */
1917
- requestTotal?: number;
1918
- /**
1919
- * Status code
1920
- */
1921
- statusCode?: string;
1922
- /**
1923
- * Workload ID
1924
- */
1925
- workloadId?: string;
1926
- /**
1927
- * Workload type
1928
- */
1929
- workloadType?: string;
1930
- /**
1931
- * Workspace
1932
- */
1933
- workspace?: string;
1934
- };
1935
- /**
1936
- * Resource
1937
- */
1938
- export type Resource = {
1939
- /**
1940
- * Region of the resource
1941
- */
1942
- infrastructureGeneration?: string;
1943
- /**
1944
- * Name of the resource
1945
- */
1946
- name?: string;
1947
- /**
1948
- * Type of the resource
1949
- */
1950
- type?: string;
1951
- /**
1952
- * Workspace of the resource
1953
- */
1954
- workspace?: string;
1955
- /**
1956
- * Workspace ID of the resource
1957
- */
1958
- workspaceId?: string;
1959
- };
1960
- /**
1961
- * Log for a resource deployment (eg. model deployment, function deployment)
1962
- */
1963
- export type ResourceLog = {
1964
- /**
1965
- * Content of the log
1966
- */
1967
- message?: string;
1968
- /**
1969
- * Severity of the log
1970
- */
1971
- severity?: number;
1972
- /**
1973
- * The timestamp of the log
1974
- */
1975
- timestamp?: string;
1976
- /**
1977
- * Trace ID of the log
1978
- */
1979
- trace_id?: string;
1980
- };
1981
- /**
1982
- * Chart for a resource log
1983
- */
1984
- export type ResourceLogChart = {
1985
- /**
1986
- * Count of the log
1987
- */
1988
- count?: number;
1989
- /**
1990
- * Debug count of the log
1991
- */
1992
- debug?: number;
1993
- /**
1994
- * Error count of the log
1995
- */
1996
- error?: number;
1997
- /**
1998
- * Fatal count of the log
1999
- */
2000
- fatal?: number;
2001
- /**
2002
- * Info count of the log
2003
- */
2004
- info?: number;
2005
- /**
2006
- * Timestamp of the log
2007
- */
2008
- timestamp?: string;
2009
- /**
2010
- * Trace count of the log
2011
- */
2012
- trace?: number;
2013
- /**
2014
- * Unknown count of the log
2015
- */
2016
- unknown?: number;
2017
- /**
2018
- * Warning count of the log
2019
- */
2020
- warning?: number;
2021
- };
2022
- /**
2023
- * Response for a resource log
2024
- */
2025
- export type ResourceLogResponse = {
2026
- /**
2027
- * Chart
2028
- */
2029
- chart?: Array<unknown>;
2030
- /**
2031
- * Logs
2032
- */
2033
- logs?: Array<unknown>;
2034
- /**
2035
- * Total count of logs
2036
- */
2037
- totalCount?: number;
2038
- };
2039
- /**
2040
- * Metrics for a single resource deployment (eg. model deployment, function deployment)
2041
- */
2042
- export type ResourceMetrics = {
2043
- billableTime?: BillableTimeMetric;
2044
- inferenceErrorsGlobal?: ArrayMetric;
2045
- inferenceGlobal?: ArrayMetric;
2046
- /**
2047
- * Historical requests (in last 24 hours) for the model deployment globally
2048
- */
2049
- lastNRequests?: Array<LastNRequestsMetric>;
2050
- latency?: LatencyMetric;
2051
- latencyPrevious?: LatencyMetric;
2052
- memoryAllocation?: MemoryAllocationMetric;
2053
- modelTtft?: LatencyMetric;
2054
- modelTtftOverTime?: TimeToFirstTokenOverTimeMetrics;
2055
- requestDurationOverTime?: RequestDurationOverTimeMetrics;
2056
- /**
2057
- * Number of requests for the resource globally
2058
- */
2059
- requestTotal?: number;
2060
- requestTotalByOrigin?: RequestTotalByOriginMetric;
2061
- requestTotalByOriginPrevious?: RequestTotalByOriginMetric;
2062
- /**
2063
- * Number of requests for the resource globally per code
2064
- */
2065
- requestTotalPerCode?: {
2066
- [key: string]: unknown;
2067
- };
2068
- /**
2069
- * Number of requests for the resource globally per code for the previous period
2070
- */
2071
- requestTotalPerCodePrevious?: {
2072
- [key: string]: unknown;
2073
- };
2074
- /**
2075
- * Number of requests for the resource globally for the previous period
2076
- */
2077
- requestTotalPrevious?: number;
2044
+ * Region
2045
+ */
2046
+ export type Region = {
2078
2047
  /**
2079
- * Number of requests per second for the resource globally
2048
+ * Region display name
2080
2049
  */
2081
- rps?: number;
2050
+ allowed?: string;
2082
2051
  /**
2083
- * Number of requests per second for the resource globally per code
2052
+ * Region display name
2084
2053
  */
2085
- rpsPerCode?: {
2086
- [key: string]: unknown;
2087
- };
2054
+ continent?: string;
2088
2055
  /**
2089
- * Number of requests per second for the resource globally per code for the previous period
2056
+ * Region display name
2090
2057
  */
2091
- rpsPerCodePrevious?: {
2092
- [key: string]: unknown;
2093
- };
2058
+ country?: string;
2094
2059
  /**
2095
- * Number of requests per second for the resource globally for the previous period
2060
+ * Region display name
2096
2061
  */
2097
- rpsPrevious?: number;
2062
+ infoGeneration?: string;
2098
2063
  /**
2099
- * CPU usage over time for sandboxes
2064
+ * Region display name
2100
2065
  */
2101
- sandboxesCpuUsage?: Array<JobsChartValue>;
2066
+ location?: string;
2102
2067
  /**
2103
- * RAM usage over time for sandboxes with memory, value, and percent metrics
2068
+ * Region name
2104
2069
  */
2105
- sandboxesRamUsage?: Array<SandboxMetrics>;
2106
- tokenRate?: TokenRateMetrics;
2107
- tokenTotal?: TokenTotalMetric;
2070
+ name?: string;
2108
2071
  };
2109
2072
  /**
2110
- * Log for a resource deployment (eg. model deployment, function deployment)
2073
+ * Repository
2111
2074
  */
2112
- export type ResourceTrace = {
2113
- /**
2114
- * Duration in nanoseconds
2115
- */
2116
- duration?: number;
2117
- /**
2118
- * Has error
2119
- */
2120
- hasError?: boolean;
2121
- /**
2122
- * The timestamp of the log
2123
- */
2124
- startTime?: string;
2075
+ export type Repository = {
2125
2076
  /**
2126
- * Status code
2077
+ * Repository type
2127
2078
  */
2128
- statusCode?: number;
2079
+ type?: string;
2129
2080
  /**
2130
- * Trace ID of the log
2081
+ * Repository URL
2131
2082
  */
2132
- traceID?: string;
2083
+ url?: string;
2133
2084
  };
2134
2085
  /**
2135
2086
  * Revision configuration
@@ -2171,15 +2122,15 @@ export type RevisionMetadata = {
2171
2122
  /**
2172
2123
  * Revision created at
2173
2124
  */
2174
- createdAt?: string;
2125
+ readonly createdAt?: string;
2175
2126
  /**
2176
2127
  * Revision created by
2177
2128
  */
2178
- createdBy?: string;
2129
+ readonly createdBy?: string;
2179
2130
  /**
2180
2131
  * Revision ID
2181
2132
  */
2182
- id?: string;
2133
+ readonly id?: string;
2183
2134
  /**
2184
2135
  * Is the revision previous active
2185
2136
  */
@@ -2187,138 +2138,65 @@ export type RevisionMetadata = {
2187
2138
  /**
2188
2139
  * Status of the revision
2189
2140
  */
2190
- status?: string;
2141
+ readonly status?: string;
2191
2142
  /**
2192
2143
  * Percent of traffic to the revision
2193
2144
  */
2194
2145
  trafficPercent?: number;
2195
2146
  };
2196
2147
  /**
2197
- * Set of configurations for a deployment
2148
+ * Revision metadata
2198
2149
  */
2199
- export type Runtime = {
2200
- /**
2201
- * The arguments to pass to the deployment runtime
2202
- */
2203
- args?: Array<unknown>;
2204
- /**
2205
- * The command to run the deployment
2206
- */
2207
- command?: Array<unknown>;
2208
- /**
2209
- * The configuration for the deployment
2210
- */
2211
- configuration?: {
2212
- [key: string]: unknown;
2213
- };
2214
- /**
2215
- * The CPU for the deployment in cores, only available for private cluster
2216
- */
2217
- cpu?: number;
2218
- /**
2219
- * Endpoint Name of the model. In case of hf_private_endpoint, it is the endpoint name. In case of hf_public_endpoint, it is not used.
2220
- */
2221
- endpointName?: string;
2222
- /**
2223
- * The env variables to set in the deployment. Should be a list of Kubernetes EnvVar types
2224
- */
2225
- envs?: Array<unknown>;
2226
- /**
2227
- * The expiration date for the deployment in ISO 8601 format - 2024-12-31T23:59:59Z
2228
- */
2229
- expires?: string;
2230
- /**
2231
- * The generation of the deployment
2232
- */
2233
- generation?: string;
2234
- /**
2235
- * The Docker image for the deployment
2236
- */
2237
- image?: string;
2238
- /**
2239
- * The maximum number of concurrent task for an execution
2240
- */
2241
- maxConcurrentTasks?: number;
2242
- /**
2243
- * The maximum number of retries for the deployment
2244
- */
2245
- maxRetries?: number;
2246
- /**
2247
- * The minimum number of replicas for the deployment. Can be 0 or 1 (in which case the deployment is always running in at least one location).
2248
- */
2249
- maxScale?: number;
2250
- /**
2251
- * The memory for the deployment in MB
2252
- */
2253
- memory?: number;
2254
- /**
2255
- * The port to serve the metrics on
2256
- */
2257
- metricPort?: number;
2258
- /**
2259
- * The maximum number of replicas for the deployment.
2260
- */
2261
- minScale?: number;
2262
- /**
2263
- * The slug name of the origin model at HuggingFace.
2264
- */
2265
- model?: string;
2266
- /**
2267
- * The organization of the model
2268
- */
2269
- organization?: string;
2270
- ports?: Ports;
2271
- /**
2272
- * The readiness probe. Should be a Kubernetes Probe type
2273
- */
2274
- startupProbe?: {
2275
- [key: string]: unknown;
2276
- };
2150
+ export type RevisionMetadataWritable = {
2277
2151
  /**
2278
- * The timeout for the deployment in seconds
2152
+ * Is the revision active
2279
2153
  */
2280
- timeout?: number;
2154
+ active?: boolean;
2281
2155
  /**
2282
- * The transport for the deployment, used by MCPs: "websocket" or "http-stream"
2156
+ * Is the revision canary
2283
2157
  */
2284
- transport?: string;
2158
+ canary?: boolean;
2285
2159
  /**
2286
- * The TTL for the deployment in seconds - 30m, 24h, 7d
2160
+ * Is the revision previous active
2287
2161
  */
2288
- ttl?: string;
2162
+ previousActive?: boolean;
2289
2163
  /**
2290
- * The type of origin for the deployment (hf_private_endpoint, hf_public_endpoint)
2164
+ * Percent of traffic to the revision
2291
2165
  */
2292
- type?: string;
2166
+ trafficPercent?: number;
2293
2167
  };
2294
2168
  /**
2295
- * Micro VM for running agentic tasks
2169
+ * Lightweight virtual machine for secure AI code execution. Sandboxes resume from standby in under 25ms and automatically scale to zero after inactivity, preserving memory state including running processes and filesystem.
2296
2170
  */
2297
2171
  export type Sandbox = {
2298
2172
  events?: CoreEvents;
2299
2173
  /**
2300
2174
  * Last time the sandbox was used (read-only, managed by the system)
2301
2175
  */
2302
- lastUsedAt?: string;
2303
- metadata?: Metadata;
2304
- spec?: SandboxSpec;
2305
- /**
2306
- * Sandbox status
2307
- */
2308
- status?: string;
2309
- /**
2310
- * TTL timestamp for automatic deletion (optional, nil means no auto-deletion)
2311
- */
2312
- ttl?: number;
2176
+ readonly lastUsedAt?: string;
2177
+ metadata: Metadata;
2178
+ spec: SandboxSpec;
2179
+ status?: Status;
2313
2180
  };
2314
2181
  /**
2315
- * Sandbox definition for admin store operations
2182
+ * Lightweight virtual machine for secure AI code execution. Sandboxes resume from standby in under 25ms and automatically scale to zero after inactivity, preserving memory state including running processes and filesystem.
2183
+ */
2184
+ export type SandboxWritable = {
2185
+ events?: CoreEventsWritable;
2186
+ metadata: MetadataWritable;
2187
+ spec: SandboxSpec;
2188
+ status?: Status;
2189
+ };
2190
+ /**
2191
+ * Pre-configured sandbox template available in the Sandbox Hub for quick deployment with predefined tools and configurations
2316
2192
  */
2317
2193
  export type SandboxDefinition = {
2318
2194
  /**
2319
2195
  * Categories of the defintion
2320
2196
  */
2321
- categories?: Array<unknown>;
2197
+ categories?: Array<{
2198
+ [key: string]: unknown;
2199
+ }>;
2322
2200
  /**
2323
2201
  * If the definition is coming soon
2324
2202
  */
@@ -2370,208 +2248,99 @@ export type SandboxDefinition = {
2370
2248
  url?: string;
2371
2249
  };
2372
2250
  /**
2373
- * Lifecycle configuration for sandbox management
2374
- */
2375
- export type SandboxLifecycle = {
2376
- /**
2377
- * List of expiration policies
2378
- */
2379
- expirationPolicies?: Array<ExpirationPolicy>;
2380
- };
2381
- /**
2382
- * Enhanced sandbox metrics with memory, value, and percent data
2383
- */
2384
- export type SandboxMetrics = {
2385
- /**
2386
- * Memory limit in bytes (from query A)
2387
- */
2388
- memory?: number;
2389
- /**
2390
- * Memory usage percentage (from formula F1)
2391
- */
2392
- percent?: number;
2393
- /**
2394
- * Metric timestamp
2395
- */
2396
- timestamp?: string;
2397
- /**
2398
- * Memory usage in bytes (from query B)
2399
- */
2400
- value?: number;
2401
- };
2402
- /**
2403
- * Sandbox specification
2251
+ * Error response returned by the CreateSandbox endpoint with extended details about the failure
2404
2252
  */
2405
- export type SandboxSpec = CoreSpec & {
2406
- lifecycle?: SandboxLifecycle;
2253
+ export type SandboxError = {
2407
2254
  /**
2408
- * Region where the sandbox should be created (e.g. us-pdx-1, eu-lon-1)
2255
+ * Error code identifying the kind of error (e.g., INVALID_IMAGE, QUOTA_EXCEEDED)
2409
2256
  */
2410
- region?: string;
2411
- volumes?: VolumeAttachments;
2412
- };
2413
- /**
2414
- * Name of a Sandbox definition
2415
- */
2416
- export type SandboxStoreDefinitionName = unknown;
2417
- /**
2418
- * Configuration for a serverless deployment
2419
- */
2420
- export type ServerlessConfig = {
2257
+ code: string;
2421
2258
  /**
2422
- * The configuration for the deployment
2259
+ * Additional error details. For INVALID_IMAGE errors, includes requested_image and supported_images array.
2423
2260
  */
2424
- configuration?: {
2261
+ details?: {
2425
2262
  [key: string]: unknown;
2426
2263
  };
2427
2264
  /**
2428
- * The maximum number of retries for the deployment
2429
- */
2430
- maxRetries?: number;
2431
- /**
2432
- * The minimum number of replicas for the deployment. Can be 0 or 1 (in which case the deployment is always running in at least one location).
2265
+ * Human-readable error message describing what went wrong
2433
2266
  */
2434
- maxScale?: number;
2435
- /**
2436
- * The maximum number of replicas for the deployment.
2437
- */
2438
- minScale?: number;
2267
+ message: string;
2439
2268
  /**
2440
- * The timeout for the deployment in seconds
2269
+ * Name of the sandbox that failed to create
2441
2270
  */
2442
- timeout?: number;
2443
- };
2444
- /**
2445
- * Configuration, this is a key value storage. In your object you can retrieve the value with config[key]
2446
- */
2447
- export type SpecConfiguration = {
2271
+ sandbox_name?: string;
2448
2272
  /**
2449
- * ACconfiguration secret
2273
+ * HTTP status code
2450
2274
  */
2451
- secret?: boolean;
2275
+ status_code?: number;
2452
2276
  /**
2453
- * Configuration value
2277
+ * Processing step where the error occurred
2454
2278
  */
2455
- value?: string;
2456
- };
2457
- /**
2458
- * Response when starting a Sandbox
2459
- */
2460
- export type StartSandbox = {
2279
+ step?: string;
2461
2280
  /**
2462
- * Human readable message about the start operation
2281
+ * ISO 8601 timestamp of when the error occurred
2463
2282
  */
2464
- message?: string;
2465
- metadata?: Metadata;
2283
+ timestamp?: string;
2466
2284
  /**
2467
- * Status of the Sandbox start operation
2285
+ * Workspace name where the sandbox creation was attempted
2468
2286
  */
2469
- status?: string;
2287
+ workspace?: string;
2470
2288
  };
2471
2289
  /**
2472
- * Response when stopping a Sandbox
2290
+ * Lifecycle configuration controlling automatic sandbox deletion based on idle time, max age, or specific dates
2473
2291
  */
2474
- export type StopSandbox = {
2475
- /**
2476
- * Human readable message about the stop operation
2477
- */
2478
- message?: string;
2479
- metadata?: Metadata;
2292
+ export type SandboxLifecycle = {
2480
2293
  /**
2481
- * Status of the Sandbox stop operation
2294
+ * List of expiration policies. Multiple policies can be combined; whichever condition is met first triggers the action.
2482
2295
  */
2483
- status?: string;
2296
+ expirationPolicies?: Array<ExpirationPolicy>;
2484
2297
  };
2485
2298
  /**
2486
- * Store agent
2299
+ * Runtime configuration defining how the sandbox VM is provisioned and its resource limits
2487
2300
  */
2488
- export type StoreAgent = TimeFields & OwnerFields & {
2489
- /**
2490
- * Store agent configuration
2491
- */
2492
- configuration?: Array<StoreConfiguration>;
2301
+ export type SandboxRuntime = {
2493
2302
  /**
2494
- * Store agent description
2303
+ * Environment variables injected into the sandbox. Supports Kubernetes EnvVar format with valueFrom references.
2495
2304
  */
2496
- description?: string;
2305
+ envs?: Array<Env>;
2497
2306
  /**
2498
- * Store agent display name
2307
+ * Absolute expiration timestamp in ISO 8601 format when the sandbox will be deleted
2499
2308
  */
2500
- displayName?: string;
2309
+ expires?: string;
2501
2310
  /**
2502
- * Store agent image
2311
+ * Sandbox image to use. Can be a public Blaxel image (e.g., blaxel/base-image:latest) or a custom template image built with 'bl deploy'.
2503
2312
  */
2504
2313
  image?: string;
2505
2314
  /**
2506
- * Store agent labels
2315
+ * Memory allocation in megabytes. Also determines CPU allocation (CPU cores = memory in MB / 2048, e.g., 4096MB = 2 CPUs).
2507
2316
  */
2508
- labels?: {
2509
- [key: string]: unknown;
2510
- };
2511
- /**
2512
- * Store agent name
2513
- */
2514
- name?: string;
2317
+ memory?: number;
2318
+ ports?: Ports;
2515
2319
  /**
2516
- * Store agent prompt, this is to define what the agent does
2320
+ * Time-to-live duration after which the sandbox is automatically deleted (e.g., '30m', '24h', '7d')
2517
2321
  */
2518
- prompt?: string;
2322
+ ttl?: string;
2519
2323
  };
2520
2324
  /**
2521
- * Store configuration for resources (eg: agent, function, etc)
2325
+ * Configuration for a sandbox including its image, memory, ports, region, and lifecycle policies
2522
2326
  */
2523
- export type StoreConfiguration = {
2327
+ export type SandboxSpec = {
2524
2328
  /**
2525
- * Available models for the configuration
2329
+ * When false, the sandbox is disabled and will not accept connections
2526
2330
  */
2527
- availableModels?: Array<string>;
2528
- /**
2529
- * Store configuration description
2530
- */
2531
- description?: string;
2532
- /**
2533
- * Store configuration display name
2534
- */
2535
- displayName?: string;
2536
- /**
2537
- * Conditional rendering for the configuration, example: provider === 'openai'
2538
- */
2539
- if?: string;
2540
- /**
2541
- * Store configuration name
2542
- */
2543
- name?: string;
2544
- options?: Array<StoreConfigurationOption>;
2545
- /**
2546
- * Store configuration required
2547
- */
2548
- required?: boolean;
2549
- /**
2550
- * Store configuration secret
2551
- */
2552
- secret?: boolean;
2331
+ enabled?: boolean;
2332
+ lifecycle?: SandboxLifecycle;
2553
2333
  /**
2554
- * Store configuration type
2334
+ * Region where the sandbox should be created (e.g. us-pdx-1, eu-lon-1). If not specified, defaults to the region closest to the user.
2555
2335
  */
2556
- type?: string;
2336
+ region?: string;
2337
+ runtime?: SandboxRuntime;
2338
+ volumes?: VolumeAttachments;
2557
2339
  };
2558
2340
  /**
2559
- * Store configuration options for a select type configuration
2341
+ * Deployment status of a resource deployed on Blaxel
2560
2342
  */
2561
- export type StoreConfigurationOption = {
2562
- /**
2563
- * Conditional rendering for the configuration option, example: provider === 'openai'
2564
- */
2565
- if?: string;
2566
- /**
2567
- * Store configuration option label
2568
- */
2569
- label?: string;
2570
- /**
2571
- * Store configuration option value
2572
- */
2573
- value?: string;
2574
- };
2343
+ export type Status = 'DELETING' | 'TERMINATED' | 'FAILED' | 'DEACTIVATED' | 'DEACTIVATING' | 'UPLOADING' | 'BUILDING' | 'DEPLOYING' | 'DEPLOYED';
2575
2344
  /**
2576
2345
  * Blaxel template
2577
2346
  */
@@ -2657,107 +2426,35 @@ export type TimeFields = {
2657
2426
  /**
2658
2427
  * The date and time when the resource was created
2659
2428
  */
2660
- createdAt?: string;
2429
+ readonly createdAt?: string;
2661
2430
  /**
2662
2431
  * The date and time when the resource was updated
2663
2432
  */
2664
- updatedAt?: string;
2665
- };
2666
- /**
2667
- * Time to first token over time metrics
2668
- */
2669
- export type TimeToFirstTokenOverTimeMetrics = {
2670
- /**
2671
- * Time to first token over time
2672
- */
2673
- timeToFirstTokenOverTime?: Array<RequestDurationOverTimeMetric>;
2674
- };
2675
- /**
2676
- * Token rate metric
2677
- */
2678
- export type TokenRateMetric = {
2679
- /**
2680
- * Model ID
2681
- */
2682
- model?: string;
2683
- /**
2684
- * Provider name
2685
- */
2686
- provider?: string;
2687
- /**
2688
- * Provider integration name
2689
- */
2690
- providerName?: string;
2691
- /**
2692
- * Timestamp
2693
- */
2694
- timestamp?: string;
2695
- /**
2696
- * Total tokens
2697
- */
2698
- tokenTotal?: number;
2699
- /**
2700
- * Trend
2701
- */
2702
- trend?: number;
2703
- };
2704
- /**
2705
- * Token rate metrics
2706
- */
2707
- export type TokenRateMetrics = {
2708
- /**
2709
- * Token rate
2710
- */
2711
- tokenRate?: Array<TokenRateMetric>;
2712
- /**
2713
- * Token rate input
2714
- */
2715
- tokenRateInput?: Array<TokenRateMetric>;
2716
- /**
2717
- * Token rate output
2718
- */
2719
- tokenRateOutput?: Array<TokenRateMetric>;
2433
+ readonly updatedAt?: string;
2720
2434
  };
2721
2435
  /**
2722
- * Token total metric
2436
+ * Trigger configuration
2723
2437
  */
2724
- export type TokenTotalMetric = {
2725
- /**
2726
- * Average input token per request
2727
- */
2728
- averageTokenInputPerRequest?: number;
2729
- /**
2730
- * Average output token per request
2731
- */
2732
- averageTokenOutputPerRequest?: number;
2733
- /**
2734
- * Average token per request
2735
- */
2736
- averageTokenPerRequest?: number;
2438
+ export type Trigger = {
2439
+ configuration?: TriggerConfiguration;
2737
2440
  /**
2738
- * Total input tokens
2441
+ * Enable or disable the trigger (default: true)
2739
2442
  */
2740
- tokenInput?: number;
2443
+ enabled?: boolean;
2741
2444
  /**
2742
- * Total output tokens
2445
+ * The id of the trigger
2743
2446
  */
2744
- tokenOutput?: number;
2447
+ id?: string;
2745
2448
  /**
2746
- * Total tokens
2449
+ * The type of trigger, can be http or http-async
2747
2450
  */
2748
- tokenTotal?: number;
2749
- };
2750
- /**
2751
- * Trace IDs response
2752
- */
2753
- export type TraceIdsResponse = {
2754
- [key: string]: unknown;
2451
+ type?: 'http' | 'http-async' | 'cron';
2755
2452
  };
2756
2453
  /**
2757
2454
  * Trigger configuration
2758
2455
  */
2759
- export type Trigger = {
2760
- configuration?: TriggerConfiguration;
2456
+ export type TriggerWritable = {
2457
+ configuration?: TriggerConfigurationWritable;
2761
2458
  /**
2762
2459
  * Enable or disable the trigger (default: true)
2763
2460
  */
@@ -2769,7 +2466,7 @@ export type Trigger = {
2769
2466
  /**
2770
2467
  * The type of trigger, can be http or http-async
2771
2468
  */
2772
- type?: string;
2469
+ type?: 'http' | 'http-async' | 'cron';
2773
2470
  };
2774
2471
  /**
2775
2472
  * Trigger configuration
@@ -2782,7 +2479,40 @@ export type TriggerConfiguration = {
2782
2479
  /**
2783
2480
  * The callback secret for async triggers (auto-generated, encrypted)
2784
2481
  */
2785
- callbackSecret?: string;
2482
+ readonly callbackSecret?: string;
2483
+ /**
2484
+ * The callback URL for async triggers (optional)
2485
+ */
2486
+ callbackUrl?: string;
2487
+ /**
2488
+ * The path of the trigger
2489
+ */
2490
+ path?: string;
2491
+ /**
2492
+ * The retry of the trigger
2493
+ */
2494
+ retry?: number;
2495
+ /**
2496
+ * The schedule of the trigger, cron expression * * * * *
2497
+ */
2498
+ schedule?: string;
2499
+ /**
2500
+ * The tasks configuration of the cronjob
2501
+ */
2502
+ tasks?: Array<TriggerConfigurationTask>;
2503
+ /**
2504
+ * The timeout in seconds for async triggers (max 900s, MK3 only)
2505
+ */
2506
+ timeout?: number;
2507
+ };
2508
+ /**
2509
+ * Trigger configuration
2510
+ */
2511
+ export type TriggerConfigurationWritable = {
2512
+ /**
2513
+ * The authentication type of the trigger
2514
+ */
2515
+ authenticationType?: string;
2786
2516
  /**
2787
2517
  * The callback URL for async triggers (optional)
2788
2518
  */
@@ -2819,12 +2549,16 @@ export type TriggerConfigurationTask = {
2819
2549
  */
2820
2550
  export type Triggers = Array<Trigger>;
2821
2551
  /**
2822
- * Volume resource for persistent storage
2552
+ * Triggers to use your agent
2553
+ */
2554
+ export type TriggersWritable = Array<TriggerWritable>;
2555
+ /**
2556
+ * Persistent storage volume that can be attached to sandboxes for durable file storage across sessions. Volumes survive sandbox deletion and can be reattached to new sandboxes.
2823
2557
  */
2824
2558
  export type Volume = {
2825
2559
  events?: CoreEvents;
2826
- metadata?: Metadata;
2827
- spec?: VolumeSpec;
2560
+ metadata: Metadata;
2561
+ spec: VolumeSpec;
2828
2562
  state?: VolumeState;
2829
2563
  /**
2830
2564
  * Volume status computed from events
@@ -2836,50 +2570,93 @@ export type Volume = {
2836
2570
  terminatedAt?: string;
2837
2571
  };
2838
2572
  /**
2839
- * Volume attachment configuration for sandbox
2573
+ * Persistent storage volume that can be attached to sandboxes for durable file storage across sessions. Volumes survive sandbox deletion and can be reattached to new sandboxes.
2574
+ */
2575
+ export type VolumeWritable = {
2576
+ events?: CoreEventsWritable;
2577
+ metadata: MetadataWritable;
2578
+ spec: VolumeSpecWritable;
2579
+ state?: VolumeStateWritable;
2580
+ /**
2581
+ * Volume status computed from events
2582
+ */
2583
+ status?: string;
2584
+ /**
2585
+ * Timestamp when the volume was marked for termination
2586
+ */
2587
+ terminatedAt?: string;
2588
+ };
2589
+ /**
2590
+ * Configuration for attaching a volume to a sandbox at a specific filesystem path
2840
2591
  */
2841
2592
  export type VolumeAttachment = {
2842
2593
  /**
2843
- * Mount path in the container
2594
+ * Absolute filesystem path where the volume will be mounted inside the sandbox
2844
2595
  */
2845
2596
  mountPath?: string;
2846
2597
  /**
2847
- * Name of the volume to attach
2598
+ * Name of the volume resource to attach (must exist in the same workspace and region)
2848
2599
  */
2849
2600
  name?: string;
2850
2601
  /**
2851
- * Whether the volume is mounted as read-only
2602
+ * If true, the volume is mounted read-only and cannot be modified by the sandbox
2852
2603
  */
2853
2604
  readOnly?: boolean;
2854
2605
  };
2855
2606
  export type VolumeAttachments = Array<VolumeAttachment>;
2856
2607
  /**
2857
- * Volume specification - immutable configuration
2608
+ * Immutable volume configuration set at creation time (size and region cannot be changed after creation)
2858
2609
  */
2859
2610
  export type VolumeSpec = {
2860
2611
  /**
2861
2612
  * The internal infrastructure resource identifier for this volume
2862
2613
  */
2863
- infrastructureId?: string;
2614
+ readonly infrastructureId?: string;
2615
+ /**
2616
+ * Deployment region for the volume (e.g., us-pdx-1, eu-lon-1). Must match the region of sandboxes it attaches to.
2617
+ */
2618
+ region?: string;
2619
+ /**
2620
+ * Storage capacity in megabytes. Can be increased after creation but not decreased.
2621
+ */
2622
+ size?: number;
2623
+ /**
2624
+ * Volume template to initialize from, with optional revision (e.g., "mytemplate:1" or "mytemplate:latest")
2625
+ */
2626
+ template?: string;
2627
+ };
2628
+ /**
2629
+ * Immutable volume configuration set at creation time (size and region cannot be changed after creation)
2630
+ */
2631
+ export type VolumeSpecWritable = {
2864
2632
  /**
2865
- * Region where the volume should be created (e.g. us-pdx-1, eu-lon-1)
2633
+ * Deployment region for the volume (e.g., us-pdx-1, eu-lon-1). Must match the region of sandboxes it attaches to.
2866
2634
  */
2867
2635
  region?: string;
2868
2636
  /**
2869
- * Size of the volume in MB
2637
+ * Storage capacity in megabytes. Can be increased after creation but not decreased.
2870
2638
  */
2871
2639
  size?: number;
2872
2640
  /**
2873
- * Volume template with revision (e.g. "mytemplate:1" or "mytemplate:latest")
2641
+ * Volume template to initialize from, with optional revision (e.g., "mytemplate:1" or "mytemplate:latest")
2874
2642
  */
2875
2643
  template?: string;
2876
2644
  };
2877
2645
  /**
2878
- * Volume state - mutable runtime state
2646
+ * Current runtime state of the volume including attachment status
2879
2647
  */
2880
2648
  export type VolumeState = {
2881
2649
  /**
2882
- * Resource this volume is attached to (e.g. "sandbox:my-sandbox", "model:my-model")
2650
+ * Resource currently using this volume in format "type:name" (e.g., "sandbox:my-sandbox"). Empty if not attached.
2651
+ */
2652
+ attachedTo?: string;
2653
+ };
2654
+ /**
2655
+ * Current runtime state of the volume including attachment status
2656
+ */
2657
+ export type VolumeStateWritable = {
2658
+ /**
2659
+ * Resource currently using this volume in format "type:name" (e.g., "sandbox:my-sandbox"). Empty if not attached.
2883
2660
  */
2884
2661
  attachedTo?: string;
2885
2662
  };
@@ -2887,14 +2664,26 @@ export type VolumeState = {
2887
2664
  * Volume template for creating pre-configured volumes
2888
2665
  */
2889
2666
  export type VolumeTemplate = {
2890
- metadata?: Metadata;
2891
- spec?: VolumeTemplateSpec;
2667
+ metadata: Metadata;
2668
+ spec: VolumeTemplateSpec;
2892
2669
  state?: VolumeTemplateState;
2893
2670
  /**
2894
2671
  * List of versions for this template
2895
2672
  */
2896
2673
  versions?: Array<VolumeTemplateVersion>;
2897
2674
  };
2675
+ /**
2676
+ * Volume template for creating pre-configured volumes
2677
+ */
2678
+ export type VolumeTemplateWritable = {
2679
+ metadata: MetadataWritable;
2680
+ spec: VolumeTemplateSpec;
2681
+ state?: VolumeTemplateStateWritable;
2682
+ /**
2683
+ * List of versions for this template
2684
+ */
2685
+ versions?: Array<VolumeTemplateVersionWritable>;
2686
+ };
2898
2687
  /**
2899
2688
  * Volume template specification
2900
2689
  */
@@ -2915,19 +2704,28 @@ export type VolumeTemplateState = {
2915
2704
  /**
2916
2705
  * Timestamp of last version upload
2917
2706
  */
2918
- lastVersionUploadedAt?: string;
2707
+ readonly lastVersionUploadedAt?: string;
2919
2708
  /**
2920
2709
  * Current/latest S3 version ID
2921
2710
  */
2922
- latestVersion?: string;
2711
+ readonly latestVersion?: string;
2923
2712
  /**
2924
2713
  * Status of the volume template (created, ready, error)
2925
2714
  */
2926
- status?: string;
2715
+ status?: 'created' | 'ready' | 'error';
2927
2716
  /**
2928
2717
  * Total number of versions for this template
2929
2718
  */
2930
- versionCount?: number;
2719
+ readonly versionCount?: number;
2720
+ };
2721
+ /**
2722
+ * Volume template state
2723
+ */
2724
+ export type VolumeTemplateStateWritable = {
2725
+ /**
2726
+ * Status of the volume template (created, ready, error)
2727
+ */
2728
+ status?: 'created' | 'ready' | 'error';
2931
2729
  };
2932
2730
  /**
2933
2731
  * Volume template version tracking individual versions of template content
@@ -2936,11 +2734,11 @@ export type VolumeTemplateVersion = {
2936
2734
  /**
2937
2735
  * S3 bucket name where this version is stored
2938
2736
  */
2939
- bucket?: string;
2737
+ readonly bucket?: string;
2940
2738
  /**
2941
2739
  * Size of the template content in bytes
2942
2740
  */
2943
- contentSize?: number;
2741
+ readonly contentSize?: number;
2944
2742
  /**
2945
2743
  * Name of the template version
2946
2744
  */
@@ -2948,11 +2746,11 @@ export type VolumeTemplateVersion = {
2948
2746
  /**
2949
2747
  * AWS region where this version is stored
2950
2748
  */
2951
- region?: string;
2749
+ readonly region?: string;
2952
2750
  /**
2953
2751
  * Status of the version (CREATED, READY, FAILED)
2954
2752
  */
2955
- status?: string;
2753
+ status?: 'CREATED' | 'READY' | 'FAILED';
2956
2754
  /**
2957
2755
  * Template name this version belongs to
2958
2756
  */
@@ -2960,54 +2758,68 @@ export type VolumeTemplateVersion = {
2960
2758
  /**
2961
2759
  * S3 version ID for this template version
2962
2760
  */
2963
- versionId?: string;
2761
+ readonly versionId?: string;
2964
2762
  /**
2965
2763
  * Workspace name
2966
2764
  */
2967
- workspace?: string;
2765
+ readonly workspace?: string;
2968
2766
  };
2969
2767
  /**
2970
- * WebSocket connection details
2768
+ * Volume template version tracking individual versions of template content
2971
2769
  */
2972
- export type WebsocketChannel = TimeFields & {
2770
+ export type VolumeTemplateVersionWritable = {
2973
2771
  /**
2974
- * Unique connection ID
2772
+ * Name of the template version
2975
2773
  */
2976
- connection_id?: string;
2774
+ name?: string;
2977
2775
  /**
2978
- * Source region the connection belongs to
2776
+ * Status of the version (CREATED, READY, FAILED)
2979
2777
  */
2980
- sourceRegion?: string;
2778
+ status?: 'CREATED' | 'READY' | 'FAILED';
2981
2779
  /**
2982
- * Workspace the connection belongs to
2780
+ * Template name this version belongs to
2983
2781
  */
2984
- workspace?: string;
2782
+ templateName?: string;
2985
2783
  };
2986
2784
  /**
2987
- * WebSocket connection details
2785
+ * Tenant container that groups all Blaxel resources (agents, functions, models, etc.) with shared team access control and billing.
2988
2786
  */
2989
- export type WebsocketMessage = TimeFields & {
2787
+ export type Workspace = TimeFields & OwnerFields & {
2990
2788
  /**
2991
- * Unique message ID
2789
+ * Workspace account id
2992
2790
  */
2993
- id?: string;
2791
+ accountId?: string;
2994
2792
  /**
2995
- * Message
2793
+ * Workspace display name
2996
2794
  */
2997
- message?: string;
2795
+ displayName?: string;
2998
2796
  /**
2999
- * TTL timestamp for automatic deletion
2797
+ * Autogenerated unique workspace id
3000
2798
  */
3001
- ttl?: number;
2799
+ readonly id?: string;
2800
+ labels?: MetadataLabels;
3002
2801
  /**
3003
- * Workspace the connection belongs to
2802
+ * Workspace name
3004
2803
  */
3005
- workspace?: string;
2804
+ name?: string;
2805
+ /**
2806
+ * Workspace write region
2807
+ */
2808
+ region?: string;
2809
+ runtime?: WorkspaceRuntime;
2810
+ /**
2811
+ * Workspace status (created, account_binded, account_configured, workspace_configured, ready, error)
2812
+ */
2813
+ status?: 'created' | 'account_binded' | 'account_configured' | 'workspace_configured' | 'ready' | 'error';
2814
+ /**
2815
+ * Reason for current status (only set for error status)
2816
+ */
2817
+ readonly statusReason?: string;
3006
2818
  };
3007
2819
  /**
3008
- * Workspace
2820
+ * Tenant container that groups all Blaxel resources (agents, functions, models, etc.) with shared team access control and billing.
3009
2821
  */
3010
- export type Workspace = TimeFields & OwnerFields & {
2822
+ export type WorkspaceWritable = TimeFields & OwnerFields & {
3011
2823
  /**
3012
2824
  * Workspace account id
3013
2825
  */
@@ -3016,16 +2828,7 @@ export type Workspace = TimeFields & OwnerFields & {
3016
2828
  * Workspace display name
3017
2829
  */
3018
2830
  displayName?: string;
3019
- /**
3020
- * Autogenerated unique workspace id
3021
- */
3022
- id?: string;
3023
- /**
3024
- * Workspace labels
3025
- */
3026
- labels?: {
3027
- [key: string]: unknown;
3028
- };
2831
+ labels?: MetadataLabels;
3029
2832
  /**
3030
2833
  * Workspace name
3031
2834
  */
@@ -3038,18 +2841,14 @@ export type Workspace = TimeFields & OwnerFields & {
3038
2841
  /**
3039
2842
  * Workspace status (created, account_binded, account_configured, workspace_configured, ready, error)
3040
2843
  */
3041
- status?: string;
3042
- /**
3043
- * Reason for current status (only set for error status)
3044
- */
3045
- statusReason?: string;
2844
+ status?: 'created' | 'account_binded' | 'account_configured' | 'workspace_configured' | 'ready' | 'error';
3046
2845
  };
3047
2846
  /**
3048
- * Workspace runtime
2847
+ * Runtime configuration for the workspace infrastructure
3049
2848
  */
3050
2849
  export type WorkspaceRuntime = {
3051
2850
  /**
3052
- * Workspace generation
2851
+ * Infrastructure generation version for the workspace (affects available features and deployment behavior)
3053
2852
  */
3054
2853
  generation?: string;
3055
2854
  };
@@ -3092,6 +2891,21 @@ export type ListAgentsData = {
3092
2891
  query?: never;
3093
2892
  url: '/agents';
3094
2893
  };
2894
+ export type ListAgentsErrors = {
2895
+ /**
2896
+ * Unauthorized - Invalid or missing authentication credentials
2897
+ */
2898
+ 401: _Error;
2899
+ /**
2900
+ * Forbidden - Insufficient permissions to list agents
2901
+ */
2902
+ 403: _Error;
2903
+ /**
2904
+ * Internal server error
2905
+ */
2906
+ 500: _Error;
2907
+ };
2908
+ export type ListAgentsError = ListAgentsErrors[keyof ListAgentsErrors];
3095
2909
  export type ListAgentsResponses = {
3096
2910
  /**
3097
2911
  * successful operation
@@ -3100,11 +2914,34 @@ export type ListAgentsResponses = {
3100
2914
  };
3101
2915
  export type ListAgentsResponse = ListAgentsResponses[keyof ListAgentsResponses];
3102
2916
  export type CreateAgentData = {
3103
- body: Agent;
2917
+ body: AgentWritable;
3104
2918
  path?: never;
3105
2919
  query?: never;
3106
2920
  url: '/agents';
3107
2921
  };
2922
+ export type CreateAgentErrors = {
2923
+ /**
2924
+ * Bad request - Invalid agent configuration
2925
+ */
2926
+ 400: _Error;
2927
+ /**
2928
+ * Unauthorized - Invalid or missing authentication credentials
2929
+ */
2930
+ 401: _Error;
2931
+ /**
2932
+ * Forbidden - Insufficient permissions to create agents
2933
+ */
2934
+ 403: _Error;
2935
+ /**
2936
+ * Conflict - Agent with this name already exists
2937
+ */
2938
+ 409: _Error;
2939
+ /**
2940
+ * Internal server error
2941
+ */
2942
+ 500: _Error;
2943
+ };
2944
+ export type CreateAgentError = CreateAgentErrors[keyof CreateAgentErrors];
3108
2945
  export type CreateAgentResponses = {
3109
2946
  /**
3110
2947
  * successful operation
@@ -3116,13 +2953,32 @@ export type DeleteAgentData = {
3116
2953
  body?: never;
3117
2954
  path: {
3118
2955
  /**
3119
- * Name of the agent
2956
+ * Unique name identifier of the agent
3120
2957
  */
3121
2958
  agentName: string;
3122
2959
  };
3123
2960
  query?: never;
3124
2961
  url: '/agents/{agentName}';
3125
2962
  };
2963
+ export type DeleteAgentErrors = {
2964
+ /**
2965
+ * Unauthorized - Invalid or missing authentication credentials
2966
+ */
2967
+ 401: _Error;
2968
+ /**
2969
+ * Forbidden - Insufficient permissions to delete this agent
2970
+ */
2971
+ 403: _Error;
2972
+ /**
2973
+ * Not found - Agent does not exist
2974
+ */
2975
+ 404: _Error;
2976
+ /**
2977
+ * Internal server error
2978
+ */
2979
+ 500: _Error;
2980
+ };
2981
+ export type DeleteAgentError = DeleteAgentErrors[keyof DeleteAgentErrors];
3126
2982
  export type DeleteAgentResponses = {
3127
2983
  /**
3128
2984
  * successful operation
@@ -3134,18 +2990,37 @@ export type GetAgentData = {
3134
2990
  body?: never;
3135
2991
  path: {
3136
2992
  /**
3137
- * Name of the agent
2993
+ * Unique name identifier of the agent
3138
2994
  */
3139
2995
  agentName: string;
3140
2996
  };
3141
2997
  query?: {
3142
2998
  /**
3143
- * Show secret values (admin only)
2999
+ * Show secret values (requires workspace admin role)
3144
3000
  */
3145
3001
  show_secrets?: boolean;
3146
3002
  };
3147
3003
  url: '/agents/{agentName}';
3148
3004
  };
3005
+ export type GetAgentErrors = {
3006
+ /**
3007
+ * Unauthorized - Invalid or missing authentication credentials
3008
+ */
3009
+ 401: _Error;
3010
+ /**
3011
+ * Forbidden - Insufficient permissions to view this agent
3012
+ */
3013
+ 403: _Error;
3014
+ /**
3015
+ * Not found - Agent does not exist
3016
+ */
3017
+ 404: _Error;
3018
+ /**
3019
+ * Internal server error
3020
+ */
3021
+ 500: _Error;
3022
+ };
3023
+ export type GetAgentError = GetAgentErrors[keyof GetAgentErrors];
3149
3024
  export type GetAgentResponses = {
3150
3025
  /**
3151
3026
  * successful operation
@@ -3154,16 +3029,39 @@ export type GetAgentResponses = {
3154
3029
  };
3155
3030
  export type GetAgentResponse = GetAgentResponses[keyof GetAgentResponses];
3156
3031
  export type UpdateAgentData = {
3157
- body: Agent;
3032
+ body: AgentWritable;
3158
3033
  path: {
3159
3034
  /**
3160
- * Name of the agent
3035
+ * Unique name identifier of the agent
3161
3036
  */
3162
3037
  agentName: string;
3163
3038
  };
3164
3039
  query?: never;
3165
3040
  url: '/agents/{agentName}';
3166
3041
  };
3042
+ export type UpdateAgentErrors = {
3043
+ /**
3044
+ * Bad request - Invalid agent configuration
3045
+ */
3046
+ 400: _Error;
3047
+ /**
3048
+ * Unauthorized - Invalid or missing authentication credentials
3049
+ */
3050
+ 401: _Error;
3051
+ /**
3052
+ * Forbidden - Insufficient permissions to update this agent
3053
+ */
3054
+ 403: _Error;
3055
+ /**
3056
+ * Not found - Agent does not exist
3057
+ */
3058
+ 404: _Error;
3059
+ /**
3060
+ * Internal server error
3061
+ */
3062
+ 500: _Error;
3063
+ };
3064
+ export type UpdateAgentError = UpdateAgentErrors[keyof UpdateAgentErrors];
3167
3065
  export type UpdateAgentResponses = {
3168
3066
  /**
3169
3067
  * successful operation
@@ -3216,7 +3114,7 @@ export type ListCustomDomainsResponses = {
3216
3114
  };
3217
3115
  export type ListCustomDomainsResponse = ListCustomDomainsResponses[keyof ListCustomDomainsResponses];
3218
3116
  export type CreateCustomDomainData = {
3219
- body: CustomDomain;
3117
+ body: CustomDomainWritable;
3220
3118
  path?: never;
3221
3119
  query?: never;
3222
3120
  url: '/customdomains';
@@ -3265,7 +3163,7 @@ export type GetCustomDomainResponses = {
3265
3163
  };
3266
3164
  export type GetCustomDomainResponse = GetCustomDomainResponses[keyof GetCustomDomainResponses];
3267
3165
  export type UpdateCustomDomainData = {
3268
- body: CustomDomain;
3166
+ body: CustomDomainWritable;
3269
3167
  path: {
3270
3168
  /**
3271
3169
  * Name of the custom domain
@@ -3306,6 +3204,21 @@ export type ListFunctionsData = {
3306
3204
  query?: never;
3307
3205
  url: '/functions';
3308
3206
  };
3207
+ export type ListFunctionsErrors = {
3208
+ /**
3209
+ * Unauthorized - Invalid or missing authentication credentials
3210
+ */
3211
+ 401: _Error;
3212
+ /**
3213
+ * Forbidden - Insufficient permissions to list functions
3214
+ */
3215
+ 403: _Error;
3216
+ /**
3217
+ * Internal server error
3218
+ */
3219
+ 500: _Error;
3220
+ };
3221
+ export type ListFunctionsError = ListFunctionsErrors[keyof ListFunctionsErrors];
3309
3222
  export type ListFunctionsResponses = {
3310
3223
  /**
3311
3224
  * successful operation
@@ -3314,11 +3227,34 @@ export type ListFunctionsResponses = {
3314
3227
  };
3315
3228
  export type ListFunctionsResponse = ListFunctionsResponses[keyof ListFunctionsResponses];
3316
3229
  export type CreateFunctionData = {
3317
- body: _Function;
3230
+ body: FunctionWritable;
3318
3231
  path?: never;
3319
3232
  query?: never;
3320
3233
  url: '/functions';
3321
3234
  };
3235
+ export type CreateFunctionErrors = {
3236
+ /**
3237
+ * Bad request - Invalid function configuration
3238
+ */
3239
+ 400: _Error;
3240
+ /**
3241
+ * Unauthorized - Invalid or missing authentication credentials
3242
+ */
3243
+ 401: _Error;
3244
+ /**
3245
+ * Forbidden - Insufficient permissions to create functions
3246
+ */
3247
+ 403: _Error;
3248
+ /**
3249
+ * Conflict - Function with this name already exists
3250
+ */
3251
+ 409: _Error;
3252
+ /**
3253
+ * Internal server error
3254
+ */
3255
+ 500: _Error;
3256
+ };
3257
+ export type CreateFunctionError = CreateFunctionErrors[keyof CreateFunctionErrors];
3322
3258
  export type CreateFunctionResponses = {
3323
3259
  /**
3324
3260
  * successful operation
@@ -3330,13 +3266,32 @@ export type DeleteFunctionData = {
3330
3266
  body?: never;
3331
3267
  path: {
3332
3268
  /**
3333
- * Name of the function
3269
+ * Unique name identifier of the MCP server function
3334
3270
  */
3335
3271
  functionName: string;
3336
3272
  };
3337
3273
  query?: never;
3338
3274
  url: '/functions/{functionName}';
3339
3275
  };
3276
+ export type DeleteFunctionErrors = {
3277
+ /**
3278
+ * Unauthorized - Invalid or missing authentication credentials
3279
+ */
3280
+ 401: _Error;
3281
+ /**
3282
+ * Forbidden - Insufficient permissions to delete this function
3283
+ */
3284
+ 403: _Error;
3285
+ /**
3286
+ * Not found - Function does not exist
3287
+ */
3288
+ 404: _Error;
3289
+ /**
3290
+ * Internal server error
3291
+ */
3292
+ 500: _Error;
3293
+ };
3294
+ export type DeleteFunctionError = DeleteFunctionErrors[keyof DeleteFunctionErrors];
3340
3295
  export type DeleteFunctionResponses = {
3341
3296
  /**
3342
3297
  * successful operation
@@ -3348,18 +3303,37 @@ export type GetFunctionData = {
3348
3303
  body?: never;
3349
3304
  path: {
3350
3305
  /**
3351
- * Name of the function
3306
+ * Unique name identifier of the MCP server function
3352
3307
  */
3353
3308
  functionName: string;
3354
3309
  };
3355
3310
  query?: {
3356
3311
  /**
3357
- * Show secret values (admin only)
3312
+ * Show secret values (requires workspace admin role)
3358
3313
  */
3359
3314
  show_secrets?: boolean;
3360
3315
  };
3361
3316
  url: '/functions/{functionName}';
3362
3317
  };
3318
+ export type GetFunctionErrors = {
3319
+ /**
3320
+ * Unauthorized - Invalid or missing authentication credentials
3321
+ */
3322
+ 401: _Error;
3323
+ /**
3324
+ * Forbidden - Insufficient permissions to view this function
3325
+ */
3326
+ 403: _Error;
3327
+ /**
3328
+ * Not found - Function does not exist
3329
+ */
3330
+ 404: _Error;
3331
+ /**
3332
+ * Internal server error
3333
+ */
3334
+ 500: _Error;
3335
+ };
3336
+ export type GetFunctionError = GetFunctionErrors[keyof GetFunctionErrors];
3363
3337
  export type GetFunctionResponses = {
3364
3338
  /**
3365
3339
  * successful operation
@@ -3368,16 +3342,39 @@ export type GetFunctionResponses = {
3368
3342
  };
3369
3343
  export type GetFunctionResponse = GetFunctionResponses[keyof GetFunctionResponses];
3370
3344
  export type UpdateFunctionData = {
3371
- body: _Function;
3345
+ body: FunctionWritable;
3372
3346
  path: {
3373
3347
  /**
3374
- * Name of the function
3348
+ * Unique name identifier of the MCP server function
3375
3349
  */
3376
3350
  functionName: string;
3377
3351
  };
3378
3352
  query?: never;
3379
3353
  url: '/functions/{functionName}';
3380
3354
  };
3355
+ export type UpdateFunctionErrors = {
3356
+ /**
3357
+ * Bad request - Invalid function configuration
3358
+ */
3359
+ 400: _Error;
3360
+ /**
3361
+ * Unauthorized - Invalid or missing authentication credentials
3362
+ */
3363
+ 401: _Error;
3364
+ /**
3365
+ * Forbidden - Insufficient permissions to update this function
3366
+ */
3367
+ 403: _Error;
3368
+ /**
3369
+ * Not found - Function does not exist
3370
+ */
3371
+ 404: _Error;
3372
+ /**
3373
+ * Internal server error
3374
+ */
3375
+ 500: _Error;
3376
+ };
3377
+ export type UpdateFunctionError = UpdateFunctionErrors[keyof UpdateFunctionErrors];
3381
3378
  export type UpdateFunctionResponses = {
3382
3379
  /**
3383
3380
  * successful operation
@@ -3442,11 +3439,11 @@ export type DeleteImageData = {
3442
3439
  body?: never;
3443
3440
  path: {
3444
3441
  /**
3445
- * Resource type of the image
3442
+ * Resource type (agents, functions, sandboxes, jobs)
3446
3443
  */
3447
3444
  resourceType: string;
3448
3445
  /**
3449
- * Name of the image
3446
+ * Name of the container image repository
3450
3447
  */
3451
3448
  imageName: string;
3452
3449
  };
@@ -3474,11 +3471,11 @@ export type GetImageData = {
3474
3471
  body?: never;
3475
3472
  path: {
3476
3473
  /**
3477
- * Resource type of the image
3474
+ * Resource type (agents, functions, sandboxes, jobs)
3478
3475
  */
3479
3476
  resourceType: string;
3480
3477
  /**
3481
- * Name of the image
3478
+ * Name of the container image repository
3482
3479
  */
3483
3480
  imageName: string;
3484
3481
  };
@@ -3496,15 +3493,15 @@ export type DeleteImageTagData = {
3496
3493
  body?: never;
3497
3494
  path: {
3498
3495
  /**
3499
- * Resource type of the image
3496
+ * Resource type (agents, functions, sandboxes, jobs)
3500
3497
  */
3501
3498
  resourceType: string;
3502
3499
  /**
3503
- * Name of the image
3500
+ * Name of the container image repository
3504
3501
  */
3505
3502
  imageName: string;
3506
3503
  /**
3507
- * Name of the tag to delete
3504
+ * Tag name to delete (e.g., latest, v1.0.0)
3508
3505
  */
3509
3506
  tagName: string;
3510
3507
  };
@@ -3552,6 +3549,21 @@ export type ListIntegrationConnectionsData = {
3552
3549
  query?: never;
3553
3550
  url: '/integrations/connections';
3554
3551
  };
3552
+ export type ListIntegrationConnectionsErrors = {
3553
+ /**
3554
+ * Unauthorized - Invalid or missing authentication credentials
3555
+ */
3556
+ 401: _Error;
3557
+ /**
3558
+ * Forbidden - Insufficient permissions to list integration connections
3559
+ */
3560
+ 403: _Error;
3561
+ /**
3562
+ * Internal server error
3563
+ */
3564
+ 500: _Error;
3565
+ };
3566
+ export type ListIntegrationConnectionsError = ListIntegrationConnectionsErrors[keyof ListIntegrationConnectionsErrors];
3555
3567
  export type ListIntegrationConnectionsResponses = {
3556
3568
  /**
3557
3569
  * successful operation
@@ -3560,11 +3572,34 @@ export type ListIntegrationConnectionsResponses = {
3560
3572
  };
3561
3573
  export type ListIntegrationConnectionsResponse = ListIntegrationConnectionsResponses[keyof ListIntegrationConnectionsResponses];
3562
3574
  export type CreateIntegrationConnectionData = {
3563
- body: IntegrationConnection;
3575
+ body: IntegrationConnectionWritable;
3564
3576
  path?: never;
3565
3577
  query?: never;
3566
3578
  url: '/integrations/connections';
3567
3579
  };
3580
+ export type CreateIntegrationConnectionErrors = {
3581
+ /**
3582
+ * Bad request - Invalid integration configuration or unsupported integration type
3583
+ */
3584
+ 400: _Error;
3585
+ /**
3586
+ * Unauthorized - Invalid or missing authentication credentials
3587
+ */
3588
+ 401: _Error;
3589
+ /**
3590
+ * Forbidden - Insufficient permissions to create integration connections
3591
+ */
3592
+ 403: _Error;
3593
+ /**
3594
+ * Conflict - Integration connection with this name already exists
3595
+ */
3596
+ 409: _Error;
3597
+ /**
3598
+ * Internal server error
3599
+ */
3600
+ 500: _Error;
3601
+ };
3602
+ export type CreateIntegrationConnectionError = CreateIntegrationConnectionErrors[keyof CreateIntegrationConnectionErrors];
3568
3603
  export type CreateIntegrationConnectionResponses = {
3569
3604
  /**
3570
3605
  * successful operation
@@ -3576,13 +3611,36 @@ export type DeleteIntegrationConnectionData = {
3576
3611
  body?: never;
3577
3612
  path: {
3578
3613
  /**
3579
- * Name of the integrationconnection
3614
+ * Unique name identifier of the integration connection
3580
3615
  */
3581
3616
  connectionName: string;
3582
3617
  };
3583
3618
  query?: never;
3584
3619
  url: '/integrations/connections/{connectionName}';
3585
3620
  };
3621
+ export type DeleteIntegrationConnectionErrors = {
3622
+ /**
3623
+ * Unauthorized - Invalid or missing authentication credentials
3624
+ */
3625
+ 401: _Error;
3626
+ /**
3627
+ * Forbidden - Insufficient permissions to delete this connection
3628
+ */
3629
+ 403: _Error;
3630
+ /**
3631
+ * Not found - Integration connection does not exist
3632
+ */
3633
+ 404: _Error;
3634
+ /**
3635
+ * Conflict - Integration connection is in use by models or functions
3636
+ */
3637
+ 409: _Error;
3638
+ /**
3639
+ * Internal server error
3640
+ */
3641
+ 500: _Error;
3642
+ };
3643
+ export type DeleteIntegrationConnectionError = DeleteIntegrationConnectionErrors[keyof DeleteIntegrationConnectionErrors];
3586
3644
  export type DeleteIntegrationConnectionResponses = {
3587
3645
  /**
3588
3646
  * successful operation
@@ -3594,13 +3652,32 @@ export type GetIntegrationConnectionData = {
3594
3652
  body?: never;
3595
3653
  path: {
3596
3654
  /**
3597
- * Name of the integrationconnection
3655
+ * Unique name identifier of the integration connection
3598
3656
  */
3599
3657
  connectionName: string;
3600
3658
  };
3601
3659
  query?: never;
3602
3660
  url: '/integrations/connections/{connectionName}';
3603
3661
  };
3662
+ export type GetIntegrationConnectionErrors = {
3663
+ /**
3664
+ * Unauthorized - Invalid or missing authentication credentials
3665
+ */
3666
+ 401: _Error;
3667
+ /**
3668
+ * Forbidden - Insufficient permissions to view this connection
3669
+ */
3670
+ 403: _Error;
3671
+ /**
3672
+ * Not found - Integration connection does not exist
3673
+ */
3674
+ 404: _Error;
3675
+ /**
3676
+ * Internal server error
3677
+ */
3678
+ 500: _Error;
3679
+ };
3680
+ export type GetIntegrationConnectionError = GetIntegrationConnectionErrors[keyof GetIntegrationConnectionErrors];
3604
3681
  export type GetIntegrationConnectionResponses = {
3605
3682
  /**
3606
3683
  * successful operation
@@ -3609,16 +3686,39 @@ export type GetIntegrationConnectionResponses = {
3609
3686
  };
3610
3687
  export type GetIntegrationConnectionResponse = GetIntegrationConnectionResponses[keyof GetIntegrationConnectionResponses];
3611
3688
  export type UpdateIntegrationConnectionData = {
3612
- body: IntegrationConnection;
3689
+ body: IntegrationConnectionWritable;
3613
3690
  path: {
3614
3691
  /**
3615
- * Name of the integrationconnection
3692
+ * Unique name identifier of the integration connection
3616
3693
  */
3617
3694
  connectionName: string;
3618
3695
  };
3619
3696
  query?: never;
3620
3697
  url: '/integrations/connections/{connectionName}';
3621
3698
  };
3699
+ export type UpdateIntegrationConnectionErrors = {
3700
+ /**
3701
+ * Bad request - Invalid integration configuration
3702
+ */
3703
+ 400: _Error;
3704
+ /**
3705
+ * Unauthorized - Invalid or missing authentication credentials
3706
+ */
3707
+ 401: _Error;
3708
+ /**
3709
+ * Forbidden - Insufficient permissions to update this connection
3710
+ */
3711
+ 403: _Error;
3712
+ /**
3713
+ * Not found - Integration connection does not exist
3714
+ */
3715
+ 404: _Error;
3716
+ /**
3717
+ * Internal server error
3718
+ */
3719
+ 500: _Error;
3720
+ };
3721
+ export type UpdateIntegrationConnectionError = UpdateIntegrationConnectionErrors[keyof UpdateIntegrationConnectionErrors];
3622
3722
  export type UpdateIntegrationConnectionResponses = {
3623
3723
  /**
3624
3724
  * successful operation
@@ -3695,7 +3795,7 @@ export type ListJobsResponses = {
3695
3795
  };
3696
3796
  export type ListJobsResponse = ListJobsResponses[keyof ListJobsResponses];
3697
3797
  export type CreateJobData = {
3698
- body: Job;
3798
+ body: JobWritable;
3699
3799
  path?: never;
3700
3800
  query?: never;
3701
3801
  url: '/jobs';
@@ -3711,7 +3811,7 @@ export type DeleteJobData = {
3711
3811
  body?: never;
3712
3812
  path: {
3713
3813
  /**
3714
- * Name of the job
3814
+ * Unique name identifier of the batch job
3715
3815
  */
3716
3816
  jobId: string;
3717
3817
  };
@@ -3729,13 +3829,13 @@ export type GetJobData = {
3729
3829
  body?: never;
3730
3830
  path: {
3731
3831
  /**
3732
- * Name of the job
3832
+ * Unique name identifier of the batch job
3733
3833
  */
3734
3834
  jobId: string;
3735
3835
  };
3736
3836
  query?: {
3737
3837
  /**
3738
- * Show secret values (admin only)
3838
+ * Show secret values (requires workspace admin role)
3739
3839
  */
3740
3840
  show_secrets?: boolean;
3741
3841
  };
@@ -3745,14 +3845,14 @@ export type GetJobResponses = {
3745
3845
  /**
3746
3846
  * successful operation
3747
3847
  */
3748
- 200: Model;
3848
+ 200: Job;
3749
3849
  };
3750
3850
  export type GetJobResponse = GetJobResponses[keyof GetJobResponses];
3751
3851
  export type UpdateJobData = {
3752
- body: Job;
3852
+ body: JobWritable;
3753
3853
  path: {
3754
3854
  /**
3755
- * Name of the job
3855
+ * Unique name identifier of the batch job
3756
3856
  */
3757
3857
  jobId: string;
3758
3858
  };
@@ -3828,7 +3928,7 @@ export type CreateJobExecutionResponses = {
3828
3928
  /**
3829
3929
  * successful operation
3830
3930
  */
3831
- 200: JobExecution;
3931
+ 200: CreateJobExecutionResponse;
3832
3932
  };
3833
3933
  export type CreateJobExecutionResponse2 = CreateJobExecutionResponses[keyof CreateJobExecutionResponses];
3834
3934
  export type DeleteJobExecutionData = {
@@ -3953,6 +4053,21 @@ export type ListModelsData = {
3953
4053
  query?: never;
3954
4054
  url: '/models';
3955
4055
  };
4056
+ export type ListModelsErrors = {
4057
+ /**
4058
+ * Unauthorized - Invalid or missing authentication credentials
4059
+ */
4060
+ 401: _Error;
4061
+ /**
4062
+ * Forbidden - Insufficient permissions to list models
4063
+ */
4064
+ 403: _Error;
4065
+ /**
4066
+ * Internal server error
4067
+ */
4068
+ 500: _Error;
4069
+ };
4070
+ export type ListModelsError = ListModelsErrors[keyof ListModelsErrors];
3956
4071
  export type ListModelsResponses = {
3957
4072
  /**
3958
4073
  * successful operation
@@ -3961,11 +4076,34 @@ export type ListModelsResponses = {
3961
4076
  };
3962
4077
  export type ListModelsResponse = ListModelsResponses[keyof ListModelsResponses];
3963
4078
  export type CreateModelData = {
3964
- body: Model;
4079
+ body: ModelWritable;
3965
4080
  path?: never;
3966
4081
  query?: never;
3967
4082
  url: '/models';
3968
4083
  };
4084
+ export type CreateModelErrors = {
4085
+ /**
4086
+ * Bad request - Invalid model configuration or integration connection not found
4087
+ */
4088
+ 400: _Error;
4089
+ /**
4090
+ * Unauthorized - Invalid or missing authentication credentials
4091
+ */
4092
+ 401: _Error;
4093
+ /**
4094
+ * Forbidden - Insufficient permissions to create models
4095
+ */
4096
+ 403: _Error;
4097
+ /**
4098
+ * Conflict - Model with this name already exists
4099
+ */
4100
+ 409: _Error;
4101
+ /**
4102
+ * Internal server error
4103
+ */
4104
+ 500: _Error;
4105
+ };
4106
+ export type CreateModelError = CreateModelErrors[keyof CreateModelErrors];
3969
4107
  export type CreateModelResponses = {
3970
4108
  /**
3971
4109
  * successful operation
@@ -3977,13 +4115,32 @@ export type DeleteModelData = {
3977
4115
  body?: never;
3978
4116
  path: {
3979
4117
  /**
3980
- * Name of the model
4118
+ * Unique name identifier of the model endpoint
3981
4119
  */
3982
4120
  modelName: string;
3983
4121
  };
3984
4122
  query?: never;
3985
4123
  url: '/models/{modelName}';
3986
4124
  };
4125
+ export type DeleteModelErrors = {
4126
+ /**
4127
+ * Unauthorized - Invalid or missing authentication credentials
4128
+ */
4129
+ 401: _Error;
4130
+ /**
4131
+ * Forbidden - Insufficient permissions to delete this model
4132
+ */
4133
+ 403: _Error;
4134
+ /**
4135
+ * Not found - Model does not exist
4136
+ */
4137
+ 404: _Error;
4138
+ /**
4139
+ * Internal server error
4140
+ */
4141
+ 500: _Error;
4142
+ };
4143
+ export type DeleteModelError = DeleteModelErrors[keyof DeleteModelErrors];
3987
4144
  export type DeleteModelResponses = {
3988
4145
  /**
3989
4146
  * successful operation
@@ -3995,13 +4152,32 @@ export type GetModelData = {
3995
4152
  body?: never;
3996
4153
  path: {
3997
4154
  /**
3998
- * Name of the model
4155
+ * Unique name identifier of the model endpoint
3999
4156
  */
4000
4157
  modelName: string;
4001
4158
  };
4002
4159
  query?: never;
4003
4160
  url: '/models/{modelName}';
4004
4161
  };
4162
+ export type GetModelErrors = {
4163
+ /**
4164
+ * Unauthorized - Invalid or missing authentication credentials
4165
+ */
4166
+ 401: _Error;
4167
+ /**
4168
+ * Forbidden - Insufficient permissions to view this model
4169
+ */
4170
+ 403: _Error;
4171
+ /**
4172
+ * Not found - Model does not exist
4173
+ */
4174
+ 404: _Error;
4175
+ /**
4176
+ * Internal server error
4177
+ */
4178
+ 500: _Error;
4179
+ };
4180
+ export type GetModelError = GetModelErrors[keyof GetModelErrors];
4005
4181
  export type GetModelResponses = {
4006
4182
  /**
4007
4183
  * successful operation
@@ -4010,16 +4186,39 @@ export type GetModelResponses = {
4010
4186
  };
4011
4187
  export type GetModelResponse = GetModelResponses[keyof GetModelResponses];
4012
4188
  export type UpdateModelData = {
4013
- body: Model;
4189
+ body: ModelWritable;
4014
4190
  path: {
4015
4191
  /**
4016
- * Name of the model
4192
+ * Unique name identifier of the model endpoint
4017
4193
  */
4018
4194
  modelName: string;
4019
4195
  };
4020
4196
  query?: never;
4021
4197
  url: '/models/{modelName}';
4022
4198
  };
4199
+ export type UpdateModelErrors = {
4200
+ /**
4201
+ * Bad request - Invalid model configuration
4202
+ */
4203
+ 400: _Error;
4204
+ /**
4205
+ * Unauthorized - Invalid or missing authentication credentials
4206
+ */
4207
+ 401: _Error;
4208
+ /**
4209
+ * Forbidden - Insufficient permissions to update this model
4210
+ */
4211
+ 403: _Error;
4212
+ /**
4213
+ * Not found - Model does not exist
4214
+ */
4215
+ 404: _Error;
4216
+ /**
4217
+ * Internal server error
4218
+ */
4219
+ 500: _Error;
4220
+ };
4221
+ export type UpdateModelError = UpdateModelErrors[keyof UpdateModelErrors];
4023
4222
  export type UpdateModelResponses = {
4024
4223
  /**
4025
4224
  * successful operation
@@ -4059,7 +4258,7 @@ export type ListPoliciesResponses = {
4059
4258
  };
4060
4259
  export type ListPoliciesResponse = ListPoliciesResponses[keyof ListPoliciesResponses];
4061
4260
  export type CreatePolicyData = {
4062
- body: Policy;
4261
+ body: PolicyWritable;
4063
4262
  path?: never;
4064
4263
  query?: never;
4065
4264
  url: '/policies';
@@ -4075,7 +4274,7 @@ export type DeletePolicyData = {
4075
4274
  body?: never;
4076
4275
  path: {
4077
4276
  /**
4078
- * Name of the policy
4277
+ * Unique name identifier of the policy
4079
4278
  */
4080
4279
  policyName: string;
4081
4280
  };
@@ -4093,7 +4292,7 @@ export type GetPolicyData = {
4093
4292
  body?: never;
4094
4293
  path: {
4095
4294
  /**
4096
- * Name of the policy
4295
+ * Unique name identifier of the policy
4097
4296
  */
4098
4297
  policyName: string;
4099
4298
  };
@@ -4108,10 +4307,10 @@ export type GetPolicyResponses = {
4108
4307
  };
4109
4308
  export type GetPolicyResponse = GetPolicyResponses[keyof GetPolicyResponses];
4110
4309
  export type UpdatePolicyData = {
4111
- body: Policy;
4310
+ body: PolicyWritable;
4112
4311
  path: {
4113
4312
  /**
4114
- * Name of the policy
4313
+ * Unique name identifier of the policy
4115
4314
  */
4116
4315
  policyName: string;
4117
4316
  };
@@ -4147,7 +4346,12 @@ export type ListAllPendingInvitationsResponse = ListAllPendingInvitationsRespons
4147
4346
  export type ListPublicIpsData = {
4148
4347
  body?: never;
4149
4348
  path?: never;
4150
- query?: never;
4349
+ query?: {
4350
+ /**
4351
+ * Filter by region name (only returns mk3 region data)
4352
+ */
4353
+ region?: string;
4354
+ };
4151
4355
  url: '/publicIps';
4152
4356
  };
4153
4357
  export type ListPublicIpsResponses = {
@@ -4176,6 +4380,21 @@ export type ListSandboxesData = {
4176
4380
  query?: never;
4177
4381
  url: '/sandboxes';
4178
4382
  };
4383
+ export type ListSandboxesErrors = {
4384
+ /**
4385
+ * Unauthorized - Invalid or missing authentication credentials
4386
+ */
4387
+ 401: _Error;
4388
+ /**
4389
+ * Forbidden - Insufficient permissions to list sandboxes
4390
+ */
4391
+ 403: _Error;
4392
+ /**
4393
+ * Internal server error
4394
+ */
4395
+ 500: _Error;
4396
+ };
4397
+ export type ListSandboxesError = ListSandboxesErrors[keyof ListSandboxesErrors];
4179
4398
  export type ListSandboxesResponses = {
4180
4399
  /**
4181
4400
  * successful operation
@@ -4184,11 +4403,34 @@ export type ListSandboxesResponses = {
4184
4403
  };
4185
4404
  export type ListSandboxesResponse = ListSandboxesResponses[keyof ListSandboxesResponses];
4186
4405
  export type CreateSandboxData = {
4187
- body: Sandbox;
4406
+ body: SandboxWritable;
4188
4407
  path?: never;
4189
4408
  query?: never;
4190
4409
  url: '/sandboxes';
4191
4410
  };
4411
+ export type CreateSandboxErrors = {
4412
+ /**
4413
+ * Bad request - Invalid sandbox configuration (e.g., invalid region, image not found)
4414
+ */
4415
+ 400: SandboxError;
4416
+ /**
4417
+ * Unauthorized - Invalid or missing authentication credentials
4418
+ */
4419
+ 401: SandboxError;
4420
+ /**
4421
+ * Forbidden - Insufficient permissions to create sandboxes
4422
+ */
4423
+ 403: SandboxError;
4424
+ /**
4425
+ * Conflict - Sandbox with this name already exists
4426
+ */
4427
+ 409: SandboxError;
4428
+ /**
4429
+ * Internal server error
4430
+ */
4431
+ 500: SandboxError;
4432
+ };
4433
+ export type CreateSandboxError = CreateSandboxErrors[keyof CreateSandboxErrors];
4192
4434
  export type CreateSandboxResponses = {
4193
4435
  /**
4194
4436
  * successful operation
@@ -4200,13 +4442,32 @@ export type DeleteSandboxData = {
4200
4442
  body?: never;
4201
4443
  path: {
4202
4444
  /**
4203
- * Name of the Sandbox
4445
+ * Unique name identifier of the sandbox
4204
4446
  */
4205
4447
  sandboxName: string;
4206
4448
  };
4207
4449
  query?: never;
4208
4450
  url: '/sandboxes/{sandboxName}';
4209
4451
  };
4452
+ export type DeleteSandboxErrors = {
4453
+ /**
4454
+ * Unauthorized - Invalid or missing authentication credentials
4455
+ */
4456
+ 401: _Error;
4457
+ /**
4458
+ * Forbidden - Insufficient permissions to delete this sandbox
4459
+ */
4460
+ 403: _Error;
4461
+ /**
4462
+ * Not found - Sandbox does not exist
4463
+ */
4464
+ 404: _Error;
4465
+ /**
4466
+ * Internal server error
4467
+ */
4468
+ 500: _Error;
4469
+ };
4470
+ export type DeleteSandboxError = DeleteSandboxErrors[keyof DeleteSandboxErrors];
4210
4471
  export type DeleteSandboxResponses = {
4211
4472
  /**
4212
4473
  * successful operation
@@ -4218,18 +4479,37 @@ export type GetSandboxData = {
4218
4479
  body?: never;
4219
4480
  path: {
4220
4481
  /**
4221
- * Name of the Sandbox
4482
+ * Unique name identifier of the sandbox
4222
4483
  */
4223
4484
  sandboxName: string;
4224
4485
  };
4225
4486
  query?: {
4226
4487
  /**
4227
- * Show secret values (admin only)
4488
+ * Show secret values (requires workspace admin role)
4228
4489
  */
4229
4490
  show_secrets?: boolean;
4230
4491
  };
4231
4492
  url: '/sandboxes/{sandboxName}';
4232
4493
  };
4494
+ export type GetSandboxErrors = {
4495
+ /**
4496
+ * Unauthorized - Invalid or missing authentication credentials
4497
+ */
4498
+ 401: _Error;
4499
+ /**
4500
+ * Forbidden - Insufficient permissions to view this sandbox
4501
+ */
4502
+ 403: _Error;
4503
+ /**
4504
+ * Not found - Sandbox does not exist
4505
+ */
4506
+ 404: _Error;
4507
+ /**
4508
+ * Internal server error
4509
+ */
4510
+ 500: _Error;
4511
+ };
4512
+ export type GetSandboxError = GetSandboxErrors[keyof GetSandboxErrors];
4233
4513
  export type GetSandboxResponses = {
4234
4514
  /**
4235
4515
  * successful operation
@@ -4238,16 +4518,39 @@ export type GetSandboxResponses = {
4238
4518
  };
4239
4519
  export type GetSandboxResponse = GetSandboxResponses[keyof GetSandboxResponses];
4240
4520
  export type UpdateSandboxData = {
4241
- body: Sandbox;
4521
+ body: SandboxWritable;
4242
4522
  path: {
4243
4523
  /**
4244
- * Name of the Sandbox
4524
+ * Unique name identifier of the sandbox
4245
4525
  */
4246
4526
  sandboxName: string;
4247
4527
  };
4248
4528
  query?: never;
4249
4529
  url: '/sandboxes/{sandboxName}';
4250
4530
  };
4531
+ export type UpdateSandboxErrors = {
4532
+ /**
4533
+ * Bad request - Invalid sandbox configuration
4534
+ */
4535
+ 400: _Error;
4536
+ /**
4537
+ * Unauthorized - Invalid or missing authentication credentials
4538
+ */
4539
+ 401: _Error;
4540
+ /**
4541
+ * Forbidden - Insufficient permissions to update this sandbox
4542
+ */
4543
+ 403: _Error;
4544
+ /**
4545
+ * Not found - Sandbox does not exist
4546
+ */
4547
+ 404: _Error;
4548
+ /**
4549
+ * Internal server error
4550
+ */
4551
+ 500: _Error;
4552
+ };
4553
+ export type UpdateSandboxError = UpdateSandboxErrors[keyof UpdateSandboxErrors];
4251
4554
  export type UpdateSandboxResponses = {
4252
4555
  /**
4253
4556
  * successful operation
@@ -4274,7 +4577,7 @@ export type ListSandboxPreviewsResponses = {
4274
4577
  };
4275
4578
  export type ListSandboxPreviewsResponse = ListSandboxPreviewsResponses[keyof ListSandboxPreviewsResponses];
4276
4579
  export type CreateSandboxPreviewData = {
4277
- body: Preview;
4580
+ body: PreviewWritable;
4278
4581
  path: {
4279
4582
  /**
4280
4583
  * Name of the Sandbox
@@ -4336,7 +4639,7 @@ export type GetSandboxPreviewResponses = {
4336
4639
  };
4337
4640
  export type GetSandboxPreviewResponse = GetSandboxPreviewResponses[keyof GetSandboxPreviewResponses];
4338
4641
  export type UpdateSandboxPreviewData = {
4339
- body: Preview;
4642
+ body: PreviewWritable;
4340
4643
  path: {
4341
4644
  /**
4342
4645
  * Name of the Sandbox
@@ -4380,7 +4683,7 @@ export type ListSandboxPreviewTokensResponses = {
4380
4683
  };
4381
4684
  export type ListSandboxPreviewTokensResponse = ListSandboxPreviewTokensResponses[keyof ListSandboxPreviewTokensResponses];
4382
4685
  export type CreateSandboxPreviewTokenData = {
4383
- body: PreviewToken;
4686
+ body: PreviewTokenWritable;
4384
4687
  path: {
4385
4688
  /**
4386
4689
  * Name of the Sandbox
@@ -4432,54 +4735,6 @@ export type DeleteSandboxPreviewTokenResponses = {
4432
4735
  };
4433
4736
  };
4434
4737
  export type DeleteSandboxPreviewTokenResponse = DeleteSandboxPreviewTokenResponses[keyof DeleteSandboxPreviewTokenResponses];
4435
- export type StartSandboxData = {
4436
- body?: never;
4437
- path: {
4438
- /**
4439
- * Name of the Sandbox
4440
- */
4441
- sandboxName: string;
4442
- };
4443
- query?: never;
4444
- url: '/sandboxes/{sandboxName}/start';
4445
- };
4446
- export type StartSandboxErrors = {
4447
- /**
4448
- * Sandbox is already running
4449
- */
4450
- 409: unknown;
4451
- };
4452
- export type StartSandboxResponses = {
4453
- /**
4454
- * successful operation
4455
- */
4456
- 200: StartSandbox;
4457
- };
4458
- export type StartSandboxResponse = StartSandboxResponses[keyof StartSandboxResponses];
4459
- export type StopSandboxData = {
4460
- body?: never;
4461
- path: {
4462
- /**
4463
- * Name of the Sandbox
4464
- */
4465
- sandboxName: string;
4466
- };
4467
- query?: never;
4468
- url: '/sandboxes/{sandboxName}/stop';
4469
- };
4470
- export type StopSandboxErrors = {
4471
- /**
4472
- * Sandbox is not running
4473
- */
4474
- 409: unknown;
4475
- };
4476
- export type StopSandboxResponses = {
4477
- /**
4478
- * successful operation
4479
- */
4480
- 200: StopSandbox;
4481
- };
4482
- export type StopSandboxResponse = StopSandboxResponses[keyof StopSandboxResponses];
4483
4738
  export type GetWorkspaceServiceAccountsData = {
4484
4739
  body?: never;
4485
4740
  path?: never;
@@ -4652,7 +4907,7 @@ export type ListApiKeysForServiceAccountData = {
4652
4907
  body?: never;
4653
4908
  path: {
4654
4909
  /**
4655
- * Client ID
4910
+ * Service account client ID
4656
4911
  */
4657
4912
  clientId: string;
4658
4913
  };
@@ -4669,7 +4924,7 @@ export type ListApiKeysForServiceAccountResponse = ListApiKeysForServiceAccountR
4669
4924
  export type CreateApiKeyForServiceAccountData = {
4670
4925
  body: {
4671
4926
  /**
4672
- * Expiration period for the API key
4927
+ * Expiration period for the API key. Supports formats like '30d' (30 days), '24h' (24 hours), '1w' (1 week). If not set, the API key never expires.
4673
4928
  */
4674
4929
  expires_in?: string;
4675
4930
  /**
@@ -4679,7 +4934,7 @@ export type CreateApiKeyForServiceAccountData = {
4679
4934
  };
4680
4935
  path: {
4681
4936
  /**
4682
- * Client ID
4937
+ * Service account client ID
4683
4938
  */
4684
4939
  clientId: string;
4685
4940
  };
@@ -4697,11 +4952,11 @@ export type DeleteApiKeyForServiceAccountData = {
4697
4952
  body?: never;
4698
4953
  path: {
4699
4954
  /**
4700
- * Client ID
4955
+ * Service account client ID
4701
4956
  */
4702
4957
  clientId: string;
4703
4958
  /**
4704
- * Api key id
4959
+ * API key identifier to revoke
4705
4960
  */
4706
4961
  apiKeyId: string;
4707
4962
  };
@@ -4856,7 +5111,7 @@ export type ListVolumeTemplatesResponses = {
4856
5111
  };
4857
5112
  export type ListVolumeTemplatesResponse = ListVolumeTemplatesResponses[keyof ListVolumeTemplatesResponses];
4858
5113
  export type CreateVolumeTemplateData = {
4859
- body: VolumeTemplate;
5114
+ body: VolumeTemplateWritable;
4860
5115
  path?: never;
4861
5116
  query?: {
4862
5117
  /**
@@ -4914,7 +5169,7 @@ export type GetVolumeTemplateResponses = {
4914
5169
  };
4915
5170
  export type GetVolumeTemplateResponse = GetVolumeTemplateResponses[keyof GetVolumeTemplateResponses];
4916
5171
  export type UpdateVolumeTemplateData = {
4917
- body: VolumeTemplate;
5172
+ body: VolumeTemplateWritable;
4918
5173
  path: {
4919
5174
  /**
4920
5175
  * Name of the volume template
@@ -4981,6 +5236,21 @@ export type ListVolumesData = {
4981
5236
  query?: never;
4982
5237
  url: '/volumes';
4983
5238
  };
5239
+ export type ListVolumesErrors = {
5240
+ /**
5241
+ * Unauthorized - Invalid or missing authentication credentials
5242
+ */
5243
+ 401: _Error;
5244
+ /**
5245
+ * Forbidden - Insufficient permissions to list volumes
5246
+ */
5247
+ 403: _Error;
5248
+ /**
5249
+ * Internal server error
5250
+ */
5251
+ 500: _Error;
5252
+ };
5253
+ export type ListVolumesError = ListVolumesErrors[keyof ListVolumesErrors];
4984
5254
  export type ListVolumesResponses = {
4985
5255
  /**
4986
5256
  * successful operation
@@ -4989,11 +5259,34 @@ export type ListVolumesResponses = {
4989
5259
  };
4990
5260
  export type ListVolumesResponse = ListVolumesResponses[keyof ListVolumesResponses];
4991
5261
  export type CreateVolumeData = {
4992
- body: Volume;
5262
+ body: VolumeWritable;
4993
5263
  path?: never;
4994
5264
  query?: never;
4995
5265
  url: '/volumes';
4996
5266
  };
5267
+ export type CreateVolumeErrors = {
5268
+ /**
5269
+ * Bad request - Invalid volume configuration (e.g., invalid region)
5270
+ */
5271
+ 400: _Error;
5272
+ /**
5273
+ * Unauthorized - Invalid or missing authentication credentials
5274
+ */
5275
+ 401: _Error;
5276
+ /**
5277
+ * Forbidden - Insufficient permissions to create volumes
5278
+ */
5279
+ 403: _Error;
5280
+ /**
5281
+ * Conflict - Volume with this name already exists
5282
+ */
5283
+ 409: _Error;
5284
+ /**
5285
+ * Internal server error
5286
+ */
5287
+ 500: _Error;
5288
+ };
5289
+ export type CreateVolumeError = CreateVolumeErrors[keyof CreateVolumeErrors];
4997
5290
  export type CreateVolumeResponses = {
4998
5291
  /**
4999
5292
  * successful operation
@@ -5012,6 +5305,29 @@ export type DeleteVolumeData = {
5012
5305
  query?: never;
5013
5306
  url: '/volumes/{volumeName}';
5014
5307
  };
5308
+ export type DeleteVolumeErrors = {
5309
+ /**
5310
+ * Unauthorized - Invalid or missing authentication credentials
5311
+ */
5312
+ 401: _Error;
5313
+ /**
5314
+ * Forbidden - Insufficient permissions to delete this volume
5315
+ */
5316
+ 403: _Error;
5317
+ /**
5318
+ * Not found - Volume does not exist
5319
+ */
5320
+ 404: _Error;
5321
+ /**
5322
+ * Conflict - Volume is currently attached to a sandbox
5323
+ */
5324
+ 409: _Error;
5325
+ /**
5326
+ * Internal server error
5327
+ */
5328
+ 500: _Error;
5329
+ };
5330
+ export type DeleteVolumeError = DeleteVolumeErrors[keyof DeleteVolumeErrors];
5015
5331
  export type DeleteVolumeResponses = {
5016
5332
  /**
5017
5333
  * successful operation
@@ -5030,6 +5346,25 @@ export type GetVolumeData = {
5030
5346
  query?: never;
5031
5347
  url: '/volumes/{volumeName}';
5032
5348
  };
5349
+ export type GetVolumeErrors = {
5350
+ /**
5351
+ * Unauthorized - Invalid or missing authentication credentials
5352
+ */
5353
+ 401: _Error;
5354
+ /**
5355
+ * Forbidden - Insufficient permissions to view this volume
5356
+ */
5357
+ 403: _Error;
5358
+ /**
5359
+ * Not found - Volume does not exist
5360
+ */
5361
+ 404: _Error;
5362
+ /**
5363
+ * Internal server error
5364
+ */
5365
+ 500: _Error;
5366
+ };
5367
+ export type GetVolumeError = GetVolumeErrors[keyof GetVolumeErrors];
5033
5368
  export type GetVolumeResponses = {
5034
5369
  /**
5035
5370
  * successful operation
@@ -5043,6 +5378,17 @@ export type ListWorkspacesData = {
5043
5378
  query?: never;
5044
5379
  url: '/workspaces';
5045
5380
  };
5381
+ export type ListWorkspacesErrors = {
5382
+ /**
5383
+ * Unauthorized - Invalid or missing authentication credentials
5384
+ */
5385
+ 401: _Error;
5386
+ /**
5387
+ * Internal server error
5388
+ */
5389
+ 500: _Error;
5390
+ };
5391
+ export type ListWorkspacesError = ListWorkspacesErrors[keyof ListWorkspacesErrors];
5046
5392
  export type ListWorkspacesResponses = {
5047
5393
  /**
5048
5394
  * successful operation
@@ -5051,11 +5397,34 @@ export type ListWorkspacesResponses = {
5051
5397
  };
5052
5398
  export type ListWorkspacesResponse = ListWorkspacesResponses[keyof ListWorkspacesResponses];
5053
5399
  export type CreateWorkspaceData = {
5054
- body: Workspace;
5400
+ body: WorkspaceWritable;
5055
5401
  path?: never;
5056
5402
  query?: never;
5057
5403
  url: '/workspaces';
5058
5404
  };
5405
+ export type CreateWorkspaceErrors = {
5406
+ /**
5407
+ * Bad request - Invalid workspace configuration
5408
+ */
5409
+ 400: _Error;
5410
+ /**
5411
+ * Unauthorized - Invalid or missing authentication credentials
5412
+ */
5413
+ 401: _Error;
5414
+ /**
5415
+ * Forbidden - Insufficient permissions or no billing account linked
5416
+ */
5417
+ 403: _Error;
5418
+ /**
5419
+ * Conflict - Workspace with this name already exists
5420
+ */
5421
+ 409: _Error;
5422
+ /**
5423
+ * Internal server error
5424
+ */
5425
+ 500: _Error;
5426
+ };
5427
+ export type CreateWorkspaceError = CreateWorkspaceErrors[keyof CreateWorkspaceErrors];
5059
5428
  export type CreateWorkspaceResponses = {
5060
5429
  /**
5061
5430
  * successful operation
@@ -5074,6 +5443,25 @@ export type DeleteWorkspaceData = {
5074
5443
  query?: never;
5075
5444
  url: '/workspaces/{workspaceName}';
5076
5445
  };
5446
+ export type DeleteWorkspaceErrors = {
5447
+ /**
5448
+ * Unauthorized - Invalid or missing authentication credentials
5449
+ */
5450
+ 401: _Error;
5451
+ /**
5452
+ * Forbidden - Only workspace admins can delete workspaces
5453
+ */
5454
+ 403: _Error;
5455
+ /**
5456
+ * Not found - Workspace does not exist
5457
+ */
5458
+ 404: _Error;
5459
+ /**
5460
+ * Internal server error
5461
+ */
5462
+ 500: _Error;
5463
+ };
5464
+ export type DeleteWorkspaceError = DeleteWorkspaceErrors[keyof DeleteWorkspaceErrors];
5077
5465
  export type DeleteWorkspaceResponses = {
5078
5466
  /**
5079
5467
  * successful operation
@@ -5092,6 +5480,25 @@ export type GetWorkspaceData = {
5092
5480
  query?: never;
5093
5481
  url: '/workspaces/{workspaceName}';
5094
5482
  };
5483
+ export type GetWorkspaceErrors = {
5484
+ /**
5485
+ * Unauthorized - Invalid or missing authentication credentials
5486
+ */
5487
+ 401: _Error;
5488
+ /**
5489
+ * Forbidden - You do not have access to this workspace
5490
+ */
5491
+ 403: _Error;
5492
+ /**
5493
+ * Not found - Workspace does not exist
5494
+ */
5495
+ 404: _Error;
5496
+ /**
5497
+ * Internal server error
5498
+ */
5499
+ 500: _Error;
5500
+ };
5501
+ export type GetWorkspaceError = GetWorkspaceErrors[keyof GetWorkspaceErrors];
5095
5502
  export type GetWorkspaceResponses = {
5096
5503
  /**
5097
5504
  * successful operation
@@ -5100,7 +5507,7 @@ export type GetWorkspaceResponses = {
5100
5507
  };
5101
5508
  export type GetWorkspaceResponse = GetWorkspaceResponses[keyof GetWorkspaceResponses];
5102
5509
  export type UpdateWorkspaceData = {
5103
- body: Workspace;
5510
+ body: WorkspaceWritable;
5104
5511
  path: {
5105
5512
  /**
5106
5513
  * name of the workspace
@@ -5110,6 +5517,29 @@ export type UpdateWorkspaceData = {
5110
5517
  query?: never;
5111
5518
  url: '/workspaces/{workspaceName}';
5112
5519
  };
5520
+ export type UpdateWorkspaceErrors = {
5521
+ /**
5522
+ * Bad request - Invalid workspace configuration
5523
+ */
5524
+ 400: _Error;
5525
+ /**
5526
+ * Unauthorized - Invalid or missing authentication credentials
5527
+ */
5528
+ 401: _Error;
5529
+ /**
5530
+ * Forbidden - Insufficient permissions to update this workspace
5531
+ */
5532
+ 403: _Error;
5533
+ /**
5534
+ * Not found - Workspace does not exist
5535
+ */
5536
+ 404: _Error;
5537
+ /**
5538
+ * Internal server error
5539
+ */
5540
+ 500: _Error;
5541
+ };
5542
+ export type UpdateWorkspaceError = UpdateWorkspaceErrors[keyof UpdateWorkspaceErrors];
5113
5543
  export type UpdateWorkspaceResponses = {
5114
5544
  /**
5115
5545
  * successful operation