@boatdev/sdk 1.9.9 → 1.10.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 (72) hide show
  1. package/.openapi-generator/FILES +8 -0
  2. package/dist/apis/BoatApi.d.ts +52 -6
  3. package/dist/apis/BoatApi.js +109 -7
  4. package/dist/esm/apis/BoatApi.d.ts +52 -6
  5. package/dist/esm/apis/BoatApi.js +108 -6
  6. package/dist/esm/models/CreateSandboxRequest.d.ts +7 -1
  7. package/dist/esm/models/CreateSandboxRequest.js +2 -0
  8. package/dist/esm/models/CreateSandboxResponse.d.ts +6 -0
  9. package/dist/esm/models/CreateSandboxResponse.js +2 -0
  10. package/dist/esm/models/CreateScopedApiKeyRequest.d.ts +1 -1
  11. package/dist/esm/models/LimitsFields.d.ts +1 -1
  12. package/dist/esm/models/LimitsResponse.d.ts +1 -1
  13. package/dist/esm/models/MeResponseAllOfUser.d.ts +1 -0
  14. package/dist/esm/models/MeResponseAllOfUser.js +1 -0
  15. package/dist/esm/models/ResumeRequest.d.ts +1 -1
  16. package/dist/esm/models/Sandbox.d.ts +28 -1
  17. package/dist/esm/models/Sandbox.js +14 -0
  18. package/dist/esm/models/SandboxCost.d.ts +44 -0
  19. package/dist/esm/models/SandboxCost.js +51 -0
  20. package/dist/esm/models/Unshare200Response.d.ts +39 -0
  21. package/dist/esm/models/Unshare200Response.js +44 -0
  22. package/dist/esm/models/UpdateOrganization200Response.d.ts +50 -0
  23. package/dist/esm/models/UpdateOrganization200Response.js +47 -0
  24. package/dist/esm/models/UpdateOrganizationRequest.d.ts +32 -0
  25. package/dist/esm/models/UpdateOrganizationRequest.js +43 -0
  26. package/dist/esm/models/index.d.ts +4 -0
  27. package/dist/esm/models/index.js +4 -0
  28. package/dist/models/CreateSandboxRequest.d.ts +7 -1
  29. package/dist/models/CreateSandboxRequest.js +2 -0
  30. package/dist/models/CreateSandboxResponse.d.ts +6 -0
  31. package/dist/models/CreateSandboxResponse.js +2 -0
  32. package/dist/models/CreateScopedApiKeyRequest.d.ts +1 -1
  33. package/dist/models/LimitsFields.d.ts +1 -1
  34. package/dist/models/LimitsResponse.d.ts +1 -1
  35. package/dist/models/MeResponseAllOfUser.d.ts +1 -0
  36. package/dist/models/MeResponseAllOfUser.js +1 -0
  37. package/dist/models/ResumeRequest.d.ts +1 -1
  38. package/dist/models/Sandbox.d.ts +28 -1
  39. package/dist/models/Sandbox.js +15 -1
  40. package/dist/models/SandboxCost.d.ts +44 -0
  41. package/dist/models/SandboxCost.js +58 -0
  42. package/dist/models/Unshare200Response.d.ts +39 -0
  43. package/dist/models/Unshare200Response.js +51 -0
  44. package/dist/models/UpdateOrganization200Response.d.ts +50 -0
  45. package/dist/models/UpdateOrganization200Response.js +54 -0
  46. package/dist/models/UpdateOrganizationRequest.d.ts +32 -0
  47. package/dist/models/UpdateOrganizationRequest.js +50 -0
  48. package/dist/models/index.d.ts +4 -0
  49. package/dist/models/index.js +4 -0
  50. package/docs/BoatApi.md +161 -4
  51. package/docs/CreateSandboxRequest.md +2 -0
  52. package/docs/CreateSandboxResponse.md +2 -0
  53. package/docs/Sandbox.md +6 -0
  54. package/docs/SandboxCost.md +37 -0
  55. package/docs/Unshare200Response.md +34 -0
  56. package/docs/UpdateOrganization200Response.md +38 -0
  57. package/docs/UpdateOrganizationRequest.md +32 -0
  58. package/package.json +1 -1
  59. package/src/apis/BoatApi.ts +163 -6
  60. package/src/models/CreateSandboxRequest.ts +9 -1
  61. package/src/models/CreateSandboxResponse.ts +8 -0
  62. package/src/models/CreateScopedApiKeyRequest.ts +1 -1
  63. package/src/models/LimitsFields.ts +1 -1
  64. package/src/models/LimitsResponse.ts +1 -1
  65. package/src/models/MeResponseAllOfUser.ts +1 -0
  66. package/src/models/ResumeRequest.ts +1 -1
  67. package/src/models/Sandbox.ts +41 -1
  68. package/src/models/SandboxCost.ts +84 -0
  69. package/src/models/Unshare200Response.ts +81 -0
  70. package/src/models/UpdateOrganization200Response.ts +89 -0
  71. package/src/models/UpdateOrganizationRequest.ts +66 -0
  72. package/src/models/index.ts +4 -0
