@boatdev/sdk 1.11.0 → 1.12.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 (175) hide show
  1. package/.openapi-generator/FILES +42 -0
  2. package/dist/apis/BoatApi.d.ts +191 -14
  3. package/dist/apis/BoatApi.js +466 -14
  4. package/dist/esm/apis/BoatApi.d.ts +191 -14
  5. package/dist/esm/apis/BoatApi.js +466 -14
  6. package/dist/esm/models/CreateSandboxRequest.d.ts +35 -1
  7. package/dist/esm/models/CreateSandboxRequest.js +17 -0
  8. package/dist/esm/models/CreateSandboxRequestFilesInner.d.ts +52 -0
  9. package/dist/esm/models/CreateSandboxRequestFilesInner.js +56 -0
  10. package/dist/esm/models/CreateSandboxResponse.d.ts +7 -0
  11. package/dist/esm/models/CreateSandboxResponse.js +3 -0
  12. package/dist/esm/models/CreateSandboxResponseAllOfHostedPortsInner.d.ts +77 -0
  13. package/dist/esm/models/CreateSandboxResponseAllOfHostedPortsInner.js +64 -0
  14. package/dist/esm/models/FileDeleteResponse.d.ts +57 -0
  15. package/dist/esm/models/FileDeleteResponse.js +59 -0
  16. package/dist/esm/models/FileEntry.d.ts +68 -0
  17. package/dist/esm/models/FileEntry.js +67 -0
  18. package/dist/esm/models/FileFindResponse.d.ts +70 -0
  19. package/dist/esm/models/FileFindResponse.js +66 -0
  20. package/dist/esm/models/FileFindResponseAllOfMatches.d.ts +44 -0
  21. package/dist/esm/models/FileFindResponseAllOfMatches.js +51 -0
  22. package/dist/esm/models/FileFolderRequest.d.ts +38 -0
  23. package/dist/esm/models/FileFolderRequest.js +45 -0
  24. package/dist/esm/models/FileInfoResponse.d.ts +95 -0
  25. package/dist/esm/models/FileInfoResponse.js +85 -0
  26. package/dist/esm/models/FileListResponse.d.ts +70 -0
  27. package/dist/esm/models/FileListResponse.js +68 -0
  28. package/dist/esm/models/FileMoveRequest.d.ts +44 -0
  29. package/dist/esm/models/FileMoveRequest.js +49 -0
  30. package/dist/esm/models/FileMoveResponse.d.ts +63 -0
  31. package/dist/esm/models/FileMoveResponse.js +63 -0
  32. package/dist/esm/models/FilePermissionsRequest.d.ts +38 -0
  33. package/dist/esm/models/FilePermissionsRequest.js +47 -0
  34. package/dist/esm/models/FileReplaceRequest.d.ts +44 -0
  35. package/dist/esm/models/FileReplaceRequest.js +51 -0
  36. package/dist/esm/models/FileReplaceResponse.d.ts +58 -0
  37. package/dist/esm/models/FileReplaceResponse.js +60 -0
  38. package/dist/esm/models/FileReplaceResponseAllOfResults.d.ts +50 -0
  39. package/dist/esm/models/FileReplaceResponseAllOfResults.js +51 -0
  40. package/dist/esm/models/FileSearchResponse.d.ts +69 -0
  41. package/dist/esm/models/FileSearchResponse.js +65 -0
  42. package/dist/esm/models/LimitsFields.d.ts +54 -16
  43. package/dist/esm/models/LimitsFields.js +16 -2
  44. package/dist/esm/models/LimitsFieldsOveragePrices.d.ts +51 -0
  45. package/dist/esm/models/LimitsFieldsOveragePrices.js +48 -0
  46. package/dist/esm/models/LimitsFieldsOveragePricesStartBracketsInner.d.ts +44 -0
  47. package/dist/esm/models/LimitsFieldsOveragePricesStartBracketsInner.js +45 -0
  48. package/dist/esm/models/LimitsFieldsPlanIncluded.d.ts +44 -0
  49. package/dist/esm/models/LimitsFieldsPlanIncluded.js +45 -0
  50. package/dist/esm/models/LimitsFieldsStartLimitsWithWallet.d.ts +44 -0
  51. package/dist/esm/models/LimitsFieldsStartLimitsWithWallet.js +45 -0
  52. package/dist/esm/models/LimitsFieldsWallet.d.ts +32 -0
  53. package/dist/esm/models/LimitsFieldsWallet.js +41 -0
  54. package/dist/esm/models/LimitsResponse.d.ts +54 -16
  55. package/dist/esm/models/LimitsResponse.js +16 -2
  56. package/dist/esm/models/NamedSnapshotAllowance.d.ts +9 -3
  57. package/dist/esm/models/NamedSnapshotAllowance.js +2 -0
  58. package/dist/esm/models/SavedSnapshotAllowance.d.ts +9 -3
  59. package/dist/esm/models/SavedSnapshotAllowance.js +2 -0
  60. package/dist/esm/models/index.d.ts +21 -0
  61. package/dist/esm/models/index.js +21 -0
  62. package/dist/models/CreateSandboxRequest.d.ts +35 -1
  63. package/dist/models/CreateSandboxRequest.js +18 -1
  64. package/dist/models/CreateSandboxRequestFilesInner.d.ts +52 -0
  65. package/dist/models/CreateSandboxRequestFilesInner.js +64 -0
  66. package/dist/models/CreateSandboxResponse.d.ts +7 -0
  67. package/dist/models/CreateSandboxResponse.js +3 -0
  68. package/dist/models/CreateSandboxResponseAllOfHostedPortsInner.d.ts +77 -0
  69. package/dist/models/CreateSandboxResponseAllOfHostedPortsInner.js +72 -0
  70. package/dist/models/FileDeleteResponse.d.ts +57 -0
  71. package/dist/models/FileDeleteResponse.js +67 -0
  72. package/dist/models/FileEntry.d.ts +68 -0
  73. package/dist/models/FileEntry.js +74 -0
  74. package/dist/models/FileFindResponse.d.ts +70 -0
  75. package/dist/models/FileFindResponse.js +74 -0
  76. package/dist/models/FileFindResponseAllOfMatches.d.ts +44 -0
  77. package/dist/models/FileFindResponseAllOfMatches.js +58 -0
  78. package/dist/models/FileFolderRequest.d.ts +38 -0
  79. package/dist/models/FileFolderRequest.js +52 -0
  80. package/dist/models/FileInfoResponse.d.ts +95 -0
  81. package/dist/models/FileInfoResponse.js +93 -0
  82. package/dist/models/FileListResponse.d.ts +70 -0
  83. package/dist/models/FileListResponse.js +76 -0
  84. package/dist/models/FileMoveRequest.d.ts +44 -0
  85. package/dist/models/FileMoveRequest.js +56 -0
  86. package/dist/models/FileMoveResponse.d.ts +63 -0
  87. package/dist/models/FileMoveResponse.js +71 -0
  88. package/dist/models/FilePermissionsRequest.d.ts +38 -0
  89. package/dist/models/FilePermissionsRequest.js +54 -0
  90. package/dist/models/FileReplaceRequest.d.ts +44 -0
  91. package/dist/models/FileReplaceRequest.js +58 -0
  92. package/dist/models/FileReplaceResponse.d.ts +58 -0
  93. package/dist/models/FileReplaceResponse.js +68 -0
  94. package/dist/models/FileReplaceResponseAllOfResults.d.ts +50 -0
  95. package/dist/models/FileReplaceResponseAllOfResults.js +58 -0
  96. package/dist/models/FileSearchResponse.d.ts +69 -0
  97. package/dist/models/FileSearchResponse.js +73 -0
  98. package/dist/models/LimitsFields.d.ts +54 -16
  99. package/dist/models/LimitsFields.js +16 -2
  100. package/dist/models/LimitsFieldsOveragePrices.d.ts +51 -0
  101. package/dist/models/LimitsFieldsOveragePrices.js +55 -0
  102. package/dist/models/LimitsFieldsOveragePricesStartBracketsInner.d.ts +44 -0
  103. package/dist/models/LimitsFieldsOveragePricesStartBracketsInner.js +52 -0
  104. package/dist/models/LimitsFieldsPlanIncluded.d.ts +44 -0
  105. package/dist/models/LimitsFieldsPlanIncluded.js +52 -0
  106. package/dist/models/LimitsFieldsStartLimitsWithWallet.d.ts +44 -0
  107. package/dist/models/LimitsFieldsStartLimitsWithWallet.js +52 -0
  108. package/dist/models/LimitsFieldsWallet.d.ts +32 -0
  109. package/dist/models/LimitsFieldsWallet.js +48 -0
  110. package/dist/models/LimitsResponse.d.ts +54 -16
  111. package/dist/models/LimitsResponse.js +16 -2
  112. package/dist/models/NamedSnapshotAllowance.d.ts +9 -3
  113. package/dist/models/NamedSnapshotAllowance.js +2 -0
  114. package/dist/models/SavedSnapshotAllowance.d.ts +9 -3
  115. package/dist/models/SavedSnapshotAllowance.js +2 -0
  116. package/dist/models/index.d.ts +21 -0
  117. package/dist/models/index.js +21 -0
  118. package/docs/BoatApi.md +744 -48
  119. package/docs/CreateSandboxRequest.md +8 -0
  120. package/docs/CreateSandboxRequestFilesInner.md +36 -0
  121. package/docs/CreateSandboxResponse.md +2 -0
  122. package/docs/CreateSandboxResponseAllOfHostedPortsInner.md +44 -0
  123. package/docs/FileDeleteResponse.md +38 -0
  124. package/docs/FileEntry.md +44 -0
  125. package/docs/FileFindResponse.md +42 -0
  126. package/docs/FileFindResponseAllOfMatches.md +36 -0
  127. package/docs/FileFolderRequest.md +34 -0
  128. package/docs/FileInfoResponse.md +50 -0
  129. package/docs/FileListResponse.md +42 -0
  130. package/docs/FileMoveRequest.md +36 -0
  131. package/docs/FileMoveResponse.md +40 -0
  132. package/docs/FilePermissionsRequest.md +34 -0
  133. package/docs/FileReplaceRequest.md +36 -0
  134. package/docs/FileReplaceResponse.md +38 -0
  135. package/docs/FileReplaceResponseAllOfResults.md +38 -0
  136. package/docs/FileSearchResponse.md +42 -0
  137. package/docs/LimitsFields.md +12 -2
  138. package/docs/LimitsFieldsOveragePrices.md +39 -0
  139. package/docs/LimitsFieldsOveragePricesStartBracketsInner.md +36 -0
  140. package/docs/LimitsFieldsPlanIncluded.md +37 -0
  141. package/docs/LimitsFieldsStartLimitsWithWallet.md +37 -0
  142. package/docs/LimitsFieldsWallet.md +33 -0
  143. package/docs/LimitsResponse.md +12 -2
  144. package/docs/NamedSnapshotAllowance.md +3 -1
  145. package/docs/SavedSnapshotAllowance.md +3 -1
  146. package/package.json +1 -1
  147. package/src/apis/BoatApi.ts +721 -14
  148. package/src/models/CreateSandboxRequest.ts +57 -1
  149. package/src/models/CreateSandboxRequestFilesInner.ts +94 -0
  150. package/src/models/CreateSandboxResponse.ts +15 -0
  151. package/src/models/CreateSandboxResponseAllOfHostedPortsInner.ts +128 -0
  152. package/src/models/FileDeleteResponse.ts +102 -0
  153. package/src/models/FileEntry.ts +120 -0
  154. package/src/models/FileFindResponse.ts +127 -0
  155. package/src/models/FileFindResponseAllOfMatches.ts +84 -0
  156. package/src/models/FileFolderRequest.ts +74 -0
  157. package/src/models/FileInfoResponse.ts +158 -0
  158. package/src/models/FileListResponse.ts +128 -0
  159. package/src/models/FileMoveRequest.ts +83 -0
  160. package/src/models/FileMoveResponse.ts +111 -0
  161. package/src/models/FilePermissionsRequest.ts +75 -0
  162. package/src/models/FileReplaceRequest.ts +84 -0
  163. package/src/models/FileReplaceResponse.ts +110 -0
  164. package/src/models/FileReplaceResponseAllOfResults.ts +91 -0
  165. package/src/models/FileSearchResponse.ts +119 -0
  166. package/src/models/LimitsFields.ts +90 -16
  167. package/src/models/LimitsFieldsOveragePrices.ts +97 -0
  168. package/src/models/LimitsFieldsOveragePricesStartBracketsInner.ts +81 -0
  169. package/src/models/LimitsFieldsPlanIncluded.ts +81 -0
  170. package/src/models/LimitsFieldsStartLimitsWithWallet.ts +81 -0
  171. package/src/models/LimitsFieldsWallet.ts +65 -0
  172. package/src/models/LimitsResponse.ts +90 -16
  173. package/src/models/NamedSnapshotAllowance.ts +11 -3
  174. package/src/models/SavedSnapshotAllowance.ts +11 -3
  175. package/src/models/index.ts +21 -0
