@boatdev/sdk 1.9.4 → 1.9.6

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 (169) hide show
  1. package/.openapi-generator/FILES +44 -0
  2. package/dist/apis/BoatApi.d.ts +305 -7
  3. package/dist/apis/BoatApi.js +764 -15
  4. package/dist/esm/apis/BoatApi.d.ts +305 -7
  5. package/dist/esm/apis/BoatApi.js +764 -15
  6. package/dist/esm/models/AccountAiUsageResponse.d.ts +83 -0
  7. package/dist/esm/models/AccountAiUsageResponse.js +78 -0
  8. package/dist/esm/models/AiProxySettings.d.ts +81 -0
  9. package/dist/esm/models/AiProxySettings.js +76 -0
  10. package/dist/esm/models/AiProxySettingsAllOfPricing.d.ts +38 -0
  11. package/dist/esm/models/AiProxySettingsAllOfPricing.js +47 -0
  12. package/dist/esm/models/AiUsageRow.d.ts +80 -0
  13. package/dist/esm/models/AiUsageRow.js +75 -0
  14. package/dist/esm/models/AiUsageTotals.d.ts +62 -0
  15. package/dist/esm/models/AiUsageTotals.js +63 -0
  16. package/dist/esm/models/CreateCredentialProfileRequest.d.ts +44 -0
  17. package/dist/esm/models/CreateCredentialProfileRequest.js +47 -0
  18. package/dist/esm/models/CredentialId.d.ts +36 -0
  19. package/dist/esm/models/CredentialId.js +54 -0
  20. package/dist/esm/models/CredentialProfile.d.ts +82 -0
  21. package/dist/esm/models/CredentialProfile.js +77 -0
  22. package/dist/esm/models/CredentialProfileDeletedResponse.d.ts +44 -0
  23. package/dist/esm/models/CredentialProfileDeletedResponse.js +51 -0
  24. package/dist/esm/models/CredentialProfileListResponse.d.ts +45 -0
  25. package/dist/esm/models/CredentialProfileListResponse.js +52 -0
  26. package/dist/esm/models/CredentialProfileOwner.d.ts +58 -0
  27. package/dist/esm/models/CredentialProfileOwner.js +62 -0
  28. package/dist/esm/models/CredentialProfileResponse.d.ts +51 -0
  29. package/dist/esm/models/CredentialProfileResponse.js +56 -0
  30. package/dist/esm/models/DeletionOperation.d.ts +1 -1
  31. package/dist/esm/models/FileUrlRequest.d.ts +38 -0
  32. package/dist/esm/models/FileUrlRequest.js +45 -0
  33. package/dist/esm/models/FileUrlResponse.d.ts +78 -0
  34. package/dist/esm/models/FileUrlResponse.js +77 -0
  35. package/dist/esm/models/ProcessListResponse.d.ts +1 -1
  36. package/dist/esm/models/SandboxAiAccessResponse.d.ts +56 -0
  37. package/dist/esm/models/SandboxAiAccessResponse.js +59 -0
  38. package/dist/esm/models/SandboxAiUsage.d.ts +64 -0
  39. package/dist/esm/models/SandboxAiUsage.js +65 -0
  40. package/dist/esm/models/SandboxAiUsageResponse.d.ts +88 -0
  41. package/dist/esm/models/SandboxAiUsageResponse.js +81 -0
  42. package/dist/esm/models/SandboxEnvironment.d.ts +13 -1
  43. package/dist/esm/models/SandboxEnvironment.js +4 -0
  44. package/dist/esm/models/SetCredentialKeyRequest.d.ts +32 -0
  45. package/dist/esm/models/SetCredentialKeyRequest.js +43 -0
  46. package/dist/esm/models/SetCustomApiRequest.d.ts +38 -0
  47. package/dist/esm/models/SetCustomApiRequest.js +47 -0
  48. package/dist/esm/models/SetSandboxAiAccessRequest.d.ts +32 -0
  49. package/dist/esm/models/SetSandboxAiAccessRequest.js +43 -0
  50. package/dist/esm/models/SnapshotSummary.d.ts +14 -0
  51. package/dist/esm/models/SnapshotSummary.js +9 -0
  52. package/dist/esm/models/UpdateAiProxyRequest.d.ts +32 -0
  53. package/dist/esm/models/UpdateAiProxyRequest.js +43 -0
  54. package/dist/esm/models/UpdateCredentialProfileRequest.d.ts +38 -0
  55. package/dist/esm/models/UpdateCredentialProfileRequest.js +43 -0
  56. package/dist/esm/models/UpdateSandboxEnvironmentRequest.d.ts +12 -0
  57. package/dist/esm/models/UpdateSandboxEnvironmentRequest.js +4 -0
  58. package/dist/esm/models/index.d.ts +22 -0
  59. package/dist/esm/models/index.js +22 -0
  60. package/dist/models/AccountAiUsageResponse.d.ts +83 -0
  61. package/dist/models/AccountAiUsageResponse.js +85 -0
  62. package/dist/models/AiProxySettings.d.ts +81 -0
  63. package/dist/models/AiProxySettings.js +83 -0
  64. package/dist/models/AiProxySettingsAllOfPricing.d.ts +38 -0
  65. package/dist/models/AiProxySettingsAllOfPricing.js +54 -0
  66. package/dist/models/AiUsageRow.d.ts +80 -0
  67. package/dist/models/AiUsageRow.js +82 -0
  68. package/dist/models/AiUsageTotals.d.ts +62 -0
  69. package/dist/models/AiUsageTotals.js +70 -0
  70. package/dist/models/CreateCredentialProfileRequest.d.ts +44 -0
  71. package/dist/models/CreateCredentialProfileRequest.js +54 -0
  72. package/dist/models/CredentialId.d.ts +36 -0
  73. package/dist/models/CredentialId.js +62 -0
  74. package/dist/models/CredentialProfile.d.ts +82 -0
  75. package/dist/models/CredentialProfile.js +84 -0
  76. package/dist/models/CredentialProfileDeletedResponse.d.ts +44 -0
  77. package/dist/models/CredentialProfileDeletedResponse.js +58 -0
  78. package/dist/models/CredentialProfileListResponse.d.ts +45 -0
  79. package/dist/models/CredentialProfileListResponse.js +59 -0
  80. package/dist/models/CredentialProfileOwner.d.ts +58 -0
  81. package/dist/models/CredentialProfileOwner.js +70 -0
  82. package/dist/models/CredentialProfileResponse.d.ts +51 -0
  83. package/dist/models/CredentialProfileResponse.js +63 -0
  84. package/dist/models/DeletionOperation.d.ts +1 -1
  85. package/dist/models/FileUrlRequest.d.ts +38 -0
  86. package/dist/models/FileUrlRequest.js +52 -0
  87. package/dist/models/FileUrlResponse.d.ts +78 -0
  88. package/dist/models/FileUrlResponse.js +85 -0
  89. package/dist/models/ProcessListResponse.d.ts +1 -1
  90. package/dist/models/SandboxAiAccessResponse.d.ts +56 -0
  91. package/dist/models/SandboxAiAccessResponse.js +66 -0
  92. package/dist/models/SandboxAiUsage.d.ts +64 -0
  93. package/dist/models/SandboxAiUsage.js +72 -0
  94. package/dist/models/SandboxAiUsageResponse.d.ts +88 -0
  95. package/dist/models/SandboxAiUsageResponse.js +88 -0
  96. package/dist/models/SandboxEnvironment.d.ts +13 -1
  97. package/dist/models/SandboxEnvironment.js +4 -0
  98. package/dist/models/SetCredentialKeyRequest.d.ts +32 -0
  99. package/dist/models/SetCredentialKeyRequest.js +50 -0
  100. package/dist/models/SetCustomApiRequest.d.ts +38 -0
  101. package/dist/models/SetCustomApiRequest.js +54 -0
  102. package/dist/models/SetSandboxAiAccessRequest.d.ts +32 -0
  103. package/dist/models/SetSandboxAiAccessRequest.js +50 -0
  104. package/dist/models/SnapshotSummary.d.ts +14 -0
  105. package/dist/models/SnapshotSummary.js +10 -1
  106. package/dist/models/UpdateAiProxyRequest.d.ts +32 -0
  107. package/dist/models/UpdateAiProxyRequest.js +50 -0
  108. package/dist/models/UpdateCredentialProfileRequest.d.ts +38 -0
  109. package/dist/models/UpdateCredentialProfileRequest.js +50 -0
  110. package/dist/models/UpdateSandboxEnvironmentRequest.d.ts +12 -0
  111. package/dist/models/UpdateSandboxEnvironmentRequest.js +4 -0
  112. package/dist/models/index.d.ts +22 -0
  113. package/dist/models/index.js +22 -0
  114. package/docs/AccountAiUsageResponse.md +48 -0
  115. package/docs/AiProxySettings.md +48 -0
  116. package/docs/AiProxySettingsAllOfPricing.md +34 -0
  117. package/docs/AiUsageRow.md +48 -0
  118. package/docs/AiUsageTotals.md +43 -0
  119. package/docs/BoatApi.md +1568 -359
  120. package/docs/CreateCredentialProfileRequest.md +36 -0
  121. package/docs/CredentialId.md +31 -0
  122. package/docs/CredentialProfile.md +49 -0
  123. package/docs/CredentialProfileDeletedResponse.md +36 -0
  124. package/docs/CredentialProfileListResponse.md +36 -0
  125. package/docs/CredentialProfileOwner.md +38 -0
  126. package/docs/CredentialProfileResponse.md +38 -0
  127. package/docs/FileUrlRequest.md +34 -0
  128. package/docs/FileUrlResponse.md +42 -0
  129. package/docs/SandboxAiAccessResponse.md +40 -0
  130. package/docs/SandboxAiUsage.md +42 -0
  131. package/docs/SandboxAiUsageResponse.md +50 -0
  132. package/docs/SandboxEnvironment.md +4 -0
  133. package/docs/SetCredentialKeyRequest.md +32 -0
  134. package/docs/SetCustomApiRequest.md +34 -0
  135. package/docs/SetSandboxAiAccessRequest.md +32 -0
  136. package/docs/SnapshotSummary.md +2 -0
  137. package/docs/UpdateAiProxyRequest.md +32 -0
  138. package/docs/UpdateCredentialProfileRequest.md +34 -0
  139. package/docs/UpdateSandboxEnvironmentRequest.md +4 -0
  140. package/package.json +1 -1
  141. package/src/apis/BoatApi.ts +1257 -105
  142. package/src/models/AccountAiUsageResponse.ts +160 -0
  143. package/src/models/AiProxySettings.ts +146 -0
  144. package/src/models/AiProxySettingsAllOfPricing.ts +75 -0
  145. package/src/models/AiUsageRow.ts +138 -0
  146. package/src/models/AiUsageTotals.ts +111 -0
  147. package/src/models/CreateCredentialProfileRequest.ts +82 -0
  148. package/src/models/CredentialId.ts +64 -0
  149. package/src/models/CredentialProfile.ts +153 -0
  150. package/src/models/CredentialProfileDeletedResponse.ts +84 -0
  151. package/src/models/CredentialProfileListResponse.ts +92 -0
  152. package/src/models/CredentialProfileOwner.ts +104 -0
  153. package/src/models/CredentialProfileResponse.ts +101 -0
  154. package/src/models/DeletionOperation.ts +1 -1
  155. package/src/models/FileUrlRequest.ts +74 -0
  156. package/src/models/FileUrlResponse.ts +131 -0
  157. package/src/models/ProcessListResponse.ts +1 -1
  158. package/src/models/SandboxAiAccessResponse.ts +102 -0
  159. package/src/models/SandboxAiUsage.ts +126 -0
  160. package/src/models/SandboxAiUsageResponse.ts +162 -0
  161. package/src/models/SandboxEnvironment.ts +17 -1
  162. package/src/models/SetCredentialKeyRequest.ts +66 -0
  163. package/src/models/SetCustomApiRequest.ts +75 -0
  164. package/src/models/SetSandboxAiAccessRequest.ts +66 -0
  165. package/src/models/SnapshotSummary.ts +17 -0
  166. package/src/models/UpdateAiProxyRequest.ts +66 -0
  167. package/src/models/UpdateCredentialProfileRequest.ts +73 -0
  168. package/src/models/UpdateSandboxEnvironmentRequest.ts +16 -0
  169. package/src/models/index.ts +22 -0
