@boatdev/sdk 1.4.0 → 1.6.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 (60) hide show
  1. package/.openapi-generator/FILES +4 -0
  2. package/dist/apis/BoatApi.d.ts +22 -0
  3. package/dist/apis/BoatApi.js +51 -0
  4. package/dist/boat-helpers.d.ts +6 -0
  5. package/dist/boat-helpers.js +28 -4
  6. package/dist/esm/apis/BoatApi.d.ts +22 -0
  7. package/dist/esm/apis/BoatApi.js +51 -0
  8. package/dist/esm/boat-helpers.d.ts +6 -0
  9. package/dist/esm/boat-helpers.js +28 -4
  10. package/dist/esm/models/NamedSnapshotAllowance.d.ts +74 -0
  11. package/dist/esm/models/NamedSnapshotAllowance.js +55 -0
  12. package/dist/esm/models/NamedSnapshotListResponse.d.ts +7 -0
  13. package/dist/esm/models/NamedSnapshotListResponse.js +3 -0
  14. package/dist/esm/models/PromptRequest.d.ts +6 -0
  15. package/dist/esm/models/PromptRequest.js +2 -0
  16. package/dist/esm/models/PromptResponse.d.ts +6 -0
  17. package/dist/esm/models/PromptResponse.js +2 -0
  18. package/dist/esm/models/PromptRun.d.ts +6 -0
  19. package/dist/esm/models/PromptRun.js +2 -0
  20. package/dist/esm/models/Sandbox.d.ts +39 -0
  21. package/dist/esm/models/Sandbox.js +18 -0
  22. package/dist/esm/models/Share200Response.d.ts +45 -0
  23. package/dist/esm/models/Share200Response.js +46 -0
  24. package/dist/esm/models/index.d.ts +2 -0
  25. package/dist/esm/models/index.js +2 -0
  26. package/dist/models/NamedSnapshotAllowance.d.ts +74 -0
  27. package/dist/models/NamedSnapshotAllowance.js +62 -0
  28. package/dist/models/NamedSnapshotListResponse.d.ts +7 -0
  29. package/dist/models/NamedSnapshotListResponse.js +3 -0
  30. package/dist/models/PromptRequest.d.ts +6 -0
  31. package/dist/models/PromptRequest.js +2 -0
  32. package/dist/models/PromptResponse.d.ts +6 -0
  33. package/dist/models/PromptResponse.js +2 -0
  34. package/dist/models/PromptRun.d.ts +6 -0
  35. package/dist/models/PromptRun.js +2 -0
  36. package/dist/models/Sandbox.d.ts +39 -0
  37. package/dist/models/Sandbox.js +19 -1
  38. package/dist/models/Share200Response.d.ts +45 -0
  39. package/dist/models/Share200Response.js +53 -0
  40. package/dist/models/index.d.ts +2 -0
  41. package/dist/models/index.js +2 -0
  42. package/docs/BoatApi.md +87 -2
  43. package/docs/NamedSnapshotAllowance.md +47 -0
  44. package/docs/NamedSnapshotListResponse.md +2 -0
  45. package/docs/PromptRequest.md +2 -0
  46. package/docs/PromptResponse.md +2 -0
  47. package/docs/PromptRun.md +2 -0
  48. package/docs/Sandbox.md +10 -0
  49. package/docs/Share200Response.md +36 -0
  50. package/package.json +1 -1
  51. package/src/apis/BoatApi.ts +76 -0
  52. package/src/boat-helpers.ts +27 -5
  53. package/src/models/NamedSnapshotAllowance.ts +121 -0
  54. package/src/models/NamedSnapshotListResponse.ts +15 -0
  55. package/src/models/PromptRequest.ts +8 -0
  56. package/src/models/PromptResponse.ts +8 -0
  57. package/src/models/PromptRun.ts +8 -0
  58. package/src/models/Sandbox.ts +50 -0
  59. package/src/models/Share200Response.ts +89 -0
  60. package/src/models/index.ts +2 -0
@@ -182,8 +182,34 @@ export async function writeText(api: BoatApi, sandboxId: string, path: string, c
182
182
  return api.writeFile({ sandboxId, fileWriteRequest: { path, content, encoding: 'utf8' } });
183
183
  }
184
184
 
