@boatdev/sdk 1.9.9 → 1.11.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 (179) hide show
  1. package/.openapi-generator/FILES +30 -0
  2. package/dist/apis/BoatApi.d.ts +144 -18
  3. package/dist/apis/BoatApi.js +305 -22
  4. package/dist/esm/apis/BoatApi.d.ts +144 -18
  5. package/dist/esm/apis/BoatApi.js +304 -21
  6. package/dist/esm/models/CreateSandboxRequest.d.ts +9 -3
  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/CredentialId.d.ts +3 -0
  12. package/dist/esm/models/CredentialId.js +3 -0
  13. package/dist/esm/models/CredentialProfile.d.ts +7 -0
  14. package/dist/esm/models/CredentialProfile.js +3 -0
  15. package/dist/esm/models/DeletionOperation.d.ts +1 -1
  16. package/dist/esm/models/LimitsFields.d.ts +1 -1
  17. package/dist/esm/models/LimitsResponse.d.ts +1 -1
  18. package/dist/esm/models/MeResponseAllOfUser.d.ts +1 -0
  19. package/dist/esm/models/MeResponseAllOfUser.js +1 -0
  20. package/dist/esm/models/ResourceAccess.d.ts +38 -0
  21. package/dist/esm/models/ResourceAccess.js +47 -0
  22. package/dist/esm/models/ResourceAccessUpdate.d.ts +38 -0
  23. package/dist/esm/models/ResourceAccessUpdate.js +45 -0
  24. package/dist/esm/models/ResumeRequest.d.ts +1 -1
  25. package/dist/esm/models/Sandbox.d.ts +35 -1
  26. package/dist/esm/models/Sandbox.js +17 -0
  27. package/dist/esm/models/SandboxCost.d.ts +44 -0
  28. package/dist/esm/models/SandboxCost.js +51 -0
  29. package/dist/esm/models/SandboxEnvironment.d.ts +7 -0
  30. package/dist/esm/models/SandboxEnvironment.js +3 -0
  31. package/dist/esm/models/SandboxLastReboot.d.ts +47 -0
  32. package/dist/esm/models/SandboxLastReboot.js +51 -0
  33. package/dist/esm/models/SandboxListResponse.d.ts +7 -0
  34. package/dist/esm/models/SandboxListResponse.js +3 -0
  35. package/dist/esm/models/SandboxListResponseAllOfDeletedCost.d.ts +44 -0
  36. package/dist/esm/models/SandboxListResponseAllOfDeletedCost.js +51 -0
  37. package/dist/esm/models/SavedSnapshot.d.ts +83 -0
  38. package/dist/esm/models/SavedSnapshot.js +71 -0
  39. package/dist/esm/models/SavedSnapshotAllowance.d.ts +81 -0
  40. package/dist/esm/models/SavedSnapshotAllowance.js +57 -0
  41. package/dist/esm/models/SavedSnapshotDeletedResponse.d.ts +64 -0
  42. package/dist/esm/models/SavedSnapshotDeletedResponse.js +67 -0
  43. package/dist/esm/models/SavedSnapshotInfoResponse.d.ts +52 -0
  44. package/dist/esm/models/SavedSnapshotInfoResponse.js +58 -0
  45. package/dist/esm/models/SavedSnapshotListResponse.d.ts +59 -0
  46. package/dist/esm/models/SavedSnapshotListResponse.js +61 -0
  47. package/dist/esm/models/SavedSnapshotSaveRequest.d.ts +38 -0
  48. package/dist/esm/models/SavedSnapshotSaveRequest.js +47 -0
  49. package/dist/esm/models/SavedSnapshotSavingResponse.d.ts +65 -0
  50. package/dist/esm/models/SavedSnapshotSavingResponse.js +68 -0
  51. package/dist/esm/models/SnapshotSummary.d.ts +1 -1
  52. package/dist/esm/models/Unshare200Response.d.ts +39 -0
  53. package/dist/esm/models/Unshare200Response.js +44 -0
  54. package/dist/esm/models/UpdateCredentialProfileRequest.d.ts +7 -0
  55. package/dist/esm/models/UpdateCredentialProfileRequest.js +3 -0
  56. package/dist/esm/models/UpdateOrganization200Response.d.ts +50 -0
  57. package/dist/esm/models/UpdateOrganization200Response.js +47 -0
  58. package/dist/esm/models/UpdateOrganizationRequest.d.ts +32 -0
  59. package/dist/esm/models/UpdateOrganizationRequest.js +43 -0
  60. package/dist/esm/models/UpdateSandboxEnvironmentRequest.d.ts +7 -0
  61. package/dist/esm/models/UpdateSandboxEnvironmentRequest.js +3 -0
  62. package/dist/esm/models/index.d.ts +15 -0
  63. package/dist/esm/models/index.js +15 -0
  64. package/dist/models/CreateSandboxRequest.d.ts +9 -3
  65. package/dist/models/CreateSandboxRequest.js +2 -0
  66. package/dist/models/CreateSandboxResponse.d.ts +6 -0
  67. package/dist/models/CreateSandboxResponse.js +2 -0
  68. package/dist/models/CreateScopedApiKeyRequest.d.ts +1 -1
  69. package/dist/models/CredentialId.d.ts +3 -0
  70. package/dist/models/CredentialId.js +3 -0
  71. package/dist/models/CredentialProfile.d.ts +7 -0
  72. package/dist/models/CredentialProfile.js +3 -0
  73. package/dist/models/DeletionOperation.d.ts +1 -1
  74. package/dist/models/LimitsFields.d.ts +1 -1
  75. package/dist/models/LimitsResponse.d.ts +1 -1
  76. package/dist/models/MeResponseAllOfUser.d.ts +1 -0
  77. package/dist/models/MeResponseAllOfUser.js +1 -0
  78. package/dist/models/ResourceAccess.d.ts +38 -0
  79. package/dist/models/ResourceAccess.js +54 -0
  80. package/dist/models/ResourceAccessUpdate.d.ts +38 -0
  81. package/dist/models/ResourceAccessUpdate.js +52 -0
  82. package/dist/models/ResumeRequest.d.ts +1 -1
  83. package/dist/models/Sandbox.d.ts +35 -1
  84. package/dist/models/Sandbox.js +18 -1
  85. package/dist/models/SandboxCost.d.ts +44 -0
  86. package/dist/models/SandboxCost.js +58 -0
  87. package/dist/models/SandboxEnvironment.d.ts +7 -0
  88. package/dist/models/SandboxEnvironment.js +3 -0
  89. package/dist/models/SandboxLastReboot.d.ts +47 -0
  90. package/dist/models/SandboxLastReboot.js +59 -0
  91. package/dist/models/SandboxListResponse.d.ts +7 -0
  92. package/dist/models/SandboxListResponse.js +3 -0
  93. package/dist/models/SandboxListResponseAllOfDeletedCost.d.ts +44 -0
  94. package/dist/models/SandboxListResponseAllOfDeletedCost.js +58 -0
  95. package/dist/models/SavedSnapshot.d.ts +83 -0
  96. package/dist/models/SavedSnapshot.js +79 -0
  97. package/dist/models/SavedSnapshotAllowance.d.ts +81 -0
  98. package/dist/models/SavedSnapshotAllowance.js +64 -0
  99. package/dist/models/SavedSnapshotDeletedResponse.d.ts +64 -0
  100. package/dist/models/SavedSnapshotDeletedResponse.js +75 -0
  101. package/dist/models/SavedSnapshotInfoResponse.d.ts +52 -0
  102. package/dist/models/SavedSnapshotInfoResponse.js +66 -0
  103. package/dist/models/SavedSnapshotListResponse.d.ts +59 -0
  104. package/dist/models/SavedSnapshotListResponse.js +69 -0
  105. package/dist/models/SavedSnapshotSaveRequest.d.ts +38 -0
  106. package/dist/models/SavedSnapshotSaveRequest.js +54 -0
  107. package/dist/models/SavedSnapshotSavingResponse.d.ts +65 -0
  108. package/dist/models/SavedSnapshotSavingResponse.js +76 -0
  109. package/dist/models/SnapshotSummary.d.ts +1 -1
  110. package/dist/models/Unshare200Response.d.ts +39 -0
  111. package/dist/models/Unshare200Response.js +51 -0
  112. package/dist/models/UpdateCredentialProfileRequest.d.ts +7 -0
  113. package/dist/models/UpdateCredentialProfileRequest.js +3 -0
  114. package/dist/models/UpdateOrganization200Response.d.ts +50 -0
  115. package/dist/models/UpdateOrganization200Response.js +54 -0
  116. package/dist/models/UpdateOrganizationRequest.d.ts +32 -0
  117. package/dist/models/UpdateOrganizationRequest.js +50 -0
  118. package/dist/models/UpdateSandboxEnvironmentRequest.d.ts +7 -0
  119. package/dist/models/UpdateSandboxEnvironmentRequest.js +3 -0
  120. package/dist/models/index.d.ts +15 -0
  121. package/dist/models/index.js +15 -0
  122. package/docs/BoatApi.md +468 -19
  123. package/docs/CreateSandboxRequest.md +2 -0
  124. package/docs/CreateSandboxResponse.md +2 -0
  125. package/docs/CredentialProfile.md +2 -0
  126. package/docs/ResourceAccess.md +35 -0
  127. package/docs/ResourceAccessUpdate.md +35 -0
  128. package/docs/Sandbox.md +8 -0
  129. package/docs/SandboxCost.md +37 -0
  130. package/docs/SandboxEnvironment.md +2 -0
  131. package/docs/SandboxLastReboot.md +35 -0
  132. package/docs/SandboxListResponse.md +2 -0
  133. package/docs/SandboxListResponseAllOfDeletedCost.md +37 -0
  134. package/docs/SavedSnapshot.md +47 -0
  135. package/docs/SavedSnapshotAllowance.md +49 -0
  136. package/docs/SavedSnapshotDeletedResponse.md +38 -0
  137. package/docs/SavedSnapshotInfoResponse.md +36 -0
  138. package/docs/SavedSnapshotListResponse.md +38 -0
  139. package/docs/SavedSnapshotSaveRequest.md +34 -0
  140. package/docs/SavedSnapshotSavingResponse.md +38 -0
  141. package/docs/Unshare200Response.md +34 -0
  142. package/docs/UpdateCredentialProfileRequest.md +2 -0
  143. package/docs/UpdateOrganization200Response.md +38 -0
  144. package/docs/UpdateOrganizationRequest.md +32 -0
  145. package/docs/UpdateSandboxEnvironmentRequest.md +2 -0
  146. package/package.json +1 -1
  147. package/src/apis/BoatApi.ts +440 -21
  148. package/src/models/CreateSandboxRequest.ts +11 -3
  149. package/src/models/CreateSandboxResponse.ts +8 -0
  150. package/src/models/CreateScopedApiKeyRequest.ts +1 -1
  151. package/src/models/CredentialId.ts +3 -0
  152. package/src/models/CredentialProfile.ts +15 -0
  153. package/src/models/DeletionOperation.ts +1 -1
  154. package/src/models/LimitsFields.ts +1 -1
  155. package/src/models/LimitsResponse.ts +1 -1
  156. package/src/models/MeResponseAllOfUser.ts +1 -0
  157. package/src/models/ResourceAccess.ts +75 -0
  158. package/src/models/ResourceAccessUpdate.ts +74 -0
  159. package/src/models/ResumeRequest.ts +1 -1
  160. package/src/models/Sandbox.ts +56 -1
  161. package/src/models/SandboxCost.ts +84 -0
  162. package/src/models/SandboxEnvironment.ts +15 -0
  163. package/src/models/SandboxLastReboot.ts +85 -0
  164. package/src/models/SandboxListResponse.ts +15 -0
  165. package/src/models/SandboxListResponseAllOfDeletedCost.ts +84 -0
  166. package/src/models/SavedSnapshot.ts +137 -0
  167. package/src/models/SavedSnapshotAllowance.ts +130 -0
  168. package/src/models/SavedSnapshotDeletedResponse.ts +111 -0
  169. package/src/models/SavedSnapshotInfoResponse.ts +102 -0
  170. package/src/models/SavedSnapshotListResponse.ts +117 -0
  171. package/src/models/SavedSnapshotSaveRequest.ts +75 -0
  172. package/src/models/SavedSnapshotSavingResponse.ts +119 -0
  173. package/src/models/SnapshotSummary.ts +1 -1
  174. package/src/models/Unshare200Response.ts +81 -0
  175. package/src/models/UpdateCredentialProfileRequest.ts +16 -0
  176. package/src/models/UpdateOrganization200Response.ts +89 -0
  177. package/src/models/UpdateOrganizationRequest.ts +66 -0
  178. package/src/models/UpdateSandboxEnvironmentRequest.ts +15 -0
  179. package/src/models/index.ts +15 -0