@@ -83,7 +83,18 @@ const DesktopRequest_1 = require("../models/DesktopRequest");
83
83
  const DesktopResponse_1 = require("../models/DesktopResponse");
84
84
  const EnvironmentItemChangeResponse_1 = require("../models/EnvironmentItemChangeResponse");
85
85
  const EventsResponse_1 = require("../models/EventsResponse");
86
+ const FileDeleteResponse_1 = require("../models/FileDeleteResponse");
87
+ const FileFindResponse_1 = require("../models/FileFindResponse");
88
+ const FileFolderRequest_1 = require("../models/FileFolderRequest");
89
+ const FileInfoResponse_1 = require("../models/FileInfoResponse");
90
+ const FileListResponse_1 = require("../models/FileListResponse");
91
+ const FileMoveRequest_1 = require("../models/FileMoveRequest");
92
+ const FileMoveResponse_1 = require("../models/FileMoveResponse");
93
+ const FilePermissionsRequest_1 = require("../models/FilePermissionsRequest");
86
94
  const FileReadResponse_1 = require("../models/FileReadResponse");
95
+ const FileReplaceRequest_1 = require("../models/FileReplaceRequest");
96
+ const FileReplaceResponse_1 = require("../models/FileReplaceResponse");
97
+ const FileSearchResponse_1 = require("../models/FileSearchResponse");
87
98
  const FileUrlRequest_1 = require("../models/FileUrlRequest");
