@boatdev/sdk 1.3.0 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.openapi-generator/FILES +2 -0
- package/dist/apis/BoatApi.d.ts +24 -2
- package/dist/apis/BoatApi.js +53 -2
- package/dist/esm/apis/BoatApi.d.ts +24 -2
- package/dist/esm/apis/BoatApi.js +53 -2
- package/dist/esm/models/CreateSandboxRequest.d.ts +1 -1
- package/dist/esm/models/ForkRequest.d.ts +6 -0
- package/dist/esm/models/ForkRequest.js +2 -0
- package/dist/esm/models/PromptRequest.d.ts +6 -0
- package/dist/esm/models/PromptRequest.js +2 -0
- package/dist/esm/models/PromptResponse.d.ts +6 -0
- package/dist/esm/models/PromptResponse.js +2 -0
- package/dist/esm/models/PromptRun.d.ts +6 -0
- package/dist/esm/models/PromptRun.js +2 -0
- package/dist/esm/models/ResumeRequest.d.ts +6 -0
- package/dist/esm/models/ResumeRequest.js +2 -0
- package/dist/esm/models/Sandbox.d.ts +65 -0
- package/dist/esm/models/Sandbox.js +31 -0
- package/dist/esm/models/Share200Response.d.ts +45 -0
- package/dist/esm/models/Share200Response.js +46 -0
- package/dist/esm/models/WebhookEventData.d.ts +10 -4
- package/dist/esm/models/WebhookEventData.js +4 -6
- package/dist/esm/models/WebhookEventType.d.ts +2 -0
- package/dist/esm/models/WebhookEventType.js +3 -1
- package/dist/esm/models/index.d.ts +1 -0
- package/dist/esm/models/index.js +1 -0
- package/dist/models/CreateSandboxRequest.d.ts +1 -1
- package/dist/models/ForkRequest.d.ts +6 -0
- package/dist/models/ForkRequest.js +2 -0
- package/dist/models/PromptRequest.d.ts +6 -0
- package/dist/models/PromptRequest.js +2 -0
- package/dist/models/PromptResponse.d.ts +6 -0
- package/dist/models/PromptResponse.js +2 -0
- package/dist/models/PromptRun.d.ts +6 -0
- package/dist/models/PromptRun.js +2 -0
- package/dist/models/ResumeRequest.d.ts +6 -0
- package/dist/models/ResumeRequest.js +2 -0
- package/dist/models/Sandbox.d.ts +65 -0
- package/dist/models/Sandbox.js +32 -1
- package/dist/models/Share200Response.d.ts +45 -0
- package/dist/models/Share200Response.js +53 -0
- package/dist/models/WebhookEventData.d.ts +10 -4
- package/dist/models/WebhookEventData.js +4 -6
- package/dist/models/WebhookEventType.d.ts +2 -0
- package/dist/models/WebhookEventType.js +3 -1
- package/dist/models/index.d.ts +1 -0
- package/dist/models/index.js +1 -0
- package/docs/BoatApi.md +89 -3
- package/docs/ForkRequest.md +2 -0
- package/docs/PromptRequest.md +2 -0
- package/docs/PromptResponse.md +2 -0
- package/docs/PromptRun.md +2 -0
- package/docs/ResumeRequest.md +2 -0
- package/docs/Sandbox.md +16 -0
- package/docs/Share200Response.md +36 -0
- package/docs/WebhookEventData.md +2 -0
- package/package.json +1 -1
- package/src/apis/BoatApi.ts +78 -2
- package/src/models/CreateSandboxRequest.ts +1 -1
- package/src/models/ForkRequest.ts +8 -0
- package/src/models/PromptRequest.ts +8 -0
- package/src/models/PromptResponse.ts +8 -0
- package/src/models/PromptRun.ts +8 -0
- package/src/models/ResumeRequest.ts +8 -0
- package/src/models/Sandbox.ts +83 -0
- package/src/models/Share200Response.ts +89 -0
- package/src/models/WebhookEventData.ts +14 -8
- package/src/models/WebhookEventType.ts +3 -1
- package/src/models/index.ts +1 -0
package/dist/models/Sandbox.js
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* Do not edit the class manually.
|
|
14
14
|
*/
|
|
15
15
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
-
exports.SandboxSetupStatusEnum = exports.SandboxLastSnapshotStatusEnum = exports.SandboxMachineProviderEnum = exports.SandboxTypeEnum = exports.SandboxStateEnum = void 0;
|
|
16
|
+
exports.SandboxSetupStatusEnum = exports.SandboxLastSnapshotStatusEnum = exports.SandboxAccessEnum = exports.SandboxMachineProviderEnum = exports.SandboxTypeEnum = exports.SandboxHealthEnum = exports.SandboxStateEnum = void 0;
|
|
17
17
|
exports.instanceOfSandbox = instanceOfSandbox;
|
|
18
18
|
exports.SandboxFromJSON = SandboxFromJSON;
|
|
19
19
|
exports.SandboxFromJSONTyped = SandboxFromJSONTyped;
|
|
@@ -36,6 +36,13 @@ exports.SandboxStateEnum = {
|
|
|
36
36
|
Error: 'error',
|
|
37
37
|
Cancelled: 'cancelled'
|
|
38
38
|
};
|
|
39
|
+
/**
|
|
40
|
+
* @export
|
|
41
|
+
*/
|
|
42
|
+
exports.SandboxHealthEnum = {
|
|
43
|
+
Ok: 'ok',
|
|
44
|
+
Degraded: 'degraded'
|
|
45
|
+
};
|
|
39
46
|
/**
|
|
40
47
|
* @export
|
|
41
48
|
*/
|
|
@@ -51,6 +58,14 @@ exports.SandboxMachineProviderEnum = {
|
|
|
51
58
|
Hetzner: 'hetzner',
|
|
52
59
|
Baremetal: 'baremetal'
|
|
53
60
|
};
|
|
61
|
+
/**
|
|
62
|
+
* @export
|
|
63
|
+
*/
|
|
64
|
+
exports.SandboxAccessEnum = {
|
|
65
|
+
Owner: 'owner',
|
|
66
|
+
Use: 'use',
|
|
67
|
+
View: 'view'
|
|
68
|
+
};
|
|
54
69
|
/**
|
|
55
70
|
* @export
|
|
56
71
|
*/
|
|
@@ -98,6 +113,9 @@ function SandboxFromJSONTyped(json, ignoreDiscriminator) {
|
|
|
98
113
|
'name': json['name'],
|
|
99
114
|
'state': json['state'],
|
|
100
115
|
'error': json['error'] == null ? undefined : json['error'],
|
|
116
|
+
'health': json['health'] == null ? undefined : json['health'],
|
|
117
|
+
'healthReason': json['healthReason'] == null ? undefined : json['healthReason'],
|
|
118
|
+
'degradedSince': json['degradedSince'] == null ? undefined : (new Date(json['degradedSince'])),
|
|
101
119
|
'type': json['type'] == null ? undefined : json['type'],
|
|
102
120
|
'vcpu': json['vcpu'] == null ? undefined : json['vcpu'],
|
|
103
121
|
'memoryGB': json['memoryGB'] == null ? undefined : json['memoryGB'],
|
|
@@ -116,6 +134,11 @@ function SandboxFromJSONTyped(json, ignoreDiscriminator) {
|
|
|
116
134
|
'snapshotCompletedAt': json['snapshotCompletedAt'] == null ? undefined : (new Date(json['snapshotCompletedAt'])),
|
|
117
135
|
'snapshotVerifiedAt': json['snapshotVerifiedAt'] == null ? undefined : (new Date(json['snapshotVerifiedAt'])),
|
|
118
136
|
'team': json['team'] == null ? undefined : (0, SandboxTeam_1.SandboxTeamFromJSON)(json['team']),
|
|
137
|
+
'createdBy': json['createdBy'] == null ? undefined : json['createdBy'],
|
|
138
|
+
'createdById': json['createdById'] == null ? undefined : json['createdById'],
|
|
139
|
+
'access': json['access'] == null ? undefined : json['access'],
|
|
140
|
+
'holdsCreatorLogins': json['holdsCreatorLogins'] == null ? undefined : json['holdsCreatorLogins'],
|
|
141
|
+
'wipePendingUntilRestart': json['wipePendingUntilRestart'] == null ? undefined : json['wipePendingUntilRestart'],
|
|
119
142
|
'subdomain': json['subdomain'] == null ? undefined : json['subdomain'],
|
|
120
143
|
'lastSnapshotAttemptAt': json['lastSnapshotAttemptAt'] == null ? undefined : (new Date(json['lastSnapshotAttemptAt'])),
|
|
121
144
|
'lastSnapshotStatus': json['lastSnapshotStatus'] == null ? undefined : json['lastSnapshotStatus'],
|
|
@@ -137,6 +160,9 @@ function SandboxToJSONTyped(value, ignoreDiscriminator = false) {
|
|
|
137
160
|
'name': value['name'],
|
|
138
161
|
'state': value['state'],
|
|
139
162
|
'error': value['error'],
|
|
163
|
+
'health': value['health'],
|
|
164
|
+
'healthReason': value['healthReason'],
|
|
165
|
+
'degradedSince': value['degradedSince'] == null ? value['degradedSince'] : value['degradedSince'].toISOString(),
|
|
140
166
|
'type': value['type'],
|
|
141
167
|
'vcpu': value['vcpu'],
|
|
142
168
|
'memoryGB': value['memoryGB'],
|
|
@@ -155,6 +181,11 @@ function SandboxToJSONTyped(value, ignoreDiscriminator = false) {
|
|
|
155
181
|
'snapshotCompletedAt': value['snapshotCompletedAt'] == null ? value['snapshotCompletedAt'] : value['snapshotCompletedAt'].toISOString(),
|
|
156
182
|
'snapshotVerifiedAt': value['snapshotVerifiedAt'] == null ? value['snapshotVerifiedAt'] : value['snapshotVerifiedAt'].toISOString(),
|
|
157
183
|
'team': (0, SandboxTeam_1.SandboxTeamToJSON)(value['team']),
|
|
184
|
+
'createdBy': value['createdBy'],
|
|
185
|
+
'createdById': value['createdById'],
|
|
186
|
+
'access': value['access'],
|
|
187
|
+
'holdsCreatorLogins': value['holdsCreatorLogins'],
|
|
188
|
+
'wipePendingUntilRestart': value['wipePendingUntilRestart'],
|
|
158
189
|
'subdomain': value['subdomain'],
|
|
159
190
|
'lastSnapshotAttemptAt': value['lastSnapshotAttemptAt'] == null ? value['lastSnapshotAttemptAt'] : value['lastSnapshotAttemptAt'].toISOString(),
|
|
160
191
|
'lastSnapshotStatus': value['lastSnapshotStatus'],
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Boat Public API v1
|
|
3
|
+
* Public JSON API for creating, operating, prompting, observing, and exposing sandboxes from backend services, CI jobs, hosted workers, and Boat automation products. The v1 reference intentionally documents the developer integration surface only. Dashboard billing actions are not part of v1.
|
|
4
|
+
*
|
|
5
|
+
* The version of the OpenAPI document: 1.0.0
|
|
6
|
+
*
|
|
7
|
+
*
|
|
8
|
+
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
|
9
|
+
* https://openapi-generator.tech
|
|
10
|
+
* Do not edit the class manually.
|
|
11
|
+
*/
|
|
12
|
+
import type { Sandbox } from './Sandbox';
|
|
13
|
+
/**
|
|
14
|
+
*
|
|
15
|
+
* @export
|
|
16
|
+
* @interface Share200Response
|
|
17
|
+
*/
|
|
18
|
+
export interface Share200Response {
|
|
19
|
+
/**
|
|
20
|
+
*
|
|
21
|
+
* @type {Sandbox}
|
|
22
|
+
* @memberof Share200Response
|
|
23
|
+
*/
|
|
24
|
+
sandbox?: Sandbox;
|
|
25
|
+
/**
|
|
26
|
+
* True when the sandbox was running: what runs on it still holds your logins in memory, so it stays `view` for the organization until you stop and resume it.
|
|
27
|
+
* @type {boolean}
|
|
28
|
+
* @memberof Share200Response
|
|
29
|
+
*/
|
|
30
|
+
restartRequired?: boolean;
|
|
31
|
+
/**
|
|
32
|
+
*
|
|
33
|
+
* @type {string}
|
|
34
|
+
* @memberof Share200Response
|
|
35
|
+
*/
|
|
36
|
+
message?: string;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Check if a given object implements the Share200Response interface.
|
|
40
|
+
*/
|
|
41
|
+
export declare function instanceOfShare200Response(value: object): value is Share200Response;
|
|
42
|
+
export declare function Share200ResponseFromJSON(json: any): Share200Response;
|
|
43
|
+
export declare function Share200ResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): Share200Response;
|
|
44
|
+
export declare function Share200ResponseToJSON(json: any): Share200Response;
|
|
45
|
+
export declare function Share200ResponseToJSONTyped(value?: Share200Response | null, ignoreDiscriminator?: boolean): any;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/* tslint:disable */
|
|
3
|
+
/* eslint-disable */
|
|
4
|
+
/**
|
|
5
|
+
* Boat Public API v1
|
|
6
|
+
* Public JSON API for creating, operating, prompting, observing, and exposing sandboxes from backend services, CI jobs, hosted workers, and Boat automation products. The v1 reference intentionally documents the developer integration surface only. Dashboard billing actions are not part of v1.
|
|
7
|
+
*
|
|
8
|
+
* The version of the OpenAPI document: 1.0.0
|
|
9
|
+
*
|
|
10
|
+
*
|
|
11
|
+
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
|
12
|
+
* https://openapi-generator.tech
|
|
13
|
+
* Do not edit the class manually.
|
|
14
|
+
*/
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
exports.instanceOfShare200Response = instanceOfShare200Response;
|
|
17
|
+
exports.Share200ResponseFromJSON = Share200ResponseFromJSON;
|
|
18
|
+
exports.Share200ResponseFromJSONTyped = Share200ResponseFromJSONTyped;
|
|
19
|
+
exports.Share200ResponseToJSON = Share200ResponseToJSON;
|
|
20
|
+
exports.Share200ResponseToJSONTyped = Share200ResponseToJSONTyped;
|
|
21
|
+
const Sandbox_1 = require("./Sandbox");
|
|
22
|
+
/**
|
|
23
|
+
* Check if a given object implements the Share200Response interface.
|
|
24
|
+
*/
|
|
25
|
+
function instanceOfShare200Response(value) {
|
|
26
|
+
return true;
|
|
27
|
+
}
|
|
28
|
+
function Share200ResponseFromJSON(json) {
|
|
29
|
+
return Share200ResponseFromJSONTyped(json, false);
|
|
30
|
+
}
|
|
31
|
+
function Share200ResponseFromJSONTyped(json, ignoreDiscriminator) {
|
|
32
|
+
if (json == null) {
|
|
33
|
+
return json;
|
|
34
|
+
}
|
|
35
|
+
return {
|
|
36
|
+
'sandbox': json['sandbox'] == null ? undefined : (0, Sandbox_1.SandboxFromJSON)(json['sandbox']),
|
|
37
|
+
'restartRequired': json['restartRequired'] == null ? undefined : json['restartRequired'],
|
|
38
|
+
'message': json['message'] == null ? undefined : json['message'],
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
function Share200ResponseToJSON(json) {
|
|
42
|
+
return Share200ResponseToJSONTyped(json, false);
|
|
43
|
+
}
|
|
44
|
+
function Share200ResponseToJSONTyped(value, ignoreDiscriminator = false) {
|
|
45
|
+
if (value == null) {
|
|
46
|
+
return value;
|
|
47
|
+
}
|
|
48
|
+
return {
|
|
49
|
+
'sandbox': (0, Sandbox_1.SandboxToJSON)(value['sandbox']),
|
|
50
|
+
'restartRequired': value['restartRequired'],
|
|
51
|
+
'message': value['message'],
|
|
52
|
+
};
|
|
53
|
+
}
|
|
@@ -23,17 +23,23 @@ export interface WebhookEventData {
|
|
|
23
23
|
*/
|
|
24
24
|
sandbox: WebhookEventDataSandbox;
|
|
25
25
|
/**
|
|
26
|
-
*
|
|
26
|
+
* On sandbox.ready, sandbox.error and sandbox.archived only.
|
|
27
27
|
* @type {string}
|
|
28
28
|
* @memberof WebhookEventData
|
|
29
29
|
*/
|
|
30
|
-
previousState
|
|
30
|
+
previousState?: string;
|
|
31
31
|
/**
|
|
32
|
-
*
|
|
32
|
+
* Absent on sandbox.hydrated.
|
|
33
|
+
* @type {string}
|
|
34
|
+
* @memberof WebhookEventData
|
|
35
|
+
*/
|
|
36
|
+
state?: string;
|
|
37
|
+
/**
|
|
38
|
+
* On sandbox.degraded and sandbox.recovered. Why the sandbox is degraded (null on recovered).
|
|
33
39
|
* @type {string}
|
|
34
40
|
* @memberof WebhookEventData
|
|
35
41
|
*/
|
|
36
|
-
|
|
42
|
+
reason?: string | null;
|
|
37
43
|
}
|
|
38
44
|
/**
|
|
39
45
|
* Check if a given object implements the WebhookEventData interface.
|
|
@@ -25,10 +25,6 @@ const WebhookEventDataSandbox_1 = require("./WebhookEventDataSandbox");
|
|
|
25
25
|
function instanceOfWebhookEventData(value) {
|
|
26
26
|
if (!('sandbox' in value) || value['sandbox'] === undefined)
|
|
27
27
|
return false;
|
|
28
|
-
if (!('previousState' in value) || value['previousState'] === undefined)
|
|
29
|
-
return false;
|
|
30
|
-
if (!('state' in value) || value['state'] === undefined)
|
|
31
|
-
return false;
|
|
32
28
|
return true;
|
|
33
29
|
}
|
|
34
30
|
function WebhookEventDataFromJSON(json) {
|
|
@@ -40,8 +36,9 @@ function WebhookEventDataFromJSONTyped(json, ignoreDiscriminator) {
|
|
|
40
36
|
}
|
|
41
37
|
return {
|
|
42
38
|
'sandbox': (0, WebhookEventDataSandbox_1.WebhookEventDataSandboxFromJSON)(json['sandbox']),
|
|
43
|
-
'previousState': json['previousState'],
|
|
44
|
-
'state': json['state'],
|
|
39
|
+
'previousState': json['previousState'] == null ? undefined : json['previousState'],
|
|
40
|
+
'state': json['state'] == null ? undefined : json['state'],
|
|
41
|
+
'reason': json['reason'] == null ? undefined : json['reason'],
|
|
45
42
|
};
|
|
46
43
|
}
|
|
47
44
|
function WebhookEventDataToJSON(json) {
|
|
@@ -55,5 +52,6 @@ function WebhookEventDataToJSONTyped(value, ignoreDiscriminator = false) {
|
|
|
55
52
|
'sandbox': (0, WebhookEventDataSandbox_1.WebhookEventDataSandboxToJSON)(value['sandbox']),
|
|
56
53
|
'previousState': value['previousState'],
|
|
57
54
|
'state': value['state'],
|
|
55
|
+
'reason': value['reason'],
|
|
58
56
|
};
|
|
59
57
|
}
|
|
@@ -18,6 +18,8 @@ export declare const WebhookEventType: {
|
|
|
18
18
|
readonly SandboxError: 'sandbox.error';
|
|
19
19
|
readonly SandboxArchived: 'sandbox.archived';
|
|
20
20
|
readonly SandboxHydrated: 'sandbox.hydrated';
|
|
21
|
+
readonly SandboxDegraded: 'sandbox.degraded';
|
|
22
|
+
readonly SandboxRecovered: 'sandbox.recovered';
|
|
21
23
|
};
|
|
22
24
|
export type WebhookEventType = typeof WebhookEventType[keyof typeof WebhookEventType];
|
|
23
25
|
export declare function instanceOfWebhookEventType(value: any): boolean;
|
|
@@ -27,7 +27,9 @@ exports.WebhookEventType = {
|
|
|
27
27
|
SandboxReady: 'sandbox.ready',
|
|
28
28
|
SandboxError: 'sandbox.error',
|
|
29
29
|
SandboxArchived: 'sandbox.archived',
|
|
30
|
-
SandboxHydrated: 'sandbox.hydrated'
|
|
30
|
+
SandboxHydrated: 'sandbox.hydrated',
|
|
31
|
+
SandboxDegraded: 'sandbox.degraded',
|
|
32
|
+
SandboxRecovered: 'sandbox.recovered'
|
|
31
33
|
};
|
|
32
34
|
function instanceOfWebhookEventType(value) {
|
|
33
35
|
for (const key in exports.WebhookEventType) {
|
package/dist/models/index.d.ts
CHANGED
|
@@ -99,6 +99,7 @@ export * from './SecretsUpdateRequest';
|
|
|
99
99
|
export * from './SelectedRepository';
|
|
100
100
|
export * from './SetEnvironmentSecretFileRequest';
|
|
101
101
|
export * from './SetEnvironmentVarRequest';
|
|
102
|
+
export * from './Share200Response';
|
|
102
103
|
export * from './SnapshotChunk';
|
|
103
104
|
export * from './SnapshotDownloadResponse';
|
|
104
105
|
export * from './SnapshotDownloadResponseAllOfInventory';
|
package/dist/models/index.js
CHANGED
|
@@ -117,6 +117,7 @@ __exportStar(require("./SecretsUpdateRequest"), exports);
|
|
|
117
117
|
__exportStar(require("./SelectedRepository"), exports);
|
|
118
118
|
__exportStar(require("./SetEnvironmentSecretFileRequest"), exports);
|
|
119
119
|
__exportStar(require("./SetEnvironmentVarRequest"), exports);
|
|
120
|
+
__exportStar(require("./Share200Response"), exports);
|
|
120
121
|
__exportStar(require("./SnapshotChunk"), exports);
|
|
121
122
|
__exportStar(require("./SnapshotDownloadResponse"), exports);
|
|
122
123
|
__exportStar(require("./SnapshotDownloadResponseAllOfInventory"), exports);
|
package/docs/BoatApi.md
CHANGED
|
@@ -61,6 +61,7 @@ All URIs are relative to *https://boat.dev/api/v1*
|
|
|
61
61
|
| [**setActiveOrganization**](BoatApi.md#setactiveorganization) | **PATCH** /orgs/active | Set the active organization |
|
|
62
62
|
| [**setEnvironmentSecretFile**](BoatApi.md#setenvironmentsecretfileoperation) | **PUT** /environments/{environmentId}/secret-files | Write one secret file |
|
|
63
63
|
| [**setEnvironmentVar**](BoatApi.md#setenvironmentvaroperation) | **PUT** /environments/{environmentId}/vars/{key} | Set one environment variable |
|
|
64
|
+
| [**share**](BoatApi.md#share) | **POST** /sandboxes/{sandboxId}/share | Share sandbox with the organization |
|
|
64
65
|
| [**sshKey**](BoatApi.md#sshkeyoperation) | **POST** /sandboxes/{sandboxId}/sshkey | Configure sandbox SSH key |
|
|
65
66
|
| [**steer**](BoatApi.md#steeroperation) | **POST** /sandboxes/{sandboxId}/steer | Steer a running turn |
|
|
66
67
|
| [**stop**](BoatApi.md#stopoperation) | **POST** /sandboxes/{sandboxId}/stop | Stop and archive sandbox |
|
|
@@ -368,7 +369,7 @@ example().catch(console.error);
|
|
|
368
369
|
|
|
369
370
|
Execute a command in a sandbox
|
|
370
371
|
|
|
371
|
-
Runs the command synchronously by default (timeout configurable via `timeoutSeconds`, 600s cap). With `detached: true` the command starts in the background and a process id is returned immediately; poll `/sandboxes/{sandboxId}/commands/{processId}` for status and logs. With `stream: true` the output arrives as the command writes it, as newline-delimited JSON (`application/x-ndjson`): `{\"type\":\"started\"}`, then `{\"type\":\"stdout\"|\"stderr\",\"data\":\"...\"}` per chunk, and last `{\"type\":\"exit\",...}` (the synchronous result without stdout/stderr) or `{\"type\":\"error\",\"error\":\"...\",\"message\":\"...\"}`. Returns 400 invalid_timeout when `timeoutSeconds` is not an integer in 1-600. A command sent while the sandbox is still starting (right after a resume) waits up to 60s for it to be ready instead of failing; 409 boat_starting (retryable) is returned only if it is still not ready by then. Command execution is never retried automatically: a 502 boat_direct_failed means the command may already be running on the sandbox.
|
|
372
|
+
Runs the command synchronously by default (timeout configurable via `timeoutSeconds`, 600s cap). With `detached: true` the command starts in the background and a process id is returned immediately; poll `/sandboxes/{sandboxId}/commands/{processId}` for status and logs. With `stream: true` the output arrives as the command writes it, as newline-delimited JSON (`application/x-ndjson`): `{\"type\":\"started\"}`, then `{\"type\":\"stdout\"|\"stderr\",\"data\":\"...\"}` per chunk, and last `{\"type\":\"exit\",...}` (the synchronous result without stdout/stderr) or `{\"type\":\"error\",\"error\":\"...\",\"message\":\"...\"}`. Returns 400 invalid_timeout when `timeoutSeconds` is not an integer in 1-600. A command sent while the sandbox is still starting (right after a resume) waits up to 60s for it to be ready instead of failing; 409 boat_starting (retryable) is returned only if it is still not ready by then. A sandbox that is not starting (`error`, `stopped`) returns 409 sandbox_not_ready with `retryable: false` and its `state` at once: resume or recover it first. Command execution is never retried automatically: a 502 boat_direct_failed means the command may already be running on the sandbox.
|
|
372
373
|
|
|
373
374
|
### Example
|
|
374
375
|
|
|
@@ -672,7 +673,7 @@ example().catch(console.error);
|
|
|
672
673
|
| **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. | - |
|
|
673
674
|
| **409** | Request conflicts with current account or sandbox state. | - |
|
|
674
675
|
| **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. | - |
|
|
675
|
-
| **503** | No capacity. `no_ready_machine`: a `failFast` create found no ready machine of that type; nothing was
|
|
676
|
+
| **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. | - |
|
|
676
677
|
|
|
677
678
|
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
678
679
|
|
|
@@ -1898,6 +1899,7 @@ example().catch(console.error);
|
|
|
1898
1899
|
| **404** | Resource not found. | - |
|
|
1899
1900
|
| **409** | Request conflicts with current account or sandbox state. | - |
|
|
1900
1901
|
| **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. | - |
|
|
1902
|
+
| **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. | - |
|
|
1901
1903
|
|
|
1902
1904
|
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
1903
1905
|
|
|
@@ -3597,6 +3599,7 @@ example().catch(console.error);
|
|
|
3597
3599
|
| **404** | Resource not found. | - |
|
|
3598
3600
|
| **409** | Request conflicts with current account or sandbox state. | - |
|
|
3599
3601
|
| **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. | - |
|
|
3602
|
+
| **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. | - |
|
|
3600
3603
|
|
|
3601
3604
|
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
3602
3605
|
|
|
@@ -3825,10 +3828,12 @@ example().catch(console.error);
|
|
|
3825
3828
|
|
|
3826
3829
|
## sandboxes
|
|
3827
3830
|
|
|
3828
|
-
> SandboxListResponse sandboxes(limit, cursor, sort, state)
|
|
3831
|
+
> SandboxListResponse sandboxes(org, xBoatOrg, limit, cursor, sort, state)
|
|
3829
3832
|
|
|
3830
3833
|
List sandboxes
|
|
3831
3834
|
|
|
3835
|
+
Your sandboxes. In an organization\'s scope (the active wallet, `org`, or `X-Boat-Org`) the list also holds every sandbox that organization pays for, whoever created it; `createdBy` and `access` say whose it is and what you may do with it.
|
|
3836
|
+
|
|
3832
3837
|
### Example
|
|
3833
3838
|
|
|
3834
3839
|
```ts
|
|
@@ -3847,6 +3852,10 @@ async function example() {
|
|
|
3847
3852
|
const api = new BoatApi(config);
|
|
3848
3853
|
|
|
3849
3854
|
const body = {
|
|
3855
|
+
// 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)
|
|
3856
|
+
org: org_example,
|
|
3857
|
+
// string | Same as the `org` query parameter. Query wins when both are set. (optional)
|
|
3858
|
+
xBoatOrg: xBoatOrg_example,
|
|
3850
3859
|
// number | Maximum items to return. (optional)
|
|
3851
3860
|
limit: 56,
|
|
3852
3861
|
// string | Opaque pagination cursor returned as `pageInfo.nextCursor`. (optional)
|
|
@@ -3874,6 +3883,8 @@ example().catch(console.error);
|
|
|
3874
3883
|
|
|
3875
3884
|
| Name | Type | Description | Notes |
|
|
3876
3885
|
|------------- | ------------- | ------------- | -------------|
|
|
3886
|
+
| **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`] |
|
|
3887
|
+
| **xBoatOrg** | `string` | Same as the `org` query parameter. Query wins when both are set. | [Optional] [Defaults to `undefined`] |
|
|
3877
3888
|
| **limit** | `number` | Maximum items to return. | [Optional] [Defaults to `100`] |
|
|
3878
3889
|
| **cursor** | `string` | Opaque pagination cursor returned as `pageInfo.nextCursor`. | [Optional] [Defaults to `undefined`] |
|
|
3879
3890
|
| **sort** | `asc`, `desc` | Sort direction for cursor pagination. | [Optional] [Defaults to `'desc'`] [Enum: asc, desc] |
|
|
@@ -4347,6 +4358,81 @@ example().catch(console.error);
|
|
|
4347
4358
|
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
4348
4359
|
|
|
4349
4360
|
|
|
4361
|
+
## share
|
|
4362
|
+
|
|
4363
|
+
> Share200Response share(sandboxId)
|
|
4364
|
+
|
|
4365
|
+
Share sandbox with the organization
|
|
4366
|
+
|
|
4367
|
+
Let every member of the organization that pays for this sandbox use it. Your personal logins (GitHub token, Claude and Codex logins, environment secrets, the sandbox\'s own CLI key) are never pushed to it again and are wiped off its disk at its next start, so a teammate never acts as you. Files you wrote stay. One-way: the sandbox stays like a `noEnv` sandbox from then on. A running sandbox stays `view` for the organization until you stop and resume it (`restartRequired`). Only the person who created the sandbox can share it, and only a sandbox billed to an organization. Sharing an already shared sandbox is a no-op.
|
|
4368
|
+
|
|
4369
|
+
### Example
|
|
4370
|
+
|
|
4371
|
+
```ts
|
|
4372
|
+
import {
|
|
4373
|
+
Configuration,
|
|
4374
|
+
BoatApi,
|
|
4375
|
+
} from '@boatdev/sdk';
|
|
4376
|
+
import type { ShareRequest } from '@boatdev/sdk';
|
|
4377
|
+
|
|
4378
|
+
async function example() {
|
|
4379
|
+
console.log("🚀 Testing @boatdev/sdk SDK...");
|
|
4380
|
+
const config = new Configuration({
|
|
4381
|
+
// Configure HTTP bearer authorization: BoatBearerAuth
|
|
4382
|
+
accessToken: "YOUR BEARER TOKEN",
|
|
4383
|
+
});
|
|
4384
|
+
const api = new BoatApi(config);
|
|
4385
|
+
|
|
4386
|
+
const body = {
|
|
4387
|
+
// string | Public Sandbox id returned by create/list/get sandbox calls.
|
|
4388
|
+
sandboxId: sandboxId_example,
|
|
4389
|
+
} satisfies ShareRequest;
|
|
4390
|
+
|
|
4391
|
+
try {
|
|
4392
|
+
const data = await api.share(body);
|
|
4393
|
+
console.log(data);
|
|
4394
|
+
} catch (error) {
|
|
4395
|
+
console.error(error);
|
|
4396
|
+
}
|
|
4397
|
+
}
|
|
4398
|
+
|
|
4399
|
+
// Run the test
|
|
4400
|
+
example().catch(console.error);
|
|
4401
|
+
```
|
|
4402
|
+
|
|
4403
|
+
### Parameters
|
|
4404
|
+
|
|
4405
|
+
|
|
4406
|
+
| Name | Type | Description | Notes |
|
|
4407
|
+
|------------- | ------------- | ------------- | -------------|
|
|
4408
|
+
| **sandboxId** | `string` | Public Sandbox id returned by create/list/get sandbox calls. | [Defaults to `undefined`] |
|
|
4409
|
+
|
|
4410
|
+
### Return type
|
|
4411
|
+
|
|
4412
|
+
[**Share200Response**](Share200Response.md)
|
|
4413
|
+
|
|
4414
|
+
### Authorization
|
|
4415
|
+
|
|
4416
|
+
[BoatBearerAuth](../README.md#BoatBearerAuth)
|
|
4417
|
+
|
|
4418
|
+
### HTTP request headers
|
|
4419
|
+
|
|
4420
|
+
- **Content-Type**: Not defined
|
|
4421
|
+
- **Accept**: `application/json`
|
|
4422
|
+
|
|
4423
|
+
|
|
4424
|
+
### HTTP response details
|
|
4425
|
+
| Status code | Description | Response headers |
|
|
4426
|
+
|-------------|-------------|------------------|
|
|
4427
|
+
| **200** | The sandbox is shared. | - |
|
|
4428
|
+
| **400** | Invalid request body or parameters. | - |
|
|
4429
|
+
| **401** | Missing or invalid bearer token. | - |
|
|
4430
|
+
| **403** | Authenticated token is not allowed to perform this action. | - |
|
|
4431
|
+
| **404** | Resource not found. | - |
|
|
4432
|
+
|
|
4433
|
+
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
|
4434
|
+
|
|
4435
|
+
|
|
4350
4436
|
## sshKey
|
|
4351
4437
|
|
|
4352
4438
|
> SshKeyResponse sshKey(sandboxId, sshKeyRequest)
|
package/docs/ForkRequest.md
CHANGED
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
Name | Type
|
|
8
8
|
------------ | -------------
|
|
9
|
+
`failFast` | boolean
|
|
9
10
|
`env` | { [key: string]: string; }
|
|
10
11
|
`environment` | string
|
|
11
12
|
`noEnv` | boolean
|
|
@@ -19,6 +20,7 @@ import type { ForkRequest } from '@boatdev/sdk'
|
|
|
19
20
|
|
|
20
21
|
// TODO: Update the object below with actual values
|
|
21
22
|
const example = {
|
|
23
|
+
"failFast": null,
|
|
22
24
|
"env": null,
|
|
23
25
|
"environment": null,
|
|
24
26
|
"noEnv": null,
|
package/docs/PromptRequest.md
CHANGED
|
@@ -10,6 +10,7 @@ Name | Type
|
|
|
10
10
|
`provider` | string
|
|
11
11
|
`model` | string
|
|
12
12
|
`reasoningEffort` | string
|
|
13
|
+
`fast` | boolean
|
|
13
14
|
`_new` | boolean
|
|
14
15
|
`conversationId` | string
|
|
15
16
|
`prompt` | string
|
|
@@ -24,6 +25,7 @@ const example = {
|
|
|
24
25
|
"provider": null,
|
|
25
26
|
"model": null,
|
|
26
27
|
"reasoningEffort": null,
|
|
28
|
+
"fast": null,
|
|
27
29
|
"_new": null,
|
|
28
30
|
"conversationId": null,
|
|
29
31
|
"prompt": null,
|
package/docs/PromptResponse.md
CHANGED
|
@@ -16,6 +16,7 @@ Name | Type
|
|
|
16
16
|
`provider` | string
|
|
17
17
|
`model` | string
|
|
18
18
|
`reasoningEffort` | string
|
|
19
|
+
`fast` | boolean
|
|
19
20
|
|
|
20
21
|
## Example
|
|
21
22
|
|
|
@@ -34,6 +35,7 @@ const example = {
|
|
|
34
35
|
"provider": null,
|
|
35
36
|
"model": null,
|
|
36
37
|
"reasoningEffort": null,
|
|
38
|
+
"fast": null,
|
|
37
39
|
} satisfies PromptResponse
|
|
38
40
|
|
|
39
41
|
console.log(example)
|
package/docs/PromptRun.md
CHANGED
|
@@ -14,6 +14,7 @@ Name | Type
|
|
|
14
14
|
`createdAt` | Date
|
|
15
15
|
`model` | string
|
|
16
16
|
`reasoningEffort` | string
|
|
17
|
+
`fast` | boolean
|
|
17
18
|
`conversationId` | string
|
|
18
19
|
|
|
19
20
|
## Example
|
|
@@ -31,6 +32,7 @@ const example = {
|
|
|
31
32
|
"createdAt": null,
|
|
32
33
|
"model": null,
|
|
33
34
|
"reasoningEffort": null,
|
|
35
|
+
"fast": null,
|
|
34
36
|
"conversationId": null,
|
|
35
37
|
} satisfies PromptRun
|
|
36
38
|
|
package/docs/ResumeRequest.md
CHANGED
|
@@ -7,6 +7,7 @@ Options for resuming a stopped sandbox.
|
|
|
7
7
|
|
|
8
8
|
Name | Type
|
|
9
9
|
------------ | -------------
|
|
10
|
+
`failFast` | boolean
|
|
10
11
|
`type` | string
|
|
11
12
|
`env` | { [key: string]: string; }
|
|
12
13
|
`environment` | string
|
|
@@ -20,6 +21,7 @@ import type { ResumeRequest } from '@boatdev/sdk'
|
|
|
20
21
|
|
|
21
22
|
// TODO: Update the object below with actual values
|
|
22
23
|
const example = {
|
|
24
|
+
"failFast": null,
|
|
23
25
|
"type": null,
|
|
24
26
|
"env": null,
|
|
25
27
|
"environment": null,
|
package/docs/Sandbox.md
CHANGED
|
@@ -10,6 +10,9 @@ Name | Type
|
|
|
10
10
|
`name` | string
|
|
11
11
|
`state` | string
|
|
12
12
|
`error` | string
|
|
13
|
+
`health` | string
|
|
14
|
+
`healthReason` | string
|
|
15
|
+
`degradedSince` | Date
|
|
13
16
|
`type` | string
|
|
14
17
|
`vcpu` | number
|
|
15
18
|
`memoryGB` | number
|
|
@@ -28,6 +31,11 @@ Name | Type
|
|
|
28
31
|
`snapshotCompletedAt` | Date
|
|
29
32
|
`snapshotVerifiedAt` | Date
|
|
30
33
|
`team` | [SandboxTeam](SandboxTeam.md)
|
|
34
|
+
`createdBy` | string
|
|
35
|
+
`createdById` | string
|
|
36
|
+
`access` | string
|
|
37
|
+
`holdsCreatorLogins` | boolean
|
|
38
|
+
`wipePendingUntilRestart` | boolean
|
|
31
39
|
`subdomain` | string
|
|
32
40
|
`lastSnapshotAttemptAt` | Date
|
|
33
41
|
`lastSnapshotStatus` | string
|
|
@@ -47,6 +55,9 @@ const example = {
|
|
|
47
55
|
"name": null,
|
|
48
56
|
"state": null,
|
|
49
57
|
"error": null,
|
|
58
|
+
"health": null,
|
|
59
|
+
"healthReason": null,
|
|
60
|
+
"degradedSince": null,
|
|
50
61
|
"type": null,
|
|
51
62
|
"vcpu": null,
|
|
52
63
|
"memoryGB": null,
|
|
@@ -65,6 +76,11 @@ const example = {
|
|
|
65
76
|
"snapshotCompletedAt": null,
|
|
66
77
|
"snapshotVerifiedAt": null,
|
|
67
78
|
"team": null,
|
|
79
|
+
"createdBy": null,
|
|
80
|
+
"createdById": null,
|
|
81
|
+
"access": null,
|
|
82
|
+
"holdsCreatorLogins": null,
|
|
83
|
+
"wipePendingUntilRestart": null,
|
|
68
84
|
"subdomain": null,
|
|
69
85
|
"lastSnapshotAttemptAt": null,
|
|
70
86
|
"lastSnapshotStatus": null,
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
|
|
2
|
+
# Share200Response
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
## Properties
|
|
6
|
+
|
|
7
|
+
Name | Type
|
|
8
|
+
------------ | -------------
|
|
9
|
+
`sandbox` | [Sandbox](Sandbox.md)
|
|
10
|
+
`restartRequired` | boolean
|
|
11
|
+
`message` | string
|
|
12
|
+
|
|
13
|
+
## Example
|
|
14
|
+
|
|
15
|
+
```typescript
|
|
16
|
+
import type { Share200Response } from '@boatdev/sdk'
|
|
17
|
+
|
|
18
|
+
// TODO: Update the object below with actual values
|
|
19
|
+
const example = {
|
|
20
|
+
"sandbox": null,
|
|
21
|
+
"restartRequired": null,
|
|
22
|
+
"message": null,
|
|
23
|
+
} satisfies Share200Response
|
|
24
|
+
|
|
25
|
+
console.log(example)
|
|
26
|
+
|
|
27
|
+
// Convert the instance to a JSON string
|
|
28
|
+
const exampleJSON: string = JSON.stringify(example)
|
|
29
|
+
console.log(exampleJSON)
|
|
30
|
+
|
|
31
|
+
// Parse the JSON string back to an object
|
|
32
|
+
const exampleParsed = JSON.parse(exampleJSON) as Share200Response
|
|
33
|
+
console.log(exampleParsed)
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
|
package/docs/WebhookEventData.md
CHANGED
|
@@ -9,6 +9,7 @@ Name | Type
|
|
|
9
9
|
`sandbox` | [WebhookEventDataSandbox](WebhookEventDataSandbox.md)
|
|
10
10
|
`previousState` | string
|
|
11
11
|
`state` | string
|
|
12
|
+
`reason` | string
|
|
12
13
|
|
|
13
14
|
## Example
|
|
14
15
|
|
|
@@ -20,6 +21,7 @@ const example = {
|
|
|
20
21
|
"sandbox": null,
|
|
21
22
|
"previousState": null,
|
|
22
23
|
"state": null,
|
|
24
|
+
"reason": null,
|
|
23
25
|
} satisfies WebhookEventData
|
|
24
26
|
|
|
25
27
|
console.log(example)
|