@@ -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}
@@ -54,6 +54,7 @@ export function CreateSandboxResponseFromJSONTyped(json, ignoreDiscriminator) {
54
54
  'status': json['status'],
55
55
  'ttlSeconds': json['ttlSeconds'],
56
56
  'sandbox': SandboxFromJSON(json['sandbox']),
57
+ 'sandboxes': json['sandboxes'] == null ? undefined : (json['sandboxes'].map(SandboxFromJSON)),
57
58
  'giftLimitNotice': json['giftLimitNotice'] == null ? undefined : json['giftLimitNotice'],
58
59
  };
59
60
  }
@@ -70,6 +71,7 @@ export function CreateSandboxResponseToJSONTyped(value, ignoreDiscriminator = fa
70
71
  'status': value['status'],
71
72
  'ttlSeconds': value['ttlSeconds'],
72
73
  'sandbox': SandboxToJSON(value['sandbox']),
74
+ 'sandboxes': value['sandboxes'] == null ? undefined : (value['sandboxes'].map(SandboxToJSON)),
73
75
  'giftLimitNotice': value['giftLimitNotice'],
74
76
  };
75
77
  }
@@ -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
  */
@@ -21,10 +21,13 @@ export declare const CredentialId: {
21
21
  readonly DeepseekApiKey: 'deepseek-api-key';
22
22
  readonly MoonshotApiKey: 'moonshot-api-key';
23
23
  readonly MistralApiKey: 'mistral-api-key';
24
+ readonly XaiApiKey: 'xai-api-key';
25
+ readonly OpencodeApiKey: 'opencode-api-key';
24
26
  readonly ClaudeSubscription: 'claude-subscription';
25
27
  readonly ChatgptSubscription: 'chatgpt-subscription';
26
28
  readonly KimiSubscription: 'kimi-subscription';
27
29
  readonly MistralVibeSubscription: 'mistral-vibe-subscription';
30
+ readonly GrokSubscription: 'grok-subscription';
28
31
  readonly ClaudeBedrock: 'claude-bedrock';
29
32
  readonly CodexBedrock: 'codex-bedrock';
30
33
  };