88
99
  const FileUrlResponse_1 = require("../models/FileUrlResponse");
89
100
  const FileWriteRequest_1 = require("../models/FileWriteRequest");
@@ -893,6 +904,54 @@ class BoatApi extends runtime.BaseAPI {
893
904
  const response = await this.createEnvironmentRaw(requestParameters, initOverrides);
894
905
  return await response.value();
895
906
  }
907
+ /**
908
+ * Creates request options for createFolder without sending the request
909
+ */
910
+ async createFolderRequestOpts(input) {
911
+ const requestParameters = runtime.unflattenBody(input, 'fileFolderRequest', ['sandboxId'], []);
912
+ if (requestParameters['sandboxId'] == null) {
913
+ throw new runtime.RequiredError('sandboxId', 'Required parameter "sandboxId" was null or undefined when calling createFolder().');
914
+ }
915
+ if (requestParameters['fileFolderRequest'] == null) {
916
+ throw new runtime.RequiredError('fileFolderRequest', 'Required parameter "fileFolderRequest" was null or undefined when calling createFolder().');
917
+ }
918
+ const queryParameters = {};
919
+ const headerParameters = {};
920
+ headerParameters['Content-Type'] = 'application/json';
921
+ if (this.configuration && this.configuration.accessToken) {
922
+ const token = this.configuration.accessToken;
923
+ const tokenString = await token("BoatBearerAuth", []);
924
+ if (tokenString) {
925
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
926
+ }
927
+ }
928
+ let urlPath = `/sandboxes/{sandboxId}/files/folder`;
929
+ urlPath = urlPath.replace('{sandboxId}', encodeURIComponent(String(requestParameters['sandboxId'])));
930
+ return {
931
+ path: urlPath,
932
+ method: 'POST',
933
+ headers: headerParameters,
934
+ query: queryParameters,
935
+ body: (0, FileFolderRequest_1.FileFolderRequestToJSON)(requestParameters['fileFolderRequest']),
936
+ };
937
+ }
938
+ /**
939
+ * Missing parent directories are created. An existing directory is not an error. Needs `file.write`.
940
+ * Create a directory in a sandbox
941
+ */
942
+ async createFolderRaw(requestParameters, initOverrides) {
943
+ const requestOptions = await this.createFolderRequestOpts(requestParameters);
944
+ const response = await this.request(requestOptions, initOverrides);
945
+ return new runtime.JSONApiResponse(response, (jsonValue) => (0, FileInfoResponse_1.FileInfoResponseFromJSON)(jsonValue));
946
+ }
947
+ /**
948
+ * Missing parent directories are created. An existing directory is not an error. Needs `file.write`.
949
+ * Create a directory in a sandbox
950
+ */
951
+ async createFolder(requestParameters, initOverrides) {
952
+ const response = await this.createFolderRaw(requestParameters, initOverrides);
953
+ return await response.value();
954
+ }
896
955
  /**
897
956
  * Creates request options for createScopedApiKey without sending the request
898
957
  */
@@ -921,7 +980,7 @@ class BoatApi extends runtime.BaseAPI {
921
980
  };
922
981
  }
923
982
  /**
924
- * Creates a scoped, expiring API key. Requires a dashboard/CLI session or an admin-scoped token. The secret is returned once. This dedicated path returns a typed 503 until scoped credential creation is activated.
983
+ * Creates a scoped, expiring API key. Requires a dashboard/CLI session or an admin-scoped token. The secret is returned once. An unknown field is a 400, so a misspelled scope never creates a full-access key. environmentIds takes your own environments and the org environments you can use. This dedicated path returns a typed 503 until scoped credential creation is activated.
925
984
  * Create a scoped API key
926
985
  */
