@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.
Files changed (69) hide show
  1. package/.openapi-generator/FILES +2 -0
  2. package/dist/apis/BoatApi.d.ts +24 -2
  3. package/dist/apis/BoatApi.js +53 -2
  4. package/dist/esm/apis/BoatApi.d.ts +24 -2
  5. package/dist/esm/apis/BoatApi.js +53 -2
  6. package/dist/esm/models/CreateSandboxRequest.d.ts +1 -1
  7. package/dist/esm/models/ForkRequest.d.ts +6 -0
  8. package/dist/esm/models/ForkRequest.js +2 -0
  9. package/dist/esm/models/PromptRequest.d.ts +6 -0
  10. package/dist/esm/models/PromptRequest.js +2 -0
  11. package/dist/esm/models/PromptResponse.d.ts +6 -0
  12. package/dist/esm/models/PromptResponse.js +2 -0
  13. package/dist/esm/models/PromptRun.d.ts +6 -0
  14. package/dist/esm/models/PromptRun.js +2 -0
  15. package/dist/esm/models/ResumeRequest.d.ts +6 -0
  16. package/dist/esm/models/ResumeRequest.js +2 -0
  17. package/dist/esm/models/Sandbox.d.ts +65 -0
  18. package/dist/esm/models/Sandbox.js +31 -0
  19. package/dist/esm/models/Share200Response.d.ts +45 -0
  20. package/dist/esm/models/Share200Response.js +46 -0
  21. package/dist/esm/models/WebhookEventData.d.ts +10 -4
  22. package/dist/esm/models/WebhookEventData.js +4 -6
  23. package/dist/esm/models/WebhookEventType.d.ts +2 -0
  24. package/dist/esm/models/WebhookEventType.js +3 -1
  25. package/dist/esm/models/index.d.ts +1 -0
  26. package/dist/esm/models/index.js +1 -0
  27. package/dist/models/CreateSandboxRequest.d.ts +1 -1
  28. package/dist/models/ForkRequest.d.ts +6 -0
  29. package/dist/models/ForkRequest.js +2 -0
  30. package/dist/models/PromptRequest.d.ts +6 -0
  31. package/dist/models/PromptRequest.js +2 -0
  32. package/dist/models/PromptResponse.d.ts +6 -0
  33. package/dist/models/PromptResponse.js +2 -0
  34. package/dist/models/PromptRun.d.ts +6 -0
  35. package/dist/models/PromptRun.js +2 -0
  36. package/dist/models/ResumeRequest.d.ts +6 -0
  37. package/dist/models/ResumeRequest.js +2 -0
  38. package/dist/models/Sandbox.d.ts +65 -0
  39. package/dist/models/Sandbox.js +32 -1
  40. package/dist/models/Share200Response.d.ts +45 -0
  41. package/dist/models/Share200Response.js +53 -0
  42. package/dist/models/WebhookEventData.d.ts +10 -4
  43. package/dist/models/WebhookEventData.js +4 -6
  44. package/dist/models/WebhookEventType.d.ts +2 -0
  45. package/dist/models/WebhookEventType.js +3 -1
  46. package/dist/models/index.d.ts +1 -0
  47. package/dist/models/index.js +1 -0
  48. package/docs/BoatApi.md +89 -3
  49. package/docs/ForkRequest.md +2 -0
  50. package/docs/PromptRequest.md +2 -0
  51. package/docs/PromptResponse.md +2 -0
  52. package/docs/PromptRun.md +2 -0
  53. package/docs/ResumeRequest.md +2 -0
  54. package/docs/Sandbox.md +16 -0
  55. package/docs/Share200Response.md +36 -0
  56. package/docs/WebhookEventData.md +2 -0
  57. package/package.json +1 -1
  58. package/src/apis/BoatApi.ts +78 -2
  59. package/src/models/CreateSandboxRequest.ts +1 -1
  60. package/src/models/ForkRequest.ts +8 -0
  61. package/src/models/PromptRequest.ts +8 -0
  62. package/src/models/PromptResponse.ts +8 -0
  63. package/src/models/PromptRun.ts +8 -0
  64. package/src/models/ResumeRequest.ts +8 -0
  65. package/src/models/Sandbox.ts +83 -0
  66. package/src/models/Share200Response.ts +89 -0
  67. package/src/models/WebhookEventData.ts +14 -8
  68. package/src/models/WebhookEventType.ts +3 -1
  69. package/src/models/index.ts +1 -0
@@ -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: string;
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
- state: string;
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) {
@@ -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';
@@ -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 created, billed, or counted. `out_of_capacity`: creates are paused until the provisioning queue drains. | - |
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)
@@ -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,
@@ -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,
@@ -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
 
@@ -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)
@@ -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)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@boatdev/sdk",
3
- "version": "1.3.0",
3
+ "version": "1.5.0",
4
4
  "description": "OpenAPI client for @boatdev/sdk",
5
5
  "author": "OpenAPI-Generator",
6
6
  "license": "MIT",