185
+ // A refusal that provably never ran the command (the sandbox is still restoring
186
+ // its disk, `retryable: true`) is retried for this long.
187
+ const STREAM_RETRY_MS = 60_000;
188
+
189
+ async function isRetryable(e: unknown): Promise<boolean> {
190
+ const response = (e as { response?: Response })?.response;
191
+ if (!response) return false;
192
+ const body = await response.clone().json().catch(() => undefined);
193
+ return body?.retryable === true;
194
+ }
195
+
196
+ /**
197
+ * Run a command and return its result.
198
+ *
199
+ * Safe to call right after `resume()`: a refusal that never ran the command
200
+ * (`retryable: true`, the sandbox is still restoring) is resent for up to 60 s.
201
+ */
185
202
  export async function execCommand(api: BoatApi, sandboxId: string, command: string, cwd?: string, timeoutSeconds = 30) {
186
- return api.command({ sandboxId, commandRequest: { command, cwd, timeoutSeconds } });
203
+ const deadline = Date.now() + STREAM_RETRY_MS;
204
+ for (;;) {
205
+ try {
206
+ return await api.command({ sandboxId, commandRequest: { command, cwd, timeoutSeconds } });
207
+ } catch (e) {
208
+ // The 1 s pause before the resend must also fit before the deadline.
209
+ if (Date.now() + 1_000 >= deadline || !(await isRetryable(e))) throw e;
210
+ }
211
+ await delay(1_000);
212
+ }
187
213
  }
188
214
 
189
215
  /** One line of a streamed command, as sent (an `exit` frame also carries e.g. `signal`, `oomKilled`). */
@@ -195,10 +221,6 @@ export type StreamCommandOptions = {
195
221
  signal?: AbortSignal;
196
222
  };
197
223
 