@@ -0,0 +1,50 @@
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
+ /**
13
+ *
14
+ * @export
15
+ * @interface UpdateOrganization200Response
16
+ */
17
+ export interface UpdateOrganization200Response {
18
+ /**
19
+ *
20
+ * @type {boolean}
21
+ * @memberof UpdateOrganization200Response
22
+ */
23
+ ok?: boolean;
24
+ /**
25
+ *
26
+ * @type {string}
27
+ * @memberof UpdateOrganization200Response
28
+ */
29
+ type?: string;
30
+ /**
31
+ *
32
+ * @type {boolean}
33
+ * @memberof UpdateOrganization200Response
34
+ */
35
+ success?: boolean;
36
+ /**
37
+ *
38
+ * @type {boolean}
39
+ * @memberof UpdateOrganization200Response
40
+ */
41
+ newSandboxesPrivate?: boolean;
42
+ }
43
+ /**
44
+ * Check if a given object implements the UpdateOrganization200Response interface.
45
+ */
46
+ export declare function instanceOfUpdateOrganization200Response(value: object): value is UpdateOrganization200Response;
47
+ export declare function UpdateOrganization200ResponseFromJSON(json: any): UpdateOrganization200Response;
48
+ export declare function UpdateOrganization200ResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): UpdateOrganization200Response;
49
+ export declare function UpdateOrganization200ResponseToJSON(json: any): UpdateOrganization200Response;
50
+ export declare function UpdateOrganization200ResponseToJSONTyped(value?: UpdateOrganization200Response | null, ignoreDiscriminator?: boolean): any;
@@ -0,0 +1,47 @@
1
+ /* tslint:disable */
2
+ /* eslint-disable */
3
+ /**
4
+ * Boat Public API v1
5
+ * 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.
6
+ *
7
+ * The version of the OpenAPI document: 1.0.0
8
+ *
9
+ *
10
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
11
+ * https://openapi-generator.tech
12
+ * Do not edit the class manually.
13
+ */
14
+ /**
15
+ * Check if a given object implements the UpdateOrganization200Response interface.
16
+ */
17
+ export function instanceOfUpdateOrganization200Response(value) {
18
+ return true;
19
+ }
20
+ export function UpdateOrganization200ResponseFromJSON(json) {
21
+ return UpdateOrganization200ResponseFromJSONTyped(json, false);
22
+ }
23
+ export function UpdateOrganization200ResponseFromJSONTyped(json, ignoreDiscriminator) {
24
+ if (json == null) {
25
+ return json;
26
+ }
27
+ return {
28
+ 'ok': json['ok'] == null ? undefined : json['ok'],
29
+ 'type': json['type'] == null ? undefined : json['type'],
30
+ 'success': json['success'] == null ? undefined : json['success'],
31
+ 'newSandboxesPrivate': json['newSandboxesPrivate'] == null ? undefined : json['newSandboxesPrivate'],
32
+ };
33
+ }
34
+ export function UpdateOrganization200ResponseToJSON(json) {
35
+ return UpdateOrganization200ResponseToJSONTyped(json, false);
36
+ }
37
+ export function UpdateOrganization200ResponseToJSONTyped(value, ignoreDiscriminator = false) {
38
+ if (value == null) {
39
+ return value;
40
+ }
41
+ return {
42
+ 'ok': value['ok'],
43
+ 'type': value['type'],
44
+ 'success': value['success'],
45
+ 'newSandboxesPrivate': value['newSandboxesPrivate'],
46
+ };
47
+ }
@@ -0,0 +1,32 @@
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
+ /**
13
+ *
14
+ * @export
15
+ * @interface UpdateOrganizationRequest
16
+ */
17
+ export interface UpdateOrganizationRequest {
18
+ /**
19
+ * True = new sandboxes start private. False = they start shared.
20
+ * @type {boolean}
21
+ * @memberof UpdateOrganizationRequest
22
+ */
23
+ newSandboxesPrivate: boolean;
24
+ }
25
+ /**
26
+ * Check if a given object implements the UpdateOrganizationRequest interface.
27
+ */
28
+ export declare function instanceOfUpdateOrganizationRequest(value: object): value is UpdateOrganizationRequest;
29
+ export declare function UpdateOrganizationRequestFromJSON(json: any): UpdateOrganizationRequest;
30
+ export declare function UpdateOrganizationRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): UpdateOrganizationRequest;
31
+ export declare function UpdateOrganizationRequestToJSON(json: any): UpdateOrganizationRequest;
32
+ export declare function UpdateOrganizationRequestToJSONTyped(value?: UpdateOrganizationRequest | null, ignoreDiscriminator?: boolean): any;
@@ -0,0 +1,43 @@
1
+ /* tslint:disable */
2
+ /* eslint-disable */
3
+ /**
4
+ * Boat Public API v1
5
+ * 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.
6
+ *
7
+ * The version of the OpenAPI document: 1.0.0
8
+ *
9
+ *
10
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
11
+ * https://openapi-generator.tech
12
+ * Do not edit the class manually.
13
+ */
14
+ /**
15
+ * Check if a given object implements the UpdateOrganizationRequest interface.
16
+ */
17
+ export function instanceOfUpdateOrganizationRequest(value) {
18
+ if (!('newSandboxesPrivate' in value) || value['newSandboxesPrivate'] === undefined)
19
+ return false;
20
+ return true;
21
+ }
22
+ export function UpdateOrganizationRequestFromJSON(json) {
23
+ return UpdateOrganizationRequestFromJSONTyped(json, false);
24
+ }
25
+ export function UpdateOrganizationRequestFromJSONTyped(json, ignoreDiscriminator) {
26
+ if (json == null) {
27
+ return json;
28
+ }
29
+ return {
30
+ 'newSandboxesPrivate': json['newSandboxesPrivate'],
31
+ };
32
+ }
33
+ export function UpdateOrganizationRequestToJSON(json) {
34
+ return UpdateOrganizationRequestToJSONTyped(json, false);
35
+ }
36
+ export function UpdateOrganizationRequestToJSONTyped(value, ignoreDiscriminator = false) {
37
+ if (value == null) {
38
+ return value;
39
+ }
40
+ return {
41
+ 'newSandboxesPrivate': value['newSandboxesPrivate'],
42
+ };
43
+ }
@@ -117,6 +117,7 @@ export * from './SandboxActionResponse';
117
117
  export * from './SandboxAiAccessResponse';