@@ -23,10 +23,13 @@ export const CredentialId = {
23
23
  DeepseekApiKey: 'deepseek-api-key',
24
24
  MoonshotApiKey: 'moonshot-api-key',
25
25
  MistralApiKey: 'mistral-api-key',
26
+ XaiApiKey: 'xai-api-key',
27
+ OpencodeApiKey: 'opencode-api-key',
26
28
  ClaudeSubscription: 'claude-subscription',
27
29
  ChatgptSubscription: 'chatgpt-subscription',
28
30
  KimiSubscription: 'kimi-subscription',
29
31
  MistralVibeSubscription: 'mistral-vibe-subscription',
32
+ GrokSubscription: 'grok-subscription',
30
33
  ClaudeBedrock: 'claude-bedrock',
31
34
  CodexBedrock: 'codex-bedrock'
32
35
  };
@@ -9,6 +9,7 @@
9
9
  * https://openapi-generator.tech
10
10
  * Do not edit the class manually.
11
11
  */
12
+ import type { ResourceAccess } from './ResourceAccess';
12
13
  import type { CredentialId } from './CredentialId';
13
14
  import type { CredentialProfileOwner } from './CredentialProfileOwner';
14
15
  import type { CredentialAccount } from './CredentialAccount';
@@ -80,6 +81,12 @@ export interface CredentialProfile {
80
81
  * @memberof CredentialProfile
81
82
  */
82
83
  updatedAt: Date;
84
+ /**
85
+ *
86
+ * @type {ResourceAccess}
87
+ * @memberof CredentialProfile
88
+ */
89
+ access?: ResourceAccess;
83
90
  }