198
- // A refusal that provably never ran the command (the sandbox is still restoring
199
- // its disk, `retryable: true` before `started`) is retried for this long.
200
- const STREAM_RETRY_MS = 60_000;
201
-
202
224
  async function* ndjsonFrames(response: Response): AsyncGenerator<CommandFrame> {
203
225
  if (!response.body) throw new Error('The command stream has no body');
204
226
  const reader = response.body.getReader();
@@ -0,0 +1,121 @@
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
+ * What the request's wallet (your active organization, `?org=`, or personal) pays for named snapshots. 10 are free per wallet; each one above costs $1.70 a month, charged daily from usage. An organization's count includes every member's names billed to it.
18
+ * @export
19
+ * @interface NamedSnapshotAllowance
20
+ */
21
+ export interface NamedSnapshotAllowance {
22
+ /**
23
+ * Organization the numbers are for. null = personal.
24
+ * @type {string}
25
+ * @memberof NamedSnapshotAllowance
26
+ */
27
+ org?: string | null;
28
+ /**
29
+ * That organization's name.
30
+ * @type {string}
31
+ * @memberof NamedSnapshotAllowance
32
+ */
33
+ orgName?: string | null;
34
+ /**
35
+ * Named snapshots kept for free.
36
+ * @type {number}
37
+ * @memberof NamedSnapshotAllowance
38
+ */
39
+ free?: number;
40
+ /**
41
+ * Named snapshots this wallet keeps.
42
+ * @type {number}
43
+ * @memberof NamedSnapshotAllowance
44
+ */
45
+ used?: number;
46
+ /**
47
+ * Named snapshots above the free ones.
48
+ * @type {number}
49
+ * @memberof NamedSnapshotAllowance
50
+ */
51
+ extra?: number;
52
+ /**
53
+ * What the extra ones cost per month.
54
+ * @type {number}
55
+ * @memberof NamedSnapshotAllowance
56
+ */
57
+ extraMonthlyDollars?: number;
58
+ /**
59
+ * Boat time the extra ones take per day, in dollars (the daily charge).
60
+ * @type {number}
61
+ * @memberof NamedSnapshotAllowance
62
+ */
63
+ extraDailyDollars?: number;
64
+ /**
65
+ * Monthly price of one extra named snapshot.
66
+ * @type {number}
67
+ * @memberof NamedSnapshotAllowance
68
+ */
69
+ pricePerExtraMonthlyDollars?: number;
70
+ }
71
+
72
+ /**
73
+ * Check if a given object implements the NamedSnapshotAllowance interface.
74
+ */
75
+ export function instanceOfNamedSnapshotAllowance(value: object): value is NamedSnapshotAllowance {
76
+ return true;
77
+ }
78
+
79
+ export function NamedSnapshotAllowanceFromJSON(json: any): NamedSnapshotAllowance {
80
+ return NamedSnapshotAllowanceFromJSONTyped(json, false);
81
+ }
82
+
83
+ export function NamedSnapshotAllowanceFromJSONTyped(json: any, ignoreDiscriminator: boolean): NamedSnapshotAllowance {
84
+ if (json == null) {
85
+ return json;
86
+ }
87
+ return {
88
+
89
+ 'org': json['org'] == null ? undefined : json['org'],
90
+ 'orgName': json['orgName'] == null ? undefined : json['orgName'],
91
+ 'free': json['free'] == null ? undefined : json['free'],
92
+ 'used': json['used'] == null ? undefined : json['used'],
93
+ 'extra': json['extra'] == null ? undefined : json['extra'],
94
+ 'extraMonthlyDollars': json['extraMonthlyDollars'] == null ? undefined : json['extraMonthlyDollars'],
95
+ 'extraDailyDollars': json['extraDailyDollars'] == null ? undefined : json['extraDailyDollars'],
96
+ 'pricePerExtraMonthlyDollars': json['pricePerExtraMonthlyDollars'] == null ? undefined : json['pricePerExtraMonthlyDollars'],
97
+ };
98
+ }
99
+
100
+ export function NamedSnapshotAllowanceToJSON(json: any): NamedSnapshotAllowance {
101
+ return NamedSnapshotAllowanceToJSONTyped(json, false);
102
+ }
103
+
104
+ export function NamedSnapshotAllowanceToJSONTyped(value?: NamedSnapshotAllowance | null, ignoreDiscriminator: boolean = false): any {
105
+ if (value == null) {
106
+ return value;
107
+ }
108
+
109
+ return {
110
+
111
+ 'org': value['org'],
112
+ 'orgName': value['orgName'],
113
+ 'free': value['free'],
114
+ 'used': value['used'],
115
+ 'extra': value['extra'],
116
+ 'extraMonthlyDollars': value['extraMonthlyDollars'],
117
+ 'extraDailyDollars': value['extraDailyDollars'],
118
+ 'pricePerExtraMonthlyDollars': value['pricePerExtraMonthlyDollars'],
119
+ };
120
+ }
121
+
@@ -13,6 +13,13 @@
13
13
  */
14
14
 
15
15
  import { mapValues } from '../runtime';
16
+ import type { NamedSnapshotAllowance } from './NamedSnapshotAllowance';
17
+ import {
18
+ NamedSnapshotAllowanceFromJSON,
19
+ NamedSnapshotAllowanceFromJSONTyped,
20
+ NamedSnapshotAllowanceToJSON,
21
+ NamedSnapshotAllowanceToJSONTyped,
22
+ } from './NamedSnapshotAllowance';
16
23
  import type { NamedSnapshot } from './NamedSnapshot';
17
24
  import {
18
25
  NamedSnapshotFromJSON,
@@ -45,6 +52,12 @@ export interface NamedSnapshotListResponse {
45
52
  * @memberof NamedSnapshotListResponse
46
53
  */
47
54
  snapshots: Array<NamedSnapshot>;
55
+ /**
56
+ *
57
+ * @type {NamedSnapshotAllowance}
58
+ * @memberof NamedSnapshotListResponse
59
+ */
60
+ allowance?: NamedSnapshotAllowance;
48
61
  }
49
62
 
50
63
 
@@ -80,6 +93,7 @@ export function NamedSnapshotListResponseFromJSONTyped(json: any, ignoreDiscrimi
80
93
  'ok': json['ok'],
81
94
  'type': json['type'],
82
95
  'snapshots': ((json['snapshots'] as Array<any>).map(NamedSnapshotFromJSON)),
96
+ 'allowance': json['allowance'] == null ? undefined : NamedSnapshotAllowanceFromJSON(json['allowance']),
83
97
  };
84
98
  }
85
99
 
@@ -97,6 +111,7 @@ export function NamedSnapshotListResponseToJSONTyped(value?: NamedSnapshotListRe
97
111
  'ok': value['ok'],
98
112
  'type': value['type'],
99
113
  'snapshots': ((value['snapshots'] as Array<any>).map(NamedSnapshotToJSON)),
114
+ 'allowance': NamedSnapshotAllowanceToJSON(value['allowance']),
100
115
  };
101
116
  }
102
117
 