118
118
  export * from './SandboxAiUsage';
119
119
  export * from './SandboxAiUsageResponse';
120
+ export * from './SandboxCost';
120
121
  export * from './SandboxEnvironment';
121
122
  export * from './SandboxEnvironmentListResponse';
122
123
  export * from './SandboxEnvironmentResponse';
@@ -164,8 +165,11 @@ export * from './TelemetrySetRequest';
164
165
  export * from './TelemetrySetResponse';
165
166
  export * from './TelemetryTestResult';
166
167
  export * from './UnknownEvent';
168
+ export * from './Unshare200Response';
167
169
  export * from './UpdateAiProxyRequest';
168
170
  export * from './UpdateCredentialProfileRequest';
171
+ export * from './UpdateOrganization200Response';
172
+ export * from './UpdateOrganizationRequest';
169
173
  export * from './UpdateSandboxEnvironmentRequest';
170
174
  export * from './UpdateSandboxEnvironmentRequestRepositoriesInner';
171
175
  export * from './UpdateSandboxRequest';
@@ -119,6 +119,7 @@ export * from './SandboxActionResponse';
119
119
  export * from './SandboxAiAccessResponse';
120
120
  export * from './SandboxAiUsage';
121
121
  export * from './SandboxAiUsageResponse';
122
+ export * from './SandboxCost';
122
123
  export * from './SandboxEnvironment';
123
124
  export * from './SandboxEnvironmentListResponse';
124
125
  export * from './SandboxEnvironmentResponse';