84
91
  /**
85
92
  * Check if a given object implements the CredentialProfile interface.
@@ -11,6 +11,7 @@
11
11
  * https://openapi-generator.tech
12
12
  * Do not edit the class manually.
13
13
  */
14
+ import { ResourceAccessFromJSON, ResourceAccessToJSON, } from './ResourceAccess';
14
15
  import { CredentialIdFromJSON, CredentialIdToJSON, } from './CredentialId';
15
16
  import { CredentialProfileOwnerFromJSON, CredentialProfileOwnerToJSON, } from './CredentialProfileOwner';
16
17
  /**
@@ -55,6 +56,7 @@ export function CredentialProfileFromJSONTyped(json, ignoreDiscriminator) {
55
56
  'customApis': json['customApis'],
56
57
  'createdAt': (new Date(json['createdAt'])),
57
58
  'updatedAt': (new Date(json['updatedAt'])),
59
+ 'access': json['access'] == null ? undefined : ResourceAccessFromJSON(json['access']),
58
60
  };
59
61
  }
60
62
  export function CredentialProfileToJSON(json) {
@@ -75,5 +77,6 @@ export function CredentialProfileToJSONTyped(value, ignoreDiscriminator = false)
75
77
  'customApis': value['customApis'],
76
78
  'createdAt': value['createdAt'].toISOString(),
77
79
  'updatedAt': value['updatedAt'].toISOString(),
80
+ 'access': ResourceAccessToJSON(value['access']),
78
81
  };
79
82
  }
@@ -46,7 +46,7 @@ export interface DeletionOperation {
46
46
  */
47
47
  status: DeletionOperationStatusEnum;
