@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
@@ -20,7 +20,7 @@ import { mapValues } from '../runtime';
20
20
  */
21
21
  export interface CreateSandboxRequest {
22
22
  /**
23
- * 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.
23
+ * 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.
24
24
  * @type {CreateSandboxRequestTypeEnum}
25
25
  * @memberof CreateSandboxRequest
26
26
  */
@@ -50,7 +50,7 @@ export interface CreateSandboxRequest {
50
50
  */
51
51
  noEnv?: boolean;
52
52
  /**
53
- * Pass `false` to never snapshot this sandbox. Nothing is captured in the background, so it pays no CPU or memory for it, and stopping it erases its disk the way zero data retention does. It cannot be resumed, forked, or saved as a named snapshot, and if its machine fails there is no backup to rebuild it from.
53
+ * Pass `false` to never snapshot this sandbox. Nothing is captured in the background, so it pays no CPU or memory for it, and stopping it erases its disk the way zero data retention does. It cannot be resumed, forked, or saved as a saved snapshot, and if its machine fails there is no backup to rebuild it from.
54
54
  * @type {boolean}
55
55
  * @memberof CreateSandboxRequest
56
56
  */
@@ -67,6 +67,12 @@ export interface CreateSandboxRequest {
67
67
  * @memberof CreateSandboxRequest
68
68
  */
69
69
  failFast?: boolean;
70
+ /**
71
+ * With `from`: create this many sandboxes from the saved 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`.
72
+ * @type {number}
73
+ * @memberof CreateSandboxRequest
74
+ */
75
+ count?: number;
70
76
  /**
71
77
  * 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.
72
78
  * @type {string}
@@ -86,7 +92,7 @@ export interface CreateSandboxRequest {
86
92
  */
87
93
  teamId?: string;
88
94
  /**
89
- * Create the sandbox from a named snapshot (saved with `POST /named-snapshots`, or `boat snapshot <id> <name>` in the CLI). The sandbox starts from that exact frozen state. Omitting `type` inherits the type the snapshot was saved from; env and no-env inherit from the snapshot's source sandbox unless the request passes its own, with the same rules as forking. Also accepts a share code (`bsh_...`) that another account made with `POST /named-snapshots/{name}/shares`. The new sandbox lives in and is billed to your account. It does not get the owner's per-sandbox env; your own environment applies normally. A wrong or revoked code returns `404 snapshot_not_found`.
95
+ * Create the sandbox from a saved snapshot (saved with `POST /saved-snapshots`, or `boat snapshot <id> <name>` in the CLI). The sandbox starts from that exact frozen state. Omitting `type` inherits the type the snapshot was saved from; env and no-env inherit from the snapshot's source sandbox unless the request passes its own, with the same rules as forking. Also accepts a share code (`bsh_...`) that another account made with `POST /saved-snapshots/{name}/shares`. The new sandbox lives in and is billed to your account. It does not get the owner's per-sandbox env; your own environment applies normally. A wrong or revoked code returns `404 snapshot_not_found`.
90
96
  * @type {string}
91
97
  * @memberof CreateSandboxRequest
92
98
  */
@@ -131,6 +137,7 @@ export function CreateSandboxRequestFromJSONTyped(json: any, ignoreDiscriminator
131
137
  'snapshots': json['snapshots'] == null ? undefined : json['snapshots'],
132
138
  'monitoring': json['monitoring'] == null ? undefined : json['monitoring'],
133
139
  'failFast': json['failFast'] == null ? undefined : json['failFast'],
140
+ 'count': json['count'] == null ? undefined : json['count'],
134
141
  'setupScript': json['setupScript'] == null ? undefined : json['setupScript'],
135
142
  'org': json['org'] == null ? undefined : json['org'],
136
143
  'teamId': json['teamId'] == null ? undefined : json['teamId'],
@@ -157,6 +164,7 @@ export function CreateSandboxRequestToJSONTyped(value?: CreateSandboxRequest | n
157
164
  'snapshots': value['snapshots'],
158
165
  'monitoring': value['monitoring'],
159
166
  'failFast': value['failFast'],
167
+ 'count': value['count'],
160
168
  'setupScript': value['setupScript'],
161
169
  'org': value['org'],
162
170
  'teamId': value['teamId'],
@@ -57,6 +57,12 @@ export interface CreateSandboxResponse {
57
57
  * @memberof CreateSandboxResponse
58
58
  */
59
59
  sandbox: Sandbox;
60
+ /**
61
+ * Present when the request set `count` above 1. Every sandbox of the batch, in creation order.
62
+ * @type {Array<Sandbox>}
63
+ * @memberof CreateSandboxResponse
64
+ */
65
+ sandboxes?: Array<Sandbox>;
60
66
  /**
61
67
  * Present when a fair-use cap on a gifted account shortened the requested auto-stop time.
62
68
  * @type {string}
@@ -111,6 +117,7 @@ export function CreateSandboxResponseFromJSONTyped(json: any, ignoreDiscriminato
111
117
  'status': json['status'],
112
118
  'ttlSeconds': json['ttlSeconds'],
113
119
  'sandbox': SandboxFromJSON(json['sandbox']),
120
+ 'sandboxes': json['sandboxes'] == null ? undefined : ((json['sandboxes'] as Array<any>).map(SandboxFromJSON)),
114
121
  'giftLimitNotice': json['giftLimitNotice'] == null ? undefined : json['giftLimitNotice'],
115
122
  };
116
123
  }
@@ -131,6 +138,7 @@ export function CreateSandboxResponseToJSONTyped(value?: CreateSandboxResponse |
131
138
  'status': value['status'],
132
139
  'ttlSeconds': value['ttlSeconds'],
133
140
  'sandbox': SandboxToJSON(value['sandbox']),
141
+ 'sandboxes': value['sandboxes'] == null ? undefined : ((value['sandboxes'] as Array<any>).map(SandboxToJSON)),
134
142
  'giftLimitNotice': value['giftLimitNotice'],
135
143
  };
136
144
  }
@@ -26,7 +26,7 @@ export interface CreateScopedApiKeyRequest {
26
26
  */
27
27
  name?: string;
28
28
  /**
29
- * Duration such as 90d, 24h, or seconds. Max 365d.
29
+ * Duration such as 90d, 24h, or seconds, up to 365d; or `never` for a key that works until revoked. Default 90d.
30
30
  * @type {string}
31
31
  * @memberof CreateScopedApiKeyRequest
32
32
  */
@@ -25,10 +25,13 @@ export const CredentialId = {
25
25
  DeepseekApiKey: 'deepseek-api-key',
26
26
  MoonshotApiKey: 'moonshot-api-key',
27
27
  MistralApiKey: 'mistral-api-key',
28
+ XaiApiKey: 'xai-api-key',
29
+ OpencodeApiKey: 'opencode-api-key',
28
30
  ClaudeSubscription: 'claude-subscription',
29
31
  ChatgptSubscription: 'chatgpt-subscription',
30
32
  KimiSubscription: 'kimi-subscription',
31
33
  MistralVibeSubscription: 'mistral-vibe-subscription',
34
+ GrokSubscription: 'grok-subscription',
32
35
  ClaudeBedrock: 'claude-bedrock',
33
36
  CodexBedrock: 'codex-bedrock'
34
37
  } as const;
@@ -13,6 +13,13 @@
13
13
  */
14
14
 
15
15
  import { mapValues } from '../runtime';
16
+ import type { ResourceAccess } from './ResourceAccess';
17
+ import {
18
+ ResourceAccessFromJSON,
19
+ ResourceAccessFromJSONTyped,
20
+ ResourceAccessToJSON,
21
+ ResourceAccessToJSONTyped,
22
+ } from './ResourceAccess';
16
23
  import type { CredentialId } from './CredentialId';
17
24
  import {
18
25
  CredentialIdFromJSON,
@@ -101,6 +108,12 @@ export interface CredentialProfile {
101
108
  * @memberof CredentialProfile
102
109
  */
103
110
  updatedAt: Date;
111
+ /**
112
+ *
113
+ * @type {ResourceAccess}
114
+ * @memberof CredentialProfile
115
+ */
116
+ access?: ResourceAccess;
104
117
  }
105
118
 
106
119
  /**
@@ -139,6 +152,7 @@ export function CredentialProfileFromJSONTyped(json: any, ignoreDiscriminator: b
139
152
  'customApis': json['customApis'],
140
153
  'createdAt': (new Date(json['createdAt'])),
141
154
  'updatedAt': (new Date(json['updatedAt'])),
155
+ 'access': json['access'] == null ? undefined : ResourceAccessFromJSON(json['access']),
142
156
  };
143
157
  }
144
158
 
@@ -163,6 +177,7 @@ export function CredentialProfileToJSONTyped(value?: CredentialProfile | null, i
163
177
  'customApis': value['customApis'],
164
178
  'createdAt': value['createdAt'].toISOString(),
165
179
  'updatedAt': value['updatedAt'].toISOString(),
180
+ 'access': ResourceAccessToJSON(value['access']),
166
181
  };
167
182
  }
168
183
 
@@ -50,7 +50,7 @@ export interface DeletionOperation {
50
50
  */
51
51
  status: DeletionOperationStatusEnum;
52
52
  /**
53
- * 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.
53
+ * 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.
54
54
  * @type {DeletionOperationStageEnum}
55
55
  * @memberof DeletionOperation
56
56
  */
@@ -298,7 +298,7 @@ export interface LimitsFields {
298
298
  */
299
299
  last24hUsageSeconds?: number;
300
300
  /**
301
- * Lifetime machine-time allowance for a trial that never paid. Null once the account has paid or has a plan.
301
+ * 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.
302
302
  * @type {number}
303
303
  * @memberof LimitsFields
304
304
  */
@@ -309,7 +309,7 @@ export interface LimitsResponse {
309
309
  */
310
310
  last24hUsageSeconds?: number;
311
311
  /**
312
- * Lifetime machine-time allowance for a trial that never paid. Null once the account has paid or has a plan.
312
+ * 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.
313
313
  * @type {number}
314
314
  * @memberof LimitsResponse
315
315
  */
@@ -143,6 +143,7 @@ export const MeResponseAllOfUserConnectionMethodEnum = {
143
143
  Github: 'github',
144
144
  Google: 'google',
145
145
  Email: 'email',
146
+ Agentid: 'agentid',
146
147
  Service: 'service'
147
148
  } as const;
148
149
  export type MeResponseAllOfUserConnectionMethodEnum = typeof MeResponseAllOfUserConnectionMethodEnum[keyof typeof MeResponseAllOfUserConnectionMethodEnum];
@@ -0,0 +1,75 @@
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
+ import { mapValues } from '../runtime';
16
+ /**
17
+ * 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.
18
+ * @export
19
+ * @interface ResourceAccess
20
+ */
21
+ export interface ResourceAccess {
22
+ /**
23
+ *
24
+ * @type {boolean}
25
+ * @memberof ResourceAccess
26
+ */
27
+ restricted: boolean;
28
+ /**
29
+ * Member ids. Empty when `restricted` is false.
30
+ * @type {Array<string>}
31
+ * @memberof ResourceAccess
32
+ */
33
+ members: Array<string>;
34
+ }
35
+
36
+ /**
37
+ * Check if a given object implements the ResourceAccess interface.
38
+ */
39
+ export function instanceOfResourceAccess(value: object): value is ResourceAccess {
40
+ if (!('restricted' in value) || value['restricted'] === undefined) return false;
41
+ if (!('members' in value) || value['members'] === undefined) return false;
42
+ return true;
43
+ }
44
+
45
+ export function ResourceAccessFromJSON(json: any): ResourceAccess {
46
+ return ResourceAccessFromJSONTyped(json, false);
47
+ }
48
+
49
+ export function ResourceAccessFromJSONTyped(json: any, ignoreDiscriminator: boolean): ResourceAccess {
50
+ if (json == null) {
51
+ return json;
52
+ }
53
+ return {
54
+
55
+ 'restricted': json['restricted'],
56
+ 'members': json['members'],
57
+ };
58
+ }
59
+
60
+ export function ResourceAccessToJSON(json: any): ResourceAccess {
61
+ return ResourceAccessToJSONTyped(json, false);
62
+ }
63
+
64
+ export function ResourceAccessToJSONTyped(value?: ResourceAccess | null, ignoreDiscriminator: boolean = false): any {
65
+ if (value == null) {
66
+ return value;
67
+ }
68
+
69
+ return {
70
+
71
+ 'restricted': value['restricted'],
72
+ 'members': value['members'],
73
+ };
74
+ }
75
+
@@ -0,0 +1,74 @@
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
+ import { mapValues } from '../runtime';
16
+ /**
17
+ * 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`.
18
+ * @export
19
+ * @interface ResourceAccessUpdate
20
+ */
21
+ export interface ResourceAccessUpdate {
22
+ /**
23
+ * False opens it to every member. True limits it to owners, admins and `members`.
24
+ * @type {boolean}
25
+ * @memberof ResourceAccessUpdate
26
+ */
27
+ restricted: boolean;
28
+ /**
29
+ * Member ids or emails of active members. Replaces the full list.
30
+ * @type {Array<string>}
31
+ * @memberof ResourceAccessUpdate
32
+ */
33
+ members?: Array<string>;
34
+ }
35
+
36
+ /**
37
+ * Check if a given object implements the ResourceAccessUpdate interface.
38
+ */
39
+ export function instanceOfResourceAccessUpdate(value: object): value is ResourceAccessUpdate {
40
+ if (!('restricted' in value) || value['restricted'] === undefined) return false;
41
+ return true;
42
+ }
43
+
44
+ export function ResourceAccessUpdateFromJSON(json: any): ResourceAccessUpdate {
45
+ return ResourceAccessUpdateFromJSONTyped(json, false);
46
+ }
47
+
48
+ export function ResourceAccessUpdateFromJSONTyped(json: any, ignoreDiscriminator: boolean): ResourceAccessUpdate {
49
+ if (json == null) {
50
+ return json;
51
+ }
52
+ return {
53
+
54
+ 'restricted': json['restricted'],
55
+ 'members': json['members'] == null ? undefined : json['members'],
56
+ };
57
+ }
58
+
59
+ export function ResourceAccessUpdateToJSON(json: any): ResourceAccessUpdate {
60
+ return ResourceAccessUpdateToJSONTyped(json, false);
61
+ }
62
+
63
+ export function ResourceAccessUpdateToJSONTyped(value?: ResourceAccessUpdate | null, ignoreDiscriminator: boolean = false): any {
64
+ if (value == null) {
65
+ return value;
66
+ }
67
+
68
+ return {
69
+
70
+ 'restricted': value['restricted'],
71
+ 'members': value['members'],
72
+ };
73
+ }
74
+
@@ -26,7 +26,7 @@ export interface ResumeRequest {
26
26
  */
27
27
  failFast?: boolean;
28
28
  /**
29
- * 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.
29
+ * 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.
30
30
  * @type {ResumeRequestTypeEnum}
31
31
  * @memberof ResumeRequest
32
32
  */
@@ -27,6 +27,20 @@ import {
27
27
  StopOperationToJSON,
28
28
  StopOperationToJSONTyped,
29
29
  } from './StopOperation';
30
+ import type { SandboxLastReboot } from './SandboxLastReboot';
31
+ import {
32
+ SandboxLastRebootFromJSON,
33
+ SandboxLastRebootFromJSONTyped,
34
+ SandboxLastRebootToJSON,
35
+ SandboxLastRebootToJSONTyped,
36
+ } from './SandboxLastReboot';
37
+ import type { SandboxCost } from './SandboxCost';
38
+ import {
39
+ SandboxCostFromJSON,
40
+ SandboxCostFromJSONTyped,
41
+ SandboxCostToJSON,
42
+ SandboxCostToJSONTyped,
43
+ } from './SandboxCost';
30
44
  import type { SandboxHydration } from './SandboxHydration';
31
45
  import {
32
46
  SandboxHydrationFromJSON,
@@ -65,6 +79,12 @@ export interface Sandbox {
65
79
  * @memberof Sandbox
66
80
  */
67
81
  error?: string | null;
82
+ /**
83
+ * 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.
84
+ * @type {Date}
85
+ * @memberof Sandbox
86
+ */
87
+ dataExpiredAt?: Date | null;
68
88
  /**
69
89
  * `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.
70
90
  * @type {SandboxHealthEnum}
@@ -234,7 +254,7 @@ export interface Sandbox {
234
254
  */
235
255
  createdById?: string | null;
236
256
  /**
237
- * 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`).
257
+ * 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`).
238
258
  * @type {SandboxAccessEnum}
239
259
  * @memberof Sandbox
240
260
  */
@@ -245,6 +265,18 @@ export interface Sandbox {
245
265
  * @memberof Sandbox
246
266
  */
247
267
  holdsCreatorLogins?: boolean;
268
+ /**
269
+ * 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).
270
+ * @type {SandboxVisibilityEnum}
271
+ * @memberof Sandbox
272
+ */
273
+ visibility?: SandboxVisibilityEnum | null;
274
+ /**
275
+ *
276
+ * @type {SandboxCost}
277
+ * @memberof Sandbox
278
+ */
279
+ cost?: SandboxCost;
248
280
  /**
249
281
  * 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.
250
282
  * @type {boolean}
@@ -269,6 +301,12 @@ export interface Sandbox {
269
301
  * @memberof Sandbox
270
302
  */
271
303
  lastSnapshotStatus?: SandboxLastSnapshotStatusEnum | null;
304
+ /**
305
+ *
306
+ * @type {SandboxLastReboot}
307
+ * @memberof Sandbox
308
+ */
309
+ lastReboot?: SandboxLastReboot;
272
310
  /**
273
311
  * 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.
274
312
  * @type {SandboxSetupStatusEnum}
@@ -359,6 +397,15 @@ export const SandboxAccessEnum = {
359
397
  } as const;
360
398
  export type SandboxAccessEnum = typeof SandboxAccessEnum[keyof typeof SandboxAccessEnum];
361
399
 
400
+ /**
401
+ * @export
402
+ */
403
+ export const SandboxVisibilityEnum = {
404
+ Shared: 'shared',
405
+ Private: 'private'
406
+ } as const;
407
+ export type SandboxVisibilityEnum = typeof SandboxVisibilityEnum[keyof typeof SandboxVisibilityEnum];
408
+
362
409
  /**
363
410
  * @export
364
411
  */
@@ -409,6 +456,7 @@ export function SandboxFromJSONTyped(json: any, ignoreDiscriminator: boolean): S
409
456
  'name': json['name'],
410
457
  'state': json['state'],
411
458
  'error': json['error'] == null ? undefined : json['error'],
459
+ 'dataExpiredAt': json['dataExpiredAt'] == null ? undefined : (new Date(json['dataExpiredAt'])),
412
460
  'health': json['health'] == null ? undefined : json['health'],
413
461
  'healthReason': json['healthReason'] == null ? undefined : json['healthReason'],
414
462
  'degradedSince': json['degradedSince'] == null ? undefined : (new Date(json['degradedSince'])),
@@ -439,10 +487,13 @@ export function SandboxFromJSONTyped(json: any, ignoreDiscriminator: boolean): S
439
487
  'createdById': json['createdById'] == null ? undefined : json['createdById'],
440
488
  'access': json['access'] == null ? undefined : json['access'],
441
489
  'holdsCreatorLogins': json['holdsCreatorLogins'] == null ? undefined : json['holdsCreatorLogins'],
490
+ 'visibility': json['visibility'] == null ? undefined : json['visibility'],
491
+ 'cost': json['cost'] == null ? undefined : SandboxCostFromJSON(json['cost']),
442
492
  'wipePendingUntilRestart': json['wipePendingUntilRestart'] == null ? undefined : json['wipePendingUntilRestart'],
443
493
  'subdomain': json['subdomain'] == null ? undefined : json['subdomain'],
444
494
  'lastSnapshotAttemptAt': json['lastSnapshotAttemptAt'] == null ? undefined : (new Date(json['lastSnapshotAttemptAt'])),
445
495
  'lastSnapshotStatus': json['lastSnapshotStatus'] == null ? undefined : json['lastSnapshotStatus'],
496
+ 'lastReboot': json['lastReboot'] == null ? undefined : SandboxLastRebootFromJSON(json['lastReboot']),
446
497
  'setupStatus': json['setupStatus'] == null ? undefined : json['setupStatus'],
447
498
  'setupError': json['setupError'] == null ? undefined : json['setupError'],
448
499
  'environment': json['environment'] == null ? undefined : json['environment'],
@@ -466,6 +517,7 @@ export function SandboxToJSONTyped(value?: Sandbox | null, ignoreDiscriminator:
466
517
  'name': value['name'],
467
518
  'state': value['state'],
468
519
  'error': value['error'],
520
+ 'dataExpiredAt': value['dataExpiredAt'] == null ? value['dataExpiredAt'] : value['dataExpiredAt'].toISOString(),
469
521
  'health': value['health'],
470
522
  'healthReason': value['healthReason'],
471
523
  'degradedSince': value['degradedSince'] == null ? value['degradedSince'] : value['degradedSince'].toISOString(),
@@ -496,10 +548,13 @@ export function SandboxToJSONTyped(value?: Sandbox | null, ignoreDiscriminator:
496
548
  'createdById': value['createdById'],
497
549
  'access': value['access'],
498
550
  'holdsCreatorLogins': value['holdsCreatorLogins'],
551
+ 'visibility': value['visibility'],
552
+ 'cost': SandboxCostToJSON(value['cost']),
499
553
  'wipePendingUntilRestart': value['wipePendingUntilRestart'],
500
554
  'subdomain': value['subdomain'],
501
555
  'lastSnapshotAttemptAt': value['lastSnapshotAttemptAt'] == null ? value['lastSnapshotAttemptAt'] : value['lastSnapshotAttemptAt'].toISOString(),
502
556
  'lastSnapshotStatus': value['lastSnapshotStatus'],
557
+ 'lastReboot': SandboxLastRebootToJSON(value['lastReboot']),
503
558
  'setupStatus': value['setupStatus'],
504
559
  'setupError': value['setupError'],
505
560
  'environment': value['environment'],
@@ -0,0 +1,84 @@
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
+ import { mapValues } from '../runtime';
16
+ /**
17
+ * 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`.
18
+ * @export
19
+ * @interface SandboxCost
20
+ */
21
+ export interface SandboxCost {
22
+ /**
23
+ * The 1st of this month, 00:00 UTC.
24
+ * @type {Date}
25
+ * @memberof SandboxCost
26
+ */
27
+ since: Date;
28
+ /**
29
+ * Billable machine-seconds, size multiplier applied.
30
+ * @type {number}
31
+ * @memberof SandboxCost
32
+ */
33
+ seconds: number;
34
+ /**
35
+ * seconds / secondsPerDollar, at list price.
36
+ * @type {number}
37
+ * @memberof SandboxCost
38
+ */
39
+ dollars: number;
40
+ }
41
+
42
+ /**
43
+ * Check if a given object implements the SandboxCost interface.
44
+ */
45
+ export function instanceOfSandboxCost(value: object): value is SandboxCost {
46
+ if (!('since' in value) || value['since'] === undefined) return false;
47
+ if (!('seconds' in value) || value['seconds'] === undefined) return false;
48
+ if (!('dollars' in value) || value['dollars'] === undefined) return false;
49
+ return true;
50
+ }
51
+
52
+ export function SandboxCostFromJSON(json: any): SandboxCost {
53
+ return SandboxCostFromJSONTyped(json, false);
54
+ }
55
+
56
+ export function SandboxCostFromJSONTyped(json: any, ignoreDiscriminator: boolean): SandboxCost {
57
+ if (json == null) {
58
+ return json;
59
+ }
60
+ return {
61
+
62
+ 'since': (new Date(json['since'])),
63
+ 'seconds': json['seconds'],
64
+ 'dollars': json['dollars'],
65
+ };
66
+ }
67
+
68
+ export function SandboxCostToJSON(json: any): SandboxCost {
69
+ return SandboxCostToJSONTyped(json, false);
70
+ }
71
+
72
+ export function SandboxCostToJSONTyped(value?: SandboxCost | null, ignoreDiscriminator: boolean = false): any {
73
+ if (value == null) {
74
+ return value;
75
+ }
76
+
77
+ return {
78
+
79
+ 'since': value['since'].toISOString(),
80
+ 'seconds': value['seconds'],
81
+ 'dollars': value['dollars'],
82
+ };
83
+ }
84
+
@@ -13,6 +13,13 @@
13
13
  */
14
14
 
15
15
  import { mapValues } from '../runtime';
16
+ import type { ResourceAccess } from './ResourceAccess';
17
+ import {
18
+ ResourceAccessFromJSON,
19
+ ResourceAccessFromJSONTyped,
20
+ ResourceAccessToJSON,
21
+ ResourceAccessToJSONTyped,
22
+ } from './ResourceAccess';
16
23
  import type { SelectedRepository } from './SelectedRepository';
17
24
  import {
18
25
  SelectedRepositoryFromJSON,
@@ -119,6 +126,12 @@ export interface SandboxEnvironment {
119
126
  * @memberof SandboxEnvironment
120
127
  */
121
128
  proxyAiCredentials?: boolean;
129
+ /**
130
+ *
131
+ * @type {ResourceAccess}
132
+ * @memberof SandboxEnvironment
133
+ */
134
+ access?: ResourceAccess;
122
135
  /**
123
136
  * The latest version's .env-style content. Treat as sensitive.
124
137
  * @type {string}
@@ -187,6 +200,7 @@ export function SandboxEnvironmentFromJSONTyped(json: any, ignoreDiscriminator:
187
200
  'passAgentsCredentials': json['passAgentsCredentials'],
188
201
  'credentialProfileId': json['credentialProfileId'] == null ? undefined : json['credentialProfileId'],
189
202
  'proxyAiCredentials': json['proxyAiCredentials'] == null ? undefined : json['proxyAiCredentials'],
203
+ 'access': json['access'] == null ? undefined : ResourceAccessFromJSON(json['access']),
190
204
  'envContents': json['envContents'],
191
205
  'secretFiles': ((json['secretFiles'] as Array<any>).map(SecretFileFromJSON)),
192
206
  'selectedRepositories': json['selectedRepositories'] == null ? undefined : ((json['selectedRepositories'] as Array<any>).map(SelectedRepositoryFromJSON)),
@@ -218,6 +232,7 @@ export function SandboxEnvironmentToJSONTyped(value?: SandboxEnvironment | null,
218
232
  'passAgentsCredentials': value['passAgentsCredentials'],
219
233
  'credentialProfileId': value['credentialProfileId'],
220
234
  'proxyAiCredentials': value['proxyAiCredentials'],
235
+ 'access': ResourceAccessToJSON(value['access']),
221
236
  'envContents': value['envContents'],
222
237
  'secretFiles': ((value['secretFiles'] as Array<any>).map(SecretFileToJSON)),
223
238
  'selectedRepositories': value['selectedRepositories'] == null ? undefined : ((value['selectedRepositories'] as Array<any>).map(SelectedRepositoryToJSON)),