@@ -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
+ *
18
+ * @export
19
+ * @interface FileUrlRequest
20
+ */
21
+ export interface FileUrlRequest {
22
+ /**
23
+ * Absolute path, or path relative to the sandbox work directory (/home/user). It must resolve under /home/user or /tmp.
24
+ * @type {string}
25
+ * @memberof FileUrlRequest
26
+ */
27
+ path: string;
28
+ /**
29
+ * How long the URL stays valid.
30
+ * @type {number}
31
+ * @memberof FileUrlRequest
32
+ */
33
+ ttlSeconds?: number;
34
+ }
35
+
36
+ /**
37
+ * Check if a given object implements the FileUrlRequest interface.
38
+ */
39
+ export function instanceOfFileUrlRequest(value: object): value is FileUrlRequest {
40
+ if (!('path' in value) || value['path'] === undefined) return false;
41
+ return true;
42
+ }
43
+
44
+ export function FileUrlRequestFromJSON(json: any): FileUrlRequest {
45
+ return FileUrlRequestFromJSONTyped(json, false);
46
+ }
47
+
48
+ export function FileUrlRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): FileUrlRequest {
49
+ if (json == null) {
50
+ return json;
51
+ }
52
+ return {
53
+
54
+ 'path': json['path'],
55
+ 'ttlSeconds': json['ttlSeconds'] == null ? undefined : json['ttlSeconds'],
56
+ };
57
+ }
58
+
59
+ export function FileUrlRequestToJSON(json: any): FileUrlRequest {
60
+ return FileUrlRequestToJSONTyped(json, false);
61
+ }
62
+
63
+ export function FileUrlRequestToJSONTyped(value?: FileUrlRequest | null, ignoreDiscriminator: boolean = false): any {
64
+ if (value == null) {
65
+ return value;
66
+ }
67
+
68
+ return {
69
+
70
+ 'path': value['path'],
71
+ 'ttlSeconds': value['ttlSeconds'],
72
+ };
73
+ }
74
+
@@ -0,0 +1,131 @@
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
+ *
18
+ * @export
19
+ * @interface FileUrlResponse
20
+ */
21
+ export interface FileUrlResponse {
22
+ /**
23
+ *
24
+ * @type {boolean}
25
+ * @memberof FileUrlResponse
26
+ */
27
+ ok: boolean;
28
+ /**
29
+ *
30
+ * @type {FileUrlResponseTypeEnum}
31
+ * @memberof FileUrlResponse
32
+ */
33
+ type: FileUrlResponseTypeEnum;
34
+ /**
35
+ * The signed URL. Send the request straight to it; it needs no Authorization header.
36
+ * @type {string}
37
+ * @memberof FileUrlResponse
38
+ */
39
+ url: string;
40
+ /**
41
+ * GET downloads the file. PUT uploads the request body as the file.
42
+ * @type {FileUrlResponseMethodEnum}
43
+ * @memberof FileUrlResponse
44
+ */
45
+ method: FileUrlResponseMethodEnum;
46
+ /**
47
+ * The canonical path the URL is bound to.
48
+ * @type {string}
49
+ * @memberof FileUrlResponse
50
+ */
51
+ path: string;
52
+ /**
53
+ *
54
+ * @type {Date}
55
+ * @memberof FileUrlResponse
56
+ */
57
+ expiresAt: Date;
58
+ }
59
+
60
+
61
+ /**
62
+ * @export
63
+ */
64
+ export const FileUrlResponseTypeEnum = {
65
+ FileDownloadUrl: 'file.download_url',
66
+ FileUploadUrl: 'file.upload_url'
67
+ } as const;
68
+ export type FileUrlResponseTypeEnum = typeof FileUrlResponseTypeEnum[keyof typeof FileUrlResponseTypeEnum];
69
+
70
+ /**
71
+ * @export
72
+ */
73
+ export const FileUrlResponseMethodEnum = {
74
+ Get: 'GET',
75
+ Put: 'PUT'
76
+ } as const;
77
+ export type FileUrlResponseMethodEnum = typeof FileUrlResponseMethodEnum[keyof typeof FileUrlResponseMethodEnum];
78
+
79
+
80
+ /**
81
+ * Check if a given object implements the FileUrlResponse interface.
82
+ */
83
+ export function instanceOfFileUrlResponse(value: object): value is FileUrlResponse {
84
+ if (!('ok' in value) || value['ok'] === undefined) return false;
85
+ if (!('type' in value) || value['type'] === undefined) return false;
86
+ if (!('url' in value) || value['url'] === undefined) return false;
87
+ if (!('method' in value) || value['method'] === undefined) return false;
88
+ if (!('path' in value) || value['path'] === undefined) return false;
89
+ if (!('expiresAt' in value) || value['expiresAt'] === undefined) return false;
90
+ return true;
91
+ }
92
+
93
+ export function FileUrlResponseFromJSON(json: any): FileUrlResponse {
94
+ return FileUrlResponseFromJSONTyped(json, false);
95
+ }
96
+
97
+ export function FileUrlResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): FileUrlResponse {
98
+ if (json == null) {
99
+ return json;
100
+ }
101
+ return {
102
+
103
+ 'ok': json['ok'],
104
+ 'type': json['type'],
105
+ 'url': json['url'],
106
+ 'method': json['method'],
107
+ 'path': json['path'],
108
+ 'expiresAt': (new Date(json['expiresAt'])),
109
+ };
110
+ }
111
+
112
+ export function FileUrlResponseToJSON(json: any): FileUrlResponse {
113
+ return FileUrlResponseToJSONTyped(json, false);
114
+ }
115
+
116
+ export function FileUrlResponseToJSONTyped(value?: FileUrlResponse | null, ignoreDiscriminator: boolean = false): any {
117
+ if (value == null) {
118
+ return value;
119
+ }
120
+
121
+ return {
122
+
123
+ 'ok': value['ok'],
124
+ 'type': value['type'],
125
+ 'url': value['url'],
126
+ 'method': value['method'],
127
+ 'path': value['path'],
128
+ 'expiresAt': value['expiresAt'].toISOString(),
129
+ };
130
+ }
131
+
@@ -52,7 +52,7 @@ export interface ProcessListResponse {
52
52
  */
53
53
  sampledAt: Date | null;
54
54
  /**
55
- * Processes on the sandbox. The list holds at most 500
55
+ * Processes on the sandbox. The list holds at most 500, busiest first.
56
56
  * @type {number}
57
57
  * @memberof ProcessListResponse
58
58
  */
@@ -0,0 +1,102 @@
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
+ *
18
+ * @export
19
+ * @interface SandboxAiAccessResponse
20
+ */
21
+ export interface SandboxAiAccessResponse {
22
+ /**
23
+ *
24
+ * @type {boolean}
25
+ * @memberof SandboxAiAccessResponse
26
+ */
27
+ ok: boolean;
28
+ /**
29
+ * Stable success envelope discriminator added by v1.
30
+ * @type {string}
31
+ * @memberof SandboxAiAccessResponse
32
+ */
33
+ type: string;
34
+ /**
35
+ *
36
+ * @type {boolean}
37
+ * @memberof SandboxAiAccessResponse
38
+ */
39
+ success: boolean;
40
+ /**
41
+ *
42
+ * @type {string}
43
+ * @memberof SandboxAiAccessResponse
44
+ */
45
+ sandboxId: string;
46
+ /**
47
+ *
48
+ * @type {boolean}
49
+ * @memberof SandboxAiAccessResponse
50
+ */
51
+ blocked: boolean;
52
+ }
53
+
54
+ /**
55
+ * Check if a given object implements the SandboxAiAccessResponse interface.
56
+ */
57
+ export function instanceOfSandboxAiAccessResponse(value: object): value is SandboxAiAccessResponse {
58
+ if (!('ok' in value) || value['ok'] === undefined) return false;
59
+ if (!('type' in value) || value['type'] === undefined) return false;
60
+ if (!('success' in value) || value['success'] === undefined) return false;
61
+ if (!('sandboxId' in value) || value['sandboxId'] === undefined) return false;
62
+ if (!('blocked' in value) || value['blocked'] === undefined) return false;
63
+ return true;
64
+ }
65
+
66
+ export function SandboxAiAccessResponseFromJSON(json: any): SandboxAiAccessResponse {
67
+ return SandboxAiAccessResponseFromJSONTyped(json, false);
68
+ }
69
+
70
+ export function SandboxAiAccessResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): SandboxAiAccessResponse {
71
+ if (json == null) {
72
+ return json;
73
+ }
74
+ return {
75
+
76
+ 'ok': json['ok'],
77
+ 'type': json['type'],
78
+ 'success': json['success'],
79
+ 'sandboxId': json['sandboxId'],
80
+ 'blocked': json['blocked'],
81
+ };
82
+ }
83
+
84
+ export function SandboxAiAccessResponseToJSON(json: any): SandboxAiAccessResponse {
85
+ return SandboxAiAccessResponseToJSONTyped(json, false);
86
+ }
87
+
88
+ export function SandboxAiAccessResponseToJSONTyped(value?: SandboxAiAccessResponse | null, ignoreDiscriminator: boolean = false): any {
89
+ if (value == null) {
90
+ return value;
91
+ }
92
+
93
+ return {
94
+
95
+ 'ok': value['ok'],
96
+ 'type': value['type'],
97
+ 'success': value['success'],
98
+ 'sandboxId': value['sandboxId'],
99
+ 'blocked': value['blocked'],
100
+ };
101
+ }
102
+
@@ -0,0 +1,126 @@
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 { AiUsageRow } from './AiUsageRow';
17
+ import {
18
+ AiUsageRowFromJSON,
19
+ AiUsageRowFromJSONTyped,
20
+ AiUsageRowToJSON,
21
+ AiUsageRowToJSONTyped,
22
+ } from './AiUsageRow';
23
+ import type { AiUsageTotals } from './AiUsageTotals';
24
+ import {
25
+ AiUsageTotalsFromJSON,
26
+ AiUsageTotalsFromJSONTyped,
27
+ AiUsageTotalsToJSON,
28
+ AiUsageTotalsToJSONTyped,
29
+ } from './AiUsageTotals';
30
+
31
+ /**
32
+ *
33
+ * @export
34
+ * @interface SandboxAiUsage
35
+ */
36
+ export interface SandboxAiUsage {
37
+ /**
38
+ *
39
+ * @type {string}
40
+ * @memberof SandboxAiUsage
41
+ */
42
+ sandboxId: string | null;
43
+ /**
44
+ *
45
+ * @type {string}
46
+ * @memberof SandboxAiUsage
47
+ */
48
+ name: string | null;
49
+ /**
50
+ *
51
+ * @type {boolean}
52
+ * @memberof SandboxAiUsage
53
+ */
54
+ blocked: boolean;
55
+ /**
56
+ *
57
+ * @type {Array<AiUsageRow>}
58
+ * @memberof SandboxAiUsage
59
+ */
60
+ usage: Array<AiUsageRow>;
61
+ /**
62
+ *
63
+ * @type {AiUsageTotals}
64
+ * @memberof SandboxAiUsage
65
+ */
66
+ totals: AiUsageTotals;
67
+ /**
68
+ * Request charge for the period, at the price per 1,000 requests.
69
+ * @type {number}
70
+ * @memberof SandboxAiUsage
71
+ */
72
+ dollars: number;
73
+ }
74
+
75
+ /**
76
+ * Check if a given object implements the SandboxAiUsage interface.
77
+ */
78
+ export function instanceOfSandboxAiUsage(value: object): value is SandboxAiUsage {
79
+ if (!('sandboxId' in value) || value['sandboxId'] === undefined) return false;
80
+ if (!('name' in value) || value['name'] === undefined) return false;
81
+ if (!('blocked' in value) || value['blocked'] === undefined) return false;
82
+ if (!('usage' in value) || value['usage'] === undefined) return false;
83
+ if (!('totals' in value) || value['totals'] === undefined) return false;
84
+ if (!('dollars' in value) || value['dollars'] === undefined) return false;
85
+ return true;
86
+ }
87
+
88
+ export function SandboxAiUsageFromJSON(json: any): SandboxAiUsage {
89
+ return SandboxAiUsageFromJSONTyped(json, false);
90
+ }
91
+
92
+ export function SandboxAiUsageFromJSONTyped(json: any, ignoreDiscriminator: boolean): SandboxAiUsage {
93
+ if (json == null) {
94
+ return json;
95
+ }
96
+ return {
97
+
98
+ 'sandboxId': json['sandboxId'],
99
+ 'name': json['name'],
100
+ 'blocked': json['blocked'],
101
+ 'usage': ((json['usage'] as Array<any>).map(AiUsageRowFromJSON)),
102
+ 'totals': AiUsageTotalsFromJSON(json['totals']),
103
+ 'dollars': json['dollars'],
104
+ };
105
+ }
106
+
107
+ export function SandboxAiUsageToJSON(json: any): SandboxAiUsage {
108
+ return SandboxAiUsageToJSONTyped(json, false);
109
+ }
110
+
111
+ export function SandboxAiUsageToJSONTyped(value?: SandboxAiUsage | null, ignoreDiscriminator: boolean = false): any {
112
+ if (value == null) {
113
+ return value;
114
+ }
115
+
116
+ return {
117
+
118
+ 'sandboxId': value['sandboxId'],
119
+ 'name': value['name'],
120
+ 'blocked': value['blocked'],
121
+ 'usage': ((value['usage'] as Array<any>).map(AiUsageRowToJSON)),
122
+ 'totals': AiUsageTotalsToJSON(value['totals']),
123
+ 'dollars': value['dollars'],
124
+ };
125
+ }
126
+
@@ -0,0 +1,162 @@
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 { AiUsageRow } from './AiUsageRow';
17
+ import {
18
+ AiUsageRowFromJSON,
19
+ AiUsageRowFromJSONTyped,
20
+ AiUsageRowToJSON,
21
+ AiUsageRowToJSONTyped,
22
+ } from './AiUsageRow';
23
+ import type { AiUsageTotals } from './AiUsageTotals';
24
+ import {
25
+ AiUsageTotalsFromJSON,
26
+ AiUsageTotalsFromJSONTyped,
27
+ AiUsageTotalsToJSON,
28
+ AiUsageTotalsToJSONTyped,
29
+ } from './AiUsageTotals';
30
+
31
+ /**
32
+ *
33
+ * @export
34
+ * @interface SandboxAiUsageResponse
35
+ */
36
+ export interface SandboxAiUsageResponse {
37
+ /**
38
+ *
39
+ * @type {boolean}
40
+ * @memberof SandboxAiUsageResponse
41
+ */
42
+ ok: boolean;
43
+ /**
44
+ * Stable success envelope discriminator added by v1.
45
+ * @type {string}
46
+ * @memberof SandboxAiUsageResponse
47
+ */
48
+ type: string;
49
+ /**
50
+ *
51
+ * @type {string}
52
+ * @memberof SandboxAiUsageResponse
53
+ */
54
+ sandboxId: string;
55
+ /**
56
+ * True when the proxy refuses this sandbox's placeholders.
57
+ * @type {boolean}
58
+ * @memberof SandboxAiUsageResponse
59
+ */
60
+ blocked: boolean;
61
+ /**
62
+ * True when the sandbox holds placeholders, not real keys.
63
+ * @type {boolean}
64
+ * @memberof SandboxAiUsageResponse
65
+ */
66
+ proxied: boolean;
67
+ /**
68
+ * The profile the sandbox uses. Null means its owner's default.
69
+ * @type {string}
70
+ * @memberof SandboxAiUsageResponse
71
+ */
72
+ credentialProfileId: string | null;
73
+ /**
74
+ *
75
+ * @type {Date}
76
+ * @memberof SandboxAiUsageResponse
77
+ */
78
+ since: Date;
79
+ /**
80
+ *
81
+ * @type {Array<AiUsageRow>}
82
+ * @memberof SandboxAiUsageResponse
83
+ */
84
+ usage: Array<AiUsageRow>;
85
+ /**
86
+ *
87
+ * @type {AiUsageTotals}
88
+ * @memberof SandboxAiUsageResponse
89
+ */
90
+ totals: AiUsageTotals;
91
+ /**
92
+ *
93
+ * @type {number}
94
+ * @memberof SandboxAiUsageResponse
95
+ */
96
+ dollars: number;
97
+ }
98
+
99
+ /**
100
+ * Check if a given object implements the SandboxAiUsageResponse interface.
101
+ */
102
+ export function instanceOfSandboxAiUsageResponse(value: object): value is SandboxAiUsageResponse {
103
+ if (!('ok' in value) || value['ok'] === undefined) return false;
104
+ if (!('type' in value) || value['type'] === undefined) return false;
105
+ if (!('sandboxId' in value) || value['sandboxId'] === undefined) return false;
106
+ if (!('blocked' in value) || value['blocked'] === undefined) return false;
107
+ if (!('proxied' in value) || value['proxied'] === undefined) return false;
108
+ if (!('credentialProfileId' in value) || value['credentialProfileId'] === undefined) return false;
109
+ if (!('since' in value) || value['since'] === undefined) return false;
110
+ if (!('usage' in value) || value['usage'] === undefined) return false;
111
+ if (!('totals' in value) || value['totals'] === undefined) return false;
112
+ if (!('dollars' in value) || value['dollars'] === undefined) return false;
113
+ return true;
114
+ }
115
+
116
+ export function SandboxAiUsageResponseFromJSON(json: any): SandboxAiUsageResponse {
117
+ return SandboxAiUsageResponseFromJSONTyped(json, false);
118
+ }
119
+
120
+ export function SandboxAiUsageResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): SandboxAiUsageResponse {
121
+ if (json == null) {
122
+ return json;
123
+ }
124
+ return {
125
+
126
+ 'ok': json['ok'],
127
+ 'type': json['type'],
128
+ 'sandboxId': json['sandboxId'],
129
+ 'blocked': json['blocked'],
130
+ 'proxied': json['proxied'],
131
+ 'credentialProfileId': json['credentialProfileId'],
132
+ 'since': (new Date(json['since'])),
133
+ 'usage': ((json['usage'] as Array<any>).map(AiUsageRowFromJSON)),
134
+ 'totals': AiUsageTotalsFromJSON(json['totals']),
135
+ 'dollars': json['dollars'],
136
+ };
137
+ }
138
+
139
+ export function SandboxAiUsageResponseToJSON(json: any): SandboxAiUsageResponse {
140
+ return SandboxAiUsageResponseToJSONTyped(json, false);
141
+ }
142
+
143
+ export function SandboxAiUsageResponseToJSONTyped(value?: SandboxAiUsageResponse | null, ignoreDiscriminator: boolean = false): any {
144
+ if (value == null) {
145
+ return value;
146
+ }
147
+
148
+ return {
149
+
150
+ 'ok': value['ok'],
151
+ 'type': value['type'],
152
+ 'sandboxId': value['sandboxId'],
153
+ 'blocked': value['blocked'],
154
+ 'proxied': value['proxied'],
155
+ 'credentialProfileId': value['credentialProfileId'],
156
+ 'since': value['since'].toISOString().substring(0,10),
157
+ 'usage': ((value['usage'] as Array<any>).map(AiUsageRowToJSON)),
158
+ 'totals': AiUsageTotalsToJSON(value['totals']),
159
+ 'dollars': value['dollars'],
160
+ };
161
+ }
162
+
@@ -78,7 +78,7 @@ export interface SandboxEnvironment {
78
78
  */
79
79
  safetyAnsweredAt?: Date | null;
80
80
  /**
81
- * When true the environment passes nothing to a sandbox (repos, secrets, and all credentials withheld), overriding the fine-grained flags below. Use for sandboxes handed to third parties.
81
+ * When true the environment passes nothing to a sandbox (repos, secrets, and all credentials withheld), overriding the fine-grained flags below. Use for sandboxes handed to third parties. The one exception is `proxyAiCredentials`.
82
82
  * @type {boolean}
83
83
  * @memberof SandboxEnvironment
84
84
  */
@@ -107,6 +107,18 @@ export interface SandboxEnvironment {
107
107
  * @memberof SandboxEnvironment
108
108
  */
109
109
  passAgentsCredentials: boolean;
110
+ /**
111
+ * The AI credential profile the environment's sandboxes get. Null means the sandbox owner's default profile.
112
+ * @type {string}
113
+ * @memberof SandboxEnvironment
114
+ */
115
+ credentialProfileId?: string | null;
116
+ /**
117
+ * Only with `safeForThirdParties` true. The sandboxes still get AI credentials, as AI credentials proxy placeholders. Real keys never enter them.
118
+ * @type {boolean}
119
+ * @memberof SandboxEnvironment
120
+ */
121
+ proxyAiCredentials?: boolean;
110
122
  /**
111
123
  * The latest version's .env-style content. Treat as sensitive.
112
124
  * @type {string}
@@ -173,6 +185,8 @@ export function SandboxEnvironmentFromJSONTyped(json: any, ignoreDiscriminator:
173
185
  'passSecrets': json['passSecrets'],
174
186
  'passSandboxCredentials': json['passSandboxCredentials'],
175
187
  'passAgentsCredentials': json['passAgentsCredentials'],
188
+ 'credentialProfileId': json['credentialProfileId'] == null ? undefined : json['credentialProfileId'],
189
+ 'proxyAiCredentials': json['proxyAiCredentials'] == null ? undefined : json['proxyAiCredentials'],
176
190
  'envContents': json['envContents'],
177
191
  'secretFiles': ((json['secretFiles'] as Array<any>).map(SecretFileFromJSON)),
178
192
  'selectedRepositories': json['selectedRepositories'] == null ? undefined : ((json['selectedRepositories'] as Array<any>).map(SelectedRepositoryFromJSON)),
@@ -202,6 +216,8 @@ export function SandboxEnvironmentToJSONTyped(value?: SandboxEnvironment | null,
202
216
  'passSecrets': value['passSecrets'],
203
217
  'passSandboxCredentials': value['passSandboxCredentials'],
204
218
  'passAgentsCredentials': value['passAgentsCredentials'],
219
+ 'credentialProfileId': value['credentialProfileId'],
220
+ 'proxyAiCredentials': value['proxyAiCredentials'],
205
221
  'envContents': value['envContents'],
206
222
  'secretFiles': ((value['secretFiles'] as Array<any>).map(SecretFileToJSON)),
207
223
  'selectedRepositories': value['selectedRepositories'] == null ? undefined : ((value['selectedRepositories'] as Array<any>).map(SelectedRepositoryToJSON)),