@blaxel/core 0.3.3-preview.219 → 0.3.4-preview.221

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.
@@ -189,6 +189,10 @@ export type AppRevision = {
189
189
  * Port the application listens on for this revision (default uses spec-level port or 8080)
190
190
  */
191
191
  port?: number;
192
+ /**
193
+ * Snapshot ID this revision was forked from (optional, only set when created via fork)
194
+ */
195
+ snapshot?: string;
192
196
  };
193
197
  /**
194
198
  * Routing configuration controlling which revision is active and canary traffic splitting
@@ -239,6 +243,10 @@ export type AppUrls = Array<AppUrl>;
239
243
  export type Application = {
240
244
  events?: CoreEvents;
241
245
  metadata: Metadata;
246
+ /**
247
+ * Infrastructure generation this application is deployed on (mk3.0 or mk3.1).
248
+ */
249
+ readonly nodeGeneration?: string;
242
250
  spec: ApplicationSpec;
243
251
  /**
244
252
  * Application status computed from events
@@ -253,6 +261,21 @@ export type ApplicationWritable = {
253
261
  metadata: MetadataWritable;
254
262
  spec: ApplicationSpec;
255
263
  };
264
+ /**
265
+ * Configuration for a single application extension. The fields used depend on the extension key; for ai.blaxel.experimental/bind-to-sandbox only "sandbox" is used.
266
+ */
267
+ export type ApplicationExtension = {
268
+ /**
269
+ * Name of the sandbox this application binds to (used by the ai.blaxel.experimental/bind-to-sandbox extension).
270
+ */
271
+ sandbox?: string;
272
+ };
273
+ /**
274
+ * Map of experimental, opt-in application extensions keyed by fully-qualified extension name (e.g. "ai.blaxel.experimental/bind-to-sandbox").
275
+ */
276
+ export type ApplicationExtensions = {
277
+ [key: string]: ApplicationExtension;
278
+ };
256
279
  /**
257
280
  * Cursor-paginated list of applications. Returned starting with API version 2026-04-28; older API versions return a bare array of applications instead.
258
281
  */