927
986
  async createScopedApiKeyRaw(requestParameters, initOverrides) {
@@ -930,7 +989,7 @@ class BoatApi extends runtime.BaseAPI {
930
989
  return new runtime.JSONApiResponse(response, (jsonValue) => (0, ApiKeySecretResponse_1.ApiKeySecretResponseFromJSON)(jsonValue));
931
990
  }
932
991
  /**
933
- * Creates a scoped, expiring API key. Requires a dashboard/CLI session or an admin-scoped token. The secret is returned once. This dedicated path returns a typed 503 until scoped credential creation is activated.
992
+ * Creates a scoped, expiring API key. Requires a dashboard/CLI session or an admin-scoped token. The secret is returned once. An unknown field is a 400, so a misspelled scope never creates a full-access key. environmentIds takes your own environments and the org environments you can use. This dedicated path returns a typed 503 until scoped credential creation is activated.
934
993
  * Create a scoped API key
935
994
  */
936
995
  async createScopedApiKey(requestParameters, initOverrides) {
@@ -1449,6 +1508,57 @@ class BoatApi extends runtime.BaseAPI {
1449
1508
  const response = await this.deleteEnvironmentVarRaw(requestParameters, initOverrides);
1450
1509
  return await response.value();
1451
1510
  }
1511
+ /**
1512
+ * Creates request options for deleteFile without sending the request
1513
+ */
1514
+ async deleteFileRequestOpts(requestParameters) {
1515
+ if (requestParameters['sandboxId'] == null) {
1516
+ throw new runtime.RequiredError('sandboxId', 'Required parameter "sandboxId" was null or undefined when calling deleteFile().');
1517
+ }
1518
+ if (requestParameters['path'] == null) {
1519
+ throw new runtime.RequiredError('path', 'Required parameter "path" was null or undefined when calling deleteFile().');
1520
+ }
1521
+ const queryParameters = {};
1522
+ if (requestParameters['path'] != null) {
1523
+ queryParameters['path'] = requestParameters['path'];
1524
+ }
1525
+ if (requestParameters['recursive'] != null) {
1526
+ queryParameters['recursive'] = requestParameters['recursive'];
1527
+ }
1528
+ const headerParameters = {};
1529
+ if (this.configuration && this.configuration.accessToken) {
1530
+ const token = this.configuration.accessToken;
1531
+ const tokenString = await token("BoatBearerAuth", []);
1532
+ if (tokenString) {
1533
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
1534
+ }
1535
+ }
1536
+ let urlPath = `/sandboxes/{sandboxId}/files`;
1537
+ urlPath = urlPath.replace('{sandboxId}', encodeURIComponent(String(requestParameters['sandboxId'])));
1538
+ return {
1539
+ path: urlPath,
1540
+ method: 'DELETE',
1541
+ headers: headerParameters,
1542
+ query: queryParameters,
1543
+ };
1544
+ }
1545
+ /**
1546
+ * A directory needs `recursive=true`. A symlink is deleted itself, never its target. /home/user and /tmp themselves cannot be deleted. Needs `file.write`.
1547
+ * Delete a file or directory in a sandbox
1548
+ */
1549
+ async deleteFileRaw(requestParameters, initOverrides) {
1550
+ const requestOptions = await this.deleteFileRequestOpts(requestParameters);
1551
+ const response = await this.request(requestOptions, initOverrides);
1552
+ return new runtime.JSONApiResponse(response, (jsonValue) => (0, FileDeleteResponse_1.FileDeleteResponseFromJSON)(jsonValue));
1553
+ }
1554
+ /**
1555
+ * A directory needs `recursive=true`. A symlink is deleted itself, never its target. /home/user and /tmp themselves cannot be deleted. Needs `file.write`.
1556
+ * Delete a file or directory in a sandbox
1557
+ */
1558
+ async deleteFile(requestParameters, initOverrides) {
1559
+ const response = await this.deleteFileRaw(requestParameters, initOverrides);
1560
+ return await response.value();
1561
+ }
1452
1562
  /**
1453
1563
  * Creates request options for deleteNamedSnapshot without sending the request
1454
1564
  * @deprecated
@@ -1909,6 +2019,60 @@ class BoatApi extends runtime.BaseAPI {
1909
2019
  const response = await this.eventsRaw(requestParameters, initOverrides);
1910
2020
  return await response.value();
1911
2021
  }
2022
+ /**
2023
+ * Creates request options for findInFiles without sending the request
2024
+ */
2025
+ async findInFilesRequestOpts(requestParameters) {
2026
+ if (requestParameters['sandboxId'] == null) {
2027
+ throw new runtime.RequiredError('sandboxId', 'Required parameter "sandboxId" was null or undefined when calling findInFiles().');
2028
+ }
2029
+ if (requestParameters['pattern'] == null) {
2030
+ throw new runtime.RequiredError('pattern', 'Required parameter "pattern" was null or undefined when calling findInFiles().');
2031
+ }
2032
+ const queryParameters = {};
2033
+ if (requestParameters['path'] != null) {
2034
+ queryParameters['path'] = requestParameters['path'];
2035
+ }
2036
+ if (requestParameters['pattern'] != null) {
2037
+ queryParameters['pattern'] = requestParameters['pattern'];
2038
+ }
2039
+ if (requestParameters['regex'] != null) {
2040
+ queryParameters['regex'] = requestParameters['regex'];
2041
+ }
2042
+ const headerParameters = {};
2043
+ if (this.configuration && this.configuration.accessToken) {
2044
+ const token = this.configuration.accessToken;
2045
+ const tokenString = await token("BoatBearerAuth", []);
2046
+ if (tokenString) {
2047
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
2048
+ }
2049
+ }
2050
+ let urlPath = `/sandboxes/{sandboxId}/files/find`;
2051
+ urlPath = urlPath.replace('{sandboxId}', encodeURIComponent(String(requestParameters['sandboxId'])));
2052
+ return {
2053
+ path: urlPath,
2054
+ method: 'GET',
2055
+ headers: headerParameters,
2056
+ query: queryParameters,
2057
+ };
2058
+ }
2059
+ /**
2060
+ * Every line under `path` that contains `pattern`. `pattern` is plain text; with `regex=true` it is an extended regular expression. Binary files are skipped and symlinks are not followed. Needs `file.read`.
2061
+ * Find text in sandbox files
2062
+ */
2063
+ async findInFilesRaw(requestParameters, initOverrides) {
2064
+ const requestOptions = await this.findInFilesRequestOpts(requestParameters);
2065
+ const response = await this.request(requestOptions, initOverrides);
2066
+ return new runtime.JSONApiResponse(response, (jsonValue) => (0, FileFindResponse_1.FileFindResponseFromJSON)(jsonValue));
2067
+ }
2068
+ /**
2069
+ * Every line under `path` that contains `pattern`. `pattern` is plain text; with `regex=true` it is an extended regular expression. Binary files are skipped and symlinks are not followed. Needs `file.read`.
2070
+ * Find text in sandbox files
2071
+ */
2072
+ async findInFiles(requestParameters, initOverrides) {
2073
+ const response = await this.findInFilesRaw(requestParameters, initOverrides);
2074
+ return await response.value();
2075
+ }
1912
2076
  /**
1913
2077
  * Creates request options for fork without sending the request
1914
2078
  */
@@ -2217,6 +2381,54 @@ class BoatApi extends runtime.BaseAPI {
2217
2381
  const response = await this.getDeletionOperationRaw(requestParameters, initOverrides);
2218
2382
  return await response.value();
2219
2383
  }
2384
+ /**
2385
+ * Creates request options for getFileInfo without sending the request
2386
+ */
2387
+ async getFileInfoRequestOpts(requestParameters) {
2388
+ if (requestParameters['sandboxId'] == null) {
2389
+ throw new runtime.RequiredError('sandboxId', 'Required parameter "sandboxId" was null or undefined when calling getFileInfo().');
2390
+ }
2391
+ if (requestParameters['path'] == null) {
2392
+ throw new runtime.RequiredError('path', 'Required parameter "path" was null or undefined when calling getFileInfo().');
2393
+ }
2394
+ const queryParameters = {};
2395
+ if (requestParameters['path'] != null) {
2396
+ queryParameters['path'] = requestParameters['path'];
2397
+ }
2398
+ const headerParameters = {};
2399
+ if (this.configuration && this.configuration.accessToken) {
2400
+ const token = this.configuration.accessToken;
2401
+ const tokenString = await token("BoatBearerAuth", []);
2402
+ if (tokenString) {
2403
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
2404
+ }
2405
+ }
2406
+ let urlPath = `/sandboxes/{sandboxId}/files/info`;
2407
+ urlPath = urlPath.replace('{sandboxId}', encodeURIComponent(String(requestParameters['sandboxId'])));
2408
+ return {
2409
+ path: urlPath,
2410
+ method: 'GET',
2411
+ headers: headerParameters,
2412
+ query: queryParameters,
2413
+ };
2414
+ }
2415
+ /**
2416
+ * Size, permission bits, type and modification time. Needs `file.read`.
2417
+ * Get file or directory details in a sandbox
2418
+ */
2419
+ async getFileInfoRaw(requestParameters, initOverrides) {
2420
+ const requestOptions = await this.getFileInfoRequestOpts(requestParameters);
2421
+ const response = await this.request(requestOptions, initOverrides);
2422
+ return new runtime.JSONApiResponse(response, (jsonValue) => (0, FileInfoResponse_1.FileInfoResponseFromJSON)(jsonValue));
2423
+ }
2424
+ /**
2425
+ * Size, permission bits, type and modification time. Needs `file.read`.
2426
+ * Get file or directory details in a sandbox
2427
+ */
2428
+ async getFileInfo(requestParameters, initOverrides) {
2429
+ const response = await this.getFileInfoRaw(requestParameters, initOverrides);
2430
+ return await response.value();
2431
+ }
2220
2432
  /**
2221
2433
  * Creates request options for getLatestSandboxSnapshot without sending the request
2222
2434
  */
@@ -2766,7 +2978,7 @@ class BoatApi extends runtime.BaseAPI {
2766
2978
  };
2767
2979
  }
2768
2980
  /**
2769
- * Check remaining machine starts, compute time, credits, access readiness, and concurrent-sandbox capacity for the wallet a create would bill: the `org` / `X-Boat-Org` you pass (id or name), else the account\'s active wallet, else personal. The response carries `teamId` when an organization wallet was read.
2981
+ * Check remaining machine starts, included VM time, the wallet, overage prices, access readiness, and concurrent-sandbox capacity for the wallet a create would bill: the `org` / `X-Boat-Org` you pass (id or name), else the account\'s active wallet, else personal. The response carries `teamId` when an organization wallet was read.
2770
2982
  * Get Boat limits
2771
2983
  */
2772
2984
  async limitsRaw(requestParameters, initOverrides) {
@@ -2775,7 +2987,7 @@ class BoatApi extends runtime.BaseAPI {
2775
2987
  return new runtime.JSONApiResponse(response, (jsonValue) => (0, LimitsResponse_1.LimitsResponseFromJSON)(jsonValue));
2776
2988
  }
2777
2989
  /**
2778
- * Check remaining machine starts, compute time, credits, access readiness, and concurrent-sandbox capacity for the wallet a create would bill: the `org` / `X-Boat-Org` you pass (id or name), else the account\'s active wallet, else personal. The response carries `teamId` when an organization wallet was read.
2990
+ * Check remaining machine starts, included VM time, the wallet, overage prices, access readiness, and concurrent-sandbox capacity for the wallet a create would bill: the `org` / `X-Boat-Org` you pass (id or name), else the account\'s active wallet, else personal. The response carries `teamId` when an organization wallet was read.
2779
2991
  * Get Boat limits
2780
2992
  */
2781
2993
  async limits(requestParameters = {}, initOverrides) {
@@ -2866,6 +3078,51 @@ class BoatApi extends runtime.BaseAPI {
2866
3078
  const response = await this.listCredentialProfilesRaw(initOverrides);
2867
3079
  return await response.value();
2868
3080
  }
3081
+ /**
3082
+ * Creates request options for listFiles without sending the request
3083
+ */
3084
+ async listFilesRequestOpts(requestParameters) {
3085
+ if (requestParameters['sandboxId'] == null) {
3086
+ throw new runtime.RequiredError('sandboxId', 'Required parameter "sandboxId" was null or undefined when calling listFiles().');
3087
+ }
3088
+ const queryParameters = {};
3089
+ if (requestParameters['path'] != null) {
3090
+ queryParameters['path'] = requestParameters['path'];
3091
+ }
3092
+ const headerParameters = {};
3093
+ if (this.configuration && this.configuration.accessToken) {
3094
+ const token = this.configuration.accessToken;
3095
+ const tokenString = await token("BoatBearerAuth", []);
3096
+ if (tokenString) {
3097
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
3098
+ }
3099
+ }
3100
+ let urlPath = `/sandboxes/{sandboxId}/files/list`;
3101
+ urlPath = urlPath.replace('{sandboxId}', encodeURIComponent(String(requestParameters['sandboxId'])));
3102
+ return {
3103
+ path: urlPath,
3104
+ method: 'GET',
3105
+ headers: headerParameters,
3106
+ query: queryParameters,
3107
+ };
3108
+ }
3109
+ /**
3110
+ * One level, sorted by name. A symlink is listed as a symlink, not followed. Defaults to /home/user. Needs `file.read`.
3111
+ * List a directory in a sandbox
3112
+ */
3113
+ async listFilesRaw(requestParameters, initOverrides) {
3114
+ const requestOptions = await this.listFilesRequestOpts(requestParameters);
3115
+ const response = await this.request(requestOptions, initOverrides);
3116
+ return new runtime.JSONApiResponse(response, (jsonValue) => (0, FileListResponse_1.FileListResponseFromJSON)(jsonValue));
3117
+ }
3118
+ /**
3119
+ * One level, sorted by name. A symlink is listed as a symlink, not followed. Defaults to /home/user. Needs `file.read`.
3120
+ * List a directory in a sandbox
3121
+ */
3122
+ async listFiles(requestParameters, initOverrides) {
3123
+ const response = await this.listFilesRaw(requestParameters, initOverrides);
3124
+ return await response.value();
3125
+ }
2869
3126
  /**
2870
3127
  * Creates request options for listNamedSnapshots without sending the request
2871
3128
  * @deprecated
@@ -3199,6 +3456,54 @@ class BoatApi extends runtime.BaseAPI {
3199
3456
  const response = await this.meRaw(initOverrides);
3200
3457
  return await response.value();
3201
3458
  }
3459
+ /**
3460
+ * Creates request options for moveFile without sending the request
3461
+ */
3462
+ async moveFileRequestOpts(input) {
3463
+ const requestParameters = runtime.unflattenBody(input, 'fileMoveRequest', ['sandboxId'], []);
3464
+ if (requestParameters['sandboxId'] == null) {
3465
+ throw new runtime.RequiredError('sandboxId', 'Required parameter "sandboxId" was null or undefined when calling moveFile().');
3466
+ }
3467
+ if (requestParameters['fileMoveRequest'] == null) {
3468
+ throw new runtime.RequiredError('fileMoveRequest', 'Required parameter "fileMoveRequest" was null or undefined when calling moveFile().');
3469
+ }
3470
+ const queryParameters = {};
3471
+ const headerParameters = {};
3472
+ headerParameters['Content-Type'] = 'application/json';
3473
+ if (this.configuration && this.configuration.accessToken) {
3474
+ const token = this.configuration.accessToken;
3475
+ const tokenString = await token("BoatBearerAuth", []);
3476
+ if (tokenString) {
3477
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
3478
+ }
3479
+ }
3480
+ let urlPath = `/sandboxes/{sandboxId}/files/move`;
3481
+ urlPath = urlPath.replace('{sandboxId}', encodeURIComponent(String(requestParameters['sandboxId'])));
3482
+ return {
3483
+ path: urlPath,
3484
+ method: 'POST',
3485
+ headers: headerParameters,
3486
+ query: queryParameters,
3487
+ body: (0, FileMoveRequest_1.FileMoveRequestToJSON)(requestParameters['fileMoveRequest']),
3488
+ };
3489
+ }
3490
+ /**
3491
+ * Works across /home/user and /tmp. A symlink is moved itself, never its target. Needs `file.write`.
3492
+ * Move or rename a file or directory in a sandbox
3493
+ */
3494
+ async moveFileRaw(requestParameters, initOverrides) {
3495
+ const requestOptions = await this.moveFileRequestOpts(requestParameters);
3496
+ const response = await this.request(requestOptions, initOverrides);
3497
+ return new runtime.JSONApiResponse(response, (jsonValue) => (0, FileMoveResponse_1.FileMoveResponseFromJSON)(jsonValue));
3498
+ }
3499
+ /**
3500
+ * Works across /home/user and /tmp. A symlink is moved itself, never its target. Needs `file.write`.
3501
+ * Move or rename a file or directory in a sandbox
3502
+ */
3503
+ async moveFile(requestParameters, initOverrides) {
3504
+ const response = await this.moveFileRaw(requestParameters, initOverrides);
3505
+ return await response.value();
3506
+ }
3202
3507
  /**
3203
3508
  * Creates request options for processes without sending the request
3204
3509
  */
@@ -3370,7 +3675,7 @@ class BoatApi extends runtime.BaseAPI {
3370
3675
  };
3371
3676
  }
3372
3677
  /**
3373
- * Files up to 5 MiB. For a larger file, use `POST /sandboxes/{sandboxId}/files/download-url`.
3678
+ * Files up to 5 MiB. For a larger file, use `POST /sandboxes/{sandboxId}/files/download-url`. On a sandbox that is still starting, the call waits until it is ready (up to 60 s, like a command), so it reads the sandbox\'s own disk and never the machine\'s stock one.
3374
3679
  * Read a file from a sandbox
3375
3680
  */
3376
3681
  async readFileRaw(requestParameters, initOverrides) {
@@ -3379,7 +3684,7 @@ class BoatApi extends runtime.BaseAPI {
3379
3684
  return new runtime.JSONApiResponse(response, (jsonValue) => (0, FileReadResponse_1.FileReadResponseFromJSON)(jsonValue));
3380
3685
  }
3381
3686
  /**
3382
- * Files up to 5 MiB. For a larger file, use `POST /sandboxes/{sandboxId}/files/download-url`.
3687
+ * Files up to 5 MiB. For a larger file, use `POST /sandboxes/{sandboxId}/files/download-url`. On a sandbox that is still starting, the call waits until it is ready (up to 60 s, like a command), so it reads the sandbox\'s own disk and never the machine\'s stock one.
3383
3688
  * Read a file from a sandbox
3384
3689
  */
3385
3690
  async readFile(requestParameters, initOverrides) {
@@ -3428,6 +3733,54 @@ class BoatApi extends runtime.BaseAPI {
3428
3733
  const response = await this.recoverRaw(requestParameters, initOverrides);
3429
3734
  return await response.value();
3430
3735
  }
3736
+ /**
3737
+ * Creates request options for replaceInFiles without sending the request
3738
+ */
3739
+ async replaceInFilesRequestOpts(input) {
3740
+ const requestParameters = runtime.unflattenBody(input, 'fileReplaceRequest', ['sandboxId'], []);
3741
+ if (requestParameters['sandboxId'] == null) {
3742
+ throw new runtime.RequiredError('sandboxId', 'Required parameter "sandboxId" was null or undefined when calling replaceInFiles().');
3743
+ }
3744
+ if (requestParameters['fileReplaceRequest'] == null) {
3745
+ throw new runtime.RequiredError('fileReplaceRequest', 'Required parameter "fileReplaceRequest" was null or undefined when calling replaceInFiles().');
3746
+ }
3747
+ const queryParameters = {};
3748
+ const headerParameters = {};
3749
+ headerParameters['Content-Type'] = 'application/json';
3750
+ if (this.configuration && this.configuration.accessToken) {
3751
+ const token = this.configuration.accessToken;
3752
+ const tokenString = await token("BoatBearerAuth", []);
3753
+ if (tokenString) {
3754
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
3755
+ }
3756
+ }
3757
+ let urlPath = `/sandboxes/{sandboxId}/files/replace`;
3758
+ urlPath = urlPath.replace('{sandboxId}', encodeURIComponent(String(requestParameters['sandboxId'])));
3759
+ return {
3760
+ path: urlPath,
3761
+ method: 'POST',
3762
+ headers: headerParameters,
3763
+ query: queryParameters,
3764
+ body: (0, FileReplaceRequest_1.FileReplaceRequestToJSON)(requestParameters['fileReplaceRequest']),
3765
+ };
3766
+ }
3767
+ /**
3768
+ * Replaces every occurrence of `pattern` with `newValue` in each file. Needs `file.write`.
3769
+ * Replace text in sandbox files
3770
+ */
3771
+ async replaceInFilesRaw(requestParameters, initOverrides) {
3772
+ const requestOptions = await this.replaceInFilesRequestOpts(requestParameters);
3773
+ const response = await this.request(requestOptions, initOverrides);
3774
+ return new runtime.JSONApiResponse(response, (jsonValue) => (0, FileReplaceResponse_1.FileReplaceResponseFromJSON)(jsonValue));
3775
+ }
3776
+ /**
3777
+ * Replaces every occurrence of `pattern` with `newValue` in each file. Needs `file.write`.
3778
+ * Replace text in sandbox files
3779
+ */
3780
+ async replaceInFiles(requestParameters, initOverrides) {
3781
+ const response = await this.replaceInFilesRaw(requestParameters, initOverrides);
3782
+ return await response.value();
3783
+ }
3431
3784
  /**
3432
3785
  * Creates request options for repos without sending the request
3433
3786
  */
@@ -3553,7 +3906,7 @@ class BoatApi extends runtime.BaseAPI {
3553
3906
  };
3554
3907
  }
3555
3908
  /**
3556
- * Revokes the key immediately. Requires a dashboard or CLI session.
3909
+ * Revokes the key immediately. Requires a dashboard or CLI session, or an admin-scoped key. A key revokes itself or a key it could create (same or fewer actions, sandboxes and environments, no later expiry).
3557
3910
  * Revoke an API key
3558
3911
  */
3559
3912
  async revokeApiKeyRaw(requestParameters, initOverrides) {
@@ -3562,7 +3915,7 @@ class BoatApi extends runtime.BaseAPI {
3562
3915
  return new runtime.JSONApiResponse(response, (jsonValue) => (0, ApiKeyRevokeResponse_1.ApiKeyRevokeResponseFromJSON)(jsonValue));
3563
3916
  }
3564
3917
  /**
3565
- * Revokes the key immediately. Requires a dashboard or CLI session.
3918
+ * Revokes the key immediately. Requires a dashboard or CLI session, or an admin-scoped key. A key revokes itself or a key it could create (same or fewer actions, sandboxes and environments, no later expiry).
3566
3919
  * Revoke an API key
3567
3920
  */
3568
3921
  async revokeApiKey(requestParameters, initOverrides) {
@@ -3641,7 +3994,7 @@ class BoatApi extends runtime.BaseAPI {
3641
3994
  };
3642
3995
  }
3643
3996
  /**
3644
- * Replaces the raw secret without changing expiry or scope. Requires a dashboard or CLI session.
3997
+ * Replaces the raw secret without changing expiry or scope. Requires a dashboard or CLI session, or an admin-scoped key. A key rotates itself or a key it could create.
3645
3998
  * Rotate an API key
3646
3999
  */
3647
4000
  async rotateApiKeyRaw(requestParameters, initOverrides) {
@@ -3650,7 +4003,7 @@ class BoatApi extends runtime.BaseAPI {
3650
4003
  return new runtime.JSONApiResponse(response, (jsonValue) => (0, ApiKeySecretResponse_1.ApiKeySecretResponseFromJSON)(jsonValue));
3651
4004
  }
3652
4005
  /**
3653
- * Replaces the raw secret without changing expiry or scope. Requires a dashboard or CLI session.
4006
+ * Replaces the raw secret without changing expiry or scope. Requires a dashboard or CLI session, or an admin-scoped key. A key rotates itself or a key it could create.
3654
4007
  * Rotate an API key
3655
4008
  */
3656
4009
  async rotateApiKey(requestParameters, initOverrides) {
@@ -3849,6 +4202,57 @@ class BoatApi extends runtime.BaseAPI {
3849
4202
  const response = await this.saveSavedSnapshotRaw(requestParameters, initOverrides);
3850
4203
  return await response.value();
3851
4204
  }
4205
+ /**
4206
+ * Creates request options for searchFiles without sending the request
4207
+ */
4208
+ async searchFilesRequestOpts(requestParameters) {
4209
+ if (requestParameters['sandboxId'] == null) {
4210
+ throw new runtime.RequiredError('sandboxId', 'Required parameter "sandboxId" was null or undefined when calling searchFiles().');
4211
+ }
4212
+ if (requestParameters['pattern'] == null) {
4213
+ throw new runtime.RequiredError('pattern', 'Required parameter "pattern" was null or undefined when calling searchFiles().');
4214
+ }
4215
+ const queryParameters = {};
4216
+ if (requestParameters['path'] != null) {
4217
+ queryParameters['path'] = requestParameters['path'];
4218
+ }
4219
+ if (requestParameters['pattern'] != null) {
4220
+ queryParameters['pattern'] = requestParameters['pattern'];
4221
+ }
4222
+ const headerParameters = {};
4223
+ if (this.configuration && this.configuration.accessToken) {
4224
+ const token = this.configuration.accessToken;
4225
+ const tokenString = await token("BoatBearerAuth", []);
4226
+ if (tokenString) {
4227
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
4228
+ }
4229
+ }
4230
+ let urlPath = `/sandboxes/{sandboxId}/files/search`;
4231
+ urlPath = urlPath.replace('{sandboxId}', encodeURIComponent(String(requestParameters['sandboxId'])));
4232
+ return {
4233
+ path: urlPath,
4234
+ method: 'GET',
4235
+ headers: headerParameters,
4236
+ query: queryParameters,
4237
+ };
4238
+ }
4239
+ /**
4240
+ * Every file and directory under `path` whose name matches the glob `pattern` (for example `*.py`). Symlinks are not followed. Needs `file.read`.
4241
+ * Search files by name in a sandbox
4242
+ */
4243
+ async searchFilesRaw(requestParameters, initOverrides) {
4244
+ const requestOptions = await this.searchFilesRequestOpts(requestParameters);
4245
+ const response = await this.request(requestOptions, initOverrides);
4246
+ return new runtime.JSONApiResponse(response, (jsonValue) => (0, FileSearchResponse_1.FileSearchResponseFromJSON)(jsonValue));
4247
+ }
4248
+ /**
4249
+ * Every file and directory under `path` whose name matches the glob `pattern` (for example `*.py`). Symlinks are not followed. Needs `file.read`.
4250
+ * Search files by name in a sandbox
4251
+ */
4252
+ async searchFiles(requestParameters, initOverrides) {
4253
+ const response = await this.searchFilesRaw(requestParameters, initOverrides);
4254
+ return await response.value();
4255
+ }
3852
4256
  /**
3853
4257
  * Creates request options for secrets without sending the request
3854
4258
  */
@@ -4185,6 +4589,54 @@ class BoatApi extends runtime.BaseAPI {
4185
4589
  const response = await this.setEnvironmentVarRaw(requestParameters, initOverrides);
4186
4590
  return await response.value();
4187
4591
  }
4592
+ /**
4593
+ * Creates request options for setFilePermissions without sending the request
4594
+ */
4595
+ async setFilePermissionsRequestOpts(input) {
4596
+ const requestParameters = runtime.unflattenBody(input, 'filePermissionsRequest', ['sandboxId'], []);
4597
+ if (requestParameters['sandboxId'] == null) {
4598
+ throw new runtime.RequiredError('sandboxId', 'Required parameter "sandboxId" was null or undefined when calling setFilePermissions().');
4599
+ }
4600
+ if (requestParameters['filePermissionsRequest'] == null) {
4601
+ throw new runtime.RequiredError('filePermissionsRequest', 'Required parameter "filePermissionsRequest" was null or undefined when calling setFilePermissions().');
4602
+ }
4603
+ const queryParameters = {};
4604
+ const headerParameters = {};
4605
+ headerParameters['Content-Type'] = 'application/json';
4606
+ if (this.configuration && this.configuration.accessToken) {
4607
+ const token = this.configuration.accessToken;
4608
+ const tokenString = await token("BoatBearerAuth", []);
4609
+ if (tokenString) {
4610
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
4611
+ }
4612
+ }
4613
+ let urlPath = `/sandboxes/{sandboxId}/files/permissions`;
4614
+ urlPath = urlPath.replace('{sandboxId}', encodeURIComponent(String(requestParameters['sandboxId'])));
4615
+ return {
4616
+ path: urlPath,
4617
+ method: 'POST',
4618
+ headers: headerParameters,
4619
+ query: queryParameters,
4620
+ body: (0, FilePermissionsRequest_1.FilePermissionsRequestToJSON)(requestParameters['filePermissionsRequest']),
4621
+ };
4622
+ }
4623
+ /**
4624
+ * Sets the permission bits. Files belong to the sandbox user; the owner and group do not change. Needs `file.write`.
4625
+ * Set file permissions in a sandbox
4626
+ */
4627
+ async setFilePermissionsRaw(requestParameters, initOverrides) {
4628
+ const requestOptions = await this.setFilePermissionsRequestOpts(requestParameters);
4629
+ const response = await this.request(requestOptions, initOverrides);
4630
+ return new runtime.JSONApiResponse(response, (jsonValue) => (0, FileInfoResponse_1.FileInfoResponseFromJSON)(jsonValue));
4631
+ }
4632
+ /**
4633
+ * Sets the permission bits. Files belong to the sandbox user; the owner and group do not change. Needs `file.write`.
4634
+ * Set file permissions in a sandbox
4635
+ */
4636
+ async setFilePermissions(requestParameters, initOverrides) {
4637
+ const response = await this.setFilePermissionsRaw(requestParameters, initOverrides);
4638
+ return await response.value();
4639
+ }
4188
4640
  /**
4189
4641
  * Creates request options for setSandboxAiAccess without sending the request
4190
4642
  */
@@ -4681,7 +5133,7 @@ class BoatApi extends runtime.BaseAPI {
4681
5133
  };
4682
5134
  }
4683
5135
  /**
4684
- * With the proxy on, sandboxes get placeholder keys and base URLs that point at Boat. Boat swaps in the real key on each request. Real keys never enter the sandbox. Running sandboxes switch at their next start. While on, the account pays $1 of Boat time for each UTC day, plus $1 per 1,000 proxied requests, charged to the wallet each sandbox bills. For an organization, only its owner can change the switch. Needs an API key with `account.admin`.
5136
+ * With the proxy on, sandboxes get placeholder keys and base URLs that point at Boat. Boat swaps in the real key on each request. Real keys never enter the sandbox. Running sandboxes switch at their next start. While on, the wallet of the account pays $1 for each UTC day, plus $1 per 1,000 proxied requests, charged to the wallet each sandbox bills. For an organization, only its owner can change the switch. Needs an API key with `account.admin`.
4685
5137
  * Turn the AI credentials proxy on or off
4686
5138
  */
4687
5139
  async updateAiProxyRaw(requestParameters, initOverrides) {
@@ -4690,7 +5142,7 @@ class BoatApi extends runtime.BaseAPI {
4690
5142
  return new runtime.JSONApiResponse(response, (jsonValue) => (0, AiProxySettings_1.AiProxySettingsFromJSON)(jsonValue));
4691
5143
  }
4692
5144
  /**
4693
- * With the proxy on, sandboxes get placeholder keys and base URLs that point at Boat. Boat swaps in the real key on each request. Real keys never enter the sandbox. Running sandboxes switch at their next start. While on, the account pays $1 of Boat time for each UTC day, plus $1 per 1,000 proxied requests, charged to the wallet each sandbox bills. For an organization, only its owner can change the switch. Needs an API key with `account.admin`.
5145
+ * With the proxy on, sandboxes get placeholder keys and base URLs that point at Boat. Boat swaps in the real key on each request. Real keys never enter the sandbox. Running sandboxes switch at their next start. While on, the wallet of the account pays $1 for each UTC day, plus $1 per 1,000 proxied requests, charged to the wallet each sandbox bills. For an organization, only its owner can change the switch. Needs an API key with `account.admin`.
4694
5146
  * Turn the AI credentials proxy on or off
4695
5147
  */
4696
5148
  async updateAiProxy(requestParameters, initOverrides) {
@@ -5106,7 +5558,7 @@ class BoatApi extends runtime.BaseAPI {
5106
5558
  };
5107
5559
  }
5108
5560
  /**
5109
- * Files up to 5 MiB after decoding. For a larger file, use `POST /sandboxes/{sandboxId}/files/upload-url`.
5561
+ * Files up to 5 MiB after decoding. For a larger file, use `POST /sandboxes/{sandboxId}/files/upload-url`. On a sandbox that is still starting, the call waits until it is ready (up to 60 s, like a command): a sandbox\'s files are in place only once it is ready, so a write any earlier would not stay. A `200` always means the file is on the sandbox\'s disk.
5110
5562
  * Write a file in a sandbox
5111
5563
  */
5112
5564
  async writeFileRaw(requestParameters, initOverrides) {
@@ -5115,7 +5567,7 @@ class BoatApi extends runtime.BaseAPI {
5115
5567
  return new runtime.JSONApiResponse(response, (jsonValue) => (0, FileWriteResponse_1.FileWriteResponseFromJSON)(jsonValue));
5116
5568
  }
5117
5569
  /**
5118
- * Files up to 5 MiB after decoding. For a larger file, use `POST /sandboxes/{sandboxId}/files/upload-url`.
5570
+ * Files up to 5 MiB after decoding. For a larger file, use `POST /sandboxes/{sandboxId}/files/upload-url`. On a sandbox that is still starting, the call waits until it is ready (up to 60 s, like a command): a sandbox\'s files are in place only once it is ready, so a write any earlier would not stay. A `200` always means the file is on the sandbox\'s disk.
5119
5571
  * Write a file in a sandbox
5120
5572
  */
5121
5573
  async writeFile(requestParameters, initOverrides) {