@boatdev/sdk 1.10.0 → 1.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (129) hide show
  1. package/.openapi-generator/FILES +22 -0
  2. package/dist/apis/BoatApi.d.ts +92 -12
  3. package/dist/apis/BoatApi.js +196 -15
  4. package/dist/esm/apis/BoatApi.d.ts +92 -12
  5. package/dist/esm/apis/BoatApi.js +196 -15
  6. package/dist/esm/models/CreateSandboxRequest.d.ts +3 -3
  7. package/dist/esm/models/CredentialId.d.ts +3 -0
  8. package/dist/esm/models/CredentialId.js +3 -0
  9. package/dist/esm/models/CredentialProfile.d.ts +7 -0
  10. package/dist/esm/models/CredentialProfile.js +3 -0
  11. package/dist/esm/models/DeletionOperation.d.ts +1 -1
  12. package/dist/esm/models/ResourceAccess.d.ts +38 -0
  13. package/dist/esm/models/ResourceAccess.js +47 -0
  14. package/dist/esm/models/ResourceAccessUpdate.d.ts +38 -0
  15. package/dist/esm/models/ResourceAccessUpdate.js +45 -0
  16. package/dist/esm/models/Sandbox.d.ts +7 -0
  17. package/dist/esm/models/Sandbox.js +3 -0
  18. package/dist/esm/models/SandboxEnvironment.d.ts +7 -0
  19. package/dist/esm/models/SandboxEnvironment.js +3 -0
  20. package/dist/esm/models/SandboxLastReboot.d.ts +47 -0
  21. package/dist/esm/models/SandboxLastReboot.js +51 -0
  22. package/dist/esm/models/SandboxListResponse.d.ts +7 -0
  23. package/dist/esm/models/SandboxListResponse.js +3 -0
  24. package/dist/esm/models/SandboxListResponseAllOfDeletedCost.d.ts +44 -0
  25. package/dist/esm/models/SandboxListResponseAllOfDeletedCost.js +51 -0
  26. package/dist/esm/models/SavedSnapshot.d.ts +83 -0
  27. package/dist/esm/models/SavedSnapshot.js +71 -0
  28. package/dist/esm/models/SavedSnapshotAllowance.d.ts +81 -0
  29. package/dist/esm/models/SavedSnapshotAllowance.js +57 -0
  30. package/dist/esm/models/SavedSnapshotDeletedResponse.d.ts +64 -0
  31. package/dist/esm/models/SavedSnapshotDeletedResponse.js +67 -0
  32. package/dist/esm/models/SavedSnapshotInfoResponse.d.ts +52 -0
  33. package/dist/esm/models/SavedSnapshotInfoResponse.js +58 -0
  34. package/dist/esm/models/SavedSnapshotListResponse.d.ts +59 -0
  35. package/dist/esm/models/SavedSnapshotListResponse.js +61 -0
  36. package/dist/esm/models/SavedSnapshotSaveRequest.d.ts +38 -0
  37. package/dist/esm/models/SavedSnapshotSaveRequest.js +47 -0
  38. package/dist/esm/models/SavedSnapshotSavingResponse.d.ts +65 -0
  39. package/dist/esm/models/SavedSnapshotSavingResponse.js +68 -0
  40. package/dist/esm/models/SnapshotSummary.d.ts +1 -1
  41. package/dist/esm/models/UpdateCredentialProfileRequest.d.ts +7 -0
  42. package/dist/esm/models/UpdateCredentialProfileRequest.js +3 -0
  43. package/dist/esm/models/UpdateSandboxEnvironmentRequest.d.ts +7 -0
  44. package/dist/esm/models/UpdateSandboxEnvironmentRequest.js +3 -0
  45. package/dist/esm/models/index.d.ts +11 -0
  46. package/dist/esm/models/index.js +11 -0
  47. package/dist/models/CreateSandboxRequest.d.ts +3 -3
  48. package/dist/models/CredentialId.d.ts +3 -0
  49. package/dist/models/CredentialId.js +3 -0
  50. package/dist/models/CredentialProfile.d.ts +7 -0
  51. package/dist/models/CredentialProfile.js +3 -0
  52. package/dist/models/DeletionOperation.d.ts +1 -1
  53. package/dist/models/ResourceAccess.d.ts +38 -0
  54. package/dist/models/ResourceAccess.js +54 -0
  55. package/dist/models/ResourceAccessUpdate.d.ts +38 -0
  56. package/dist/models/ResourceAccessUpdate.js +52 -0
  57. package/dist/models/Sandbox.d.ts +7 -0
  58. package/dist/models/Sandbox.js +3 -0
  59. package/dist/models/SandboxEnvironment.d.ts +7 -0
  60. package/dist/models/SandboxEnvironment.js +3 -0
  61. package/dist/models/SandboxLastReboot.d.ts +47 -0
  62. package/dist/models/SandboxLastReboot.js +59 -0
  63. package/dist/models/SandboxListResponse.d.ts +7 -0
  64. package/dist/models/SandboxListResponse.js +3 -0
  65. package/dist/models/SandboxListResponseAllOfDeletedCost.d.ts +44 -0
  66. package/dist/models/SandboxListResponseAllOfDeletedCost.js +58 -0
  67. package/dist/models/SavedSnapshot.d.ts +83 -0
  68. package/dist/models/SavedSnapshot.js +79 -0
  69. package/dist/models/SavedSnapshotAllowance.d.ts +81 -0
  70. package/dist/models/SavedSnapshotAllowance.js +64 -0
  71. package/dist/models/SavedSnapshotDeletedResponse.d.ts +64 -0
  72. package/dist/models/SavedSnapshotDeletedResponse.js +75 -0
  73. package/dist/models/SavedSnapshotInfoResponse.d.ts +52 -0
  74. package/dist/models/SavedSnapshotInfoResponse.js +66 -0
  75. package/dist/models/SavedSnapshotListResponse.d.ts +59 -0
  76. package/dist/models/SavedSnapshotListResponse.js +69 -0
  77. package/dist/models/SavedSnapshotSaveRequest.d.ts +38 -0
  78. package/dist/models/SavedSnapshotSaveRequest.js +54 -0
  79. package/dist/models/SavedSnapshotSavingResponse.d.ts +65 -0
  80. package/dist/models/SavedSnapshotSavingResponse.js +76 -0
  81. package/dist/models/SnapshotSummary.d.ts +1 -1
  82. package/dist/models/UpdateCredentialProfileRequest.d.ts +7 -0
  83. package/dist/models/UpdateCredentialProfileRequest.js +3 -0
  84. package/dist/models/UpdateSandboxEnvironmentRequest.d.ts +7 -0
  85. package/dist/models/UpdateSandboxEnvironmentRequest.js +3 -0
  86. package/dist/models/index.d.ts +11 -0
  87. package/dist/models/index.js +11 -0
  88. package/docs/BoatApi.md +307 -15
  89. package/docs/CredentialProfile.md +2 -0
  90. package/docs/ResourceAccess.md +35 -0
  91. package/docs/ResourceAccessUpdate.md +35 -0
  92. package/docs/Sandbox.md +2 -0
  93. package/docs/SandboxEnvironment.md +2 -0
  94. package/docs/SandboxLastReboot.md +35 -0
  95. package/docs/SandboxListResponse.md +2 -0
  96. package/docs/SandboxListResponseAllOfDeletedCost.md +37 -0
  97. package/docs/SavedSnapshot.md +47 -0
  98. package/docs/SavedSnapshotAllowance.md +49 -0
  99. package/docs/SavedSnapshotDeletedResponse.md +38 -0
  100. package/docs/SavedSnapshotInfoResponse.md +36 -0
  101. package/docs/SavedSnapshotListResponse.md +38 -0
  102. package/docs/SavedSnapshotSaveRequest.md +34 -0
  103. package/docs/SavedSnapshotSavingResponse.md +38 -0
  104. package/docs/UpdateCredentialProfileRequest.md +2 -0
  105. package/docs/UpdateSandboxEnvironmentRequest.md +2 -0
  106. package/package.json +1 -1
  107. package/src/apis/BoatApi.ts +277 -15
  108. package/src/models/CreateSandboxRequest.ts +3 -3
  109. package/src/models/CredentialId.ts +3 -0
  110. package/src/models/CredentialProfile.ts +15 -0
  111. package/src/models/DeletionOperation.ts +1 -1
  112. package/src/models/ResourceAccess.ts +75 -0
  113. package/src/models/ResourceAccessUpdate.ts +74 -0
  114. package/src/models/Sandbox.ts +15 -0
  115. package/src/models/SandboxEnvironment.ts +15 -0
  116. package/src/models/SandboxLastReboot.ts +85 -0
  117. package/src/models/SandboxListResponse.ts +15 -0
  118. package/src/models/SandboxListResponseAllOfDeletedCost.ts +84 -0
  119. package/src/models/SavedSnapshot.ts +137 -0
  120. package/src/models/SavedSnapshotAllowance.ts +130 -0
  121. package/src/models/SavedSnapshotDeletedResponse.ts +111 -0
  122. package/src/models/SavedSnapshotInfoResponse.ts +102 -0
  123. package/src/models/SavedSnapshotListResponse.ts +117 -0
  124. package/src/models/SavedSnapshotSaveRequest.ts +75 -0
  125. package/src/models/SavedSnapshotSavingResponse.ts +119 -0
  126. package/src/models/SnapshotSummary.ts +1 -1
  127. package/src/models/UpdateCredentialProfileRequest.ts +16 -0
  128. package/src/models/UpdateSandboxEnvironmentRequest.ts +15 -0
  129. package/src/models/index.ts +11 -0
