@boatdev/sdk 1.9.4 → 1.9.6
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 +44 -0
- package/dist/apis/BoatApi.d.ts +305 -7
- package/dist/apis/BoatApi.js +764 -15
- package/dist/esm/apis/BoatApi.d.ts +305 -7
- package/dist/esm/apis/BoatApi.js +764 -15
- package/dist/esm/models/AccountAiUsageResponse.d.ts +83 -0
- package/dist/esm/models/AccountAiUsageResponse.js +78 -0
- package/dist/esm/models/AiProxySettings.d.ts +81 -0
- package/dist/esm/models/AiProxySettings.js +76 -0
- package/dist/esm/models/AiProxySettingsAllOfPricing.d.ts +38 -0
- package/dist/esm/models/AiProxySettingsAllOfPricing.js +47 -0
- package/dist/esm/models/AiUsageRow.d.ts +80 -0
- package/dist/esm/models/AiUsageRow.js +75 -0
- package/dist/esm/models/AiUsageTotals.d.ts +62 -0
- package/dist/esm/models/AiUsageTotals.js +63 -0
- package/dist/esm/models/CreateCredentialProfileRequest.d.ts +44 -0
- package/dist/esm/models/CreateCredentialProfileRequest.js +47 -0
- package/dist/esm/models/CredentialId.d.ts +36 -0
- package/dist/esm/models/CredentialId.js +54 -0
- package/dist/esm/models/CredentialProfile.d.ts +82 -0
- package/dist/esm/models/CredentialProfile.js +77 -0
- package/dist/esm/models/CredentialProfileDeletedResponse.d.ts +44 -0
- package/dist/esm/models/CredentialProfileDeletedResponse.js +51 -0
- package/dist/esm/models/CredentialProfileListResponse.d.ts +45 -0
- package/dist/esm/models/CredentialProfileListResponse.js +52 -0
- package/dist/esm/models/CredentialProfileOwner.d.ts +58 -0
- package/dist/esm/models/CredentialProfileOwner.js +62 -0
- package/dist/esm/models/CredentialProfileResponse.d.ts +51 -0
- package/dist/esm/models/CredentialProfileResponse.js +56 -0
- package/dist/esm/models/DeletionOperation.d.ts +1 -1
- package/dist/esm/models/FileUrlRequest.d.ts +38 -0
- package/dist/esm/models/FileUrlRequest.js +45 -0
- package/dist/esm/models/FileUrlResponse.d.ts +78 -0
- package/dist/esm/models/FileUrlResponse.js +77 -0
- package/dist/esm/models/ProcessListResponse.d.ts +1 -1
- package/dist/esm/models/SandboxAiAccessResponse.d.ts +56 -0
- package/dist/esm/models/SandboxAiAccessResponse.js +59 -0
- package/dist/esm/models/SandboxAiUsage.d.ts +64 -0
- package/dist/esm/models/SandboxAiUsage.js +65 -0
- package/dist/esm/models/SandboxAiUsageResponse.d.ts +88 -0
- package/dist/esm/models/SandboxAiUsageResponse.js +81 -0
- package/dist/esm/models/SandboxEnvironment.d.ts +13 -1
- package/dist/esm/models/SandboxEnvironment.js +4 -0
- package/dist/esm/models/SetCredentialKeyRequest.d.ts +32 -0
- package/dist/esm/models/SetCredentialKeyRequest.js +43 -0
- package/dist/esm/models/SetCustomApiRequest.d.ts +38 -0
- package/dist/esm/models/SetCustomApiRequest.js +47 -0
- package/dist/esm/models/SetSandboxAiAccessRequest.d.ts +32 -0
- package/dist/esm/models/SetSandboxAiAccessRequest.js +43 -0
- package/dist/esm/models/SnapshotSummary.d.ts +14 -0
- package/dist/esm/models/SnapshotSummary.js +9 -0
- package/dist/esm/models/UpdateAiProxyRequest.d.ts +32 -0
- package/dist/esm/models/UpdateAiProxyRequest.js +43 -0
- package/dist/esm/models/UpdateCredentialProfileRequest.d.ts +38 -0
- package/dist/esm/models/UpdateCredentialProfileRequest.js +43 -0
- package/dist/esm/models/UpdateSandboxEnvironmentRequest.d.ts +12 -0
- package/dist/esm/models/UpdateSandboxEnvironmentRequest.js +4 -0
- package/dist/esm/models/index.d.ts +22 -0
- package/dist/esm/models/index.js +22 -0
- package/dist/models/AccountAiUsageResponse.d.ts +83 -0
- package/dist/models/AccountAiUsageResponse.js +85 -0
- package/dist/models/AiProxySettings.d.ts +81 -0
- package/dist/models/AiProxySettings.js +83 -0
- package/dist/models/AiProxySettingsAllOfPricing.d.ts +38 -0
- package/dist/models/AiProxySettingsAllOfPricing.js +54 -0
- package/dist/models/AiUsageRow.d.ts +80 -0
- package/dist/models/AiUsageRow.js +82 -0
- package/dist/models/AiUsageTotals.d.ts +62 -0
- package/dist/models/AiUsageTotals.js +70 -0
- package/dist/models/CreateCredentialProfileRequest.d.ts +44 -0
- package/dist/models/CreateCredentialProfileRequest.js +54 -0
- package/dist/models/CredentialId.d.ts +36 -0
- package/dist/models/CredentialId.js +62 -0
- package/dist/models/CredentialProfile.d.ts +82 -0
- package/dist/models/CredentialProfile.js +84 -0
- package/dist/models/CredentialProfileDeletedResponse.d.ts +44 -0
- package/dist/models/CredentialProfileDeletedResponse.js +58 -0
- package/dist/models/CredentialProfileListResponse.d.ts +45 -0
- package/dist/models/CredentialProfileListResponse.js +59 -0
- package/dist/models/CredentialProfileOwner.d.ts +58 -0
- package/dist/models/CredentialProfileOwner.js +70 -0
- package/dist/models/CredentialProfileResponse.d.ts +51 -0
- package/dist/models/CredentialProfileResponse.js +63 -0
- package/dist/models/DeletionOperation.d.ts +1 -1
- package/dist/models/FileUrlRequest.d.ts +38 -0
- package/dist/models/FileUrlRequest.js +52 -0
- package/dist/models/FileUrlResponse.d.ts +78 -0
- package/dist/models/FileUrlResponse.js +85 -0
- package/dist/models/ProcessListResponse.d.ts +1 -1
- package/dist/models/SandboxAiAccessResponse.d.ts +56 -0
- package/dist/models/SandboxAiAccessResponse.js +66 -0
- package/dist/models/SandboxAiUsage.d.ts +64 -0
- package/dist/models/SandboxAiUsage.js +72 -0
- package/dist/models/SandboxAiUsageResponse.d.ts +88 -0
- package/dist/models/SandboxAiUsageResponse.js +88 -0
- package/dist/models/SandboxEnvironment.d.ts +13 -1
- package/dist/models/SandboxEnvironment.js +4 -0
- package/dist/models/SetCredentialKeyRequest.d.ts +32 -0
- package/dist/models/SetCredentialKeyRequest.js +50 -0
- package/dist/models/SetCustomApiRequest.d.ts +38 -0
- package/dist/models/SetCustomApiRequest.js +54 -0
- package/dist/models/SetSandboxAiAccessRequest.d.ts +32 -0
- package/dist/models/SetSandboxAiAccessRequest.js +50 -0
- package/dist/models/SnapshotSummary.d.ts +14 -0
- package/dist/models/SnapshotSummary.js +10 -1
- package/dist/models/UpdateAiProxyRequest.d.ts +32 -0
- package/dist/models/UpdateAiProxyRequest.js +50 -0
- package/dist/models/UpdateCredentialProfileRequest.d.ts +38 -0
- package/dist/models/UpdateCredentialProfileRequest.js +50 -0
- package/dist/models/UpdateSandboxEnvironmentRequest.d.ts +12 -0
- package/dist/models/UpdateSandboxEnvironmentRequest.js +4 -0
- package/dist/models/index.d.ts +22 -0
- package/dist/models/index.js +22 -0
- package/docs/AccountAiUsageResponse.md +48 -0
- package/docs/AiProxySettings.md +48 -0
- package/docs/AiProxySettingsAllOfPricing.md +34 -0
- package/docs/AiUsageRow.md +48 -0
- package/docs/AiUsageTotals.md +43 -0
- package/docs/BoatApi.md +1568 -359
- package/docs/CreateCredentialProfileRequest.md +36 -0
- package/docs/CredentialId.md +31 -0
- package/docs/CredentialProfile.md +49 -0
- package/docs/CredentialProfileDeletedResponse.md +36 -0
- package/docs/CredentialProfileListResponse.md +36 -0
- package/docs/CredentialProfileOwner.md +38 -0
- package/docs/CredentialProfileResponse.md +38 -0
- package/docs/FileUrlRequest.md +34 -0
- package/docs/FileUrlResponse.md +42 -0
- package/docs/SandboxAiAccessResponse.md +40 -0
- package/docs/SandboxAiUsage.md +42 -0
- package/docs/SandboxAiUsageResponse.md +50 -0
- package/docs/SandboxEnvironment.md +4 -0
- package/docs/SetCredentialKeyRequest.md +32 -0
- package/docs/SetCustomApiRequest.md +34 -0
- package/docs/SetSandboxAiAccessRequest.md +32 -0
- package/docs/SnapshotSummary.md +2 -0
- package/docs/UpdateAiProxyRequest.md +32 -0
- package/docs/UpdateCredentialProfileRequest.md +34 -0
- package/docs/UpdateSandboxEnvironmentRequest.md +4 -0
- package/package.json +1 -1
- package/src/apis/BoatApi.ts +1257 -105
- package/src/models/AccountAiUsageResponse.ts +160 -0
- package/src/models/AiProxySettings.ts +146 -0
- package/src/models/AiProxySettingsAllOfPricing.ts +75 -0
- package/src/models/AiUsageRow.ts +138 -0
- package/src/models/AiUsageTotals.ts +111 -0
- package/src/models/CreateCredentialProfileRequest.ts +82 -0
- package/src/models/CredentialId.ts +64 -0
- package/src/models/CredentialProfile.ts +153 -0
- package/src/models/CredentialProfileDeletedResponse.ts +84 -0
- package/src/models/CredentialProfileListResponse.ts +92 -0
- package/src/models/CredentialProfileOwner.ts +104 -0
- package/src/models/CredentialProfileResponse.ts +101 -0
- package/src/models/DeletionOperation.ts +1 -1
- package/src/models/FileUrlRequest.ts +74 -0
- package/src/models/FileUrlResponse.ts +131 -0
- package/src/models/ProcessListResponse.ts +1 -1
- package/src/models/SandboxAiAccessResponse.ts +102 -0
- package/src/models/SandboxAiUsage.ts +126 -0
- package/src/models/SandboxAiUsageResponse.ts +162 -0
- package/src/models/SandboxEnvironment.ts +17 -1
- package/src/models/SetCredentialKeyRequest.ts +66 -0
- package/src/models/SetCustomApiRequest.ts +75 -0
- package/src/models/SetSandboxAiAccessRequest.ts +66 -0
- package/src/models/SnapshotSummary.ts +17 -0
- package/src/models/UpdateAiProxyRequest.ts +66 -0
- package/src/models/UpdateCredentialProfileRequest.ts +73 -0
- package/src/models/UpdateSandboxEnvironmentRequest.ts +16 -0
- package/src/models/index.ts +22 -0
package/docs/BoatApi.md
CHANGED
|
@@ -15,10 +15,16 @@ All URIs are relative to *https://boat.dev/api/v1*
|
|
|
15
15
|
| [**commandStatus**](BoatApi.md#commandstatus) | **GET** /sandboxes/{sandboxId}/commands/{processId} | Get detached command status and logs |
|
|
16
16
|
| [**conversations**](BoatApi.md#conversations) | **GET** /sandboxes/{sandboxId}/conversations | List boat conversations |
|
|
17
17
|
| [**create**](BoatApi.md#create) | **POST** /sandboxes | Create sandbox |
|
|
18
|
+
| [**createCredentialProfile**](BoatApi.md#createcredentialprofileoperation) | **POST** /credential-profiles | Create a credential profile |
|
|
19
|
+
| [**createDownloadUrl**](BoatApi.md#createdownloadurl) | **POST** /sandboxes/{sandboxId}/files/download-url | Get a download URL for a sandbox file |
|
|
18
20
|
| [**createEnvironment**](BoatApi.md#createenvironment) | **POST** /environments | Create a sandbox environment |
|
|
19
21
|
| [**createScopedApiKey**](BoatApi.md#createscopedapikeyoperation) | **POST** /api-keys/scoped | Create a scoped API key |
|
|
20
22
|
| [**createSnapshotShare**](BoatApi.md#createsnapshotshare) | **POST** /named-snapshots/{name}/shares | Share a named snapshot |
|
|
23
|
+
| [**createUploadUrl**](BoatApi.md#createuploadurl) | **POST** /sandboxes/{sandboxId}/files/upload-url | Get an upload URL for a sandbox file |
|
|
21
24
|
| [**createWebhook**](BoatApi.md#createwebhook) | **POST** /webhooks | Create webhook |
|
|
25
|
+
| [**deleteCredentialProfile**](BoatApi.md#deletecredentialprofile) | **DELETE** /credential-profiles/{profile} | Delete a credential profile |
|
|
26
|
+
| [**deleteCredentialProfileCustomApi**](BoatApi.md#deletecredentialprofilecustomapi) | **DELETE** /credential-profiles/{profile}/custom-apis/{name} | Remove a custom API |
|
|
27
|
+
| [**deleteCredentialProfileKey**](BoatApi.md#deletecredentialprofilekey) | **DELETE** /credential-profiles/{profile}/keys/{credential} | Remove a credential profile credential |
|
|
22
28
|
| [**deleteEnvironment**](BoatApi.md#deleteenvironment) | **DELETE** /environments/{environmentId} | Delete a sandbox environment |
|
|
23
29
|
| [**deleteEnvironmentRepo**](BoatApi.md#deleteenvironmentrepo) | **DELETE** /environments/{environmentId}/repos/{repositoryId} | Remove a repository from an environment |
|
|
24
30
|
| [**deleteEnvironmentSecretFile**](BoatApi.md#deleteenvironmentsecretfile) | **DELETE** /environments/{environmentId}/secret-files | Remove one secret file |
|
|
@@ -34,11 +40,14 @@ All URIs are relative to *https://boat.dev/api/v1*
|
|
|
34
40
|
| [**events**](BoatApi.md#events) | **GET** /sandboxes/{sandboxId}/events | List boat events |
|
|
35
41
|
| [**fork**](BoatApi.md#forkoperation) | **POST** /sandboxes/{sandboxId}/fork | Fork sandbox |
|
|
36
42
|
| [**get**](BoatApi.md#get) | **GET** /sandboxes/{sandboxId} | Get sandbox |
|
|
43
|
+
| [**getAiProxy**](BoatApi.md#getaiproxy) | **GET** /ai-proxy | Get AI credentials proxy |
|
|
44
|
+
| [**getAiUsage**](BoatApi.md#getaiusage) | **GET** /ai-usage | Get AI usage |
|
|
37
45
|
| [**getCommand**](BoatApi.md#getcommand) | **GET** /sandboxes/{sandboxId}/command-history/{commandId} | Get one command from the history |
|
|
38
46
|
| [**getDataRetention**](BoatApi.md#getdataretention) | **GET** /account/data-retention | Get account data-retention policy |
|
|
39
47
|
| [**getDeletionOperation**](BoatApi.md#getdeletionoperation) | **GET** /deletion-operations/{operationId} | Get deletion operation |
|
|
40
48
|
| [**getLatestSandboxSnapshot**](BoatApi.md#getlatestsandboxsnapshot) | **GET** /sandboxes/{sandboxId}/snapshots/latest | Get latest boat snapshot |
|
|
41
49
|
| [**getNamedSnapshot**](BoatApi.md#getnamedsnapshot) | **GET** /named-snapshots/{name} | Get a named snapshot |
|
|
50
|
+
| [**getSandboxAiUsage**](BoatApi.md#getsandboxaiusage) | **GET** /sandboxes/{sandboxId}/ai-usage | Get sandbox AI usage |
|
|
42
51
|
| [**getSnapshotDownload**](BoatApi.md#getsnapshotdownload) | **GET** /snapshots/{snapshotId}/download | Get snapshot download |
|
|
43
52
|
| [**getSnapshotFile**](BoatApi.md#getsnapshotfile) | **GET** /snapshots/{snapshotId}/files | Download a file or folder from a snapshot |
|
|
44
53
|
| [**getSnapshotTree**](BoatApi.md#getsnapshottree) | **GET** /snapshots/{snapshotId}/tree | Get snapshot file tree |
|
|
@@ -48,6 +57,7 @@ All URIs are relative to *https://boat.dev/api/v1*
|
|
|
48
57
|
| [**hostPort**](BoatApi.md#hostportoperation) | **POST** /sandboxes/{sandboxId}/host | Expose a sandbox port on a public HTTPS URL |
|
|
49
58
|
| [**interrupt**](BoatApi.md#interrupt) | **POST** /sandboxes/{sandboxId}/interrupt | Interrupt running work |
|
|
50
59
|
| [**limits**](BoatApi.md#limits) | **GET** /limits | Get Boat limits |
|
|
60
|
+
| [**listCredentialProfiles**](BoatApi.md#listcredentialprofiles) | **GET** /credential-profiles | List credential profiles |
|
|
51
61
|
| [**listNamedSnapshots**](BoatApi.md#listnamedsnapshots) | **GET** /named-snapshots | List named snapshots |
|
|
52
62
|
| [**listOrganizations**](BoatApi.md#listorganizations) | **GET** /orgs | List organizations |
|
|
53
63
|
| [**listSandboxSnapshots**](BoatApi.md#listsandboxsnapshots) | **GET** /sandboxes/{sandboxId}/snapshots | List boat snapshots |
|
|
@@ -71,8 +81,11 @@ All URIs are relative to *https://boat.dev/api/v1*
|
|
|
71
81
|
| [**secrets**](BoatApi.md#secrets) | **GET** /secrets | Get Boat secrets setup |
|
|
72
82
|
| [**selectRepo**](BoatApi.md#selectrepo) | **POST** /repos | Select repository for sandboxes |
|
|
73
83
|
| [**setActiveOrganization**](BoatApi.md#setactiveorganization) | **PATCH** /orgs/active | Set the active organization |
|
|
84
|
+
| [**setCredentialProfileCustomApi**](BoatApi.md#setcredentialprofilecustomapi) | **PUT** /credential-profiles/{profile}/custom-apis/{name} | Set a custom API |
|
|
85
|
+
| [**setCredentialProfileKey**](BoatApi.md#setcredentialprofilekey) | **PUT** /credential-profiles/{profile}/keys/{credential} | Set a credential profile API key |
|
|
74
86
|
| [**setEnvironmentSecretFile**](BoatApi.md#setenvironmentsecretfileoperation) | **PUT** /environments/{environmentId}/secret-files | Write one secret file |
|
|
75
87
|
| [**setEnvironmentVar**](BoatApi.md#setenvironmentvaroperation) | **PUT** /environments/{environmentId}/vars/{key} | Set one environment variable |
|
|
88
|
+
| [**setSandboxAiAccess**](BoatApi.md#setsandboxaiaccessoperation) | **PUT** /sandboxes/{sandboxId}/ai-access | Block or unblock sandbox AI access |
|
|
76
89
|
| [**setTelemetry**](BoatApi.md#settelemetry) | **PUT** /telemetry | Set OpenTelemetry export |
|
|
77
90
|
| [**share**](BoatApi.md#share) | **POST** /sandboxes/{sandboxId}/share | Share sandbox with the organization |
|
|
78
91
|
| [**sshKey**](BoatApi.md#sshkeyoperation) | **POST** /sandboxes/{sandboxId}/sshkey | Configure sandbox SSH key |
|
|
@@ -80,6 +93,8 @@ All URIs are relative to *https://boat.dev/api/v1*
|
|
|
80
93
|
| [**stop**](BoatApi.md#stopoperation) | **POST** /sandboxes/{sandboxId}/stop | Stop and archive sandbox |
|
|
81
94
|
| [**stopCommand**](BoatApi.md#stopcommand) | **DELETE** /sandboxes/{sandboxId}/commands/{processId} | Stop a detached command |
|
|
82
95
|
| [**update**](BoatApi.md#update) | **PATCH** /sandboxes/{sandboxId} | Update sandbox |
|
|
96
|
+
| [**updateAiProxy**](BoatApi.md#updateaiproxyoperation) | **PUT** /ai-proxy | Turn the AI credentials proxy on or off |
|
|
97
|
+
| [**updateCredentialProfile**](BoatApi.md#updatecredentialprofileoperation) | **PUT** /credential-profiles/{profile} | Update a credential profile |
|
|
83
98
|
| [**updateDataRetention**](BoatApi.md#updatedataretention) | **PATCH** /account/data-retention | Update account data-retention policy |
|
|
84
99
|
| [**updateEnvironment**](BoatApi.md#updateenvironment) | **PUT** /environments/{environmentId} | Update a sandbox environment |
|
|
85
100
|
| [**updateSecrets**](BoatApi.md#updatesecrets) | **POST** /secrets | Update Boat secrets setup |
|
|
@@ -92,7 +107,7 @@ All URIs are relative to *https://boat.dev/api/v1*
|
|
|
92
107
|
|
|
93
108
|
## addEnvironmentRepo
|
|
94
109
|
|
|
95
|
-
> EnvironmentItemChangeResponse addEnvironmentRepo(environmentId, addEnvironmentRepoRequest)
|
|
110
|
+
> EnvironmentItemChangeResponse addEnvironmentRepo(environmentId, addEnvironmentRepoRequest, org)
|
|
96
111
|
|
|
97
112
|
Add a repository to an environment
|
|
98
113
|
|
|
@@ -120,6 +135,8 @@ async function example() {
|
|
|
120
135
|
environmentId: 38400000-8cf0-11bd-b23e-10b96e4ef00d,
|
|
121
136
|
// AddEnvironmentRepoRequest
|
|
122
137
|
addEnvironmentRepoRequest: ...,
|
|
138
|
+
// string | Billing wallet for this request: an organization you belong to, by id (`team_…`) or by name as `GET /orgs` lists it (case-insensitive), or `personal`. Omitted, the account\'s active wallet applies (`PATCH /orgs/active`; personal until set). Two organizations sharing the name answer `409 ambiguous_org` and need the id. Sandboxes and snapshots stay creator-private. On `/environments` routes, only this query parameter selects the organization\'s shared environments; the `X-Boat-Org` header and the active wallet do not apply there. Members read them, owners and admins change them. (optional)
|
|
139
|
+
org: org_example,
|
|
123
140
|
} satisfies AddEnvironmentRepoOperationRequest;
|
|
124
141
|
|
|
125
142
|
try {
|
|
@@ -141,6 +158,7 @@ example().catch(console.error);
|
|
|
141
158
|
|------------- | ------------- | ------------- | -------------|
|
|
142
159
|
| **environmentId** | `string` | | [Defaults to `undefined`] |
|
|
143
160
|
| **addEnvironmentRepoRequest** | [AddEnvironmentRepoRequest](AddEnvironmentRepoRequest.md) | | |
|
|
161
|
+
| **org** | `string` | Billing wallet for this request: an organization you belong to, by id (`team_…`) or by name as `GET /orgs` lists it (case-insensitive), or `personal`. Omitted, the account\'s active wallet applies (`PATCH /orgs/active`; personal until set). Two organizations sharing the name answer `409 ambiguous_org` and need the id. Sandboxes and snapshots stay creator-private. On `/environments` routes, only this query parameter selects the organization\'s shared environments; the `X-Boat-Org` header and the active wallet do not apply there. Members read them, owners and admins change them. | [Optional] [Defaults to `undefined`] |
|
|
144
162
|
|
|
145
163
|
### Return type
|
|
146
164
|
|
|
@@ -905,7 +923,7 @@ async function example() {
|
|
|
905
923
|
const body = {
|
|
906
924
|
// 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)
|
|
907
925
|
idempotencyKey: idempotencyKey_example,
|
|
908
|
-
// string | Billing wallet for this request: an organization you belong to, by id (`team_…`) or by name as `GET /orgs` lists it (case-insensitive), or `personal`. Omitted, the account\'s active wallet applies (`PATCH /orgs/active`; personal until set). Two organizations sharing the name answer `409 ambiguous_org` and need the id. Sandboxes
|
|
926
|
+
// string | Billing wallet for this request: an organization you belong to, by id (`team_…`) or by name as `GET /orgs` lists it (case-insensitive), or `personal`. Omitted, the account\'s active wallet applies (`PATCH /orgs/active`; personal until set). Two organizations sharing the name answer `409 ambiguous_org` and need the id. Sandboxes and snapshots stay creator-private. On `/environments` routes, only this query parameter selects the organization\'s shared environments; the `X-Boat-Org` header and the active wallet do not apply there. Members read them, owners and admins change them. (optional)
|
|
909
927
|
org: org_example,
|
|
910
928
|
// string | Same as the `org` query parameter. Query wins when both are set. (optional)
|
|
911
929
|
xBoatOrg: xBoatOrg_example,
|
|
@@ -931,7 +949,7 @@ example().catch(console.error);
|
|
|
931
949
|
| Name | Type | Description | Notes |
|
|
932
950
|
|------------- | ------------- | ------------- | -------------|
|
|
933
951
|
| **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`] |
|
|
934
|
-
| **org** | `string` | Billing wallet for this request: an organization you belong to, by id (`team_…`) or by name as `GET /orgs` lists it (case-insensitive), or `personal`. Omitted, the account\'s active wallet applies (`PATCH /orgs/active`; personal until set). Two organizations sharing the name answer `409 ambiguous_org` and need the id. Sandboxes
|
|
952
|
+
| **org** | `string` | Billing wallet for this request: an organization you belong to, by id (`team_…`) or by name as `GET /orgs` lists it (case-insensitive), or `personal`. Omitted, the account\'s active wallet applies (`PATCH /orgs/active`; personal until set). Two organizations sharing the name answer `409 ambiguous_org` and need the id. Sandboxes and snapshots stay creator-private. On `/environments` routes, only this query parameter selects the organization\'s shared environments; the `X-Boat-Org` header and the active wallet do not apply there. Members read them, owners and admins change them. | [Optional] [Defaults to `undefined`] |
|
|
935
953
|
| **xBoatOrg** | `string` | Same as the `org` query parameter. Query wins when both are set. | [Optional] [Defaults to `undefined`] |
|
|
936
954
|
| **createSandboxRequest** | [CreateSandboxRequest](CreateSandboxRequest.md) | | [Optional] |
|
|
937
955
|
|
|
@@ -962,13 +980,13 @@ example().catch(console.error);
|
|
|
962
980
|
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
963
981
|
|
|
964
982
|
|
|
965
|
-
##
|
|
983
|
+
## createCredentialProfile
|
|
966
984
|
|
|
967
|
-
>
|
|
985
|
+
> CredentialProfileResponse createCredentialProfile(createCredentialProfileRequest)
|
|
968
986
|
|
|
969
|
-
Create a
|
|
987
|
+
Create a credential profile
|
|
970
988
|
|
|
971
|
-
|
|
989
|
+
Creates an empty profile, or a copy of `copyFrom`. With `org`, the profile belongs to that organization and only its owners can create it. Needs an API key with `account.admin`.
|
|
972
990
|
|
|
973
991
|
### Example
|
|
974
992
|
|
|
@@ -977,7 +995,7 @@ import {
|
|
|
977
995
|
Configuration,
|
|
978
996
|
BoatApi,
|
|
979
997
|
} from '@boatdev/sdk';
|
|
980
|
-
import type {
|
|
998
|
+
import type { CreateCredentialProfileOperationRequest } from '@boatdev/sdk';
|
|
981
999
|
|
|
982
1000
|
async function example() {
|
|
983
1001
|
console.log("🚀 Testing @boatdev/sdk SDK...");
|
|
@@ -988,12 +1006,12 @@ async function example() {
|
|
|
988
1006
|
const api = new BoatApi(config);
|
|
989
1007
|
|
|
990
1008
|
const body = {
|
|
991
|
-
//
|
|
992
|
-
|
|
993
|
-
} satisfies
|
|
1009
|
+
// CreateCredentialProfileRequest
|
|
1010
|
+
createCredentialProfileRequest: {"name":"work","copyFrom":"default"},
|
|
1011
|
+
} satisfies CreateCredentialProfileOperationRequest;
|
|
994
1012
|
|
|
995
1013
|
try {
|
|
996
|
-
const data = await api.
|
|
1014
|
+
const data = await api.createCredentialProfile(body);
|
|
997
1015
|
console.log(data);
|
|
998
1016
|
} catch (error) {
|
|
999
1017
|
console.error(error);
|
|
@@ -1009,11 +1027,11 @@ example().catch(console.error);
|
|
|
1009
1027
|
|
|
1010
1028
|
| Name | Type | Description | Notes |
|
|
1011
1029
|
|------------- | ------------- | ------------- | -------------|
|
|
1012
|
-
| **
|
|
1030
|
+
| **createCredentialProfileRequest** | [CreateCredentialProfileRequest](CreateCredentialProfileRequest.md) | | |
|
|
1013
1031
|
|
|
1014
1032
|
### Return type
|
|
1015
1033
|
|
|
1016
|
-
[**
|
|
1034
|
+
[**CredentialProfileResponse**](CredentialProfileResponse.md)
|
|
1017
1035
|
|
|
1018
1036
|
### Authorization
|
|
1019
1037
|
|
|
@@ -1028,21 +1046,22 @@ example().catch(console.error);
|
|
|
1028
1046
|
### HTTP response details
|
|
1029
1047
|
| Status code | Description | Response headers |
|
|
1030
1048
|
|-------------|-------------|------------------|
|
|
1031
|
-
| **
|
|
1049
|
+
| **201** | Profile created. | - |
|
|
1032
1050
|
| **400** | Invalid request body or parameters. | - |
|
|
1033
1051
|
| **401** | Missing or invalid bearer token. | - |
|
|
1052
|
+
| **403** | Authenticated token is not allowed to perform this action. | - |
|
|
1034
1053
|
| **409** | Request conflicts with current account or sandbox state. | - |
|
|
1035
1054
|
|
|
1036
1055
|
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
1037
1056
|
|
|
1038
1057
|
|
|
1039
|
-
##
|
|
1058
|
+
## createDownloadUrl
|
|
1040
1059
|
|
|
1041
|
-
>
|
|
1060
|
+
> FileUrlResponse createDownloadUrl(sandboxId, fileUrlRequest)
|
|
1042
1061
|
|
|
1043
|
-
|
|
1062
|
+
Get a download URL for a sandbox file
|
|
1044
1063
|
|
|
1045
|
-
|
|
1064
|
+
Returns a short-lived URL that the sandbox serves itself. GET it to download the file as raw bytes, with no size limit and no Authorization header. The URL is bound to this path and expires after `ttlSeconds` (default 15 minutes, at most 1 hour). Needs `file.read`. Treat the URL as a secret until it expires.
|
|
1046
1065
|
|
|
1047
1066
|
### Example
|
|
1048
1067
|
|
|
@@ -1051,7 +1070,7 @@ import {
|
|
|
1051
1070
|
Configuration,
|
|
1052
1071
|
BoatApi,
|
|
1053
1072
|
} from '@boatdev/sdk';
|
|
1054
|
-
import type {
|
|
1073
|
+
import type { CreateDownloadUrlRequest } from '@boatdev/sdk';
|
|
1055
1074
|
|
|
1056
1075
|
async function example() {
|
|
1057
1076
|
console.log("🚀 Testing @boatdev/sdk SDK...");
|
|
@@ -1062,12 +1081,14 @@ async function example() {
|
|
|
1062
1081
|
const api = new BoatApi(config);
|
|
1063
1082
|
|
|
1064
1083
|
const body = {
|
|
1065
|
-
//
|
|
1066
|
-
|
|
1067
|
-
|
|
1084
|
+
// string | Public Sandbox id returned by create/list/get sandbox calls.
|
|
1085
|
+
sandboxId: sandboxId_example,
|
|
1086
|
+
// FileUrlRequest
|
|
1087
|
+
fileUrlRequest: ...,
|
|
1088
|
+
} satisfies CreateDownloadUrlRequest;
|
|
1068
1089
|
|
|
1069
1090
|
try {
|
|
1070
|
-
const data = await api.
|
|
1091
|
+
const data = await api.createDownloadUrl(body);
|
|
1071
1092
|
console.log(data);
|
|
1072
1093
|
} catch (error) {
|
|
1073
1094
|
console.error(error);
|
|
@@ -1083,11 +1104,12 @@ example().catch(console.error);
|
|
|
1083
1104
|
|
|
1084
1105
|
| Name | Type | Description | Notes |
|
|
1085
1106
|
|------------- | ------------- | ------------- | -------------|
|
|
1086
|
-
| **
|
|
1107
|
+
| **sandboxId** | `string` | Public Sandbox id returned by create/list/get sandbox calls. | [Defaults to `undefined`] |
|
|
1108
|
+
| **fileUrlRequest** | [FileUrlRequest](FileUrlRequest.md) | | |
|
|
1087
1109
|
|
|
1088
1110
|
### Return type
|
|
1089
1111
|
|
|
1090
|
-
[**
|
|
1112
|
+
[**FileUrlResponse**](FileUrlResponse.md)
|
|
1091
1113
|
|
|
1092
1114
|
### Authorization
|
|
1093
1115
|
|
|
@@ -1102,22 +1124,22 @@ example().catch(console.error);
|
|
|
1102
1124
|
### HTTP response details
|
|
1103
1125
|
| Status code | Description | Response headers |
|
|
1104
1126
|
|-------------|-------------|------------------|
|
|
1105
|
-
| **
|
|
1127
|
+
| **200** | Signed download URL. | - |
|
|
1106
1128
|
| **400** | Invalid request body or parameters. | - |
|
|
1107
1129
|
| **401** | Missing or invalid bearer token. | - |
|
|
1108
|
-
| **
|
|
1109
|
-
| **
|
|
1130
|
+
| **404** | Resource not found. | - |
|
|
1131
|
+
| **409** | Request conflicts with current account or sandbox state. | - |
|
|
1110
1132
|
|
|
1111
1133
|
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
1112
1134
|
|
|
1113
1135
|
|
|
1114
|
-
##
|
|
1136
|
+
## createEnvironment
|
|
1115
1137
|
|
|
1116
|
-
>
|
|
1138
|
+
> SandboxEnvironmentListResponse createEnvironment(createSandboxEnvironmentRequest, org)
|
|
1117
1139
|
|
|
1118
|
-
|
|
1140
|
+
Create a sandbox environment
|
|
1119
1141
|
|
|
1120
|
-
|
|
1142
|
+
Create a new named environment. It starts on version 1 with all fine-grained flags on and `safeForThirdParties` off.
|
|
1121
1143
|
|
|
1122
1144
|
### Example
|
|
1123
1145
|
|
|
@@ -1126,7 +1148,7 @@ import {
|
|
|
1126
1148
|
Configuration,
|
|
1127
1149
|
BoatApi,
|
|
1128
1150
|
} from '@boatdev/sdk';
|
|
1129
|
-
import type {
|
|
1151
|
+
import type { CreateEnvironmentRequest } from '@boatdev/sdk';
|
|
1130
1152
|
|
|
1131
1153
|
async function example() {
|
|
1132
1154
|
console.log("🚀 Testing @boatdev/sdk SDK...");
|
|
@@ -1137,12 +1159,14 @@ async function example() {
|
|
|
1137
1159
|
const api = new BoatApi(config);
|
|
1138
1160
|
|
|
1139
1161
|
const body = {
|
|
1140
|
-
//
|
|
1141
|
-
|
|
1142
|
-
|
|
1162
|
+
// CreateSandboxEnvironmentRequest
|
|
1163
|
+
createSandboxEnvironmentRequest: ...,
|
|
1164
|
+
// string | Billing wallet for this request: an organization you belong to, by id (`team_…`) or by name as `GET /orgs` lists it (case-insensitive), or `personal`. Omitted, the account\'s active wallet applies (`PATCH /orgs/active`; personal until set). Two organizations sharing the name answer `409 ambiguous_org` and need the id. Sandboxes and snapshots stay creator-private. On `/environments` routes, only this query parameter selects the organization\'s shared environments; the `X-Boat-Org` header and the active wallet do not apply there. Members read them, owners and admins change them. (optional)
|
|
1165
|
+
org: org_example,
|
|
1166
|
+
} satisfies CreateEnvironmentRequest;
|
|
1143
1167
|
|
|
1144
1168
|
try {
|
|
1145
|
-
const data = await api.
|
|
1169
|
+
const data = await api.createEnvironment(body);
|
|
1146
1170
|
console.log(data);
|
|
1147
1171
|
} catch (error) {
|
|
1148
1172
|
console.error(error);
|
|
@@ -1158,11 +1182,12 @@ example().catch(console.error);
|
|
|
1158
1182
|
|
|
1159
1183
|
| Name | Type | Description | Notes |
|
|
1160
1184
|
|------------- | ------------- | ------------- | -------------|
|
|
1161
|
-
| **
|
|
1185
|
+
| **createSandboxEnvironmentRequest** | [CreateSandboxEnvironmentRequest](CreateSandboxEnvironmentRequest.md) | | |
|
|
1186
|
+
| **org** | `string` | Billing wallet for this request: an organization you belong to, by id (`team_…`) or by name as `GET /orgs` lists it (case-insensitive), or `personal`. Omitted, the account\'s active wallet applies (`PATCH /orgs/active`; personal until set). Two organizations sharing the name answer `409 ambiguous_org` and need the id. Sandboxes and snapshots stay creator-private. On `/environments` routes, only this query parameter selects the organization\'s shared environments; the `X-Boat-Org` header and the active wallet do not apply there. Members read them, owners and admins change them. | [Optional] [Defaults to `undefined`] |
|
|
1162
1187
|
|
|
1163
1188
|
### Return type
|
|
1164
1189
|
|
|
1165
|
-
[**
|
|
1190
|
+
[**SandboxEnvironmentListResponse**](SandboxEnvironmentListResponse.md)
|
|
1166
1191
|
|
|
1167
1192
|
### Authorization
|
|
1168
1193
|
|
|
@@ -1170,27 +1195,28 @@ example().catch(console.error);
|
|
|
1170
1195
|
|
|
1171
1196
|
### HTTP request headers
|
|
1172
1197
|
|
|
1173
|
-
- **Content-Type**:
|
|
1198
|
+
- **Content-Type**: `application/json`
|
|
1174
1199
|
- **Accept**: `application/json`
|
|
1175
1200
|
|
|
1176
1201
|
|
|
1177
1202
|
### HTTP response details
|
|
1178
1203
|
| Status code | Description | Response headers |
|
|
1179
1204
|
|-------------|-------------|------------------|
|
|
1180
|
-
| **
|
|
1205
|
+
| **200** | Environment created; full list returned. | - |
|
|
1206
|
+
| **400** | Invalid request body or parameters. | - |
|
|
1181
1207
|
| **401** | Missing or invalid bearer token. | - |
|
|
1182
|
-
| **
|
|
1208
|
+
| **409** | Request conflicts with current account or sandbox state. | - |
|
|
1183
1209
|
|
|
1184
1210
|
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
1185
1211
|
|
|
1186
1212
|
|
|
1187
|
-
##
|
|
1213
|
+
## createScopedApiKey
|
|
1188
1214
|
|
|
1189
|
-
>
|
|
1215
|
+
> ApiKeySecretResponse createScopedApiKey(createScopedApiKeyRequest)
|
|
1190
1216
|
|
|
1191
|
-
Create
|
|
1217
|
+
Create a scoped API key
|
|
1192
1218
|
|
|
1193
|
-
|
|
1219
|
+
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.
|
|
1194
1220
|
|
|
1195
1221
|
### Example
|
|
1196
1222
|
|
|
@@ -1199,7 +1225,7 @@ import {
|
|
|
1199
1225
|
Configuration,
|
|
1200
1226
|
BoatApi,
|
|
1201
1227
|
} from '@boatdev/sdk';
|
|
1202
|
-
import type {
|
|
1228
|
+
import type { CreateScopedApiKeyOperationRequest } from '@boatdev/sdk';
|
|
1203
1229
|
|
|
1204
1230
|
async function example() {
|
|
1205
1231
|
console.log("🚀 Testing @boatdev/sdk SDK...");
|
|
@@ -1210,12 +1236,12 @@ async function example() {
|
|
|
1210
1236
|
const api = new BoatApi(config);
|
|
1211
1237
|
|
|
1212
1238
|
const body = {
|
|
1213
|
-
//
|
|
1214
|
-
|
|
1215
|
-
} satisfies
|
|
1239
|
+
// CreateScopedApiKeyRequest
|
|
1240
|
+
createScopedApiKeyRequest: ...,
|
|
1241
|
+
} satisfies CreateScopedApiKeyOperationRequest;
|
|
1216
1242
|
|
|
1217
1243
|
try {
|
|
1218
|
-
const data = await api.
|
|
1244
|
+
const data = await api.createScopedApiKey(body);
|
|
1219
1245
|
console.log(data);
|
|
1220
1246
|
} catch (error) {
|
|
1221
1247
|
console.error(error);
|
|
@@ -1231,11 +1257,11 @@ example().catch(console.error);
|
|
|
1231
1257
|
|
|
1232
1258
|
| Name | Type | Description | Notes |
|
|
1233
1259
|
|------------- | ------------- | ------------- | -------------|
|
|
1234
|
-
| **
|
|
1260
|
+
| **createScopedApiKeyRequest** | [CreateScopedApiKeyRequest](CreateScopedApiKeyRequest.md) | | |
|
|
1235
1261
|
|
|
1236
1262
|
### Return type
|
|
1237
1263
|
|
|
1238
|
-
[**
|
|
1264
|
+
[**ApiKeySecretResponse**](ApiKeySecretResponse.md)
|
|
1239
1265
|
|
|
1240
1266
|
### Authorization
|
|
1241
1267
|
|
|
@@ -1250,21 +1276,22 @@ example().catch(console.error);
|
|
|
1250
1276
|
### HTTP response details
|
|
1251
1277
|
| Status code | Description | Response headers |
|
|
1252
1278
|
|-------------|-------------|------------------|
|
|
1253
|
-
| **201** |
|
|
1279
|
+
| **201** | Created key metadata plus the one-time secret. | - |
|
|
1254
1280
|
| **400** | Invalid request body or parameters. | - |
|
|
1255
1281
|
| **401** | Missing or invalid bearer token. | - |
|
|
1256
|
-
| **
|
|
1282
|
+
| **403** | Authenticated token is not allowed to perform this action. | - |
|
|
1283
|
+
| **503** | Scoped credential creation has not been activated yet. | - |
|
|
1257
1284
|
|
|
1258
1285
|
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
1259
1286
|
|
|
1260
1287
|
|
|
1261
|
-
##
|
|
1288
|
+
## createSnapshotShare
|
|
1262
1289
|
|
|
1263
|
-
>
|
|
1290
|
+
> NamedSnapshotShareCreatedResponse createSnapshotShare(name)
|
|
1264
1291
|
|
|
1265
|
-
|
|
1292
|
+
Share a named snapshot
|
|
1266
1293
|
|
|
1267
|
-
|
|
1294
|
+
Make a secret code that lets any Boat account create a sandbox from this named snapshot (`boat snapshot share <name>` in the CLI). The response shows the code once; Boat stores only a hash. Re-saving the name changes what the code deploys. Removing the name removes its codes. Everything on the disk is shared, so do not keep secrets in files on it. Needs `snapshot.write`.
|
|
1268
1295
|
|
|
1269
1296
|
### Example
|
|
1270
1297
|
|
|
@@ -1273,7 +1300,7 @@ import {
|
|
|
1273
1300
|
Configuration,
|
|
1274
1301
|
BoatApi,
|
|
1275
1302
|
} from '@boatdev/sdk';
|
|
1276
|
-
import type {
|
|
1303
|
+
import type { CreateSnapshotShareRequest } from '@boatdev/sdk';
|
|
1277
1304
|
|
|
1278
1305
|
async function example() {
|
|
1279
1306
|
console.log("🚀 Testing @boatdev/sdk SDK...");
|
|
@@ -1284,12 +1311,12 @@ async function example() {
|
|
|
1284
1311
|
const api = new BoatApi(config);
|
|
1285
1312
|
|
|
1286
1313
|
const body = {
|
|
1287
|
-
// string
|
|
1288
|
-
|
|
1289
|
-
} satisfies
|
|
1314
|
+
// string
|
|
1315
|
+
name: name_example,
|
|
1316
|
+
} satisfies CreateSnapshotShareRequest;
|
|
1290
1317
|
|
|
1291
1318
|
try {
|
|
1292
|
-
const data = await api.
|
|
1319
|
+
const data = await api.createSnapshotShare(body);
|
|
1293
1320
|
console.log(data);
|
|
1294
1321
|
} catch (error) {
|
|
1295
1322
|
console.error(error);
|
|
@@ -1305,11 +1332,11 @@ example().catch(console.error);
|
|
|
1305
1332
|
|
|
1306
1333
|
| Name | Type | Description | Notes |
|
|
1307
1334
|
|------------- | ------------- | ------------- | -------------|
|
|
1308
|
-
| **
|
|
1335
|
+
| **name** | `string` | | [Defaults to `undefined`] |
|
|
1309
1336
|
|
|
1310
1337
|
### Return type
|
|
1311
1338
|
|
|
1312
|
-
[**
|
|
1339
|
+
[**NamedSnapshotShareCreatedResponse**](NamedSnapshotShareCreatedResponse.md)
|
|
1313
1340
|
|
|
1314
1341
|
### Authorization
|
|
1315
1342
|
|
|
@@ -1324,21 +1351,20 @@ example().catch(console.error);
|
|
|
1324
1351
|
### HTTP response details
|
|
1325
1352
|
| Status code | Description | Response headers |
|
|
1326
1353
|
|-------------|-------------|------------------|
|
|
1327
|
-
| **
|
|
1354
|
+
| **201** | Code created. Store `shareCode` now; Boat does not show it again. | - |
|
|
1328
1355
|
| **401** | Missing or invalid bearer token. | - |
|
|
1329
1356
|
| **404** | Resource not found. | - |
|
|
1330
|
-
| **409** | Request conflicts with current account or sandbox state. | - |
|
|
1331
1357
|
|
|
1332
1358
|
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
1333
1359
|
|
|
1334
1360
|
|
|
1335
|
-
##
|
|
1361
|
+
## createUploadUrl
|
|
1336
1362
|
|
|
1337
|
-
>
|
|
1363
|
+
> FileUrlResponse createUploadUrl(sandboxId, fileUrlRequest)
|
|
1338
1364
|
|
|
1339
|
-
|
|
1365
|
+
Get an upload URL for a sandbox file
|
|
1340
1366
|
|
|
1341
|
-
|
|
1367
|
+
Returns a short-lived URL that the sandbox serves itself. PUT the file as the raw request body to write it, with no size limit and no Authorization header. Missing directories are created; an existing file is replaced only once the upload completes. The URL is bound to this path and expires after `ttlSeconds` (default 15 minutes, at most 1 hour). Needs `file.write`. Treat the URL as a secret until it expires.
|
|
1342
1368
|
|
|
1343
1369
|
### Example
|
|
1344
1370
|
|
|
@@ -1347,7 +1373,7 @@ import {
|
|
|
1347
1373
|
Configuration,
|
|
1348
1374
|
BoatApi,
|
|
1349
1375
|
} from '@boatdev/sdk';
|
|
1350
|
-
import type {
|
|
1376
|
+
import type { CreateUploadUrlRequest } from '@boatdev/sdk';
|
|
1351
1377
|
|
|
1352
1378
|
async function example() {
|
|
1353
1379
|
console.log("🚀 Testing @boatdev/sdk SDK...");
|
|
@@ -1358,14 +1384,14 @@ async function example() {
|
|
|
1358
1384
|
const api = new BoatApi(config);
|
|
1359
1385
|
|
|
1360
1386
|
const body = {
|
|
1361
|
-
// string
|
|
1362
|
-
|
|
1363
|
-
//
|
|
1364
|
-
|
|
1365
|
-
} satisfies
|
|
1387
|
+
// string | Public Sandbox id returned by create/list/get sandbox calls.
|
|
1388
|
+
sandboxId: sandboxId_example,
|
|
1389
|
+
// FileUrlRequest
|
|
1390
|
+
fileUrlRequest: ...,
|
|
1391
|
+
} satisfies CreateUploadUrlRequest;
|
|
1366
1392
|
|
|
1367
1393
|
try {
|
|
1368
|
-
const data = await api.
|
|
1394
|
+
const data = await api.createUploadUrl(body);
|
|
1369
1395
|
console.log(data);
|
|
1370
1396
|
} catch (error) {
|
|
1371
1397
|
console.error(error);
|
|
@@ -1381,12 +1407,12 @@ example().catch(console.error);
|
|
|
1381
1407
|
|
|
1382
1408
|
| Name | Type | Description | Notes |
|
|
1383
1409
|
|------------- | ------------- | ------------- | -------------|
|
|
1384
|
-
| **
|
|
1385
|
-
| **
|
|
1410
|
+
| **sandboxId** | `string` | Public Sandbox id returned by create/list/get sandbox calls. | [Defaults to `undefined`] |
|
|
1411
|
+
| **fileUrlRequest** | [FileUrlRequest](FileUrlRequest.md) | | |
|
|
1386
1412
|
|
|
1387
1413
|
### Return type
|
|
1388
1414
|
|
|
1389
|
-
[**
|
|
1415
|
+
[**FileUrlResponse**](FileUrlResponse.md)
|
|
1390
1416
|
|
|
1391
1417
|
### Authorization
|
|
1392
1418
|
|
|
@@ -1394,27 +1420,29 @@ example().catch(console.error);
|
|
|
1394
1420
|
|
|
1395
1421
|
### HTTP request headers
|
|
1396
1422
|
|
|
1397
|
-
- **Content-Type**:
|
|
1423
|
+
- **Content-Type**: `application/json`
|
|
1398
1424
|
- **Accept**: `application/json`
|
|
1399
1425
|
|
|
1400
1426
|
|
|
1401
1427
|
### HTTP response details
|
|
1402
1428
|
| Status code | Description | Response headers |
|
|
1403
1429
|
|-------------|-------------|------------------|
|
|
1404
|
-
| **200** |
|
|
1430
|
+
| **200** | Signed upload URL. | - |
|
|
1431
|
+
| **400** | Invalid request body or parameters. | - |
|
|
1405
1432
|
| **401** | Missing or invalid bearer token. | - |
|
|
1406
1433
|
| **404** | Resource not found. | - |
|
|
1434
|
+
| **409** | Request conflicts with current account or sandbox state. | - |
|
|
1407
1435
|
|
|
1408
1436
|
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
1409
1437
|
|
|
1410
1438
|
|
|
1411
|
-
##
|
|
1439
|
+
## createWebhook
|
|
1412
1440
|
|
|
1413
|
-
>
|
|
1441
|
+
> WebhookSecretResponse createWebhook(webhookCreateRequest)
|
|
1414
1442
|
|
|
1415
|
-
|
|
1443
|
+
Create webhook
|
|
1416
1444
|
|
|
1417
|
-
|
|
1445
|
+
Registers an account-wide endpoint for sandbox lifecycle events. The endpoint must use HTTPS on port 443 and resolve only to public addresses. Redirects are not followed during delivery. The signing secret is returned only in this response. An account can register at most 10 unique endpoint URLs.
|
|
1418
1446
|
|
|
1419
1447
|
### Example
|
|
1420
1448
|
|
|
@@ -1423,7 +1451,7 @@ import {
|
|
|
1423
1451
|
Configuration,
|
|
1424
1452
|
BoatApi,
|
|
1425
1453
|
} from '@boatdev/sdk';
|
|
1426
|
-
import type {
|
|
1454
|
+
import type { CreateWebhookRequest } from '@boatdev/sdk';
|
|
1427
1455
|
|
|
1428
1456
|
async function example() {
|
|
1429
1457
|
console.log("🚀 Testing @boatdev/sdk SDK...");
|
|
@@ -1434,14 +1462,12 @@ async function example() {
|
|
|
1434
1462
|
const api = new BoatApi(config);
|
|
1435
1463
|
|
|
1436
1464
|
const body = {
|
|
1437
|
-
//
|
|
1438
|
-
|
|
1439
|
-
|
|
1440
|
-
environmentId: 38400000-8cf0-11bd-b23e-10b96e4ef00d,
|
|
1441
|
-
} satisfies DeleteEnvironmentSecretFileRequest;
|
|
1465
|
+
// WebhookCreateRequest
|
|
1466
|
+
webhookCreateRequest: {"name":"Production automation","url":"https://example.com/hooks/sandbox","events":["sandbox.ready","sandbox.error"]},
|
|
1467
|
+
} satisfies CreateWebhookRequest;
|
|
1442
1468
|
|
|
1443
1469
|
try {
|
|
1444
|
-
const data = await api.
|
|
1470
|
+
const data = await api.createWebhook(body);
|
|
1445
1471
|
console.log(data);
|
|
1446
1472
|
} catch (error) {
|
|
1447
1473
|
console.error(error);
|
|
@@ -1457,12 +1483,11 @@ example().catch(console.error);
|
|
|
1457
1483
|
|
|
1458
1484
|
| Name | Type | Description | Notes |
|
|
1459
1485
|
|------------- | ------------- | ------------- | -------------|
|
|
1460
|
-
| **
|
|
1461
|
-
| **environmentId** | `string` | | [Defaults to `undefined`] |
|
|
1486
|
+
| **webhookCreateRequest** | [WebhookCreateRequest](WebhookCreateRequest.md) | | |
|
|
1462
1487
|
|
|
1463
1488
|
### Return type
|
|
1464
1489
|
|
|
1465
|
-
[**
|
|
1490
|
+
[**WebhookSecretResponse**](WebhookSecretResponse.md)
|
|
1466
1491
|
|
|
1467
1492
|
### Authorization
|
|
1468
1493
|
|
|
@@ -1470,27 +1495,28 @@ example().catch(console.error);
|
|
|
1470
1495
|
|
|
1471
1496
|
### HTTP request headers
|
|
1472
1497
|
|
|
1473
|
-
- **Content-Type**:
|
|
1498
|
+
- **Content-Type**: `application/json`
|
|
1474
1499
|
- **Accept**: `application/json`
|
|
1475
1500
|
|
|
1476
1501
|
|
|
1477
1502
|
### HTTP response details
|
|
1478
1503
|
| Status code | Description | Response headers |
|
|
1479
1504
|
|-------------|-------------|------------------|
|
|
1480
|
-
| **
|
|
1505
|
+
| **201** | Webhook created. Store the one-time signing secret now. | - |
|
|
1506
|
+
| **400** | Invalid request body or parameters. | - |
|
|
1481
1507
|
| **401** | Missing or invalid bearer token. | - |
|
|
1482
|
-
| **
|
|
1508
|
+
| **409** | Request conflicts with current account or sandbox state. | - |
|
|
1483
1509
|
|
|
1484
1510
|
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
1485
1511
|
|
|
1486
1512
|
|
|
1487
|
-
##
|
|
1513
|
+
## deleteCredentialProfile
|
|
1488
1514
|
|
|
1489
|
-
>
|
|
1515
|
+
> CredentialProfileDeletedResponse deleteCredentialProfile(profile)
|
|
1490
1516
|
|
|
1491
|
-
|
|
1517
|
+
Delete a credential profile
|
|
1492
1518
|
|
|
1493
|
-
|
|
1519
|
+
Deletes the profile. A default profile returns `409 is_default`. A profile that an environment names returns `409 in_use`. Needs an API key with `account.admin`.
|
|
1494
1520
|
|
|
1495
1521
|
### Example
|
|
1496
1522
|
|
|
@@ -1499,7 +1525,7 @@ import {
|
|
|
1499
1525
|
Configuration,
|
|
1500
1526
|
BoatApi,
|
|
1501
1527
|
} from '@boatdev/sdk';
|
|
1502
|
-
import type {
|
|
1528
|
+
import type { DeleteCredentialProfileRequest } from '@boatdev/sdk';
|
|
1503
1529
|
|
|
1504
1530
|
async function example() {
|
|
1505
1531
|
console.log("🚀 Testing @boatdev/sdk SDK...");
|
|
@@ -1510,14 +1536,12 @@ async function example() {
|
|
|
1510
1536
|
const api = new BoatApi(config);
|
|
1511
1537
|
|
|
1512
1538
|
const body = {
|
|
1513
|
-
// string
|
|
1514
|
-
|
|
1515
|
-
|
|
1516
|
-
key: key_example,
|
|
1517
|
-
} satisfies DeleteEnvironmentVarRequest;
|
|
1539
|
+
// string | Profile id or name.
|
|
1540
|
+
profile: profile_example,
|
|
1541
|
+
} satisfies DeleteCredentialProfileRequest;
|
|
1518
1542
|
|
|
1519
1543
|
try {
|
|
1520
|
-
const data = await api.
|
|
1544
|
+
const data = await api.deleteCredentialProfile(body);
|
|
1521
1545
|
console.log(data);
|
|
1522
1546
|
} catch (error) {
|
|
1523
1547
|
console.error(error);
|
|
@@ -1533,12 +1557,11 @@ example().catch(console.error);
|
|
|
1533
1557
|
|
|
1534
1558
|
| Name | Type | Description | Notes |
|
|
1535
1559
|
|------------- | ------------- | ------------- | -------------|
|
|
1536
|
-
| **
|
|
1537
|
-
| **key** | `string` | Environment variable name. | [Defaults to `undefined`] |
|
|
1560
|
+
| **profile** | `string` | Profile id or name. | [Defaults to `undefined`] |
|
|
1538
1561
|
|
|
1539
1562
|
### Return type
|
|
1540
1563
|
|
|
1541
|
-
[**
|
|
1564
|
+
[**CredentialProfileDeletedResponse**](CredentialProfileDeletedResponse.md)
|
|
1542
1565
|
|
|
1543
1566
|
### Authorization
|
|
1544
1567
|
|
|
@@ -1553,20 +1576,22 @@ example().catch(console.error);
|
|
|
1553
1576
|
### HTTP response details
|
|
1554
1577
|
| Status code | Description | Response headers |
|
|
1555
1578
|
|-------------|-------------|------------------|
|
|
1556
|
-
| **200** |
|
|
1579
|
+
| **200** | Profile deleted. | - |
|
|
1557
1580
|
| **401** | Missing or invalid bearer token. | - |
|
|
1581
|
+
| **403** | Authenticated token is not allowed to perform this action. | - |
|
|
1558
1582
|
| **404** | Resource not found. | - |
|
|
1583
|
+
| **409** | Request conflicts with current account or sandbox state. | - |
|
|
1559
1584
|
|
|
1560
1585
|
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
1561
1586
|
|
|
1562
1587
|
|
|
1563
|
-
##
|
|
1588
|
+
## deleteCredentialProfileCustomApi
|
|
1564
1589
|
|
|
1565
|
-
>
|
|
1590
|
+
> CredentialProfileResponse deleteCredentialProfileCustomApi(profile, name)
|
|
1566
1591
|
|
|
1567
|
-
Remove a
|
|
1592
|
+
Remove a custom API
|
|
1568
1593
|
|
|
1569
|
-
|
|
1594
|
+
Removes one custom API from the profile. Needs an API key with `account.admin`.
|
|
1570
1595
|
|
|
1571
1596
|
### Example
|
|
1572
1597
|
|
|
@@ -1575,7 +1600,7 @@ import {
|
|
|
1575
1600
|
Configuration,
|
|
1576
1601
|
BoatApi,
|
|
1577
1602
|
} from '@boatdev/sdk';
|
|
1578
|
-
import type {
|
|
1603
|
+
import type { DeleteCredentialProfileCustomApiRequest } from '@boatdev/sdk';
|
|
1579
1604
|
|
|
1580
1605
|
async function example() {
|
|
1581
1606
|
console.log("🚀 Testing @boatdev/sdk SDK...");
|
|
@@ -1586,12 +1611,14 @@ async function example() {
|
|
|
1586
1611
|
const api = new BoatApi(config);
|
|
1587
1612
|
|
|
1588
1613
|
const body = {
|
|
1589
|
-
// string
|
|
1614
|
+
// string | Profile id or name.
|
|
1615
|
+
profile: profile_example,
|
|
1616
|
+
// string | Environment variable name of the custom API, for example `STRIPE_KEY`. Provider names (`ANTHROPIC_*`, `OPENAI_*`, and so on) and names that end in `_BASE_URL` are reserved.
|
|
1590
1617
|
name: name_example,
|
|
1591
|
-
} satisfies
|
|
1618
|
+
} satisfies DeleteCredentialProfileCustomApiRequest;
|
|
1592
1619
|
|
|
1593
1620
|
try {
|
|
1594
|
-
const data = await api.
|
|
1621
|
+
const data = await api.deleteCredentialProfileCustomApi(body);
|
|
1595
1622
|
console.log(data);
|
|
1596
1623
|
} catch (error) {
|
|
1597
1624
|
console.error(error);
|
|
@@ -1607,11 +1634,12 @@ example().catch(console.error);
|
|
|
1607
1634
|
|
|
1608
1635
|
| Name | Type | Description | Notes |
|
|
1609
1636
|
|------------- | ------------- | ------------- | -------------|
|
|
1610
|
-
| **
|
|
1637
|
+
| **profile** | `string` | Profile id or name. | [Defaults to `undefined`] |
|
|
1638
|
+
| **name** | `string` | Environment variable name of the custom API, for example `STRIPE_KEY`. Provider names (`ANTHROPIC_*`, `OPENAI_*`, and so on) and names that end in `_BASE_URL` are reserved. | [Defaults to `undefined`] |
|
|
1611
1639
|
|
|
1612
1640
|
### Return type
|
|
1613
1641
|
|
|
1614
|
-
[**
|
|
1642
|
+
[**CredentialProfileResponse**](CredentialProfileResponse.md)
|
|
1615
1643
|
|
|
1616
1644
|
### Authorization
|
|
1617
1645
|
|
|
@@ -1626,21 +1654,21 @@ example().catch(console.error);
|
|
|
1626
1654
|
### HTTP response details
|
|
1627
1655
|
| Status code | Description | Response headers |
|
|
1628
1656
|
|-------------|-------------|------------------|
|
|
1629
|
-
| **200** |
|
|
1657
|
+
| **200** | The updated profile. | - |
|
|
1630
1658
|
| **401** | Missing or invalid bearer token. | - |
|
|
1659
|
+
| **403** | Authenticated token is not allowed to perform this action. | - |
|
|
1631
1660
|
| **404** | Resource not found. | - |
|
|
1632
|
-
| **409** | `save_in_progress`: a save under this name is still running. Wait for it to settle before removing it. | - |
|
|
1633
1661
|
|
|
1634
1662
|
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
1635
1663
|
|
|
1636
1664
|
|
|
1637
|
-
##
|
|
1665
|
+
## deleteCredentialProfileKey
|
|
1638
1666
|
|
|
1639
|
-
>
|
|
1667
|
+
> CredentialProfileResponse deleteCredentialProfileKey(profile, credential)
|
|
1640
1668
|
|
|
1641
|
-
|
|
1669
|
+
Remove a credential profile credential
|
|
1642
1670
|
|
|
1643
|
-
|
|
1671
|
+
Removes one credential, an API key or a sign-in. Needs an API key with `account.admin`.
|
|
1644
1672
|
|
|
1645
1673
|
### Example
|
|
1646
1674
|
|
|
@@ -1649,7 +1677,7 @@ import {
|
|
|
1649
1677
|
Configuration,
|
|
1650
1678
|
BoatApi,
|
|
1651
1679
|
} from '@boatdev/sdk';
|
|
1652
|
-
import type {
|
|
1680
|
+
import type { DeleteCredentialProfileKeyRequest } from '@boatdev/sdk';
|
|
1653
1681
|
|
|
1654
1682
|
async function example() {
|
|
1655
1683
|
console.log("🚀 Testing @boatdev/sdk SDK...");
|
|
@@ -1660,14 +1688,14 @@ async function example() {
|
|
|
1660
1688
|
const api = new BoatApi(config);
|
|
1661
1689
|
|
|
1662
1690
|
const body = {
|
|
1663
|
-
// string |
|
|
1664
|
-
|
|
1665
|
-
//
|
|
1666
|
-
|
|
1667
|
-
} satisfies
|
|
1691
|
+
// string | Profile id or name.
|
|
1692
|
+
profile: profile_example,
|
|
1693
|
+
// CredentialId
|
|
1694
|
+
credential: ...,
|
|
1695
|
+
} satisfies DeleteCredentialProfileKeyRequest;
|
|
1668
1696
|
|
|
1669
1697
|
try {
|
|
1670
|
-
const data = await api.
|
|
1698
|
+
const data = await api.deleteCredentialProfileKey(body);
|
|
1671
1699
|
console.log(data);
|
|
1672
1700
|
} catch (error) {
|
|
1673
1701
|
console.error(error);
|
|
@@ -1683,12 +1711,12 @@ example().catch(console.error);
|
|
|
1683
1711
|
|
|
1684
1712
|
| Name | Type | Description | Notes |
|
|
1685
1713
|
|------------- | ------------- | ------------- | -------------|
|
|
1686
|
-
| **
|
|
1687
|
-
| **
|
|
1714
|
+
| **profile** | `string` | Profile id or name. | [Defaults to `undefined`] |
|
|
1715
|
+
| **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] |
|
|
1688
1716
|
|
|
1689
1717
|
### Return type
|
|
1690
1718
|
|
|
1691
|
-
[**
|
|
1719
|
+
[**CredentialProfileResponse**](CredentialProfileResponse.md)
|
|
1692
1720
|
|
|
1693
1721
|
### Authorization
|
|
1694
1722
|
|
|
@@ -1703,22 +1731,22 @@ example().catch(console.error);
|
|
|
1703
1731
|
### HTTP response details
|
|
1704
1732
|
| Status code | Description | Response headers |
|
|
1705
1733
|
|-------------|-------------|------------------|
|
|
1706
|
-
| **
|
|
1734
|
+
| **200** | The updated profile. | - |
|
|
1735
|
+
| **400** | Invalid request body or parameters. | - |
|
|
1707
1736
|
| **401** | Missing or invalid bearer token. | - |
|
|
1708
1737
|
| **403** | Authenticated token is not allowed to perform this action. | - |
|
|
1709
1738
|
| **404** | Resource not found. | - |
|
|
1710
|
-
| **409** | Request conflicts with current account or sandbox state. | - |
|
|
1711
1739
|
|
|
1712
1740
|
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
1713
1741
|
|
|
1714
1742
|
|
|
1715
|
-
##
|
|
1743
|
+
## deleteEnvironment
|
|
1716
1744
|
|
|
1717
|
-
>
|
|
1745
|
+
> SandboxEnvironmentResponse deleteEnvironment(environmentId, org)
|
|
1718
1746
|
|
|
1719
|
-
|
|
1747
|
+
Delete a sandbox environment
|
|
1720
1748
|
|
|
1721
|
-
|
|
1749
|
+
Soft-deletes an environment. The default environment cannot be deleted, and at least one environment is always kept.
|
|
1722
1750
|
|
|
1723
1751
|
### Example
|
|
1724
1752
|
|
|
@@ -1727,7 +1755,7 @@ import {
|
|
|
1727
1755
|
Configuration,
|
|
1728
1756
|
BoatApi,
|
|
1729
1757
|
} from '@boatdev/sdk';
|
|
1730
|
-
import type {
|
|
1758
|
+
import type { DeleteEnvironmentRequest } from '@boatdev/sdk';
|
|
1731
1759
|
|
|
1732
1760
|
async function example() {
|
|
1733
1761
|
console.log("🚀 Testing @boatdev/sdk SDK...");
|
|
@@ -1738,14 +1766,14 @@ async function example() {
|
|
|
1738
1766
|
const api = new BoatApi(config);
|
|
1739
1767
|
|
|
1740
1768
|
const body = {
|
|
1741
|
-
// string |
|
|
1742
|
-
|
|
1743
|
-
// string |
|
|
1744
|
-
|
|
1745
|
-
} satisfies
|
|
1769
|
+
// string | Environment id returned by `GET /environments`.
|
|
1770
|
+
environmentId: 38400000-8cf0-11bd-b23e-10b96e4ef00d,
|
|
1771
|
+
// string | Billing wallet for this request: an organization you belong to, by id (`team_…`) or by name as `GET /orgs` lists it (case-insensitive), or `personal`. Omitted, the account\'s active wallet applies (`PATCH /orgs/active`; personal until set). Two organizations sharing the name answer `409 ambiguous_org` and need the id. Sandboxes and snapshots stay creator-private. On `/environments` routes, only this query parameter selects the organization\'s shared environments; the `X-Boat-Org` header and the active wallet do not apply there. Members read them, owners and admins change them. (optional)
|
|
1772
|
+
org: org_example,
|
|
1773
|
+
} satisfies DeleteEnvironmentRequest;
|
|
1746
1774
|
|
|
1747
1775
|
try {
|
|
1748
|
-
const data = await api.
|
|
1776
|
+
const data = await api.deleteEnvironment(body);
|
|
1749
1777
|
console.log(data);
|
|
1750
1778
|
} catch (error) {
|
|
1751
1779
|
console.error(error);
|
|
@@ -1761,12 +1789,12 @@ example().catch(console.error);
|
|
|
1761
1789
|
|
|
1762
1790
|
| Name | Type | Description | Notes |
|
|
1763
1791
|
|------------- | ------------- | ------------- | -------------|
|
|
1764
|
-
| **
|
|
1765
|
-
| **
|
|
1792
|
+
| **environmentId** | `string` | Environment id returned by `GET /environments`. | [Defaults to `undefined`] |
|
|
1793
|
+
| **org** | `string` | Billing wallet for this request: an organization you belong to, by id (`team_…`) or by name as `GET /orgs` lists it (case-insensitive), or `personal`. Omitted, the account\'s active wallet applies (`PATCH /orgs/active`; personal until set). Two organizations sharing the name answer `409 ambiguous_org` and need the id. Sandboxes and snapshots stay creator-private. On `/environments` routes, only this query parameter selects the organization\'s shared environments; the `X-Boat-Org` header and the active wallet do not apply there. Members read them, owners and admins change them. | [Optional] [Defaults to `undefined`] |
|
|
1766
1794
|
|
|
1767
1795
|
### Return type
|
|
1768
1796
|
|
|
1769
|
-
[**
|
|
1797
|
+
[**SandboxEnvironmentResponse**](SandboxEnvironmentResponse.md)
|
|
1770
1798
|
|
|
1771
1799
|
### Authorization
|
|
1772
1800
|
|
|
@@ -1781,22 +1809,21 @@ example().catch(console.error);
|
|
|
1781
1809
|
### HTTP response details
|
|
1782
1810
|
| Status code | Description | Response headers |
|
|
1783
1811
|
|-------------|-------------|------------------|
|
|
1784
|
-
| **
|
|
1812
|
+
| **200** | Environment soft-deleted. | - |
|
|
1785
1813
|
| **401** | Missing or invalid bearer token. | - |
|
|
1786
|
-
| **403** | Authenticated token is not allowed to perform this action. | - |
|
|
1787
1814
|
| **404** | Resource not found. | - |
|
|
1788
1815
|
| **409** | Request conflicts with current account or sandbox state. | - |
|
|
1789
1816
|
|
|
1790
1817
|
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
1791
1818
|
|
|
1792
1819
|
|
|
1793
|
-
##
|
|
1820
|
+
## deleteEnvironmentRepo
|
|
1794
1821
|
|
|
1795
|
-
>
|
|
1822
|
+
> EnvironmentItemChangeResponse deleteEnvironmentRepo(environmentId, repositoryId, org)
|
|
1796
1823
|
|
|
1797
|
-
|
|
1824
|
+
Remove a repository from an environment
|
|
1798
1825
|
|
|
1799
|
-
|
|
1826
|
+
Removes one repository from the environment\'s selection. Mints a new immutable version.
|
|
1800
1827
|
|
|
1801
1828
|
### Example
|
|
1802
1829
|
|
|
@@ -1805,7 +1832,7 @@ import {
|
|
|
1805
1832
|
Configuration,
|
|
1806
1833
|
BoatApi,
|
|
1807
1834
|
} from '@boatdev/sdk';
|
|
1808
|
-
import type {
|
|
1835
|
+
import type { DeleteEnvironmentRepoRequest } from '@boatdev/sdk';
|
|
1809
1836
|
|
|
1810
1837
|
async function example() {
|
|
1811
1838
|
console.log("🚀 Testing @boatdev/sdk SDK...");
|
|
@@ -1816,15 +1843,482 @@ async function example() {
|
|
|
1816
1843
|
const api = new BoatApi(config);
|
|
1817
1844
|
|
|
1818
1845
|
const body = {
|
|
1819
|
-
// string
|
|
1820
|
-
|
|
1821
|
-
// string |
|
|
1822
|
-
|
|
1823
|
-
|
|
1824
|
-
|
|
1825
|
-
|
|
1826
|
-
|
|
1827
|
-
|
|
1846
|
+
// string
|
|
1847
|
+
environmentId: 38400000-8cf0-11bd-b23e-10b96e4ef00d,
|
|
1848
|
+
// string | The repository `databaseId`.
|
|
1849
|
+
repositoryId: repositoryId_example,
|
|
1850
|
+
// string | Billing wallet for this request: an organization you belong to, by id (`team_…`) or by name as `GET /orgs` lists it (case-insensitive), or `personal`. Omitted, the account\'s active wallet applies (`PATCH /orgs/active`; personal until set). Two organizations sharing the name answer `409 ambiguous_org` and need the id. Sandboxes and snapshots stay creator-private. On `/environments` routes, only this query parameter selects the organization\'s shared environments; the `X-Boat-Org` header and the active wallet do not apply there. Members read them, owners and admins change them. (optional)
|
|
1851
|
+
org: org_example,
|
|
1852
|
+
} satisfies DeleteEnvironmentRepoRequest;
|
|
1853
|
+
|
|
1854
|
+
try {
|
|
1855
|
+
const data = await api.deleteEnvironmentRepo(body);
|
|
1856
|
+
console.log(data);
|
|
1857
|
+
} catch (error) {
|
|
1858
|
+
console.error(error);
|
|
1859
|
+
}
|
|
1860
|
+
}
|
|
1861
|
+
|
|
1862
|
+
// Run the test
|
|
1863
|
+
example().catch(console.error);
|
|
1864
|
+
```
|
|
1865
|
+
|
|
1866
|
+
### Parameters
|
|
1867
|
+
|
|
1868
|
+
|
|
1869
|
+
| Name | Type | Description | Notes |
|
|
1870
|
+
|------------- | ------------- | ------------- | -------------|
|
|
1871
|
+
| **environmentId** | `string` | | [Defaults to `undefined`] |
|
|
1872
|
+
| **repositoryId** | `string` | The repository `databaseId`. | [Defaults to `undefined`] |
|
|
1873
|
+
| **org** | `string` | Billing wallet for this request: an organization you belong to, by id (`team_…`) or by name as `GET /orgs` lists it (case-insensitive), or `personal`. Omitted, the account\'s active wallet applies (`PATCH /orgs/active`; personal until set). Two organizations sharing the name answer `409 ambiguous_org` and need the id. Sandboxes and snapshots stay creator-private. On `/environments` routes, only this query parameter selects the organization\'s shared environments; the `X-Boat-Org` header and the active wallet do not apply there. Members read them, owners and admins change them. | [Optional] [Defaults to `undefined`] |
|
|
1874
|
+
|
|
1875
|
+
### Return type
|
|
1876
|
+
|
|
1877
|
+
[**EnvironmentItemChangeResponse**](EnvironmentItemChangeResponse.md)
|
|
1878
|
+
|
|
1879
|
+
### Authorization
|
|
1880
|
+
|
|
1881
|
+
[BoatBearerAuth](../README.md#BoatBearerAuth)
|
|
1882
|
+
|
|
1883
|
+
### HTTP request headers
|
|
1884
|
+
|
|
1885
|
+
- **Content-Type**: Not defined
|
|
1886
|
+
- **Accept**: `application/json`
|
|
1887
|
+
|
|
1888
|
+
|
|
1889
|
+
### HTTP response details
|
|
1890
|
+
| Status code | Description | Response headers |
|
|
1891
|
+
|-------------|-------------|------------------|
|
|
1892
|
+
| **200** | New version minted. | - |
|
|
1893
|
+
| **401** | Missing or invalid bearer token. | - |
|
|
1894
|
+
| **404** | Resource not found. | - |
|
|
1895
|
+
|
|
1896
|
+
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
1897
|
+
|
|
1898
|
+
|
|
1899
|
+
## deleteEnvironmentSecretFile
|
|
1900
|
+
|
|
1901
|
+
> EnvironmentItemChangeResponse deleteEnvironmentSecretFile(path, environmentId, org)
|
|
1902
|
+
|
|
1903
|
+
Remove one secret file
|
|
1904
|
+
|
|
1905
|
+
Removes the secret file at `path`. Mints a new immutable version.
|
|
1906
|
+
|
|
1907
|
+
### Example
|
|
1908
|
+
|
|
1909
|
+
```ts
|
|
1910
|
+
import {
|
|
1911
|
+
Configuration,
|
|
1912
|
+
BoatApi,
|
|
1913
|
+
} from '@boatdev/sdk';
|
|
1914
|
+
import type { DeleteEnvironmentSecretFileRequest } from '@boatdev/sdk';
|
|
1915
|
+
|
|
1916
|
+
async function example() {
|
|
1917
|
+
console.log("🚀 Testing @boatdev/sdk SDK...");
|
|
1918
|
+
const config = new Configuration({
|
|
1919
|
+
// Configure HTTP bearer authorization: BoatBearerAuth
|
|
1920
|
+
accessToken: "YOUR BEARER TOKEN",
|
|
1921
|
+
});
|
|
1922
|
+
const api = new BoatApi(config);
|
|
1923
|
+
|
|
1924
|
+
const body = {
|
|
1925
|
+
// string
|
|
1926
|
+
path: path_example,
|
|
1927
|
+
// string
|
|
1928
|
+
environmentId: 38400000-8cf0-11bd-b23e-10b96e4ef00d,
|
|
1929
|
+
// string | Billing wallet for this request: an organization you belong to, by id (`team_…`) or by name as `GET /orgs` lists it (case-insensitive), or `personal`. Omitted, the account\'s active wallet applies (`PATCH /orgs/active`; personal until set). Two organizations sharing the name answer `409 ambiguous_org` and need the id. Sandboxes and snapshots stay creator-private. On `/environments` routes, only this query parameter selects the organization\'s shared environments; the `X-Boat-Org` header and the active wallet do not apply there. Members read them, owners and admins change them. (optional)
|
|
1930
|
+
org: org_example,
|
|
1931
|
+
} satisfies DeleteEnvironmentSecretFileRequest;
|
|
1932
|
+
|
|
1933
|
+
try {
|
|
1934
|
+
const data = await api.deleteEnvironmentSecretFile(body);
|
|
1935
|
+
console.log(data);
|
|
1936
|
+
} catch (error) {
|
|
1937
|
+
console.error(error);
|
|
1938
|
+
}
|
|
1939
|
+
}
|
|
1940
|
+
|
|
1941
|
+
// Run the test
|
|
1942
|
+
example().catch(console.error);
|
|
1943
|
+
```
|
|
1944
|
+
|
|
1945
|
+
### Parameters
|
|
1946
|
+
|
|
1947
|
+
|
|
1948
|
+
| Name | Type | Description | Notes |
|
|
1949
|
+
|------------- | ------------- | ------------- | -------------|
|
|
1950
|
+
| **path** | `string` | | [Defaults to `undefined`] |
|
|
1951
|
+
| **environmentId** | `string` | | [Defaults to `undefined`] |
|
|
1952
|
+
| **org** | `string` | Billing wallet for this request: an organization you belong to, by id (`team_…`) or by name as `GET /orgs` lists it (case-insensitive), or `personal`. Omitted, the account\'s active wallet applies (`PATCH /orgs/active`; personal until set). Two organizations sharing the name answer `409 ambiguous_org` and need the id. Sandboxes and snapshots stay creator-private. On `/environments` routes, only this query parameter selects the organization\'s shared environments; the `X-Boat-Org` header and the active wallet do not apply there. Members read them, owners and admins change them. | [Optional] [Defaults to `undefined`] |
|
|
1953
|
+
|
|
1954
|
+
### Return type
|
|
1955
|
+
|
|
1956
|
+
[**EnvironmentItemChangeResponse**](EnvironmentItemChangeResponse.md)
|
|
1957
|
+
|
|
1958
|
+
### Authorization
|
|
1959
|
+
|
|
1960
|
+
[BoatBearerAuth](../README.md#BoatBearerAuth)
|
|
1961
|
+
|
|
1962
|
+
### HTTP request headers
|
|
1963
|
+
|
|
1964
|
+
- **Content-Type**: Not defined
|
|
1965
|
+
- **Accept**: `application/json`
|
|
1966
|
+
|
|
1967
|
+
|
|
1968
|
+
### HTTP response details
|
|
1969
|
+
| Status code | Description | Response headers |
|
|
1970
|
+
|-------------|-------------|------------------|
|
|
1971
|
+
| **200** | New version minted. | - |
|
|
1972
|
+
| **401** | Missing or invalid bearer token. | - |
|
|
1973
|
+
| **404** | Resource not found. | - |
|
|
1974
|
+
|
|
1975
|
+
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
1976
|
+
|
|
1977
|
+
|
|
1978
|
+
## deleteEnvironmentVar
|
|
1979
|
+
|
|
1980
|
+
> EnvironmentItemChangeResponse deleteEnvironmentVar(environmentId, key, org)
|
|
1981
|
+
|
|
1982
|
+
Remove one environment variable
|
|
1983
|
+
|
|
1984
|
+
Removes a single variable. Mints a new immutable version.
|
|
1985
|
+
|
|
1986
|
+
### Example
|
|
1987
|
+
|
|
1988
|
+
```ts
|
|
1989
|
+
import {
|
|
1990
|
+
Configuration,
|
|
1991
|
+
BoatApi,
|
|
1992
|
+
} from '@boatdev/sdk';
|
|
1993
|
+
import type { DeleteEnvironmentVarRequest } from '@boatdev/sdk';
|
|
1994
|
+
|
|
1995
|
+
async function example() {
|
|
1996
|
+
console.log("🚀 Testing @boatdev/sdk SDK...");
|
|
1997
|
+
const config = new Configuration({
|
|
1998
|
+
// Configure HTTP bearer authorization: BoatBearerAuth
|
|
1999
|
+
accessToken: "YOUR BEARER TOKEN",
|
|
2000
|
+
});
|
|
2001
|
+
const api = new BoatApi(config);
|
|
2002
|
+
|
|
2003
|
+
const body = {
|
|
2004
|
+
// string
|
|
2005
|
+
environmentId: 38400000-8cf0-11bd-b23e-10b96e4ef00d,
|
|
2006
|
+
// string | Environment variable name.
|
|
2007
|
+
key: key_example,
|
|
2008
|
+
// string | Billing wallet for this request: an organization you belong to, by id (`team_…`) or by name as `GET /orgs` lists it (case-insensitive), or `personal`. Omitted, the account\'s active wallet applies (`PATCH /orgs/active`; personal until set). Two organizations sharing the name answer `409 ambiguous_org` and need the id. Sandboxes and snapshots stay creator-private. On `/environments` routes, only this query parameter selects the organization\'s shared environments; the `X-Boat-Org` header and the active wallet do not apply there. Members read them, owners and admins change them. (optional)
|
|
2009
|
+
org: org_example,
|
|
2010
|
+
} satisfies DeleteEnvironmentVarRequest;
|
|
2011
|
+
|
|
2012
|
+
try {
|
|
2013
|
+
const data = await api.deleteEnvironmentVar(body);
|
|
2014
|
+
console.log(data);
|
|
2015
|
+
} catch (error) {
|
|
2016
|
+
console.error(error);
|
|
2017
|
+
}
|
|
2018
|
+
}
|
|
2019
|
+
|
|
2020
|
+
// Run the test
|
|
2021
|
+
example().catch(console.error);
|
|
2022
|
+
```
|
|
2023
|
+
|
|
2024
|
+
### Parameters
|
|
2025
|
+
|
|
2026
|
+
|
|
2027
|
+
| Name | Type | Description | Notes |
|
|
2028
|
+
|------------- | ------------- | ------------- | -------------|
|
|
2029
|
+
| **environmentId** | `string` | | [Defaults to `undefined`] |
|
|
2030
|
+
| **key** | `string` | Environment variable name. | [Defaults to `undefined`] |
|
|
2031
|
+
| **org** | `string` | Billing wallet for this request: an organization you belong to, by id (`team_…`) or by name as `GET /orgs` lists it (case-insensitive), or `personal`. Omitted, the account\'s active wallet applies (`PATCH /orgs/active`; personal until set). Two organizations sharing the name answer `409 ambiguous_org` and need the id. Sandboxes and snapshots stay creator-private. On `/environments` routes, only this query parameter selects the organization\'s shared environments; the `X-Boat-Org` header and the active wallet do not apply there. Members read them, owners and admins change them. | [Optional] [Defaults to `undefined`] |
|
|
2032
|
+
|
|
2033
|
+
### Return type
|
|
2034
|
+
|
|
2035
|
+
[**EnvironmentItemChangeResponse**](EnvironmentItemChangeResponse.md)
|
|
2036
|
+
|
|
2037
|
+
### Authorization
|
|
2038
|
+
|
|
2039
|
+
[BoatBearerAuth](../README.md#BoatBearerAuth)
|
|
2040
|
+
|
|
2041
|
+
### HTTP request headers
|
|
2042
|
+
|
|
2043
|
+
- **Content-Type**: Not defined
|
|
2044
|
+
- **Accept**: `application/json`
|
|
2045
|
+
|
|
2046
|
+
|
|
2047
|
+
### HTTP response details
|
|
2048
|
+
| Status code | Description | Response headers |
|
|
2049
|
+
|-------------|-------------|------------------|
|
|
2050
|
+
| **200** | New version minted. | - |
|
|
2051
|
+
| **401** | Missing or invalid bearer token. | - |
|
|
2052
|
+
| **404** | Resource not found. | - |
|
|
2053
|
+
|
|
2054
|
+
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
2055
|
+
|
|
2056
|
+
|
|
2057
|
+
## deleteNamedSnapshot
|
|
2058
|
+
|
|
2059
|
+
> NamedSnapshotDeletedResponse deleteNamedSnapshot(name)
|
|
2060
|
+
|
|
2061
|
+
Remove a named snapshot
|
|
2062
|
+
|
|
2063
|
+
Remove a named snapshot and release its storage (`boat snapshot rm <name>` in the CLI). Sandboxes already deployed from it are unaffected.
|
|
2064
|
+
|
|
2065
|
+
### Example
|
|
2066
|
+
|
|
2067
|
+
```ts
|
|
2068
|
+
import {
|
|
2069
|
+
Configuration,
|
|
2070
|
+
BoatApi,
|
|
2071
|
+
} from '@boatdev/sdk';
|
|
2072
|
+
import type { DeleteNamedSnapshotRequest } from '@boatdev/sdk';
|
|
2073
|
+
|
|
2074
|
+
async function example() {
|
|
2075
|
+
console.log("🚀 Testing @boatdev/sdk SDK...");
|
|
2076
|
+
const config = new Configuration({
|
|
2077
|
+
// Configure HTTP bearer authorization: BoatBearerAuth
|
|
2078
|
+
accessToken: "YOUR BEARER TOKEN",
|
|
2079
|
+
});
|
|
2080
|
+
const api = new BoatApi(config);
|
|
2081
|
+
|
|
2082
|
+
const body = {
|
|
2083
|
+
// string
|
|
2084
|
+
name: name_example,
|
|
2085
|
+
} satisfies DeleteNamedSnapshotRequest;
|
|
2086
|
+
|
|
2087
|
+
try {
|
|
2088
|
+
const data = await api.deleteNamedSnapshot(body);
|
|
2089
|
+
console.log(data);
|
|
2090
|
+
} catch (error) {
|
|
2091
|
+
console.error(error);
|
|
2092
|
+
}
|
|
2093
|
+
}
|
|
2094
|
+
|
|
2095
|
+
// Run the test
|
|
2096
|
+
example().catch(console.error);
|
|
2097
|
+
```
|
|
2098
|
+
|
|
2099
|
+
### Parameters
|
|
2100
|
+
|
|
2101
|
+
|
|
2102
|
+
| Name | Type | Description | Notes |
|
|
2103
|
+
|------------- | ------------- | ------------- | -------------|
|
|
2104
|
+
| **name** | `string` | | [Defaults to `undefined`] |
|
|
2105
|
+
|
|
2106
|
+
### Return type
|
|
2107
|
+
|
|
2108
|
+
[**NamedSnapshotDeletedResponse**](NamedSnapshotDeletedResponse.md)
|
|
2109
|
+
|
|
2110
|
+
### Authorization
|
|
2111
|
+
|
|
2112
|
+
[BoatBearerAuth](../README.md#BoatBearerAuth)
|
|
2113
|
+
|
|
2114
|
+
### HTTP request headers
|
|
2115
|
+
|
|
2116
|
+
- **Content-Type**: Not defined
|
|
2117
|
+
- **Accept**: `application/json`
|
|
2118
|
+
|
|
2119
|
+
|
|
2120
|
+
### HTTP response details
|
|
2121
|
+
| Status code | Description | Response headers |
|
|
2122
|
+
|-------------|-------------|------------------|
|
|
2123
|
+
| **200** | Removed. | - |
|
|
2124
|
+
| **401** | Missing or invalid bearer token. | - |
|
|
2125
|
+
| **404** | Resource not found. | - |
|
|
2126
|
+
| **409** | `save_in_progress`: a save under this name is still running. Wait for it to settle before removing it. | - |
|
|
2127
|
+
|
|
2128
|
+
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
2129
|
+
|
|
2130
|
+
|
|
2131
|
+
## deleteSandbox
|
|
2132
|
+
|
|
2133
|
+
> DeletionOperationResponse deleteSandbox(xAsciiConfirmDelete, sandboxId)
|
|
2134
|
+
|
|
2135
|
+
Permanently delete sandbox data
|
|
2136
|
+
|
|
2137
|
+
Accept irreversible background deletion of the sandbox machine, snapshots, and content-bearing records. This is not archive: the sandbox cannot be resumed. Named snapshots and other shared artifacts remain independent. Poll the returned operation until `completed`.
|
|
2138
|
+
|
|
2139
|
+
### Example
|
|
2140
|
+
|
|
2141
|
+
```ts
|
|
2142
|
+
import {
|
|
2143
|
+
Configuration,
|
|
2144
|
+
BoatApi,
|
|
2145
|
+
} from '@boatdev/sdk';
|
|
2146
|
+
import type { DeleteSandboxRequest } from '@boatdev/sdk';
|
|
2147
|
+
|
|
2148
|
+
async function example() {
|
|
2149
|
+
console.log("🚀 Testing @boatdev/sdk SDK...");
|
|
2150
|
+
const config = new Configuration({
|
|
2151
|
+
// Configure HTTP bearer authorization: BoatBearerAuth
|
|
2152
|
+
accessToken: "YOUR BEARER TOKEN",
|
|
2153
|
+
});
|
|
2154
|
+
const api = new BoatApi(config);
|
|
2155
|
+
|
|
2156
|
+
const body = {
|
|
2157
|
+
// string | Must exactly equal the target `sandboxId` or `snapshotId`. A missing or mismatched value returns `409` without accepting deletion.
|
|
2158
|
+
xAsciiConfirmDelete: xAsciiConfirmDelete_example,
|
|
2159
|
+
// string | Public Sandbox id returned by create/list/get sandbox calls.
|
|
2160
|
+
sandboxId: sandboxId_example,
|
|
2161
|
+
} satisfies DeleteSandboxRequest;
|
|
2162
|
+
|
|
2163
|
+
try {
|
|
2164
|
+
const data = await api.deleteSandbox(body);
|
|
2165
|
+
console.log(data);
|
|
2166
|
+
} catch (error) {
|
|
2167
|
+
console.error(error);
|
|
2168
|
+
}
|
|
2169
|
+
}
|
|
2170
|
+
|
|
2171
|
+
// Run the test
|
|
2172
|
+
example().catch(console.error);
|
|
2173
|
+
```
|
|
2174
|
+
|
|
2175
|
+
### Parameters
|
|
2176
|
+
|
|
2177
|
+
|
|
2178
|
+
| Name | Type | Description | Notes |
|
|
2179
|
+
|------------- | ------------- | ------------- | -------------|
|
|
2180
|
+
| **xAsciiConfirmDelete** | `string` | Must exactly equal the target `sandboxId` or `snapshotId`. A missing or mismatched value returns `409` without accepting deletion. | [Defaults to `undefined`] |
|
|
2181
|
+
| **sandboxId** | `string` | Public Sandbox id returned by create/list/get sandbox calls. | [Defaults to `undefined`] |
|
|
2182
|
+
|
|
2183
|
+
### Return type
|
|
2184
|
+
|
|
2185
|
+
[**DeletionOperationResponse**](DeletionOperationResponse.md)
|
|
2186
|
+
|
|
2187
|
+
### Authorization
|
|
2188
|
+
|
|
2189
|
+
[BoatBearerAuth](../README.md#BoatBearerAuth)
|
|
2190
|
+
|
|
2191
|
+
### HTTP request headers
|
|
2192
|
+
|
|
2193
|
+
- **Content-Type**: Not defined
|
|
2194
|
+
- **Accept**: `application/json`
|
|
2195
|
+
|
|
2196
|
+
|
|
2197
|
+
### HTTP response details
|
|
2198
|
+
| Status code | Description | Response headers |
|
|
2199
|
+
|-------------|-------------|------------------|
|
|
2200
|
+
| **202** | Deletion confirmed and accepted for background processing. | - |
|
|
2201
|
+
| **401** | Missing or invalid bearer token. | - |
|
|
2202
|
+
| **403** | Authenticated token is not allowed to perform this action. | - |
|
|
2203
|
+
| **404** | Resource not found. | - |
|
|
2204
|
+
| **409** | Request conflicts with current account or sandbox state. | - |
|
|
2205
|
+
|
|
2206
|
+
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
2207
|
+
|
|
2208
|
+
|
|
2209
|
+
## deleteSandboxSnapshots
|
|
2210
|
+
|
|
2211
|
+
> DeletionOperationListResponse deleteSandboxSnapshots(sandboxId, xAsciiConfirmDelete)
|
|
2212
|
+
|
|
2213
|
+
Permanently delete all snapshots of a sandbox
|
|
2214
|
+
|
|
2215
|
+
Accept irreversible deletion of every unpinned snapshot of this sandbox. The sandbox itself and its named snapshots stay. Snapshots disappear from lists, restores and forks immediately; their stored data is purged in the background. Set `X-Ascii-Confirm-Delete` to the sandbox id.
|
|
2216
|
+
|
|
2217
|
+
### Example
|
|
2218
|
+
|
|
2219
|
+
```ts
|
|
2220
|
+
import {
|
|
2221
|
+
Configuration,
|
|
2222
|
+
BoatApi,
|
|
2223
|
+
} from '@boatdev/sdk';
|
|
2224
|
+
import type { DeleteSandboxSnapshotsRequest } from '@boatdev/sdk';
|
|
2225
|
+
|
|
2226
|
+
async function example() {
|
|
2227
|
+
console.log("🚀 Testing @boatdev/sdk SDK...");
|
|
2228
|
+
const config = new Configuration({
|
|
2229
|
+
// Configure HTTP bearer authorization: BoatBearerAuth
|
|
2230
|
+
accessToken: "YOUR BEARER TOKEN",
|
|
2231
|
+
});
|
|
2232
|
+
const api = new BoatApi(config);
|
|
2233
|
+
|
|
2234
|
+
const body = {
|
|
2235
|
+
// string | Public Sandbox id returned by create/list/get sandbox calls.
|
|
2236
|
+
sandboxId: sandboxId_example,
|
|
2237
|
+
// string | Must exactly equal the target `sandboxId` or `snapshotId`. A missing or mismatched value returns `409` without accepting deletion.
|
|
2238
|
+
xAsciiConfirmDelete: xAsciiConfirmDelete_example,
|
|
2239
|
+
} satisfies DeleteSandboxSnapshotsRequest;
|
|
2240
|
+
|
|
2241
|
+
try {
|
|
2242
|
+
const data = await api.deleteSandboxSnapshots(body);
|
|
2243
|
+
console.log(data);
|
|
2244
|
+
} catch (error) {
|
|
2245
|
+
console.error(error);
|
|
2246
|
+
}
|
|
2247
|
+
}
|
|
2248
|
+
|
|
2249
|
+
// Run the test
|
|
2250
|
+
example().catch(console.error);
|
|
2251
|
+
```
|
|
2252
|
+
|
|
2253
|
+
### Parameters
|
|
2254
|
+
|
|
2255
|
+
|
|
2256
|
+
| Name | Type | Description | Notes |
|
|
2257
|
+
|------------- | ------------- | ------------- | -------------|
|
|
2258
|
+
| **sandboxId** | `string` | Public Sandbox id returned by create/list/get sandbox calls. | [Defaults to `undefined`] |
|
|
2259
|
+
| **xAsciiConfirmDelete** | `string` | Must exactly equal the target `sandboxId` or `snapshotId`. A missing or mismatched value returns `409` without accepting deletion. | [Defaults to `undefined`] |
|
|
2260
|
+
|
|
2261
|
+
### Return type
|
|
2262
|
+
|
|
2263
|
+
[**DeletionOperationListResponse**](DeletionOperationListResponse.md)
|
|
2264
|
+
|
|
2265
|
+
### Authorization
|
|
2266
|
+
|
|
2267
|
+
[BoatBearerAuth](../README.md#BoatBearerAuth)
|
|
2268
|
+
|
|
2269
|
+
### HTTP request headers
|
|
2270
|
+
|
|
2271
|
+
- **Content-Type**: Not defined
|
|
2272
|
+
- **Accept**: `application/json`
|
|
2273
|
+
|
|
2274
|
+
|
|
2275
|
+
### HTTP response details
|
|
2276
|
+
| Status code | Description | Response headers |
|
|
2277
|
+
|-------------|-------------|------------------|
|
|
2278
|
+
| **202** | One accepted deletion operation per snapshot. | - |
|
|
2279
|
+
| **401** | Missing or invalid bearer token. | - |
|
|
2280
|
+
| **403** | Authenticated token is not allowed to perform this action. | - |
|
|
2281
|
+
| **404** | Resource not found. | - |
|
|
2282
|
+
| **409** | Request conflicts with current account or sandbox state. | - |
|
|
2283
|
+
|
|
2284
|
+
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
2285
|
+
|
|
2286
|
+
|
|
2287
|
+
## deleteSnapshot
|
|
2288
|
+
|
|
2289
|
+
> DeletionOperationResponse deleteSnapshot(snapshotId, xAsciiConfirmDelete)
|
|
2290
|
+
|
|
2291
|
+
Permanently delete snapshot data
|
|
2292
|
+
|
|
2293
|
+
Accept irreversible deletion of an unpinned snapshot owned by the authenticated account. Any such snapshot is accepted: it disappears from lists, restores and forks immediately, and its stored data is purged in the background once nothing still reads it (see the operation\'s `stage`). `409` only means `X-Ascii-Confirm-Delete` is missing or wrong.
|
|
2294
|
+
|
|
2295
|
+
### Example
|
|
2296
|
+
|
|
2297
|
+
```ts
|
|
2298
|
+
import {
|
|
2299
|
+
Configuration,
|
|
2300
|
+
BoatApi,
|
|
2301
|
+
} from '@boatdev/sdk';
|
|
2302
|
+
import type { DeleteSnapshotRequest } from '@boatdev/sdk';
|
|
2303
|
+
|
|
2304
|
+
async function example() {
|
|
2305
|
+
console.log("🚀 Testing @boatdev/sdk SDK...");
|
|
2306
|
+
const config = new Configuration({
|
|
2307
|
+
// Configure HTTP bearer authorization: BoatBearerAuth
|
|
2308
|
+
accessToken: "YOUR BEARER TOKEN",
|
|
2309
|
+
});
|
|
2310
|
+
const api = new BoatApi(config);
|
|
2311
|
+
|
|
2312
|
+
const body = {
|
|
2313
|
+
// string | Snapshot id returned by the snapshot list/latest calls.
|
|
2314
|
+
snapshotId: 38400000-8cf0-11bd-b23e-10b96e4ef00d,
|
|
2315
|
+
// string | Must exactly equal the target `sandboxId` or `snapshotId`. A missing or mismatched value returns `409` without accepting deletion.
|
|
2316
|
+
xAsciiConfirmDelete: xAsciiConfirmDelete_example,
|
|
2317
|
+
} satisfies DeleteSnapshotRequest;
|
|
2318
|
+
|
|
2319
|
+
try {
|
|
2320
|
+
const data = await api.deleteSnapshot(body);
|
|
2321
|
+
console.log(data);
|
|
1828
2322
|
} catch (error) {
|
|
1829
2323
|
console.error(error);
|
|
1830
2324
|
}
|
|
@@ -2074,15 +2568,176 @@ example().catch(console.error);
|
|
|
2074
2568
|
|
|
2075
2569
|
### HTTP request headers
|
|
2076
2570
|
|
|
2077
|
-
- **Content-Type**: `application/json`
|
|
2571
|
+
- **Content-Type**: `application/json`
|
|
2572
|
+
- **Accept**: `application/json`
|
|
2573
|
+
|
|
2574
|
+
|
|
2575
|
+
### HTTP response details
|
|
2576
|
+
| Status code | Description | Response headers |
|
|
2577
|
+
|-------------|-------------|------------------|
|
|
2578
|
+
| **200** | Desktop streaming URL, or provisioning state for VNC setup. | - |
|
|
2579
|
+
| **400** | Invalid request body or parameters. | - |
|
|
2580
|
+
| **401** | Missing or invalid bearer token. | - |
|
|
2581
|
+
| **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. | - |
|
|
2582
|
+
| **404** | Resource not found. | - |
|
|
2583
|
+
|
|
2584
|
+
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
2585
|
+
|
|
2586
|
+
|
|
2587
|
+
## environments
|
|
2588
|
+
|
|
2589
|
+
> SandboxEnvironmentListResponse environments(org)
|
|
2590
|
+
|
|
2591
|
+
List Sandbox environments
|
|
2592
|
+
|
|
2593
|
+
Returns every non-deleted sandbox environment with its latest-version flags, contents, and per-version sandbox usage. A default environment named `base` is created on first access if none exists.
|
|
2594
|
+
|
|
2595
|
+
### Example
|
|
2596
|
+
|
|
2597
|
+
```ts
|
|
2598
|
+
import {
|
|
2599
|
+
Configuration,
|
|
2600
|
+
BoatApi,
|
|
2601
|
+
} from '@boatdev/sdk';
|
|
2602
|
+
import type { EnvironmentsRequest } from '@boatdev/sdk';
|
|
2603
|
+
|
|
2604
|
+
async function example() {
|
|
2605
|
+
console.log("🚀 Testing @boatdev/sdk SDK...");
|
|
2606
|
+
const config = new Configuration({
|
|
2607
|
+
// Configure HTTP bearer authorization: BoatBearerAuth
|
|
2608
|
+
accessToken: "YOUR BEARER TOKEN",
|
|
2609
|
+
});
|
|
2610
|
+
const api = new BoatApi(config);
|
|
2611
|
+
|
|
2612
|
+
const body = {
|
|
2613
|
+
// string | Billing wallet for this request: an organization you belong to, by id (`team_…`) or by name as `GET /orgs` lists it (case-insensitive), or `personal`. Omitted, the account\'s active wallet applies (`PATCH /orgs/active`; personal until set). Two organizations sharing the name answer `409 ambiguous_org` and need the id. Sandboxes and snapshots stay creator-private. On `/environments` routes, only this query parameter selects the organization\'s shared environments; the `X-Boat-Org` header and the active wallet do not apply there. Members read them, owners and admins change them. (optional)
|
|
2614
|
+
org: org_example,
|
|
2615
|
+
} satisfies EnvironmentsRequest;
|
|
2616
|
+
|
|
2617
|
+
try {
|
|
2618
|
+
const data = await api.environments(body);
|
|
2619
|
+
console.log(data);
|
|
2620
|
+
} catch (error) {
|
|
2621
|
+
console.error(error);
|
|
2622
|
+
}
|
|
2623
|
+
}
|
|
2624
|
+
|
|
2625
|
+
// Run the test
|
|
2626
|
+
example().catch(console.error);
|
|
2627
|
+
```
|
|
2628
|
+
|
|
2629
|
+
### Parameters
|
|
2630
|
+
|
|
2631
|
+
|
|
2632
|
+
| Name | Type | Description | Notes |
|
|
2633
|
+
|------------- | ------------- | ------------- | -------------|
|
|
2634
|
+
| **org** | `string` | Billing wallet for this request: an organization you belong to, by id (`team_…`) or by name as `GET /orgs` lists it (case-insensitive), or `personal`. Omitted, the account\'s active wallet applies (`PATCH /orgs/active`; personal until set). Two organizations sharing the name answer `409 ambiguous_org` and need the id. Sandboxes and snapshots stay creator-private. On `/environments` routes, only this query parameter selects the organization\'s shared environments; the `X-Boat-Org` header and the active wallet do not apply there. Members read them, owners and admins change them. | [Optional] [Defaults to `undefined`] |
|
|
2635
|
+
|
|
2636
|
+
### Return type
|
|
2637
|
+
|
|
2638
|
+
[**SandboxEnvironmentListResponse**](SandboxEnvironmentListResponse.md)
|
|
2639
|
+
|
|
2640
|
+
### Authorization
|
|
2641
|
+
|
|
2642
|
+
[BoatBearerAuth](../README.md#BoatBearerAuth)
|
|
2643
|
+
|
|
2644
|
+
### HTTP request headers
|
|
2645
|
+
|
|
2646
|
+
- **Content-Type**: Not defined
|
|
2647
|
+
- **Accept**: `application/json`
|
|
2648
|
+
|
|
2649
|
+
|
|
2650
|
+
### HTTP response details
|
|
2651
|
+
| Status code | Description | Response headers |
|
|
2652
|
+
|-------------|-------------|------------------|
|
|
2653
|
+
| **200** | The account\'s sandbox environments. | - |
|
|
2654
|
+
| **401** | Missing or invalid bearer token. | - |
|
|
2655
|
+
|
|
2656
|
+
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
2657
|
+
|
|
2658
|
+
|
|
2659
|
+
## events
|
|
2660
|
+
|
|
2661
|
+
> EventsResponse events(sandboxId, limit, cursor, sort, type, conversation)
|
|
2662
|
+
|
|
2663
|
+
List boat events
|
|
2664
|
+
|
|
2665
|
+
Return Sandbox work, lifecycle, and progress events so product UIs can show what the sandbox is doing. A Sandbox runs many conversations in parallel; this streams **all** of them by default and every event carries a `conversationId`. Filter to one or more with `conversation`. Event payloads are extensible. Clients can long-poll this endpoint with `sort=asc` and a cursor to stream responses. Response events expose agent text, streaming partials via `data.is_streaming`, and tool calls/results via `data.tools`.
|
|
2666
|
+
|
|
2667
|
+
### Example
|
|
2668
|
+
|
|
2669
|
+
```ts
|
|
2670
|
+
import {
|
|
2671
|
+
Configuration,
|
|
2672
|
+
BoatApi,
|
|
2673
|
+
} from '@boatdev/sdk';
|
|
2674
|
+
import type { EventsRequest } from '@boatdev/sdk';
|
|
2675
|
+
|
|
2676
|
+
async function example() {
|
|
2677
|
+
console.log("🚀 Testing @boatdev/sdk SDK...");
|
|
2678
|
+
const config = new Configuration({
|
|
2679
|
+
// Configure HTTP bearer authorization: BoatBearerAuth
|
|
2680
|
+
accessToken: "YOUR BEARER TOKEN",
|
|
2681
|
+
});
|
|
2682
|
+
const api = new BoatApi(config);
|
|
2683
|
+
|
|
2684
|
+
const body = {
|
|
2685
|
+
// string | Public Sandbox id returned by create/list/get sandbox calls.
|
|
2686
|
+
sandboxId: sandboxId_example,
|
|
2687
|
+
// number | Maximum items to return. (optional)
|
|
2688
|
+
limit: 56,
|
|
2689
|
+
// string | Opaque pagination cursor returned as `pageInfo.nextCursor`. (optional)
|
|
2690
|
+
cursor: cursor_example,
|
|
2691
|
+
// 'asc' | 'desc' | Sort direction for cursor pagination. (optional)
|
|
2692
|
+
sort: sort_example,
|
|
2693
|
+
// string | Comma-separated event type filter, for example `prompt,response,steer`. (optional)
|
|
2694
|
+
type: type_example,
|
|
2695
|
+
// string | Only return events for this conversation id. Repeat the parameter (or comma-separate) for several. Omit to stream every conversation on the sandbox. See [Integrated agents](/integrated-agents). (optional)
|
|
2696
|
+
conversation: conversation_example,
|
|
2697
|
+
} satisfies EventsRequest;
|
|
2698
|
+
|
|
2699
|
+
try {
|
|
2700
|
+
const data = await api.events(body);
|
|
2701
|
+
console.log(data);
|
|
2702
|
+
} catch (error) {
|
|
2703
|
+
console.error(error);
|
|
2704
|
+
}
|
|
2705
|
+
}
|
|
2706
|
+
|
|
2707
|
+
// Run the test
|
|
2708
|
+
example().catch(console.error);
|
|
2709
|
+
```
|
|
2710
|
+
|
|
2711
|
+
### Parameters
|
|
2712
|
+
|
|
2713
|
+
|
|
2714
|
+
| Name | Type | Description | Notes |
|
|
2715
|
+
|------------- | ------------- | ------------- | -------------|
|
|
2716
|
+
| **sandboxId** | `string` | Public Sandbox id returned by create/list/get sandbox calls. | [Defaults to `undefined`] |
|
|
2717
|
+
| **limit** | `number` | Maximum items to return. | [Optional] [Defaults to `100`] |
|
|
2718
|
+
| **cursor** | `string` | Opaque pagination cursor returned as `pageInfo.nextCursor`. | [Optional] [Defaults to `undefined`] |
|
|
2719
|
+
| **sort** | `asc`, `desc` | Sort direction for cursor pagination. | [Optional] [Defaults to `'desc'`] [Enum: asc, desc] |
|
|
2720
|
+
| **type** | `string` | Comma-separated event type filter, for example `prompt,response,steer`. | [Optional] [Defaults to `undefined`] |
|
|
2721
|
+
| **conversation** | `string` | Only return events for this conversation id. Repeat the parameter (or comma-separate) for several. Omit to stream every conversation on the sandbox. See [Integrated agents](/integrated-agents). | [Optional] [Defaults to `undefined`] |
|
|
2722
|
+
|
|
2723
|
+
### Return type
|
|
2724
|
+
|
|
2725
|
+
[**EventsResponse**](EventsResponse.md)
|
|
2726
|
+
|
|
2727
|
+
### Authorization
|
|
2728
|
+
|
|
2729
|
+
[BoatBearerAuth](../README.md#BoatBearerAuth)
|
|
2730
|
+
|
|
2731
|
+
### HTTP request headers
|
|
2732
|
+
|
|
2733
|
+
- **Content-Type**: Not defined
|
|
2078
2734
|
- **Accept**: `application/json`
|
|
2079
2735
|
|
|
2080
2736
|
|
|
2081
2737
|
### HTTP response details
|
|
2082
2738
|
| Status code | Description | Response headers |
|
|
2083
2739
|
|-------------|-------------|------------------|
|
|
2084
|
-
| **200** |
|
|
2085
|
-
| **400** | Invalid request body or parameters. | - |
|
|
2740
|
+
| **200** | The agent\'s work on the sandbox (prompts, responses), not sandbox lifecycle. A sandbox that was never prompted returns an empty list even though it started, stopped and resumed. | - |
|
|
2086
2741
|
| **401** | Missing or invalid bearer token. | - |
|
|
2087
2742
|
| **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. | - |
|
|
2088
2743
|
| **404** | Resource not found. | - |
|
|
@@ -2090,13 +2745,13 @@ example().catch(console.error);
|
|
|
2090
2745
|
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
2091
2746
|
|
|
2092
2747
|
|
|
2093
|
-
##
|
|
2748
|
+
## fork
|
|
2094
2749
|
|
|
2095
|
-
>
|
|
2750
|
+
> SandboxActionResponse fork(sandboxId, idempotencyKey, forkRequest)
|
|
2096
2751
|
|
|
2097
|
-
|
|
2752
|
+
Fork sandbox
|
|
2098
2753
|
|
|
2099
|
-
|
|
2754
|
+
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.
|
|
2100
2755
|
|
|
2101
2756
|
### Example
|
|
2102
2757
|
|
|
@@ -2105,7 +2760,7 @@ import {
|
|
|
2105
2760
|
Configuration,
|
|
2106
2761
|
BoatApi,
|
|
2107
2762
|
} from '@boatdev/sdk';
|
|
2108
|
-
import type {
|
|
2763
|
+
import type { ForkOperationRequest } from '@boatdev/sdk';
|
|
2109
2764
|
|
|
2110
2765
|
async function example() {
|
|
2111
2766
|
console.log("🚀 Testing @boatdev/sdk SDK...");
|
|
@@ -2115,8 +2770,17 @@ async function example() {
|
|
|
2115
2770
|
});
|
|
2116
2771
|
const api = new BoatApi(config);
|
|
2117
2772
|
|
|
2773
|
+
const body = {
|
|
2774
|
+
// string | Public Sandbox id returned by create/list/get sandbox calls.
|
|
2775
|
+
sandboxId: sandboxId_example,
|
|
2776
|
+
// 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)
|
|
2777
|
+
idempotencyKey: idempotencyKey_example,
|
|
2778
|
+
// ForkRequest (optional)
|
|
2779
|
+
forkRequest: ...,
|
|
2780
|
+
} satisfies ForkOperationRequest;
|
|
2781
|
+
|
|
2118
2782
|
try {
|
|
2119
|
-
const data = await api.
|
|
2783
|
+
const data = await api.fork(body);
|
|
2120
2784
|
console.log(data);
|
|
2121
2785
|
} catch (error) {
|
|
2122
2786
|
console.error(error);
|
|
@@ -2129,11 +2793,16 @@ example().catch(console.error);
|
|
|
2129
2793
|
|
|
2130
2794
|
### Parameters
|
|
2131
2795
|
|
|
2132
|
-
|
|
2796
|
+
|
|
2797
|
+
| Name | Type | Description | Notes |
|
|
2798
|
+
|------------- | ------------- | ------------- | -------------|
|
|
2799
|
+
| **sandboxId** | `string` | Public Sandbox id returned by create/list/get sandbox calls. | [Defaults to `undefined`] |
|
|
2800
|
+
| **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`] |
|
|
2801
|
+
| **forkRequest** | [ForkRequest](ForkRequest.md) | | [Optional] |
|
|
2133
2802
|
|
|
2134
2803
|
### Return type
|
|
2135
2804
|
|
|
2136
|
-
[**
|
|
2805
|
+
[**SandboxActionResponse**](SandboxActionResponse.md)
|
|
2137
2806
|
|
|
2138
2807
|
### Authorization
|
|
2139
2808
|
|
|
@@ -2141,26 +2810,31 @@ This endpoint does not need any parameter.
|
|
|
2141
2810
|
|
|
2142
2811
|
### HTTP request headers
|
|
2143
2812
|
|
|
2144
|
-
- **Content-Type**:
|
|
2813
|
+
- **Content-Type**: `application/json`
|
|
2145
2814
|
- **Accept**: `application/json`
|
|
2146
2815
|
|
|
2147
2816
|
|
|
2148
2817
|
### HTTP response details
|
|
2149
2818
|
| Status code | Description | Response headers |
|
|
2150
2819
|
|-------------|-------------|------------------|
|
|
2151
|
-
| **
|
|
2820
|
+
| **202** | Fork started. The response `id` is the new forked sandbox id. | - |
|
|
2152
2821
|
| **401** | Missing or invalid bearer token. | - |
|
|
2822
|
+
| **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. | - |
|
|
2823
|
+
| **404** | Resource not found. | - |
|
|
2824
|
+
| **409** | Request conflicts with current account or sandbox state. | - |
|
|
2825
|
+
| **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. | - |
|
|
2826
|
+
| **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. | - |
|
|
2153
2827
|
|
|
2154
2828
|
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
2155
2829
|
|
|
2156
2830
|
|
|
2157
|
-
##
|
|
2831
|
+
## get
|
|
2158
2832
|
|
|
2159
|
-
>
|
|
2833
|
+
> SandboxInfoResponse get(sandboxId)
|
|
2160
2834
|
|
|
2161
|
-
|
|
2835
|
+
Get sandbox
|
|
2162
2836
|
|
|
2163
|
-
|
|
2837
|
+
Poll this endpoint after create, stop, resume, or fork operations.
|
|
2164
2838
|
|
|
2165
2839
|
### Example
|
|
2166
2840
|
|
|
@@ -2169,7 +2843,7 @@ import {
|
|
|
2169
2843
|
Configuration,
|
|
2170
2844
|
BoatApi,
|
|
2171
2845
|
} from '@boatdev/sdk';
|
|
2172
|
-
import type {
|
|
2846
|
+
import type { GetRequest } from '@boatdev/sdk';
|
|
2173
2847
|
|
|
2174
2848
|
async function example() {
|
|
2175
2849
|
console.log("🚀 Testing @boatdev/sdk SDK...");
|
|
@@ -2182,20 +2856,10 @@ async function example() {
|
|
|
2182
2856
|
const body = {
|
|
2183
2857
|
// string | Public Sandbox id returned by create/list/get sandbox calls.
|
|
2184
2858
|
sandboxId: sandboxId_example,
|
|
2185
|
-
|
|
2186
|
-
limit: 56,
|
|
2187
|
-
// string | Opaque pagination cursor returned as `pageInfo.nextCursor`. (optional)
|
|
2188
|
-
cursor: cursor_example,
|
|
2189
|
-
// 'asc' | 'desc' | Sort direction for cursor pagination. (optional)
|
|
2190
|
-
sort: sort_example,
|
|
2191
|
-
// string | Comma-separated event type filter, for example `prompt,response,steer`. (optional)
|
|
2192
|
-
type: type_example,
|
|
2193
|
-
// string | Only return events for this conversation id. Repeat the parameter (or comma-separate) for several. Omit to stream every conversation on the sandbox. See [Integrated agents](/integrated-agents). (optional)
|
|
2194
|
-
conversation: conversation_example,
|
|
2195
|
-
} satisfies EventsRequest;
|
|
2859
|
+
} satisfies GetRequest;
|
|
2196
2860
|
|
|
2197
2861
|
try {
|
|
2198
|
-
const data = await api.
|
|
2862
|
+
const data = await api.get(body);
|
|
2199
2863
|
console.log(data);
|
|
2200
2864
|
} catch (error) {
|
|
2201
2865
|
console.error(error);
|
|
@@ -2212,15 +2876,10 @@ example().catch(console.error);
|
|
|
2212
2876
|
| Name | Type | Description | Notes |
|
|
2213
2877
|
|------------- | ------------- | ------------- | -------------|
|
|
2214
2878
|
| **sandboxId** | `string` | Public Sandbox id returned by create/list/get sandbox calls. | [Defaults to `undefined`] |
|
|
2215
|
-
| **limit** | `number` | Maximum items to return. | [Optional] [Defaults to `100`] |
|
|
2216
|
-
| **cursor** | `string` | Opaque pagination cursor returned as `pageInfo.nextCursor`. | [Optional] [Defaults to `undefined`] |
|
|
2217
|
-
| **sort** | `asc`, `desc` | Sort direction for cursor pagination. | [Optional] [Defaults to `'desc'`] [Enum: asc, desc] |
|
|
2218
|
-
| **type** | `string` | Comma-separated event type filter, for example `prompt,response,steer`. | [Optional] [Defaults to `undefined`] |
|
|
2219
|
-
| **conversation** | `string` | Only return events for this conversation id. Repeat the parameter (or comma-separate) for several. Omit to stream every conversation on the sandbox. See [Integrated agents](/integrated-agents). | [Optional] [Defaults to `undefined`] |
|
|
2220
2879
|
|
|
2221
2880
|
### Return type
|
|
2222
2881
|
|
|
2223
|
-
[**
|
|
2882
|
+
[**SandboxInfoResponse**](SandboxInfoResponse.md)
|
|
2224
2883
|
|
|
2225
2884
|
### Authorization
|
|
2226
2885
|
|
|
@@ -2235,21 +2894,20 @@ example().catch(console.error);
|
|
|
2235
2894
|
### HTTP response details
|
|
2236
2895
|
| Status code | Description | Response headers |
|
|
2237
2896
|
|-------------|-------------|------------------|
|
|
2238
|
-
| **200** |
|
|
2897
|
+
| **200** | Boat details. | - |
|
|
2239
2898
|
| **401** | Missing or invalid bearer token. | - |
|
|
2240
|
-
| **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. | - |
|
|
2241
2899
|
| **404** | Resource not found. | - |
|
|
2242
2900
|
|
|
2243
2901
|
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
2244
2902
|
|
|
2245
2903
|
|
|
2246
|
-
##
|
|
2904
|
+
## getAiProxy
|
|
2247
2905
|
|
|
2248
|
-
>
|
|
2906
|
+
> AiProxySettings getAiProxy(org, xBoatOrg)
|
|
2249
2907
|
|
|
2250
|
-
|
|
2908
|
+
Get AI credentials proxy
|
|
2251
2909
|
|
|
2252
|
-
|
|
2910
|
+
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`.
|
|
2253
2911
|
|
|
2254
2912
|
### Example
|
|
2255
2913
|
|
|
@@ -2258,7 +2916,7 @@ import {
|
|
|
2258
2916
|
Configuration,
|
|
2259
2917
|
BoatApi,
|
|
2260
2918
|
} from '@boatdev/sdk';
|
|
2261
|
-
import type {
|
|
2919
|
+
import type { GetAiProxyRequest } from '@boatdev/sdk';
|
|
2262
2920
|
|
|
2263
2921
|
async function example() {
|
|
2264
2922
|
console.log("🚀 Testing @boatdev/sdk SDK...");
|
|
@@ -2269,16 +2927,14 @@ async function example() {
|
|
|
2269
2927
|
const api = new BoatApi(config);
|
|
2270
2928
|
|
|
2271
2929
|
const body = {
|
|
2272
|
-
// string |
|
|
2273
|
-
|
|
2274
|
-
// string |
|
|
2275
|
-
|
|
2276
|
-
|
|
2277
|
-
forkRequest: ...,
|
|
2278
|
-
} satisfies ForkOperationRequest;
|
|
2930
|
+
// string | Billing wallet for this request: an organization you belong to, by id (`team_…`) or by name as `GET /orgs` lists it (case-insensitive), or `personal`. Omitted, the account\'s active wallet applies (`PATCH /orgs/active`; personal until set). Two organizations sharing the name answer `409 ambiguous_org` and need the id. Sandboxes and snapshots stay creator-private. On `/environments` routes, only this query parameter selects the organization\'s shared environments; the `X-Boat-Org` header and the active wallet do not apply there. Members read them, owners and admins change them. (optional)
|
|
2931
|
+
org: org_example,
|
|
2932
|
+
// string | Same as the `org` query parameter. Query wins when both are set. (optional)
|
|
2933
|
+
xBoatOrg: xBoatOrg_example,
|
|
2934
|
+
} satisfies GetAiProxyRequest;
|
|
2279
2935
|
|
|
2280
2936
|
try {
|
|
2281
|
-
const data = await api.
|
|
2937
|
+
const data = await api.getAiProxy(body);
|
|
2282
2938
|
console.log(data);
|
|
2283
2939
|
} catch (error) {
|
|
2284
2940
|
console.error(error);
|
|
@@ -2294,13 +2950,12 @@ example().catch(console.error);
|
|
|
2294
2950
|
|
|
2295
2951
|
| Name | Type | Description | Notes |
|
|
2296
2952
|
|------------- | ------------- | ------------- | -------------|
|
|
2297
|
-
| **
|
|
2298
|
-
| **
|
|
2299
|
-
| **forkRequest** | [ForkRequest](ForkRequest.md) | | [Optional] |
|
|
2953
|
+
| **org** | `string` | Billing wallet for this request: an organization you belong to, by id (`team_…`) or by name as `GET /orgs` lists it (case-insensitive), or `personal`. Omitted, the account\'s active wallet applies (`PATCH /orgs/active`; personal until set). Two organizations sharing the name answer `409 ambiguous_org` and need the id. Sandboxes and snapshots stay creator-private. On `/environments` routes, only this query parameter selects the organization\'s shared environments; the `X-Boat-Org` header and the active wallet do not apply there. Members read them, owners and admins change them. | [Optional] [Defaults to `undefined`] |
|
|
2954
|
+
| **xBoatOrg** | `string` | Same as the `org` query parameter. Query wins when both are set. | [Optional] [Defaults to `undefined`] |
|
|
2300
2955
|
|
|
2301
2956
|
### Return type
|
|
2302
2957
|
|
|
2303
|
-
[**
|
|
2958
|
+
[**AiProxySettings**](AiProxySettings.md)
|
|
2304
2959
|
|
|
2305
2960
|
### Authorization
|
|
2306
2961
|
|
|
@@ -2308,31 +2963,26 @@ example().catch(console.error);
|
|
|
2308
2963
|
|
|
2309
2964
|
### HTTP request headers
|
|
2310
2965
|
|
|
2311
|
-
- **Content-Type**:
|
|
2966
|
+
- **Content-Type**: Not defined
|
|
2312
2967
|
- **Accept**: `application/json`
|
|
2313
2968
|
|
|
2314
2969
|
|
|
2315
2970
|
### HTTP response details
|
|
2316
2971
|
| Status code | Description | Response headers |
|
|
2317
2972
|
|-------------|-------------|------------------|
|
|
2318
|
-
| **
|
|
2973
|
+
| **200** | The switch and its price. | - |
|
|
2319
2974
|
| **401** | Missing or invalid bearer token. | - |
|
|
2320
|
-
| **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. | - |
|
|
2321
|
-
| **404** | Resource not found. | - |
|
|
2322
|
-
| **409** | Request conflicts with current account or sandbox state. | - |
|
|
2323
|
-
| **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. | - |
|
|
2324
|
-
| **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. | - |
|
|
2325
2975
|
|
|
2326
2976
|
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
2327
2977
|
|
|
2328
2978
|
|
|
2329
|
-
##
|
|
2979
|
+
## getAiUsage
|
|
2330
2980
|
|
|
2331
|
-
>
|
|
2981
|
+
> AccountAiUsageResponse getAiUsage(days, profile, org, xBoatOrg)
|
|
2332
2982
|
|
|
2333
|
-
Get
|
|
2983
|
+
Get AI usage
|
|
2334
2984
|
|
|
2335
|
-
|
|
2985
|
+
Proxied AI usage, per sandbox and in total, per UTC day, credential and model. Without `profile`, the usage charged to the wallet in scope. With `profile`, the requests made with that profile\'s credentials, whoever pays; only its managers can read it. Needs an API key with `account.read`.
|
|
2336
2986
|
|
|
2337
2987
|
### Example
|
|
2338
2988
|
|
|
@@ -2341,7 +2991,7 @@ import {
|
|
|
2341
2991
|
Configuration,
|
|
2342
2992
|
BoatApi,
|
|
2343
2993
|
} from '@boatdev/sdk';
|
|
2344
|
-
import type {
|
|
2994
|
+
import type { GetAiUsageRequest } from '@boatdev/sdk';
|
|
2345
2995
|
|
|
2346
2996
|
async function example() {
|
|
2347
2997
|
console.log("🚀 Testing @boatdev/sdk SDK...");
|
|
@@ -2352,12 +3002,18 @@ async function example() {
|
|
|
2352
3002
|
const api = new BoatApi(config);
|
|
2353
3003
|
|
|
2354
3004
|
const body = {
|
|
2355
|
-
//
|
|
2356
|
-
|
|
2357
|
-
|
|
3005
|
+
// number | Days of history, today included. (optional)
|
|
3006
|
+
days: 56,
|
|
3007
|
+
// string | A credential profile id. Counts that profile\'s requests instead of a wallet\'s. (optional)
|
|
3008
|
+
profile: profile_example,
|
|
3009
|
+
// string | Billing wallet for this request: an organization you belong to, by id (`team_…`) or by name as `GET /orgs` lists it (case-insensitive), or `personal`. Omitted, the account\'s active wallet applies (`PATCH /orgs/active`; personal until set). Two organizations sharing the name answer `409 ambiguous_org` and need the id. Sandboxes and snapshots stay creator-private. On `/environments` routes, only this query parameter selects the organization\'s shared environments; the `X-Boat-Org` header and the active wallet do not apply there. Members read them, owners and admins change them. (optional)
|
|
3010
|
+
org: org_example,
|
|
3011
|
+
// string | Same as the `org` query parameter. Query wins when both are set. (optional)
|
|
3012
|
+
xBoatOrg: xBoatOrg_example,
|
|
3013
|
+
} satisfies GetAiUsageRequest;
|
|
2358
3014
|
|
|
2359
3015
|
try {
|
|
2360
|
-
const data = await api.
|
|
3016
|
+
const data = await api.getAiUsage(body);
|
|
2361
3017
|
console.log(data);
|
|
2362
3018
|
} catch (error) {
|
|
2363
3019
|
console.error(error);
|
|
@@ -2373,11 +3029,14 @@ example().catch(console.error);
|
|
|
2373
3029
|
|
|
2374
3030
|
| Name | Type | Description | Notes |
|
|
2375
3031
|
|------------- | ------------- | ------------- | -------------|
|
|
2376
|
-
| **
|
|
3032
|
+
| **days** | `number` | Days of history, today included. | [Optional] [Defaults to `30`] |
|
|
3033
|
+
| **profile** | `string` | A credential profile id. Counts that profile\'s requests instead of a wallet\'s. | [Optional] [Defaults to `undefined`] |
|
|
3034
|
+
| **org** | `string` | Billing wallet for this request: an organization you belong to, by id (`team_…`) or by name as `GET /orgs` lists it (case-insensitive), or `personal`. Omitted, the account\'s active wallet applies (`PATCH /orgs/active`; personal until set). Two organizations sharing the name answer `409 ambiguous_org` and need the id. Sandboxes and snapshots stay creator-private. On `/environments` routes, only this query parameter selects the organization\'s shared environments; the `X-Boat-Org` header and the active wallet do not apply there. Members read them, owners and admins change them. | [Optional] [Defaults to `undefined`] |
|
|
3035
|
+
| **xBoatOrg** | `string` | Same as the `org` query parameter. Query wins when both are set. | [Optional] [Defaults to `undefined`] |
|
|
2377
3036
|
|
|
2378
3037
|
### Return type
|
|
2379
3038
|
|
|
2380
|
-
[**
|
|
3039
|
+
[**AccountAiUsageResponse**](AccountAiUsageResponse.md)
|
|
2381
3040
|
|
|
2382
3041
|
### Authorization
|
|
2383
3042
|
|
|
@@ -2392,9 +3051,8 @@ example().catch(console.error);
|
|
|
2392
3051
|
### HTTP response details
|
|
2393
3052
|
| Status code | Description | Response headers |
|
|
2394
3053
|
|-------------|-------------|------------------|
|
|
2395
|
-
| **200** |
|
|
3054
|
+
| **200** | The usage. | - |
|
|
2396
3055
|
| **401** | Missing or invalid bearer token. | - |
|
|
2397
|
-
| **404** | Resource not found. | - |
|
|
2398
3056
|
|
|
2399
3057
|
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
2400
3058
|
|
|
@@ -2755,6 +3413,82 @@ example().catch(console.error);
|
|
|
2755
3413
|
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
2756
3414
|
|
|
2757
3415
|
|
|
3416
|
+
## getSandboxAiUsage
|
|
3417
|
+
|
|
3418
|
+
> SandboxAiUsageResponse getSandboxAiUsage(sandboxId, days)
|
|
3419
|
+
|
|
3420
|
+
Get sandbox AI usage
|
|
3421
|
+
|
|
3422
|
+
One sandbox\'s proxied AI usage per UTC day, credential and model, and whether it is blocked. Needs an API key with `box.read` on the sandbox.
|
|
3423
|
+
|
|
3424
|
+
### Example
|
|
3425
|
+
|
|
3426
|
+
```ts
|
|
3427
|
+
import {
|
|
3428
|
+
Configuration,
|
|
3429
|
+
BoatApi,
|
|
3430
|
+
} from '@boatdev/sdk';
|
|
3431
|
+
import type { GetSandboxAiUsageRequest } from '@boatdev/sdk';
|
|
3432
|
+
|
|
3433
|
+
async function example() {
|
|
3434
|
+
console.log("🚀 Testing @boatdev/sdk SDK...");
|
|
3435
|
+
const config = new Configuration({
|
|
3436
|
+
// Configure HTTP bearer authorization: BoatBearerAuth
|
|
3437
|
+
accessToken: "YOUR BEARER TOKEN",
|
|
3438
|
+
});
|
|
3439
|
+
const api = new BoatApi(config);
|
|
3440
|
+
|
|
3441
|
+
const body = {
|
|
3442
|
+
// string | Public Sandbox id returned by create/list/get sandbox calls.
|
|
3443
|
+
sandboxId: sandboxId_example,
|
|
3444
|
+
// number | Days of history, today included. (optional)
|
|
3445
|
+
days: 56,
|
|
3446
|
+
} satisfies GetSandboxAiUsageRequest;
|
|
3447
|
+
|
|
3448
|
+
try {
|
|
3449
|
+
const data = await api.getSandboxAiUsage(body);
|
|
3450
|
+
console.log(data);
|
|
3451
|
+
} catch (error) {
|
|
3452
|
+
console.error(error);
|
|
3453
|
+
}
|
|
3454
|
+
}
|
|
3455
|
+
|
|
3456
|
+
// Run the test
|
|
3457
|
+
example().catch(console.error);
|
|
3458
|
+
```
|
|
3459
|
+
|
|
3460
|
+
### Parameters
|
|
3461
|
+
|
|
3462
|
+
|
|
3463
|
+
| Name | Type | Description | Notes |
|
|
3464
|
+
|------------- | ------------- | ------------- | -------------|
|
|
3465
|
+
| **sandboxId** | `string` | Public Sandbox id returned by create/list/get sandbox calls. | [Defaults to `undefined`] |
|
|
3466
|
+
| **days** | `number` | Days of history, today included. | [Optional] [Defaults to `30`] |
|
|
3467
|
+
|
|
3468
|
+
### Return type
|
|
3469
|
+
|
|
3470
|
+
[**SandboxAiUsageResponse**](SandboxAiUsageResponse.md)
|
|
3471
|
+
|
|
3472
|
+
### Authorization
|
|
3473
|
+
|
|
3474
|
+
[BoatBearerAuth](../README.md#BoatBearerAuth)
|
|
3475
|
+
|
|
3476
|
+
### HTTP request headers
|
|
3477
|
+
|
|
3478
|
+
- **Content-Type**: Not defined
|
|
3479
|
+
- **Accept**: `application/json`
|
|
3480
|
+
|
|
3481
|
+
|
|
3482
|
+
### HTTP response details
|
|
3483
|
+
| Status code | Description | Response headers |
|
|
3484
|
+
|-------------|-------------|------------------|
|
|
3485
|
+
| **200** | The usage. | - |
|
|
3486
|
+
| **401** | Missing or invalid bearer token. | - |
|
|
3487
|
+
| **404** | Resource not found. | - |
|
|
3488
|
+
|
|
3489
|
+
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
3490
|
+
|
|
3491
|
+
|
|
2758
3492
|
## getSnapshotDownload
|
|
2759
3493
|
|
|
2760
3494
|
> SnapshotDownloadResponse getSnapshotDownload(snapshotId)
|
|
@@ -3302,7 +4036,87 @@ async function example() {
|
|
|
3302
4036
|
} satisfies InterruptRequest;
|
|
3303
4037
|
|
|
3304
4038
|
try {
|
|
3305
|
-
const data = await api.interrupt(body);
|
|
4039
|
+
const data = await api.interrupt(body);
|
|
4040
|
+
console.log(data);
|
|
4041
|
+
} catch (error) {
|
|
4042
|
+
console.error(error);
|
|
4043
|
+
}
|
|
4044
|
+
}
|
|
4045
|
+
|
|
4046
|
+
// Run the test
|
|
4047
|
+
example().catch(console.error);
|
|
4048
|
+
```
|
|
4049
|
+
|
|
4050
|
+
### Parameters
|
|
4051
|
+
|
|
4052
|
+
|
|
4053
|
+
| Name | Type | Description | Notes |
|
|
4054
|
+
|------------- | ------------- | ------------- | -------------|
|
|
4055
|
+
| **sandboxId** | `string` | Public Sandbox id returned by create/list/get sandbox calls. | [Defaults to `undefined`] |
|
|
4056
|
+
| **conversation** | `string` | Interrupt only this conversation id. Omit to interrupt the whole sandbox. | [Optional] [Defaults to `undefined`] |
|
|
4057
|
+
|
|
4058
|
+
### Return type
|
|
4059
|
+
|
|
4060
|
+
[**SandboxActionResponse**](SandboxActionResponse.md)
|
|
4061
|
+
|
|
4062
|
+
### Authorization
|
|
4063
|
+
|
|
4064
|
+
[BoatBearerAuth](../README.md#BoatBearerAuth)
|
|
4065
|
+
|
|
4066
|
+
### HTTP request headers
|
|
4067
|
+
|
|
4068
|
+
- **Content-Type**: Not defined
|
|
4069
|
+
- **Accept**: `application/json`
|
|
4070
|
+
|
|
4071
|
+
|
|
4072
|
+
### HTTP response details
|
|
4073
|
+
| Status code | Description | Response headers |
|
|
4074
|
+
|-------------|-------------|------------------|
|
|
4075
|
+
| **200** | Interrupt requested. | - |
|
|
4076
|
+
| **401** | Missing or invalid bearer token. | - |
|
|
4077
|
+
| **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. | - |
|
|
4078
|
+
| **404** | Resource not found. | - |
|
|
4079
|
+
| **409** | Request conflicts with current account or sandbox state. | - |
|
|
4080
|
+
|
|
4081
|
+
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
4082
|
+
|
|
4083
|
+
|
|
4084
|
+
## limits
|
|
4085
|
+
|
|
4086
|
+
> LimitsResponse limits(org, xBoatOrg, teamId)
|
|
4087
|
+
|
|
4088
|
+
Get Boat limits
|
|
4089
|
+
|
|
4090
|
+
Check remaining machine starts, compute time, credits, 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.
|
|
4091
|
+
|
|
4092
|
+
### Example
|
|
4093
|
+
|
|
4094
|
+
```ts
|
|
4095
|
+
import {
|
|
4096
|
+
Configuration,
|
|
4097
|
+
BoatApi,
|
|
4098
|
+
} from '@boatdev/sdk';
|
|
4099
|
+
import type { LimitsRequest } from '@boatdev/sdk';
|
|
4100
|
+
|
|
4101
|
+
async function example() {
|
|
4102
|
+
console.log("🚀 Testing @boatdev/sdk SDK...");
|
|
4103
|
+
const config = new Configuration({
|
|
4104
|
+
// Configure HTTP bearer authorization: BoatBearerAuth
|
|
4105
|
+
accessToken: "YOUR BEARER TOKEN",
|
|
4106
|
+
});
|
|
4107
|
+
const api = new BoatApi(config);
|
|
4108
|
+
|
|
4109
|
+
const body = {
|
|
4110
|
+
// string | Billing wallet for this request: an organization you belong to, by id (`team_…`) or by name as `GET /orgs` lists it (case-insensitive), or `personal`. Omitted, the account\'s active wallet applies (`PATCH /orgs/active`; personal until set). Two organizations sharing the name answer `409 ambiguous_org` and need the id. Sandboxes and snapshots stay creator-private. On `/environments` routes, only this query parameter selects the organization\'s shared environments; the `X-Boat-Org` header and the active wallet do not apply there. Members read them, owners and admins change them. (optional)
|
|
4111
|
+
org: org_example,
|
|
4112
|
+
// string | Same as the `org` query parameter. Query wins when both are set. (optional)
|
|
4113
|
+
xBoatOrg: xBoatOrg_example,
|
|
4114
|
+
// string | Legacy alias for `org`. Takes precedence over `org` / `X-Boat-Org` when set. (optional)
|
|
4115
|
+
teamId: teamId_example,
|
|
4116
|
+
} satisfies LimitsRequest;
|
|
4117
|
+
|
|
4118
|
+
try {
|
|
4119
|
+
const data = await api.limits(body);
|
|
3306
4120
|
console.log(data);
|
|
3307
4121
|
} catch (error) {
|
|
3308
4122
|
console.error(error);
|
|
@@ -3318,12 +4132,13 @@ example().catch(console.error);
|
|
|
3318
4132
|
|
|
3319
4133
|
| Name | Type | Description | Notes |
|
|
3320
4134
|
|------------- | ------------- | ------------- | -------------|
|
|
3321
|
-
| **
|
|
3322
|
-
| **
|
|
4135
|
+
| **org** | `string` | Billing wallet for this request: an organization you belong to, by id (`team_…`) or by name as `GET /orgs` lists it (case-insensitive), or `personal`. Omitted, the account\'s active wallet applies (`PATCH /orgs/active`; personal until set). Two organizations sharing the name answer `409 ambiguous_org` and need the id. Sandboxes and snapshots stay creator-private. On `/environments` routes, only this query parameter selects the organization\'s shared environments; the `X-Boat-Org` header and the active wallet do not apply there. Members read them, owners and admins change them. | [Optional] [Defaults to `undefined`] |
|
|
4136
|
+
| **xBoatOrg** | `string` | Same as the `org` query parameter. Query wins when both are set. | [Optional] [Defaults to `undefined`] |
|
|
4137
|
+
| **teamId** | `string` | Legacy alias for `org`. Takes precedence over `org` / `X-Boat-Org` when set. | [Optional] [Defaults to `undefined`] |
|
|
3323
4138
|
|
|
3324
4139
|
### Return type
|
|
3325
4140
|
|
|
3326
|
-
[**
|
|
4141
|
+
[**LimitsResponse**](LimitsResponse.md)
|
|
3327
4142
|
|
|
3328
4143
|
### Authorization
|
|
3329
4144
|
|
|
@@ -3338,22 +4153,19 @@ example().catch(console.error);
|
|
|
3338
4153
|
### HTTP response details
|
|
3339
4154
|
| Status code | Description | Response headers |
|
|
3340
4155
|
|-------------|-------------|------------------|
|
|
3341
|
-
| **200** |
|
|
4156
|
+
| **200** | Current creation and concurrent-boat limits. | - |
|
|
3342
4157
|
| **401** | Missing or invalid bearer token. | - |
|
|
3343
|
-
| **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. | - |
|
|
3344
|
-
| **404** | Resource not found. | - |
|
|
3345
|
-
| **409** | Request conflicts with current account or sandbox state. | - |
|
|
3346
4158
|
|
|
3347
4159
|
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
3348
4160
|
|
|
3349
4161
|
|
|
3350
|
-
##
|
|
4162
|
+
## listCredentialProfiles
|
|
3351
4163
|
|
|
3352
|
-
>
|
|
4164
|
+
> CredentialProfileListResponse listCredentialProfiles()
|
|
3353
4165
|
|
|
3354
|
-
|
|
4166
|
+
List credential profiles
|
|
3355
4167
|
|
|
3356
|
-
|
|
4168
|
+
Returns every AI credential profile you can use, yours and your organizations\'. Secret values are never returned. Needs an API key with `account.admin`.
|
|
3357
4169
|
|
|
3358
4170
|
### Example
|
|
3359
4171
|
|
|
@@ -3362,7 +4174,7 @@ import {
|
|
|
3362
4174
|
Configuration,
|
|
3363
4175
|
BoatApi,
|
|
3364
4176
|
} from '@boatdev/sdk';
|
|
3365
|
-
import type {
|
|
4177
|
+
import type { ListCredentialProfilesRequest } from '@boatdev/sdk';
|
|
3366
4178
|
|
|
3367
4179
|
async function example() {
|
|
3368
4180
|
console.log("🚀 Testing @boatdev/sdk SDK...");
|
|
@@ -3372,17 +4184,8 @@ async function example() {
|
|
|
3372
4184
|
});
|
|
3373
4185
|
const api = new BoatApi(config);
|
|
3374
4186
|
|
|
3375
|
-
const body = {
|
|
3376
|
-
// string | Billing wallet for this request: an organization you belong to, by id (`team_…`) or by name as `GET /orgs` lists it (case-insensitive), or `personal`. Omitted, the account\'s active wallet applies (`PATCH /orgs/active`; personal until set). Two organizations sharing the name answer `409 ambiguous_org` and need the id. Sandboxes, snapshots, and environments stay creator-private. (optional)
|
|
3377
|
-
org: org_example,
|
|
3378
|
-
// string | Same as the `org` query parameter. Query wins when both are set. (optional)
|
|
3379
|
-
xBoatOrg: xBoatOrg_example,
|
|
3380
|
-
// string | Legacy alias for `org`. Takes precedence over `org` / `X-Boat-Org` when set. (optional)
|
|
3381
|
-
teamId: teamId_example,
|
|
3382
|
-
} satisfies LimitsRequest;
|
|
3383
|
-
|
|
3384
4187
|
try {
|
|
3385
|
-
const data = await api.
|
|
4188
|
+
const data = await api.listCredentialProfiles();
|
|
3386
4189
|
console.log(data);
|
|
3387
4190
|
} catch (error) {
|
|
3388
4191
|
console.error(error);
|
|
@@ -3395,16 +4198,11 @@ example().catch(console.error);
|
|
|
3395
4198
|
|
|
3396
4199
|
### Parameters
|
|
3397
4200
|
|
|
3398
|
-
|
|
3399
|
-
| Name | Type | Description | Notes |
|
|
3400
|
-
|------------- | ------------- | ------------- | -------------|
|
|
3401
|
-
| **org** | `string` | Billing wallet for this request: an organization you belong to, by id (`team_…`) or by name as `GET /orgs` lists it (case-insensitive), or `personal`. Omitted, the account\'s active wallet applies (`PATCH /orgs/active`; personal until set). Two organizations sharing the name answer `409 ambiguous_org` and need the id. Sandboxes, snapshots, and environments stay creator-private. | [Optional] [Defaults to `undefined`] |
|
|
3402
|
-
| **xBoatOrg** | `string` | Same as the `org` query parameter. Query wins when both are set. | [Optional] [Defaults to `undefined`] |
|
|
3403
|
-
| **teamId** | `string` | Legacy alias for `org`. Takes precedence over `org` / `X-Boat-Org` when set. | [Optional] [Defaults to `undefined`] |
|
|
4201
|
+
This endpoint does not need any parameter.
|
|
3404
4202
|
|
|
3405
4203
|
### Return type
|
|
3406
4204
|
|
|
3407
|
-
[**
|
|
4205
|
+
[**CredentialProfileListResponse**](CredentialProfileListResponse.md)
|
|
3408
4206
|
|
|
3409
4207
|
### Authorization
|
|
3410
4208
|
|
|
@@ -3419,7 +4217,7 @@ example().catch(console.error);
|
|
|
3419
4217
|
### HTTP response details
|
|
3420
4218
|
| Status code | Description | Response headers |
|
|
3421
4219
|
|-------------|-------------|------------------|
|
|
3422
|
-
| **200** |
|
|
4220
|
+
| **200** | The profiles. | - |
|
|
3423
4221
|
| **401** | Missing or invalid bearer token. | - |
|
|
3424
4222
|
|
|
3425
4223
|
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
@@ -4150,7 +4948,7 @@ example().catch(console.error);
|
|
|
4150
4948
|
|
|
4151
4949
|
Read a file from a sandbox
|
|
4152
4950
|
|
|
4153
|
-
Files up to 5 MiB.
|
|
4951
|
+
Files up to 5 MiB. For a larger file, use `POST /sandboxes/{sandboxId}/files/download-url`.
|
|
4154
4952
|
|
|
4155
4953
|
### Example
|
|
4156
4954
|
|
|
@@ -4786,7 +5584,7 @@ async function example() {
|
|
|
4786
5584
|
const api = new BoatApi(config);
|
|
4787
5585
|
|
|
4788
5586
|
const body = {
|
|
4789
|
-
// string | Billing wallet for this request: an organization you belong to, by id (`team_…`) or by name as `GET /orgs` lists it (case-insensitive), or `personal`. Omitted, the account\'s active wallet applies (`PATCH /orgs/active`; personal until set). Two organizations sharing the name answer `409 ambiguous_org` and need the id. Sandboxes
|
|
5587
|
+
// string | Billing wallet for this request: an organization you belong to, by id (`team_…`) or by name as `GET /orgs` lists it (case-insensitive), or `personal`. Omitted, the account\'s active wallet applies (`PATCH /orgs/active`; personal until set). Two organizations sharing the name answer `409 ambiguous_org` and need the id. Sandboxes and snapshots stay creator-private. On `/environments` routes, only this query parameter selects the organization\'s shared environments; the `X-Boat-Org` header and the active wallet do not apply there. Members read them, owners and admins change them. (optional)
|
|
4790
5588
|
org: org_example,
|
|
4791
5589
|
// string | Same as the `org` query parameter. Query wins when both are set. (optional)
|
|
4792
5590
|
xBoatOrg: xBoatOrg_example,
|
|
@@ -4817,7 +5615,7 @@ example().catch(console.error);
|
|
|
4817
5615
|
|
|
4818
5616
|
| Name | Type | Description | Notes |
|
|
4819
5617
|
|------------- | ------------- | ------------- | -------------|
|
|
4820
|
-
| **org** | `string` | Billing wallet for this request: an organization you belong to, by id (`team_…`) or by name as `GET /orgs` lists it (case-insensitive), or `personal`. Omitted, the account\'s active wallet applies (`PATCH /orgs/active`; personal until set). Two organizations sharing the name answer `409 ambiguous_org` and need the id. Sandboxes
|
|
5618
|
+
| **org** | `string` | Billing wallet for this request: an organization you belong to, by id (`team_…`) or by name as `GET /orgs` lists it (case-insensitive), or `personal`. Omitted, the account\'s active wallet applies (`PATCH /orgs/active`; personal until set). Two organizations sharing the name answer `409 ambiguous_org` and need the id. Sandboxes and snapshots stay creator-private. On `/environments` routes, only this query parameter selects the organization\'s shared environments; the `X-Boat-Org` header and the active wallet do not apply there. Members read them, owners and admins change them. | [Optional] [Defaults to `undefined`] |
|
|
4821
5619
|
| **xBoatOrg** | `string` | Same as the `org` query parameter. Query wins when both are set. | [Optional] [Defaults to `undefined`] |
|
|
4822
5620
|
| **limit** | `number` | Maximum items to return. | [Optional] [Defaults to `100`] |
|
|
4823
5621
|
| **cursor** | `string` | Opaque pagination cursor returned as `pageInfo.nextCursor`. | [Optional] [Defaults to `undefined`] |
|
|
@@ -4878,7 +5676,221 @@ async function example() {
|
|
|
4878
5676
|
} satisfies SaveNamedSnapshotRequest;
|
|
4879
5677
|
|
|
4880
5678
|
try {
|
|
4881
|
-
const data = await api.saveNamedSnapshot(body);
|
|
5679
|
+
const data = await api.saveNamedSnapshot(body);
|
|
5680
|
+
console.log(data);
|
|
5681
|
+
} catch (error) {
|
|
5682
|
+
console.error(error);
|
|
5683
|
+
}
|
|
5684
|
+
}
|
|
5685
|
+
|
|
5686
|
+
// Run the test
|
|
5687
|
+
example().catch(console.error);
|
|
5688
|
+
```
|
|
5689
|
+
|
|
5690
|
+
### Parameters
|
|
5691
|
+
|
|
5692
|
+
|
|
5693
|
+
| Name | Type | Description | Notes |
|
|
5694
|
+
|------------- | ------------- | ------------- | -------------|
|
|
5695
|
+
| **namedSnapshotSaveRequest** | [NamedSnapshotSaveRequest](NamedSnapshotSaveRequest.md) | | |
|
|
5696
|
+
|
|
5697
|
+
### Return type
|
|
5698
|
+
|
|
5699
|
+
[**NamedSnapshotSavingResponse**](NamedSnapshotSavingResponse.md)
|
|
5700
|
+
|
|
5701
|
+
### Authorization
|
|
5702
|
+
|
|
5703
|
+
[BoatBearerAuth](../README.md#BoatBearerAuth)
|
|
5704
|
+
|
|
5705
|
+
### HTTP request headers
|
|
5706
|
+
|
|
5707
|
+
- **Content-Type**: `application/json`
|
|
5708
|
+
- **Accept**: `application/json`
|
|
5709
|
+
|
|
5710
|
+
|
|
5711
|
+
### HTTP response details
|
|
5712
|
+
| Status code | Description | Response headers |
|
|
5713
|
+
|-------------|-------------|------------------|
|
|
5714
|
+
| **202** | Save accepted and running in the background. | - |
|
|
5715
|
+
| **400** | Invalid request body or parameters. | - |
|
|
5716
|
+
| **401** | Missing or invalid bearer token. | - |
|
|
5717
|
+
| **404** | Resource not found. | - |
|
|
5718
|
+
| **402** | `credit_required`: the wallet already keeps 10 or more named snapshots and has no credit left. Each named snapshot above the free 10 costs $1.70 a month, charged daily. Add credit or remove one. | - |
|
|
5719
|
+
| **409** | `save_in_progress` when a save under this name is already running; wait for it to settle rather than retrying immediately. | - |
|
|
5720
|
+
|
|
5721
|
+
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
5722
|
+
|
|
5723
|
+
|
|
5724
|
+
## secrets
|
|
5725
|
+
|
|
5726
|
+
> SecretsResponse secrets()
|
|
5727
|
+
|
|
5728
|
+
Get Boat secrets setup
|
|
5729
|
+
|
|
5730
|
+
Returns the environment variables and secret files configured for sandboxes.
|
|
5731
|
+
|
|
5732
|
+
### Example
|
|
5733
|
+
|
|
5734
|
+
```ts
|
|
5735
|
+
import {
|
|
5736
|
+
Configuration,
|
|
5737
|
+
BoatApi,
|
|
5738
|
+
} from '@boatdev/sdk';
|
|
5739
|
+
import type { SecretsRequest } from '@boatdev/sdk';
|
|
5740
|
+
|
|
5741
|
+
async function example() {
|
|
5742
|
+
console.log("🚀 Testing @boatdev/sdk SDK...");
|
|
5743
|
+
const config = new Configuration({
|
|
5744
|
+
// Configure HTTP bearer authorization: BoatBearerAuth
|
|
5745
|
+
accessToken: "YOUR BEARER TOKEN",
|
|
5746
|
+
});
|
|
5747
|
+
const api = new BoatApi(config);
|
|
5748
|
+
|
|
5749
|
+
try {
|
|
5750
|
+
const data = await api.secrets();
|
|
5751
|
+
console.log(data);
|
|
5752
|
+
} catch (error) {
|
|
5753
|
+
console.error(error);
|
|
5754
|
+
}
|
|
5755
|
+
}
|
|
5756
|
+
|
|
5757
|
+
// Run the test
|
|
5758
|
+
example().catch(console.error);
|
|
5759
|
+
```
|
|
5760
|
+
|
|
5761
|
+
### Parameters
|
|
5762
|
+
|
|
5763
|
+
This endpoint does not need any parameter.
|
|
5764
|
+
|
|
5765
|
+
### Return type
|
|
5766
|
+
|
|
5767
|
+
[**SecretsResponse**](SecretsResponse.md)
|
|
5768
|
+
|
|
5769
|
+
### Authorization
|
|
5770
|
+
|
|
5771
|
+
[BoatBearerAuth](../README.md#BoatBearerAuth)
|
|
5772
|
+
|
|
5773
|
+
### HTTP request headers
|
|
5774
|
+
|
|
5775
|
+
- **Content-Type**: Not defined
|
|
5776
|
+
- **Accept**: `application/json`
|
|
5777
|
+
|
|
5778
|
+
|
|
5779
|
+
### HTTP response details
|
|
5780
|
+
| Status code | Description | Response headers |
|
|
5781
|
+
|-------------|-------------|------------------|
|
|
5782
|
+
| **200** | Current secret setup metadata. | - |
|
|
5783
|
+
| **401** | Missing or invalid bearer token. | - |
|
|
5784
|
+
|
|
5785
|
+
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
5786
|
+
|
|
5787
|
+
|
|
5788
|
+
## selectRepo
|
|
5789
|
+
|
|
5790
|
+
> RepoSelectionResponse selectRepo(repoSelectionRequest)
|
|
5791
|
+
|
|
5792
|
+
Select repository for sandboxes
|
|
5793
|
+
|
|
5794
|
+
Idempotently selects one repository for the sandbox environment. Use `databaseId` from `GET /repos` as `repositoryId`; selecting an already-selected repository updates its `baseBranch`.
|
|
5795
|
+
|
|
5796
|
+
### Example
|
|
5797
|
+
|
|
5798
|
+
```ts
|
|
5799
|
+
import {
|
|
5800
|
+
Configuration,
|
|
5801
|
+
BoatApi,
|
|
5802
|
+
} from '@boatdev/sdk';
|
|
5803
|
+
import type { SelectRepoRequest } from '@boatdev/sdk';
|
|
5804
|
+
|
|
5805
|
+
async function example() {
|
|
5806
|
+
console.log("🚀 Testing @boatdev/sdk SDK...");
|
|
5807
|
+
const config = new Configuration({
|
|
5808
|
+
// Configure HTTP bearer authorization: BoatBearerAuth
|
|
5809
|
+
accessToken: "YOUR BEARER TOKEN",
|
|
5810
|
+
});
|
|
5811
|
+
const api = new BoatApi(config);
|
|
5812
|
+
|
|
5813
|
+
const body = {
|
|
5814
|
+
// RepoSelectionRequest
|
|
5815
|
+
repoSelectionRequest: ...,
|
|
5816
|
+
} satisfies SelectRepoRequest;
|
|
5817
|
+
|
|
5818
|
+
try {
|
|
5819
|
+
const data = await api.selectRepo(body);
|
|
5820
|
+
console.log(data);
|
|
5821
|
+
} catch (error) {
|
|
5822
|
+
console.error(error);
|
|
5823
|
+
}
|
|
5824
|
+
}
|
|
5825
|
+
|
|
5826
|
+
// Run the test
|
|
5827
|
+
example().catch(console.error);
|
|
5828
|
+
```
|
|
5829
|
+
|
|
5830
|
+
### Parameters
|
|
5831
|
+
|
|
5832
|
+
|
|
5833
|
+
| Name | Type | Description | Notes |
|
|
5834
|
+
|------------- | ------------- | ------------- | -------------|
|
|
5835
|
+
| **repoSelectionRequest** | [RepoSelectionRequest](RepoSelectionRequest.md) | | |
|
|
5836
|
+
|
|
5837
|
+
### Return type
|
|
5838
|
+
|
|
5839
|
+
[**RepoSelectionResponse**](RepoSelectionResponse.md)
|
|
5840
|
+
|
|
5841
|
+
### Authorization
|
|
5842
|
+
|
|
5843
|
+
[BoatBearerAuth](../README.md#BoatBearerAuth)
|
|
5844
|
+
|
|
5845
|
+
### HTTP request headers
|
|
5846
|
+
|
|
5847
|
+
- **Content-Type**: `application/json`
|
|
5848
|
+
- **Accept**: `application/json`
|
|
5849
|
+
|
|
5850
|
+
|
|
5851
|
+
### HTTP response details
|
|
5852
|
+
| Status code | Description | Response headers |
|
|
5853
|
+
|-------------|-------------|------------------|
|
|
5854
|
+
| **200** | Updated repository selection. | - |
|
|
5855
|
+
| **400** | Invalid request body or parameters. | - |
|
|
5856
|
+
| **401** | Missing or invalid bearer token. | - |
|
|
5857
|
+
| **409** | Request conflicts with current account or sandbox state. | - |
|
|
5858
|
+
|
|
5859
|
+
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
5860
|
+
|
|
5861
|
+
|
|
5862
|
+
## setActiveOrganization
|
|
5863
|
+
|
|
5864
|
+
> ActiveOrgResponse setActiveOrganization(activeOrgUpdateRequest)
|
|
5865
|
+
|
|
5866
|
+
Set the active organization
|
|
5867
|
+
|
|
5868
|
+
Set the wallet new sandboxes bill when a request names none, for this account on every client: the API, the CLI (`boat org switch` sets the same value) and the dashboard. Pass an organization id or name you belong to, or `personal` (or `null`) for your own account. `GET /limits` follows it. Sandboxes already running keep the wallet they were created with; leaving or deleting the organization resets the account to personal.
|
|
5869
|
+
|
|
5870
|
+
### Example
|
|
5871
|
+
|
|
5872
|
+
```ts
|
|
5873
|
+
import {
|
|
5874
|
+
Configuration,
|
|
5875
|
+
BoatApi,
|
|
5876
|
+
} from '@boatdev/sdk';
|
|
5877
|
+
import type { SetActiveOrganizationRequest } from '@boatdev/sdk';
|
|
5878
|
+
|
|
5879
|
+
async function example() {
|
|
5880
|
+
console.log("🚀 Testing @boatdev/sdk SDK...");
|
|
5881
|
+
const config = new Configuration({
|
|
5882
|
+
// Configure HTTP bearer authorization: BoatBearerAuth
|
|
5883
|
+
accessToken: "YOUR BEARER TOKEN",
|
|
5884
|
+
});
|
|
5885
|
+
const api = new BoatApi(config);
|
|
5886
|
+
|
|
5887
|
+
const body = {
|
|
5888
|
+
// ActiveOrgUpdateRequest
|
|
5889
|
+
activeOrgUpdateRequest: {"org":"acme"},
|
|
5890
|
+
} satisfies SetActiveOrganizationRequest;
|
|
5891
|
+
|
|
5892
|
+
try {
|
|
5893
|
+
const data = await api.setActiveOrganization(body);
|
|
4882
5894
|
console.log(data);
|
|
4883
5895
|
} catch (error) {
|
|
4884
5896
|
console.error(error);
|
|
@@ -4894,11 +5906,11 @@ example().catch(console.error);
|
|
|
4894
5906
|
|
|
4895
5907
|
| Name | Type | Description | Notes |
|
|
4896
5908
|
|------------- | ------------- | ------------- | -------------|
|
|
4897
|
-
| **
|
|
5909
|
+
| **activeOrgUpdateRequest** | [ActiveOrgUpdateRequest](ActiveOrgUpdateRequest.md) | | |
|
|
4898
5910
|
|
|
4899
5911
|
### Return type
|
|
4900
5912
|
|
|
4901
|
-
[**
|
|
5913
|
+
[**ActiveOrgResponse**](ActiveOrgResponse.md)
|
|
4902
5914
|
|
|
4903
5915
|
### Authorization
|
|
4904
5916
|
|
|
@@ -4913,23 +5925,22 @@ example().catch(console.error);
|
|
|
4913
5925
|
### HTTP response details
|
|
4914
5926
|
| Status code | Description | Response headers |
|
|
4915
5927
|
|-------------|-------------|------------------|
|
|
4916
|
-
| **
|
|
5928
|
+
| **200** | The wallet now active. | - |
|
|
4917
5929
|
| **400** | Invalid request body or parameters. | - |
|
|
4918
5930
|
| **401** | Missing or invalid bearer token. | - |
|
|
4919
|
-
| **
|
|
4920
|
-
| **
|
|
4921
|
-
| **409** | `save_in_progress` when a save under this name is already running; wait for it to settle rather than retrying immediately. | - |
|
|
5931
|
+
| **403** | `not_org_member`: no organization with that id or name that you belong to. | - |
|
|
5932
|
+
| **409** | `ambiguous_org`: several of your organizations share that name; pass the id. | - |
|
|
4922
5933
|
|
|
4923
5934
|
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
4924
5935
|
|
|
4925
5936
|
|
|
4926
|
-
##
|
|
5937
|
+
## setCredentialProfileCustomApi
|
|
4927
5938
|
|
|
4928
|
-
>
|
|
5939
|
+
> CredentialProfileResponse setCredentialProfileCustomApi(profile, name, setCustomApiRequest)
|
|
4929
5940
|
|
|
4930
|
-
|
|
5941
|
+
Set a custom API
|
|
4931
5942
|
|
|
4932
|
-
|
|
5943
|
+
Adds or replaces one custom API. The sandbox gets `<NAME>` and `<NAME>_BASE_URL`. Needs an API key with `account.admin`.
|
|
4933
5944
|
|
|
4934
5945
|
### Example
|
|
4935
5946
|
|
|
@@ -4938,7 +5949,7 @@ import {
|
|
|
4938
5949
|
Configuration,
|
|
4939
5950
|
BoatApi,
|
|
4940
5951
|
} from '@boatdev/sdk';
|
|
4941
|
-
import type {
|
|
5952
|
+
import type { SetCredentialProfileCustomApiRequest } from '@boatdev/sdk';
|
|
4942
5953
|
|
|
4943
5954
|
async function example() {
|
|
4944
5955
|
console.log("🚀 Testing @boatdev/sdk SDK...");
|
|
@@ -4948,8 +5959,17 @@ async function example() {
|
|
|
4948
5959
|
});
|
|
4949
5960
|
const api = new BoatApi(config);
|
|
4950
5961
|
|
|
5962
|
+
const body = {
|
|
5963
|
+
// string | Profile id or name.
|
|
5964
|
+
profile: profile_example,
|
|
5965
|
+
// string | Environment variable name of the custom API, for example `STRIPE_KEY`. Provider names (`ANTHROPIC_*`, `OPENAI_*`, and so on) and names that end in `_BASE_URL` are reserved.
|
|
5966
|
+
name: name_example,
|
|
5967
|
+
// SetCustomApiRequest
|
|
5968
|
+
setCustomApiRequest: {"value":"sk_live_123","baseUrl":"https://api.stripe.com/v1"},
|
|
5969
|
+
} satisfies SetCredentialProfileCustomApiRequest;
|
|
5970
|
+
|
|
4951
5971
|
try {
|
|
4952
|
-
const data = await api.
|
|
5972
|
+
const data = await api.setCredentialProfileCustomApi(body);
|
|
4953
5973
|
console.log(data);
|
|
4954
5974
|
} catch (error) {
|
|
4955
5975
|
console.error(error);
|
|
@@ -4962,11 +5982,16 @@ example().catch(console.error);
|
|
|
4962
5982
|
|
|
4963
5983
|
### Parameters
|
|
4964
5984
|
|
|
4965
|
-
|
|
5985
|
+
|
|
5986
|
+
| Name | Type | Description | Notes |
|
|
5987
|
+
|------------- | ------------- | ------------- | -------------|
|
|
5988
|
+
| **profile** | `string` | Profile id or name. | [Defaults to `undefined`] |
|
|
5989
|
+
| **name** | `string` | Environment variable name of the custom API, for example `STRIPE_KEY`. Provider names (`ANTHROPIC_*`, `OPENAI_*`, and so on) and names that end in `_BASE_URL` are reserved. | [Defaults to `undefined`] |
|
|
5990
|
+
| **setCustomApiRequest** | [SetCustomApiRequest](SetCustomApiRequest.md) | | |
|
|
4966
5991
|
|
|
4967
5992
|
### Return type
|
|
4968
5993
|
|
|
4969
|
-
[**
|
|
5994
|
+
[**CredentialProfileResponse**](CredentialProfileResponse.md)
|
|
4970
5995
|
|
|
4971
5996
|
### Authorization
|
|
4972
5997
|
|
|
@@ -4974,26 +5999,29 @@ This endpoint does not need any parameter.
|
|
|
4974
5999
|
|
|
4975
6000
|
### HTTP request headers
|
|
4976
6001
|
|
|
4977
|
-
- **Content-Type**:
|
|
6002
|
+
- **Content-Type**: `application/json`
|
|
4978
6003
|
- **Accept**: `application/json`
|
|
4979
6004
|
|
|
4980
6005
|
|
|
4981
6006
|
### HTTP response details
|
|
4982
6007
|
| Status code | Description | Response headers |
|
|
4983
6008
|
|-------------|-------------|------------------|
|
|
4984
|
-
| **200** |
|
|
6009
|
+
| **200** | The updated profile. | - |
|
|
6010
|
+
| **400** | Invalid request body or parameters. | - |
|
|
4985
6011
|
| **401** | Missing or invalid bearer token. | - |
|
|
6012
|
+
| **403** | Authenticated token is not allowed to perform this action. | - |
|
|
6013
|
+
| **404** | Resource not found. | - |
|
|
4986
6014
|
|
|
4987
6015
|
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
4988
6016
|
|
|
4989
6017
|
|
|
4990
|
-
##
|
|
6018
|
+
## setCredentialProfileKey
|
|
4991
6019
|
|
|
4992
|
-
>
|
|
6020
|
+
> CredentialProfileResponse setCredentialProfileKey(profile, credential, setCredentialKeyRequest)
|
|
4993
6021
|
|
|
4994
|
-
|
|
6022
|
+
Set a credential profile API key
|
|
4995
6023
|
|
|
4996
|
-
|
|
6024
|
+
Sets one API key. A sign-in id returns `400 not_an_api_key`; connect sign-ins on the dashboard Agents page. Running sandboxes that use the profile get the new key. Needs an API key with `account.admin`.
|
|
4997
6025
|
|
|
4998
6026
|
### Example
|
|
4999
6027
|
|
|
@@ -5002,7 +6030,7 @@ import {
|
|
|
5002
6030
|
Configuration,
|
|
5003
6031
|
BoatApi,
|
|
5004
6032
|
} from '@boatdev/sdk';
|
|
5005
|
-
import type {
|
|
6033
|
+
import type { SetCredentialProfileKeyRequest } from '@boatdev/sdk';
|
|
5006
6034
|
|
|
5007
6035
|
async function example() {
|
|
5008
6036
|
console.log("🚀 Testing @boatdev/sdk SDK...");
|
|
@@ -5013,12 +6041,16 @@ async function example() {
|
|
|
5013
6041
|
const api = new BoatApi(config);
|
|
5014
6042
|
|
|
5015
6043
|
const body = {
|
|
5016
|
-
//
|
|
5017
|
-
|
|
5018
|
-
|
|
6044
|
+
// string | Profile id or name.
|
|
6045
|
+
profile: profile_example,
|
|
6046
|
+
// CredentialId
|
|
6047
|
+
credential: ...,
|
|
6048
|
+
// SetCredentialKeyRequest
|
|
6049
|
+
setCredentialKeyRequest: ...,
|
|
6050
|
+
} satisfies SetCredentialProfileKeyRequest;
|
|
5019
6051
|
|
|
5020
6052
|
try {
|
|
5021
|
-
const data = await api.
|
|
6053
|
+
const data = await api.setCredentialProfileKey(body);
|
|
5022
6054
|
console.log(data);
|
|
5023
6055
|
} catch (error) {
|
|
5024
6056
|
console.error(error);
|
|
@@ -5034,11 +6066,13 @@ example().catch(console.error);
|
|
|
5034
6066
|
|
|
5035
6067
|
| Name | Type | Description | Notes |
|
|
5036
6068
|
|------------- | ------------- | ------------- | -------------|
|
|
5037
|
-
| **
|
|
6069
|
+
| **profile** | `string` | Profile id or name. | [Defaults to `undefined`] |
|
|
6070
|
+
| **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] |
|
|
6071
|
+
| **setCredentialKeyRequest** | [SetCredentialKeyRequest](SetCredentialKeyRequest.md) | | |
|
|
5038
6072
|
|
|
5039
6073
|
### Return type
|
|
5040
6074
|
|
|
5041
|
-
[**
|
|
6075
|
+
[**CredentialProfileResponse**](CredentialProfileResponse.md)
|
|
5042
6076
|
|
|
5043
6077
|
### Authorization
|
|
5044
6078
|
|
|
@@ -5053,21 +6087,22 @@ example().catch(console.error);
|
|
|
5053
6087
|
### HTTP response details
|
|
5054
6088
|
| Status code | Description | Response headers |
|
|
5055
6089
|
|-------------|-------------|------------------|
|
|
5056
|
-
| **200** |
|
|
6090
|
+
| **200** | The updated profile. | - |
|
|
5057
6091
|
| **400** | Invalid request body or parameters. | - |
|
|
5058
6092
|
| **401** | Missing or invalid bearer token. | - |
|
|
5059
|
-
| **
|
|
6093
|
+
| **403** | Authenticated token is not allowed to perform this action. | - |
|
|
6094
|
+
| **404** | Resource not found. | - |
|
|
5060
6095
|
|
|
5061
6096
|
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
5062
6097
|
|
|
5063
6098
|
|
|
5064
|
-
##
|
|
6099
|
+
## setEnvironmentSecretFile
|
|
5065
6100
|
|
|
5066
|
-
>
|
|
6101
|
+
> EnvironmentItemChangeResponse setEnvironmentSecretFile(environmentId, setEnvironmentSecretFileRequest, org)
|
|
5067
6102
|
|
|
5068
|
-
|
|
6103
|
+
Write one secret file
|
|
5069
6104
|
|
|
5070
|
-
|
|
6105
|
+
Adds or replaces a single secret file by path. Mints a new immutable version.
|
|
5071
6106
|
|
|
5072
6107
|
### Example
|
|
5073
6108
|
|
|
@@ -5076,7 +6111,7 @@ import {
|
|
|
5076
6111
|
Configuration,
|
|
5077
6112
|
BoatApi,
|
|
5078
6113
|
} from '@boatdev/sdk';
|
|
5079
|
-
import type {
|
|
6114
|
+
import type { SetEnvironmentSecretFileOperationRequest } from '@boatdev/sdk';
|
|
5080
6115
|
|
|
5081
6116
|
async function example() {
|
|
5082
6117
|
console.log("🚀 Testing @boatdev/sdk SDK...");
|
|
@@ -5087,12 +6122,16 @@ async function example() {
|
|
|
5087
6122
|
const api = new BoatApi(config);
|
|
5088
6123
|
|
|
5089
6124
|
const body = {
|
|
5090
|
-
//
|
|
5091
|
-
|
|
5092
|
-
|
|
6125
|
+
// string
|
|
6126
|
+
environmentId: 38400000-8cf0-11bd-b23e-10b96e4ef00d,
|
|
6127
|
+
// SetEnvironmentSecretFileRequest
|
|
6128
|
+
setEnvironmentSecretFileRequest: ...,
|
|
6129
|
+
// string | Billing wallet for this request: an organization you belong to, by id (`team_…`) or by name as `GET /orgs` lists it (case-insensitive), or `personal`. Omitted, the account\'s active wallet applies (`PATCH /orgs/active`; personal until set). Two organizations sharing the name answer `409 ambiguous_org` and need the id. Sandboxes and snapshots stay creator-private. On `/environments` routes, only this query parameter selects the organization\'s shared environments; the `X-Boat-Org` header and the active wallet do not apply there. Members read them, owners and admins change them. (optional)
|
|
6130
|
+
org: org_example,
|
|
6131
|
+
} satisfies SetEnvironmentSecretFileOperationRequest;
|
|
5093
6132
|
|
|
5094
6133
|
try {
|
|
5095
|
-
const data = await api.
|
|
6134
|
+
const data = await api.setEnvironmentSecretFile(body);
|
|
5096
6135
|
console.log(data);
|
|
5097
6136
|
} catch (error) {
|
|
5098
6137
|
console.error(error);
|
|
@@ -5108,11 +6147,13 @@ example().catch(console.error);
|
|
|
5108
6147
|
|
|
5109
6148
|
| Name | Type | Description | Notes |
|
|
5110
6149
|
|------------- | ------------- | ------------- | -------------|
|
|
5111
|
-
| **
|
|
6150
|
+
| **environmentId** | `string` | | [Defaults to `undefined`] |
|
|
6151
|
+
| **setEnvironmentSecretFileRequest** | [SetEnvironmentSecretFileRequest](SetEnvironmentSecretFileRequest.md) | | |
|
|
6152
|
+
| **org** | `string` | Billing wallet for this request: an organization you belong to, by id (`team_…`) or by name as `GET /orgs` lists it (case-insensitive), or `personal`. Omitted, the account\'s active wallet applies (`PATCH /orgs/active`; personal until set). Two organizations sharing the name answer `409 ambiguous_org` and need the id. Sandboxes and snapshots stay creator-private. On `/environments` routes, only this query parameter selects the organization\'s shared environments; the `X-Boat-Org` header and the active wallet do not apply there. Members read them, owners and admins change them. | [Optional] [Defaults to `undefined`] |
|
|
5112
6153
|
|
|
5113
6154
|
### Return type
|
|
5114
6155
|
|
|
5115
|
-
[**
|
|
6156
|
+
[**EnvironmentItemChangeResponse**](EnvironmentItemChangeResponse.md)
|
|
5116
6157
|
|
|
5117
6158
|
### Authorization
|
|
5118
6159
|
|
|
@@ -5127,22 +6168,21 @@ example().catch(console.error);
|
|
|
5127
6168
|
### HTTP response details
|
|
5128
6169
|
| Status code | Description | Response headers |
|
|
5129
6170
|
|-------------|-------------|------------------|
|
|
5130
|
-
| **200** |
|
|
6171
|
+
| **200** | New version minted. | - |
|
|
5131
6172
|
| **400** | Invalid request body or parameters. | - |
|
|
5132
6173
|
| **401** | Missing or invalid bearer token. | - |
|
|
5133
|
-
| **
|
|
5134
|
-
| **409** | `ambiguous_org`: several of your organizations share that name; pass the id. | - |
|
|
6174
|
+
| **404** | Resource not found. | - |
|
|
5135
6175
|
|
|
5136
6176
|
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
5137
6177
|
|
|
5138
6178
|
|
|
5139
|
-
##
|
|
6179
|
+
## setEnvironmentVar
|
|
5140
6180
|
|
|
5141
|
-
> EnvironmentItemChangeResponse
|
|
6181
|
+
> EnvironmentItemChangeResponse setEnvironmentVar(environmentId, key, setEnvironmentVarRequest, org)
|
|
5142
6182
|
|
|
5143
|
-
|
|
6183
|
+
Set one environment variable
|
|
5144
6184
|
|
|
5145
|
-
|
|
6185
|
+
Sets or replaces a single variable without reading or rewriting the rest. Mints a new immutable version.
|
|
5146
6186
|
|
|
5147
6187
|
### Example
|
|
5148
6188
|
|
|
@@ -5151,7 +6191,7 @@ import {
|
|
|
5151
6191
|
Configuration,
|
|
5152
6192
|
BoatApi,
|
|
5153
6193
|
} from '@boatdev/sdk';
|
|
5154
|
-
import type {
|
|
6194
|
+
import type { SetEnvironmentVarOperationRequest } from '@boatdev/sdk';
|
|
5155
6195
|
|
|
5156
6196
|
async function example() {
|
|
5157
6197
|
console.log("🚀 Testing @boatdev/sdk SDK...");
|
|
@@ -5164,12 +6204,16 @@ async function example() {
|
|
|
5164
6204
|
const body = {
|
|
5165
6205
|
// string
|
|
5166
6206
|
environmentId: 38400000-8cf0-11bd-b23e-10b96e4ef00d,
|
|
5167
|
-
//
|
|
5168
|
-
|
|
5169
|
-
|
|
6207
|
+
// string | Environment variable name.
|
|
6208
|
+
key: key_example,
|
|
6209
|
+
// SetEnvironmentVarRequest
|
|
6210
|
+
setEnvironmentVarRequest: ...,
|
|
6211
|
+
// string | Billing wallet for this request: an organization you belong to, by id (`team_…`) or by name as `GET /orgs` lists it (case-insensitive), or `personal`. Omitted, the account\'s active wallet applies (`PATCH /orgs/active`; personal until set). Two organizations sharing the name answer `409 ambiguous_org` and need the id. Sandboxes and snapshots stay creator-private. On `/environments` routes, only this query parameter selects the organization\'s shared environments; the `X-Boat-Org` header and the active wallet do not apply there. Members read them, owners and admins change them. (optional)
|
|
6212
|
+
org: org_example,
|
|
6213
|
+
} satisfies SetEnvironmentVarOperationRequest;
|
|
5170
6214
|
|
|
5171
6215
|
try {
|
|
5172
|
-
const data = await api.
|
|
6216
|
+
const data = await api.setEnvironmentVar(body);
|
|
5173
6217
|
console.log(data);
|
|
5174
6218
|
} catch (error) {
|
|
5175
6219
|
console.error(error);
|
|
@@ -5186,7 +6230,9 @@ example().catch(console.error);
|
|
|
5186
6230
|
| Name | Type | Description | Notes |
|
|
5187
6231
|
|------------- | ------------- | ------------- | -------------|
|
|
5188
6232
|
| **environmentId** | `string` | | [Defaults to `undefined`] |
|
|
5189
|
-
| **
|
|
6233
|
+
| **key** | `string` | Environment variable name. | [Defaults to `undefined`] |
|
|
6234
|
+
| **setEnvironmentVarRequest** | [SetEnvironmentVarRequest](SetEnvironmentVarRequest.md) | | |
|
|
6235
|
+
| **org** | `string` | Billing wallet for this request: an organization you belong to, by id (`team_…`) or by name as `GET /orgs` lists it (case-insensitive), or `personal`. Omitted, the account\'s active wallet applies (`PATCH /orgs/active`; personal until set). Two organizations sharing the name answer `409 ambiguous_org` and need the id. Sandboxes and snapshots stay creator-private. On `/environments` routes, only this query parameter selects the organization\'s shared environments; the `X-Boat-Org` header and the active wallet do not apply there. Members read them, owners and admins change them. | [Optional] [Defaults to `undefined`] |
|
|
5190
6236
|
|
|
5191
6237
|
### Return type
|
|
5192
6238
|
|
|
@@ -5213,13 +6259,13 @@ example().catch(console.error);
|
|
|
5213
6259
|
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
5214
6260
|
|
|
5215
6261
|
|
|
5216
|
-
##
|
|
6262
|
+
## setSandboxAiAccess
|
|
5217
6263
|
|
|
5218
|
-
>
|
|
6264
|
+
> SandboxAiAccessResponse setSandboxAiAccess(sandboxId, setSandboxAiAccessRequest)
|
|
5219
6265
|
|
|
5220
|
-
|
|
6266
|
+
Block or unblock sandbox AI access
|
|
5221
6267
|
|
|
5222
|
-
|
|
6268
|
+
Blocks or unblocks the sandbox\'s AI placeholders, running or stopped. The proxy refuses a blocked sandbox\'s requests with `403`. It has no effect on a sandbox that holds real keys. The sandbox creator, or a manager of its credential profile, can call it. Needs an API key with `account.admin`.
|
|
5223
6269
|
|
|
5224
6270
|
### Example
|
|
5225
6271
|
|
|
@@ -5228,7 +6274,7 @@ import {
|
|
|
5228
6274
|
Configuration,
|
|
5229
6275
|
BoatApi,
|
|
5230
6276
|
} from '@boatdev/sdk';
|
|
5231
|
-
import type {
|
|
6277
|
+
import type { SetSandboxAiAccessOperationRequest } from '@boatdev/sdk';
|
|
5232
6278
|
|
|
5233
6279
|
async function example() {
|
|
5234
6280
|
console.log("🚀 Testing @boatdev/sdk SDK...");
|
|
@@ -5239,16 +6285,14 @@ async function example() {
|
|
|
5239
6285
|
const api = new BoatApi(config);
|
|
5240
6286
|
|
|
5241
6287
|
const body = {
|
|
5242
|
-
// string
|
|
5243
|
-
|
|
5244
|
-
//
|
|
5245
|
-
|
|
5246
|
-
|
|
5247
|
-
setEnvironmentVarRequest: ...,
|
|
5248
|
-
} satisfies SetEnvironmentVarOperationRequest;
|
|
6288
|
+
// string | Public Sandbox id returned by create/list/get sandbox calls.
|
|
6289
|
+
sandboxId: sandboxId_example,
|
|
6290
|
+
// SetSandboxAiAccessRequest
|
|
6291
|
+
setSandboxAiAccessRequest: ...,
|
|
6292
|
+
} satisfies SetSandboxAiAccessOperationRequest;
|
|
5249
6293
|
|
|
5250
6294
|
try {
|
|
5251
|
-
const data = await api.
|
|
6295
|
+
const data = await api.setSandboxAiAccess(body);
|
|
5252
6296
|
console.log(data);
|
|
5253
6297
|
} catch (error) {
|
|
5254
6298
|
console.error(error);
|
|
@@ -5264,13 +6308,12 @@ example().catch(console.error);
|
|
|
5264
6308
|
|
|
5265
6309
|
| Name | Type | Description | Notes |
|
|
5266
6310
|
|------------- | ------------- | ------------- | -------------|
|
|
5267
|
-
| **
|
|
5268
|
-
| **
|
|
5269
|
-
| **setEnvironmentVarRequest** | [SetEnvironmentVarRequest](SetEnvironmentVarRequest.md) | | |
|
|
6311
|
+
| **sandboxId** | `string` | Public Sandbox id returned by create/list/get sandbox calls. | [Defaults to `undefined`] |
|
|
6312
|
+
| **setSandboxAiAccessRequest** | [SetSandboxAiAccessRequest](SetSandboxAiAccessRequest.md) | | |
|
|
5270
6313
|
|
|
5271
6314
|
### Return type
|
|
5272
6315
|
|
|
5273
|
-
[**
|
|
6316
|
+
[**SandboxAiAccessResponse**](SandboxAiAccessResponse.md)
|
|
5274
6317
|
|
|
5275
6318
|
### Authorization
|
|
5276
6319
|
|
|
@@ -5285,9 +6328,10 @@ example().catch(console.error);
|
|
|
5285
6328
|
### HTTP response details
|
|
5286
6329
|
| Status code | Description | Response headers |
|
|
5287
6330
|
|-------------|-------------|------------------|
|
|
5288
|
-
| **200** |
|
|
6331
|
+
| **200** | The new state. | - |
|
|
5289
6332
|
| **400** | Invalid request body or parameters. | - |
|
|
5290
6333
|
| **401** | Missing or invalid bearer token. | - |
|
|
6334
|
+
| **403** | Authenticated token is not allowed to perform this action. | - |
|
|
5291
6335
|
| **404** | Resource not found. | - |
|
|
5292
6336
|
|
|
5293
6337
|
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
@@ -5831,6 +6875,165 @@ example().catch(console.error);
|
|
|
5831
6875
|
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
5832
6876
|
|
|
5833
6877
|
|
|
6878
|
+
## updateAiProxy
|
|
6879
|
+
|
|
6880
|
+
> AiProxySettings updateAiProxy(updateAiProxyRequest, org, xBoatOrg)
|
|
6881
|
+
|
|
6882
|
+
Turn the AI credentials proxy on or off
|
|
6883
|
+
|
|
6884
|
+
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 of Boat time 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`.
|
|
6885
|
+
|
|
6886
|
+
### Example
|
|
6887
|
+
|
|
6888
|
+
```ts
|
|
6889
|
+
import {
|
|
6890
|
+
Configuration,
|
|
6891
|
+
BoatApi,
|
|
6892
|
+
} from '@boatdev/sdk';
|
|
6893
|
+
import type { UpdateAiProxyOperationRequest } from '@boatdev/sdk';
|
|
6894
|
+
|
|
6895
|
+
async function example() {
|
|
6896
|
+
console.log("🚀 Testing @boatdev/sdk SDK...");
|
|
6897
|
+
const config = new Configuration({
|
|
6898
|
+
// Configure HTTP bearer authorization: BoatBearerAuth
|
|
6899
|
+
accessToken: "YOUR BEARER TOKEN",
|
|
6900
|
+
});
|
|
6901
|
+
const api = new BoatApi(config);
|
|
6902
|
+
|
|
6903
|
+
const body = {
|
|
6904
|
+
// UpdateAiProxyRequest
|
|
6905
|
+
updateAiProxyRequest: ...,
|
|
6906
|
+
// string | Billing wallet for this request: an organization you belong to, by id (`team_…`) or by name as `GET /orgs` lists it (case-insensitive), or `personal`. Omitted, the account\'s active wallet applies (`PATCH /orgs/active`; personal until set). Two organizations sharing the name answer `409 ambiguous_org` and need the id. Sandboxes and snapshots stay creator-private. On `/environments` routes, only this query parameter selects the organization\'s shared environments; the `X-Boat-Org` header and the active wallet do not apply there. Members read them, owners and admins change them. (optional)
|
|
6907
|
+
org: org_example,
|
|
6908
|
+
// string | Same as the `org` query parameter. Query wins when both are set. (optional)
|
|
6909
|
+
xBoatOrg: xBoatOrg_example,
|
|
6910
|
+
} satisfies UpdateAiProxyOperationRequest;
|
|
6911
|
+
|
|
6912
|
+
try {
|
|
6913
|
+
const data = await api.updateAiProxy(body);
|
|
6914
|
+
console.log(data);
|
|
6915
|
+
} catch (error) {
|
|
6916
|
+
console.error(error);
|
|
6917
|
+
}
|
|
6918
|
+
}
|
|
6919
|
+
|
|
6920
|
+
// Run the test
|
|
6921
|
+
example().catch(console.error);
|
|
6922
|
+
```
|
|
6923
|
+
|
|
6924
|
+
### Parameters
|
|
6925
|
+
|
|
6926
|
+
|
|
6927
|
+
| Name | Type | Description | Notes |
|
|
6928
|
+
|------------- | ------------- | ------------- | -------------|
|
|
6929
|
+
| **updateAiProxyRequest** | [UpdateAiProxyRequest](UpdateAiProxyRequest.md) | | |
|
|
6930
|
+
| **org** | `string` | Billing wallet for this request: an organization you belong to, by id (`team_…`) or by name as `GET /orgs` lists it (case-insensitive), or `personal`. Omitted, the account\'s active wallet applies (`PATCH /orgs/active`; personal until set). Two organizations sharing the name answer `409 ambiguous_org` and need the id. Sandboxes and snapshots stay creator-private. On `/environments` routes, only this query parameter selects the organization\'s shared environments; the `X-Boat-Org` header and the active wallet do not apply there. Members read them, owners and admins change them. | [Optional] [Defaults to `undefined`] |
|
|
6931
|
+
| **xBoatOrg** | `string` | Same as the `org` query parameter. Query wins when both are set. | [Optional] [Defaults to `undefined`] |
|
|
6932
|
+
|
|
6933
|
+
### Return type
|
|
6934
|
+
|
|
6935
|
+
[**AiProxySettings**](AiProxySettings.md)
|
|
6936
|
+
|
|
6937
|
+
### Authorization
|
|
6938
|
+
|
|
6939
|
+
[BoatBearerAuth](../README.md#BoatBearerAuth)
|
|
6940
|
+
|
|
6941
|
+
### HTTP request headers
|
|
6942
|
+
|
|
6943
|
+
- **Content-Type**: `application/json`
|
|
6944
|
+
- **Accept**: `application/json`
|
|
6945
|
+
|
|
6946
|
+
|
|
6947
|
+
### HTTP response details
|
|
6948
|
+
| Status code | Description | Response headers |
|
|
6949
|
+
|-------------|-------------|------------------|
|
|
6950
|
+
| **200** | The new state. | - |
|
|
6951
|
+
| **400** | Invalid request body or parameters. | - |
|
|
6952
|
+
| **401** | Missing or invalid bearer token. | - |
|
|
6953
|
+
| **403** | Authenticated token is not allowed to perform this action. | - |
|
|
6954
|
+
|
|
6955
|
+
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
6956
|
+
|
|
6957
|
+
|
|
6958
|
+
## updateCredentialProfile
|
|
6959
|
+
|
|
6960
|
+
> CredentialProfileResponse updateCredentialProfile(profile, updateCredentialProfileRequest)
|
|
6961
|
+
|
|
6962
|
+
Update a credential profile
|
|
6963
|
+
|
|
6964
|
+
Renames the profile, or makes it its owner\'s default. Sandboxes that use the owner\'s default switch to the new default at their next start. Needs an API key with `account.admin`.
|
|
6965
|
+
|
|
6966
|
+
### Example
|
|
6967
|
+
|
|
6968
|
+
```ts
|
|
6969
|
+
import {
|
|
6970
|
+
Configuration,
|
|
6971
|
+
BoatApi,
|
|
6972
|
+
} from '@boatdev/sdk';
|
|
6973
|
+
import type { UpdateCredentialProfileOperationRequest } from '@boatdev/sdk';
|
|
6974
|
+
|
|
6975
|
+
async function example() {
|
|
6976
|
+
console.log("🚀 Testing @boatdev/sdk SDK...");
|
|
6977
|
+
const config = new Configuration({
|
|
6978
|
+
// Configure HTTP bearer authorization: BoatBearerAuth
|
|
6979
|
+
accessToken: "YOUR BEARER TOKEN",
|
|
6980
|
+
});
|
|
6981
|
+
const api = new BoatApi(config);
|
|
6982
|
+
|
|
6983
|
+
const body = {
|
|
6984
|
+
// string | Profile id or name.
|
|
6985
|
+
profile: profile_example,
|
|
6986
|
+
// UpdateCredentialProfileRequest
|
|
6987
|
+
updateCredentialProfileRequest: {"isDefault":true},
|
|
6988
|
+
} satisfies UpdateCredentialProfileOperationRequest;
|
|
6989
|
+
|
|
6990
|
+
try {
|
|
6991
|
+
const data = await api.updateCredentialProfile(body);
|
|
6992
|
+
console.log(data);
|
|
6993
|
+
} catch (error) {
|
|
6994
|
+
console.error(error);
|
|
6995
|
+
}
|
|
6996
|
+
}
|
|
6997
|
+
|
|
6998
|
+
// Run the test
|
|
6999
|
+
example().catch(console.error);
|
|
7000
|
+
```
|
|
7001
|
+
|
|
7002
|
+
### Parameters
|
|
7003
|
+
|
|
7004
|
+
|
|
7005
|
+
| Name | Type | Description | Notes |
|
|
7006
|
+
|------------- | ------------- | ------------- | -------------|
|
|
7007
|
+
| **profile** | `string` | Profile id or name. | [Defaults to `undefined`] |
|
|
7008
|
+
| **updateCredentialProfileRequest** | [UpdateCredentialProfileRequest](UpdateCredentialProfileRequest.md) | | |
|
|
7009
|
+
|
|
7010
|
+
### Return type
|
|
7011
|
+
|
|
7012
|
+
[**CredentialProfileResponse**](CredentialProfileResponse.md)
|
|
7013
|
+
|
|
7014
|
+
### Authorization
|
|
7015
|
+
|
|
7016
|
+
[BoatBearerAuth](../README.md#BoatBearerAuth)
|
|
7017
|
+
|
|
7018
|
+
### HTTP request headers
|
|
7019
|
+
|
|
7020
|
+
- **Content-Type**: `application/json`
|
|
7021
|
+
- **Accept**: `application/json`
|
|
7022
|
+
|
|
7023
|
+
|
|
7024
|
+
### HTTP response details
|
|
7025
|
+
| Status code | Description | Response headers |
|
|
7026
|
+
|-------------|-------------|------------------|
|
|
7027
|
+
| **200** | The updated profile. | - |
|
|
7028
|
+
| **400** | Invalid request body or parameters. | - |
|
|
7029
|
+
| **401** | Missing or invalid bearer token. | - |
|
|
7030
|
+
| **403** | Authenticated token is not allowed to perform this action. | - |
|
|
7031
|
+
| **404** | Resource not found. | - |
|
|
7032
|
+
| **409** | Request conflicts with current account or sandbox state. | - |
|
|
7033
|
+
|
|
7034
|
+
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
7035
|
+
|
|
7036
|
+
|
|
5834
7037
|
## updateDataRetention
|
|
5835
7038
|
|
|
5836
7039
|
> DataRetentionPolicyResponse updateDataRetention(dataRetentionUpdateRequest)
|
|
@@ -5908,7 +7111,7 @@ example().catch(console.error);
|
|
|
5908
7111
|
|
|
5909
7112
|
## updateEnvironment
|
|
5910
7113
|
|
|
5911
|
-
> SandboxEnvironmentResponse updateEnvironment(environmentId, updateSandboxEnvironmentRequest)
|
|
7114
|
+
> SandboxEnvironmentResponse updateEnvironment(environmentId, updateSandboxEnvironmentRequest, org)
|
|
5912
7115
|
|
|
5913
7116
|
Update a sandbox environment
|
|
5914
7117
|
|
|
@@ -5936,6 +7139,8 @@ async function example() {
|
|
|
5936
7139
|
environmentId: 38400000-8cf0-11bd-b23e-10b96e4ef00d,
|
|
5937
7140
|
// UpdateSandboxEnvironmentRequest
|
|
5938
7141
|
updateSandboxEnvironmentRequest: ...,
|
|
7142
|
+
// string | Billing wallet for this request: an organization you belong to, by id (`team_…`) or by name as `GET /orgs` lists it (case-insensitive), or `personal`. Omitted, the account\'s active wallet applies (`PATCH /orgs/active`; personal until set). Two organizations sharing the name answer `409 ambiguous_org` and need the id. Sandboxes and snapshots stay creator-private. On `/environments` routes, only this query parameter selects the organization\'s shared environments; the `X-Boat-Org` header and the active wallet do not apply there. Members read them, owners and admins change them. (optional)
|
|
7143
|
+
org: org_example,
|
|
5939
7144
|
} satisfies UpdateEnvironmentRequest;
|
|
5940
7145
|
|
|
5941
7146
|
try {
|
|
@@ -5957,6 +7162,7 @@ example().catch(console.error);
|
|
|
5957
7162
|
|------------- | ------------- | ------------- | -------------|
|
|
5958
7163
|
| **environmentId** | `string` | Environment id returned by `GET /environments`. | [Defaults to `undefined`] |
|
|
5959
7164
|
| **updateSandboxEnvironmentRequest** | [UpdateSandboxEnvironmentRequest](UpdateSandboxEnvironmentRequest.md) | | |
|
|
7165
|
+
| **org** | `string` | Billing wallet for this request: an organization you belong to, by id (`team_…`) or by name as `GET /orgs` lists it (case-insensitive), or `personal`. Omitted, the account\'s active wallet applies (`PATCH /orgs/active`; personal until set). Two organizations sharing the name answer `409 ambiguous_org` and need the id. Sandboxes and snapshots stay creator-private. On `/environments` routes, only this query parameter selects the organization\'s shared environments; the `X-Boat-Org` header and the active wallet do not apply there. Members read them, owners and admins change them. | [Optional] [Defaults to `undefined`] |
|
|
5960
7166
|
|
|
5961
7167
|
### Return type
|
|
5962
7168
|
|
|
@@ -6133,7 +7339,7 @@ example().catch(console.error);
|
|
|
6133
7339
|
|
|
6134
7340
|
## upgradeEnvironment
|
|
6135
7341
|
|
|
6136
|
-
> UpgradeSandboxEnvironmentResponse upgradeEnvironment(environmentId, upgradeSandboxEnvironmentRequest)
|
|
7342
|
+
> UpgradeSandboxEnvironmentResponse upgradeEnvironment(environmentId, org, upgradeSandboxEnvironmentRequest)
|
|
6137
7343
|
|
|
6138
7344
|
Upgrade sandboxes to an environment\'s latest version
|
|
6139
7345
|
|
|
@@ -6159,6 +7365,8 @@ async function example() {
|
|
|
6159
7365
|
const body = {
|
|
6160
7366
|
// string
|
|
6161
7367
|
environmentId: 38400000-8cf0-11bd-b23e-10b96e4ef00d,
|
|
7368
|
+
// string | Billing wallet for this request: an organization you belong to, by id (`team_…`) or by name as `GET /orgs` lists it (case-insensitive), or `personal`. Omitted, the account\'s active wallet applies (`PATCH /orgs/active`; personal until set). Two organizations sharing the name answer `409 ambiguous_org` and need the id. Sandboxes and snapshots stay creator-private. On `/environments` routes, only this query parameter selects the organization\'s shared environments; the `X-Boat-Org` header and the active wallet do not apply there. Members read them, owners and admins change them. (optional)
|
|
7369
|
+
org: org_example,
|
|
6162
7370
|
// UpgradeSandboxEnvironmentRequest (optional)
|
|
6163
7371
|
upgradeSandboxEnvironmentRequest: ...,
|
|
6164
7372
|
} satisfies UpgradeEnvironmentRequest;
|
|
@@ -6181,6 +7389,7 @@ example().catch(console.error);
|
|
|
6181
7389
|
| Name | Type | Description | Notes |
|
|
6182
7390
|
|------------- | ------------- | ------------- | -------------|
|
|
6183
7391
|
| **environmentId** | `string` | | [Defaults to `undefined`] |
|
|
7392
|
+
| **org** | `string` | Billing wallet for this request: an organization you belong to, by id (`team_…`) or by name as `GET /orgs` lists it (case-insensitive), or `personal`. Omitted, the account\'s active wallet applies (`PATCH /orgs/active`; personal until set). Two organizations sharing the name answer `409 ambiguous_org` and need the id. Sandboxes and snapshots stay creator-private. On `/environments` routes, only this query parameter selects the organization\'s shared environments; the `X-Boat-Org` header and the active wallet do not apply there. Members read them, owners and admins change them. | [Optional] [Defaults to `undefined`] |
|
|
6184
7393
|
| **upgradeSandboxEnvironmentRequest** | [UpgradeSandboxEnvironmentRequest](UpgradeSandboxEnvironmentRequest.md) | | [Optional] |
|
|
6185
7394
|
|
|
6186
7395
|
### Return type
|
|
@@ -6293,7 +7502,7 @@ example().catch(console.error);
|
|
|
6293
7502
|
|
|
6294
7503
|
Write a file in a sandbox
|
|
6295
7504
|
|
|
6296
|
-
Files up to 5 MiB after decoding.
|
|
7505
|
+
Files up to 5 MiB after decoding. For a larger file, use `POST /sandboxes/{sandboxId}/files/upload-url`.
|
|
6297
7506
|
|
|
6298
7507
|
### Example
|
|
6299
7508
|
|