48
48
  /**
49
- * What the background purge is doing. The target is already gone from every list, restore and fork once the operation exists. `waiting_for_uploads`: stored data is erased once the last upload URL issued for it expires (`expectedBy`). `retrying`: a transient fault, retried automatically. `completed`: a newer snapshot, a fork or a named snapshot made from it keeps the data it reads, until that is deleted too.
49
+ * What the background purge is doing. The target is already gone from every list, restore and fork once the operation exists. `waiting_for_uploads`: stored data is erased once the last upload URL issued for it expires (`expectedBy`). `retrying`: a transient fault, retried automatically. `completed`: a newer snapshot, a fork or a saved snapshot made from it keeps the data it reads, until that is deleted too.
50
50
  * @type {DeletionOperationStageEnum}
51
51
  * @memberof DeletionOperation
52
52
  */
@@ -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];
@@ -18,6 +18,7 @@ export const MeResponseAllOfUserConnectionMethodEnum = {
18
18
  Github: 'github',
19
19
  Google: 'google',
20
20
  Email: 'email',
21
+ Agentid: 'agentid',
21
22
  Service: 'service'
22
23
  };
23
24
  /**
@@ -0,0 +1,38 @@
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
+ * Which organization members can use this organization environment or profile. `restricted` false means every member. `restricted` true means owners, admins and `members` only. Others do not see it in lists. Personal environments and profiles always return `restricted` false.
14
+ * @export
15
+ * @interface ResourceAccess
16
+ */
17
+ export interface ResourceAccess {
18
+ /**
19
+ *
20
+ * @type {boolean}
21
+ * @memberof ResourceAccess
22
+ */
23
+ restricted: boolean;
24
+ /**
25
+ * Member ids. Empty when `restricted` is false.
26
+ * @type {Array<string>}
27
+ * @memberof ResourceAccess
28
+ */
29
+ members: Array<string>;
30
+ }
31
+ /**
32
+ * Check if a given object implements the ResourceAccess interface.
33
+ */
34
+ export declare function instanceOfResourceAccess(value: object): value is ResourceAccess;
35
+ export declare function ResourceAccessFromJSON(json: any): ResourceAccess;
36
+ export declare function ResourceAccessFromJSONTyped(json: any, ignoreDiscriminator: boolean): ResourceAccess;
37
+ export declare function ResourceAccessToJSON(json: any): ResourceAccess;
38
+ export declare function ResourceAccessToJSONTyped(value?: ResourceAccess | 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 ResourceAccess interface.
16
+ */
17
+ export function instanceOfResourceAccess(value) {
18
+ if (!('restricted' in value) || value['restricted'] === undefined)
19
+ return false;
20
+ if (!('members' in value) || value['members'] === undefined)
21
+ return false;
22
+ return true;
23
+ }
24
+ export function ResourceAccessFromJSON(json) {
25
+ return ResourceAccessFromJSONTyped(json, false);
26
+ }
27
+ export function ResourceAccessFromJSONTyped(json, ignoreDiscriminator) {
28
+ if (json == null) {
29
+ return json;
30
+ }
31
+ return {
32
+ 'restricted': json['restricted'],
33
+ 'members': json['members'],
34
+ };
35
+ }
36
+ export function ResourceAccessToJSON(json) {
37
+ return ResourceAccessToJSONTyped(json, false);
38
+ }
39
+ export function ResourceAccessToJSONTyped(value, ignoreDiscriminator = false) {
40
+ if (value == null) {
41
+ return value;
42
+ }
43
+ return {
44
+ 'restricted': value['restricted'],
45
+ 'members': value['members'],
46
+ };
47
+ }
@@ -0,0 +1,38 @@
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
+ * Set who can use an organization environment (owner or admin) or profile (owner). A change does not touch running sandboxes. A bad list returns `400 invalid_access`.
14
+ * @export
15
+ * @interface ResourceAccessUpdate
16
+ */
17
+ export interface ResourceAccessUpdate {
18
+ /**
19
+ * False opens it to every member. True limits it to owners, admins and `members`.
20
+ * @type {boolean}
21
+ * @memberof ResourceAccessUpdate
22
+ */
23
+ restricted: boolean;
24
+ /**
25
+ * Member ids or emails of active members. Replaces the full list.
26
+ * @type {Array<string>}
27
+ * @memberof ResourceAccessUpdate
28
+ */
29
+ members?: Array<string>;
30
+ }
31
+ /**
32
+ * Check if a given object implements the ResourceAccessUpdate interface.
33
+ */
34
+ export declare function instanceOfResourceAccessUpdate(value: object): value is ResourceAccessUpdate;
35
+ export declare function ResourceAccessUpdateFromJSON(json: any): ResourceAccessUpdate;
36
+ export declare function ResourceAccessUpdateFromJSONTyped(json: any, ignoreDiscriminator: boolean): ResourceAccessUpdate;
37
+ export declare function ResourceAccessUpdateToJSON(json: any): ResourceAccessUpdate;
38
+ export declare function ResourceAccessUpdateToJSONTyped(value?: ResourceAccessUpdate | null, ignoreDiscriminator?: boolean): any;
@@ -0,0 +1,45 @@
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 ResourceAccessUpdate interface.
16
+ */
17
+ export function instanceOfResourceAccessUpdate(value) {
18
+ if (!('restricted' in value) || value['restricted'] === undefined)
19
+ return false;
20
+ return true;
21
+ }
22
+ export function ResourceAccessUpdateFromJSON(json) {
23
+ return ResourceAccessUpdateFromJSONTyped(json, false);
24
+ }
25
+ export function ResourceAccessUpdateFromJSONTyped(json, ignoreDiscriminator) {
26
+ if (json == null) {
27
+ return json;
28
+ }
29
+ return {
30
+ 'restricted': json['restricted'],
31
+ 'members': json['members'] == null ? undefined : json['members'],
32
+ };
33
+ }
34
+ export function ResourceAccessUpdateToJSON(json) {
35
+ return ResourceAccessUpdateToJSONTyped(json, false);
36
+ }
37
+ export function ResourceAccessUpdateToJSONTyped(value, ignoreDiscriminator = false) {
38
+ if (value == null) {
39
+ return value;
40
+ }
41
+ return {
42
+ 'restricted': value['restricted'],
43
+ 'members': value['members'],
44
+ };
45
+ }
@@ -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,8 @@
11
11
  */
12
12
  import type { SandboxTeam } from './SandboxTeam';
13
13
  import type { StopOperation } from './StopOperation';
14
+ import type { SandboxLastReboot } from './SandboxLastReboot';
15
+ import type { SandboxCost } from './SandboxCost';
14
16
  import type { SandboxHydration } from './SandboxHydration';
15
17
  /**
16
18
  *
@@ -42,6 +44,12 @@ export interface Sandbox {
42
44
  * @memberof Sandbox
43
45
  */
44
46
  error?: string | null;
47
+ /**
48
+ * 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.
49
+ * @type {Date}
50
+ * @memberof Sandbox
51
+ */
52
+ dataExpiredAt?: Date | null;
45
53
  /**
46
54
  * `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
55
  * @type {SandboxHealthEnum}
@@ -211,7 +219,7 @@ export interface Sandbox {
211
219
  */
212
220
  createdById?: string | null;
213
221
  /**
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`).
222
+ * 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
223
  * @type {SandboxAccessEnum}
216
224
  * @memberof Sandbox
217
225
  */
@@ -222,6 +230,18 @@ export interface Sandbox {
222
230
  * @memberof Sandbox
223
231
  */
224
232
  holdsCreatorLogins?: boolean;
233
+ /**
234
+ * 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).
235
+ * @type {SandboxVisibilityEnum}
236
+ * @memberof Sandbox
237
+ */
238
+ visibility?: SandboxVisibilityEnum | null;
239
+ /**
240
+ *
241
+ * @type {SandboxCost}
242
+ * @memberof Sandbox
243
+ */
244
+ cost?: SandboxCost;
225
245
  /**
226
246
  * 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
247
  * @type {boolean}
@@ -246,6 +266,12 @@ export interface Sandbox {
246
266
  * @memberof Sandbox
247
267
  */
248
268
  lastSnapshotStatus?: SandboxLastSnapshotStatusEnum | null;
269
+ /**
270
+ *
271
+ * @type {SandboxLastReboot}
272
+ * @memberof Sandbox
273
+ */
274
+ lastReboot?: SandboxLastReboot;
249
275
  /**
250
276
  * Outcome of the create-time `setupScript`: `pending` (stored, not yet started), `running` (executing on the sandbox in the background), `done` (exit code 0) or `failed` (non-zero exit, or the sandbox lost track of the process). Null when the sandbox was created without a setup script.
251
277
  * @type {SandboxSetupStatusEnum}
@@ -329,6 +355,14 @@ export declare const SandboxAccessEnum: {
329
355
  readonly View: 'view';
330
356
  };
331
357
  export type SandboxAccessEnum = typeof SandboxAccessEnum[keyof typeof SandboxAccessEnum];
358
+ /**
359
+ * @export
360
+ */
361
+ export declare const SandboxVisibilityEnum: {
362
+ readonly Shared: 'shared';
363
+ readonly Private: 'private';
364
+ };
365
+ export type SandboxVisibilityEnum = typeof SandboxVisibilityEnum[keyof typeof SandboxVisibilityEnum];
332
366
  /**
333
367
  * @export
334
368
  */
@@ -13,6 +13,8 @@
13
13
  */
14
14
  import { SandboxTeamFromJSON, SandboxTeamToJSON, } from './SandboxTeam';
15
15
  import { StopOperationFromJSON, StopOperationToJSON, } from './StopOperation';
16
+ import { SandboxLastRebootFromJSON, SandboxLastRebootToJSON, } from './SandboxLastReboot';
17
+ import { SandboxCostFromJSON, SandboxCostToJSON, } from './SandboxCost';
16
18
  import { SandboxHydrationFromJSON, SandboxHydrationToJSON, } from './SandboxHydration';
17
19
  /**
18
20
  * @export
@@ -61,6 +63,13 @@ export const SandboxAccessEnum = {
61
63
  Use: 'use',
62
64
  View: 'view'
63
65
  };
66
+ /**
67
+ * @export
68
+ */
69
+ export const SandboxVisibilityEnum = {
70
+ Shared: 'shared',
71
+ Private: 'private'
72
+ };
64
73
  /**
65
74
  * @export
66
75
  */
@@ -108,6 +117,7 @@ export function SandboxFromJSONTyped(json, ignoreDiscriminator) {
108
117
  'name': json['name'],
109
118
  'state': json['state'],
110
119
  'error': json['error'] == null ? undefined : json['error'],
120
+ 'dataExpiredAt': json['dataExpiredAt'] == null ? undefined : (new Date(json['dataExpiredAt'])),
111
121
  'health': json['health'] == null ? undefined : json['health'],
112
122
  'healthReason': json['healthReason'] == null ? undefined : json['healthReason'],
113
123
  'degradedSince': json['degradedSince'] == null ? undefined : (new Date(json['degradedSince'])),
@@ -138,10 +148,13 @@ export function SandboxFromJSONTyped(json, ignoreDiscriminator) {
138
148
  'createdById': json['createdById'] == null ? undefined : json['createdById'],
139
149
  'access': json['access'] == null ? undefined : json['access'],
140
150
  'holdsCreatorLogins': json['holdsCreatorLogins'] == null ? undefined : json['holdsCreatorLogins'],
151
+ 'visibility': json['visibility'] == null ? undefined : json['visibility'],
152
+ 'cost': json['cost'] == null ? undefined : SandboxCostFromJSON(json['cost']),
141
153
  'wipePendingUntilRestart': json['wipePendingUntilRestart'] == null ? undefined : json['wipePendingUntilRestart'],
142
154
  'subdomain': json['subdomain'] == null ? undefined : json['subdomain'],
143
155
  'lastSnapshotAttemptAt': json['lastSnapshotAttemptAt'] == null ? undefined : (new Date(json['lastSnapshotAttemptAt'])),
144
156
  'lastSnapshotStatus': json['lastSnapshotStatus'] == null ? undefined : json['lastSnapshotStatus'],
157
+ 'lastReboot': json['lastReboot'] == null ? undefined : SandboxLastRebootFromJSON(json['lastReboot']),
145
158
  'setupStatus': json['setupStatus'] == null ? undefined : json['setupStatus'],
146
159
  'setupError': json['setupError'] == null ? undefined : json['setupError'],
147
160
  'environment': json['environment'] == null ? undefined : json['environment'],
@@ -161,6 +174,7 @@ export function SandboxToJSONTyped(value, ignoreDiscriminator = false) {
161
174
  'name': value['name'],
162
175
  'state': value['state'],
163
176
  'error': value['error'],
177
+ 'dataExpiredAt': value['dataExpiredAt'] == null ? value['dataExpiredAt'] : value['dataExpiredAt'].toISOString(),
164
178
  'health': value['health'],
165
179
  'healthReason': value['healthReason'],
166
180
  'degradedSince': value['degradedSince'] == null ? value['degradedSince'] : value['degradedSince'].toISOString(),
@@ -191,10 +205,13 @@ export function SandboxToJSONTyped(value, ignoreDiscriminator = false) {
191
205
  'createdById': value['createdById'],
192
206
  'access': value['access'],
193
207
  'holdsCreatorLogins': value['holdsCreatorLogins'],
208
+ 'visibility': value['visibility'],
209
+ 'cost': SandboxCostToJSON(value['cost']),
194
210
  'wipePendingUntilRestart': value['wipePendingUntilRestart'],
195
211
  'subdomain': value['subdomain'],
196
212
  'lastSnapshotAttemptAt': value['lastSnapshotAttemptAt'] == null ? value['lastSnapshotAttemptAt'] : value['lastSnapshotAttemptAt'].toISOString(),
197
213
  'lastSnapshotStatus': value['lastSnapshotStatus'],
214
+ 'lastReboot': SandboxLastRebootToJSON(value['lastReboot']),
198
215
  'setupStatus': value['setupStatus'],
199
216
  'setupError': value['setupError'],
200
217
  'environment': value['environment'],
@@ -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,51 @@
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 SandboxCost interface.
16
+ */
17
+ export function instanceOfSandboxCost(value) {
18
+ if (!('since' in value) || value['since'] === undefined)
19
+ return false;
20
+ if (!('seconds' in value) || value['seconds'] === undefined)
21
+ return false;
22
+ if (!('dollars' in value) || value['dollars'] === undefined)
23
+ return false;
24
+ return true;
25
+ }
26
+ export function SandboxCostFromJSON(json) {
27
+ return SandboxCostFromJSONTyped(json, false);
28
+ }
29
+ export function SandboxCostFromJSONTyped(json, ignoreDiscriminator) {
30
+ if (json == null) {
31
+ return json;
32
+ }
33
+ return {
34
+ 'since': (new Date(json['since'])),
35
+ 'seconds': json['seconds'],
36
+ 'dollars': json['dollars'],
37
+ };
38
+ }
39
+ export function SandboxCostToJSON(json) {
40
+ return SandboxCostToJSONTyped(json, false);
41
+ }
42
+ export function SandboxCostToJSONTyped(value, ignoreDiscriminator = false) {
43
+ if (value == null) {
44
+ return value;
45
+ }
46
+ return {
47
+ 'since': value['since'].toISOString(),
48
+ 'seconds': value['seconds'],
49
+ 'dollars': value['dollars'],
50
+ };
51
+ }
@@ -9,6 +9,7 @@
9
9
  * https://openapi-generator.tech
10
10
  * Do not edit the class manually.
11
11
  */
12
+ import type { ResourceAccess } from './ResourceAccess';
12
13
  import type { SelectedRepository } from './SelectedRepository';
13
14
  import type { SandboxEnvironmentVersionSummary } from './SandboxEnvironmentVersionSummary';
14
15
  import type { SecretFile } from './SecretFile';
@@ -96,6 +97,12 @@ export interface SandboxEnvironment {
96
97
  * @memberof SandboxEnvironment
97
98
  */
98
99
  proxyAiCredentials?: boolean;
100
+ /**
101
+ *
102
+ * @type {ResourceAccess}
103
+ * @memberof SandboxEnvironment
104
+ */
105
+ access?: ResourceAccess;
99
106
  /**
100
107
  * The latest version's .env-style content. Treat as sensitive.
101
108
  * @type {string}
@@ -11,6 +11,7 @@
11
11
  * https://openapi-generator.tech
12
12
  * Do not edit the class manually.
13
13
  */
14
+ import { ResourceAccessFromJSON, ResourceAccessToJSON, } from './ResourceAccess';
14
15
  import { SelectedRepositoryFromJSON, SelectedRepositoryToJSON, } from './SelectedRepository';
15
16
  import { SandboxEnvironmentVersionSummaryFromJSON, SandboxEnvironmentVersionSummaryToJSON, } from './SandboxEnvironmentVersionSummary';
16
17
  import { SecretFileFromJSON, SecretFileToJSON, } from './SecretFile';
@@ -65,6 +66,7 @@ export function SandboxEnvironmentFromJSONTyped(json, ignoreDiscriminator) {
65
66
  'passAgentsCredentials': json['passAgentsCredentials'],
66
67
  'credentialProfileId': json['credentialProfileId'] == null ? undefined : json['credentialProfileId'],
67
68
  'proxyAiCredentials': json['proxyAiCredentials'] == null ? undefined : json['proxyAiCredentials'],
69
+ 'access': json['access'] == null ? undefined : ResourceAccessFromJSON(json['access']),
68
70
  'envContents': json['envContents'],
69
71
  'secretFiles': (json['secretFiles'].map(SecretFileFromJSON)),
70
72
  'selectedRepositories': json['selectedRepositories'] == null ? undefined : (json['selectedRepositories'].map(SelectedRepositoryFromJSON)),
@@ -92,6 +94,7 @@ export function SandboxEnvironmentToJSONTyped(value, ignoreDiscriminator = false
92
94
  'passAgentsCredentials': value['passAgentsCredentials'],
93
95
  'credentialProfileId': value['credentialProfileId'],
94
96
  'proxyAiCredentials': value['proxyAiCredentials'],
97
+ 'access': ResourceAccessToJSON(value['access']),
95
98
  'envContents': value['envContents'],
96
99
  'secretFiles': (value['secretFiles'].map(SecretFileToJSON)),
97
100
  'selectedRepositories': value['selectedRepositories'] == null ? undefined : (value['selectedRepositories'].map(SelectedRepositoryToJSON)),