@@ -166,8 +167,11 @@ export * from './TelemetrySetRequest';
166
167
  export * from './TelemetrySetResponse';
167
168
  export * from './TelemetryTestResult';
168
169
  export * from './UnknownEvent';
170
+ export * from './Unshare200Response';
169
171
  export * from './UpdateAiProxyRequest';
170
172
  export * from './UpdateCredentialProfileRequest';
173
+ export * from './UpdateOrganization200Response';
174
+ export * from './UpdateOrganizationRequest';
171
175
  export * from './UpdateSandboxEnvironmentRequest';
172
176
  export * from './UpdateSandboxEnvironmentRequestRepositoriesInner';
173
177
  export * from './UpdateSandboxRequest';
@@ -16,7 +16,7 @@
16
16
  */
17
17
  export interface CreateSandboxRequest {
18
18
  /**
19
- * Machine size. `small` consumes machine time at half rate and `large` at twice the default rate (see the Billing guide). `xlarge` needs the $100/month plan or higher; lower plans get a 403 `machine_class_plan_required` on create, resume and fork. A fork inherits the source sandbox's type unless the fork request passes its own, and resume and fork can move a sandbox between sizes.
19
+ * Machine size. `small` consumes machine time at half rate and `large` at twice the default rate (see the Billing guide). `xlarge` needs the $100/month plan or higher, or an account access grant from an administrator. Otherwise, create, resume and fork return 403 `machine_class_plan_required`. A fork inherits the source sandbox's type unless the fork request passes its own, and resume and fork can move a sandbox between sizes.
20
20
  * @type {CreateSandboxRequestTypeEnum}
21
21
  * @memberof CreateSandboxRequest
22
22
  */
@@ -65,6 +65,12 @@ export interface CreateSandboxRequest {
65
65
  * @memberof CreateSandboxRequest
66
66
  */
67
67
  failFast?: boolean;
68
+ /**
69
+ * With `from`: create this many sandboxes from the named snapshot in one request. Boat creates them together, which is faster than separate creates when you need many sandboxes at once. Start limits and the active-sandbox limit count every sandbox of the batch; if the batch does not fit, nothing is created. The answer lists all of them in `sandboxes` (and the first one in `sandbox`). Refused with 400 `count_requires_from` without `from`, and with 400 `count_with_fail_fast` together with `failFast`.
70
+ * @type {number}
71
+ * @memberof CreateSandboxRequest
72
+ */
73
+ count?: number;
68
74
  /**
69
75
  * Shell script that runs on the sandbox after it is ready. Ready means "ready to accept the user", not "setup done": the script starts in the background once provisioning completes and never blocks the sandbox becoming usable. It runs as the sandbox user (`user`, not root; `sudo` needs no password) via `bash`, with the sandbox's environment applied, and its output goes to a log file on the sandbox. Observe the outcome as `setupStatus` (pending/running/done/failed) and `setupError` on the sandbox. Rejected with a 400 `invalid_setup_script` error when it is not a string or exceeds 64KB.
70
76
  * @type {string}
@@ -50,6 +50,7 @@ function CreateSandboxRequestFromJSONTyped(json, ignoreDiscriminator) {
50
50
  'snapshots': json['snapshots'] == null ? undefined : json['snapshots'],
51
51
  'monitoring': json['monitoring'] == null ? undefined : json['monitoring'],
52
52
  'failFast': json['failFast'] == null ? undefined : json['failFast'],
53
+ 'count': json['count'] == null ? undefined : json['count'],
53
54
  'setupScript': json['setupScript'] == null ? undefined : json['setupScript'],
54
55
  'org': json['org'] == null ? undefined : json['org'],
55
56
  'teamId': json['teamId'] == null ? undefined : json['teamId'],
@@ -72,6 +73,7 @@ function CreateSandboxRequestToJSONTyped(value, ignoreDiscriminator = false) {
72
73
  'snapshots': value['snapshots'],
73
74
  'monitoring': value['monitoring'],
74
75
  'failFast': value['failFast'],
76
+ 'count': value['count'],
75
77
  'setupScript': value['setupScript'],
76
78
  'org': value['org'],
77
79
  'teamId': value['teamId'],
@@ -46,6 +46,12 @@ export interface CreateSandboxResponse {
46
46
  * @memberof CreateSandboxResponse
47
47
  */
48
48
  sandbox: Sandbox;
49
+ /**
50
+ * Present when the request set `count` above 1. Every sandbox of the batch, in creation order.
51
+ * @type {Array<Sandbox>}
52
+ * @memberof CreateSandboxResponse
53
+ */
54
+ sandboxes?: Array<Sandbox>;
49
55
  /**
50
56
  * Present when a fair-use cap on a gifted account shortened the requested auto-stop time.
51
57
  * @type {string}
@@ -62,6 +62,7 @@ function CreateSandboxResponseFromJSONTyped(json, ignoreDiscriminator) {
62
62
  'status': json['status'],
63
63
  'ttlSeconds': json['ttlSeconds'],
64
64
  'sandbox': (0, Sandbox_1.SandboxFromJSON)(json['sandbox']),
65
+ 'sandboxes': json['sandboxes'] == null ? undefined : (json['sandboxes'].map(Sandbox_1.SandboxFromJSON)),
65
66
  'giftLimitNotice': json['giftLimitNotice'] == null ? undefined : json['giftLimitNotice'],
66
67
  };
67
68
  }
@@ -78,6 +79,7 @@ function CreateSandboxResponseToJSONTyped(value, ignoreDiscriminator = false) {
78
79
  'status': value['status'],
79
80
  'ttlSeconds': value['ttlSeconds'],
80
81
  'sandbox': (0, Sandbox_1.SandboxToJSON)(value['sandbox']),
82
+ 'sandboxes': value['sandboxes'] == null ? undefined : (value['sandboxes'].map(Sandbox_1.SandboxToJSON)),
81
83
  'giftLimitNotice': value['giftLimitNotice'],
82
84
  };
83
85
  }
@@ -22,7 +22,7 @@ export interface CreateScopedApiKeyRequest {
22
22
  */
23
23
  name?: string;
24
24
  /**
25
- * Duration such as 90d, 24h, or seconds. Max 365d.
25
+ * Duration such as 90d, 24h, or seconds, up to 365d; or `never` for a key that works until revoked. Default 90d.
26
26
  * @type {string}
27
27
  * @memberof CreateScopedApiKeyRequest
28
28
  */
@@ -261,7 +261,7 @@ export interface LimitsFields {
261
261
  */
262
262
  last24hUsageSeconds?: number;
263
263
  /**
264
- * Lifetime machine-time allowance for a trial that never paid. Null once the account has paid or has a plan.
264
+ * Lifetime Boat-time allowance for new sandboxes while the account has not paid, a plan trial included. Every charge on the wallet counts. Null once the account has paid.
265
265
  * @type {number}
266
266
  * @memberof LimitsFields
267
267
  */
@@ -272,7 +272,7 @@ export interface LimitsResponse {
272
272
  */
273
273
  last24hUsageSeconds?: number;
274
274
  /**
275
- * Lifetime machine-time allowance for a trial that never paid. Null once the account has paid or has a plan.
275
+ * Lifetime Boat-time allowance for new sandboxes while the account has not paid, a plan trial included. Every charge on the wallet counts. Null once the account has paid.
276
276
  * @type {number}
277
277
  * @memberof LimitsResponse
278
278
  */
@@ -137,6 +137,7 @@ export declare const MeResponseAllOfUserConnectionMethodEnum: {
137
137
  readonly Github: 'github';
138
138
  readonly Google: 'google';
139
139
  readonly Email: 'email';
140
+ readonly Agentid: 'agentid';
140
141
  readonly Service: 'service';
141
142
  };
142
143
  export type MeResponseAllOfUserConnectionMethodEnum = typeof MeResponseAllOfUserConnectionMethodEnum[keyof typeof MeResponseAllOfUserConnectionMethodEnum];
@@ -26,6 +26,7 @@ exports.MeResponseAllOfUserConnectionMethodEnum = {
26
26
  Github: 'github',
27
27
  Google: 'google',
28
28
  Email: 'email',
29
+ Agentid: 'agentid',
29
30
  Service: 'service'
30
31
  };
31
32
  /**
@@ -22,7 +22,7 @@ export interface ResumeRequest {
22
22
  */
23
23
  failFast?: boolean;
24
24
  /**
25
- * Resume onto a different machine size. Omit to keep the sandbox's current type. `xlarge` needs the $100/month plan or higher (403 `machine_class_plan_required`). A resume already restores onto a fresh machine, so changing size costs nothing extra. Shrinking is rejected with `type_too_small` when the sandbox's data would not fit the smaller disk.
25
+ * Resume onto a different machine size. Omit to keep the sandbox's current type. `xlarge` needs the $100/month plan or higher, or an account access grant from an administrator (403 `machine_class_plan_required` otherwise). A resume already restores onto a fresh machine, so changing size costs nothing extra. Shrinking is rejected with `type_too_small` when the sandbox's data would not fit the smaller disk.
26
26
  * @type {ResumeRequestTypeEnum}
27
27
  * @memberof ResumeRequest
28
28
  */
@@ -11,6 +11,7 @@
11
11
  */
12
12
  import type { SandboxTeam } from './SandboxTeam';
13
13
  import type { StopOperation } from './StopOperation';
14
+ import type { SandboxCost } from './SandboxCost';
14
15
  import type { SandboxHydration } from './SandboxHydration';
15
16
  /**
16
17
  *
@@ -42,6 +43,12 @@ export interface Sandbox {
42
43
  * @memberof Sandbox
43
44
  */
44
45
  error?: string | null;
46
+ /**
47
+ * When Boat deleted the snapshot data of this stopped sandbox, 14 days after it stopped. Resume and fork then fail with `409 snapshot_data_expired`. Null while the data is kept.
48
+ * @type {Date}
49
+ * @memberof Sandbox
50
+ */
51
+ dataExpiredAt?: Date | null;
45
52
  /**
46
53
  * `degraded` when the machine is alive but Boat cannot fully reach it (for example a firewall rule inside the sandbox blocks the tunnel). The sandbox keeps running.
47
54
  * @type {SandboxHealthEnum}
@@ -211,7 +218,7 @@ export interface Sandbox {
211
218
  */
212
219
  createdById?: string | null;
213
220
  /**
214
- * What you may do with this sandbox. `owner`: you created it. `use`: a teammate's organization sandbox that never received their personal logins (`noEnv`, shared and restarted, or created on an environment that passes nothing), so you can open, run commands in, prompt, resume and stop it. `view`: a teammate's organization sandbox that still holds their personal logins, so you can see it and stop it until they share it (`POST /sandboxes/{sandboxId}/share`).
221
+ * What you may do with this sandbox. `owner`: you created it. `use`: a teammate's organization sandbox that is `shared` (see `visibility`), so you can open, run commands in, prompt, resume and stop it. `view`: a teammate's organization sandbox that is `private`, so you can see it and stop it until they share it (`POST /sandboxes/{sandboxId}/share`).
215
222
  * @type {SandboxAccessEnum}
216
223
  * @memberof Sandbox
217
224
  */
@@ -222,6 +229,18 @@ export interface Sandbox {
222
229
  * @memberof Sandbox
223
230
  */
224
231
  holdsCreatorLogins?: boolean;
232
+ /**
233
+ * Organization sandboxes only; null for a personal sandbox. `shared`: every member can use it. It holds none of its creator's personal logins (`noEnv`, shared and restarted, or created on an environment that passes nothing) and its creator did not make it private. `private`: only its creator can use it. It holds their logins, or its creator made it private (`POST /sandboxes/{sandboxId}/unshare`, or the organization's `newSandboxesPrivate` default).
234
+ * @type {SandboxVisibilityEnum}
235
+ * @memberof Sandbox
236
+ */
237
+ visibility?: SandboxVisibilityEnum | null;
238
+ /**
239
+ *
240
+ * @type {SandboxCost}
241
+ * @memberof Sandbox
242
+ */
243
+ cost?: SandboxCost;
225
244
  /**
226
245
  * True once the sandbox is shared but not restarted yet. Its creator's logins are wiped at its next start, and the organization can use it from then on.
227
246
  * @type {boolean}
@@ -329,6 +348,14 @@ export declare const SandboxAccessEnum: {
329
348
  readonly View: 'view';
330
349
  };
331
350
  export type SandboxAccessEnum = typeof SandboxAccessEnum[keyof typeof SandboxAccessEnum];
351
+ /**
352
+ * @export
353
+ */
354
+ export declare const SandboxVisibilityEnum: {
355
+ readonly Shared: 'shared';
356
+ readonly Private: 'private';
357
+ };
358
+ export type SandboxVisibilityEnum = typeof SandboxVisibilityEnum[keyof typeof SandboxVisibilityEnum];
332
359
  /**
333
360
  * @export
334
361
  */
@@ -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.SandboxAccessEnum = exports.SandboxMachineProviderEnum = exports.SandboxTypeEnum = exports.SandboxHealthEnum = exports.SandboxStateEnum = void 0;
16
+ exports.SandboxSetupStatusEnum = exports.SandboxLastSnapshotStatusEnum = exports.SandboxVisibilityEnum = 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;
@@ -21,6 +21,7 @@ exports.SandboxToJSON = SandboxToJSON;
21
21
  exports.SandboxToJSONTyped = SandboxToJSONTyped;
22
22
  const SandboxTeam_1 = require("./SandboxTeam");
23
23
  const StopOperation_1 = require("./StopOperation");
24
+ const SandboxCost_1 = require("./SandboxCost");
24
25
  const SandboxHydration_1 = require("./SandboxHydration");
25
26
  /**
26
27
  * @export
@@ -69,6 +70,13 @@ exports.SandboxAccessEnum = {
69
70
  Use: 'use',
70
71
  View: 'view'
71
72
  };
73
+ /**
74
+ * @export
75
+ */
76
+ exports.SandboxVisibilityEnum = {
77
+ Shared: 'shared',
78
+ Private: 'private'
79
+ };
72
80
  /**
73
81
  * @export
74
82
  */
@@ -116,6 +124,7 @@ function SandboxFromJSONTyped(json, ignoreDiscriminator) {
116
124
  'name': json['name'],
117
125
  'state': json['state'],
118
126
  'error': json['error'] == null ? undefined : json['error'],
127
+ 'dataExpiredAt': json['dataExpiredAt'] == null ? undefined : (new Date(json['dataExpiredAt'])),
119
128
  'health': json['health'] == null ? undefined : json['health'],
120
129
  'healthReason': json['healthReason'] == null ? undefined : json['healthReason'],
121
130
  'degradedSince': json['degradedSince'] == null ? undefined : (new Date(json['degradedSince'])),
@@ -146,6 +155,8 @@ function SandboxFromJSONTyped(json, ignoreDiscriminator) {
146
155
  'createdById': json['createdById'] == null ? undefined : json['createdById'],
147
156
  'access': json['access'] == null ? undefined : json['access'],
148
157
  'holdsCreatorLogins': json['holdsCreatorLogins'] == null ? undefined : json['holdsCreatorLogins'],
158
+ 'visibility': json['visibility'] == null ? undefined : json['visibility'],
159
+ 'cost': json['cost'] == null ? undefined : (0, SandboxCost_1.SandboxCostFromJSON)(json['cost']),
149
160
  'wipePendingUntilRestart': json['wipePendingUntilRestart'] == null ? undefined : json['wipePendingUntilRestart'],
150
161
  'subdomain': json['subdomain'] == null ? undefined : json['subdomain'],
151
162
  'lastSnapshotAttemptAt': json['lastSnapshotAttemptAt'] == null ? undefined : (new Date(json['lastSnapshotAttemptAt'])),
@@ -169,6 +180,7 @@ function SandboxToJSONTyped(value, ignoreDiscriminator = false) {
169
180
  'name': value['name'],
170
181
  'state': value['state'],
171
182
  'error': value['error'],
183
+ 'dataExpiredAt': value['dataExpiredAt'] == null ? value['dataExpiredAt'] : value['dataExpiredAt'].toISOString(),
172
184
  'health': value['health'],
173
185
  'healthReason': value['healthReason'],
174
186
  'degradedSince': value['degradedSince'] == null ? value['degradedSince'] : value['degradedSince'].toISOString(),
@@ -199,6 +211,8 @@ function SandboxToJSONTyped(value, ignoreDiscriminator = false) {
199
211
  'createdById': value['createdById'],
200
212
  'access': value['access'],
201
213
  'holdsCreatorLogins': value['holdsCreatorLogins'],
214
+ 'visibility': value['visibility'],
215
+ 'cost': (0, SandboxCost_1.SandboxCostToJSON)(value['cost']),
202
216
  'wipePendingUntilRestart': value['wipePendingUntilRestart'],
203
217
  'subdomain': value['subdomain'],
204
218
  'lastSnapshotAttemptAt': value['lastSnapshotAttemptAt'] == null ? value['lastSnapshotAttemptAt'] : value['lastSnapshotAttemptAt'].toISOString(),
@@ -0,0 +1,44 @@
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
+ /**
13
+ * Only with `include=cost` on `GET /sandboxes`. Machine time this sandbox used this calendar month (UTC), at list price. Same meter as `GET /sandboxes/{sandboxId}/usage`.
14
+ * @export
15
+ * @interface SandboxCost
16
+ */
17
+ export interface SandboxCost {
18
+ /**
19
+ * The 1st of this month, 00:00 UTC.
20
+ * @type {Date}
21
+ * @memberof SandboxCost
22
+ */
23
+ since: Date;
24
+ /**
25
+ * Billable machine-seconds, size multiplier applied.
26
+ * @type {number}
27
+ * @memberof SandboxCost
28
+ */
29
+ seconds: number;
30
+ /**
31
+ * seconds / secondsPerDollar, at list price.
32
+ * @type {number}
33
+ * @memberof SandboxCost
34
+ */
35
+ dollars: number;
36
+ }
37
+ /**
38
+ * Check if a given object implements the SandboxCost interface.
39
+ */
40
+ export declare function instanceOfSandboxCost(value: object): value is SandboxCost;
41
+ export declare function SandboxCostFromJSON(json: any): SandboxCost;
42
+ export declare function SandboxCostFromJSONTyped(json: any, ignoreDiscriminator: boolean): SandboxCost;
43
+ export declare function SandboxCostToJSON(json: any): SandboxCost;
44
+ export declare function SandboxCostToJSONTyped(value?: SandboxCost | null, ignoreDiscriminator?: boolean): any;
@@ -0,0 +1,58 @@
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.instanceOfSandboxCost = instanceOfSandboxCost;
17
+ exports.SandboxCostFromJSON = SandboxCostFromJSON;
18
+ exports.SandboxCostFromJSONTyped = SandboxCostFromJSONTyped;
19
+ exports.SandboxCostToJSON = SandboxCostToJSON;
20
+ exports.SandboxCostToJSONTyped = SandboxCostToJSONTyped;
21
+ /**
22
+ * Check if a given object implements the SandboxCost interface.
23
+ */
24
+ function instanceOfSandboxCost(value) {
25
+ if (!('since' in value) || value['since'] === undefined)
26
+ return false;
27
+ if (!('seconds' in value) || value['seconds'] === undefined)
28
+ return false;
29
+ if (!('dollars' in value) || value['dollars'] === undefined)
30
+ return false;
31
+ return true;
32
+ }
33
+ function SandboxCostFromJSON(json) {
34
+ return SandboxCostFromJSONTyped(json, false);
35
+ }
36
+ function SandboxCostFromJSONTyped(json, ignoreDiscriminator) {
37
+ if (json == null) {
38
+ return json;
39
+ }
40
+ return {
41
+ 'since': (new Date(json['since'])),
42
+ 'seconds': json['seconds'],
43
+ 'dollars': json['dollars'],
44
+ };
45
+ }
46
+ function SandboxCostToJSON(json) {
47
+ return SandboxCostToJSONTyped(json, false);
48
+ }
49
+ function SandboxCostToJSONTyped(value, ignoreDiscriminator = false) {
50
+ if (value == null) {
51
+ return value;
52
+ }
53
+ return {
54
+ 'since': value['since'].toISOString(),
55
+ 'seconds': value['seconds'],
56
+ 'dollars': value['dollars'],
57
+ };
58
+ }
@@ -0,0 +1,39 @@
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 Unshare200Response
17
+ */
18
+ export interface Unshare200Response {
19
+ /**
20
+ *
21
+ * @type {Sandbox}
22
+ * @memberof Unshare200Response
23
+ */
24
+ sandbox?: Sandbox;
25
+ /**
26
+ *
27
+ * @type {string}
28
+ * @memberof Unshare200Response
29
+ */
30
+ message?: string;
31
+ }
32
+ /**
33
+ * Check if a given object implements the Unshare200Response interface.
34
+ */
35
+ export declare function instanceOfUnshare200Response(value: object): value is Unshare200Response;
36
+ export declare function Unshare200ResponseFromJSON(json: any): Unshare200Response;
37
+ export declare function Unshare200ResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): Unshare200Response;
38
+ export declare function Unshare200ResponseToJSON(json: any): Unshare200Response;
39
+ export declare function Unshare200ResponseToJSONTyped(value?: Unshare200Response | null, ignoreDiscriminator?: boolean): any;