@@ -44,6 +44,12 @@ export interface PromptRequest {
44
44
  * @memberof PromptRequest
45
45
  */
46
46
  reasoningEffort?: string | null;
47
+ /**
48
+ * Optional. `true` runs this prompt in fast mode. The model stays the same and gives output faster. The provider bills fast mode at its higher fast rate. Omit to use the choice saved on the Agents dashboard for that model. `false` forces standard speed. Only models with `fastMode` set to `true` in `GET /provider-models` accept `true`. Other models return 400 `fast_mode_not_supported`.
49
+ * @type {boolean}
50
+ * @memberof PromptRequest
51
+ */
52
+ fast?: boolean | null;
47
53
  /**
48
54
  * Start a NEW conversation on the sandbox (runs in parallel with any existing ones) instead of continuing the most-recently-active one. Mutually exclusive with `conversationId`.
49
55
  * @type {boolean}
@@ -104,6 +110,7 @@ export function PromptRequestFromJSONTyped(json: any, ignoreDiscriminator: boole
104
110
  'provider': json['provider'],
105
111
  'model': json['model'] == null ? undefined : json['model'],
106
112
  'reasoningEffort': json['reasoningEffort'] == null ? undefined : json['reasoningEffort'],
113
+ 'fast': json['fast'] == null ? undefined : json['fast'],
107
114
  '_new': json['new'] == null ? undefined : json['new'],
108
115
  'conversationId': json['conversationId'] == null ? undefined : json['conversationId'],
109
116
  'prompt': json['prompt'],
@@ -124,6 +131,7 @@ export function PromptRequestToJSONTyped(value?: PromptRequest | null, ignoreDis
124
131
  'provider': value['provider'],
125
132
  'model': value['model'],
126
133
  'reasoningEffort': value['reasoningEffort'],
134
+ 'fast': value['fast'],
127
135
  'new': value['_new'],
128
136
  'conversationId': value['conversationId'],
129
137
  'prompt': value['prompt'],
@@ -87,6 +87,12 @@ export interface PromptResponse {
87
87
  * @memberof PromptResponse
88
88
  */
89
89
  reasoningEffort?: string | null;
90
+ /**
91
+ * The prompt runs in fast mode.
92
+ * @type {boolean}
93
+ * @memberof PromptResponse
94
+ */
95
+ fast?: boolean;
90
96
  }
91
97
 
92
98
 
@@ -141,6 +147,7 @@ export function PromptResponseFromJSONTyped(json: any, ignoreDiscriminator: bool
141
147
  'provider': json['provider'],
142
148
  'model': json['model'] == null ? undefined : json['model'],
143
149
  'reasoningEffort': json['reasoningEffort'] == null ? undefined : json['reasoningEffort'],
150
+ 'fast': json['fast'] == null ? undefined : json['fast'],
144
151
  };
145
152
  }
146
153
 
@@ -165,6 +172,7 @@ export function PromptResponseToJSONTyped(value?: PromptResponse | null, ignoreD
165
172
  'provider': value['provider'],
166
173
  'model': value['model'],
167
174
  'reasoningEffort': value['reasoningEffort'],
175
+ 'fast': value['fast'],
168
176
  };
169
177
  }
170
178
 