package/docs/BoatApi.md CHANGED
@@ -20,7 +20,7 @@ All URIs are relative to *https://boat.dev/api/v1*
20
20
  | [**createDownloadUrl**](BoatApi.md#createdownloadurl) | **POST** /sandboxes/{sandboxId}/files/download-url | Get a download URL for a sandbox file |
21
21
  | [**createEnvironment**](BoatApi.md#createenvironment) | **POST** /environments | Create a sandbox environment |
22
22
  | [**createScopedApiKey**](BoatApi.md#createscopedapikeyoperation) | **POST** /api-keys/scoped | Create a scoped API key |
23
- | [**createSnapshotShare**](BoatApi.md#createsnapshotshare) | **POST** /named-snapshots/{name}/shares | Share a named snapshot |
23
+ | [**createSnapshotShare**](BoatApi.md#createsnapshotshare) | **POST** /saved-snapshots/{name}/shares | Share a saved snapshot |
24
24
  | [**createUploadUrl**](BoatApi.md#createuploadurl) | **POST** /sandboxes/{sandboxId}/files/upload-url | Get an upload URL for a sandbox file |
25
25
  | [**createWebhook**](BoatApi.md#createwebhook) | **POST** /webhooks | Create webhook |
26
26
  | [**deleteCredentialAccount**](BoatApi.md#deletecredentialaccount) | **DELETE** /credential-profiles/{profile}/accounts/{credential}/{account} | Forget an account of a credential |
@@ -34,6 +34,7 @@ All URIs are relative to *https://boat.dev/api/v1*
34
34
  | [**deleteNamedSnapshot**](BoatApi.md#deletenamedsnapshot) | **DELETE** /named-snapshots/{name} | Remove a named snapshot |
35
35
  | [**deleteSandbox**](BoatApi.md#deletesandbox) | **DELETE** /sandboxes/{sandboxId} | Permanently delete sandbox data |
36
36
  | [**deleteSandboxSnapshots**](BoatApi.md#deletesandboxsnapshots) | **DELETE** /sandboxes/{sandboxId}/snapshots | Permanently delete all snapshots of a sandbox |
37
+ | [**deleteSavedSnapshot**](BoatApi.md#deletesavedsnapshot) | **DELETE** /saved-snapshots/{name} | Remove a saved snapshot |
37
38
  | [**deleteSnapshot**](BoatApi.md#deletesnapshot) | **DELETE** /snapshots/{snapshotId} | Permanently delete snapshot data |
38
39
  | [**deleteTelemetry**](BoatApi.md#deletetelemetry) | **DELETE** /telemetry | Remove OpenTelemetry export |
39
40
  | [**deleteWebhook**](BoatApi.md#deletewebhook) | **DELETE** /webhooks/{webhookId} | Delete webhook |
@@ -50,6 +51,7 @@ All URIs are relative to *https://boat.dev/api/v1*
50
51
  | [**getLatestSandboxSnapshot**](BoatApi.md#getlatestsandboxsnapshot) | **GET** /sandboxes/{sandboxId}/snapshots/latest | Get latest boat snapshot |
51
52
  | [**getNamedSnapshot**](BoatApi.md#getnamedsnapshot) | **GET** /named-snapshots/{name} | Get a named snapshot |
52
53
  | [**getSandboxAiUsage**](BoatApi.md#getsandboxaiusage) | **GET** /sandboxes/{sandboxId}/ai-usage | Get sandbox AI usage |
54
+ | [**getSavedSnapshot**](BoatApi.md#getsavedsnapshot) | **GET** /saved-snapshots/{name} | Get a saved snapshot |
53
55
  | [**getSnapshotDownload**](BoatApi.md#getsnapshotdownload) | **GET** /snapshots/{snapshotId}/download | Get snapshot download |
54
56
  | [**getSnapshotFile**](BoatApi.md#getsnapshotfile) | **GET** /snapshots/{snapshotId}/files | Download a file or folder from a snapshot |
55
57
  | [**getSnapshotTree**](BoatApi.md#getsnapshottree) | **GET** /snapshots/{snapshotId}/tree | Get snapshot file tree |
@@ -64,7 +66,8 @@ All URIs are relative to *https://boat.dev/api/v1*
64
66
  | [**listNamedSnapshots**](BoatApi.md#listnamedsnapshots) | **GET** /named-snapshots | List named snapshots |
65
67
  | [**listOrganizations**](BoatApi.md#listorganizations) | **GET** /orgs | List organizations |
66
68
  | [**listSandboxSnapshots**](BoatApi.md#listsandboxsnapshots) | **GET** /sandboxes/{sandboxId}/snapshots | List boat snapshots |
67
- | [**listSnapshotShares**](BoatApi.md#listsnapshotshares) | **GET** /named-snapshots/{name}/shares | List share codes of a named snapshot |
69
+ | [**listSavedSnapshots**](BoatApi.md#listsavedsnapshots) | **GET** /saved-snapshots | List saved snapshots |
70
+ | [**listSnapshotShares**](BoatApi.md#listsnapshotshares) | **GET** /saved-snapshots/{name}/shares | List share codes of a saved snapshot |
68
71
  | [**listSnapshots**](BoatApi.md#listsnapshots) | **GET** /snapshots | List snapshots |
69
72
  | [**listWebhooks**](BoatApi.md#listwebhooks) | **GET** /webhooks | List webhooks |
70
73
  | [**me**](BoatApi.md#me) | **GET** /me | Get current Boat user |
@@ -76,11 +79,12 @@ All URIs are relative to *https://boat.dev/api/v1*
76
79
  | [**repos**](BoatApi.md#repos) | **GET** /repos | List GitHub repositories available to Boat |
77
80
  | [**resume**](BoatApi.md#resumeoperation) | **POST** /sandboxes/{sandboxId}/resume | Resume sandbox |
78
81
  | [**revokeApiKey**](BoatApi.md#revokeapikey) | **DELETE** /api-keys/{apiKeyId} | Revoke an API key |
79
- | [**revokeSnapshotShare**](BoatApi.md#revokesnapshotshare) | **DELETE** /named-snapshots/{name}/shares/{shareId} | Revoke a share code |
82
+ | [**revokeSnapshotShare**](BoatApi.md#revokesnapshotshare) | **DELETE** /saved-snapshots/{name}/shares/{shareId} | Revoke a share code |
80
83
  | [**rotateApiKey**](BoatApi.md#rotateapikey) | **POST** /api-keys/{apiKeyId}/rotate | Rotate an API key |
81
84
  | [**rotateWebhookSigningSecret**](BoatApi.md#rotatewebhooksigningsecret) | **POST** /webhooks/{webhookId}/rotate | Rotate webhook signing secret |
82
85
  | [**sandboxes**](BoatApi.md#sandboxes) | **GET** /sandboxes | List sandboxes |
83
86
  | [**saveNamedSnapshot**](BoatApi.md#savenamedsnapshot) | **POST** /named-snapshots | Save a named snapshot |
87
+ | [**saveSavedSnapshot**](BoatApi.md#savesavedsnapshot) | **POST** /saved-snapshots | Save a saved snapshot |
84
88
  | [**secrets**](BoatApi.md#secrets) | **GET** /secrets | Get Boat secrets setup |
85
89
  | [**selectRepo**](BoatApi.md#selectrepo) | **POST** /repos | Select repository for sandboxes |
86
90
  | [**setActiveOrganization**](BoatApi.md#setactiveorganization) | **PATCH** /orgs/active | Set the active organization |
@@ -163,7 +167,7 @@ example().catch(console.error);
163
167
  | Name | Type | Description | Notes |
164
168
  |------------- | ------------- | ------------- | -------------|
165
169
  | **profile** | `string` | Profile id or name. | [Defaults to `undefined`] |
166
- | **credential** | `CredentialId` | | [Defaults to `undefined`] [Enum: anthropic-api-key, openai-api-key, openrouter-api-key, llmgateway-api-key, deepseek-api-key, moonshot-api-key, mistral-api-key, claude-subscription, chatgpt-subscription, kimi-subscription, mistral-vibe-subscription, claude-bedrock, codex-bedrock] |
170
+ | **credential** | `CredentialId` | | [Defaults to `undefined`] [Enum: anthropic-api-key, openai-api-key, openrouter-api-key, llmgateway-api-key, deepseek-api-key, moonshot-api-key, mistral-api-key, xai-api-key, opencode-api-key, claude-subscription, chatgpt-subscription, kimi-subscription, mistral-vibe-subscription, grok-subscription, claude-bedrock, codex-bedrock] |
167
171
  | **setCredentialKeyRequest** | [SetCredentialKeyRequest](SetCredentialKeyRequest.md) | | |
168
172
 
169
173
  ### Return type
@@ -1060,6 +1064,7 @@ example().catch(console.error);
1060
1064
  | **202** | Boat accepted for provisioning. | - |
1061
1065
  | **401** | Missing or invalid bearer token. | - |
1062
1066
  | **402** | Account cannot currently create or operate sandboxes. The error body may include a dashboard billing URL, but billing actions are not part of the v1 API. | - |
1067
+ | **403** | `environment_forbidden`: the organization limits this environment to other members. Ask an owner or admin to add you. Other `403` codes can also apply. | - |
1063
1068
  | **409** | Request conflicts with current account or sandbox state. | - |
1064
1069
  | **429** | Machine start or concurrent-sandbox limit reached. Create, fork and resume each count as one machine start against your plan\'s start limits (see the Billing guide; `rate_limited`, naming the window you hit). A sandbox that would exceed your plan\'s concurrent-sandbox cap is refused with `limit_reached`, or `member_limit_reached` when an organization owner has capped you below the plan. | - |
1065
1070
  | **503** | No capacity. `no_ready_machine`: a `failFast` create, fork or resume found no ready machine of that type; nothing was started, billed, or counted, and a resumed sandbox stays stopped. `out_of_capacity`: creates and forks are paused until the provisioning queue drains. | - |
@@ -1376,9 +1381,9 @@ example().catch(console.error);
1376
1381
 
1377
1382
  > NamedSnapshotShareCreatedResponse createSnapshotShare(name)
1378
1383
 
1379
- Share a named snapshot
1384
+ Share a saved snapshot
1380
1385
 
1381
- Make a secret code that lets any Boat account create a sandbox from this named snapshot (`boat snapshot share <name>` in the CLI). The response shows the code once; Boat stores only a hash. Re-saving the name changes what the code deploys. Removing the name removes its codes. Everything on the disk is shared, so do not keep secrets in files on it. Needs `snapshot.write`.
1386
+ Make a secret code that lets any Boat account create a sandbox from this saved snapshot (`boat snapshot share <name>` in the CLI). The response shows the code once; Boat stores only a hash. Re-saving the name changes what the code deploys. Removing the name removes its codes. Everything on the disk is shared, so do not keep secrets in files on it. Needs `snapshot.write`.
1382
1387
 
1383
1388
  ### Example
1384
1389
 
@@ -1649,7 +1654,7 @@ example().catch(console.error);
1649
1654
  | Name | Type | Description | Notes |
1650
1655
  |------------- | ------------- | ------------- | -------------|
1651
1656
  | **profile** | `string` | Profile id or name. | [Defaults to `undefined`] |
1652
- | **credential** | `CredentialId` | | [Defaults to `undefined`] [Enum: anthropic-api-key, openai-api-key, openrouter-api-key, llmgateway-api-key, deepseek-api-key, moonshot-api-key, mistral-api-key, claude-subscription, chatgpt-subscription, kimi-subscription, mistral-vibe-subscription, claude-bedrock, codex-bedrock] |
1657
+ | **credential** | `CredentialId` | | [Defaults to `undefined`] [Enum: anthropic-api-key, openai-api-key, openrouter-api-key, llmgateway-api-key, deepseek-api-key, moonshot-api-key, mistral-api-key, xai-api-key, opencode-api-key, claude-subscription, chatgpt-subscription, kimi-subscription, mistral-vibe-subscription, grok-subscription, claude-bedrock, codex-bedrock] |
1653
1658
  | **account** | `string` | The account id from the list. | [Defaults to `undefined`] |
1654
1659
 
1655
1660
  ### Return type
@@ -1880,7 +1885,7 @@ example().catch(console.error);
1880
1885
  | Name | Type | Description | Notes |
1881
1886
  |------------- | ------------- | ------------- | -------------|
1882
1887
  | **profile** | `string` | Profile id or name. | [Defaults to `undefined`] |
1883
- | **credential** | `CredentialId` | | [Defaults to `undefined`] [Enum: anthropic-api-key, openai-api-key, openrouter-api-key, llmgateway-api-key, deepseek-api-key, moonshot-api-key, mistral-api-key, claude-subscription, chatgpt-subscription, kimi-subscription, mistral-vibe-subscription, claude-bedrock, codex-bedrock] |
1888
+ | **credential** | `CredentialId` | | [Defaults to `undefined`] [Enum: anthropic-api-key, openai-api-key, openrouter-api-key, llmgateway-api-key, deepseek-api-key, moonshot-api-key, mistral-api-key, xai-api-key, opencode-api-key, claude-subscription, chatgpt-subscription, kimi-subscription, mistral-vibe-subscription, grok-subscription, claude-bedrock, codex-bedrock] |
1884
1889
 
1885
1890
  ### Return type
1886
1891
 
@@ -2302,7 +2307,7 @@ example().catch(console.error);
2302
2307
 
2303
2308
  Permanently delete sandbox data
2304
2309
 
2305
- Accept irreversible background deletion of the sandbox machine, snapshots, and content-bearing records. This is not archive: the sandbox cannot be resumed. Named snapshots and other shared artifacts remain independent. Poll the returned operation until `completed`.
2310
+ Accept irreversible background deletion of the sandbox machine, snapshots, and content-bearing records. This is not archive: the sandbox cannot be resumed. Saved snapshots and other shared artifacts remain independent. Poll the returned operation until `completed`.
2306
2311
 
2307
2312
  ### Example
2308
2313
 
@@ -2380,7 +2385,7 @@ example().catch(console.error);
2380
2385
 
2381
2386
  Permanently delete all snapshots of a sandbox
2382
2387
 
2383
- Accept irreversible deletion of every unpinned snapshot of this sandbox. The sandbox itself and its named snapshots stay. Snapshots disappear from lists, restores and forks immediately; their stored data is purged in the background. Set `X-Ascii-Confirm-Delete` to the sandbox id.
2388
+ Accept irreversible deletion of every unpinned snapshot of this sandbox. The sandbox itself and its saved snapshots stay. Snapshots disappear from lists, restores and forks immediately; their stored data is purged in the background. Set `X-Ascii-Confirm-Delete` to the sandbox id.
2384
2389
 
2385
2390
  ### Example
2386
2391
 
@@ -2452,6 +2457,80 @@ example().catch(console.error);
2452
2457
  [[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
2453
2458
 
2454
2459
 
2460
+ ## deleteSavedSnapshot
2461
+
2462
+ > SavedSnapshotDeletedResponse deleteSavedSnapshot(name)
2463
+
2464
+ Remove a saved snapshot
2465
+
2466
+ Remove a saved snapshot and release its storage (`boat snapshot rm <name>` in the CLI). Sandboxes already deployed from it are unaffected.
2467
+
2468
+ ### Example
2469
+
2470
+ ```ts
2471
+ import {
2472
+ Configuration,
2473
+ BoatApi,
2474
+ } from '@boatdev/sdk';
2475
+ import type { DeleteSavedSnapshotRequest } from '@boatdev/sdk';
2476
+
2477
+ async function example() {
2478
+ console.log("🚀 Testing @boatdev/sdk SDK...");
2479
+ const config = new Configuration({
2480
+ // Configure HTTP bearer authorization: BoatBearerAuth
2481
+ accessToken: "YOUR BEARER TOKEN",
2482
+ });
2483
+ const api = new BoatApi(config);
2484
+
2485
+ const body = {
2486
+ // string
2487
+ name: name_example,
2488
+ } satisfies DeleteSavedSnapshotRequest;
2489
+
2490
+ try {
2491
+ const data = await api.deleteSavedSnapshot(body);
2492
+ console.log(data);
2493
+ } catch (error) {
2494
+ console.error(error);
2495
+ }
2496
+ }
2497
+
2498
+ // Run the test
2499
+ example().catch(console.error);
2500
+ ```
2501
+
2502
+ ### Parameters
2503
+
2504
+
2505
+ | Name | Type | Description | Notes |
2506
+ |------------- | ------------- | ------------- | -------------|
2507
+ | **name** | `string` | | [Defaults to `undefined`] |
2508
+
2509
+ ### Return type
2510
+
2511
+ [**SavedSnapshotDeletedResponse**](SavedSnapshotDeletedResponse.md)
2512
+
2513
+ ### Authorization
2514
+
2515
+ [BoatBearerAuth](../README.md#BoatBearerAuth)
2516
+
2517
+ ### HTTP request headers
2518
+
2519
+ - **Content-Type**: Not defined
2520
+ - **Accept**: `application/json`
2521
+
2522
+
2523
+ ### HTTP response details
2524
+ | Status code | Description | Response headers |
2525
+ |-------------|-------------|------------------|
2526
+ | **200** | Removed. | - |
2527
+ | **401** | Missing or invalid bearer token. | - |
2528
+ | **404** | Resource not found. | - |
2529
+ | **409** | `save_in_progress`: a save under this name is still running. Wait for it to settle before removing it. | - |
2530
+
2531
+ [[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
2532
+
2533
+
2455
2534
  ## deleteSnapshot
2456
2535
 
2457
2536
  > DeletionOperationResponse deleteSnapshot(snapshotId, xAsciiConfirmDelete)
@@ -2988,6 +3067,7 @@ example().catch(console.error);
2988
3067
  | **202** | Fork started. The response `id` is the new forked sandbox id. | - |
2989
3068
  | **401** | Missing or invalid bearer token. | - |
2990
3069
  | **402** | Account cannot currently create or operate sandboxes. The error body may include a dashboard billing URL, but billing actions are not part of the v1 API. | - |
3070
+ | **403** | `environment_forbidden`: the organization limits this environment to other members. Ask an owner or admin to add you. Other `403` codes can also apply. | - |
2991
3071
  | **404** | Resource not found. | - |
2992
3072
  | **409** | Request conflicts with current account or sandbox state. | - |
2993
3073
  | **429** | Machine start or concurrent-sandbox limit reached. Create, fork and resume each count as one machine start against your plan\'s start limits (see the Billing guide; `rate_limited`, naming the window you hit). A sandbox that would exceed your plan\'s concurrent-sandbox cap is refused with `limit_reached`, or `member_limit_reached` when an organization owner has capped you below the plan. | - |
@@ -3657,6 +3737,77 @@ example().catch(console.error);
3657
3737
  [[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
3658
3738
 
3659
3739
 
3740
+ ## getSavedSnapshot
3741
+
3742
+ > SavedSnapshotInfoResponse getSavedSnapshot(name)
3743
+
3744
+ Get a saved snapshot
3745
+
3746
+ ### Example
3747
+
3748
+ ```ts
3749
+ import {
3750
+ Configuration,
3751
+ BoatApi,
3752
+ } from '@boatdev/sdk';
3753
+ import type { GetSavedSnapshotRequest } from '@boatdev/sdk';
3754
+
3755
+ async function example() {
3756
+ console.log("🚀 Testing @boatdev/sdk SDK...");
3757
+ const config = new Configuration({
3758
+ // Configure HTTP bearer authorization: BoatBearerAuth
3759
+ accessToken: "YOUR BEARER TOKEN",
3760
+ });
3761
+ const api = new BoatApi(config);
3762
+
3763
+ const body = {
3764
+ // string
3765
+ name: name_example,
3766
+ } satisfies GetSavedSnapshotRequest;
3767
+
3768
+ try {
3769
+ const data = await api.getSavedSnapshot(body);
3770
+ console.log(data);
3771
+ } catch (error) {
3772
+ console.error(error);
3773
+ }
3774
+ }
3775
+
3776
+ // Run the test
3777
+ example().catch(console.error);
3778
+ ```
3779
+
3780
+ ### Parameters
3781
+
3782
+
3783
+ | Name | Type | Description | Notes |
3784
+ |------------- | ------------- | ------------- | -------------|
3785
+ | **name** | `string` | | [Defaults to `undefined`] |
3786
+
3787
+ ### Return type
3788
+
3789
+ [**SavedSnapshotInfoResponse**](SavedSnapshotInfoResponse.md)
3790
+
3791
+ ### Authorization
3792
+
3793
+ [BoatBearerAuth](../README.md#BoatBearerAuth)
3794
+
3795
+ ### HTTP request headers
3796
+
3797
+ - **Content-Type**: Not defined
3798
+ - **Accept**: `application/json`
3799
+
3800
+
3801
+ ### HTTP response details
3802
+ | Status code | Description | Response headers |
3803
+ |-------------|-------------|------------------|
3804
+ | **200** | The saved snapshot. | - |
3805
+ | **401** | Missing or invalid bearer token. | - |
3806
+ | **404** | Resource not found. | - |
3807
+
3808
+ [[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
3809
+
3810
+
3660
3811
  ## getSnapshotDownload
3661
3812
 
3662
3813
  > SnapshotDownloadResponse getSnapshotDownload(snapshotId)
@@ -4377,7 +4528,7 @@ example().catch(console.error);
4377
4528
  | Name | Type | Description | Notes |
4378
4529
  |------------- | ------------- | ------------- | -------------|
4379
4530
  | **profile** | `string` | Profile id or name. | [Defaults to `undefined`] |
4380
- | **credential** | `CredentialId` | | [Defaults to `undefined`] [Enum: anthropic-api-key, openai-api-key, openrouter-api-key, llmgateway-api-key, deepseek-api-key, moonshot-api-key, mistral-api-key, claude-subscription, chatgpt-subscription, kimi-subscription, mistral-vibe-subscription, claude-bedrock, codex-bedrock] |
4531
+ | **credential** | `CredentialId` | | [Defaults to `undefined`] [Enum: anthropic-api-key, openai-api-key, openrouter-api-key, llmgateway-api-key, deepseek-api-key, moonshot-api-key, mistral-api-key, xai-api-key, opencode-api-key, claude-subscription, chatgpt-subscription, kimi-subscription, mistral-vibe-subscription, grok-subscription, claude-bedrock, codex-bedrock] |
4381
4532
 
4382
4533
  ### Return type
4383
4534
 
@@ -4680,13 +4831,77 @@ example().catch(console.error);
4680
4831
  [[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
4681
4832
 
4682
4833
 
4834
+ ## listSavedSnapshots
4835
+
4836
+ > SavedSnapshotListResponse listSavedSnapshots()
4837
+
4838
+ List saved snapshots
4839
+
4840
+ List your saved snapshots, newest first.
4841
+
4842
+ ### Example
4843
+
4844
+ ```ts
4845
+ import {
4846
+ Configuration,
4847
+ BoatApi,
4848
+ } from '@boatdev/sdk';
4849
+ import type { ListSavedSnapshotsRequest } from '@boatdev/sdk';
4850
+
4851
+ async function example() {
4852
+ console.log("🚀 Testing @boatdev/sdk SDK...");
4853
+ const config = new Configuration({
4854
+ // Configure HTTP bearer authorization: BoatBearerAuth
4855
+ accessToken: "YOUR BEARER TOKEN",
4856
+ });
4857
+ const api = new BoatApi(config);
4858
+
4859
+ try {
4860
+ const data = await api.listSavedSnapshots();
4861
+ console.log(data);
4862
+ } catch (error) {
4863
+ console.error(error);
4864
+ }
4865
+ }
4866
+
4867
+ // Run the test
4868
+ example().catch(console.error);
4869
+ ```
4870
+
4871
+ ### Parameters
4872
+
4873
+ This endpoint does not need any parameter.
4874
+
4875
+ ### Return type
4876
+
4877
+ [**SavedSnapshotListResponse**](SavedSnapshotListResponse.md)
4878
+
4879
+ ### Authorization
4880
+
4881
+ [BoatBearerAuth](../README.md#BoatBearerAuth)
4882
+
4883
+ ### HTTP request headers
4884
+
4885
+ - **Content-Type**: Not defined
4886
+ - **Accept**: `application/json`
4887
+
4888
+
4889
+ ### HTTP response details
4890
+ | Status code | Description | Response headers |
4891
+ |-------------|-------------|------------------|
4892
+ | **200** | Saved snapshots owned by the authenticated Boat user. | - |
4893
+ | **401** | Missing or invalid bearer token. | - |
4894
+
4895
+ [[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
4896
+
4897
+
4683
4898
  ## listSnapshotShares
4684
4899
 
4685
4900
  > NamedSnapshotShareListResponse listSnapshotShares(name)
4686
4901
 
4687
- List share codes of a named snapshot
4902
+ List share codes of a saved snapshot
4688
4903
 
4689
- List the share codes of a named snapshot, active and revoked (`boat snapshot shares <name>` in the CLI). The full codes are not returned. Needs `snapshot.read`.
4904
+ List the share codes of a saved snapshot, active and revoked (`boat snapshot shares <name>` in the CLI). The full codes are not returned. Needs `snapshot.read`.
4690
4905
 
4691
4906
  ### Example
4692
4907
 
@@ -5498,6 +5713,7 @@ example().catch(console.error);
5498
5713
  | **202** | Resume started. | - |
5499
5714
  | **401** | Missing or invalid bearer token. | - |
5500
5715
  | **402** | Account cannot currently create or operate sandboxes. The error body may include a dashboard billing URL, but billing actions are not part of the v1 API. | - |
5716
+ | **403** | `environment_forbidden`: the organization limits this environment to other members. Ask an owner or admin to add you. Other `403` codes can also apply. | - |
5501
5717
  | **404** | Resource not found. | - |
5502
5718
  | **409** | Request conflicts with current account or sandbox state. | - |
5503
5719
  | **429** | Machine start or concurrent-sandbox limit reached. Create, fork and resume each count as one machine start against your plan\'s start limits (see the Billing guide; `rate_limited`, naming the window you hit). A sandbox that would exceed your plan\'s concurrent-sandbox cap is refused with `limit_reached`, or `member_limit_reached` when an organization owner has capped you below the plan. | - |
@@ -5970,6 +6186,82 @@ example().catch(console.error);
5970
6186
  [[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
5971
6187
 
5972
6188
 
6189
+ ## saveSavedSnapshot
6190
+
6191
+ > SavedSnapshotSavingResponse saveSavedSnapshot(savedSnapshotSaveRequest)
6192
+
6193
+ Save a saved snapshot
6194
+
6195
+ Freeze a sandbox\'s current state under a name (`boat snapshot <id> <name>` in the CLI). Answers `202` immediately with the snapshot in `saving`; a running sandbox takes a fresh capture first, which can run minutes. Poll `GET /saved-snapshots/{name}` until the status settles at `ready` or `failed`. Reusing one of your existing names replaces that snapshot\'s artifact once the new save is ready.
6196
+
6197
+ ### Example
6198
+
6199
+ ```ts
6200
+ import {
6201
+ Configuration,
6202
+ BoatApi,
6203
+ } from '@boatdev/sdk';
6204
+ import type { SaveSavedSnapshotRequest } from '@boatdev/sdk';
6205
+
6206
+ async function example() {
6207
+ console.log("🚀 Testing @boatdev/sdk SDK...");
6208
+ const config = new Configuration({
6209
+ // Configure HTTP bearer authorization: BoatBearerAuth
6210
+ accessToken: "YOUR BEARER TOKEN",
6211
+ });
6212
+ const api = new BoatApi(config);
6213
+
6214
+ const body = {
6215
+ // SavedSnapshotSaveRequest
6216
+ savedSnapshotSaveRequest: ...,
6217
+ } satisfies SaveSavedSnapshotRequest;
6218
+
6219
+ try {
6220
+ const data = await api.saveSavedSnapshot(body);
6221
+ console.log(data);
6222
+ } catch (error) {
6223
+ console.error(error);
6224
+ }
6225
+ }
6226
+
6227
+ // Run the test
6228
+ example().catch(console.error);
6229
+ ```
6230
+
6231
+ ### Parameters
6232
+
6233
+
6234
+ | Name | Type | Description | Notes |
6235
+ |------------- | ------------- | ------------- | -------------|
6236
+ | **savedSnapshotSaveRequest** | [SavedSnapshotSaveRequest](SavedSnapshotSaveRequest.md) | | |
6237
+
6238
+ ### Return type
6239
+
6240
+ [**SavedSnapshotSavingResponse**](SavedSnapshotSavingResponse.md)
6241
+
6242
+ ### Authorization
6243
+
6244
+ [BoatBearerAuth](../README.md#BoatBearerAuth)
6245
+
6246
+ ### HTTP request headers
6247
+
6248
+ - **Content-Type**: `application/json`
6249
+ - **Accept**: `application/json`
6250
+
6251
+
6252
+ ### HTTP response details
6253
+ | Status code | Description | Response headers |
6254
+ |-------------|-------------|------------------|
6255
+ | **202** | Save accepted and running in the background. | - |
6256
+ | **400** | Invalid request body or parameters. | - |
6257
+ | **401** | Missing or invalid bearer token. | - |
6258
+ | **404** | Resource not found. | - |
6259
+ | **402** | `credit_required`: the wallet already keeps 10 or more saved snapshots and has no credit left. Each saved snapshot above the plan\'s included count costs $1.70 a month, charged daily. Add credit or remove one. | - |
6260
+ | **409** | `save_in_progress` when a save under this name is already running; wait for it to settle rather than retrying immediately. | - |
6261
+
6262
+ [[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
6263
+
6264
+
5973
6265
  ## secrets
5974
6266
 
5975
6267
  > SecretsResponse secrets()
@@ -6316,7 +6608,7 @@ example().catch(console.error);
6316
6608
  | Name | Type | Description | Notes |
6317
6609
  |------------- | ------------- | ------------- | -------------|
6318
6610
  | **profile** | `string` | Profile id or name. | [Defaults to `undefined`] |
6319
- | **credential** | `CredentialId` | | [Defaults to `undefined`] [Enum: anthropic-api-key, openai-api-key, openrouter-api-key, llmgateway-api-key, deepseek-api-key, moonshot-api-key, mistral-api-key, claude-subscription, chatgpt-subscription, kimi-subscription, mistral-vibe-subscription, claude-bedrock, codex-bedrock] |
6611
+ | **credential** | `CredentialId` | | [Defaults to `undefined`] [Enum: anthropic-api-key, openai-api-key, openrouter-api-key, llmgateway-api-key, deepseek-api-key, moonshot-api-key, mistral-api-key, xai-api-key, opencode-api-key, claude-subscription, chatgpt-subscription, kimi-subscription, mistral-vibe-subscription, grok-subscription, claude-bedrock, codex-bedrock] |
6320
6612
  | **setCredentialKeyRequest** | [SetCredentialKeyRequest](SetCredentialKeyRequest.md) | | |
6321
6613
 
6322
6614
  ### Return type
@@ -7101,7 +7393,7 @@ example().catch(console.error);
7101
7393
  | Name | Type | Description | Notes |
7102
7394
  |------------- | ------------- | ------------- | -------------|
7103
7395
  | **profile** | `string` | Profile id or name. | [Defaults to `undefined`] |
7104
- | **credential** | `CredentialId` | | [Defaults to `undefined`] [Enum: anthropic-api-key, openai-api-key, openrouter-api-key, llmgateway-api-key, deepseek-api-key, moonshot-api-key, mistral-api-key, claude-subscription, chatgpt-subscription, kimi-subscription, mistral-vibe-subscription, claude-bedrock, codex-bedrock] |
7396
+ | **credential** | `CredentialId` | | [Defaults to `undefined`] [Enum: anthropic-api-key, openai-api-key, openrouter-api-key, llmgateway-api-key, deepseek-api-key, moonshot-api-key, mistral-api-key, xai-api-key, opencode-api-key, claude-subscription, chatgpt-subscription, kimi-subscription, mistral-vibe-subscription, grok-subscription, claude-bedrock, codex-bedrock] |
7105
7397
  | **account** | `string` | The account id from the list. | [Defaults to `undefined`] |
7106
7398
 
7107
7399
  ### Return type
@@ -17,6 +17,7 @@ Name | Type
17
17
  `customApis` | Array<string>
18
18
  `createdAt` | Date
19
19
  `updatedAt` | Date
20
+ `access` | [ResourceAccess](ResourceAccess.md)
20
21
 
21
22
  ## Example
22
23
 
@@ -35,6 +36,7 @@ const example = {
35
36
  "customApis": null,
36
37
  "createdAt": null,
37
38
  "updatedAt": null,
39
+ "access": null,
38
40
  } satisfies CredentialProfile
39
41
 
40
42
  console.log(example)
@@ -0,0 +1,35 @@
1
+
2
+ # ResourceAccess
3
+
4
+ Which organization members can use this organization environment or profile. `restricted` false means every member. `restricted` true means owners, admins and `members` only. Others do not see it in lists. Personal environments and profiles always return `restricted` false.
5
+
6
+ ## Properties
7
+
8
+ Name | Type
9
+ ------------ | -------------
10
+ `restricted` | boolean
11
+ `members` | Array<string>
12
+
13
+ ## Example
14
+
15
+ ```typescript
16
+ import type { ResourceAccess } from '@boatdev/sdk'
17
+
18
+ // TODO: Update the object below with actual values
19
+ const example = {
20
+ "restricted": null,
21
+ "members": null,
22
+ } satisfies ResourceAccess
23
+
24
+ console.log(example)
25
+
26
+ // Convert the instance to a JSON string
27
+ const exampleJSON: string = JSON.stringify(example)
28
+ console.log(exampleJSON)
29
+
30
+ // Parse the JSON string back to an object
31
+ const exampleParsed = JSON.parse(exampleJSON) as ResourceAccess
32
+ console.log(exampleParsed)
33
+ ```
34
+
35
+ [[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
@@ -0,0 +1,35 @@
1
+
2
+ # ResourceAccessUpdate
3
+
4
+ Set who can use an organization environment (owner or admin) or profile (owner). A change does not touch running sandboxes. A bad list returns `400 invalid_access`.
5
+
6
+ ## Properties
7
+
8
+ Name | Type
9
+ ------------ | -------------
10
+ `restricted` | boolean
11
+ `members` | Array<string>
12
+
13
+ ## Example
14
+
15
+ ```typescript
16
+ import type { ResourceAccessUpdate } from '@boatdev/sdk'
17
+
18
+ // TODO: Update the object below with actual values
19
+ const example = {
20
+ "restricted": null,
21
+ "members": null,
22
+ } satisfies ResourceAccessUpdate
23
+
24
+ console.log(example)
25
+
26
+ // Convert the instance to a JSON string
27
+ const exampleJSON: string = JSON.stringify(example)
28
+ console.log(exampleJSON)
29
+
30
+ // Parse the JSON string back to an object
31
+ const exampleParsed = JSON.parse(exampleJSON) as ResourceAccessUpdate
32
+ console.log(exampleParsed)
33
+ ```
34
+
35
+ [[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
package/docs/Sandbox.md CHANGED
@@ -47,6 +47,7 @@ Name | Type
47
47
  `subdomain` | string
48
48
  `lastSnapshotAttemptAt` | Date
49
49
  `lastSnapshotStatus` | string
50
+ `lastReboot` | [SandboxLastReboot](SandboxLastReboot.md)
50
51
  `setupStatus` | string
51
52
  `setupError` | string
52
53
  `environment` | string
@@ -101,6 +102,7 @@ const example = {
101
102
  "subdomain": null,
102
103
  "lastSnapshotAttemptAt": null,
103
104
  "lastSnapshotStatus": null,
105
+ "lastReboot": null,
104
106
  "setupStatus": null,
105
107
  "setupError": null,
106
108
  "environment": null,
@@ -20,6 +20,7 @@ Name | Type
20
20
  `passAgentsCredentials` | boolean
21
21
  `credentialProfileId` | string
22
22
  `proxyAiCredentials` | boolean
23
+ `access` | [ResourceAccess](ResourceAccess.md)
23
24
  `envContents` | string
24
25
  `secretFiles` | [Array<SecretFile>](SecretFile.md)
25
26
  `selectedRepositories` | [Array<SelectedRepository>](SelectedRepository.md)
@@ -45,6 +46,7 @@ const example = {
45
46
  "passAgentsCredentials": null,
46
47
  "credentialProfileId": null,
47
48
  "proxyAiCredentials": null,
49
+ "access": null,
48
50
  "envContents": null,
49
51
  "secretFiles": null,
50
52
  "selectedRepositories": null,
@@ -0,0 +1,35 @@
1
+
2
+ # SandboxLastReboot
3
+
4
+ The last time the sandbox\'s kernel restarted on its machine, or null if it never did. Every process running at that time ended. `crash` means the system log ended with no shutdown, for example after a kernel panic.
5
+
6
+ ## Properties
7
+
8
+ Name | Type
9
+ ------------ | -------------
10
+ `at` | Date
11
+ `reason` | string
12
+
13
+ ## Example
14
+
15
+ ```typescript
16
+ import type { SandboxLastReboot } from '@boatdev/sdk'
17
+
18
+ // TODO: Update the object below with actual values
19
+ const example = {
20
+ "at": null,
21
+ "reason": null,
22
+ } satisfies SandboxLastReboot
23
+
24
+ console.log(example)
25
+
26
+ // Convert the instance to a JSON string
27
+ const exampleJSON: string = JSON.stringify(example)
28
+ console.log(exampleJSON)
29
+
30
+ // Parse the JSON string back to an object
31
+ const exampleParsed = JSON.parse(exampleJSON) as SandboxLastReboot
32
+ console.log(exampleParsed)
33
+ ```
34
+
35
+ [[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
@@ -10,6 +10,7 @@ Name | Type
10
10
  `type` | string
11
11
  `sandboxes` | [Array<Sandbox>](Sandbox.md)
12
12
  `pageInfo` | [PageInfo](PageInfo.md)
13
+ `deletedCost` | [SandboxListResponseAllOfDeletedCost](SandboxListResponseAllOfDeletedCost.md)
13
14
 
14
15
  ## Example
15
16
 
@@ -22,6 +23,7 @@ const example = {
22
23
  "type": null,
23
24
  "sandboxes": null,
24
25
  "pageInfo": null,
26
+ "deletedCost": null,
25
27
  } satisfies SandboxListResponse
26
28
 
27
29
  console.log(example)