@boatdev/sdk 1.10.0 → 1.12.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.
- package/.openapi-generator/FILES +64 -0
- package/dist/apis/BoatApi.d.ts +283 -26
- package/dist/apis/BoatApi.js +662 -29
- package/dist/esm/apis/BoatApi.d.ts +283 -26
- package/dist/esm/apis/BoatApi.js +662 -29
- package/dist/esm/models/CreateSandboxRequest.d.ts +38 -4
- package/dist/esm/models/CreateSandboxRequest.js +17 -0
- package/dist/esm/models/CreateSandboxRequestFilesInner.d.ts +52 -0
- package/dist/esm/models/CreateSandboxRequestFilesInner.js +56 -0
- package/dist/esm/models/CreateSandboxResponse.d.ts +7 -0
- package/dist/esm/models/CreateSandboxResponse.js +3 -0
- package/dist/esm/models/CreateSandboxResponseAllOfHostedPortsInner.d.ts +77 -0
- package/dist/esm/models/CreateSandboxResponseAllOfHostedPortsInner.js +64 -0
- package/dist/esm/models/CredentialId.d.ts +3 -0
- package/dist/esm/models/CredentialId.js +3 -0
- package/dist/esm/models/CredentialProfile.d.ts +7 -0
- package/dist/esm/models/CredentialProfile.js +3 -0
- package/dist/esm/models/DeletionOperation.d.ts +1 -1
- package/dist/esm/models/FileDeleteResponse.d.ts +57 -0
- package/dist/esm/models/FileDeleteResponse.js +59 -0
- package/dist/esm/models/FileEntry.d.ts +68 -0
- package/dist/esm/models/FileEntry.js +67 -0
- package/dist/esm/models/FileFindResponse.d.ts +70 -0
- package/dist/esm/models/FileFindResponse.js +66 -0
- package/dist/esm/models/FileFindResponseAllOfMatches.d.ts +44 -0
- package/dist/esm/models/FileFindResponseAllOfMatches.js +51 -0
- package/dist/esm/models/FileFolderRequest.d.ts +38 -0
- package/dist/esm/models/FileFolderRequest.js +45 -0
- package/dist/esm/models/FileInfoResponse.d.ts +95 -0
- package/dist/esm/models/FileInfoResponse.js +85 -0
- package/dist/esm/models/FileListResponse.d.ts +70 -0
- package/dist/esm/models/FileListResponse.js +68 -0
- package/dist/esm/models/FileMoveRequest.d.ts +44 -0
- package/dist/esm/models/FileMoveRequest.js +49 -0
- package/dist/esm/models/FileMoveResponse.d.ts +63 -0
- package/dist/esm/models/FileMoveResponse.js +63 -0
- package/dist/esm/models/FilePermissionsRequest.d.ts +38 -0
- package/dist/esm/models/FilePermissionsRequest.js +47 -0
- package/dist/esm/models/FileReplaceRequest.d.ts +44 -0
- package/dist/esm/models/FileReplaceRequest.js +51 -0
- package/dist/esm/models/FileReplaceResponse.d.ts +58 -0
- package/dist/esm/models/FileReplaceResponse.js +60 -0
- package/dist/esm/models/FileReplaceResponseAllOfResults.d.ts +50 -0
- package/dist/esm/models/FileReplaceResponseAllOfResults.js +51 -0
- package/dist/esm/models/FileSearchResponse.d.ts +69 -0
- package/dist/esm/models/FileSearchResponse.js +65 -0
- package/dist/esm/models/LimitsFields.d.ts +54 -16
- package/dist/esm/models/LimitsFields.js +16 -2
- package/dist/esm/models/LimitsFieldsOveragePrices.d.ts +51 -0
- package/dist/esm/models/LimitsFieldsOveragePrices.js +48 -0
- package/dist/esm/models/LimitsFieldsOveragePricesStartBracketsInner.d.ts +44 -0
- package/dist/esm/models/LimitsFieldsOveragePricesStartBracketsInner.js +45 -0
- package/dist/esm/models/LimitsFieldsPlanIncluded.d.ts +44 -0
- package/dist/esm/models/LimitsFieldsPlanIncluded.js +45 -0
- package/dist/esm/models/LimitsFieldsStartLimitsWithWallet.d.ts +44 -0
- package/dist/esm/models/LimitsFieldsStartLimitsWithWallet.js +45 -0
- package/dist/esm/models/LimitsFieldsWallet.d.ts +32 -0
- package/dist/esm/models/LimitsFieldsWallet.js +41 -0
- package/dist/esm/models/LimitsResponse.d.ts +54 -16
- package/dist/esm/models/LimitsResponse.js +16 -2
- package/dist/esm/models/NamedSnapshotAllowance.d.ts +9 -3
- package/dist/esm/models/NamedSnapshotAllowance.js +2 -0
- package/dist/esm/models/ResourceAccess.d.ts +38 -0
- package/dist/esm/models/ResourceAccess.js +47 -0
- package/dist/esm/models/ResourceAccessUpdate.d.ts +38 -0
- package/dist/esm/models/ResourceAccessUpdate.js +45 -0
- package/dist/esm/models/Sandbox.d.ts +7 -0
- package/dist/esm/models/Sandbox.js +3 -0
- package/dist/esm/models/SandboxEnvironment.d.ts +7 -0
- package/dist/esm/models/SandboxEnvironment.js +3 -0
- package/dist/esm/models/SandboxLastReboot.d.ts +47 -0
- package/dist/esm/models/SandboxLastReboot.js +51 -0
- package/dist/esm/models/SandboxListResponse.d.ts +7 -0
- package/dist/esm/models/SandboxListResponse.js +3 -0
- package/dist/esm/models/SandboxListResponseAllOfDeletedCost.d.ts +44 -0
- package/dist/esm/models/SandboxListResponseAllOfDeletedCost.js +51 -0
- package/dist/esm/models/SavedSnapshot.d.ts +83 -0
- package/dist/esm/models/SavedSnapshot.js +71 -0
- package/dist/esm/models/SavedSnapshotAllowance.d.ts +87 -0
- package/dist/esm/models/SavedSnapshotAllowance.js +59 -0
- package/dist/esm/models/SavedSnapshotDeletedResponse.d.ts +64 -0
- package/dist/esm/models/SavedSnapshotDeletedResponse.js +67 -0
- package/dist/esm/models/SavedSnapshotInfoResponse.d.ts +52 -0
- package/dist/esm/models/SavedSnapshotInfoResponse.js +58 -0
- package/dist/esm/models/SavedSnapshotListResponse.d.ts +59 -0
- package/dist/esm/models/SavedSnapshotListResponse.js +61 -0
- package/dist/esm/models/SavedSnapshotSaveRequest.d.ts +38 -0
- package/dist/esm/models/SavedSnapshotSaveRequest.js +47 -0
- package/dist/esm/models/SavedSnapshotSavingResponse.d.ts +65 -0
- package/dist/esm/models/SavedSnapshotSavingResponse.js +68 -0
- package/dist/esm/models/SnapshotSummary.d.ts +1 -1
- package/dist/esm/models/UpdateCredentialProfileRequest.d.ts +7 -0
- package/dist/esm/models/UpdateCredentialProfileRequest.js +3 -0
- package/dist/esm/models/UpdateSandboxEnvironmentRequest.d.ts +7 -0
- package/dist/esm/models/UpdateSandboxEnvironmentRequest.js +3 -0
- package/dist/esm/models/index.d.ts +32 -0
- package/dist/esm/models/index.js +32 -0
- package/dist/models/CreateSandboxRequest.d.ts +38 -4
- package/dist/models/CreateSandboxRequest.js +18 -1
- package/dist/models/CreateSandboxRequestFilesInner.d.ts +52 -0
- package/dist/models/CreateSandboxRequestFilesInner.js +64 -0
- package/dist/models/CreateSandboxResponse.d.ts +7 -0
- package/dist/models/CreateSandboxResponse.js +3 -0
- package/dist/models/CreateSandboxResponseAllOfHostedPortsInner.d.ts +77 -0
- package/dist/models/CreateSandboxResponseAllOfHostedPortsInner.js +72 -0
- package/dist/models/CredentialId.d.ts +3 -0
- package/dist/models/CredentialId.js +3 -0
- package/dist/models/CredentialProfile.d.ts +7 -0
- package/dist/models/CredentialProfile.js +3 -0
- package/dist/models/DeletionOperation.d.ts +1 -1
- package/dist/models/FileDeleteResponse.d.ts +57 -0
- package/dist/models/FileDeleteResponse.js +67 -0
- package/dist/models/FileEntry.d.ts +68 -0
- package/dist/models/FileEntry.js +74 -0
- package/dist/models/FileFindResponse.d.ts +70 -0
- package/dist/models/FileFindResponse.js +74 -0
- package/dist/models/FileFindResponseAllOfMatches.d.ts +44 -0
- package/dist/models/FileFindResponseAllOfMatches.js +58 -0
- package/dist/models/FileFolderRequest.d.ts +38 -0
- package/dist/models/FileFolderRequest.js +52 -0
- package/dist/models/FileInfoResponse.d.ts +95 -0
- package/dist/models/FileInfoResponse.js +93 -0
- package/dist/models/FileListResponse.d.ts +70 -0
- package/dist/models/FileListResponse.js +76 -0
- package/dist/models/FileMoveRequest.d.ts +44 -0
- package/dist/models/FileMoveRequest.js +56 -0
- package/dist/models/FileMoveResponse.d.ts +63 -0
- package/dist/models/FileMoveResponse.js +71 -0
- package/dist/models/FilePermissionsRequest.d.ts +38 -0
- package/dist/models/FilePermissionsRequest.js +54 -0
- package/dist/models/FileReplaceRequest.d.ts +44 -0
- package/dist/models/FileReplaceRequest.js +58 -0
- package/dist/models/FileReplaceResponse.d.ts +58 -0
- package/dist/models/FileReplaceResponse.js +68 -0
- package/dist/models/FileReplaceResponseAllOfResults.d.ts +50 -0
- package/dist/models/FileReplaceResponseAllOfResults.js +58 -0
- package/dist/models/FileSearchResponse.d.ts +69 -0
- package/dist/models/FileSearchResponse.js +73 -0
- package/dist/models/LimitsFields.d.ts +54 -16
- package/dist/models/LimitsFields.js +16 -2
- package/dist/models/LimitsFieldsOveragePrices.d.ts +51 -0
- package/dist/models/LimitsFieldsOveragePrices.js +55 -0
- package/dist/models/LimitsFieldsOveragePricesStartBracketsInner.d.ts +44 -0
- package/dist/models/LimitsFieldsOveragePricesStartBracketsInner.js +52 -0
- package/dist/models/LimitsFieldsPlanIncluded.d.ts +44 -0
- package/dist/models/LimitsFieldsPlanIncluded.js +52 -0
- package/dist/models/LimitsFieldsStartLimitsWithWallet.d.ts +44 -0
- package/dist/models/LimitsFieldsStartLimitsWithWallet.js +52 -0
- package/dist/models/LimitsFieldsWallet.d.ts +32 -0
- package/dist/models/LimitsFieldsWallet.js +48 -0
- package/dist/models/LimitsResponse.d.ts +54 -16
- package/dist/models/LimitsResponse.js +16 -2
- package/dist/models/NamedSnapshotAllowance.d.ts +9 -3
- package/dist/models/NamedSnapshotAllowance.js +2 -0
- package/dist/models/ResourceAccess.d.ts +38 -0
- package/dist/models/ResourceAccess.js +54 -0
- package/dist/models/ResourceAccessUpdate.d.ts +38 -0
- package/dist/models/ResourceAccessUpdate.js +52 -0
- package/dist/models/Sandbox.d.ts +7 -0
- package/dist/models/Sandbox.js +3 -0
- package/dist/models/SandboxEnvironment.d.ts +7 -0
- package/dist/models/SandboxEnvironment.js +3 -0
- package/dist/models/SandboxLastReboot.d.ts +47 -0
- package/dist/models/SandboxLastReboot.js +59 -0
- package/dist/models/SandboxListResponse.d.ts +7 -0
- package/dist/models/SandboxListResponse.js +3 -0
- package/dist/models/SandboxListResponseAllOfDeletedCost.d.ts +44 -0
- package/dist/models/SandboxListResponseAllOfDeletedCost.js +58 -0
- package/dist/models/SavedSnapshot.d.ts +83 -0
- package/dist/models/SavedSnapshot.js +79 -0
- package/dist/models/SavedSnapshotAllowance.d.ts +87 -0
- package/dist/models/SavedSnapshotAllowance.js +66 -0
- package/dist/models/SavedSnapshotDeletedResponse.d.ts +64 -0
- package/dist/models/SavedSnapshotDeletedResponse.js +75 -0
- package/dist/models/SavedSnapshotInfoResponse.d.ts +52 -0
- package/dist/models/SavedSnapshotInfoResponse.js +66 -0
- package/dist/models/SavedSnapshotListResponse.d.ts +59 -0
- package/dist/models/SavedSnapshotListResponse.js +69 -0
- package/dist/models/SavedSnapshotSaveRequest.d.ts +38 -0
- package/dist/models/SavedSnapshotSaveRequest.js +54 -0
- package/dist/models/SavedSnapshotSavingResponse.d.ts +65 -0
- package/dist/models/SavedSnapshotSavingResponse.js +76 -0
- package/dist/models/SnapshotSummary.d.ts +1 -1
- package/dist/models/UpdateCredentialProfileRequest.d.ts +7 -0
- package/dist/models/UpdateCredentialProfileRequest.js +3 -0
- package/dist/models/UpdateSandboxEnvironmentRequest.d.ts +7 -0
- package/dist/models/UpdateSandboxEnvironmentRequest.js +3 -0
- package/dist/models/index.d.ts +32 -0
- package/dist/models/index.js +32 -0
- package/docs/BoatApi.md +1049 -61
- package/docs/CreateSandboxRequest.md +8 -0
- package/docs/CreateSandboxRequestFilesInner.md +36 -0
- package/docs/CreateSandboxResponse.md +2 -0
- package/docs/CreateSandboxResponseAllOfHostedPortsInner.md +44 -0
- package/docs/CredentialProfile.md +2 -0
- package/docs/FileDeleteResponse.md +38 -0
- package/docs/FileEntry.md +44 -0
- package/docs/FileFindResponse.md +42 -0
- package/docs/FileFindResponseAllOfMatches.md +36 -0
- package/docs/FileFolderRequest.md +34 -0
- package/docs/FileInfoResponse.md +50 -0
- package/docs/FileListResponse.md +42 -0
- package/docs/FileMoveRequest.md +36 -0
- package/docs/FileMoveResponse.md +40 -0
- package/docs/FilePermissionsRequest.md +34 -0
- package/docs/FileReplaceRequest.md +36 -0
- package/docs/FileReplaceResponse.md +38 -0
- package/docs/FileReplaceResponseAllOfResults.md +38 -0
- package/docs/FileSearchResponse.md +42 -0
- package/docs/LimitsFields.md +12 -2
- package/docs/LimitsFieldsOveragePrices.md +39 -0
- package/docs/LimitsFieldsOveragePricesStartBracketsInner.md +36 -0
- package/docs/LimitsFieldsPlanIncluded.md +37 -0
- package/docs/LimitsFieldsStartLimitsWithWallet.md +37 -0
- package/docs/LimitsFieldsWallet.md +33 -0
- package/docs/LimitsResponse.md +12 -2
- package/docs/NamedSnapshotAllowance.md +3 -1
- package/docs/ResourceAccess.md +35 -0
- package/docs/ResourceAccessUpdate.md +35 -0
- package/docs/Sandbox.md +2 -0
- package/docs/SandboxEnvironment.md +2 -0
- package/docs/SandboxLastReboot.md +35 -0
- package/docs/SandboxListResponse.md +2 -0
- package/docs/SandboxListResponseAllOfDeletedCost.md +37 -0
- package/docs/SavedSnapshot.md +47 -0
- package/docs/SavedSnapshotAllowance.md +51 -0
- package/docs/SavedSnapshotDeletedResponse.md +38 -0
- package/docs/SavedSnapshotInfoResponse.md +36 -0
- package/docs/SavedSnapshotListResponse.md +38 -0
- package/docs/SavedSnapshotSaveRequest.md +34 -0
- package/docs/SavedSnapshotSavingResponse.md +38 -0
- package/docs/UpdateCredentialProfileRequest.md +2 -0
- package/docs/UpdateSandboxEnvironmentRequest.md +2 -0
- package/package.json +1 -1
- package/src/apis/BoatApi.ts +999 -30
- package/src/models/CreateSandboxRequest.ts +60 -4
- package/src/models/CreateSandboxRequestFilesInner.ts +94 -0
- package/src/models/CreateSandboxResponse.ts +15 -0
- package/src/models/CreateSandboxResponseAllOfHostedPortsInner.ts +128 -0
- package/src/models/CredentialId.ts +3 -0
- package/src/models/CredentialProfile.ts +15 -0
- package/src/models/DeletionOperation.ts +1 -1
- package/src/models/FileDeleteResponse.ts +102 -0
- package/src/models/FileEntry.ts +120 -0
- package/src/models/FileFindResponse.ts +127 -0
- package/src/models/FileFindResponseAllOfMatches.ts +84 -0
- package/src/models/FileFolderRequest.ts +74 -0
- package/src/models/FileInfoResponse.ts +158 -0
- package/src/models/FileListResponse.ts +128 -0
- package/src/models/FileMoveRequest.ts +83 -0
- package/src/models/FileMoveResponse.ts +111 -0
- package/src/models/FilePermissionsRequest.ts +75 -0
- package/src/models/FileReplaceRequest.ts +84 -0
- package/src/models/FileReplaceResponse.ts +110 -0
- package/src/models/FileReplaceResponseAllOfResults.ts +91 -0
- package/src/models/FileSearchResponse.ts +119 -0
- package/src/models/LimitsFields.ts +90 -16
- package/src/models/LimitsFieldsOveragePrices.ts +97 -0
- package/src/models/LimitsFieldsOveragePricesStartBracketsInner.ts +81 -0
- package/src/models/LimitsFieldsPlanIncluded.ts +81 -0
- package/src/models/LimitsFieldsStartLimitsWithWallet.ts +81 -0
- package/src/models/LimitsFieldsWallet.ts +65 -0
- package/src/models/LimitsResponse.ts +90 -16
- package/src/models/NamedSnapshotAllowance.ts +11 -3
- package/src/models/ResourceAccess.ts +75 -0
- package/src/models/ResourceAccessUpdate.ts +74 -0
- package/src/models/Sandbox.ts +15 -0
- package/src/models/SandboxEnvironment.ts +15 -0
- package/src/models/SandboxLastReboot.ts +85 -0
- package/src/models/SandboxListResponse.ts +15 -0
- package/src/models/SandboxListResponseAllOfDeletedCost.ts +84 -0
- package/src/models/SavedSnapshot.ts +137 -0
- package/src/models/SavedSnapshotAllowance.ts +138 -0
- package/src/models/SavedSnapshotDeletedResponse.ts +111 -0
- package/src/models/SavedSnapshotInfoResponse.ts +102 -0
- package/src/models/SavedSnapshotListResponse.ts +117 -0
- package/src/models/SavedSnapshotSaveRequest.ts +75 -0
- package/src/models/SavedSnapshotSavingResponse.ts +119 -0
- package/src/models/SnapshotSummary.ts +1 -1
- package/src/models/UpdateCredentialProfileRequest.ts +16 -0
- package/src/models/UpdateSandboxEnvironmentRequest.ts +15 -0
- package/src/models/index.ts +32 -0
package/docs/BoatApi.md
CHANGED
|
@@ -19,8 +19,9 @@ All URIs are relative to *https://boat.dev/api/v1*
|
|
|
19
19
|
| [**createCredentialProfile**](BoatApi.md#createcredentialprofileoperation) | **POST** /credential-profiles | Create a credential profile |
|
|
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
|
+
| [**createFolder**](BoatApi.md#createfolder) | **POST** /sandboxes/{sandboxId}/files/folder | Create a directory in a sandbox |
|
|
22
23
|
| [**createScopedApiKey**](BoatApi.md#createscopedapikeyoperation) | **POST** /api-keys/scoped | Create a scoped API key |
|
|
23
|
-
| [**createSnapshotShare**](BoatApi.md#createsnapshotshare) | **POST** /
|
|
24
|
+
| [**createSnapshotShare**](BoatApi.md#createsnapshotshare) | **POST** /saved-snapshots/{name}/shares | Share a saved snapshot |
|
|
24
25
|
| [**createUploadUrl**](BoatApi.md#createuploadurl) | **POST** /sandboxes/{sandboxId}/files/upload-url | Get an upload URL for a sandbox file |
|
|
25
26
|
| [**createWebhook**](BoatApi.md#createwebhook) | **POST** /webhooks | Create webhook |
|
|
26
27
|
| [**deleteCredentialAccount**](BoatApi.md#deletecredentialaccount) | **DELETE** /credential-profiles/{profile}/accounts/{credential}/{account} | Forget an account of a credential |
|
|
@@ -31,15 +32,18 @@ All URIs are relative to *https://boat.dev/api/v1*
|
|
|
31
32
|
| [**deleteEnvironmentRepo**](BoatApi.md#deleteenvironmentrepo) | **DELETE** /environments/{environmentId}/repos/{repositoryId} | Remove a repository from an environment |
|
|
32
33
|
| [**deleteEnvironmentSecretFile**](BoatApi.md#deleteenvironmentsecretfile) | **DELETE** /environments/{environmentId}/secret-files | Remove one secret file |
|
|
33
34
|
| [**deleteEnvironmentVar**](BoatApi.md#deleteenvironmentvar) | **DELETE** /environments/{environmentId}/vars/{key} | Remove one environment variable |
|
|
35
|
+
| [**deleteFile**](BoatApi.md#deletefile) | **DELETE** /sandboxes/{sandboxId}/files | Delete a file or directory in a sandbox |
|
|
34
36
|
| [**deleteNamedSnapshot**](BoatApi.md#deletenamedsnapshot) | **DELETE** /named-snapshots/{name} | Remove a named snapshot |
|
|
35
37
|
| [**deleteSandbox**](BoatApi.md#deletesandbox) | **DELETE** /sandboxes/{sandboxId} | Permanently delete sandbox data |
|
|
36
38
|
| [**deleteSandboxSnapshots**](BoatApi.md#deletesandboxsnapshots) | **DELETE** /sandboxes/{sandboxId}/snapshots | Permanently delete all snapshots of a sandbox |
|
|
39
|
+
| [**deleteSavedSnapshot**](BoatApi.md#deletesavedsnapshot) | **DELETE** /saved-snapshots/{name} | Remove a saved snapshot |
|
|
37
40
|
| [**deleteSnapshot**](BoatApi.md#deletesnapshot) | **DELETE** /snapshots/{snapshotId} | Permanently delete snapshot data |
|
|
38
41
|
| [**deleteTelemetry**](BoatApi.md#deletetelemetry) | **DELETE** /telemetry | Remove OpenTelemetry export |
|
|
39
42
|
| [**deleteWebhook**](BoatApi.md#deletewebhook) | **DELETE** /webhooks/{webhookId} | Delete webhook |
|
|
40
43
|
| [**desktop**](BoatApi.md#desktopoperation) | **POST** /sandboxes/{sandboxId}/desktop | Get desktop streaming URL |
|
|
41
44
|
| [**environments**](BoatApi.md#environments) | **GET** /environments | List Sandbox environments |
|
|
42
45
|
| [**events**](BoatApi.md#events) | **GET** /sandboxes/{sandboxId}/events | List boat events |
|
|
46
|
+
| [**findInFiles**](BoatApi.md#findinfiles) | **GET** /sandboxes/{sandboxId}/files/find | Find text in sandbox files |
|
|
43
47
|
| [**fork**](BoatApi.md#forkoperation) | **POST** /sandboxes/{sandboxId}/fork | Fork sandbox |
|
|
44
48
|
| [**get**](BoatApi.md#get) | **GET** /sandboxes/{sandboxId} | Get sandbox |
|
|
45
49
|
| [**getAiProxy**](BoatApi.md#getaiproxy) | **GET** /ai-proxy | Get AI credentials proxy |
|
|
@@ -47,9 +51,11 @@ All URIs are relative to *https://boat.dev/api/v1*
|
|
|
47
51
|
| [**getCommand**](BoatApi.md#getcommand) | **GET** /sandboxes/{sandboxId}/command-history/{commandId} | Get one command from the history |
|
|
48
52
|
| [**getDataRetention**](BoatApi.md#getdataretention) | **GET** /account/data-retention | Get account data-retention policy |
|
|
49
53
|
| [**getDeletionOperation**](BoatApi.md#getdeletionoperation) | **GET** /deletion-operations/{operationId} | Get deletion operation |
|
|
54
|
+
| [**getFileInfo**](BoatApi.md#getfileinfo) | **GET** /sandboxes/{sandboxId}/files/info | Get file or directory details in a sandbox |
|
|
50
55
|
| [**getLatestSandboxSnapshot**](BoatApi.md#getlatestsandboxsnapshot) | **GET** /sandboxes/{sandboxId}/snapshots/latest | Get latest boat snapshot |
|
|
51
56
|
| [**getNamedSnapshot**](BoatApi.md#getnamedsnapshot) | **GET** /named-snapshots/{name} | Get a named snapshot |
|
|
52
57
|
| [**getSandboxAiUsage**](BoatApi.md#getsandboxaiusage) | **GET** /sandboxes/{sandboxId}/ai-usage | Get sandbox AI usage |
|
|
58
|
+
| [**getSavedSnapshot**](BoatApi.md#getsavedsnapshot) | **GET** /saved-snapshots/{name} | Get a saved snapshot |
|
|
53
59
|
| [**getSnapshotDownload**](BoatApi.md#getsnapshotdownload) | **GET** /snapshots/{snapshotId}/download | Get snapshot download |
|
|
54
60
|
| [**getSnapshotFile**](BoatApi.md#getsnapshotfile) | **GET** /snapshots/{snapshotId}/files | Download a file or folder from a snapshot |
|
|
55
61
|
| [**getSnapshotTree**](BoatApi.md#getsnapshottree) | **GET** /snapshots/{snapshotId}/tree | Get snapshot file tree |
|
|
@@ -61,26 +67,32 @@ All URIs are relative to *https://boat.dev/api/v1*
|
|
|
61
67
|
| [**limits**](BoatApi.md#limits) | **GET** /limits | Get Boat limits |
|
|
62
68
|
| [**listCredentialAccounts**](BoatApi.md#listcredentialaccounts) | **GET** /credential-profiles/{profile}/accounts/{credential} | List the accounts of a credential |
|
|
63
69
|
| [**listCredentialProfiles**](BoatApi.md#listcredentialprofiles) | **GET** /credential-profiles | List credential profiles |
|
|
70
|
+
| [**listFiles**](BoatApi.md#listfiles) | **GET** /sandboxes/{sandboxId}/files/list | List a directory in a sandbox |
|
|
64
71
|
| [**listNamedSnapshots**](BoatApi.md#listnamedsnapshots) | **GET** /named-snapshots | List named snapshots |
|
|
65
72
|
| [**listOrganizations**](BoatApi.md#listorganizations) | **GET** /orgs | List organizations |
|
|
66
73
|
| [**listSandboxSnapshots**](BoatApi.md#listsandboxsnapshots) | **GET** /sandboxes/{sandboxId}/snapshots | List boat snapshots |
|
|
67
|
-
| [**
|
|
74
|
+
| [**listSavedSnapshots**](BoatApi.md#listsavedsnapshots) | **GET** /saved-snapshots | List saved snapshots |
|
|
75
|
+
| [**listSnapshotShares**](BoatApi.md#listsnapshotshares) | **GET** /saved-snapshots/{name}/shares | List share codes of a saved snapshot |
|
|
68
76
|
| [**listSnapshots**](BoatApi.md#listsnapshots) | **GET** /snapshots | List snapshots |
|
|
69
77
|
| [**listWebhooks**](BoatApi.md#listwebhooks) | **GET** /webhooks | List webhooks |
|
|
70
78
|
| [**me**](BoatApi.md#me) | **GET** /me | Get current Boat user |
|
|
79
|
+
| [**moveFile**](BoatApi.md#movefile) | **POST** /sandboxes/{sandboxId}/files/move | Move or rename a file or directory in a sandbox |
|
|
71
80
|
| [**processes**](BoatApi.md#processes) | **GET** /sandboxes/{sandboxId}/processes | List the processes in a sandbox |
|
|
72
81
|
| [**prompt**](BoatApi.md#promptoperation) | **POST** /sandboxes/{sandboxId}/prompt | Prompt Sandbox |
|
|
73
82
|
| [**promptRunStatus**](BoatApi.md#promptrunstatus) | **GET** /sandboxes/{sandboxId}/prompts/{promptId} | Get prompt run status |
|
|
74
83
|
| [**readFile**](BoatApi.md#readfile) | **GET** /sandboxes/{sandboxId}/files | Read a file from a sandbox |
|
|
75
84
|
| [**recover**](BoatApi.md#recover) | **POST** /sandboxes/{sandboxId}/recover | Recover a sandbox that stopped responding |
|
|
85
|
+
| [**replaceInFiles**](BoatApi.md#replaceinfiles) | **POST** /sandboxes/{sandboxId}/files/replace | Replace text in sandbox files |
|
|
76
86
|
| [**repos**](BoatApi.md#repos) | **GET** /repos | List GitHub repositories available to Boat |
|
|
77
87
|
| [**resume**](BoatApi.md#resumeoperation) | **POST** /sandboxes/{sandboxId}/resume | Resume sandbox |
|
|
78
88
|
| [**revokeApiKey**](BoatApi.md#revokeapikey) | **DELETE** /api-keys/{apiKeyId} | Revoke an API key |
|
|
79
|
-
| [**revokeSnapshotShare**](BoatApi.md#revokesnapshotshare) | **DELETE** /
|
|
89
|
+
| [**revokeSnapshotShare**](BoatApi.md#revokesnapshotshare) | **DELETE** /saved-snapshots/{name}/shares/{shareId} | Revoke a share code |
|
|
80
90
|
| [**rotateApiKey**](BoatApi.md#rotateapikey) | **POST** /api-keys/{apiKeyId}/rotate | Rotate an API key |
|
|
81
91
|
| [**rotateWebhookSigningSecret**](BoatApi.md#rotatewebhooksigningsecret) | **POST** /webhooks/{webhookId}/rotate | Rotate webhook signing secret |
|
|
82
92
|
| [**sandboxes**](BoatApi.md#sandboxes) | **GET** /sandboxes | List sandboxes |
|
|
83
93
|
| [**saveNamedSnapshot**](BoatApi.md#savenamedsnapshot) | **POST** /named-snapshots | Save a named snapshot |
|
|
94
|
+
| [**saveSavedSnapshot**](BoatApi.md#savesavedsnapshot) | **POST** /saved-snapshots | Save a saved snapshot |
|
|
95
|
+
| [**searchFiles**](BoatApi.md#searchfiles) | **GET** /sandboxes/{sandboxId}/files/search | Search files by name in a sandbox |
|
|
84
96
|
| [**secrets**](BoatApi.md#secrets) | **GET** /secrets | Get Boat secrets setup |
|
|
85
97
|
| [**selectRepo**](BoatApi.md#selectrepo) | **POST** /repos | Select repository for sandboxes |
|
|
86
98
|
| [**setActiveOrganization**](BoatApi.md#setactiveorganization) | **PATCH** /orgs/active | Set the active organization |
|
|
@@ -88,6 +100,7 @@ All URIs are relative to *https://boat.dev/api/v1*
|
|
|
88
100
|
| [**setCredentialProfileKey**](BoatApi.md#setcredentialprofilekey) | **PUT** /credential-profiles/{profile}/keys/{credential} | Set a credential profile API key |
|
|
89
101
|
| [**setEnvironmentSecretFile**](BoatApi.md#setenvironmentsecretfileoperation) | **PUT** /environments/{environmentId}/secret-files | Write one secret file |
|
|
90
102
|
| [**setEnvironmentVar**](BoatApi.md#setenvironmentvaroperation) | **PUT** /environments/{environmentId}/vars/{key} | Set one environment variable |
|
|
103
|
+
| [**setFilePermissions**](BoatApi.md#setfilepermissions) | **POST** /sandboxes/{sandboxId}/files/permissions | Set file permissions in a sandbox |
|
|
91
104
|
| [**setSandboxAiAccess**](BoatApi.md#setsandboxaiaccessoperation) | **PUT** /sandboxes/{sandboxId}/ai-access | Block or unblock sandbox AI access |
|
|
92
105
|
| [**setTelemetry**](BoatApi.md#settelemetry) | **PUT** /telemetry | Set OpenTelemetry export |
|
|
93
106
|
| [**share**](BoatApi.md#share) | **POST** /sandboxes/{sandboxId}/share | Share sandbox with the organization |
|
|
@@ -163,7 +176,7 @@ example().catch(console.error);
|
|
|
163
176
|
| Name | Type | Description | Notes |
|
|
164
177
|
|------------- | ------------- | ------------- | -------------|
|
|
165
178
|
| **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] |
|
|
179
|
+
| **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
180
|
| **setCredentialKeyRequest** | [SetCredentialKeyRequest](SetCredentialKeyRequest.md) | | |
|
|
168
181
|
|
|
169
182
|
### Return type
|
|
@@ -1060,8 +1073,9 @@ example().catch(console.error);
|
|
|
1060
1073
|
| **202** | Boat accepted for provisioning. | - |
|
|
1061
1074
|
| **401** | Missing or invalid bearer token. | - |
|
|
1062
1075
|
| **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. | - |
|
|
1076
|
+
| **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
1077
|
| **409** | Request conflicts with current account or sandbox state. | - |
|
|
1064
|
-
| **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
|
|
1078
|
+
| **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 and the `limit` that applied). With money in the wallet after the first payment, starts above a limit are paid, up to `startLimitsWithWallet`; the body carries `startLimitsWithWallet`, null when paid starts are not available. 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
1079
|
| **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. | - |
|
|
1066
1080
|
|
|
1067
1081
|
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
@@ -1297,13 +1311,88 @@ example().catch(console.error);
|
|
|
1297
1311
|
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
1298
1312
|
|
|
1299
1313
|
|
|
1314
|
+
## createFolder
|
|
1315
|
+
|
|
1316
|
+
> FileInfoResponse createFolder(sandboxId, fileFolderRequest)
|
|
1317
|
+
|
|
1318
|
+
Create a directory in a sandbox
|
|
1319
|
+
|
|
1320
|
+
Missing parent directories are created. An existing directory is not an error. Needs `file.write`.
|
|
1321
|
+
|
|
1322
|
+
### Example
|
|
1323
|
+
|
|
1324
|
+
```ts
|
|
1325
|
+
import {
|
|
1326
|
+
Configuration,
|
|
1327
|
+
BoatApi,
|
|
1328
|
+
} from '@boatdev/sdk';
|
|
1329
|
+
import type { CreateFolderRequest } from '@boatdev/sdk';
|
|
1330
|
+
|
|
1331
|
+
async function example() {
|
|
1332
|
+
console.log("🚀 Testing @boatdev/sdk SDK...");
|
|
1333
|
+
const config = new Configuration({
|
|
1334
|
+
// Configure HTTP bearer authorization: BoatBearerAuth
|
|
1335
|
+
accessToken: "YOUR BEARER TOKEN",
|
|
1336
|
+
});
|
|
1337
|
+
const api = new BoatApi(config);
|
|
1338
|
+
|
|
1339
|
+
const body = {
|
|
1340
|
+
// string | Public Sandbox id returned by create/list/get sandbox calls.
|
|
1341
|
+
sandboxId: sandboxId_example,
|
|
1342
|
+
// FileFolderRequest
|
|
1343
|
+
fileFolderRequest: ...,
|
|
1344
|
+
} satisfies CreateFolderRequest;
|
|
1345
|
+
|
|
1346
|
+
try {
|
|
1347
|
+
const data = await api.createFolder(body);
|
|
1348
|
+
console.log(data);
|
|
1349
|
+
} catch (error) {
|
|
1350
|
+
console.error(error);
|
|
1351
|
+
}
|
|
1352
|
+
}
|
|
1353
|
+
|
|
1354
|
+
// Run the test
|
|
1355
|
+
example().catch(console.error);
|
|
1356
|
+
```
|
|
1357
|
+
|
|
1358
|
+
### Parameters
|
|
1359
|
+
|
|
1360
|
+
|
|
1361
|
+
| Name | Type | Description | Notes |
|
|
1362
|
+
|------------- | ------------- | ------------- | -------------|
|
|
1363
|
+
| **sandboxId** | `string` | Public Sandbox id returned by create/list/get sandbox calls. | [Defaults to `undefined`] |
|
|
1364
|
+
| **fileFolderRequest** | [FileFolderRequest](FileFolderRequest.md) | | |
|
|
1365
|
+
|
|
1366
|
+
### Return type
|
|
1367
|
+
|
|
1368
|
+
[**FileInfoResponse**](FileInfoResponse.md)
|
|
1369
|
+
|
|
1370
|
+
### Authorization
|
|
1371
|
+
|
|
1372
|
+
[BoatBearerAuth](../README.md#BoatBearerAuth)
|
|
1373
|
+
|
|
1374
|
+
### HTTP request headers
|
|
1375
|
+
|
|
1376
|
+
- **Content-Type**: `application/json`
|
|
1377
|
+
- **Accept**: `application/json`
|
|
1378
|
+
|
|
1379
|
+
|
|
1380
|
+
### HTTP response details
|
|
1381
|
+
| Status code | Description | Response headers |
|
|
1382
|
+
|-------------|-------------|------------------|
|
|
1383
|
+
| **200** | Directory created. | - |
|
|
1384
|
+
| **400** | Invalid request body or parameters. | - |
|
|
1385
|
+
|
|
1386
|
+
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
1387
|
+
|
|
1388
|
+
|
|
1300
1389
|
## createScopedApiKey
|
|
1301
1390
|
|
|
1302
1391
|
> ApiKeySecretResponse createScopedApiKey(createScopedApiKeyRequest)
|
|
1303
1392
|
|
|
1304
1393
|
Create a scoped API key
|
|
1305
1394
|
|
|
1306
|
-
Creates a scoped, expiring API key. Requires a dashboard/CLI session or an admin-scoped token. The secret is returned once. This dedicated path returns a typed 503 until scoped credential creation is activated.
|
|
1395
|
+
Creates a scoped, expiring API key. Requires a dashboard/CLI session or an admin-scoped token. The secret is returned once. An unknown field is a 400, so a misspelled scope never creates a full-access key. environmentIds takes your own environments and the org environments you can use. This dedicated path returns a typed 503 until scoped credential creation is activated.
|
|
1307
1396
|
|
|
1308
1397
|
### Example
|
|
1309
1398
|
|
|
@@ -1376,9 +1465,9 @@ example().catch(console.error);
|
|
|
1376
1465
|
|
|
1377
1466
|
> NamedSnapshotShareCreatedResponse createSnapshotShare(name)
|
|
1378
1467
|
|
|
1379
|
-
Share a
|
|
1468
|
+
Share a saved snapshot
|
|
1380
1469
|
|
|
1381
|
-
Make a secret code that lets any Boat account create a sandbox from this
|
|
1470
|
+
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
1471
|
|
|
1383
1472
|
### Example
|
|
1384
1473
|
|
|
@@ -1649,7 +1738,7 @@ example().catch(console.error);
|
|
|
1649
1738
|
| Name | Type | Description | Notes |
|
|
1650
1739
|
|------------- | ------------- | ------------- | -------------|
|
|
1651
1740
|
| **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] |
|
|
1741
|
+
| **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
1742
|
| **account** | `string` | The account id from the list. | [Defaults to `undefined`] |
|
|
1654
1743
|
|
|
1655
1744
|
### Return type
|
|
@@ -1880,7 +1969,7 @@ example().catch(console.error);
|
|
|
1880
1969
|
| Name | Type | Description | Notes |
|
|
1881
1970
|
|------------- | ------------- | ------------- | -------------|
|
|
1882
1971
|
| **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] |
|
|
1972
|
+
| **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
1973
|
|
|
1885
1974
|
### Return type
|
|
1886
1975
|
|
|
@@ -2222,6 +2311,84 @@ example().catch(console.error);
|
|
|
2222
2311
|
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
2223
2312
|
|
|
2224
2313
|
|
|
2314
|
+
## deleteFile
|
|
2315
|
+
|
|
2316
|
+
> FileDeleteResponse deleteFile(sandboxId, path, recursive)
|
|
2317
|
+
|
|
2318
|
+
Delete a file or directory in a sandbox
|
|
2319
|
+
|
|
2320
|
+
A directory needs `recursive=true`. A symlink is deleted itself, never its target. /home/user and /tmp themselves cannot be deleted. Needs `file.write`.
|
|
2321
|
+
|
|
2322
|
+
### Example
|
|
2323
|
+
|
|
2324
|
+
```ts
|
|
2325
|
+
import {
|
|
2326
|
+
Configuration,
|
|
2327
|
+
BoatApi,
|
|
2328
|
+
} from '@boatdev/sdk';
|
|
2329
|
+
import type { DeleteFileRequest } from '@boatdev/sdk';
|
|
2330
|
+
|
|
2331
|
+
async function example() {
|
|
2332
|
+
console.log("🚀 Testing @boatdev/sdk SDK...");
|
|
2333
|
+
const config = new Configuration({
|
|
2334
|
+
// Configure HTTP bearer authorization: BoatBearerAuth
|
|
2335
|
+
accessToken: "YOUR BEARER TOKEN",
|
|
2336
|
+
});
|
|
2337
|
+
const api = new BoatApi(config);
|
|
2338
|
+
|
|
2339
|
+
const body = {
|
|
2340
|
+
// string | Public Sandbox id returned by create/list/get sandbox calls.
|
|
2341
|
+
sandboxId: sandboxId_example,
|
|
2342
|
+
// string
|
|
2343
|
+
path: path_example,
|
|
2344
|
+
// boolean (optional)
|
|
2345
|
+
recursive: true,
|
|
2346
|
+
} satisfies DeleteFileRequest;
|
|
2347
|
+
|
|
2348
|
+
try {
|
|
2349
|
+
const data = await api.deleteFile(body);
|
|
2350
|
+
console.log(data);
|
|
2351
|
+
} catch (error) {
|
|
2352
|
+
console.error(error);
|
|
2353
|
+
}
|
|
2354
|
+
}
|
|
2355
|
+
|
|
2356
|
+
// Run the test
|
|
2357
|
+
example().catch(console.error);
|
|
2358
|
+
```
|
|
2359
|
+
|
|
2360
|
+
### Parameters
|
|
2361
|
+
|
|
2362
|
+
|
|
2363
|
+
| Name | Type | Description | Notes |
|
|
2364
|
+
|------------- | ------------- | ------------- | -------------|
|
|
2365
|
+
| **sandboxId** | `string` | Public Sandbox id returned by create/list/get sandbox calls. | [Defaults to `undefined`] |
|
|
2366
|
+
| **path** | `string` | | [Defaults to `undefined`] |
|
|
2367
|
+
| **recursive** | `boolean` | | [Optional] [Defaults to `false`] |
|
|
2368
|
+
|
|
2369
|
+
### Return type
|
|
2370
|
+
|
|
2371
|
+
[**FileDeleteResponse**](FileDeleteResponse.md)
|
|
2372
|
+
|
|
2373
|
+
### Authorization
|
|
2374
|
+
|
|
2375
|
+
[BoatBearerAuth](../README.md#BoatBearerAuth)
|
|
2376
|
+
|
|
2377
|
+
### HTTP request headers
|
|
2378
|
+
|
|
2379
|
+
- **Content-Type**: Not defined
|
|
2380
|
+
- **Accept**: `application/json`
|
|
2381
|
+
|
|
2382
|
+
|
|
2383
|
+
### HTTP response details
|
|
2384
|
+
| Status code | Description | Response headers |
|
|
2385
|
+
|-------------|-------------|------------------|
|
|
2386
|
+
| **200** | Deleted. | - |
|
|
2387
|
+
| **400** | Invalid request body or parameters. | - |
|
|
2388
|
+
|
|
2389
|
+
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
2390
|
+
|
|
2391
|
+
|
|
2225
2392
|
## deleteNamedSnapshot
|
|
2226
2393
|
|
|
2227
2394
|
> NamedSnapshotDeletedResponse deleteNamedSnapshot(name)
|
|
@@ -2302,7 +2469,7 @@ example().catch(console.error);
|
|
|
2302
2469
|
|
|
2303
2470
|
Permanently delete sandbox data
|
|
2304
2471
|
|
|
2305
|
-
Accept irreversible background deletion of the sandbox machine, snapshots, and content-bearing records. This is not archive: the sandbox cannot be resumed.
|
|
2472
|
+
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
2473
|
|
|
2307
2474
|
### Example
|
|
2308
2475
|
|
|
@@ -2380,7 +2547,7 @@ example().catch(console.error);
|
|
|
2380
2547
|
|
|
2381
2548
|
Permanently delete all snapshots of a sandbox
|
|
2382
2549
|
|
|
2383
|
-
Accept irreversible deletion of every unpinned snapshot of this sandbox. The sandbox itself and its
|
|
2550
|
+
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
2551
|
|
|
2385
2552
|
### Example
|
|
2386
2553
|
|
|
@@ -2452,6 +2619,80 @@ example().catch(console.error);
|
|
|
2452
2619
|
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
2453
2620
|
|
|
2454
2621
|
|
|
2622
|
+
## deleteSavedSnapshot
|
|
2623
|
+
|
|
2624
|
+
> SavedSnapshotDeletedResponse deleteSavedSnapshot(name)
|
|
2625
|
+
|
|
2626
|
+
Remove a saved snapshot
|
|
2627
|
+
|
|
2628
|
+
Remove a saved snapshot and release its storage (`boat snapshot rm <name>` in the CLI). Sandboxes already deployed from it are unaffected.
|
|
2629
|
+
|
|
2630
|
+
### Example
|
|
2631
|
+
|
|
2632
|
+
```ts
|
|
2633
|
+
import {
|
|
2634
|
+
Configuration,
|
|
2635
|
+
BoatApi,
|
|
2636
|
+
} from '@boatdev/sdk';
|
|
2637
|
+
import type { DeleteSavedSnapshotRequest } from '@boatdev/sdk';
|
|
2638
|
+
|
|
2639
|
+
async function example() {
|
|
2640
|
+
console.log("🚀 Testing @boatdev/sdk SDK...");
|
|
2641
|
+
const config = new Configuration({
|
|
2642
|
+
// Configure HTTP bearer authorization: BoatBearerAuth
|
|
2643
|
+
accessToken: "YOUR BEARER TOKEN",
|
|
2644
|
+
});
|
|
2645
|
+
const api = new BoatApi(config);
|
|
2646
|
+
|
|
2647
|
+
const body = {
|
|
2648
|
+
// string
|
|
2649
|
+
name: name_example,
|
|
2650
|
+
} satisfies DeleteSavedSnapshotRequest;
|
|
2651
|
+
|
|
2652
|
+
try {
|
|
2653
|
+
const data = await api.deleteSavedSnapshot(body);
|
|
2654
|
+
console.log(data);
|
|
2655
|
+
} catch (error) {
|
|
2656
|
+
console.error(error);
|
|
2657
|
+
}
|
|
2658
|
+
}
|
|
2659
|
+
|
|
2660
|
+
// Run the test
|
|
2661
|
+
example().catch(console.error);
|
|
2662
|
+
```
|
|
2663
|
+
|
|
2664
|
+
### Parameters
|
|
2665
|
+
|
|
2666
|
+
|
|
2667
|
+
| Name | Type | Description | Notes |
|
|
2668
|
+
|------------- | ------------- | ------------- | -------------|
|
|
2669
|
+
| **name** | `string` | | [Defaults to `undefined`] |
|
|
2670
|
+
|
|
2671
|
+
### Return type
|
|
2672
|
+
|
|
2673
|
+
[**SavedSnapshotDeletedResponse**](SavedSnapshotDeletedResponse.md)
|
|
2674
|
+
|
|
2675
|
+
### Authorization
|
|
2676
|
+
|
|
2677
|
+
[BoatBearerAuth](../README.md#BoatBearerAuth)
|
|
2678
|
+
|
|
2679
|
+
### HTTP request headers
|
|
2680
|
+
|
|
2681
|
+
- **Content-Type**: Not defined
|
|
2682
|
+
- **Accept**: `application/json`
|
|
2683
|
+
|
|
2684
|
+
|
|
2685
|
+
### HTTP response details
|
|
2686
|
+
| Status code | Description | Response headers |
|
|
2687
|
+
|-------------|-------------|------------------|
|
|
2688
|
+
| **200** | Removed. | - |
|
|
2689
|
+
| **401** | Missing or invalid bearer token. | - |
|
|
2690
|
+
| **404** | Resource not found. | - |
|
|
2691
|
+
| **409** | `save_in_progress`: a save under this name is still running. Wait for it to settle before removing it. | - |
|
|
2692
|
+
|
|
2693
|
+
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
2694
|
+
|
|
2695
|
+
|
|
2455
2696
|
## deleteSnapshot
|
|
2456
2697
|
|
|
2457
2698
|
> DeletionOperationResponse deleteSnapshot(snapshotId, xAsciiConfirmDelete)
|
|
@@ -2913,13 +3154,13 @@ example().catch(console.error);
|
|
|
2913
3154
|
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
2914
3155
|
|
|
2915
3156
|
|
|
2916
|
-
##
|
|
3157
|
+
## findInFiles
|
|
2917
3158
|
|
|
2918
|
-
>
|
|
3159
|
+
> FileFindResponse findInFiles(sandboxId, pattern, path, regex)
|
|
2919
3160
|
|
|
2920
|
-
|
|
3161
|
+
Find text in sandbox files
|
|
2921
3162
|
|
|
2922
|
-
|
|
3163
|
+
Every line under `path` that contains `pattern`. `pattern` is plain text; with `regex=true` it is an extended regular expression. Binary files are skipped and symlinks are not followed. Needs `file.read`.
|
|
2923
3164
|
|
|
2924
3165
|
### Example
|
|
2925
3166
|
|
|
@@ -2928,7 +3169,7 @@ import {
|
|
|
2928
3169
|
Configuration,
|
|
2929
3170
|
BoatApi,
|
|
2930
3171
|
} from '@boatdev/sdk';
|
|
2931
|
-
import type {
|
|
3172
|
+
import type { FindInFilesRequest } from '@boatdev/sdk';
|
|
2932
3173
|
|
|
2933
3174
|
async function example() {
|
|
2934
3175
|
console.log("🚀 Testing @boatdev/sdk SDK...");
|
|
@@ -2941,14 +3182,16 @@ async function example() {
|
|
|
2941
3182
|
const body = {
|
|
2942
3183
|
// string | Public Sandbox id returned by create/list/get sandbox calls.
|
|
2943
3184
|
sandboxId: sandboxId_example,
|
|
2944
|
-
// string
|
|
2945
|
-
|
|
2946
|
-
//
|
|
2947
|
-
|
|
2948
|
-
|
|
3185
|
+
// string
|
|
3186
|
+
pattern: pattern_example,
|
|
3187
|
+
// string (optional)
|
|
3188
|
+
path: path_example,
|
|
3189
|
+
// boolean (optional)
|
|
3190
|
+
regex: true,
|
|
3191
|
+
} satisfies FindInFilesRequest;
|
|
2949
3192
|
|
|
2950
3193
|
try {
|
|
2951
|
-
const data = await api.
|
|
3194
|
+
const data = await api.findInFiles(body);
|
|
2952
3195
|
console.log(data);
|
|
2953
3196
|
} catch (error) {
|
|
2954
3197
|
console.error(error);
|
|
@@ -2965,12 +3208,13 @@ example().catch(console.error);
|
|
|
2965
3208
|
| Name | Type | Description | Notes |
|
|
2966
3209
|
|------------- | ------------- | ------------- | -------------|
|
|
2967
3210
|
| **sandboxId** | `string` | Public Sandbox id returned by create/list/get sandbox calls. | [Defaults to `undefined`] |
|
|
2968
|
-
| **
|
|
2969
|
-
| **
|
|
3211
|
+
| **pattern** | `string` | | [Defaults to `undefined`] |
|
|
3212
|
+
| **path** | `string` | | [Optional] [Defaults to `'/home/user'`] |
|
|
3213
|
+
| **regex** | `boolean` | | [Optional] [Defaults to `false`] |
|
|
2970
3214
|
|
|
2971
3215
|
### Return type
|
|
2972
3216
|
|
|
2973
|
-
[**
|
|
3217
|
+
[**FileFindResponse**](FileFindResponse.md)
|
|
2974
3218
|
|
|
2975
3219
|
### Authorization
|
|
2976
3220
|
|
|
@@ -2978,31 +3222,26 @@ example().catch(console.error);
|
|
|
2978
3222
|
|
|
2979
3223
|
### HTTP request headers
|
|
2980
3224
|
|
|
2981
|
-
- **Content-Type**:
|
|
3225
|
+
- **Content-Type**: Not defined
|
|
2982
3226
|
- **Accept**: `application/json`
|
|
2983
3227
|
|
|
2984
3228
|
|
|
2985
3229
|
### HTTP response details
|
|
2986
3230
|
| Status code | Description | Response headers |
|
|
2987
3231
|
|-------------|-------------|------------------|
|
|
2988
|
-
| **
|
|
2989
|
-
| **
|
|
2990
|
-
| **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. | - |
|
|
2991
|
-
| **404** | Resource not found. | - |
|
|
2992
|
-
| **409** | Request conflicts with current account or sandbox state. | - |
|
|
2993
|
-
| **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. | - |
|
|
2994
|
-
| **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. | - |
|
|
3232
|
+
| **200** | Matching lines. | - |
|
|
3233
|
+
| **400** | Invalid request body or parameters. | - |
|
|
2995
3234
|
|
|
2996
3235
|
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
2997
3236
|
|
|
2998
3237
|
|
|
2999
|
-
##
|
|
3238
|
+
## fork
|
|
3000
3239
|
|
|
3001
|
-
>
|
|
3240
|
+
> SandboxActionResponse fork(sandboxId, idempotencyKey, forkRequest)
|
|
3002
3241
|
|
|
3003
|
-
|
|
3242
|
+
Fork sandbox
|
|
3004
3243
|
|
|
3005
|
-
|
|
3244
|
+
Provision a new sandbox from an existing one. Send an `Idempotency-Key` header to make this call safe to retry after a lost response without creating a second billable fork.
|
|
3006
3245
|
|
|
3007
3246
|
### Example
|
|
3008
3247
|
|
|
@@ -3011,7 +3250,7 @@ import {
|
|
|
3011
3250
|
Configuration,
|
|
3012
3251
|
BoatApi,
|
|
3013
3252
|
} from '@boatdev/sdk';
|
|
3014
|
-
import type {
|
|
3253
|
+
import type { ForkOperationRequest } from '@boatdev/sdk';
|
|
3015
3254
|
|
|
3016
3255
|
async function example() {
|
|
3017
3256
|
console.log("🚀 Testing @boatdev/sdk SDK...");
|
|
@@ -3024,10 +3263,14 @@ async function example() {
|
|
|
3024
3263
|
const body = {
|
|
3025
3264
|
// string | Public Sandbox id returned by create/list/get sandbox calls.
|
|
3026
3265
|
sandboxId: sandboxId_example,
|
|
3027
|
-
|
|
3266
|
+
// string | Optional exactly-once key for creating a sandbox. Send your own opaque, account-unique value (a UUID) to make `POST /sandboxes` safe to retry when the response is lost (network timeout, 5xx): the first request creates the sandbox and binds it to the key; every later request with the **same account, key, and request body** returns that same sandbox instead of creating a second, billable one. Behavior: keys are retained for **24 hours**; a concurrent or early retry while the first sandbox is still being minted returns `409` `idempotency_in_progress` (retry shortly, same key); reusing a key with a **different body** returns `409` `idempotency_key_reused`; timeouts and 5xx are safe to retry with the same key; a create that fails before the sandbox exists releases the key within ~2 minutes so a retry can create the sandbox. Omit the header to keep the default (non-idempotent) behavior. (optional)
|
|
3267
|
+
idempotencyKey: idempotencyKey_example,
|
|
3268
|
+
// ForkRequest (optional)
|
|
3269
|
+
forkRequest: ...,
|
|
3270
|
+
} satisfies ForkOperationRequest;
|
|
3028
3271
|
|
|
3029
3272
|
try {
|
|
3030
|
-
const data = await api.
|
|
3273
|
+
const data = await api.fork(body);
|
|
3031
3274
|
console.log(data);
|
|
3032
3275
|
} catch (error) {
|
|
3033
3276
|
console.error(error);
|
|
@@ -3044,10 +3287,12 @@ example().catch(console.error);
|
|
|
3044
3287
|
| Name | Type | Description | Notes |
|
|
3045
3288
|
|------------- | ------------- | ------------- | -------------|
|
|
3046
3289
|
| **sandboxId** | `string` | Public Sandbox id returned by create/list/get sandbox calls. | [Defaults to `undefined`] |
|
|
3290
|
+
| **idempotencyKey** | `string` | Optional exactly-once key for creating a sandbox. Send your own opaque, account-unique value (a UUID) to make `POST /sandboxes` safe to retry when the response is lost (network timeout, 5xx): the first request creates the sandbox and binds it to the key; every later request with the **same account, key, and request body** returns that same sandbox instead of creating a second, billable one. Behavior: keys are retained for **24 hours**; a concurrent or early retry while the first sandbox is still being minted returns `409` `idempotency_in_progress` (retry shortly, same key); reusing a key with a **different body** returns `409` `idempotency_key_reused`; timeouts and 5xx are safe to retry with the same key; a create that fails before the sandbox exists releases the key within ~2 minutes so a retry can create the sandbox. Omit the header to keep the default (non-idempotent) behavior. | [Optional] [Defaults to `undefined`] |
|
|
3291
|
+
| **forkRequest** | [ForkRequest](ForkRequest.md) | | [Optional] |
|
|
3047
3292
|
|
|
3048
3293
|
### Return type
|
|
3049
3294
|
|
|
3050
|
-
[**
|
|
3295
|
+
[**SandboxActionResponse**](SandboxActionResponse.md)
|
|
3051
3296
|
|
|
3052
3297
|
### Authorization
|
|
3053
3298
|
|
|
@@ -3055,27 +3300,105 @@ example().catch(console.error);
|
|
|
3055
3300
|
|
|
3056
3301
|
### HTTP request headers
|
|
3057
3302
|
|
|
3058
|
-
- **Content-Type**:
|
|
3303
|
+
- **Content-Type**: `application/json`
|
|
3059
3304
|
- **Accept**: `application/json`
|
|
3060
3305
|
|
|
3061
3306
|
|
|
3062
3307
|
### HTTP response details
|
|
3063
3308
|
| Status code | Description | Response headers |
|
|
3064
3309
|
|-------------|-------------|------------------|
|
|
3065
|
-
| **
|
|
3310
|
+
| **202** | Fork started. The response `id` is the new forked sandbox id. | - |
|
|
3066
3311
|
| **401** | Missing or invalid bearer token. | - |
|
|
3312
|
+
| **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. | - |
|
|
3313
|
+
| **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. | - |
|
|
3067
3314
|
| **404** | Resource not found. | - |
|
|
3315
|
+
| **409** | Request conflicts with current account or sandbox state. | - |
|
|
3316
|
+
| **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 and the `limit` that applied). With money in the wallet after the first payment, starts above a limit are paid, up to `startLimitsWithWallet`; the body carries `startLimitsWithWallet`, null when paid starts are not available. 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. | - |
|
|
3317
|
+
| **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. | - |
|
|
3068
3318
|
|
|
3069
3319
|
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
3070
3320
|
|
|
3071
3321
|
|
|
3072
|
-
##
|
|
3322
|
+
## get
|
|
3073
3323
|
|
|
3074
|
-
>
|
|
3324
|
+
> SandboxInfoResponse get(sandboxId)
|
|
3075
3325
|
|
|
3076
|
-
Get
|
|
3326
|
+
Get sandbox
|
|
3077
3327
|
|
|
3078
|
-
|
|
3328
|
+
Poll this endpoint after create, stop, resume, or fork operations.
|
|
3329
|
+
|
|
3330
|
+
### Example
|
|
3331
|
+
|
|
3332
|
+
```ts
|
|
3333
|
+
import {
|
|
3334
|
+
Configuration,
|
|
3335
|
+
BoatApi,
|
|
3336
|
+
} from '@boatdev/sdk';
|
|
3337
|
+
import type { GetRequest } from '@boatdev/sdk';
|
|
3338
|
+
|
|
3339
|
+
async function example() {
|
|
3340
|
+
console.log("🚀 Testing @boatdev/sdk SDK...");
|
|
3341
|
+
const config = new Configuration({
|
|
3342
|
+
// Configure HTTP bearer authorization: BoatBearerAuth
|
|
3343
|
+
accessToken: "YOUR BEARER TOKEN",
|
|
3344
|
+
});
|
|
3345
|
+
const api = new BoatApi(config);
|
|
3346
|
+
|
|
3347
|
+
const body = {
|
|
3348
|
+
// string | Public Sandbox id returned by create/list/get sandbox calls.
|
|
3349
|
+
sandboxId: sandboxId_example,
|
|
3350
|
+
} satisfies GetRequest;
|
|
3351
|
+
|
|
3352
|
+
try {
|
|
3353
|
+
const data = await api.get(body);
|
|
3354
|
+
console.log(data);
|
|
3355
|
+
} catch (error) {
|
|
3356
|
+
console.error(error);
|
|
3357
|
+
}
|
|
3358
|
+
}
|
|
3359
|
+
|
|
3360
|
+
// Run the test
|
|
3361
|
+
example().catch(console.error);
|
|
3362
|
+
```
|
|
3363
|
+
|
|
3364
|
+
### Parameters
|
|
3365
|
+
|
|
3366
|
+
|
|
3367
|
+
| Name | Type | Description | Notes |
|
|
3368
|
+
|------------- | ------------- | ------------- | -------------|
|
|
3369
|
+
| **sandboxId** | `string` | Public Sandbox id returned by create/list/get sandbox calls. | [Defaults to `undefined`] |
|
|
3370
|
+
|
|
3371
|
+
### Return type
|
|
3372
|
+
|
|
3373
|
+
[**SandboxInfoResponse**](SandboxInfoResponse.md)
|
|
3374
|
+
|
|
3375
|
+
### Authorization
|
|
3376
|
+
|
|
3377
|
+
[BoatBearerAuth](../README.md#BoatBearerAuth)
|
|
3378
|
+
|
|
3379
|
+
### HTTP request headers
|
|
3380
|
+
|
|
3381
|
+
- **Content-Type**: Not defined
|
|
3382
|
+
- **Accept**: `application/json`
|
|
3383
|
+
|
|
3384
|
+
|
|
3385
|
+
### HTTP response details
|
|
3386
|
+
| Status code | Description | Response headers |
|
|
3387
|
+
|-------------|-------------|------------------|
|
|
3388
|
+
| **200** | Boat details. | - |
|
|
3389
|
+
| **401** | Missing or invalid bearer token. | - |
|
|
3390
|
+
| **404** | Resource not found. | - |
|
|
3391
|
+
|
|
3392
|
+
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
3393
|
+
|
|
3394
|
+
|
|
3395
|
+
## getAiProxy
|
|
3396
|
+
|
|
3397
|
+
> AiProxySettings getAiProxy(org, xBoatOrg)
|
|
3398
|
+
|
|
3399
|
+
Get AI credentials proxy
|
|
3400
|
+
|
|
3401
|
+
Returns the AI credentials proxy switch of the account in scope, a person or an organization, with its price. Needs an API key with `account.admin`.
|
|
3079
3402
|
|
|
3080
3403
|
### Example
|
|
3081
3404
|
|
|
@@ -3437,6 +3760,81 @@ example().catch(console.error);
|
|
|
3437
3760
|
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
3438
3761
|
|
|
3439
3762
|
|
|
3763
|
+
## getFileInfo
|
|
3764
|
+
|
|
3765
|
+
> FileInfoResponse getFileInfo(sandboxId, path)
|
|
3766
|
+
|
|
3767
|
+
Get file or directory details in a sandbox
|
|
3768
|
+
|
|
3769
|
+
Size, permission bits, type and modification time. Needs `file.read`.
|
|
3770
|
+
|
|
3771
|
+
### Example
|
|
3772
|
+
|
|
3773
|
+
```ts
|
|
3774
|
+
import {
|
|
3775
|
+
Configuration,
|
|
3776
|
+
BoatApi,
|
|
3777
|
+
} from '@boatdev/sdk';
|
|
3778
|
+
import type { GetFileInfoRequest } from '@boatdev/sdk';
|
|
3779
|
+
|
|
3780
|
+
async function example() {
|
|
3781
|
+
console.log("🚀 Testing @boatdev/sdk SDK...");
|
|
3782
|
+
const config = new Configuration({
|
|
3783
|
+
// Configure HTTP bearer authorization: BoatBearerAuth
|
|
3784
|
+
accessToken: "YOUR BEARER TOKEN",
|
|
3785
|
+
});
|
|
3786
|
+
const api = new BoatApi(config);
|
|
3787
|
+
|
|
3788
|
+
const body = {
|
|
3789
|
+
// string | Public Sandbox id returned by create/list/get sandbox calls.
|
|
3790
|
+
sandboxId: sandboxId_example,
|
|
3791
|
+
// string
|
|
3792
|
+
path: path_example,
|
|
3793
|
+
} satisfies GetFileInfoRequest;
|
|
3794
|
+
|
|
3795
|
+
try {
|
|
3796
|
+
const data = await api.getFileInfo(body);
|
|
3797
|
+
console.log(data);
|
|
3798
|
+
} catch (error) {
|
|
3799
|
+
console.error(error);
|
|
3800
|
+
}
|
|
3801
|
+
}
|
|
3802
|
+
|
|
3803
|
+
// Run the test
|
|
3804
|
+
example().catch(console.error);
|
|
3805
|
+
```
|
|
3806
|
+
|
|
3807
|
+
### Parameters
|
|
3808
|
+
|
|
3809
|
+
|
|
3810
|
+
| Name | Type | Description | Notes |
|
|
3811
|
+
|------------- | ------------- | ------------- | -------------|
|
|
3812
|
+
| **sandboxId** | `string` | Public Sandbox id returned by create/list/get sandbox calls. | [Defaults to `undefined`] |
|
|
3813
|
+
| **path** | `string` | | [Defaults to `undefined`] |
|
|
3814
|
+
|
|
3815
|
+
### Return type
|
|
3816
|
+
|
|
3817
|
+
[**FileInfoResponse**](FileInfoResponse.md)
|
|
3818
|
+
|
|
3819
|
+
### Authorization
|
|
3820
|
+
|
|
3821
|
+
[BoatBearerAuth](../README.md#BoatBearerAuth)
|
|
3822
|
+
|
|
3823
|
+
### HTTP request headers
|
|
3824
|
+
|
|
3825
|
+
- **Content-Type**: Not defined
|
|
3826
|
+
- **Accept**: `application/json`
|
|
3827
|
+
|
|
3828
|
+
|
|
3829
|
+
### HTTP response details
|
|
3830
|
+
| Status code | Description | Response headers |
|
|
3831
|
+
|-------------|-------------|------------------|
|
|
3832
|
+
| **200** | File details. | - |
|
|
3833
|
+
| **400** | Invalid request body or parameters. | - |
|
|
3834
|
+
|
|
3835
|
+
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
3836
|
+
|
|
3837
|
+
|
|
3440
3838
|
## getLatestSandboxSnapshot
|
|
3441
3839
|
|
|
3442
3840
|
> SnapshotLatestResponse getLatestSandboxSnapshot(sandboxId)
|
|
@@ -3657,6 +4055,77 @@ example().catch(console.error);
|
|
|
3657
4055
|
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
3658
4056
|
|
|
3659
4057
|
|
|
4058
|
+
## getSavedSnapshot
|
|
4059
|
+
|
|
4060
|
+
> SavedSnapshotInfoResponse getSavedSnapshot(name)
|
|
4061
|
+
|
|
4062
|
+
Get a saved snapshot
|
|
4063
|
+
|
|
4064
|
+
### Example
|
|
4065
|
+
|
|
4066
|
+
```ts
|
|
4067
|
+
import {
|
|
4068
|
+
Configuration,
|
|
4069
|
+
BoatApi,
|
|
4070
|
+
} from '@boatdev/sdk';
|
|
4071
|
+
import type { GetSavedSnapshotRequest } from '@boatdev/sdk';
|
|
4072
|
+
|
|
4073
|
+
async function example() {
|
|
4074
|
+
console.log("🚀 Testing @boatdev/sdk SDK...");
|
|
4075
|
+
const config = new Configuration({
|
|
4076
|
+
// Configure HTTP bearer authorization: BoatBearerAuth
|
|
4077
|
+
accessToken: "YOUR BEARER TOKEN",
|
|
4078
|
+
});
|
|
4079
|
+
const api = new BoatApi(config);
|
|
4080
|
+
|
|
4081
|
+
const body = {
|
|
4082
|
+
// string
|
|
4083
|
+
name: name_example,
|
|
4084
|
+
} satisfies GetSavedSnapshotRequest;
|
|
4085
|
+
|
|
4086
|
+
try {
|
|
4087
|
+
const data = await api.getSavedSnapshot(body);
|
|
4088
|
+
console.log(data);
|
|
4089
|
+
} catch (error) {
|
|
4090
|
+
console.error(error);
|
|
4091
|
+
}
|
|
4092
|
+
}
|
|
4093
|
+
|
|
4094
|
+
// Run the test
|
|
4095
|
+
example().catch(console.error);
|
|
4096
|
+
```
|
|
4097
|
+
|
|
4098
|
+
### Parameters
|
|
4099
|
+
|
|
4100
|
+
|
|
4101
|
+
| Name | Type | Description | Notes |
|
|
4102
|
+
|------------- | ------------- | ------------- | -------------|
|
|
4103
|
+
| **name** | `string` | | [Defaults to `undefined`] |
|
|
4104
|
+
|
|
4105
|
+
### Return type
|
|
4106
|
+
|
|
4107
|
+
[**SavedSnapshotInfoResponse**](SavedSnapshotInfoResponse.md)
|
|
4108
|
+
|
|
4109
|
+
### Authorization
|
|
4110
|
+
|
|
4111
|
+
[BoatBearerAuth](../README.md#BoatBearerAuth)
|
|
4112
|
+
|
|
4113
|
+
### HTTP request headers
|
|
4114
|
+
|
|
4115
|
+
- **Content-Type**: Not defined
|
|
4116
|
+
- **Accept**: `application/json`
|
|
4117
|
+
|
|
4118
|
+
|
|
4119
|
+
### HTTP response details
|
|
4120
|
+
| Status code | Description | Response headers |
|
|
4121
|
+
|-------------|-------------|------------------|
|
|
4122
|
+
| **200** | The saved snapshot. | - |
|
|
4123
|
+
| **401** | Missing or invalid bearer token. | - |
|
|
4124
|
+
| **404** | Resource not found. | - |
|
|
4125
|
+
|
|
4126
|
+
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
4127
|
+
|
|
4128
|
+
|
|
3660
4129
|
## getSnapshotDownload
|
|
3661
4130
|
|
|
3662
4131
|
> SnapshotDownloadResponse getSnapshotDownload(snapshotId)
|
|
@@ -4255,7 +4724,7 @@ example().catch(console.error);
|
|
|
4255
4724
|
|
|
4256
4725
|
Get Boat limits
|
|
4257
4726
|
|
|
4258
|
-
Check remaining machine starts,
|
|
4727
|
+
Check remaining machine starts, included VM time, the wallet, overage prices, access readiness, and concurrent-sandbox capacity for the wallet a create would bill: the `org` / `X-Boat-Org` you pass (id or name), else the account\'s active wallet, else personal. The response carries `teamId` when an organization wallet was read.
|
|
4259
4728
|
|
|
4260
4729
|
### Example
|
|
4261
4730
|
|
|
@@ -4377,7 +4846,7 @@ example().catch(console.error);
|
|
|
4377
4846
|
| Name | Type | Description | Notes |
|
|
4378
4847
|
|------------- | ------------- | ------------- | -------------|
|
|
4379
4848
|
| **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] |
|
|
4849
|
+
| **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
4850
|
|
|
4382
4851
|
### Return type
|
|
4383
4852
|
|
|
@@ -4469,6 +4938,81 @@ This endpoint does not need any parameter.
|
|
|
4469
4938
|
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
4470
4939
|
|
|
4471
4940
|
|
|
4941
|
+
## listFiles
|
|
4942
|
+
|
|
4943
|
+
> FileListResponse listFiles(sandboxId, path)
|
|
4944
|
+
|
|
4945
|
+
List a directory in a sandbox
|
|
4946
|
+
|
|
4947
|
+
One level, sorted by name. A symlink is listed as a symlink, not followed. Defaults to /home/user. Needs `file.read`.
|
|
4948
|
+
|
|
4949
|
+
### Example
|
|
4950
|
+
|
|
4951
|
+
```ts
|
|
4952
|
+
import {
|
|
4953
|
+
Configuration,
|
|
4954
|
+
BoatApi,
|
|
4955
|
+
} from '@boatdev/sdk';
|
|
4956
|
+
import type { ListFilesRequest } from '@boatdev/sdk';
|
|
4957
|
+
|
|
4958
|
+
async function example() {
|
|
4959
|
+
console.log("🚀 Testing @boatdev/sdk SDK...");
|
|
4960
|
+
const config = new Configuration({
|
|
4961
|
+
// Configure HTTP bearer authorization: BoatBearerAuth
|
|
4962
|
+
accessToken: "YOUR BEARER TOKEN",
|
|
4963
|
+
});
|
|
4964
|
+
const api = new BoatApi(config);
|
|
4965
|
+
|
|
4966
|
+
const body = {
|
|
4967
|
+
// string | Public Sandbox id returned by create/list/get sandbox calls.
|
|
4968
|
+
sandboxId: sandboxId_example,
|
|
4969
|
+
// string (optional)
|
|
4970
|
+
path: path_example,
|
|
4971
|
+
} satisfies ListFilesRequest;
|
|
4972
|
+
|
|
4973
|
+
try {
|
|
4974
|
+
const data = await api.listFiles(body);
|
|
4975
|
+
console.log(data);
|
|
4976
|
+
} catch (error) {
|
|
4977
|
+
console.error(error);
|
|
4978
|
+
}
|
|
4979
|
+
}
|
|
4980
|
+
|
|
4981
|
+
// Run the test
|
|
4982
|
+
example().catch(console.error);
|
|
4983
|
+
```
|
|
4984
|
+
|
|
4985
|
+
### Parameters
|
|
4986
|
+
|
|
4987
|
+
|
|
4988
|
+
| Name | Type | Description | Notes |
|
|
4989
|
+
|------------- | ------------- | ------------- | -------------|
|
|
4990
|
+
| **sandboxId** | `string` | Public Sandbox id returned by create/list/get sandbox calls. | [Defaults to `undefined`] |
|
|
4991
|
+
| **path** | `string` | | [Optional] [Defaults to `'/home/user'`] |
|
|
4992
|
+
|
|
4993
|
+
### Return type
|
|
4994
|
+
|
|
4995
|
+
[**FileListResponse**](FileListResponse.md)
|
|
4996
|
+
|
|
4997
|
+
### Authorization
|
|
4998
|
+
|
|
4999
|
+
[BoatBearerAuth](../README.md#BoatBearerAuth)
|
|
5000
|
+
|
|
5001
|
+
### HTTP request headers
|
|
5002
|
+
|
|
5003
|
+
- **Content-Type**: Not defined
|
|
5004
|
+
- **Accept**: `application/json`
|
|
5005
|
+
|
|
5006
|
+
|
|
5007
|
+
### HTTP response details
|
|
5008
|
+
| Status code | Description | Response headers |
|
|
5009
|
+
|-------------|-------------|------------------|
|
|
5010
|
+
| **200** | Directory entries. | - |
|
|
5011
|
+
| **400** | Invalid request body or parameters. | - |
|
|
5012
|
+
|
|
5013
|
+
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
5014
|
+
|
|
5015
|
+
|
|
4472
5016
|
## listNamedSnapshots
|
|
4473
5017
|
|
|
4474
5018
|
> NamedSnapshotListResponse listNamedSnapshots()
|
|
@@ -4680,13 +5224,77 @@ example().catch(console.error);
|
|
|
4680
5224
|
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
4681
5225
|
|
|
4682
5226
|
|
|
5227
|
+
## listSavedSnapshots
|
|
5228
|
+
|
|
5229
|
+
> SavedSnapshotListResponse listSavedSnapshots()
|
|
5230
|
+
|
|
5231
|
+
List saved snapshots
|
|
5232
|
+
|
|
5233
|
+
List your saved snapshots, newest first.
|
|
5234
|
+
|
|
5235
|
+
### Example
|
|
5236
|
+
|
|
5237
|
+
```ts
|
|
5238
|
+
import {
|
|
5239
|
+
Configuration,
|
|
5240
|
+
BoatApi,
|
|
5241
|
+
} from '@boatdev/sdk';
|
|
5242
|
+
import type { ListSavedSnapshotsRequest } from '@boatdev/sdk';
|
|
5243
|
+
|
|
5244
|
+
async function example() {
|
|
5245
|
+
console.log("🚀 Testing @boatdev/sdk SDK...");
|
|
5246
|
+
const config = new Configuration({
|
|
5247
|
+
// Configure HTTP bearer authorization: BoatBearerAuth
|
|
5248
|
+
accessToken: "YOUR BEARER TOKEN",
|
|
5249
|
+
});
|
|
5250
|
+
const api = new BoatApi(config);
|
|
5251
|
+
|
|
5252
|
+
try {
|
|
5253
|
+
const data = await api.listSavedSnapshots();
|
|
5254
|
+
console.log(data);
|
|
5255
|
+
} catch (error) {
|
|
5256
|
+
console.error(error);
|
|
5257
|
+
}
|
|
5258
|
+
}
|
|
5259
|
+
|
|
5260
|
+
// Run the test
|
|
5261
|
+
example().catch(console.error);
|
|
5262
|
+
```
|
|
5263
|
+
|
|
5264
|
+
### Parameters
|
|
5265
|
+
|
|
5266
|
+
This endpoint does not need any parameter.
|
|
5267
|
+
|
|
5268
|
+
### Return type
|
|
5269
|
+
|
|
5270
|
+
[**SavedSnapshotListResponse**](SavedSnapshotListResponse.md)
|
|
5271
|
+
|
|
5272
|
+
### Authorization
|
|
5273
|
+
|
|
5274
|
+
[BoatBearerAuth](../README.md#BoatBearerAuth)
|
|
5275
|
+
|
|
5276
|
+
### HTTP request headers
|
|
5277
|
+
|
|
5278
|
+
- **Content-Type**: Not defined
|
|
5279
|
+
- **Accept**: `application/json`
|
|
5280
|
+
|
|
5281
|
+
|
|
5282
|
+
### HTTP response details
|
|
5283
|
+
| Status code | Description | Response headers |
|
|
5284
|
+
|-------------|-------------|------------------|
|
|
5285
|
+
| **200** | Saved snapshots owned by the authenticated Boat user. | - |
|
|
5286
|
+
| **401** | Missing or invalid bearer token. | - |
|
|
5287
|
+
|
|
5288
|
+
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
5289
|
+
|
|
5290
|
+
|
|
4683
5291
|
## listSnapshotShares
|
|
4684
5292
|
|
|
4685
5293
|
> NamedSnapshotShareListResponse listSnapshotShares(name)
|
|
4686
5294
|
|
|
4687
|
-
List share codes of a
|
|
5295
|
+
List share codes of a saved snapshot
|
|
4688
5296
|
|
|
4689
|
-
List the share codes of a
|
|
5297
|
+
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
5298
|
|
|
4691
5299
|
### Example
|
|
4692
5300
|
|
|
@@ -4960,6 +5568,81 @@ This endpoint does not need any parameter.
|
|
|
4960
5568
|
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
4961
5569
|
|
|
4962
5570
|
|
|
5571
|
+
## moveFile
|
|
5572
|
+
|
|
5573
|
+
> FileMoveResponse moveFile(sandboxId, fileMoveRequest)
|
|
5574
|
+
|
|
5575
|
+
Move or rename a file or directory in a sandbox
|
|
5576
|
+
|
|
5577
|
+
Works across /home/user and /tmp. A symlink is moved itself, never its target. Needs `file.write`.
|
|
5578
|
+
|
|
5579
|
+
### Example
|
|
5580
|
+
|
|
5581
|
+
```ts
|
|
5582
|
+
import {
|
|
5583
|
+
Configuration,
|
|
5584
|
+
BoatApi,
|
|
5585
|
+
} from '@boatdev/sdk';
|
|
5586
|
+
import type { MoveFileRequest } from '@boatdev/sdk';
|
|
5587
|
+
|
|
5588
|
+
async function example() {
|
|
5589
|
+
console.log("🚀 Testing @boatdev/sdk SDK...");
|
|
5590
|
+
const config = new Configuration({
|
|
5591
|
+
// Configure HTTP bearer authorization: BoatBearerAuth
|
|
5592
|
+
accessToken: "YOUR BEARER TOKEN",
|
|
5593
|
+
});
|
|
5594
|
+
const api = new BoatApi(config);
|
|
5595
|
+
|
|
5596
|
+
const body = {
|
|
5597
|
+
// string | Public Sandbox id returned by create/list/get sandbox calls.
|
|
5598
|
+
sandboxId: sandboxId_example,
|
|
5599
|
+
// FileMoveRequest
|
|
5600
|
+
fileMoveRequest: ...,
|
|
5601
|
+
} satisfies MoveFileRequest;
|
|
5602
|
+
|
|
5603
|
+
try {
|
|
5604
|
+
const data = await api.moveFile(body);
|
|
5605
|
+
console.log(data);
|
|
5606
|
+
} catch (error) {
|
|
5607
|
+
console.error(error);
|
|
5608
|
+
}
|
|
5609
|
+
}
|
|
5610
|
+
|
|
5611
|
+
// Run the test
|
|
5612
|
+
example().catch(console.error);
|
|
5613
|
+
```
|
|
5614
|
+
|
|
5615
|
+
### Parameters
|
|
5616
|
+
|
|
5617
|
+
|
|
5618
|
+
| Name | Type | Description | Notes |
|
|
5619
|
+
|------------- | ------------- | ------------- | -------------|
|
|
5620
|
+
| **sandboxId** | `string` | Public Sandbox id returned by create/list/get sandbox calls. | [Defaults to `undefined`] |
|
|
5621
|
+
| **fileMoveRequest** | [FileMoveRequest](FileMoveRequest.md) | | |
|
|
5622
|
+
|
|
5623
|
+
### Return type
|
|
5624
|
+
|
|
5625
|
+
[**FileMoveResponse**](FileMoveResponse.md)
|
|
5626
|
+
|
|
5627
|
+
### Authorization
|
|
5628
|
+
|
|
5629
|
+
[BoatBearerAuth](../README.md#BoatBearerAuth)
|
|
5630
|
+
|
|
5631
|
+
### HTTP request headers
|
|
5632
|
+
|
|
5633
|
+
- **Content-Type**: `application/json`
|
|
5634
|
+
- **Accept**: `application/json`
|
|
5635
|
+
|
|
5636
|
+
|
|
5637
|
+
### HTTP response details
|
|
5638
|
+
| Status code | Description | Response headers |
|
|
5639
|
+
|-------------|-------------|------------------|
|
|
5640
|
+
| **200** | Moved. | - |
|
|
5641
|
+
| **400** | Invalid request body or parameters. | - |
|
|
5642
|
+
|
|
5643
|
+
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
5644
|
+
|
|
5645
|
+
|
|
4963
5646
|
## processes
|
|
4964
5647
|
|
|
4965
5648
|
> ProcessListResponse processes(sandboxId)
|
|
@@ -5194,7 +5877,7 @@ example().catch(console.error);
|
|
|
5194
5877
|
|
|
5195
5878
|
Read a file from a sandbox
|
|
5196
5879
|
|
|
5197
|
-
Files up to 5 MiB. For a larger file, use `POST /sandboxes/{sandboxId}/files/download-url`.
|
|
5880
|
+
Files up to 5 MiB. For a larger file, use `POST /sandboxes/{sandboxId}/files/download-url`. On a sandbox that is still starting, the call waits until it is ready (up to 60 s, like a command), so it reads the sandbox\'s own disk and never the machine\'s stock one.
|
|
5198
5881
|
|
|
5199
5882
|
### Example
|
|
5200
5883
|
|
|
@@ -5340,6 +6023,81 @@ example().catch(console.error);
|
|
|
5340
6023
|
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
5341
6024
|
|
|
5342
6025
|
|
|
6026
|
+
## replaceInFiles
|
|
6027
|
+
|
|
6028
|
+
> FileReplaceResponse replaceInFiles(sandboxId, fileReplaceRequest)
|
|
6029
|
+
|
|
6030
|
+
Replace text in sandbox files
|
|
6031
|
+
|
|
6032
|
+
Replaces every occurrence of `pattern` with `newValue` in each file. Needs `file.write`.
|
|
6033
|
+
|
|
6034
|
+
### Example
|
|
6035
|
+
|
|
6036
|
+
```ts
|
|
6037
|
+
import {
|
|
6038
|
+
Configuration,
|
|
6039
|
+
BoatApi,
|
|
6040
|
+
} from '@boatdev/sdk';
|
|
6041
|
+
import type { ReplaceInFilesRequest } from '@boatdev/sdk';
|
|
6042
|
+
|
|
6043
|
+
async function example() {
|
|
6044
|
+
console.log("🚀 Testing @boatdev/sdk SDK...");
|
|
6045
|
+
const config = new Configuration({
|
|
6046
|
+
// Configure HTTP bearer authorization: BoatBearerAuth
|
|
6047
|
+
accessToken: "YOUR BEARER TOKEN",
|
|
6048
|
+
});
|
|
6049
|
+
const api = new BoatApi(config);
|
|
6050
|
+
|
|
6051
|
+
const body = {
|
|
6052
|
+
// string | Public Sandbox id returned by create/list/get sandbox calls.
|
|
6053
|
+
sandboxId: sandboxId_example,
|
|
6054
|
+
// FileReplaceRequest
|
|
6055
|
+
fileReplaceRequest: ...,
|
|
6056
|
+
} satisfies ReplaceInFilesRequest;
|
|
6057
|
+
|
|
6058
|
+
try {
|
|
6059
|
+
const data = await api.replaceInFiles(body);
|
|
6060
|
+
console.log(data);
|
|
6061
|
+
} catch (error) {
|
|
6062
|
+
console.error(error);
|
|
6063
|
+
}
|
|
6064
|
+
}
|
|
6065
|
+
|
|
6066
|
+
// Run the test
|
|
6067
|
+
example().catch(console.error);
|
|
6068
|
+
```
|
|
6069
|
+
|
|
6070
|
+
### Parameters
|
|
6071
|
+
|
|
6072
|
+
|
|
6073
|
+
| Name | Type | Description | Notes |
|
|
6074
|
+
|------------- | ------------- | ------------- | -------------|
|
|
6075
|
+
| **sandboxId** | `string` | Public Sandbox id returned by create/list/get sandbox calls. | [Defaults to `undefined`] |
|
|
6076
|
+
| **fileReplaceRequest** | [FileReplaceRequest](FileReplaceRequest.md) | | |
|
|
6077
|
+
|
|
6078
|
+
### Return type
|
|
6079
|
+
|
|
6080
|
+
[**FileReplaceResponse**](FileReplaceResponse.md)
|
|
6081
|
+
|
|
6082
|
+
### Authorization
|
|
6083
|
+
|
|
6084
|
+
[BoatBearerAuth](../README.md#BoatBearerAuth)
|
|
6085
|
+
|
|
6086
|
+
### HTTP request headers
|
|
6087
|
+
|
|
6088
|
+
- **Content-Type**: `application/json`
|
|
6089
|
+
- **Accept**: `application/json`
|
|
6090
|
+
|
|
6091
|
+
|
|
6092
|
+
### HTTP response details
|
|
6093
|
+
| Status code | Description | Response headers |
|
|
6094
|
+
|-------------|-------------|------------------|
|
|
6095
|
+
| **200** | Per-file results. | - |
|
|
6096
|
+
| **400** | Invalid request body or parameters. | - |
|
|
6097
|
+
|
|
6098
|
+
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
6099
|
+
|
|
6100
|
+
|
|
5343
6101
|
## repos
|
|
5344
6102
|
|
|
5345
6103
|
> ReposResponse repos(sync, limit, cursor, sort, q, selected)
|
|
@@ -5498,9 +6256,10 @@ example().catch(console.error);
|
|
|
5498
6256
|
| **202** | Resume started. | - |
|
|
5499
6257
|
| **401** | Missing or invalid bearer token. | - |
|
|
5500
6258
|
| **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. | - |
|
|
6259
|
+
| **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
6260
|
| **404** | Resource not found. | - |
|
|
5502
6261
|
| **409** | Request conflicts with current account or sandbox state. | - |
|
|
5503
|
-
| **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
|
|
6262
|
+
| **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 and the `limit` that applied). With money in the wallet after the first payment, starts above a limit are paid, up to `startLimitsWithWallet`; the body carries `startLimitsWithWallet`, null when paid starts are not available. 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. | - |
|
|
5504
6263
|
| **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. | - |
|
|
5505
6264
|
|
|
5506
6265
|
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
@@ -5512,7 +6271,7 @@ example().catch(console.error);
|
|
|
5512
6271
|
|
|
5513
6272
|
Revoke an API key
|
|
5514
6273
|
|
|
5515
|
-
Revokes the key immediately. Requires a dashboard or CLI session.
|
|
6274
|
+
Revokes the key immediately. Requires a dashboard or CLI session, or an admin-scoped key. A key revokes itself or a key it could create (same or fewer actions, sandboxes and environments, no later expiry).
|
|
5516
6275
|
|
|
5517
6276
|
### Example
|
|
5518
6277
|
|
|
@@ -5662,7 +6421,7 @@ example().catch(console.error);
|
|
|
5662
6421
|
|
|
5663
6422
|
Rotate an API key
|
|
5664
6423
|
|
|
5665
|
-
Replaces the raw secret without changing expiry or scope. Requires a dashboard or CLI session.
|
|
6424
|
+
Replaces the raw secret without changing expiry or scope. Requires a dashboard or CLI session, or an admin-scoped key. A key rotates itself or a key it could create.
|
|
5666
6425
|
|
|
5667
6426
|
### Example
|
|
5668
6427
|
|
|
@@ -5964,12 +6723,166 @@ example().catch(console.error);
|
|
|
5964
6723
|
| **400** | Invalid request body or parameters. | - |
|
|
5965
6724
|
| **401** | Missing or invalid bearer token. | - |
|
|
5966
6725
|
| **404** | Resource not found. | - |
|
|
5967
|
-
| **402** | `credit_required`: the wallet already keeps
|
|
6726
|
+
| **402** | `credit_required`: the wallet already keeps its included named snapshots and is empty. Each named snapshot above the included count costs $0.056 a day from the wallet. Add money to the wallet or remove one. | - |
|
|
6727
|
+
| **409** | `save_in_progress` when a save under this name is already running; wait for it to settle rather than retrying immediately. | - |
|
|
6728
|
+
|
|
6729
|
+
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
6730
|
+
|
|
6731
|
+
|
|
6732
|
+
## saveSavedSnapshot
|
|
6733
|
+
|
|
6734
|
+
> SavedSnapshotSavingResponse saveSavedSnapshot(savedSnapshotSaveRequest)
|
|
6735
|
+
|
|
6736
|
+
Save a saved snapshot
|
|
6737
|
+
|
|
6738
|
+
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.
|
|
6739
|
+
|
|
6740
|
+
### Example
|
|
6741
|
+
|
|
6742
|
+
```ts
|
|
6743
|
+
import {
|
|
6744
|
+
Configuration,
|
|
6745
|
+
BoatApi,
|
|
6746
|
+
} from '@boatdev/sdk';
|
|
6747
|
+
import type { SaveSavedSnapshotRequest } from '@boatdev/sdk';
|
|
6748
|
+
|
|
6749
|
+
async function example() {
|
|
6750
|
+
console.log("🚀 Testing @boatdev/sdk SDK...");
|
|
6751
|
+
const config = new Configuration({
|
|
6752
|
+
// Configure HTTP bearer authorization: BoatBearerAuth
|
|
6753
|
+
accessToken: "YOUR BEARER TOKEN",
|
|
6754
|
+
});
|
|
6755
|
+
const api = new BoatApi(config);
|
|
6756
|
+
|
|
6757
|
+
const body = {
|
|
6758
|
+
// SavedSnapshotSaveRequest
|
|
6759
|
+
savedSnapshotSaveRequest: ...,
|
|
6760
|
+
} satisfies SaveSavedSnapshotRequest;
|
|
6761
|
+
|
|
6762
|
+
try {
|
|
6763
|
+
const data = await api.saveSavedSnapshot(body);
|
|
6764
|
+
console.log(data);
|
|
6765
|
+
} catch (error) {
|
|
6766
|
+
console.error(error);
|
|
6767
|
+
}
|
|
6768
|
+
}
|
|
6769
|
+
|
|
6770
|
+
// Run the test
|
|
6771
|
+
example().catch(console.error);
|
|
6772
|
+
```
|
|
6773
|
+
|
|
6774
|
+
### Parameters
|
|
6775
|
+
|
|
6776
|
+
|
|
6777
|
+
| Name | Type | Description | Notes |
|
|
6778
|
+
|------------- | ------------- | ------------- | -------------|
|
|
6779
|
+
| **savedSnapshotSaveRequest** | [SavedSnapshotSaveRequest](SavedSnapshotSaveRequest.md) | | |
|
|
6780
|
+
|
|
6781
|
+
### Return type
|
|
6782
|
+
|
|
6783
|
+
[**SavedSnapshotSavingResponse**](SavedSnapshotSavingResponse.md)
|
|
6784
|
+
|
|
6785
|
+
### Authorization
|
|
6786
|
+
|
|
6787
|
+
[BoatBearerAuth](../README.md#BoatBearerAuth)
|
|
6788
|
+
|
|
6789
|
+
### HTTP request headers
|
|
6790
|
+
|
|
6791
|
+
- **Content-Type**: `application/json`
|
|
6792
|
+
- **Accept**: `application/json`
|
|
6793
|
+
|
|
6794
|
+
|
|
6795
|
+
### HTTP response details
|
|
6796
|
+
| Status code | Description | Response headers |
|
|
6797
|
+
|-------------|-------------|------------------|
|
|
6798
|
+
| **202** | Save accepted and running in the background. | - |
|
|
6799
|
+
| **400** | Invalid request body or parameters. | - |
|
|
6800
|
+
| **401** | Missing or invalid bearer token. | - |
|
|
6801
|
+
| **404** | Resource not found. | - |
|
|
6802
|
+
| **402** | `credit_required`: the wallet already keeps its included saved snapshots and is empty. Each saved snapshot above the plan\'s included count costs $0.056 a day from the wallet. Add money to the wallet or remove one. | - |
|
|
5968
6803
|
| **409** | `save_in_progress` when a save under this name is already running; wait for it to settle rather than retrying immediately. | - |
|
|
5969
6804
|
|
|
5970
6805
|
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
5971
6806
|
|
|
5972
6807
|
|
|
6808
|
+
## searchFiles
|
|
6809
|
+
|
|
6810
|
+
> FileSearchResponse searchFiles(sandboxId, pattern, path)
|
|
6811
|
+
|
|
6812
|
+
Search files by name in a sandbox
|
|
6813
|
+
|
|
6814
|
+
Every file and directory under `path` whose name matches the glob `pattern` (for example `*.py`). Symlinks are not followed. Needs `file.read`.
|
|
6815
|
+
|
|
6816
|
+
### Example
|
|
6817
|
+
|
|
6818
|
+
```ts
|
|
6819
|
+
import {
|
|
6820
|
+
Configuration,
|
|
6821
|
+
BoatApi,
|
|
6822
|
+
} from '@boatdev/sdk';
|
|
6823
|
+
import type { SearchFilesRequest } from '@boatdev/sdk';
|
|
6824
|
+
|
|
6825
|
+
async function example() {
|
|
6826
|
+
console.log("🚀 Testing @boatdev/sdk SDK...");
|
|
6827
|
+
const config = new Configuration({
|
|
6828
|
+
// Configure HTTP bearer authorization: BoatBearerAuth
|
|
6829
|
+
accessToken: "YOUR BEARER TOKEN",
|
|
6830
|
+
});
|
|
6831
|
+
const api = new BoatApi(config);
|
|
6832
|
+
|
|
6833
|
+
const body = {
|
|
6834
|
+
// string | Public Sandbox id returned by create/list/get sandbox calls.
|
|
6835
|
+
sandboxId: sandboxId_example,
|
|
6836
|
+
// string
|
|
6837
|
+
pattern: pattern_example,
|
|
6838
|
+
// string (optional)
|
|
6839
|
+
path: path_example,
|
|
6840
|
+
} satisfies SearchFilesRequest;
|
|
6841
|
+
|
|
6842
|
+
try {
|
|
6843
|
+
const data = await api.searchFiles(body);
|
|
6844
|
+
console.log(data);
|
|
6845
|
+
} catch (error) {
|
|
6846
|
+
console.error(error);
|
|
6847
|
+
}
|
|
6848
|
+
}
|
|
6849
|
+
|
|
6850
|
+
// Run the test
|
|
6851
|
+
example().catch(console.error);
|
|
6852
|
+
```
|
|
6853
|
+
|
|
6854
|
+
### Parameters
|
|
6855
|
+
|
|
6856
|
+
|
|
6857
|
+
| Name | Type | Description | Notes |
|
|
6858
|
+
|------------- | ------------- | ------------- | -------------|
|
|
6859
|
+
| **sandboxId** | `string` | Public Sandbox id returned by create/list/get sandbox calls. | [Defaults to `undefined`] |
|
|
6860
|
+
| **pattern** | `string` | | [Defaults to `undefined`] |
|
|
6861
|
+
| **path** | `string` | | [Optional] [Defaults to `'/home/user'`] |
|
|
6862
|
+
|
|
6863
|
+
### Return type
|
|
6864
|
+
|
|
6865
|
+
[**FileSearchResponse**](FileSearchResponse.md)
|
|
6866
|
+
|
|
6867
|
+
### Authorization
|
|
6868
|
+
|
|
6869
|
+
[BoatBearerAuth](../README.md#BoatBearerAuth)
|
|
6870
|
+
|
|
6871
|
+
### HTTP request headers
|
|
6872
|
+
|
|
6873
|
+
- **Content-Type**: Not defined
|
|
6874
|
+
- **Accept**: `application/json`
|
|
6875
|
+
|
|
6876
|
+
|
|
6877
|
+
### HTTP response details
|
|
6878
|
+
| Status code | Description | Response headers |
|
|
6879
|
+
|-------------|-------------|------------------|
|
|
6880
|
+
| **200** | Matching paths. | - |
|
|
6881
|
+
| **400** | Invalid request body or parameters. | - |
|
|
6882
|
+
|
|
6883
|
+
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
6884
|
+
|
|
6885
|
+
|
|
5973
6886
|
## secrets
|
|
5974
6887
|
|
|
5975
6888
|
> SecretsResponse secrets()
|
|
@@ -6316,7 +7229,7 @@ example().catch(console.error);
|
|
|
6316
7229
|
| Name | Type | Description | Notes |
|
|
6317
7230
|
|------------- | ------------- | ------------- | -------------|
|
|
6318
7231
|
| **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] |
|
|
7232
|
+
| **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
7233
|
| **setCredentialKeyRequest** | [SetCredentialKeyRequest](SetCredentialKeyRequest.md) | | |
|
|
6321
7234
|
|
|
6322
7235
|
### Return type
|
|
@@ -6508,6 +7421,81 @@ example().catch(console.error);
|
|
|
6508
7421
|
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
6509
7422
|
|
|
6510
7423
|
|
|
7424
|
+
## setFilePermissions
|
|
7425
|
+
|
|
7426
|
+
> FileInfoResponse setFilePermissions(sandboxId, filePermissionsRequest)
|
|
7427
|
+
|
|
7428
|
+
Set file permissions in a sandbox
|
|
7429
|
+
|
|
7430
|
+
Sets the permission bits. Files belong to the sandbox user; the owner and group do not change. Needs `file.write`.
|
|
7431
|
+
|
|
7432
|
+
### Example
|
|
7433
|
+
|
|
7434
|
+
```ts
|
|
7435
|
+
import {
|
|
7436
|
+
Configuration,
|
|
7437
|
+
BoatApi,
|
|
7438
|
+
} from '@boatdev/sdk';
|
|
7439
|
+
import type { SetFilePermissionsRequest } from '@boatdev/sdk';
|
|
7440
|
+
|
|
7441
|
+
async function example() {
|
|
7442
|
+
console.log("🚀 Testing @boatdev/sdk SDK...");
|
|
7443
|
+
const config = new Configuration({
|
|
7444
|
+
// Configure HTTP bearer authorization: BoatBearerAuth
|
|
7445
|
+
accessToken: "YOUR BEARER TOKEN",
|
|
7446
|
+
});
|
|
7447
|
+
const api = new BoatApi(config);
|
|
7448
|
+
|
|
7449
|
+
const body = {
|
|
7450
|
+
// string | Public Sandbox id returned by create/list/get sandbox calls.
|
|
7451
|
+
sandboxId: sandboxId_example,
|
|
7452
|
+
// FilePermissionsRequest
|
|
7453
|
+
filePermissionsRequest: ...,
|
|
7454
|
+
} satisfies SetFilePermissionsRequest;
|
|
7455
|
+
|
|
7456
|
+
try {
|
|
7457
|
+
const data = await api.setFilePermissions(body);
|
|
7458
|
+
console.log(data);
|
|
7459
|
+
} catch (error) {
|
|
7460
|
+
console.error(error);
|
|
7461
|
+
}
|
|
7462
|
+
}
|
|
7463
|
+
|
|
7464
|
+
// Run the test
|
|
7465
|
+
example().catch(console.error);
|
|
7466
|
+
```
|
|
7467
|
+
|
|
7468
|
+
### Parameters
|
|
7469
|
+
|
|
7470
|
+
|
|
7471
|
+
| Name | Type | Description | Notes |
|
|
7472
|
+
|------------- | ------------- | ------------- | -------------|
|
|
7473
|
+
| **sandboxId** | `string` | Public Sandbox id returned by create/list/get sandbox calls. | [Defaults to `undefined`] |
|
|
7474
|
+
| **filePermissionsRequest** | [FilePermissionsRequest](FilePermissionsRequest.md) | | |
|
|
7475
|
+
|
|
7476
|
+
### Return type
|
|
7477
|
+
|
|
7478
|
+
[**FileInfoResponse**](FileInfoResponse.md)
|
|
7479
|
+
|
|
7480
|
+
### Authorization
|
|
7481
|
+
|
|
7482
|
+
[BoatBearerAuth](../README.md#BoatBearerAuth)
|
|
7483
|
+
|
|
7484
|
+
### HTTP request headers
|
|
7485
|
+
|
|
7486
|
+
- **Content-Type**: `application/json`
|
|
7487
|
+
- **Accept**: `application/json`
|
|
7488
|
+
|
|
7489
|
+
|
|
7490
|
+
### HTTP response details
|
|
7491
|
+
| Status code | Description | Response headers |
|
|
7492
|
+
|-------------|-------------|------------------|
|
|
7493
|
+
| **200** | Permissions set. | - |
|
|
7494
|
+
| **400** | Invalid request body or parameters. | - |
|
|
7495
|
+
|
|
7496
|
+
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
7497
|
+
|
|
7498
|
+
|
|
6511
7499
|
## setSandboxAiAccess
|
|
6512
7500
|
|
|
6513
7501
|
> SandboxAiAccessResponse setSandboxAiAccess(sandboxId, setSandboxAiAccessRequest)
|
|
@@ -7101,7 +8089,7 @@ example().catch(console.error);
|
|
|
7101
8089
|
| Name | Type | Description | Notes |
|
|
7102
8090
|
|------------- | ------------- | ------------- | -------------|
|
|
7103
8091
|
| **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] |
|
|
8092
|
+
| **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
8093
|
| **account** | `string` | The account id from the list. | [Defaults to `undefined`] |
|
|
7106
8094
|
|
|
7107
8095
|
### Return type
|
|
@@ -7286,7 +8274,7 @@ example().catch(console.error);
|
|
|
7286
8274
|
|
|
7287
8275
|
Turn the AI credentials proxy on or off
|
|
7288
8276
|
|
|
7289
|
-
With the proxy on, sandboxes get placeholder keys and base URLs that point at Boat. Boat swaps in the real key on each request. Real keys never enter the sandbox. Running sandboxes switch at their next start. While on, the account pays $1
|
|
8277
|
+
With the proxy on, sandboxes get placeholder keys and base URLs that point at Boat. Boat swaps in the real key on each request. Real keys never enter the sandbox. Running sandboxes switch at their next start. While on, the wallet of the account pays $1 for each UTC day, plus $1 per 1,000 proxied requests, charged to the wallet each sandbox bills. For an organization, only its owner can change the switch. Needs an API key with `account.admin`.
|
|
7290
8278
|
|
|
7291
8279
|
### Example
|
|
7292
8280
|
|
|
@@ -7984,7 +8972,7 @@ example().catch(console.error);
|
|
|
7984
8972
|
|
|
7985
8973
|
Write a file in a sandbox
|
|
7986
8974
|
|
|
7987
|
-
Files up to 5 MiB after decoding. For a larger file, use `POST /sandboxes/{sandboxId}/files/upload-url`.
|
|
8975
|
+
Files up to 5 MiB after decoding. For a larger file, use `POST /sandboxes/{sandboxId}/files/upload-url`. On a sandbox that is still starting, the call waits until it is ready (up to 60 s, like a command): a sandbox\'s files are in place only once it is ready, so a write any earlier would not stay. A `200` always means the file is on the sandbox\'s disk.
|
|
7988
8976
|
|
|
7989
8977
|
### Example
|
|
7990
8978
|
|