@@ -67,6 +67,12 @@ export interface PromptRun {
67
67
  * @memberof PromptRun
68
68
  */
69
69
  reasoningEffort?: string | null;
70
+ /**
71
+ * The prompt runs in fast mode. `null` means no speed is set yet. The prompt waits without a speed choice, or it ended without running (`done` is true). The speed is set when the prompt starts, for the model that runs.
72
+ * @type {boolean}
73
+ * @memberof PromptRun
74
+ */
75
+ fast?: boolean | null;
70
76
  /**
71
77
  * The conversation this prompt ran in. A Sandbox runs many conversations in parallel; see [Integrated agents](/integrated-agents).
72
78
  * @type {string}
@@ -120,6 +126,7 @@ export function PromptRunFromJSONTyped(json: any, ignoreDiscriminator: boolean):
120
126
  'createdAt': json['createdAt'] == null ? undefined : (new Date(json['createdAt'])),
121
127
  'model': json['model'] == null ? undefined : json['model'],
122
128
  'reasoningEffort': json['reasoningEffort'] == null ? undefined : json['reasoningEffort'],
129
+ 'fast': json['fast'] == null ? undefined : json['fast'],
123
130
  'conversationId': json['conversationId'] == null ? undefined : json['conversationId'],
124
131
  };
125
132
  }
@@ -143,6 +150,7 @@ export function PromptRunToJSONTyped(value?: PromptRun | null, ignoreDiscriminat
143
150
  'createdAt': value['createdAt'] == null ? value['createdAt'] : value['createdAt'].toISOString(),
144
151
  'model': value['model'],
145
152
  'reasoningEffort': value['reasoningEffort'],
153
+ 'fast': value['fast'],
146
154
  'conversationId': value['conversationId'],
147
155
  };
148
156
  }
@@ -177,6 +177,36 @@ export interface Sandbox {
177
177
  * @memberof Sandbox
178
178
  */
179
179
  team?: SandboxTeam;
180
+ /**
181
+ * Display name (or email) of the person who created the sandbox. Organization members see every sandbox the organization pays for, so this says whose it is.
182
+ * @type {string}
183
+ * @memberof Sandbox
184
+ */
185
+ createdBy?: string | null;
186
+ /**
187
+ * Account id of the person who created the sandbox.
188
+ * @type {string}
189
+ * @memberof Sandbox
190
+ */
191
+ createdById?: string | null;
192
+ /**
193
+ * What you may do with this sandbox. `owner`: you created it. `use`: a teammate's organization sandbox that is `noEnv` (created with it, or shared and restarted), 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`).
194
+ * @type {SandboxAccessEnum}
195
+ * @memberof Sandbox
196
+ */
197
+ access?: SandboxAccessEnum;
198
+ /**
199
+ * True while the sandbox still holds its creator's personal logins (GitHub token, model logins, secrets). Other members can only see such a sandbox.
200
+ * @type {boolean}
201
+ * @memberof Sandbox
202
+ */
203
+ holdsCreatorLogins?: boolean;
204
+ /**
205
+ * 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.
206
+ * @type {boolean}
207
+ * @memberof Sandbox
208
+ */
209
+ wipePendingUntilRestart?: boolean;
180
210
  /**
181
211
  * The sandbox's stable three-word subdomain slug (e.g. "frazil-pneuma-rallye"), or null before one is assigned.
182
212
  * @type {string}
@@ -268,6 +298,16 @@ export const SandboxMachineProviderEnum = {
268
298
  } as const;
269
299
  export type SandboxMachineProviderEnum = typeof SandboxMachineProviderEnum[keyof typeof SandboxMachineProviderEnum];
270
300
 
301
+ /**
302
+ * @export
303
+ */
304
+ export const SandboxAccessEnum = {
305
+ Owner: 'owner',
306
+ Use: 'use',
307
+ View: 'view'
308
+ } as const;
309
+ export type SandboxAccessEnum = typeof SandboxAccessEnum[keyof typeof SandboxAccessEnum];
310
+
271
311
  /**
272
312
  * @export
273
313
  */
@@ -339,6 +379,11 @@ export function SandboxFromJSONTyped(json: any, ignoreDiscriminator: boolean): S
339
379
  'snapshotCompletedAt': json['snapshotCompletedAt'] == null ? undefined : (new Date(json['snapshotCompletedAt'])),
340
380
  'snapshotVerifiedAt': json['snapshotVerifiedAt'] == null ? undefined : (new Date(json['snapshotVerifiedAt'])),
341
381
  'team': json['team'] == null ? undefined : SandboxTeamFromJSON(json['team']),
382
+ 'createdBy': json['createdBy'] == null ? undefined : json['createdBy'],
383
+ 'createdById': json['createdById'] == null ? undefined : json['createdById'],
384
+ 'access': json['access'] == null ? undefined : json['access'],
385
+ 'holdsCreatorLogins': json['holdsCreatorLogins'] == null ? undefined : json['holdsCreatorLogins'],
386
+ 'wipePendingUntilRestart': json['wipePendingUntilRestart'] == null ? undefined : json['wipePendingUntilRestart'],
342
387
  'subdomain': json['subdomain'] == null ? undefined : json['subdomain'],
343
388
  'lastSnapshotAttemptAt': json['lastSnapshotAttemptAt'] == null ? undefined : (new Date(json['lastSnapshotAttemptAt'])),
344
389
  'lastSnapshotStatus': json['lastSnapshotStatus'] == null ? undefined : json['lastSnapshotStatus'],
@@ -385,6 +430,11 @@ export function SandboxToJSONTyped(value?: Sandbox | null, ignoreDiscriminator:
385
430
  'snapshotCompletedAt': value['snapshotCompletedAt'] == null ? value['snapshotCompletedAt'] : value['snapshotCompletedAt'].toISOString(),
386
431
  'snapshotVerifiedAt': value['snapshotVerifiedAt'] == null ? value['snapshotVerifiedAt'] : value['snapshotVerifiedAt'].toISOString(),
387
432
  'team': SandboxTeamToJSON(value['team']),
433
+ 'createdBy': value['createdBy'],
434
+ 'createdById': value['createdById'],
435
+ 'access': value['access'],
436
+ 'holdsCreatorLogins': value['holdsCreatorLogins'],
437
+ 'wipePendingUntilRestart': value['wipePendingUntilRestart'],
388
438
  'subdomain': value['subdomain'],
389
439
  'lastSnapshotAttemptAt': value['lastSnapshotAttemptAt'] == null ? value['lastSnapshotAttemptAt'] : value['lastSnapshotAttemptAt'].toISOString(),
390
440
  'lastSnapshotStatus': value['lastSnapshotStatus'],
@@ -0,0 +1,89 @@
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
+ import type { Sandbox } from './Sandbox';
17
+ import {
18
+ SandboxFromJSON,
19
+ SandboxFromJSONTyped,
20
+ SandboxToJSON,
21
+ SandboxToJSONTyped,
22
+ } from './Sandbox';
23
+
24
+ /**
25
+ *
26
+ * @export
27
+ * @interface Share200Response
28
+ */
29
+ export interface Share200Response {
30
+ /**
31
+ *
32
+ * @type {Sandbox}
33
+ * @memberof Share200Response
34
+ */
35
+ sandbox?: Sandbox;
36
+ /**
37
+ * True when the sandbox was running: what runs on it still holds your logins in memory, so it stays `view` for the organization until you stop and resume it.
38
+ * @type {boolean}
39
+ * @memberof Share200Response
40
+ */
41
+ restartRequired?: boolean;
42
+ /**
43
+ *
44
+ * @type {string}
45
+ * @memberof Share200Response
46
+ */
47
+ message?: string;
48
+ }
49
+
50
+ /**
51
+ * Check if a given object implements the Share200Response interface.
52
+ */
53
+ export function instanceOfShare200Response(value: object): value is Share200Response {
54
+ return true;
55
+ }
56
+
57
+ export function Share200ResponseFromJSON(json: any): Share200Response {
58
+ return Share200ResponseFromJSONTyped(json, false);
59
+ }
60
+
61
+ export function Share200ResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): Share200Response {
62
+ if (json == null) {
63
+ return json;
64
+ }
65
+ return {
66
+
67
+ 'sandbox': json['sandbox'] == null ? undefined : SandboxFromJSON(json['sandbox']),
68
+ 'restartRequired': json['restartRequired'] == null ? undefined : json['restartRequired'],
69
+ 'message': json['message'] == null ? undefined : json['message'],
70
+ };
71
+ }
72
+
73
+ export function Share200ResponseToJSON(json: any): Share200Response {
74
+ return Share200ResponseToJSONTyped(json, false);
75
+ }
76
+
77
+ export function Share200ResponseToJSONTyped(value?: Share200Response | null, ignoreDiscriminator: boolean = false): any {
78
+ if (value == null) {
79
+ return value;
80
+ }
81
+
82
+ return {
83
+
84
+ 'sandbox': SandboxToJSON(value['sandbox']),
85
+ 'restartRequired': value['restartRequired'],
86
+ 'message': value['message'],
87
+ };
88
+ }
89
+
@@ -59,6 +59,7 @@ export * from './LimitsResponse';
59
59
  export * from './MeResponse';
60
60
  export * from './MeResponseAllOfUser';
61
61
  export * from './NamedSnapshot';
62
+ export * from './NamedSnapshotAllowance';
62
63
  export * from './NamedSnapshotDeletedResponse';
63
64
  export * from './NamedSnapshotInfoResponse';
64
65
  export * from './NamedSnapshotListResponse';
@@ -101,6 +102,7 @@ export * from './SecretsUpdateRequest';
101
102
  export * from './SelectedRepository';
102
103
  export * from './SetEnvironmentSecretFileRequest';
103
104
  export * from './SetEnvironmentVarRequest';
105
+ export * from './Share200Response';
104
106
  export * from './SnapshotChunk';
105
107
  export * from './SnapshotDownloadResponse';
106
108
  export * from './SnapshotDownloadResponseAllOfInventory';