@@ -281,10 +304,27 @@ export type ApplicationSpec = {
281
304
  * When false, the application is disabled and will not serve requests
282
305
  */
283
306
  enabled?: boolean;
307
+ /**
308
+ * Environment variables for the application
309
+ */
310
+ envs?: Array<Env>;
311
+ extensions?: ApplicationExtensions;
312
+ /**
313
+ * Container image for the application. The backend generates a revision from the spec-level compute (image, memory, envs, port) on every create/update — clients set the compute here, exactly like agents and functions, and never craft revisions by hand.
314
+ */
315
+ image?: string;
316
+ /**
317
+ * Memory allocation in megabytes for the application (default 2048). Determines CPU allocation (CPU = memory / 2048).
318
+ */
319
+ memory?: number;
284
320
  /**
285
321
  * Port the application listens on (default 8080)
286
322
  */
287
323
  port?: number;
324
+ /**
325
+ * When true, the application proxies to an existing sandbox (the active revision image is the sandbox name) instead of building and deploying its own compute. Proxy applications have no deployment pipeline and are always reported as deployed. Deprecated — prefer the ai.blaxel.experimental/bind-to-sandbox extension.
326
+ */
327
+ proxy?: boolean;
288
328
  /**
289
329
  * Region where the application is deployed (e.g. us-pdx-1, eu-lon-1)
290
330
  */
@@ -295,6 +335,32 @@ export type ApplicationSpec = {
295
335
  };
296
336
  export type Applications = Array<Application>;
297
337
  export type ApplicationsWritable = Array<ApplicationWritable>;
338
+ /**
339
+ * Changelog entry shown in the controlplane UI.
340
+ */
341
+ export type ChangelogEntry = {
342
+ /**
343
+ * Markdown body for the changelog entry.
344
+ */
345
+ content?: string;
346
+ /**
347
+ * Release date for the changelog entry in YYYY-MM-DD format.
348
+ */
349
+ date?: string;
350
+ /**
351
+ * Changelog entry title.
352
+ */
353
+ title?: string;
354
+ };
355
+ /**
356
+ * Latest changelog entries shown in the controlplane UI.
357
+ */
358
+ export type ChangelogResponse = {
359
+ /**
360
+ * Latest changelog entries, newest first.
361
+ */
362
+ entries?: Array<ChangelogEntry>;
363
+ };
298
364
  /**
299
365
  * Configuration
300
366
  */
@@ -509,6 +575,10 @@ export type CustomDomainMetadata = TimeFields & OwnerFields & {
509
575
  * Domain name (e.g., "example.com")
510
576
  */
511
577
  name?: string;
578
+ /**
579
+ * If this custom domain is shared from another workspace of the same account, this field contains the name of the source (owning) workspace. Empty for owned domains.
580
+ */
581
+ readonly sharedFromWorkspace?: string;
512
582
  /**
513
583
  * Workspace name
514
584
  */
@@ -532,6 +602,23 @@ export type CustomDomainMetadataWritable = TimeFields & OwnerFields & {
532
602
  */
533
603
  workspace?: string;
534
604
  };
605
+ /**
606
+ * A workspace (or the whole account) a custom domain is shared with
607
+ */
608
+ export type CustomDomainShareTarget = {
609
+ /**
610
+ * Share status; always "active" for same-account custom domain shares.
611
+ */
612
+ status: string;
613
+ /**
614
+ * The workspace the domain is shared with, or "account" for an account-wide share.
615
+ */
616
+ workspace: string;
617
+ /**
618
+ * Display name of the target workspace (empty for an account-wide share).
619
+ */
620
+ workspaceDisplayName?: string;
621
+ };
535
622
  /**
536
623
  * Custom domain specification
537
624
  */
@@ -540,6 +627,10 @@ export type CustomDomainSpec = {
540
627
  * CNAME target for the domain
541
628
  */
542
629
  cnameRecords?: string;
630
+ /**
631
+ * Type of custom domain (previews or applications)
632
+ */
633
+ domainType?: 'previews' | 'applications';
543
634
  /**
544
635
  * Preview ID to route to when a preview lookup fails on this custom domain
545
636
  */
@@ -581,6 +672,10 @@ export type CustomDomainSpecWritable = {
581
672
  * CNAME target for the domain
582
673
  */
583
674
  cnameRecords?: string;
675
+ /**
676
+ * Type of custom domain (previews or applications)
677
+ */
678
+ domainType?: 'previews' | 'applications';
584
679
  /**
585
680
  * Preview ID to route to when a preview lookup fails on this custom domain
586
681
  */
@@ -2011,6 +2106,10 @@ export type LiteVolumeWritable = {
2011
2106
  export type LiteVolumeMetadata = {
2012
2107
  createdAt?: string;
2013
2108
  displayName?: string;
2109
+ /**
2110
+ * Caller-owned identifier for external lookups.
2111
+ */
2112
+ externalId?: string;
2014
2113
  name?: string;
2015
2114
  updatedAt?: string;
2016
2115
  };
@@ -2600,6 +2699,10 @@ export type PendingInvitationRender = {
2600
2699
  * The date and time when the invitation expires
2601
2700
  */
2602
2701
  expiresAt?: string;
2702
+ /**
2703
+ * Opaque invitation identifier
2704
+ */
2705
+ invitationId?: string;
2603
2706
  /**
2604
2707
  * Invitation date
2605
2708
  */
@@ -3187,6 +3290,10 @@ export type Region = {
3187
3290
  * Region display name
3188
3291
  */
3189
3292
  location?: string;
3293
+ /**
3294
+ * Whether this region supports mk3.1 (blaxel nodes). Required for Application and Job deployments.
3295
+ */
3296
+ mk31Available?: boolean;
3190
3297
  /**
3191
3298
  * Region name
3192
3299
  */
@@ -3418,6 +3525,10 @@ export type Sandbox = {
3418
3525
  */
3419
3526
  readonly lastUsedAt?: string;
3420
3527
  metadata: Metadata;
3528
+ /**
3529
+ * Infrastructure generation this sandbox is deployed on (mk3.0 or mk3.1).
3530
+ */
3531
+ readonly nodeGeneration?: string;
3421
3532
  spec: SandboxSpec;
3422
3533
  /**
3423
3534
  * Current state of the sandbox (read-only, managed by the system)
@@ -3537,6 +3648,56 @@ export type SandboxError = {
3537
3648
  */
3538
3649
  workspace?: string;
3539
3650
  };
3651
+ /**
3652
+ * Request body for forking a sandbox into an application. Creates a new application or adds a canary revision to an existing one.
3653
+ */
3654
+ export type SandboxForkRequest = {
3655
+ /**
3656
+ * Custom domain for the application
3657
+ */
3658
+ customDomain?: string;
3659
+ /**
3660
+ * Port to expose from the sandbox
3661
+ */
3662
+ port?: number;
3663
+ /**
3664
+ * URL prefix for the application
3665
+ */
3666
+ prefix?: string;
3667
+ /**
3668
+ * Snapshot ID to fork from. When set, the application revision references this snapshot.
3669
+ */
3670
+ snapshotId?: string;
3671
+ /**
3672
+ * Name of the target application to create or update
3673
+ */
3674
+ targetName: string;
3675
+ /**
3676
+ * Target resource type to fork into
3677
+ */
3678
+ targetType: string;
3679
+ /**
3680
+ * Traffic percentage for canary deployment (0-100). When set on an existing target, creates a new revision with this traffic percentage.
3681
+ */
3682
+ traffic?: number;
3683
+ };
3684
+ /**
3685
+ * Response returned after forking a sandbox. Contains either the new sandbox or application depending on the fork type.
3686
+ */
3687
+ export type SandboxForkResponse = {
3688
+ /**
3689
+ * Name of the created or updated resource
3690
+ */
3691
+ name?: string;
3692
+ /**
3693
+ * The snapshot ID the fork was created from
3694
+ */
3695
+ snapshotId?: string;
3696
+ /**
3697
+ * Type of resource that was created (sandbox or application)
3698
+ */
3699
+ type?: 'sandbox' | 'application';
3700
+ };
3540
3701
  /**
3541
3702
  * Lifecycle configuration controlling automatic sandbox deletion based on idle time, max age, or specific dates
3542
3703
  */
@@ -3603,7 +3764,7 @@ export type SandboxRuntime = {
3603
3764
  */
3604
3765
  expires?: string;
3605
3766
  /**
3606
- * Extra arguments for sandbox kernel selection. Supported keys: 'iptables', 'nvme', 'nfs'. Values: 'enabled' or 'disabled'. Determines which kernel variant the sandbox runs on. Immutable after creation.
3767
+ * Extra arguments for kernel selection. Supported keys: 'iptables', 'nfs' (mk3.0), 'tun' (mk3.1). Values: 'enabled' or 'disabled'. Determines which kernel variant the workload runs on. Immutable after creation.
3607
3768
  */
3608
3769
  extraArgs?: {
3609
3770
  [key: string]: string;
@@ -3626,14 +3787,6 @@ export type SandboxRuntime = {
3626
3787
  */
3627
3788
  ttl?: string;
3628
3789
  };
3629
- /**
3630
- * List of scheduled tasks for automated process execution inside the sandbox. Supports recurring cron expressions, one-off datetime targets, and sleep durations.
3631
- */
3632
- export type SandboxSchedule = Array<SandboxScheduleEntry>;
3633
- /**
3634
- * List of scheduled tasks for automated process execution inside the sandbox. Supports recurring cron expressions, one-off datetime targets, and sleep durations.
3635
- */
3636
- export type SandboxScheduleWritable = Array<SandboxScheduleEntryWritable>;
3637
3790
  /**
3638
3791
  * A scheduled task that executes a process inside the sandbox at specified times. Stored in the dedicated schedules table (no longer embedded in the sandbox spec).
3639
3792
  */
@@ -3815,6 +3968,49 @@ export type SandboxScheduleInput = {
3815
3968
  */
3816
3969
  workingDir?: string;
3817
3970
  };
3971
+ /**
3972
+ * A point-in-time snapshot of a sandbox that can be used for forking into a new sandbox or application.
3973
+ */
3974
+ export type SandboxSnapshot = {
3975
+ /**
3976
+ * When the snapshot was created
3977
+ */
3978
+ createdAt: string;
3979
+ /**
3980
+ * Who created the snapshot
3981
+ */
3982
+ createdBy?: string;
3983
+ /**
3984
+ * Unique snapshot identifier
3985
+ */
3986
+ id: string;
3987
+ /**
3988
+ * Optional human-readable name for the snapshot
3989
+ */
3990
+ name?: string;
3991
+ /**
3992
+ * Name of the source sandbox
3993
+ */
3994
+ sandboxName: string;
3995
+ /**
3996
+ * Status of the snapshot (pending, ready, failed)
3997
+ */
3998
+ status: string;
3999
+ /**
4000
+ * Workspace of the source sandbox
4001
+ */
4002
+ workspace: string;
4003
+ };
4004
+ /**
4005
+ * Request body for creating a snapshot of a sandbox. Captures the current sandbox state.
4006
+ */
4007
+ export type SandboxSnapshotRequest = {
4008
+ /**
4009
+ * Optional human-readable name for the snapshot
4010
+ */
4011
+ name?: string;
4012
+ };
4013
+ export type SandboxSnapshots = Array<SandboxSnapshot>;
3818
4014
  /**
3819
4015
  * Configuration for a sandbox including its image, memory, ports, region, and lifecycle policies
3820
4016
  */
@@ -4102,7 +4298,7 @@ export type VolumeWritable = {
4102
4298
  state?: VolumeStateWritable;
4103
4299
  };
4104
4300
  /**
4105
- * Configuration for attaching a persistent volume to a sandbox at a specific filesystem path
4301
+ * Configuration for attaching a volume to a sandbox at a specific filesystem path. Defaults to a persistent volume; set type to "ephemeral" for disk-backed scratch space created with the sandbox and destroyed when it stops.
4106
4302
  */
4107
4303
  export type VolumeAttachment = {
4108
4304
  /**
@@ -4110,13 +4306,21 @@ export type VolumeAttachment = {
4110
4306
  */
4111
4307
  mountPath?: string;
4112
4308
  /**
4113
- * Name of the volume resource to attach (must exist in the same workspace and region)
4309
+ * For persistent volumes, the name of the volume resource to attach (must exist in the same workspace and region). For ephemeral volumes, an identifier used to reference the volume internally.
4114
4310
  */
4115
4311
  name?: string;
4116
4312
  /**
4117
4313
  * If true, the volume is mounted read-only and cannot be modified by the sandbox
4118
4314
  */
4119
4315
  readOnly?: boolean;
4316
+ /**
4317
+ * Storage capacity in megabytes. Required for ephemeral volumes, ignored for persistent volumes.
4318
+ */
4319
+ sizeMb?: number;
4320
+ /**
4321
+ * Type of volume. Defaults to "persistent" (an existing volume resource). Use "ephemeral" for temporary disk-backed storage created with the sandbox.
4322
+ */
4323
+ type?: 'persistent' | 'ephemeral';
4120
4324
  };
4121
4325
  export type VolumeAttachments = Array<VolumeAttachment>;
4122
4326
  /**
@@ -4522,7 +4726,7 @@ export type WorkspaceUser = {
4522
4726
  */
4523
4727
  export type BlaxelVersion = string;
4524
4728
  /**
4525
- * Start from a known pagination boundary. `end` is only supported for `createdAt:desc` listings and returns the oldest page directly without walking every cursor from the first page.
4729
+ * Start from a known pagination boundary. `end` is only supported for `createdAt` listings (asc or desc) and returns the tail page directly without walking every cursor from the first page.
4526
4730
  */
4527
4731
  export type PaginationAnchor = 'end';
4528
4732
  /**
@@ -4562,7 +4766,7 @@ export type ListAgentsData = {
4562
4766
  */
4563
4767
  q?: string;
4564
4768
  /**
4565
- * Start from a known pagination boundary. `end` is only supported for `createdAt:desc` listings and returns the oldest page directly without walking every cursor from the first page.
4769
+ * Start from a known pagination boundary. `end` is only supported for `createdAt` listings (asc or desc) and returns the tail page directly without walking every cursor from the first page.
4566
4770
  */
4567
4771
  anchor?: 'end';
4568
4772
  };
@@ -4785,7 +4989,7 @@ export type ListApplicationsData = {
4785
4989
  */
4786
4990
  q?: string;
4787
4991
  /**
4788
- * Start from a known pagination boundary. `end` is only supported for `createdAt:desc` listings and returns the oldest page directly without walking every cursor from the first page.
4992
+ * Start from a known pagination boundary. `end` is only supported for `createdAt` listings (asc or desc) and returns the tail page directly without walking every cursor from the first page.
4789
4993
  */
4790
4994
  anchor?: 'end';
4791
4995
  };
@@ -4997,9 +5201,22 @@ export type ListApplicationRevisionsResponses = {
4997
5201
  /**
4998
5202
  * successful operation
4999
5203
  */
5000
- 200: Array<RevisionMetadata>;
5204
+ 200: Array<AppRevision>;
5001
5205
  };
5002
5206
  export type ListApplicationRevisionsResponse = ListApplicationRevisionsResponses[keyof ListApplicationRevisionsResponses];
5207
+ export type GetChangelogData = {
5208
+ body?: never;
5209
+ path?: never;
5210
+ query?: never;
5211
+ url: '/changelog';
5212
+ };
5213
+ export type GetChangelogResponses = {
5214
+ /**
5215
+ * Latest changelog entries
5216
+ */
5217
+ 200: ChangelogResponse;
5218
+ };
5219
+ export type GetChangelogResponse = GetChangelogResponses[keyof GetChangelogResponses];
5003
5220
  export type GetConfigurationData = {
5004
5221
  body?: never;
5005
5222
  path?: never;
@@ -5093,6 +5310,95 @@ export type UpdateCustomDomainResponses = {
5093
5310
  200: CustomDomain;
5094
5311
  };
5095
5312
  export type UpdateCustomDomainResponse = UpdateCustomDomainResponses[keyof UpdateCustomDomainResponses];
5313
+ export type ListCustomDomainSharesData = {
5314
+ body?: never;
5315
+ path: {
5316
+ /**
5317
+ * Name of the custom domain
5318
+ */
5319
+ domainName: string;
5320
+ };
5321
+ query?: never;
5322
+ url: '/customdomains/{domainName}/share';
5323
+ };
5324
+ export type ListCustomDomainSharesErrors = {
5325
+ /**
5326
+ * custom domain not found
5327
+ */
5328
+ 404: unknown;
5329
+ };
5330
+ export type ListCustomDomainSharesResponses = {
5331
+ /**
5332
+ * successful operation
5333
+ */
5334
+ 200: Array<CustomDomainShareTarget>;
5335
+ };
5336
+ export type ListCustomDomainSharesResponse = ListCustomDomainSharesResponses[keyof ListCustomDomainSharesResponses];
5337
+ export type ShareCustomDomainData = {
5338
+ body: {
5339
+ /**
5340
+ * Name of the workspace to share the domain with, or "account" to share with every workspace of the account.
5341
+ */
5342
+ targetWorkspace: string;
5343
+ };
5344
+ path: {
5345
+ /**
5346
+ * Name of the custom domain
5347
+ */
5348
+ domainName: string;
5349
+ };
5350
+ query?: never;
5351
+ url: '/customdomains/{domainName}/share';
5352
+ };
5353
+ export type ShareCustomDomainErrors = {
5354
+ /**
5355
+ * invalid request
5356
+ */
5357
+ 400: unknown;
5358
+ /**
5359
+ * custom domain not found
5360
+ */
5361
+ 404: unknown;
5362
+ /**
5363
+ * custom domain conflict in target workspace
5364
+ */
5365
+ 409: unknown;
5366
+ };
5367
+ export type ShareCustomDomainResponses = {
5368
+ /**
5369
+ * successful operation
5370
+ */
5371
+ 200: CustomDomain;
5372
+ };
5373
+ export type ShareCustomDomainResponse = ShareCustomDomainResponses[keyof ShareCustomDomainResponses];
5374
+ export type UnshareCustomDomainData = {
5375
+ body?: never;
5376
+ path: {
5377
+ /**
5378
+ * Name of the custom domain
5379
+ */
5380
+ domainName: string;
5381
+ /**
5382
+ * Name of the target workspace, or "account" for an account-wide share.
5383
+ */
5384
+ targetWorkspace: string;
5385
+ };
5386
+ query?: never;
5387
+ url: '/customdomains/{domainName}/share/{targetWorkspace}';
5388
+ };
5389
+ export type UnshareCustomDomainErrors = {
5390
+ /**
5391
+ * custom domain or share not found
5392
+ */
5393
+ 404: unknown;
5394
+ };
5395
+ export type UnshareCustomDomainResponses = {
5396
+ /**
5397
+ * successful operation
5398
+ */
5399
+ 200: CustomDomain;
5400
+ };
5401
+ export type UnshareCustomDomainResponse = UnshareCustomDomainResponses[keyof UnshareCustomDomainResponses];
5096
5402
  export type VerifyCustomDomainData = {
5097
5403
  body?: never;
5098
5404
  path: {
@@ -5132,9 +5438,13 @@ export type ListDrivesData = {
5132
5438
  */
5133
5439
  q?: string;
5134
5440
  /**
5135
- * Start from a known pagination boundary. `end` is only supported for `createdAt:desc` listings and returns the oldest page directly without walking every cursor from the first page.
5441
+ * Start from a known pagination boundary. `end` is only supported for `createdAt` listings (asc or desc) and returns the tail page directly without walking every cursor from the first page.
5136
5442
  */
5137
5443
  anchor?: 'end';
5444
+ /**
5445
+ * Filter drives by external ID. When set, only drives matching this caller-owned identifier are returned.
5446
+ */
5447
+ externalId?: string;
5138
5448
  };
5139
5449
  url: '/drives';
5140
5450
  };
@@ -5281,6 +5591,42 @@ export type CreateDriveAccessTokenResponses = {
5281
5591
  };
5282
5592
  };
5283
5593
  export type CreateDriveAccessTokenResponse = CreateDriveAccessTokenResponses[keyof CreateDriveAccessTokenResponses];
5594
+ export type GetDriveByExternalIdData = {
5595
+ body?: never;
5596
+ path: {
5597
+ /**
5598
+ * Caller-owned external identifier for the drive
5599
+ */
5600
+ externalId: string;
5601
+ };
5602
+ query?: never;
5603
+ url: '/drives/by-external-id/{externalId}';
5604
+ };
5605
+ export type GetDriveByExternalIdErrors = {
5606
+ /**
5607
+ * Unauthorized
5608
+ */
5609
+ 401: unknown;
5610
+ /**
5611
+ * Forbidden - Insufficient permissions to view drives
5612
+ */
5613
+ 403: unknown;
5614
+ /**
5615
+ * Drive not found
5616
+ */
5617
+ 404: unknown;
5618
+ /**
5619
+ * Internal server error
5620
+ */
5621
+ 500: unknown;
5622
+ };
5623
+ export type GetDriveByExternalIdResponses = {
5624
+ /**
5625
+ * successful operation
5626
+ */
5627
+ 200: Drive;
5628
+ };
5629
+ export type GetDriveByExternalIdResponse = GetDriveByExternalIdResponses[keyof GetDriveByExternalIdResponses];
5284
5630
  export type GetDriveJwksData = {
5285
5631
  body?: never;
5286
5632
  path?: never;
@@ -5439,7 +5785,7 @@ export type ListFunctionsData = {
5439
5785
  */
5440
5786
  q?: string;
5441
5787
  /**
5442
- * Start from a known pagination boundary. `end` is only supported for `createdAt:desc` listings and returns the oldest page directly without walking every cursor from the first page.
5788
+ * Start from a known pagination boundary. `end` is only supported for `createdAt` listings (asc or desc) and returns the tail page directly without walking every cursor from the first page.
5443
5789
  */
5444
5790
  anchor?: 'end';
5445
5791
  };
@@ -6205,7 +6551,7 @@ export type ListJobsData = {
6205
6551
  */
6206
6552
  q?: string;
6207
6553
  /**
6208
- * Start from a known pagination boundary. `end` is only supported for `createdAt:desc` listings and returns the oldest page directly without walking every cursor from the first page.
6554
+ * Start from a known pagination boundary. `end` is only supported for `createdAt` listings (asc or desc) and returns the tail page directly without walking every cursor from the first page.
6209
6555
  */
6210
6556
  anchor?: 'end';
6211
6557
  };
@@ -6557,7 +6903,7 @@ export type ListModelsData = {
6557
6903
  */
6558
6904
  q?: string;
6559
6905
  /**
6560
- * Start from a known pagination boundary. `end` is only supported for `createdAt:desc` listings and returns the oldest page directly without walking every cursor from the first page.
6906
+ * Start from a known pagination boundary. `end` is only supported for `createdAt` listings (asc or desc) and returns the tail page directly without walking every cursor from the first page.
6561
6907
  */
6562
6908
  anchor?: 'end';
6563
6909
  };
@@ -6862,7 +7208,7 @@ export type ListPoliciesData = {
6862
7208
  */
6863
7209
  q?: string;
6864
7210
  /**
6865
- * Start from a known pagination boundary. `end` is only supported for `createdAt:desc` listings and returns the oldest page directly without walking every cursor from the first page.
7211
+ * Start from a known pagination boundary. `end` is only supported for `createdAt` listings (asc or desc) and returns the tail page directly without walking every cursor from the first page.
6866
7212
  */
6867
7213
  anchor?: 'end';
6868
7214
  };
@@ -7016,7 +7362,7 @@ export type ListSandboxesData = {
7016
7362
  */
7017
7363
  q?: string;
7018
7364
  /**
7019
- * Start from a known pagination boundary. `end` is only supported for `createdAt:desc` listings and returns the oldest page directly without walking every cursor from the first page.
7365
+ * Start from a known pagination boundary. `end` is only supported for `createdAt` listings (asc or desc) and returns the tail page directly without walking every cursor from the first page.
7020
7366
  */
7021
7367
  anchor?: 'end';
7022
7368
  /**
@@ -7209,6 +7555,43 @@ export type UpdateSandboxResponses = {
7209
7555
  200: Sandbox;
7210
7556
  };
7211
7557
  export type UpdateSandboxResponse = UpdateSandboxResponses[keyof UpdateSandboxResponses];
7558
+ export type ForkSandboxData = {
7559
+ body: SandboxForkRequest;
7560
+ path: {
7561
+ /**
7562
+ * Name of the sandbox to fork
7563
+ */
7564
+ sandboxName: string;
7565
+ };
7566
+ query?: never;
7567
+ url: '/sandboxes/{sandboxName}/fork';
7568
+ };
7569
+ export type ForkSandboxErrors = {
7570
+ /**
7571
+ * Bad request - Invalid fork parameters
7572
+ */
7573
+ 400: _Error;
7574
+ /**
7575
+ * Not found - Source sandbox does not exist
7576
+ */
7577
+ 404: _Error;
7578
+ /**
7579
+ * Conflict - Target sandbox already exists (only for type sandbox)
7580
+ */
7581
+ 409: _Error;
7582
+ /**
7583
+ * Internal server error
7584
+ */
7585
+ 500: _Error;
7586
+ };
7587
+ export type ForkSandboxError = ForkSandboxErrors[keyof ForkSandboxErrors];
7588
+ export type ForkSandboxResponses = {
7589
+ /**
7590
+ * Fork created successfully
7591
+ */
7592
+ 200: SandboxForkResponse;
7593
+ };
7594
+ export type ForkSandboxResponse = ForkSandboxResponses[keyof ForkSandboxResponses];
7212
7595
  export type ListSandboxPreviewsData = {
7213
7596
  body?: never;
7214
7597
  path: {
@@ -7549,6 +7932,93 @@ export type UpdateSandboxScheduleResponses = {
7549
7932
  200: SandboxScheduleEntry;
7550
7933
  };
7551
7934
  export type UpdateSandboxScheduleResponse = UpdateSandboxScheduleResponses[keyof UpdateSandboxScheduleResponses];
7935
+ export type ListSandboxSnapshotsData = {
7936
+ body?: never;
7937
+ path: {
7938
+ /**
7939
+ * Name of the sandbox
7940
+ */
7941
+ sandboxName: string;
7942
+ };
7943
+ query?: never;
7944
+ url: '/sandboxes/{sandboxName}/snapshots';
7945
+ };
7946
+ export type ListSandboxSnapshotsErrors = {
7947
+ /**
7948
+ * Not found - Sandbox does not exist
7949
+ */
7950
+ 404: _Error;
7951
+ };
7952
+ export type ListSandboxSnapshotsError = ListSandboxSnapshotsErrors[keyof ListSandboxSnapshotsErrors];
7953
+ export type ListSandboxSnapshotsResponses = {
7954
+ /**
7955
+ * successful operation
7956
+ */
7957
+ 200: SandboxSnapshots;
7958
+ };
7959
+ export type ListSandboxSnapshotsResponse = ListSandboxSnapshotsResponses[keyof ListSandboxSnapshotsResponses];
7960
+ export type CreateSandboxSnapshotData = {
7961
+ body: SandboxSnapshotRequest;
7962
+ path: {
7963
+ /**
7964
+ * Name of the sandbox to snapshot
7965
+ */
7966
+ sandboxName: string;
7967
+ };
7968
+ query?: never;
7969
+ url: '/sandboxes/{sandboxName}/snapshots';
7970
+ };
7971
+ export type CreateSandboxSnapshotErrors = {
7972
+ /**
7973
+ * Not found - Sandbox does not exist
7974
+ */
7975
+ 404: _Error;
7976
+ /**
7977
+ * Internal server error
7978
+ */
7979
+ 500: _Error;
7980
+ };
7981
+ export type CreateSandboxSnapshotError = CreateSandboxSnapshotErrors[keyof CreateSandboxSnapshotErrors];
7982
+ export type CreateSandboxSnapshotResponses = {
7983
+ /**
7984
+ * Snapshot created successfully
7985
+ */
7986
+ 200: SandboxSnapshot;
7987
+ };
7988
+ export type CreateSandboxSnapshotResponse = CreateSandboxSnapshotResponses[keyof CreateSandboxSnapshotResponses];
7989
+ export type DeleteSandboxSnapshotData = {
7990
+ body?: never;
7991
+ path: {
7992
+ /**
7993
+ * Name of the sandbox
7994
+ */
7995
+ sandboxName: string;
7996
+ /**
7997
+ * ID of the snapshot to delete
7998
+ */
7999
+ snapshotId: string;
8000
+ };
8001
+ query?: never;
8002
+ url: '/sandboxes/{sandboxName}/snapshots/{snapshotId}';
8003
+ };
8004
+ export type DeleteSandboxSnapshotErrors = {
8005
+ /**
8006
+ * Not found - Snapshot does not exist
8007
+ */
8008
+ 404: _Error;
8009
+ /**
8010
+ * Internal server error
8011
+ */
8012
+ 500: _Error;
8013
+ };
8014
+ export type DeleteSandboxSnapshotError = DeleteSandboxSnapshotErrors[keyof DeleteSandboxSnapshotErrors];
8015
+ export type DeleteSandboxSnapshotResponses = {
8016
+ /**
8017
+ * Snapshot deleted successfully
8018
+ */
8019
+ 204: void;
8020
+ };
8021
+ export type DeleteSandboxSnapshotResponse = DeleteSandboxSnapshotResponses[keyof DeleteSandboxSnapshotResponses];
7552
8022
  export type GetSandboxByExternalIdData = {
7553
8023
  body?: never;
7554
8024
  path: {
@@ -8102,9 +8572,13 @@ export type ListVolumesData = {
8102
8572
  */
8103
8573
  q?: string;
8104
8574
  /**
8105
- * Start from a known pagination boundary. `end` is only supported for `createdAt:desc` listings and returns the oldest page directly without walking every cursor from the first page.
8575
+ * Start from a known pagination boundary. `end` is only supported for `createdAt` listings (asc or desc) and returns the tail page directly without walking every cursor from the first page.
8106
8576
  */
8107
8577
  anchor?: 'end';
8578
+ /**
8579
+ * Filter volumes by external ID. When set, only volumes matching this caller-owned identifier are returned.
8580
+ */
8581
+ externalId?: string;
8108
8582
  };
8109
8583
  url: '/volumes';
8110
8584
  };
@@ -8262,6 +8736,43 @@ export type UpdateVolumeResponses = {
8262
8736
  200: Volume;
8263
8737
  };
8264
8738
  export type UpdateVolumeResponse = UpdateVolumeResponses[keyof UpdateVolumeResponses];
8739
+ export type GetVolumeByExternalIdData = {
8740
+ body?: never;
8741
+ path: {
8742
+ /**
8743
+ * Caller-owned external identifier for the volume
8744
+ */
8745
+ externalId: string;
8746
+ };
8747
+ query?: never;
8748
+ url: '/volumes/by-external-id/{externalId}';
8749
+ };
8750
+ export type GetVolumeByExternalIdErrors = {
8751
+ /**
8752
+ * Unauthorized - Invalid or missing authentication credentials
8753
+ */
8754
+ 401: _Error;
8755
+ /**
8756
+ * Forbidden - Insufficient permissions to view volumes
8757
+ */
8758
+ 403: _Error;
8759
+ /**
8760
+ * Not found - No active volume with this external ID
8761
+ */
8762
+ 404: _Error;
8763
+ /**
8764
+ * Internal server error
8765
+ */
8766
+ 500: _Error;
8767
+ };
8768
+ export type GetVolumeByExternalIdError = GetVolumeByExternalIdErrors[keyof GetVolumeByExternalIdErrors];
8769
+ export type GetVolumeByExternalIdResponses = {
8770
+ /**
8771
+ * successful operation
8772
+ */
8773
+ 200: Volume;
8774
+ };
8775
+ export type GetVolumeByExternalIdResponse = GetVolumeByExternalIdResponses[keyof GetVolumeByExternalIdResponses];
8265
8776
  export type ListVpcsData = {
8266
8777
  body?: never;
8267
8778
  path?: never;
@@ -8626,48 +9137,6 @@ export type UpdateWorkspaceResponses = {
8626
9137
  200: Workspace;
8627
9138
  };
8628
9139
  export type UpdateWorkspaceResponse = UpdateWorkspaceResponses[keyof UpdateWorkspaceResponses];
8629
- export type DeclineWorkspaceInvitationData = {
8630
- body?: never;
8631
- path: {
8632
- /**
8633
- * Name of the workspace
8634
- */
8635
- workspaceName: string;
8636
- };
8637
- query?: never;
8638
- url: '/workspaces/{workspaceName}/decline';
8639
- };
8640
- export type DeclineWorkspaceInvitationResponses = {
8641
- /**
8642
- * Invitation successfully declined
8643
- */
8644
- 200: PendingInvitation;
8645
- };
8646
- export type DeclineWorkspaceInvitationResponse = DeclineWorkspaceInvitationResponses[keyof DeclineWorkspaceInvitationResponses];
8647
- export type AcceptWorkspaceInvitationData = {
8648
- body?: never;
8649
- path: {
8650
- /**
8651
- * Name of the workspace
8652
- */
8653
- workspaceName: string;
8654
- };
8655
- query?: never;
8656
- url: '/workspaces/{workspaceName}/join';
8657
- };
8658
- export type AcceptWorkspaceInvitationErrors = {
8659
- /**
8660
- * Workspace or invitation not found
8661
- */
8662
- 404: unknown;
8663
- };
8664
- export type AcceptWorkspaceInvitationResponses = {
8665
- /**
8666
- * Invitation successfully accepted
8667
- */
8668
- 200: PendingInvitationAccept;
8669
- };
8670
- export type AcceptWorkspaceInvitationResponse = AcceptWorkspaceInvitationResponses[keyof AcceptWorkspaceInvitationResponses];
8671
9140
  export type LeaveWorkspaceData = {
8672
9141
  body?: never;
8673
9142
  path: {