@boatdev/sdk 1.0.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 (777) hide show
  1. package/.openapi-generator/FILES +259 -0
  2. package/.openapi-generator/VERSION +1 -0
  3. package/.openapi-generator-ignore +23 -0
  4. package/LICENSE +21 -0
  5. package/README.md +151 -0
  6. package/dist/apis/BoatApi.d.ts +1275 -0
  7. package/dist/apis/BoatApi.js +3084 -0
  8. package/dist/apis/index.d.ts +1 -0
  9. package/dist/apis/index.js +19 -0
  10. package/dist/boat-helpers.d.ts +56 -0
  11. package/dist/boat-helpers.js +176 -0
  12. package/dist/esm/apis/BoatApi.d.ts +1275 -0
  13. package/dist/esm/apis/BoatApi.js +3047 -0
  14. package/dist/esm/apis/index.d.ts +1 -0
  15. package/dist/esm/apis/index.js +3 -0
  16. package/dist/esm/boat-helpers.d.ts +56 -0
  17. package/dist/esm/boat-helpers.js +163 -0
  18. package/dist/esm/index.d.ts +4 -0
  19. package/dist/esm/index.js +6 -0
  20. package/dist/esm/models/AddEnvironmentRepoRequest.d.ts +38 -0
  21. package/dist/esm/models/AddEnvironmentRepoRequest.js +45 -0
  22. package/dist/esm/models/ApiKey.d.ts +121 -0
  23. package/dist/esm/models/ApiKey.js +97 -0
  24. package/dist/esm/models/ApiKeyCatalog.d.ts +65 -0
  25. package/dist/esm/models/ApiKeyCatalog.js +62 -0
  26. package/dist/esm/models/ApiKeyCatalogScopeResources.d.ts +39 -0
  27. package/dist/esm/models/ApiKeyCatalogScopeResources.js +48 -0
  28. package/dist/esm/models/ApiKeyCreatedResource.d.ts +64 -0
  29. package/dist/esm/models/ApiKeyCreatedResource.js +66 -0
  30. package/dist/esm/models/ApiKeyRequestUsage.d.ts +45 -0
  31. package/dist/esm/models/ApiKeyRequestUsage.js +53 -0
  32. package/dist/esm/models/ApiKeyResourceTotals.d.ts +44 -0
  33. package/dist/esm/models/ApiKeyResourceTotals.js +51 -0
  34. package/dist/esm/models/ApiKeyRevokeResponse.d.ts +45 -0
  35. package/dist/esm/models/ApiKeyRevokeResponse.js +52 -0
  36. package/dist/esm/models/ApiKeyScope.d.ts +57 -0
  37. package/dist/esm/models/ApiKeyScope.js +50 -0
  38. package/dist/esm/models/ApiKeyScopeResource.d.ts +50 -0
  39. package/dist/esm/models/ApiKeyScopeResource.js +55 -0
  40. package/dist/esm/models/ApiKeyScopeSandboxes.d.ts +21 -0
  41. package/dist/esm/models/ApiKeyScopeSandboxes.js +47 -0
  42. package/dist/esm/models/ApiKeySecretResponse.d.ts +57 -0
  43. package/dist/esm/models/ApiKeySecretResponse.js +60 -0
  44. package/dist/esm/models/ApiKeyUsageResponse.d.ts +140 -0
  45. package/dist/esm/models/ApiKeyUsageResponse.js +110 -0
  46. package/dist/esm/models/ApiKeysResponse.d.ts +52 -0
  47. package/dist/esm/models/ApiKeysResponse.js +57 -0
  48. package/dist/esm/models/Command200Response.d.ts +23 -0
  49. package/dist/esm/models/Command200Response.js +51 -0
  50. package/dist/esm/models/CommandRequest.d.ts +50 -0
  51. package/dist/esm/models/CommandRequest.js +49 -0
  52. package/dist/esm/models/CommandResponse.d.ts +111 -0
  53. package/dist/esm/models/CommandResponse.js +85 -0
  54. package/dist/esm/models/CommandStartedResponse.d.ts +93 -0
  55. package/dist/esm/models/CommandStartedResponse.js +79 -0
  56. package/dist/esm/models/CommandStatusResponse.d.ts +162 -0
  57. package/dist/esm/models/CommandStatusResponse.js +111 -0
  58. package/dist/esm/models/CompletionEvent.d.ts +65 -0
  59. package/dist/esm/models/CompletionEvent.js +63 -0
  60. package/dist/esm/models/Conversation.d.ts +80 -0
  61. package/dist/esm/models/Conversation.js +75 -0
  62. package/dist/esm/models/ConversationsResponse.d.ts +58 -0
  63. package/dist/esm/models/ConversationsResponse.js +62 -0
  64. package/dist/esm/models/CreateSandboxEnvironmentRequest.d.ts +32 -0
  65. package/dist/esm/models/CreateSandboxEnvironmentRequest.js +43 -0
  66. package/dist/esm/models/CreateSandboxRequest.d.ts +92 -0
  67. package/dist/esm/models/CreateSandboxRequest.js +66 -0
  68. package/dist/esm/models/CreateSandboxResponse.d.ts +71 -0
  69. package/dist/esm/models/CreateSandboxResponse.js +72 -0
  70. package/dist/esm/models/CreateScopedApiKey503Response.d.ts +58 -0
  71. package/dist/esm/models/CreateScopedApiKey503Response.js +63 -0
  72. package/dist/esm/models/CreateScopedApiKeyRequest.d.ts +72 -0
  73. package/dist/esm/models/CreateScopedApiKeyRequest.js +60 -0
  74. package/dist/esm/models/DataRetentionPolicyResponse.d.ts +70 -0
  75. package/dist/esm/models/DataRetentionPolicyResponse.js +66 -0
  76. package/dist/esm/models/DataRetentionUpdateRequest.d.ts +45 -0
  77. package/dist/esm/models/DataRetentionUpdateRequest.js +51 -0
  78. package/dist/esm/models/DeletionOperation.d.ts +101 -0
  79. package/dist/esm/models/DeletionOperation.js +95 -0
  80. package/dist/esm/models/DeletionOperationResponse.d.ts +54 -0
  81. package/dist/esm/models/DeletionOperationResponse.js +60 -0
  82. package/dist/esm/models/DesktopRequest.d.ts +33 -0
  83. package/dist/esm/models/DesktopRequest.js +43 -0
  84. package/dist/esm/models/DesktopResponse.d.ts +74 -0
  85. package/dist/esm/models/DesktopResponse.js +59 -0
  86. package/dist/esm/models/EnvironmentItemChangeResponse.d.ts +44 -0
  87. package/dist/esm/models/EnvironmentItemChangeResponse.js +47 -0
  88. package/dist/esm/models/ErrorEnvelope.d.ts +69 -0
  89. package/dist/esm/models/ErrorEnvelope.js +68 -0
  90. package/dist/esm/models/ErrorEnvelopeError.d.ts +52 -0
  91. package/dist/esm/models/ErrorEnvelopeError.js +53 -0
  92. package/dist/esm/models/ErrorEvent.d.ts +65 -0
  93. package/dist/esm/models/ErrorEvent.js +63 -0
  94. package/dist/esm/models/EventsResponse.d.ts +65 -0
  95. package/dist/esm/models/EventsResponse.js +65 -0
  96. package/dist/esm/models/FileReadResponse.d.ts +83 -0
  97. package/dist/esm/models/FileReadResponse.js +80 -0
  98. package/dist/esm/models/FileWriteRequest.d.ts +52 -0
  99. package/dist/esm/models/FileWriteRequest.js +56 -0
  100. package/dist/esm/models/FileWriteResponse.d.ts +77 -0
  101. package/dist/esm/models/FileWriteResponse.js +76 -0
  102. package/dist/esm/models/ForkRequest.d.ts +68 -0
  103. package/dist/esm/models/ForkRequest.js +58 -0
  104. package/dist/esm/models/HostPortRequest.d.ts +44 -0
  105. package/dist/esm/models/HostPortRequest.js +47 -0
  106. package/dist/esm/models/HostPortResponse.d.ts +76 -0
  107. package/dist/esm/models/HostPortResponse.js +64 -0
  108. package/dist/esm/models/LimitsFields.d.ts +262 -0
  109. package/dist/esm/models/LimitsFields.js +128 -0
  110. package/dist/esm/models/LimitsFieldsCurrentLimits.d.ts +45 -0
  111. package/dist/esm/models/LimitsFieldsCurrentLimits.js +47 -0
  112. package/dist/esm/models/LimitsFieldsStartLimits.d.ts +44 -0
  113. package/dist/esm/models/LimitsFieldsStartLimits.js +45 -0
  114. package/dist/esm/models/LimitsFieldsStarts.d.ts +51 -0
  115. package/dist/esm/models/LimitsFieldsStarts.js +48 -0
  116. package/dist/esm/models/LimitsResponse.d.ts +273 -0
  117. package/dist/esm/models/LimitsResponse.js +134 -0
  118. package/dist/esm/models/MeResponse.d.ts +52 -0
  119. package/dist/esm/models/MeResponse.js +58 -0
  120. package/dist/esm/models/MeResponseAllOfUser.d.ts +50 -0
  121. package/dist/esm/models/MeResponseAllOfUser.js +47 -0
  122. package/dist/esm/models/NamedSnapshot.d.ts +83 -0
  123. package/dist/esm/models/NamedSnapshot.js +71 -0
  124. package/dist/esm/models/NamedSnapshotDeletedResponse.d.ts +64 -0
  125. package/dist/esm/models/NamedSnapshotDeletedResponse.js +67 -0
  126. package/dist/esm/models/NamedSnapshotInfoResponse.d.ts +52 -0
  127. package/dist/esm/models/NamedSnapshotInfoResponse.js +58 -0
  128. package/dist/esm/models/NamedSnapshotListResponse.d.ts +52 -0
  129. package/dist/esm/models/NamedSnapshotListResponse.js +58 -0
  130. package/dist/esm/models/NamedSnapshotSaveRequest.d.ts +38 -0
  131. package/dist/esm/models/NamedSnapshotSaveRequest.js +47 -0
  132. package/dist/esm/models/NamedSnapshotSavingResponse.d.ts +65 -0
  133. package/dist/esm/models/NamedSnapshotSavingResponse.js +68 -0
  134. package/dist/esm/models/PageInfo.d.ts +44 -0
  135. package/dist/esm/models/PageInfo.js +51 -0
  136. package/dist/esm/models/PromptEvent.d.ts +70 -0
  137. package/dist/esm/models/PromptEvent.js +66 -0
  138. package/dist/esm/models/PromptEventData.d.ts +56 -0
  139. package/dist/esm/models/PromptEventData.js +60 -0
  140. package/dist/esm/models/PromptRequest.d.ts +84 -0
  141. package/dist/esm/models/PromptRequest.js +69 -0
  142. package/dist/esm/models/PromptResponse.d.ts +101 -0
  143. package/dist/esm/models/PromptResponse.js +86 -0
  144. package/dist/esm/models/PromptRun.d.ts +92 -0
  145. package/dist/esm/models/PromptRun.js +78 -0
  146. package/dist/esm/models/PromptRunResponse.d.ts +58 -0
  147. package/dist/esm/models/PromptRunResponse.js +62 -0
  148. package/dist/esm/models/RepoSelectionRequest.d.ts +38 -0
  149. package/dist/esm/models/RepoSelectionRequest.js +45 -0
  150. package/dist/esm/models/RepoSelectionResponse.d.ts +57 -0
  151. package/dist/esm/models/RepoSelectionResponse.js +60 -0
  152. package/dist/esm/models/ReposResponse.d.ts +65 -0
  153. package/dist/esm/models/ReposResponse.js +64 -0
  154. package/dist/esm/models/Repository.d.ts +69 -0
  155. package/dist/esm/models/Repository.js +55 -0
  156. package/dist/esm/models/RepositoryInstallation.d.ts +51 -0
  157. package/dist/esm/models/RepositoryInstallation.js +48 -0
  158. package/dist/esm/models/ResponseEvent.d.ts +70 -0
  159. package/dist/esm/models/ResponseEvent.js +66 -0
  160. package/dist/esm/models/ResponseEventData.d.ts +52 -0
  161. package/dist/esm/models/ResponseEventData.js +49 -0
  162. package/dist/esm/models/ResumeRequest.d.ts +68 -0
  163. package/dist/esm/models/ResumeRequest.js +58 -0
  164. package/dist/esm/models/RotateApiKey409Response.d.ts +45 -0
  165. package/dist/esm/models/RotateApiKey409Response.js +53 -0
  166. package/dist/esm/models/Sandbox.d.ts +211 -0
  167. package/dist/esm/models/Sandbox.js +138 -0
  168. package/dist/esm/models/SandboxActionResponse.d.ts +57 -0
  169. package/dist/esm/models/SandboxActionResponse.js +58 -0
  170. package/dist/esm/models/SandboxEnvironment.d.ts +107 -0
  171. package/dist/esm/models/SandboxEnvironment.js +92 -0
  172. package/dist/esm/models/SandboxEnvironmentListResponse.d.ts +33 -0
  173. package/dist/esm/models/SandboxEnvironmentListResponse.js +44 -0
  174. package/dist/esm/models/SandboxEnvironmentResponse.d.ts +39 -0
  175. package/dist/esm/models/SandboxEnvironmentResponse.js +46 -0
  176. package/dist/esm/models/SandboxEnvironmentVersionSummary.d.ts +50 -0
  177. package/dist/esm/models/SandboxEnvironmentVersionSummary.js +55 -0
  178. package/dist/esm/models/SandboxEvent.d.ts +65 -0
  179. package/dist/esm/models/SandboxEvent.js +55 -0
  180. package/dist/esm/models/SandboxInfoResponse.d.ts +45 -0
  181. package/dist/esm/models/SandboxInfoResponse.js +52 -0
  182. package/dist/esm/models/SandboxListResponse.d.ts +59 -0
  183. package/dist/esm/models/SandboxListResponse.js +61 -0
  184. package/dist/esm/models/SandboxUsageResponse.d.ts +102 -0
  185. package/dist/esm/models/SandboxUsageResponse.js +92 -0
  186. package/dist/esm/models/SecretFile.d.ts +38 -0
  187. package/dist/esm/models/SecretFile.js +47 -0
  188. package/dist/esm/models/SecretsResponse.d.ts +71 -0
  189. package/dist/esm/models/SecretsResponse.js +64 -0
  190. package/dist/esm/models/SecretsUpdateRequest.d.ts +39 -0
  191. package/dist/esm/models/SecretsUpdateRequest.js +44 -0
  192. package/dist/esm/models/SelectedRepository.d.ts +92 -0
  193. package/dist/esm/models/SelectedRepository.js +61 -0
  194. package/dist/esm/models/SetEnvironmentSecretFileRequest.d.ts +38 -0
  195. package/dist/esm/models/SetEnvironmentSecretFileRequest.js +47 -0
  196. package/dist/esm/models/SetEnvironmentVarRequest.d.ts +32 -0
  197. package/dist/esm/models/SetEnvironmentVarRequest.js +43 -0
  198. package/dist/esm/models/SnapshotChunk.d.ts +68 -0
  199. package/dist/esm/models/SnapshotChunk.js +67 -0
  200. package/dist/esm/models/SnapshotDownloadResponse.d.ts +104 -0
  201. package/dist/esm/models/SnapshotDownloadResponse.js +93 -0
  202. package/dist/esm/models/SnapshotDownloadResponseAllOfInventory.d.ts +38 -0
  203. package/dist/esm/models/SnapshotDownloadResponseAllOfInventory.js +47 -0
  204. package/dist/esm/models/SnapshotLatestResponse.d.ts +52 -0
  205. package/dist/esm/models/SnapshotLatestResponse.js +58 -0
  206. package/dist/esm/models/SnapshotListResponse.d.ts +59 -0
  207. package/dist/esm/models/SnapshotListResponse.js +61 -0
  208. package/dist/esm/models/SnapshotSummary.d.ts +113 -0
  209. package/dist/esm/models/SnapshotSummary.js +90 -0
  210. package/dist/esm/models/SnapshotTreeEntry.d.ts +53 -0
  211. package/dist/esm/models/SnapshotTreeEntry.js +57 -0
  212. package/dist/esm/models/SnapshotTreeResponse.d.ts +100 -0
  213. package/dist/esm/models/SnapshotTreeResponse.js +88 -0
  214. package/dist/esm/models/SshKeyRequest.d.ts +32 -0
  215. package/dist/esm/models/SshKeyRequest.js +43 -0
  216. package/dist/esm/models/SshKeyResponse.d.ts +56 -0
  217. package/dist/esm/models/SshKeyResponse.js +53 -0
  218. package/dist/esm/models/StartWindowUsage.d.ts +44 -0
  219. package/dist/esm/models/StartWindowUsage.js +45 -0
  220. package/dist/esm/models/SteerEvent.d.ts +70 -0
  221. package/dist/esm/models/SteerEvent.js +66 -0
  222. package/dist/esm/models/SteerEventData.d.ts +54 -0
  223. package/dist/esm/models/SteerEventData.js +60 -0
  224. package/dist/esm/models/SteerRequest.d.ts +43 -0
  225. package/dist/esm/models/SteerRequest.js +45 -0
  226. package/dist/esm/models/SteerResponse.d.ts +97 -0
  227. package/dist/esm/models/SteerResponse.js +89 -0
  228. package/dist/esm/models/StopRequest.d.ts +32 -0
  229. package/dist/esm/models/StopRequest.js +41 -0
  230. package/dist/esm/models/SuccessBase.d.ts +38 -0
  231. package/dist/esm/models/SuccessBase.js +47 -0
  232. package/dist/esm/models/UnknownEvent.d.ts +33 -0
  233. package/dist/esm/models/UnknownEvent.js +45 -0
  234. package/dist/esm/models/UpdateSandboxEnvironmentRequest.d.ts +88 -0
  235. package/dist/esm/models/UpdateSandboxEnvironmentRequest.js +61 -0
  236. package/dist/esm/models/UpdateSandboxEnvironmentRequestRepositoriesInner.d.ts +50 -0
  237. package/dist/esm/models/UpdateSandboxEnvironmentRequestRepositoriesInner.js +49 -0
  238. package/dist/esm/models/UpdateSandboxRequest.d.ts +44 -0
  239. package/dist/esm/models/UpdateSandboxRequest.js +45 -0
  240. package/dist/esm/models/UpgradeSandboxEnvironmentRequest.d.ts +32 -0
  241. package/dist/esm/models/UpgradeSandboxEnvironmentRequest.js +41 -0
  242. package/dist/esm/models/UpgradeSandboxEnvironmentResponse.d.ts +44 -0
  243. package/dist/esm/models/UpgradeSandboxEnvironmentResponse.js +51 -0
  244. package/dist/esm/models/Webhook.d.ts +63 -0
  245. package/dist/esm/models/Webhook.js +64 -0
  246. package/dist/esm/models/WebhookCreateRequest.d.ts +45 -0
  247. package/dist/esm/models/WebhookCreateRequest.js +50 -0
  248. package/dist/esm/models/WebhookDeleteResponse.d.ts +44 -0
  249. package/dist/esm/models/WebhookDeleteResponse.js +51 -0
  250. package/dist/esm/models/WebhookEvent.d.ts +52 -0
  251. package/dist/esm/models/WebhookEvent.js +57 -0
  252. package/dist/esm/models/WebhookEventData.d.ts +45 -0
  253. package/dist/esm/models/WebhookEventData.js +52 -0
  254. package/dist/esm/models/WebhookEventDataSandbox.d.ts +38 -0
  255. package/dist/esm/models/WebhookEventDataSandbox.js +47 -0
  256. package/dist/esm/models/WebhookEventType.d.ts +27 -0
  257. package/dist/esm/models/WebhookEventType.js +45 -0
  258. package/dist/esm/models/WebhookListResponse.d.ts +45 -0
  259. package/dist/esm/models/WebhookListResponse.js +52 -0
  260. package/dist/esm/models/WebhookResponse.d.ts +45 -0
  261. package/dist/esm/models/WebhookResponse.js +52 -0
  262. package/dist/esm/models/WebhookSecretResponse.d.ts +51 -0
  263. package/dist/esm/models/WebhookSecretResponse.js +56 -0
  264. package/dist/esm/models/WebhookUpdateRequest.d.ts +45 -0
  265. package/dist/esm/models/WebhookUpdateRequest.js +46 -0
  266. package/dist/esm/models/index.d.ts +123 -0
  267. package/dist/esm/models/index.js +125 -0
  268. package/dist/esm/runtime.d.ts +184 -0
  269. package/dist/esm/runtime.js +337 -0
  270. package/dist/index.d.ts +4 -0
  271. package/dist/index.js +22 -0
  272. package/dist/models/AddEnvironmentRepoRequest.d.ts +38 -0
  273. package/dist/models/AddEnvironmentRepoRequest.js +52 -0
  274. package/dist/models/ApiKey.d.ts +121 -0
  275. package/dist/models/ApiKey.js +105 -0
  276. package/dist/models/ApiKeyCatalog.d.ts +65 -0
  277. package/dist/models/ApiKeyCatalog.js +69 -0
  278. package/dist/models/ApiKeyCatalogScopeResources.d.ts +39 -0
  279. package/dist/models/ApiKeyCatalogScopeResources.js +55 -0
  280. package/dist/models/ApiKeyCreatedResource.d.ts +64 -0
  281. package/dist/models/ApiKeyCreatedResource.js +74 -0
  282. package/dist/models/ApiKeyRequestUsage.d.ts +45 -0
  283. package/dist/models/ApiKeyRequestUsage.js +61 -0
  284. package/dist/models/ApiKeyResourceTotals.d.ts +44 -0
  285. package/dist/models/ApiKeyResourceTotals.js +58 -0
  286. package/dist/models/ApiKeyRevokeResponse.d.ts +45 -0
  287. package/dist/models/ApiKeyRevokeResponse.js +59 -0
  288. package/dist/models/ApiKeyScope.d.ts +57 -0
  289. package/dist/models/ApiKeyScope.js +57 -0
  290. package/dist/models/ApiKeyScopeResource.d.ts +50 -0
  291. package/dist/models/ApiKeyScopeResource.js +62 -0
  292. package/dist/models/ApiKeyScopeSandboxes.d.ts +21 -0
  293. package/dist/models/ApiKeyScopeSandboxes.js +53 -0
  294. package/dist/models/ApiKeySecretResponse.d.ts +57 -0
  295. package/dist/models/ApiKeySecretResponse.js +67 -0
  296. package/dist/models/ApiKeyUsageResponse.d.ts +140 -0
  297. package/dist/models/ApiKeyUsageResponse.js +118 -0
  298. package/dist/models/ApiKeysResponse.d.ts +52 -0
  299. package/dist/models/ApiKeysResponse.js +64 -0
  300. package/dist/models/Command200Response.d.ts +23 -0
  301. package/dist/models/Command200Response.js +57 -0
  302. package/dist/models/CommandRequest.d.ts +50 -0
  303. package/dist/models/CommandRequest.js +56 -0
  304. package/dist/models/CommandResponse.d.ts +111 -0
  305. package/dist/models/CommandResponse.js +93 -0
  306. package/dist/models/CommandStartedResponse.d.ts +93 -0
  307. package/dist/models/CommandStartedResponse.js +87 -0
  308. package/dist/models/CommandStatusResponse.d.ts +162 -0
  309. package/dist/models/CommandStatusResponse.js +119 -0
  310. package/dist/models/CompletionEvent.d.ts +65 -0
  311. package/dist/models/CompletionEvent.js +71 -0
  312. package/dist/models/Conversation.d.ts +80 -0
  313. package/dist/models/Conversation.js +82 -0
  314. package/dist/models/ConversationsResponse.d.ts +58 -0
  315. package/dist/models/ConversationsResponse.js +70 -0
  316. package/dist/models/CreateSandboxEnvironmentRequest.d.ts +32 -0
  317. package/dist/models/CreateSandboxEnvironmentRequest.js +50 -0
  318. package/dist/models/CreateSandboxRequest.d.ts +92 -0
  319. package/dist/models/CreateSandboxRequest.js +74 -0
  320. package/dist/models/CreateSandboxResponse.d.ts +71 -0
  321. package/dist/models/CreateSandboxResponse.js +80 -0
  322. package/dist/models/CreateScopedApiKey503Response.d.ts +58 -0
  323. package/dist/models/CreateScopedApiKey503Response.js +71 -0
  324. package/dist/models/CreateScopedApiKeyRequest.d.ts +72 -0
  325. package/dist/models/CreateScopedApiKeyRequest.js +68 -0
  326. package/dist/models/DataRetentionPolicyResponse.d.ts +70 -0
  327. package/dist/models/DataRetentionPolicyResponse.js +74 -0
  328. package/dist/models/DataRetentionUpdateRequest.d.ts +45 -0
  329. package/dist/models/DataRetentionUpdateRequest.js +59 -0
  330. package/dist/models/DeletionOperation.d.ts +101 -0
  331. package/dist/models/DeletionOperation.js +103 -0
  332. package/dist/models/DeletionOperationResponse.d.ts +54 -0
  333. package/dist/models/DeletionOperationResponse.js +68 -0
  334. package/dist/models/DesktopRequest.d.ts +33 -0
  335. package/dist/models/DesktopRequest.js +50 -0
  336. package/dist/models/DesktopResponse.d.ts +74 -0
  337. package/dist/models/DesktopResponse.js +66 -0
  338. package/dist/models/EnvironmentItemChangeResponse.d.ts +44 -0
  339. package/dist/models/EnvironmentItemChangeResponse.js +54 -0
  340. package/dist/models/ErrorEnvelope.d.ts +69 -0
  341. package/dist/models/ErrorEnvelope.js +75 -0
  342. package/dist/models/ErrorEnvelopeError.d.ts +52 -0
  343. package/dist/models/ErrorEnvelopeError.js +60 -0
  344. package/dist/models/ErrorEvent.d.ts +65 -0
  345. package/dist/models/ErrorEvent.js +71 -0
  346. package/dist/models/EventsResponse.d.ts +65 -0
  347. package/dist/models/EventsResponse.js +73 -0
  348. package/dist/models/FileReadResponse.d.ts +83 -0
  349. package/dist/models/FileReadResponse.js +88 -0
  350. package/dist/models/FileWriteRequest.d.ts +52 -0
  351. package/dist/models/FileWriteRequest.js +64 -0
  352. package/dist/models/FileWriteResponse.d.ts +77 -0
  353. package/dist/models/FileWriteResponse.js +84 -0
  354. package/dist/models/ForkRequest.d.ts +68 -0
  355. package/dist/models/ForkRequest.js +66 -0
  356. package/dist/models/HostPortRequest.d.ts +44 -0
  357. package/dist/models/HostPortRequest.js +54 -0
  358. package/dist/models/HostPortResponse.d.ts +76 -0
  359. package/dist/models/HostPortResponse.js +72 -0
  360. package/dist/models/LimitsFields.d.ts +262 -0
  361. package/dist/models/LimitsFields.js +135 -0
  362. package/dist/models/LimitsFieldsCurrentLimits.d.ts +45 -0
  363. package/dist/models/LimitsFieldsCurrentLimits.js +54 -0
  364. package/dist/models/LimitsFieldsStartLimits.d.ts +44 -0
  365. package/dist/models/LimitsFieldsStartLimits.js +52 -0
  366. package/dist/models/LimitsFieldsStarts.d.ts +51 -0
  367. package/dist/models/LimitsFieldsStarts.js +55 -0
  368. package/dist/models/LimitsResponse.d.ts +273 -0
  369. package/dist/models/LimitsResponse.js +141 -0
  370. package/dist/models/MeResponse.d.ts +52 -0
  371. package/dist/models/MeResponse.js +66 -0
  372. package/dist/models/MeResponseAllOfUser.d.ts +50 -0
  373. package/dist/models/MeResponseAllOfUser.js +54 -0
  374. package/dist/models/NamedSnapshot.d.ts +83 -0
  375. package/dist/models/NamedSnapshot.js +79 -0
  376. package/dist/models/NamedSnapshotDeletedResponse.d.ts +64 -0
  377. package/dist/models/NamedSnapshotDeletedResponse.js +75 -0
  378. package/dist/models/NamedSnapshotInfoResponse.d.ts +52 -0
  379. package/dist/models/NamedSnapshotInfoResponse.js +66 -0
  380. package/dist/models/NamedSnapshotListResponse.d.ts +52 -0
  381. package/dist/models/NamedSnapshotListResponse.js +66 -0
  382. package/dist/models/NamedSnapshotSaveRequest.d.ts +38 -0
  383. package/dist/models/NamedSnapshotSaveRequest.js +54 -0
  384. package/dist/models/NamedSnapshotSavingResponse.d.ts +65 -0
  385. package/dist/models/NamedSnapshotSavingResponse.js +76 -0
  386. package/dist/models/PageInfo.d.ts +44 -0
  387. package/dist/models/PageInfo.js +58 -0
  388. package/dist/models/PromptEvent.d.ts +70 -0
  389. package/dist/models/PromptEvent.js +74 -0
  390. package/dist/models/PromptEventData.d.ts +56 -0
  391. package/dist/models/PromptEventData.js +68 -0
  392. package/dist/models/PromptRequest.d.ts +84 -0
  393. package/dist/models/PromptRequest.js +77 -0
  394. package/dist/models/PromptResponse.d.ts +101 -0
  395. package/dist/models/PromptResponse.js +94 -0
  396. package/dist/models/PromptRun.d.ts +92 -0
  397. package/dist/models/PromptRun.js +86 -0
  398. package/dist/models/PromptRunResponse.d.ts +58 -0
  399. package/dist/models/PromptRunResponse.js +70 -0
  400. package/dist/models/RepoSelectionRequest.d.ts +38 -0
  401. package/dist/models/RepoSelectionRequest.js +52 -0
  402. package/dist/models/RepoSelectionResponse.d.ts +57 -0
  403. package/dist/models/RepoSelectionResponse.js +67 -0
  404. package/dist/models/ReposResponse.d.ts +65 -0
  405. package/dist/models/ReposResponse.js +71 -0
  406. package/dist/models/Repository.d.ts +69 -0
  407. package/dist/models/Repository.js +62 -0
  408. package/dist/models/RepositoryInstallation.d.ts +51 -0
  409. package/dist/models/RepositoryInstallation.js +55 -0
  410. package/dist/models/ResponseEvent.d.ts +70 -0
  411. package/dist/models/ResponseEvent.js +74 -0
  412. package/dist/models/ResponseEventData.d.ts +52 -0
  413. package/dist/models/ResponseEventData.js +56 -0
  414. package/dist/models/ResumeRequest.d.ts +68 -0
  415. package/dist/models/ResumeRequest.js +66 -0
  416. package/dist/models/RotateApiKey409Response.d.ts +45 -0
  417. package/dist/models/RotateApiKey409Response.js +61 -0
  418. package/dist/models/Sandbox.d.ts +211 -0
  419. package/dist/models/Sandbox.js +146 -0
  420. package/dist/models/SandboxActionResponse.d.ts +57 -0
  421. package/dist/models/SandboxActionResponse.js +65 -0
  422. package/dist/models/SandboxEnvironment.d.ts +107 -0
  423. package/dist/models/SandboxEnvironment.js +99 -0
  424. package/dist/models/SandboxEnvironmentListResponse.d.ts +33 -0
  425. package/dist/models/SandboxEnvironmentListResponse.js +51 -0
  426. package/dist/models/SandboxEnvironmentResponse.d.ts +39 -0
  427. package/dist/models/SandboxEnvironmentResponse.js +53 -0
  428. package/dist/models/SandboxEnvironmentVersionSummary.d.ts +50 -0
  429. package/dist/models/SandboxEnvironmentVersionSummary.js +62 -0
  430. package/dist/models/SandboxEvent.d.ts +65 -0
  431. package/dist/models/SandboxEvent.js +62 -0
  432. package/dist/models/SandboxInfoResponse.d.ts +45 -0
  433. package/dist/models/SandboxInfoResponse.js +59 -0
  434. package/dist/models/SandboxListResponse.d.ts +59 -0
  435. package/dist/models/SandboxListResponse.js +69 -0
  436. package/dist/models/SandboxUsageResponse.d.ts +102 -0
  437. package/dist/models/SandboxUsageResponse.js +100 -0
  438. package/dist/models/SecretFile.d.ts +38 -0
  439. package/dist/models/SecretFile.js +54 -0
  440. package/dist/models/SecretsResponse.d.ts +71 -0
  441. package/dist/models/SecretsResponse.js +71 -0
  442. package/dist/models/SecretsUpdateRequest.d.ts +39 -0
  443. package/dist/models/SecretsUpdateRequest.js +51 -0
  444. package/dist/models/SelectedRepository.d.ts +92 -0
  445. package/dist/models/SelectedRepository.js +68 -0
  446. package/dist/models/SetEnvironmentSecretFileRequest.d.ts +38 -0
  447. package/dist/models/SetEnvironmentSecretFileRequest.js +54 -0
  448. package/dist/models/SetEnvironmentVarRequest.d.ts +32 -0
  449. package/dist/models/SetEnvironmentVarRequest.js +50 -0
  450. package/dist/models/SnapshotChunk.d.ts +68 -0
  451. package/dist/models/SnapshotChunk.js +74 -0
  452. package/dist/models/SnapshotDownloadResponse.d.ts +104 -0
  453. package/dist/models/SnapshotDownloadResponse.js +101 -0
  454. package/dist/models/SnapshotDownloadResponseAllOfInventory.d.ts +38 -0
  455. package/dist/models/SnapshotDownloadResponseAllOfInventory.js +54 -0
  456. package/dist/models/SnapshotLatestResponse.d.ts +52 -0
  457. package/dist/models/SnapshotLatestResponse.js +66 -0
  458. package/dist/models/SnapshotListResponse.d.ts +59 -0
  459. package/dist/models/SnapshotListResponse.js +69 -0
  460. package/dist/models/SnapshotSummary.d.ts +113 -0
  461. package/dist/models/SnapshotSummary.js +98 -0
  462. package/dist/models/SnapshotTreeEntry.d.ts +53 -0
  463. package/dist/models/SnapshotTreeEntry.js +65 -0
  464. package/dist/models/SnapshotTreeResponse.d.ts +100 -0
  465. package/dist/models/SnapshotTreeResponse.js +96 -0
  466. package/dist/models/SshKeyRequest.d.ts +32 -0
  467. package/dist/models/SshKeyRequest.js +50 -0
  468. package/dist/models/SshKeyResponse.d.ts +56 -0
  469. package/dist/models/SshKeyResponse.js +60 -0
  470. package/dist/models/StartWindowUsage.d.ts +44 -0
  471. package/dist/models/StartWindowUsage.js +52 -0
  472. package/dist/models/SteerEvent.d.ts +70 -0
  473. package/dist/models/SteerEvent.js +74 -0
  474. package/dist/models/SteerEventData.d.ts +54 -0
  475. package/dist/models/SteerEventData.js +68 -0
  476. package/dist/models/SteerRequest.d.ts +43 -0
  477. package/dist/models/SteerRequest.js +52 -0
  478. package/dist/models/SteerResponse.d.ts +97 -0
  479. package/dist/models/SteerResponse.js +97 -0
  480. package/dist/models/StopRequest.d.ts +32 -0
  481. package/dist/models/StopRequest.js +48 -0
  482. package/dist/models/SuccessBase.d.ts +38 -0
  483. package/dist/models/SuccessBase.js +54 -0
  484. package/dist/models/UnknownEvent.d.ts +33 -0
  485. package/dist/models/UnknownEvent.js +52 -0
  486. package/dist/models/UpdateSandboxEnvironmentRequest.d.ts +88 -0
  487. package/dist/models/UpdateSandboxEnvironmentRequest.js +68 -0
  488. package/dist/models/UpdateSandboxEnvironmentRequestRepositoriesInner.d.ts +50 -0
  489. package/dist/models/UpdateSandboxEnvironmentRequestRepositoriesInner.js +56 -0
  490. package/dist/models/UpdateSandboxRequest.d.ts +44 -0
  491. package/dist/models/UpdateSandboxRequest.js +52 -0
  492. package/dist/models/UpgradeSandboxEnvironmentRequest.d.ts +32 -0
  493. package/dist/models/UpgradeSandboxEnvironmentRequest.js +48 -0
  494. package/dist/models/UpgradeSandboxEnvironmentResponse.d.ts +44 -0
  495. package/dist/models/UpgradeSandboxEnvironmentResponse.js +58 -0
  496. package/dist/models/Webhook.d.ts +63 -0
  497. package/dist/models/Webhook.js +71 -0
  498. package/dist/models/WebhookCreateRequest.d.ts +45 -0
  499. package/dist/models/WebhookCreateRequest.js +57 -0
  500. package/dist/models/WebhookDeleteResponse.d.ts +44 -0
  501. package/dist/models/WebhookDeleteResponse.js +58 -0
  502. package/dist/models/WebhookEvent.d.ts +52 -0
  503. package/dist/models/WebhookEvent.js +64 -0
  504. package/dist/models/WebhookEventData.d.ts +45 -0
  505. package/dist/models/WebhookEventData.js +59 -0
  506. package/dist/models/WebhookEventDataSandbox.d.ts +38 -0
  507. package/dist/models/WebhookEventDataSandbox.js +54 -0
  508. package/dist/models/WebhookEventType.d.ts +27 -0
  509. package/dist/models/WebhookEventType.js +53 -0
  510. package/dist/models/WebhookListResponse.d.ts +45 -0
  511. package/dist/models/WebhookListResponse.js +59 -0
  512. package/dist/models/WebhookResponse.d.ts +45 -0
  513. package/dist/models/WebhookResponse.js +59 -0
  514. package/dist/models/WebhookSecretResponse.d.ts +51 -0
  515. package/dist/models/WebhookSecretResponse.js +63 -0
  516. package/dist/models/WebhookUpdateRequest.d.ts +45 -0
  517. package/dist/models/WebhookUpdateRequest.js +53 -0
  518. package/dist/models/index.d.ts +123 -0
  519. package/dist/models/index.js +141 -0
  520. package/dist/runtime.d.ts +184 -0
  521. package/dist/runtime.js +353 -0
  522. package/docs/AddEnvironmentRepoRequest.md +34 -0
  523. package/docs/ApiKey.md +58 -0
  524. package/docs/ApiKeyCatalog.md +42 -0
  525. package/docs/ApiKeyCatalogScopeResources.md +35 -0
  526. package/docs/ApiKeyCreatedResource.md +40 -0
  527. package/docs/ApiKeyRequestUsage.md +34 -0
  528. package/docs/ApiKeyResourceTotals.md +36 -0
  529. package/docs/ApiKeyRevokeResponse.md +36 -0
  530. package/docs/ApiKeyScope.md +40 -0
  531. package/docs/ApiKeyScopeResource.md +38 -0
  532. package/docs/ApiKeyScopeSandboxes.md +30 -0
  533. package/docs/ApiKeySecretResponse.md +40 -0
  534. package/docs/ApiKeyUsageResponse.md +64 -0
  535. package/docs/ApiKeysResponse.md +38 -0
  536. package/docs/BoatApi.md +4967 -0
  537. package/docs/Command200Response.md +66 -0
  538. package/docs/CommandRequest.md +38 -0
  539. package/docs/CommandResponse.md +56 -0
  540. package/docs/CommandStartedResponse.md +50 -0
  541. package/docs/CommandStatusResponse.md +70 -0
  542. package/docs/CompletionEvent.md +40 -0
  543. package/docs/Conversation.md +48 -0
  544. package/docs/ConversationsResponse.md +38 -0
  545. package/docs/CreateSandboxEnvironmentRequest.md +32 -0
  546. package/docs/CreateSandboxRequest.md +49 -0
  547. package/docs/CreateSandboxResponse.md +40 -0
  548. package/docs/CreateScopedApiKey503Response.md +36 -0
  549. package/docs/CreateScopedApiKeyRequest.md +42 -0
  550. package/docs/DataRetentionPolicyResponse.md +42 -0
  551. package/docs/DataRetentionUpdateRequest.md +34 -0
  552. package/docs/DeletionOperation.md +46 -0
  553. package/docs/DeletionOperationResponse.md +36 -0
  554. package/docs/DesktopRequest.md +33 -0
  555. package/docs/DesktopResponse.md +46 -0
  556. package/docs/EnvironmentItemChangeResponse.md +37 -0
  557. package/docs/ErrorEnvelope.md +44 -0
  558. package/docs/ErrorEnvelopeError.md +38 -0
  559. package/docs/ErrorEvent.md +40 -0
  560. package/docs/EventsResponse.md +40 -0
  561. package/docs/FileReadResponse.md +44 -0
  562. package/docs/FileWriteRequest.md +36 -0
  563. package/docs/FileWriteResponse.md +42 -0
  564. package/docs/ForkRequest.md +40 -0
  565. package/docs/HostPortRequest.md +36 -0
  566. package/docs/HostPortResponse.md +44 -0
  567. package/docs/LimitsFields.md +106 -0
  568. package/docs/LimitsFieldsCurrentLimits.md +36 -0
  569. package/docs/LimitsFieldsStartLimits.md +37 -0
  570. package/docs/LimitsFieldsStarts.md +39 -0
  571. package/docs/LimitsResponse.md +110 -0
  572. package/docs/MeResponse.md +36 -0
  573. package/docs/MeResponseAllOfUser.md +38 -0
  574. package/docs/NamedSnapshot.md +47 -0
  575. package/docs/NamedSnapshotDeletedResponse.md +38 -0
  576. package/docs/NamedSnapshotInfoResponse.md +36 -0
  577. package/docs/NamedSnapshotListResponse.md +36 -0
  578. package/docs/NamedSnapshotSaveRequest.md +34 -0
  579. package/docs/NamedSnapshotSavingResponse.md +38 -0
  580. package/docs/PageInfo.md +36 -0
  581. package/docs/PromptEvent.md +42 -0
  582. package/docs/PromptEventData.md +36 -0
  583. package/docs/PromptRequest.md +43 -0
  584. package/docs/PromptResponse.md +50 -0
  585. package/docs/PromptRun.md +48 -0
  586. package/docs/PromptRunResponse.md +38 -0
  587. package/docs/RepoSelectionRequest.md +35 -0
  588. package/docs/RepoSelectionResponse.md +40 -0
  589. package/docs/ReposResponse.md +42 -0
  590. package/docs/Repository.md +44 -0
  591. package/docs/RepositoryInstallation.md +38 -0
  592. package/docs/ResponseEvent.md +43 -0
  593. package/docs/ResponseEventData.md +38 -0
  594. package/docs/ResumeRequest.md +41 -0
  595. package/docs/RotateApiKey409Response.md +34 -0
  596. package/docs/Sandbox.md +76 -0
  597. package/docs/SandboxActionResponse.md +40 -0
  598. package/docs/SandboxEnvironment.md +57 -0
  599. package/docs/SandboxEnvironmentListResponse.md +32 -0
  600. package/docs/SandboxEnvironmentResponse.md +34 -0
  601. package/docs/SandboxEnvironmentVersionSummary.md +39 -0
  602. package/docs/SandboxEvent.md +42 -0
  603. package/docs/SandboxInfoResponse.md +36 -0
  604. package/docs/SandboxListResponse.md +38 -0
  605. package/docs/SandboxUsageResponse.md +52 -0
  606. package/docs/SecretFile.md +34 -0
  607. package/docs/SecretsResponse.md +44 -0
  608. package/docs/SecretsUpdateRequest.md +35 -0
  609. package/docs/SelectedRepository.md +52 -0
  610. package/docs/SetEnvironmentSecretFileRequest.md +34 -0
  611. package/docs/SetEnvironmentVarRequest.md +32 -0
  612. package/docs/SnapshotChunk.md +44 -0
  613. package/docs/SnapshotDownloadResponse.md +50 -0
  614. package/docs/SnapshotDownloadResponseAllOfInventory.md +34 -0
  615. package/docs/SnapshotLatestResponse.md +36 -0
  616. package/docs/SnapshotListResponse.md +38 -0
  617. package/docs/SnapshotSummary.md +54 -0
  618. package/docs/SnapshotTreeEntry.md +36 -0
  619. package/docs/SnapshotTreeResponse.md +52 -0
  620. package/docs/SshKeyRequest.md +32 -0
  621. package/docs/SshKeyResponse.md +40 -0
  622. package/docs/StartWindowUsage.md +37 -0
  623. package/docs/SteerEvent.md +43 -0
  624. package/docs/SteerEventData.md +36 -0
  625. package/docs/SteerRequest.md +35 -0
  626. package/docs/SteerResponse.md +46 -0
  627. package/docs/StopRequest.md +33 -0
  628. package/docs/SuccessBase.md +34 -0
  629. package/docs/UnknownEvent.md +32 -0
  630. package/docs/UpdateSandboxEnvironmentRequest.md +51 -0
  631. package/docs/UpdateSandboxEnvironmentRequestRepositoriesInner.md +38 -0
  632. package/docs/UpdateSandboxRequest.md +36 -0
  633. package/docs/UpgradeSandboxEnvironmentRequest.md +33 -0
  634. package/docs/UpgradeSandboxEnvironmentResponse.md +36 -0
  635. package/docs/Webhook.md +42 -0
  636. package/docs/WebhookCreateRequest.md +36 -0
  637. package/docs/WebhookDeleteResponse.md +36 -0
  638. package/docs/WebhookEvent.md +39 -0
  639. package/docs/WebhookEventData.md +36 -0
  640. package/docs/WebhookEventDataSandbox.md +34 -0
  641. package/docs/WebhookEventType.md +30 -0
  642. package/docs/WebhookListResponse.md +36 -0
  643. package/docs/WebhookResponse.md +36 -0
  644. package/docs/WebhookSecretResponse.md +38 -0
  645. package/docs/WebhookUpdateRequest.md +36 -0
  646. package/package.json +19 -0
  647. package/src/apis/BoatApi.ts +4594 -0
  648. package/src/apis/index.ts +3 -0
  649. package/src/boat-helpers.ts +187 -0
  650. package/src/index.ts +7 -0
  651. package/src/models/AddEnvironmentRepoRequest.ts +74 -0
  652. package/src/models/ApiKey.ts +212 -0
  653. package/src/models/ApiKeyCatalog.ts +118 -0
  654. package/src/models/ApiKeyCatalogScopeResources.ts +83 -0
  655. package/src/models/ApiKeyCreatedResource.ts +113 -0
  656. package/src/models/ApiKeyRequestUsage.ts +85 -0
  657. package/src/models/ApiKeyResourceTotals.ts +84 -0
  658. package/src/models/ApiKeyRevokeResponse.ts +92 -0
  659. package/src/models/ApiKeyScope.ts +105 -0
  660. package/src/models/ApiKeyScopeResource.ts +93 -0
  661. package/src/models/ApiKeyScopeSandboxes.ts +59 -0
  662. package/src/models/ApiKeySecretResponse.ts +110 -0
  663. package/src/models/ApiKeyUsageResponse.ts +246 -0
  664. package/src/models/ApiKeysResponse.ts +108 -0
  665. package/src/models/Command200Response.ts +76 -0
  666. package/src/models/CommandRequest.ts +90 -0
  667. package/src/models/CommandResponse.ts +178 -0
  668. package/src/models/CommandStartedResponse.ts +154 -0
  669. package/src/models/CommandStatusResponse.ts +246 -0
  670. package/src/models/CompletionEvent.ts +111 -0
  671. package/src/models/Conversation.ts +138 -0
  672. package/src/models/ConversationsResponse.ts +111 -0
  673. package/src/models/CreateSandboxEnvironmentRequest.ts +66 -0
  674. package/src/models/CreateSandboxRequest.ts +142 -0
  675. package/src/models/CreateSandboxResponse.ts +128 -0
  676. package/src/models/CreateScopedApiKey503Response.ts +102 -0
  677. package/src/models/CreateScopedApiKeyRequest.ts +118 -0
  678. package/src/models/DataRetentionPolicyResponse.ts +120 -0
  679. package/src/models/DataRetentionUpdateRequest.ts +84 -0
  680. package/src/models/DeletionOperation.ts +161 -0
  681. package/src/models/DeletionOperationResponse.ts +104 -0
  682. package/src/models/DesktopRequest.ts +68 -0
  683. package/src/models/DesktopResponse.ts +123 -0
  684. package/src/models/EnvironmentItemChangeResponse.ts +82 -0
  685. package/src/models/ErrorEnvelope.ts +128 -0
  686. package/src/models/ErrorEnvelopeError.ts +92 -0
  687. package/src/models/ErrorEvent.ts +111 -0
  688. package/src/models/EventsResponse.ts +126 -0
  689. package/src/models/FileReadResponse.ts +139 -0
  690. package/src/models/FileWriteRequest.ts +94 -0
  691. package/src/models/FileWriteResponse.ts +130 -0
  692. package/src/models/ForkRequest.ts +110 -0
  693. package/src/models/HostPortRequest.ts +82 -0
  694. package/src/models/HostPortResponse.ts +126 -0
  695. package/src/models/LimitsFields.ts +390 -0
  696. package/src/models/LimitsFieldsCurrentLimits.ts +84 -0
  697. package/src/models/LimitsFieldsStartLimits.ts +81 -0
  698. package/src/models/LimitsFieldsStarts.ts +97 -0
  699. package/src/models/LimitsResponse.ts +405 -0
  700. package/src/models/MeResponse.ts +102 -0
  701. package/src/models/MeResponseAllOfUser.ts +89 -0
  702. package/src/models/NamedSnapshot.ts +137 -0
  703. package/src/models/NamedSnapshotDeletedResponse.ts +111 -0
  704. package/src/models/NamedSnapshotInfoResponse.ts +102 -0
  705. package/src/models/NamedSnapshotListResponse.ts +102 -0
  706. package/src/models/NamedSnapshotSaveRequest.ts +75 -0
  707. package/src/models/NamedSnapshotSavingResponse.ts +119 -0
  708. package/src/models/PageInfo.ts +84 -0
  709. package/src/models/PromptEvent.ts +127 -0
  710. package/src/models/PromptEventData.ts +98 -0
  711. package/src/models/PromptRequest.ts +132 -0
  712. package/src/models/PromptResponse.ts +170 -0
  713. package/src/models/PromptRun.ts +149 -0
  714. package/src/models/PromptRunResponse.ts +111 -0
  715. package/src/models/RepoSelectionRequest.ts +74 -0
  716. package/src/models/RepoSelectionResponse.ts +110 -0
  717. package/src/models/ReposResponse.ts +132 -0
  718. package/src/models/Repository.ts +116 -0
  719. package/src/models/RepositoryInstallation.ts +97 -0
  720. package/src/models/ResponseEvent.ts +127 -0
  721. package/src/models/ResponseEventData.ts +90 -0
  722. package/src/models/ResumeRequest.ts +110 -0
  723. package/src/models/RotateApiKey409Response.ts +85 -0
  724. package/src/models/Sandbox.ts +299 -0
  725. package/src/models/SandboxActionResponse.ts +109 -0
  726. package/src/models/SandboxEnvironment.ts +195 -0
  727. package/src/models/SandboxEnvironmentListResponse.ts +74 -0
  728. package/src/models/SandboxEnvironmentResponse.ts +82 -0
  729. package/src/models/SandboxEnvironmentVersionSummary.ts +93 -0
  730. package/src/models/SandboxEvent.ts +109 -0
  731. package/src/models/SandboxInfoResponse.ts +92 -0
  732. package/src/models/SandboxListResponse.ts +117 -0
  733. package/src/models/SandboxUsageResponse.ts +169 -0
  734. package/src/models/SecretFile.ts +75 -0
  735. package/src/models/SecretsResponse.ts +126 -0
  736. package/src/models/SecretsUpdateRequest.ts +81 -0
  737. package/src/models/SelectedRepository.ts +145 -0
  738. package/src/models/SetEnvironmentSecretFileRequest.ts +75 -0
  739. package/src/models/SetEnvironmentVarRequest.ts +66 -0
  740. package/src/models/SnapshotChunk.ts +120 -0
  741. package/src/models/SnapshotDownloadResponse.ts +181 -0
  742. package/src/models/SnapshotDownloadResponseAllOfInventory.ts +75 -0
  743. package/src/models/SnapshotLatestResponse.ts +102 -0
  744. package/src/models/SnapshotListResponse.ts +117 -0
  745. package/src/models/SnapshotSummary.ts +179 -0
  746. package/src/models/SnapshotTreeEntry.ts +95 -0
  747. package/src/models/SnapshotTreeResponse.ts +173 -0
  748. package/src/models/SshKeyRequest.ts +66 -0
  749. package/src/models/SshKeyResponse.ts +99 -0
  750. package/src/models/StartWindowUsage.ts +81 -0
  751. package/src/models/SteerEvent.ts +127 -0
  752. package/src/models/SteerEventData.ts +97 -0
  753. package/src/models/SteerRequest.ts +79 -0
  754. package/src/models/SteerResponse.ts +156 -0
  755. package/src/models/StopRequest.ts +65 -0
  756. package/src/models/SuccessBase.ts +75 -0
  757. package/src/models/UnknownEvent.ts +69 -0
  758. package/src/models/UpdateSandboxEnvironmentRequest.ts +152 -0
  759. package/src/models/UpdateSandboxEnvironmentRequestRepositoriesInner.ts +90 -0
  760. package/src/models/UpdateSandboxRequest.ts +81 -0
  761. package/src/models/UpgradeSandboxEnvironmentRequest.ts +65 -0
  762. package/src/models/UpgradeSandboxEnvironmentResponse.ts +84 -0
  763. package/src/models/Webhook.ts +119 -0
  764. package/src/models/WebhookCreateRequest.ts +91 -0
  765. package/src/models/WebhookDeleteResponse.ts +84 -0
  766. package/src/models/WebhookEvent.ts +110 -0
  767. package/src/models/WebhookEventData.ts +92 -0
  768. package/src/models/WebhookEventDataSandbox.ts +75 -0
  769. package/src/models/WebhookEventType.ts +55 -0
  770. package/src/models/WebhookListResponse.ts +92 -0
  771. package/src/models/WebhookResponse.ts +92 -0
  772. package/src/models/WebhookSecretResponse.ts +101 -0
  773. package/src/models/WebhookUpdateRequest.ts +89 -0
  774. package/src/models/index.ts +125 -0
  775. package/src/runtime.ts +449 -0
  776. package/tsconfig.esm.json +7 -0
  777. package/tsconfig.json +22 -0
@@ -0,0 +1,4967 @@
1
+ # BoatApi
2
+
3
+ All URIs are relative to *https://boat.dev/api/v1*
4
+
5
+ | Method | HTTP request | Description |
6
+ |------------- | ------------- | -------------|
7
+ | [**addEnvironmentRepo**](BoatApi.md#addenvironmentrepooperation) | **POST** /environments/{environmentId}/repos | Add a repository to an environment |
8
+ | [**apiKeyUsage**](BoatApi.md#apikeyusage) | **GET** /api-keys/{apiKeyId}/usage | Get API key usage |
9
+ | [**apiKeys**](BoatApi.md#apikeys) | **GET** /api-keys | List API keys |
10
+ | [**artifact**](BoatApi.md#artifact) | **GET** /sandboxes/{sandboxId}/artifacts | Download a sandbox artifact |
11
+ | [**command**](BoatApi.md#commandoperation) | **POST** /sandboxes/{sandboxId}/commands | Execute a command in a sandbox |
12
+ | [**commandStatus**](BoatApi.md#commandstatus) | **GET** /sandboxes/{sandboxId}/commands/{processId} | Get detached command status and logs |
13
+ | [**conversations**](BoatApi.md#conversations) | **GET** /sandboxes/{sandboxId}/conversations | List boat conversations |
14
+ | [**create**](BoatApi.md#create) | **POST** /sandboxes | Create sandbox |
15
+ | [**createEnvironment**](BoatApi.md#createenvironment) | **POST** /environments | Create a sandbox environment |
16
+ | [**createScopedApiKey**](BoatApi.md#createscopedapikeyoperation) | **POST** /api-keys/scoped | Create a scoped API key |
17
+ | [**createWebhook**](BoatApi.md#createwebhook) | **POST** /webhooks | Create webhook |
18
+ | [**deleteEnvironment**](BoatApi.md#deleteenvironment) | **DELETE** /environments/{environmentId} | Delete a sandbox environment |
19
+ | [**deleteEnvironmentRepo**](BoatApi.md#deleteenvironmentrepo) | **DELETE** /environments/{environmentId}/repos/{repositoryId} | Remove a repository from an environment |
20
+ | [**deleteEnvironmentSecretFile**](BoatApi.md#deleteenvironmentsecretfile) | **DELETE** /environments/{environmentId}/secret-files | Remove one secret file |
21
+ | [**deleteEnvironmentVar**](BoatApi.md#deleteenvironmentvar) | **DELETE** /environments/{environmentId}/vars/{key} | Remove one environment variable |
22
+ | [**deleteNamedSnapshot**](BoatApi.md#deletenamedsnapshot) | **DELETE** /named-snapshots/{name} | Remove a named snapshot |
23
+ | [**deleteSandbox**](BoatApi.md#deletesandbox) | **DELETE** /sandboxes/{sandboxId} | Permanently delete sandbox data |
24
+ | [**deleteSnapshot**](BoatApi.md#deletesnapshot) | **DELETE** /snapshots/{snapshotId} | Permanently delete snapshot data |
25
+ | [**deleteWebhook**](BoatApi.md#deletewebhook) | **DELETE** /webhooks/{webhookId} | Delete webhook |
26
+ | [**desktop**](BoatApi.md#desktopoperation) | **POST** /sandboxes/{sandboxId}/desktop | Get desktop streaming URL |
27
+ | [**environments**](BoatApi.md#environments) | **GET** /environments | List Sandbox environments |
28
+ | [**events**](BoatApi.md#events) | **GET** /sandboxes/{sandboxId}/events | List boat events |
29
+ | [**fork**](BoatApi.md#forkoperation) | **POST** /sandboxes/{sandboxId}/fork | Fork sandbox |
30
+ | [**get**](BoatApi.md#get) | **GET** /sandboxes/{sandboxId} | Get sandbox |
31
+ | [**getDataRetention**](BoatApi.md#getdataretention) | **GET** /account/data-retention | Get account data-retention policy |
32
+ | [**getDeletionOperation**](BoatApi.md#getdeletionoperation) | **GET** /deletion-operations/{operationId} | Get deletion operation |
33
+ | [**getLatestSandboxSnapshot**](BoatApi.md#getlatestsandboxsnapshot) | **GET** /sandboxes/{sandboxId}/snapshots/latest | Get latest boat snapshot |
34
+ | [**getNamedSnapshot**](BoatApi.md#getnamedsnapshot) | **GET** /named-snapshots/{name} | Get a named snapshot |
35
+ | [**getSnapshotDownload**](BoatApi.md#getsnapshotdownload) | **GET** /snapshots/{snapshotId}/download | Get snapshot download |
36
+ | [**getSnapshotFile**](BoatApi.md#getsnapshotfile) | **GET** /snapshots/{snapshotId}/files | Download a file or folder from a snapshot |
37
+ | [**getSnapshotTree**](BoatApi.md#getsnapshottree) | **GET** /snapshots/{snapshotId}/tree | Get snapshot file tree |
38
+ | [**getWebhook**](BoatApi.md#getwebhook) | **GET** /webhooks/{webhookId} | Get webhook |
39
+ | [**hostPort**](BoatApi.md#hostportoperation) | **POST** /sandboxes/{sandboxId}/host | Expose a sandbox port on a public HTTPS URL |
40
+ | [**interrupt**](BoatApi.md#interrupt) | **POST** /sandboxes/{sandboxId}/interrupt | Interrupt running work |
41
+ | [**limits**](BoatApi.md#limits) | **GET** /limits | Get Boat limits |
42
+ | [**listNamedSnapshots**](BoatApi.md#listnamedsnapshots) | **GET** /named-snapshots | List named snapshots |
43
+ | [**listSandboxSnapshots**](BoatApi.md#listsandboxsnapshots) | **GET** /sandboxes/{sandboxId}/snapshots | List boat snapshots |
44
+ | [**listSnapshots**](BoatApi.md#listsnapshots) | **GET** /snapshots | List snapshots |
45
+ | [**listWebhooks**](BoatApi.md#listwebhooks) | **GET** /webhooks | List webhooks |
46
+ | [**me**](BoatApi.md#me) | **GET** /me | Get current Boat user |
47
+ | [**prompt**](BoatApi.md#promptoperation) | **POST** /sandboxes/{sandboxId}/prompt | Prompt Sandbox |
48
+ | [**promptRunStatus**](BoatApi.md#promptrunstatus) | **GET** /sandboxes/{sandboxId}/prompts/{promptId} | Get prompt run status |
49
+ | [**readFile**](BoatApi.md#readfile) | **GET** /sandboxes/{sandboxId}/files | Read a file from a sandbox |
50
+ | [**repos**](BoatApi.md#repos) | **GET** /repos | List GitHub repositories available to Boat |
51
+ | [**resume**](BoatApi.md#resumeoperation) | **POST** /sandboxes/{sandboxId}/resume | Resume sandbox |
52
+ | [**revokeApiKey**](BoatApi.md#revokeapikey) | **DELETE** /api-keys/{apiKeyId} | Revoke an API key |
53
+ | [**rotateApiKey**](BoatApi.md#rotateapikey) | **POST** /api-keys/{apiKeyId}/rotate | Rotate an API key |
54
+ | [**rotateWebhookSigningSecret**](BoatApi.md#rotatewebhooksigningsecret) | **POST** /webhooks/{webhookId}/rotate | Rotate webhook signing secret |
55
+ | [**sandboxes**](BoatApi.md#sandboxes) | **GET** /sandboxes | List sandboxes |
56
+ | [**saveNamedSnapshot**](BoatApi.md#savenamedsnapshot) | **POST** /named-snapshots | Save a named snapshot |
57
+ | [**secrets**](BoatApi.md#secrets) | **GET** /secrets | Get Boat secrets setup |
58
+ | [**selectRepo**](BoatApi.md#selectrepo) | **POST** /repos | Select repository for sandboxes |
59
+ | [**setEnvironmentSecretFile**](BoatApi.md#setenvironmentsecretfileoperation) | **PUT** /environments/{environmentId}/secret-files | Write one secret file |
60
+ | [**setEnvironmentVar**](BoatApi.md#setenvironmentvaroperation) | **PUT** /environments/{environmentId}/vars/{key} | Set one environment variable |
61
+ | [**sshKey**](BoatApi.md#sshkeyoperation) | **POST** /sandboxes/{sandboxId}/sshkey | Configure sandbox SSH key |
62
+ | [**steer**](BoatApi.md#steeroperation) | **POST** /sandboxes/{sandboxId}/steer | Steer a running turn |
63
+ | [**stop**](BoatApi.md#stopoperation) | **POST** /sandboxes/{sandboxId}/stop | Stop and archive sandbox |
64
+ | [**update**](BoatApi.md#update) | **PATCH** /sandboxes/{sandboxId} | Update sandbox |
65
+ | [**updateDataRetention**](BoatApi.md#updatedataretention) | **PATCH** /account/data-retention | Update account data-retention policy |
66
+ | [**updateEnvironment**](BoatApi.md#updateenvironment) | **PUT** /environments/{environmentId} | Update a sandbox environment |
67
+ | [**updateSecrets**](BoatApi.md#updatesecrets) | **POST** /secrets | Update Boat secrets setup |
68
+ | [**updateWebhook**](BoatApi.md#updatewebhook) | **PATCH** /webhooks/{webhookId} | Update webhook |
69
+ | [**upgradeEnvironment**](BoatApi.md#upgradeenvironment) | **POST** /environments/{environmentId}/upgrade | Upgrade sandboxes to an environment\'s latest version |
70
+ | [**usage**](BoatApi.md#usage) | **GET** /sandboxes/{sandboxId}/usage | Get boat usage |
71
+ | [**writeFile**](BoatApi.md#writefile) | **PUT** /sandboxes/{sandboxId}/files | Write a file in a sandbox |
72
+
73
+
74
+
75
+ ## addEnvironmentRepo
76
+
77
+ > EnvironmentItemChangeResponse addEnvironmentRepo(environmentId, addEnvironmentRepoRequest)
78
+
79
+ Add a repository to an environment
80
+
81
+ Adds a repository (or updates its base branch) by database id from the repository list. Mints a new immutable version.
82
+
83
+ ### Example
84
+
85
+ ```ts
86
+ import {
87
+ Configuration,
88
+ BoatApi,
89
+ } from '@boatdev/sdk';
90
+ import type { AddEnvironmentRepoOperationRequest } from '@boatdev/sdk';
91
+
92
+ async function example() {
93
+ console.log("🚀 Testing @boatdev/sdk SDK...");
94
+ const config = new Configuration({
95
+ // Configure HTTP bearer authorization: BoatBearerAuth
96
+ accessToken: "YOUR BEARER TOKEN",
97
+ });
98
+ const api = new BoatApi(config);
99
+
100
+ const body = {
101
+ // string
102
+ environmentId: 38400000-8cf0-11bd-b23e-10b96e4ef00d,
103
+ // AddEnvironmentRepoRequest
104
+ addEnvironmentRepoRequest: ...,
105
+ } satisfies AddEnvironmentRepoOperationRequest;
106
+
107
+ try {
108
+ const data = await api.addEnvironmentRepo(body);
109
+ console.log(data);
110
+ } catch (error) {
111
+ console.error(error);
112
+ }
113
+ }
114
+
115
+ // Run the test
116
+ example().catch(console.error);
117
+ ```
118
+
119
+ ### Parameters
120
+
121
+
122
+ | Name | Type | Description | Notes |
123
+ |------------- | ------------- | ------------- | -------------|
124
+ | **environmentId** | `string` | | [Defaults to `undefined`] |
125
+ | **addEnvironmentRepoRequest** | [AddEnvironmentRepoRequest](AddEnvironmentRepoRequest.md) | | |
126
+
127
+ ### Return type
128
+
129
+ [**EnvironmentItemChangeResponse**](EnvironmentItemChangeResponse.md)
130
+
131
+ ### Authorization
132
+
133
+ [BoatBearerAuth](../README.md#BoatBearerAuth)
134
+
135
+ ### HTTP request headers
136
+
137
+ - **Content-Type**: `application/json`
138
+ - **Accept**: `application/json`
139
+
140
+
141
+ ### HTTP response details
142
+ | Status code | Description | Response headers |
143
+ |-------------|-------------|------------------|
144
+ | **200** | New version minted. | - |
145
+ | **400** | Invalid request body or parameters. | - |
146
+ | **401** | Missing or invalid bearer token. | - |
147
+ | **404** | Resource not found. | - |
148
+
149
+ [[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
150
+
151
+
152
+ ## apiKeyUsage
153
+
154
+ > ApiKeyUsageResponse apiKeyUsage(apiKeyId)
155
+
156
+ Get API key usage
157
+
158
+ Returns the key\'s request total for the 30-day UTC window and the sandboxes and Agents it created that still exist, including sandboxes that never got a sandbox row. Works for revoked keys owned by the authenticated account.
159
+
160
+ ### Example
161
+
162
+ ```ts
163
+ import {
164
+ Configuration,
165
+ BoatApi,
166
+ } from '@boatdev/sdk';
167
+ import type { ApiKeyUsageRequest } from '@boatdev/sdk';
168
+
169
+ async function example() {
170
+ console.log("🚀 Testing @boatdev/sdk SDK...");
171
+ const config = new Configuration({
172
+ // Configure HTTP bearer authorization: BoatBearerAuth
173
+ accessToken: "YOUR BEARER TOKEN",
174
+ });
175
+ const api = new BoatApi(config);
176
+
177
+ const body = {
178
+ // string | API key ID returned by `GET /api-keys`.
179
+ apiKeyId: apiKeyId_example,
180
+ } satisfies ApiKeyUsageRequest;
181
+
182
+ try {
183
+ const data = await api.apiKeyUsage(body);
184
+ console.log(data);
185
+ } catch (error) {
186
+ console.error(error);
187
+ }
188
+ }
189
+
190
+ // Run the test
191
+ example().catch(console.error);
192
+ ```
193
+
194
+ ### Parameters
195
+
196
+
197
+ | Name | Type | Description | Notes |
198
+ |------------- | ------------- | ------------- | -------------|
199
+ | **apiKeyId** | `string` | API key ID returned by `GET /api-keys`. | [Defaults to `undefined`] |
200
+
201
+ ### Return type
202
+
203
+ [**ApiKeyUsageResponse**](ApiKeyUsageResponse.md)
204
+
205
+ ### Authorization
206
+
207
+ [BoatBearerAuth](../README.md#BoatBearerAuth)
208
+
209
+ ### HTTP request headers
210
+
211
+ - **Content-Type**: Not defined
212
+ - **Accept**: `application/json`
213
+
214
+
215
+ ### HTTP response details
216
+ | Status code | Description | Response headers |
217
+ |-------------|-------------|------------------|
218
+ | **200** | Usage and created resources for the key. | - |
219
+ | **401** | Missing or invalid bearer token. | - |
220
+ | **404** | Resource not found. | - |
221
+
222
+ [[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
223
+
224
+
225
+ ## apiKeys
226
+
227
+ > ApiKeysResponse apiKeys()
228
+
229
+ List API keys
230
+
231
+ Lists API key metadata only. Raw key secrets are not returned after creation/rotation. Results include expiry and scope. A restricted API-key caller receives `apiKeys: []`; only an unrestricted account key or browser/CLI session receives the account inventory. Bearer header is unchanged; scope lives on the key.
232
+
233
+ ### Example
234
+
235
+ ```ts
236
+ import {
237
+ Configuration,
238
+ BoatApi,
239
+ } from '@boatdev/sdk';
240
+ import type { ApiKeysRequest } from '@boatdev/sdk';
241
+
242
+ async function example() {
243
+ console.log("🚀 Testing @boatdev/sdk SDK...");
244
+ const config = new Configuration({
245
+ // Configure HTTP bearer authorization: BoatBearerAuth
246
+ accessToken: "YOUR BEARER TOKEN",
247
+ });
248
+ const api = new BoatApi(config);
249
+
250
+ try {
251
+ const data = await api.apiKeys();
252
+ console.log(data);
253
+ } catch (error) {
254
+ console.error(error);
255
+ }
256
+ }
257
+
258
+ // Run the test
259
+ example().catch(console.error);
260
+ ```
261
+
262
+ ### Parameters
263
+
264
+ This endpoint does not need any parameter.
265
+
266
+ ### Return type
267
+
268
+ [**ApiKeysResponse**](ApiKeysResponse.md)
269
+
270
+ ### Authorization
271
+
272
+ [BoatBearerAuth](../README.md#BoatBearerAuth)
273
+
274
+ ### HTTP request headers
275
+
276
+ - **Content-Type**: Not defined
277
+ - **Accept**: `application/json`
278
+
279
+
280
+ ### HTTP response details
281
+ | Status code | Description | Response headers |
282
+ |-------------|-------------|------------------|
283
+ | **200** | API key metadata. | - |
284
+ | **401** | Missing or invalid bearer token. | - |
285
+ | **403** | Authenticated token is not allowed to perform this action. | - |
286
+
287
+ [[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
288
+
289
+
290
+ ## artifact
291
+
292
+ > Blob artifact(sandboxId, path)
293
+
294
+ Download a sandbox artifact
295
+
296
+ ### Example
297
+
298
+ ```ts
299
+ import {
300
+ Configuration,
301
+ BoatApi,
302
+ } from '@boatdev/sdk';
303
+ import type { ArtifactRequest } from '@boatdev/sdk';
304
+
305
+ async function example() {
306
+ console.log("🚀 Testing @boatdev/sdk SDK...");
307
+ const config = new Configuration({
308
+ // Configure HTTP bearer authorization: BoatBearerAuth
309
+ accessToken: "YOUR BEARER TOKEN",
310
+ });
311
+ const api = new BoatApi(config);
312
+
313
+ const body = {
314
+ // string | Public Sandbox id returned by create/list/get sandbox calls.
315
+ sandboxId: sandboxId_example,
316
+ // string
317
+ path: path_example,
318
+ } satisfies ArtifactRequest;
319
+
320
+ try {
321
+ const data = await api.artifact(body);
322
+ console.log(data);
323
+ } catch (error) {
324
+ console.error(error);
325
+ }
326
+ }
327
+
328
+ // Run the test
329
+ example().catch(console.error);
330
+ ```
331
+
332
+ ### Parameters
333
+
334
+
335
+ | Name | Type | Description | Notes |
336
+ |------------- | ------------- | ------------- | -------------|
337
+ | **sandboxId** | `string` | Public Sandbox id returned by create/list/get sandbox calls. | [Defaults to `undefined`] |
338
+ | **path** | `string` | | [Defaults to `undefined`] |
339
+
340
+ ### Return type
341
+
342
+ **Blob**
343
+
344
+ ### Authorization
345
+
346
+ [BoatBearerAuth](../README.md#BoatBearerAuth)
347
+
348
+ ### HTTP request headers
349
+
350
+ - **Content-Type**: Not defined
351
+ - **Accept**: `application/octet-stream`
352
+
353
+
354
+ ### HTTP response details
355
+ | Status code | Description | Response headers |
356
+ |-------------|-------------|------------------|
357
+ | **200** | Artifact bytes. | - |
358
+
359
+ [[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
360
+
361
+
362
+ ## command
363
+
364
+ > Command200Response command(sandboxId, commandRequest)
365
+
366
+ Execute a command in a sandbox
367
+
368
+ Runs the command synchronously by default (timeout configurable via `timeoutSeconds`, 600s cap). With `detached: true` the command starts in the background and a process id is returned immediately; poll `/sandboxes/{sandboxId}/commands/{processId}` for status and logs. Returns 400 invalid_timeout when `timeoutSeconds` is not an integer in 1-600. Returns 409 boat_starting (retryable) while the sandbox is still provisioning -- wait until the sandbox state is ready before running commands. Command execution is never retried automatically: a 502 boat_direct_failed means the command may already be running on the sandbox.
369
+
370
+ ### Example
371
+
372
+ ```ts
373
+ import {
374
+ Configuration,
375
+ BoatApi,
376
+ } from '@boatdev/sdk';
377
+ import type { CommandOperationRequest } from '@boatdev/sdk';
378
+
379
+ async function example() {
380
+ console.log("🚀 Testing @boatdev/sdk SDK...");
381
+ const config = new Configuration({
382
+ // Configure HTTP bearer authorization: BoatBearerAuth
383
+ accessToken: "YOUR BEARER TOKEN",
384
+ });
385
+ const api = new BoatApi(config);
386
+
387
+ const body = {
388
+ // string | Public Sandbox id returned by create/list/get sandbox calls.
389
+ sandboxId: sandboxId_example,
390
+ // CommandRequest
391
+ commandRequest: ...,
392
+ } satisfies CommandOperationRequest;
393
+
394
+ try {
395
+ const data = await api.command(body);
396
+ console.log(data);
397
+ } catch (error) {
398
+ console.error(error);
399
+ }
400
+ }
401
+
402
+ // Run the test
403
+ example().catch(console.error);
404
+ ```
405
+
406
+ ### Parameters
407
+
408
+
409
+ | Name | Type | Description | Notes |
410
+ |------------- | ------------- | ------------- | -------------|
411
+ | **sandboxId** | `string` | Public Sandbox id returned by create/list/get sandbox calls. | [Defaults to `undefined`] |
412
+ | **commandRequest** | [CommandRequest](CommandRequest.md) | | |
413
+
414
+ ### Return type
415
+
416
+ [**Command200Response**](Command200Response.md)
417
+
418
+ ### Authorization
419
+
420
+ [BoatBearerAuth](../README.md#BoatBearerAuth)
421
+
422
+ ### HTTP request headers
423
+
424
+ - **Content-Type**: `application/json`
425
+ - **Accept**: `application/json`
426
+
427
+
428
+ ### HTTP response details
429
+ | Status code | Description | Response headers |
430
+ |-------------|-------------|------------------|
431
+ | **200** | Command result (synchronous) or process start confirmation (detached). | - |
432
+ | **400** | Invalid request body or parameters. | - |
433
+ | **401** | Missing or invalid bearer token. | - |
434
+ | **404** | Resource not found. | - |
435
+ | **409** | Request conflicts with current account or sandbox state. | - |
436
+
437
+ [[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
438
+
439
+
440
+ ## commandStatus
441
+
442
+ > CommandStatusResponse commandStatus(sandboxId, processId, tailBytes)
443
+
444
+ Get detached command status and logs
445
+
446
+ ### Example
447
+
448
+ ```ts
449
+ import {
450
+ Configuration,
451
+ BoatApi,
452
+ } from '@boatdev/sdk';
453
+ import type { CommandStatusRequest } from '@boatdev/sdk';
454
+
455
+ async function example() {
456
+ console.log("🚀 Testing @boatdev/sdk SDK...");
457
+ const config = new Configuration({
458
+ // Configure HTTP bearer authorization: BoatBearerAuth
459
+ accessToken: "YOUR BEARER TOKEN",
460
+ });
461
+ const api = new BoatApi(config);
462
+
463
+ const body = {
464
+ // string | Public Sandbox id returned by create/list/get sandbox calls.
465
+ sandboxId: sandboxId_example,
466
+ // number | Process id returned by a detached command start.
467
+ processId: 56,
468
+ // number | Cap each returned log to its last N bytes. Defaults to 524288 (512 KiB). (optional)
469
+ tailBytes: 56,
470
+ } satisfies CommandStatusRequest;
471
+
472
+ try {
473
+ const data = await api.commandStatus(body);
474
+ console.log(data);
475
+ } catch (error) {
476
+ console.error(error);
477
+ }
478
+ }
479
+
480
+ // Run the test
481
+ example().catch(console.error);
482
+ ```
483
+
484
+ ### Parameters
485
+
486
+
487
+ | Name | Type | Description | Notes |
488
+ |------------- | ------------- | ------------- | -------------|
489
+ | **sandboxId** | `string` | Public Sandbox id returned by create/list/get sandbox calls. | [Defaults to `undefined`] |
490
+ | **processId** | `number` | Process id returned by a detached command start. | [Defaults to `undefined`] |
491
+ | **tailBytes** | `number` | Cap each returned log to its last N bytes. Defaults to 524288 (512 KiB). | [Optional] [Defaults to `undefined`] |
492
+
493
+ ### Return type
494
+
495
+ [**CommandStatusResponse**](CommandStatusResponse.md)
496
+
497
+ ### Authorization
498
+
499
+ [BoatBearerAuth](../README.md#BoatBearerAuth)
500
+
501
+ ### HTTP request headers
502
+
503
+ - **Content-Type**: Not defined
504
+ - **Accept**: `application/json`
505
+
506
+
507
+ ### HTTP response details
508
+ | Status code | Description | Response headers |
509
+ |-------------|-------------|------------------|
510
+ | **200** | Process status and log tails. | - |
511
+ | **400** | Invalid request body or parameters. | - |
512
+ | **401** | Missing or invalid bearer token. | - |
513
+ | **404** | Resource not found. | - |
514
+
515
+ [[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
516
+
517
+
518
+ ## conversations
519
+
520
+ > ConversationsResponse conversations(sandboxId)
521
+
522
+ List boat conversations
523
+
524
+ Every conversation on the sandbox, most recently prompted first, with what you need to pick one: how many prompts it holds, whether a turn is running in it right now, the last harness and model it ran on, a preview of its last prompt, and `current`, the one a `POST /prompt` without `new` or `conversationId` would continue. Pass an `id` back as `conversationId` on `POST /prompt` to resume that thread, or as `conversation` on `POST /steer`, `POST /interrupt` and `GET /events` to scope those. See [Integrated agents](/integrated-agents).
525
+
526
+ ### Example
527
+
528
+ ```ts
529
+ import {
530
+ Configuration,
531
+ BoatApi,
532
+ } from '@boatdev/sdk';
533
+ import type { ConversationsRequest } from '@boatdev/sdk';
534
+
535
+ async function example() {
536
+ console.log("🚀 Testing @boatdev/sdk SDK...");
537
+ const config = new Configuration({
538
+ // Configure HTTP bearer authorization: BoatBearerAuth
539
+ accessToken: "YOUR BEARER TOKEN",
540
+ });
541
+ const api = new BoatApi(config);
542
+
543
+ const body = {
544
+ // string | Public Sandbox id returned by create/list/get sandbox calls.
545
+ sandboxId: sandboxId_example,
546
+ } satisfies ConversationsRequest;
547
+
548
+ try {
549
+ const data = await api.conversations(body);
550
+ console.log(data);
551
+ } catch (error) {
552
+ console.error(error);
553
+ }
554
+ }
555
+
556
+ // Run the test
557
+ example().catch(console.error);
558
+ ```
559
+
560
+ ### Parameters
561
+
562
+
563
+ | Name | Type | Description | Notes |
564
+ |------------- | ------------- | ------------- | -------------|
565
+ | **sandboxId** | `string` | Public Sandbox id returned by create/list/get sandbox calls. | [Defaults to `undefined`] |
566
+
567
+ ### Return type
568
+
569
+ [**ConversationsResponse**](ConversationsResponse.md)
570
+
571
+ ### Authorization
572
+
573
+ [BoatBearerAuth](../README.md#BoatBearerAuth)
574
+
575
+ ### HTTP request headers
576
+
577
+ - **Content-Type**: Not defined
578
+ - **Accept**: `application/json`
579
+
580
+
581
+ ### HTTP response details
582
+ | Status code | Description | Response headers |
583
+ |-------------|-------------|------------------|
584
+ | **200** | Conversations on the sandbox. A Sandbox that was never prompted returns an empty list. | - |
585
+ | **401** | Missing or invalid bearer token. | - |
586
+ | **402** | Account cannot currently create or operate sandboxes. The error body may include a dashboard billing URL, but billing actions are not part of the v1 API. | - |
587
+ | **404** | Resource not found. | - |
588
+
589
+ [[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
590
+
591
+
592
+ ## create
593
+
594
+ > CreateSandboxResponse create(idempotencyKey, org, xBoatOrg, createSandboxRequest)
595
+
596
+ Create sandbox
597
+
598
+ Provision a new cloud computer. Store the returned `sandbox.id` with your product job/session record. Send an `Idempotency-Key` header to make this call safe to retry after a lost response without creating a second billable sandbox.
599
+
600
+ ### Example
601
+
602
+ ```ts
603
+ import {
604
+ Configuration,
605
+ BoatApi,
606
+ } from '@boatdev/sdk';
607
+ import type { CreateRequest } from '@boatdev/sdk';
608
+
609
+ async function example() {
610
+ console.log("🚀 Testing @boatdev/sdk SDK...");
611
+ const config = new Configuration({
612
+ // Configure HTTP bearer authorization: BoatBearerAuth
613
+ accessToken: "YOUR BEARER TOKEN",
614
+ });
615
+ const api = new BoatApi(config);
616
+
617
+ const body = {
618
+ // string | Optional exactly-once key for creating a sandbox. Send your own opaque, account-unique value (a UUID) to make `POST /sandboxes` safe to retry when the response is lost (network timeout, 5xx): the first request creates the sandbox and binds it to the key; every later request with the **same account, key, and request body** returns that same sandbox instead of creating a second, billable one. Behavior: keys are retained for **24 hours**; a concurrent or early retry while the first sandbox is still being minted returns `409` `idempotency_in_progress` (retry shortly, same key); reusing a key with a **different body** returns `409` `idempotency_key_reused`; timeouts and 5xx are safe to retry with the same key; a create that fails before the sandbox exists releases the key within ~2 minutes so a retry can create the sandbox. Omit the header to keep the default (non-idempotent) behavior. (optional)
619
+ idempotencyKey: idempotencyKey_example,
620
+ // string | Billing wallet for this request. A team id you belong to reads that team\'s limits / bills a create to that team. Your own account id is personal. Sandboxes, snapshots, and environments stay creator-private. (optional)
621
+ org: org_example,
622
+ // string | Same as the `org` query parameter. Query wins when both are set. (optional)
623
+ xBoatOrg: xBoatOrg_example,
624
+ // CreateSandboxRequest (optional)
625
+ createSandboxRequest: ...,
626
+ } satisfies CreateRequest;
627
+
628
+ try {
629
+ const data = await api.create(body);
630
+ console.log(data);
631
+ } catch (error) {
632
+ console.error(error);
633
+ }
634
+ }
635
+
636
+ // Run the test
637
+ example().catch(console.error);
638
+ ```
639
+
640
+ ### Parameters
641
+
642
+
643
+ | Name | Type | Description | Notes |
644
+ |------------- | ------------- | ------------- | -------------|
645
+ | **idempotencyKey** | `string` | Optional exactly-once key for creating a sandbox. Send your own opaque, account-unique value (a UUID) to make `POST /sandboxes` safe to retry when the response is lost (network timeout, 5xx): the first request creates the sandbox and binds it to the key; every later request with the **same account, key, and request body** returns that same sandbox instead of creating a second, billable one. Behavior: keys are retained for **24 hours**; a concurrent or early retry while the first sandbox is still being minted returns `409` `idempotency_in_progress` (retry shortly, same key); reusing a key with a **different body** returns `409` `idempotency_key_reused`; timeouts and 5xx are safe to retry with the same key; a create that fails before the sandbox exists releases the key within ~2 minutes so a retry can create the sandbox. Omit the header to keep the default (non-idempotent) behavior. | [Optional] [Defaults to `undefined`] |
646
+ | **org** | `string` | Billing wallet for this request. A team id you belong to reads that team\'s limits / bills a create to that team. Your own account id is personal. Sandboxes, snapshots, and environments stay creator-private. | [Optional] [Defaults to `undefined`] |
647
+ | **xBoatOrg** | `string` | Same as the `org` query parameter. Query wins when both are set. | [Optional] [Defaults to `undefined`] |
648
+ | **createSandboxRequest** | [CreateSandboxRequest](CreateSandboxRequest.md) | | [Optional] |
649
+
650
+ ### Return type
651
+
652
+ [**CreateSandboxResponse**](CreateSandboxResponse.md)
653
+
654
+ ### Authorization
655
+
656
+ [BoatBearerAuth](../README.md#BoatBearerAuth)
657
+
658
+ ### HTTP request headers
659
+
660
+ - **Content-Type**: `application/json`
661
+ - **Accept**: `application/json`
662
+
663
+
664
+ ### HTTP response details
665
+ | Status code | Description | Response headers |
666
+ |-------------|-------------|------------------|
667
+ | **202** | Boat accepted for provisioning. | - |
668
+ | **401** | Missing or invalid bearer token. | - |
669
+ | **402** | Account cannot currently create or operate sandboxes. The error body may include a dashboard billing URL, but billing actions are not part of the v1 API. | - |
670
+ | **409** | Request conflicts with current account or sandbox state. | - |
671
+ | **429** | Machine start or concurrent-sandbox limit reached. Create, fork and resume each count as one machine start against your plan\'s start limits (see the Billing guide; `rate_limited`, naming the window you hit). A sandbox that would exceed your plan\'s concurrent-sandbox cap is refused with `limit_reached`, or `member_limit_reached` when an organization owner has capped you below the plan. | - |
672
+
673
+ [[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
674
+
675
+
676
+ ## createEnvironment
677
+
678
+ > SandboxEnvironmentListResponse createEnvironment(createSandboxEnvironmentRequest)
679
+
680
+ Create a sandbox environment
681
+
682
+ Create a new named environment. It starts on version 1 with all fine-grained flags on and `safeForThirdParties` off.
683
+
684
+ ### Example
685
+
686
+ ```ts
687
+ import {
688
+ Configuration,
689
+ BoatApi,
690
+ } from '@boatdev/sdk';
691
+ import type { CreateEnvironmentRequest } from '@boatdev/sdk';
692
+
693
+ async function example() {
694
+ console.log("🚀 Testing @boatdev/sdk SDK...");
695
+ const config = new Configuration({
696
+ // Configure HTTP bearer authorization: BoatBearerAuth
697
+ accessToken: "YOUR BEARER TOKEN",
698
+ });
699
+ const api = new BoatApi(config);
700
+
701
+ const body = {
702
+ // CreateSandboxEnvironmentRequest
703
+ createSandboxEnvironmentRequest: ...,
704
+ } satisfies CreateEnvironmentRequest;
705
+
706
+ try {
707
+ const data = await api.createEnvironment(body);
708
+ console.log(data);
709
+ } catch (error) {
710
+ console.error(error);
711
+ }
712
+ }
713
+
714
+ // Run the test
715
+ example().catch(console.error);
716
+ ```
717
+
718
+ ### Parameters
719
+
720
+
721
+ | Name | Type | Description | Notes |
722
+ |------------- | ------------- | ------------- | -------------|
723
+ | **createSandboxEnvironmentRequest** | [CreateSandboxEnvironmentRequest](CreateSandboxEnvironmentRequest.md) | | |
724
+
725
+ ### Return type
726
+
727
+ [**SandboxEnvironmentListResponse**](SandboxEnvironmentListResponse.md)
728
+
729
+ ### Authorization
730
+
731
+ [BoatBearerAuth](../README.md#BoatBearerAuth)
732
+
733
+ ### HTTP request headers
734
+
735
+ - **Content-Type**: `application/json`
736
+ - **Accept**: `application/json`
737
+
738
+
739
+ ### HTTP response details
740
+ | Status code | Description | Response headers |
741
+ |-------------|-------------|------------------|
742
+ | **200** | Environment created; full list returned. | - |
743
+ | **400** | Invalid request body or parameters. | - |
744
+ | **401** | Missing or invalid bearer token. | - |
745
+ | **409** | Request conflicts with current account or sandbox state. | - |
746
+
747
+ [[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
748
+
749
+
750
+ ## createScopedApiKey
751
+
752
+ > ApiKeySecretResponse createScopedApiKey(createScopedApiKeyRequest)
753
+
754
+ Create a scoped API key
755
+
756
+ 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.
757
+
758
+ ### Example
759
+
760
+ ```ts
761
+ import {
762
+ Configuration,
763
+ BoatApi,
764
+ } from '@boatdev/sdk';
765
+ import type { CreateScopedApiKeyOperationRequest } from '@boatdev/sdk';
766
+
767
+ async function example() {
768
+ console.log("🚀 Testing @boatdev/sdk SDK...");
769
+ const config = new Configuration({
770
+ // Configure HTTP bearer authorization: BoatBearerAuth
771
+ accessToken: "YOUR BEARER TOKEN",
772
+ });
773
+ const api = new BoatApi(config);
774
+
775
+ const body = {
776
+ // CreateScopedApiKeyRequest
777
+ createScopedApiKeyRequest: ...,
778
+ } satisfies CreateScopedApiKeyOperationRequest;
779
+
780
+ try {
781
+ const data = await api.createScopedApiKey(body);
782
+ console.log(data);
783
+ } catch (error) {
784
+ console.error(error);
785
+ }
786
+ }
787
+
788
+ // Run the test
789
+ example().catch(console.error);
790
+ ```
791
+
792
+ ### Parameters
793
+
794
+
795
+ | Name | Type | Description | Notes |
796
+ |------------- | ------------- | ------------- | -------------|
797
+ | **createScopedApiKeyRequest** | [CreateScopedApiKeyRequest](CreateScopedApiKeyRequest.md) | | |
798
+
799
+ ### Return type
800
+
801
+ [**ApiKeySecretResponse**](ApiKeySecretResponse.md)
802
+
803
+ ### Authorization
804
+
805
+ [BoatBearerAuth](../README.md#BoatBearerAuth)
806
+
807
+ ### HTTP request headers
808
+
809
+ - **Content-Type**: `application/json`
810
+ - **Accept**: `application/json`
811
+
812
+
813
+ ### HTTP response details
814
+ | Status code | Description | Response headers |
815
+ |-------------|-------------|------------------|
816
+ | **201** | Created key metadata plus the one-time secret. | - |
817
+ | **400** | Invalid request body or parameters. | - |
818
+ | **401** | Missing or invalid bearer token. | - |
819
+ | **403** | Authenticated token is not allowed to perform this action. | - |
820
+ | **503** | Scoped credential creation has not been activated yet. | - |
821
+
822
+ [[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
823
+
824
+
825
+ ## createWebhook
826
+
827
+ > WebhookSecretResponse createWebhook(webhookCreateRequest)
828
+
829
+ Create webhook
830
+
831
+ Registers an account-wide endpoint for sandbox lifecycle events. The endpoint must use HTTPS on port 443 and resolve only to public addresses. Redirects are not followed during delivery. The signing secret is returned only in this response. An account can register at most 10 unique endpoint URLs.
832
+
833
+ ### Example
834
+
835
+ ```ts
836
+ import {
837
+ Configuration,
838
+ BoatApi,
839
+ } from '@boatdev/sdk';
840
+ import type { CreateWebhookRequest } from '@boatdev/sdk';
841
+
842
+ async function example() {
843
+ console.log("🚀 Testing @boatdev/sdk SDK...");
844
+ const config = new Configuration({
845
+ // Configure HTTP bearer authorization: BoatBearerAuth
846
+ accessToken: "YOUR BEARER TOKEN",
847
+ });
848
+ const api = new BoatApi(config);
849
+
850
+ const body = {
851
+ // WebhookCreateRequest
852
+ webhookCreateRequest: {"name":"Production automation","url":"https://example.com/hooks/sandbox","events":["sandbox.ready","sandbox.error"]},
853
+ } satisfies CreateWebhookRequest;
854
+
855
+ try {
856
+ const data = await api.createWebhook(body);
857
+ console.log(data);
858
+ } catch (error) {
859
+ console.error(error);
860
+ }
861
+ }
862
+
863
+ // Run the test
864
+ example().catch(console.error);
865
+ ```
866
+
867
+ ### Parameters
868
+
869
+
870
+ | Name | Type | Description | Notes |
871
+ |------------- | ------------- | ------------- | -------------|
872
+ | **webhookCreateRequest** | [WebhookCreateRequest](WebhookCreateRequest.md) | | |
873
+
874
+ ### Return type
875
+
876
+ [**WebhookSecretResponse**](WebhookSecretResponse.md)
877
+
878
+ ### Authorization
879
+
880
+ [BoatBearerAuth](../README.md#BoatBearerAuth)
881
+
882
+ ### HTTP request headers
883
+
884
+ - **Content-Type**: `application/json`
885
+ - **Accept**: `application/json`
886
+
887
+
888
+ ### HTTP response details
889
+ | Status code | Description | Response headers |
890
+ |-------------|-------------|------------------|
891
+ | **201** | Webhook created. Store the one-time signing secret now. | - |
892
+ | **400** | Invalid request body or parameters. | - |
893
+ | **401** | Missing or invalid bearer token. | - |
894
+ | **409** | Request conflicts with current account or sandbox state. | - |
895
+
896
+ [[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
897
+
898
+
899
+ ## deleteEnvironment
900
+
901
+ > SandboxEnvironmentResponse deleteEnvironment(environmentId)
902
+
903
+ Delete a sandbox environment
904
+
905
+ Soft-deletes an environment. The default environment cannot be deleted, and at least one environment is always kept.
906
+
907
+ ### Example
908
+
909
+ ```ts
910
+ import {
911
+ Configuration,
912
+ BoatApi,
913
+ } from '@boatdev/sdk';
914
+ import type { DeleteEnvironmentRequest } from '@boatdev/sdk';
915
+
916
+ async function example() {
917
+ console.log("🚀 Testing @boatdev/sdk SDK...");
918
+ const config = new Configuration({
919
+ // Configure HTTP bearer authorization: BoatBearerAuth
920
+ accessToken: "YOUR BEARER TOKEN",
921
+ });
922
+ const api = new BoatApi(config);
923
+
924
+ const body = {
925
+ // string | Environment id returned by `GET /environments`.
926
+ environmentId: 38400000-8cf0-11bd-b23e-10b96e4ef00d,
927
+ } satisfies DeleteEnvironmentRequest;
928
+
929
+ try {
930
+ const data = await api.deleteEnvironment(body);
931
+ console.log(data);
932
+ } catch (error) {
933
+ console.error(error);
934
+ }
935
+ }
936
+
937
+ // Run the test
938
+ example().catch(console.error);
939
+ ```
940
+
941
+ ### Parameters
942
+
943
+
944
+ | Name | Type | Description | Notes |
945
+ |------------- | ------------- | ------------- | -------------|
946
+ | **environmentId** | `string` | Environment id returned by `GET /environments`. | [Defaults to `undefined`] |
947
+
948
+ ### Return type
949
+
950
+ [**SandboxEnvironmentResponse**](SandboxEnvironmentResponse.md)
951
+
952
+ ### Authorization
953
+
954
+ [BoatBearerAuth](../README.md#BoatBearerAuth)
955
+
956
+ ### HTTP request headers
957
+
958
+ - **Content-Type**: Not defined
959
+ - **Accept**: `application/json`
960
+
961
+
962
+ ### HTTP response details
963
+ | Status code | Description | Response headers |
964
+ |-------------|-------------|------------------|
965
+ | **200** | Environment soft-deleted. | - |
966
+ | **401** | Missing or invalid bearer token. | - |
967
+ | **404** | Resource not found. | - |
968
+ | **409** | Request conflicts with current account or sandbox state. | - |
969
+
970
+ [[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
971
+
972
+
973
+ ## deleteEnvironmentRepo
974
+
975
+ > EnvironmentItemChangeResponse deleteEnvironmentRepo(environmentId, repositoryId)
976
+
977
+ Remove a repository from an environment
978
+
979
+ Removes one repository from the environment\'s selection. Mints a new immutable version.
980
+
981
+ ### Example
982
+
983
+ ```ts
984
+ import {
985
+ Configuration,
986
+ BoatApi,
987
+ } from '@boatdev/sdk';
988
+ import type { DeleteEnvironmentRepoRequest } from '@boatdev/sdk';
989
+
990
+ async function example() {
991
+ console.log("🚀 Testing @boatdev/sdk SDK...");
992
+ const config = new Configuration({
993
+ // Configure HTTP bearer authorization: BoatBearerAuth
994
+ accessToken: "YOUR BEARER TOKEN",
995
+ });
996
+ const api = new BoatApi(config);
997
+
998
+ const body = {
999
+ // string
1000
+ environmentId: 38400000-8cf0-11bd-b23e-10b96e4ef00d,
1001
+ // string | The repository `databaseId`.
1002
+ repositoryId: repositoryId_example,
1003
+ } satisfies DeleteEnvironmentRepoRequest;
1004
+
1005
+ try {
1006
+ const data = await api.deleteEnvironmentRepo(body);
1007
+ console.log(data);
1008
+ } catch (error) {
1009
+ console.error(error);
1010
+ }
1011
+ }
1012
+
1013
+ // Run the test
1014
+ example().catch(console.error);
1015
+ ```
1016
+
1017
+ ### Parameters
1018
+
1019
+
1020
+ | Name | Type | Description | Notes |
1021
+ |------------- | ------------- | ------------- | -------------|
1022
+ | **environmentId** | `string` | | [Defaults to `undefined`] |
1023
+ | **repositoryId** | `string` | The repository `databaseId`. | [Defaults to `undefined`] |
1024
+
1025
+ ### Return type
1026
+
1027
+ [**EnvironmentItemChangeResponse**](EnvironmentItemChangeResponse.md)
1028
+
1029
+ ### Authorization
1030
+
1031
+ [BoatBearerAuth](../README.md#BoatBearerAuth)
1032
+
1033
+ ### HTTP request headers
1034
+
1035
+ - **Content-Type**: Not defined
1036
+ - **Accept**: `application/json`
1037
+
1038
+
1039
+ ### HTTP response details
1040
+ | Status code | Description | Response headers |
1041
+ |-------------|-------------|------------------|
1042
+ | **200** | New version minted. | - |
1043
+ | **401** | Missing or invalid bearer token. | - |
1044
+ | **404** | Resource not found. | - |
1045
+
1046
+ [[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
1047
+
1048
+
1049
+ ## deleteEnvironmentSecretFile
1050
+
1051
+ > EnvironmentItemChangeResponse deleteEnvironmentSecretFile(path, environmentId)
1052
+
1053
+ Remove one secret file
1054
+
1055
+ Removes the secret file at `path`. Mints a new immutable version.
1056
+
1057
+ ### Example
1058
+
1059
+ ```ts
1060
+ import {
1061
+ Configuration,
1062
+ BoatApi,
1063
+ } from '@boatdev/sdk';
1064
+ import type { DeleteEnvironmentSecretFileRequest } from '@boatdev/sdk';
1065
+
1066
+ async function example() {
1067
+ console.log("🚀 Testing @boatdev/sdk SDK...");
1068
+ const config = new Configuration({
1069
+ // Configure HTTP bearer authorization: BoatBearerAuth
1070
+ accessToken: "YOUR BEARER TOKEN",
1071
+ });
1072
+ const api = new BoatApi(config);
1073
+
1074
+ const body = {
1075
+ // string
1076
+ path: path_example,
1077
+ // string
1078
+ environmentId: 38400000-8cf0-11bd-b23e-10b96e4ef00d,
1079
+ } satisfies DeleteEnvironmentSecretFileRequest;
1080
+
1081
+ try {
1082
+ const data = await api.deleteEnvironmentSecretFile(body);
1083
+ console.log(data);
1084
+ } catch (error) {
1085
+ console.error(error);
1086
+ }
1087
+ }
1088
+
1089
+ // Run the test
1090
+ example().catch(console.error);
1091
+ ```
1092
+
1093
+ ### Parameters
1094
+
1095
+
1096
+ | Name | Type | Description | Notes |
1097
+ |------------- | ------------- | ------------- | -------------|
1098
+ | **path** | `string` | | [Defaults to `undefined`] |
1099
+ | **environmentId** | `string` | | [Defaults to `undefined`] |
1100
+
1101
+ ### Return type
1102
+
1103
+ [**EnvironmentItemChangeResponse**](EnvironmentItemChangeResponse.md)
1104
+
1105
+ ### Authorization
1106
+
1107
+ [BoatBearerAuth](../README.md#BoatBearerAuth)
1108
+
1109
+ ### HTTP request headers
1110
+
1111
+ - **Content-Type**: Not defined
1112
+ - **Accept**: `application/json`
1113
+
1114
+
1115
+ ### HTTP response details
1116
+ | Status code | Description | Response headers |
1117
+ |-------------|-------------|------------------|
1118
+ | **200** | New version minted. | - |
1119
+ | **401** | Missing or invalid bearer token. | - |
1120
+ | **404** | Resource not found. | - |
1121
+
1122
+ [[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
1123
+
1124
+
1125
+ ## deleteEnvironmentVar
1126
+
1127
+ > EnvironmentItemChangeResponse deleteEnvironmentVar(environmentId, key)
1128
+
1129
+ Remove one environment variable
1130
+
1131
+ Removes a single variable. Mints a new immutable version.
1132
+
1133
+ ### Example
1134
+
1135
+ ```ts
1136
+ import {
1137
+ Configuration,
1138
+ BoatApi,
1139
+ } from '@boatdev/sdk';
1140
+ import type { DeleteEnvironmentVarRequest } from '@boatdev/sdk';
1141
+
1142
+ async function example() {
1143
+ console.log("🚀 Testing @boatdev/sdk SDK...");
1144
+ const config = new Configuration({
1145
+ // Configure HTTP bearer authorization: BoatBearerAuth
1146
+ accessToken: "YOUR BEARER TOKEN",
1147
+ });
1148
+ const api = new BoatApi(config);
1149
+
1150
+ const body = {
1151
+ // string
1152
+ environmentId: 38400000-8cf0-11bd-b23e-10b96e4ef00d,
1153
+ // string | Environment variable name.
1154
+ key: key_example,
1155
+ } satisfies DeleteEnvironmentVarRequest;
1156
+
1157
+ try {
1158
+ const data = await api.deleteEnvironmentVar(body);
1159
+ console.log(data);
1160
+ } catch (error) {
1161
+ console.error(error);
1162
+ }
1163
+ }
1164
+
1165
+ // Run the test
1166
+ example().catch(console.error);
1167
+ ```
1168
+
1169
+ ### Parameters
1170
+
1171
+
1172
+ | Name | Type | Description | Notes |
1173
+ |------------- | ------------- | ------------- | -------------|
1174
+ | **environmentId** | `string` | | [Defaults to `undefined`] |
1175
+ | **key** | `string` | Environment variable name. | [Defaults to `undefined`] |
1176
+
1177
+ ### Return type
1178
+
1179
+ [**EnvironmentItemChangeResponse**](EnvironmentItemChangeResponse.md)
1180
+
1181
+ ### Authorization
1182
+
1183
+ [BoatBearerAuth](../README.md#BoatBearerAuth)
1184
+
1185
+ ### HTTP request headers
1186
+
1187
+ - **Content-Type**: Not defined
1188
+ - **Accept**: `application/json`
1189
+
1190
+
1191
+ ### HTTP response details
1192
+ | Status code | Description | Response headers |
1193
+ |-------------|-------------|------------------|
1194
+ | **200** | New version minted. | - |
1195
+ | **401** | Missing or invalid bearer token. | - |
1196
+ | **404** | Resource not found. | - |
1197
+
1198
+ [[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
1199
+
1200
+
1201
+ ## deleteNamedSnapshot
1202
+
1203
+ > NamedSnapshotDeletedResponse deleteNamedSnapshot(name)
1204
+
1205
+ Remove a named snapshot
1206
+
1207
+ Remove a named snapshot and release its storage (`boat snapshot rm <name>` in the CLI). Sandboxes already deployed from it are unaffected.
1208
+
1209
+ ### Example
1210
+
1211
+ ```ts
1212
+ import {
1213
+ Configuration,
1214
+ BoatApi,
1215
+ } from '@boatdev/sdk';
1216
+ import type { DeleteNamedSnapshotRequest } from '@boatdev/sdk';
1217
+
1218
+ async function example() {
1219
+ console.log("🚀 Testing @boatdev/sdk SDK...");
1220
+ const config = new Configuration({
1221
+ // Configure HTTP bearer authorization: BoatBearerAuth
1222
+ accessToken: "YOUR BEARER TOKEN",
1223
+ });
1224
+ const api = new BoatApi(config);
1225
+
1226
+ const body = {
1227
+ // string
1228
+ name: name_example,
1229
+ } satisfies DeleteNamedSnapshotRequest;
1230
+
1231
+ try {
1232
+ const data = await api.deleteNamedSnapshot(body);
1233
+ console.log(data);
1234
+ } catch (error) {
1235
+ console.error(error);
1236
+ }
1237
+ }
1238
+
1239
+ // Run the test
1240
+ example().catch(console.error);
1241
+ ```
1242
+
1243
+ ### Parameters
1244
+
1245
+
1246
+ | Name | Type | Description | Notes |
1247
+ |------------- | ------------- | ------------- | -------------|
1248
+ | **name** | `string` | | [Defaults to `undefined`] |
1249
+
1250
+ ### Return type
1251
+
1252
+ [**NamedSnapshotDeletedResponse**](NamedSnapshotDeletedResponse.md)
1253
+
1254
+ ### Authorization
1255
+
1256
+ [BoatBearerAuth](../README.md#BoatBearerAuth)
1257
+
1258
+ ### HTTP request headers
1259
+
1260
+ - **Content-Type**: Not defined
1261
+ - **Accept**: `application/json`
1262
+
1263
+
1264
+ ### HTTP response details
1265
+ | Status code | Description | Response headers |
1266
+ |-------------|-------------|------------------|
1267
+ | **200** | Removed. | - |
1268
+ | **401** | Missing or invalid bearer token. | - |
1269
+ | **404** | Resource not found. | - |
1270
+ | **409** | `save_in_progress`: a save under this name is still running. Wait for it to settle before removing it. | - |
1271
+
1272
+ [[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
1273
+
1274
+
1275
+ ## deleteSandbox
1276
+
1277
+ > DeletionOperationResponse deleteSandbox(xAsciiConfirmDelete, sandboxId)
1278
+
1279
+ Permanently delete sandbox data
1280
+
1281
+ Accept irreversible background deletion of the sandbox machine, snapshots, and content-bearing records. This is not archive: the sandbox cannot be resumed. Named snapshots and other shared artifacts remain independent. Poll the returned operation until `completed`.
1282
+
1283
+ ### Example
1284
+
1285
+ ```ts
1286
+ import {
1287
+ Configuration,
1288
+ BoatApi,
1289
+ } from '@boatdev/sdk';
1290
+ import type { DeleteSandboxRequest } from '@boatdev/sdk';
1291
+
1292
+ async function example() {
1293
+ console.log("🚀 Testing @boatdev/sdk SDK...");
1294
+ const config = new Configuration({
1295
+ // Configure HTTP bearer authorization: BoatBearerAuth
1296
+ accessToken: "YOUR BEARER TOKEN",
1297
+ });
1298
+ const api = new BoatApi(config);
1299
+
1300
+ const body = {
1301
+ // string | Must exactly equal the target `sandboxId` or `snapshotId`. A missing or mismatched value returns `409` without accepting deletion.
1302
+ xAsciiConfirmDelete: xAsciiConfirmDelete_example,
1303
+ // string | Public Sandbox id returned by create/list/get sandbox calls.
1304
+ sandboxId: sandboxId_example,
1305
+ } satisfies DeleteSandboxRequest;
1306
+
1307
+ try {
1308
+ const data = await api.deleteSandbox(body);
1309
+ console.log(data);
1310
+ } catch (error) {
1311
+ console.error(error);
1312
+ }
1313
+ }
1314
+
1315
+ // Run the test
1316
+ example().catch(console.error);
1317
+ ```
1318
+
1319
+ ### Parameters
1320
+
1321
+
1322
+ | Name | Type | Description | Notes |
1323
+ |------------- | ------------- | ------------- | -------------|
1324
+ | **xAsciiConfirmDelete** | `string` | Must exactly equal the target `sandboxId` or `snapshotId`. A missing or mismatched value returns `409` without accepting deletion. | [Defaults to `undefined`] |
1325
+ | **sandboxId** | `string` | Public Sandbox id returned by create/list/get sandbox calls. | [Defaults to `undefined`] |
1326
+
1327
+ ### Return type
1328
+
1329
+ [**DeletionOperationResponse**](DeletionOperationResponse.md)
1330
+
1331
+ ### Authorization
1332
+
1333
+ [BoatBearerAuth](../README.md#BoatBearerAuth)
1334
+
1335
+ ### HTTP request headers
1336
+
1337
+ - **Content-Type**: Not defined
1338
+ - **Accept**: `application/json`
1339
+
1340
+
1341
+ ### HTTP response details
1342
+ | Status code | Description | Response headers |
1343
+ |-------------|-------------|------------------|
1344
+ | **202** | Deletion confirmed and accepted for background processing. | - |
1345
+ | **401** | Missing or invalid bearer token. | - |
1346
+ | **403** | Authenticated token is not allowed to perform this action. | - |
1347
+ | **404** | Resource not found. | - |
1348
+ | **409** | Request conflicts with current account or sandbox state. | - |
1349
+
1350
+ [[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
1351
+
1352
+
1353
+ ## deleteSnapshot
1354
+
1355
+ > DeletionOperationResponse deleteSnapshot(snapshotId, xAsciiConfirmDelete)
1356
+
1357
+ Permanently delete snapshot data
1358
+
1359
+ Accept irreversible background deletion of an unpinned snapshot owned by the authenticated account. Snapshots required by another incremental snapshot or active restore return `409`. Poll the returned operation until `completed`.
1360
+
1361
+ ### Example
1362
+
1363
+ ```ts
1364
+ import {
1365
+ Configuration,
1366
+ BoatApi,
1367
+ } from '@boatdev/sdk';
1368
+ import type { DeleteSnapshotRequest } from '@boatdev/sdk';
1369
+
1370
+ async function example() {
1371
+ console.log("🚀 Testing @boatdev/sdk SDK...");
1372
+ const config = new Configuration({
1373
+ // Configure HTTP bearer authorization: BoatBearerAuth
1374
+ accessToken: "YOUR BEARER TOKEN",
1375
+ });
1376
+ const api = new BoatApi(config);
1377
+
1378
+ const body = {
1379
+ // string | Snapshot id returned by the snapshot list/latest calls.
1380
+ snapshotId: 38400000-8cf0-11bd-b23e-10b96e4ef00d,
1381
+ // string | Must exactly equal the target `sandboxId` or `snapshotId`. A missing or mismatched value returns `409` without accepting deletion.
1382
+ xAsciiConfirmDelete: xAsciiConfirmDelete_example,
1383
+ } satisfies DeleteSnapshotRequest;
1384
+
1385
+ try {
1386
+ const data = await api.deleteSnapshot(body);
1387
+ console.log(data);
1388
+ } catch (error) {
1389
+ console.error(error);
1390
+ }
1391
+ }
1392
+
1393
+ // Run the test
1394
+ example().catch(console.error);
1395
+ ```
1396
+
1397
+ ### Parameters
1398
+
1399
+
1400
+ | Name | Type | Description | Notes |
1401
+ |------------- | ------------- | ------------- | -------------|
1402
+ | **snapshotId** | `string` | Snapshot id returned by the snapshot list/latest calls. | [Defaults to `undefined`] |
1403
+ | **xAsciiConfirmDelete** | `string` | Must exactly equal the target `sandboxId` or `snapshotId`. A missing or mismatched value returns `409` without accepting deletion. | [Defaults to `undefined`] |
1404
+
1405
+ ### Return type
1406
+
1407
+ [**DeletionOperationResponse**](DeletionOperationResponse.md)
1408
+
1409
+ ### Authorization
1410
+
1411
+ [BoatBearerAuth](../README.md#BoatBearerAuth)
1412
+
1413
+ ### HTTP request headers
1414
+
1415
+ - **Content-Type**: Not defined
1416
+ - **Accept**: `application/json`
1417
+
1418
+
1419
+ ### HTTP response details
1420
+ | Status code | Description | Response headers |
1421
+ |-------------|-------------|------------------|
1422
+ | **202** | Deletion confirmed and accepted for background processing. | - |
1423
+ | **401** | Missing or invalid bearer token. | - |
1424
+ | **403** | Authenticated token is not allowed to perform this action. | - |
1425
+ | **404** | Resource not found. | - |
1426
+ | **409** | Request conflicts with current account or sandbox state. | - |
1427
+
1428
+ [[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
1429
+
1430
+
1431
+ ## deleteWebhook
1432
+
1433
+ > WebhookDeleteResponse deleteWebhook(webhookId)
1434
+
1435
+ Delete webhook
1436
+
1437
+ Deletes the endpoint and its queued deliveries. An attempt already in flight can still arrive.
1438
+
1439
+ ### Example
1440
+
1441
+ ```ts
1442
+ import {
1443
+ Configuration,
1444
+ BoatApi,
1445
+ } from '@boatdev/sdk';
1446
+ import type { DeleteWebhookRequest } from '@boatdev/sdk';
1447
+
1448
+ async function example() {
1449
+ console.log("🚀 Testing @boatdev/sdk SDK...");
1450
+ const config = new Configuration({
1451
+ // Configure HTTP bearer authorization: BoatBearerAuth
1452
+ accessToken: "YOUR BEARER TOKEN",
1453
+ });
1454
+ const api = new BoatApi(config);
1455
+
1456
+ const body = {
1457
+ // string
1458
+ webhookId: webhookId_example,
1459
+ } satisfies DeleteWebhookRequest;
1460
+
1461
+ try {
1462
+ const data = await api.deleteWebhook(body);
1463
+ console.log(data);
1464
+ } catch (error) {
1465
+ console.error(error);
1466
+ }
1467
+ }
1468
+
1469
+ // Run the test
1470
+ example().catch(console.error);
1471
+ ```
1472
+
1473
+ ### Parameters
1474
+
1475
+
1476
+ | Name | Type | Description | Notes |
1477
+ |------------- | ------------- | ------------- | -------------|
1478
+ | **webhookId** | `string` | | [Defaults to `undefined`] |
1479
+
1480
+ ### Return type
1481
+
1482
+ [**WebhookDeleteResponse**](WebhookDeleteResponse.md)
1483
+
1484
+ ### Authorization
1485
+
1486
+ [BoatBearerAuth](../README.md#BoatBearerAuth)
1487
+
1488
+ ### HTTP request headers
1489
+
1490
+ - **Content-Type**: Not defined
1491
+ - **Accept**: `application/json`
1492
+
1493
+
1494
+ ### HTTP response details
1495
+ | Status code | Description | Response headers |
1496
+ |-------------|-------------|------------------|
1497
+ | **200** | Webhook deleted. | - |
1498
+ | **401** | Missing or invalid bearer token. | - |
1499
+ | **404** | Resource not found. | - |
1500
+
1501
+ [[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
1502
+
1503
+
1504
+ ## desktop
1505
+
1506
+ > DesktopResponse desktop(sandboxId, vnc, theme, desktopRequest)
1507
+
1508
+ Get desktop streaming URL
1509
+
1510
+ Create or fetch a secret-bearing desktop/noVNC URL for live computer-use visibility. Use `?vnc=1` for noVNC; a `provisioning: true` response means poll again.
1511
+
1512
+ ### Example
1513
+
1514
+ ```ts
1515
+ import {
1516
+ Configuration,
1517
+ BoatApi,
1518
+ } from '@boatdev/sdk';
1519
+ import type { DesktopOperationRequest } from '@boatdev/sdk';
1520
+
1521
+ async function example() {
1522
+ console.log("🚀 Testing @boatdev/sdk SDK...");
1523
+ const config = new Configuration({
1524
+ // Configure HTTP bearer authorization: BoatBearerAuth
1525
+ accessToken: "YOUR BEARER TOKEN",
1526
+ });
1527
+ const api = new BoatApi(config);
1528
+
1529
+ const body = {
1530
+ // string | Public Sandbox id returned by create/list/get sandbox calls.
1531
+ sandboxId: sandboxId_example,
1532
+ // 1 | Use VNC/noVNC streaming mode. (optional)
1533
+ vnc: 56,
1534
+ // 'light' | 'dark' | Desktop streaming theme for non-VNC mode. (optional)
1535
+ theme: theme_example,
1536
+ // DesktopRequest (optional)
1537
+ desktopRequest: ...,
1538
+ } satisfies DesktopOperationRequest;
1539
+
1540
+ try {
1541
+ const data = await api.desktop(body);
1542
+ console.log(data);
1543
+ } catch (error) {
1544
+ console.error(error);
1545
+ }
1546
+ }
1547
+
1548
+ // Run the test
1549
+ example().catch(console.error);
1550
+ ```
1551
+
1552
+ ### Parameters
1553
+
1554
+
1555
+ | Name | Type | Description | Notes |
1556
+ |------------- | ------------- | ------------- | -------------|
1557
+ | **sandboxId** | `string` | Public Sandbox id returned by create/list/get sandbox calls. | [Defaults to `undefined`] |
1558
+ | **vnc** | `1` | Use VNC/noVNC streaming mode. | [Optional] [Defaults to `undefined`] [Enum: 1] |
1559
+ | **theme** | `light`, `dark` | Desktop streaming theme for non-VNC mode. | [Optional] [Defaults to `undefined`] [Enum: light, dark] |
1560
+ | **desktopRequest** | [DesktopRequest](DesktopRequest.md) | | [Optional] |
1561
+
1562
+ ### Return type
1563
+
1564
+ [**DesktopResponse**](DesktopResponse.md)
1565
+
1566
+ ### Authorization
1567
+
1568
+ [BoatBearerAuth](../README.md#BoatBearerAuth)
1569
+
1570
+ ### HTTP request headers
1571
+
1572
+ - **Content-Type**: `application/json`
1573
+ - **Accept**: `application/json`
1574
+
1575
+
1576
+ ### HTTP response details
1577
+ | Status code | Description | Response headers |
1578
+ |-------------|-------------|------------------|
1579
+ | **200** | Desktop streaming URL, or provisioning state for VNC setup. | - |
1580
+ | **400** | Invalid request body or parameters. | - |
1581
+ | **401** | Missing or invalid bearer token. | - |
1582
+ | **402** | Account cannot currently create or operate sandboxes. The error body may include a dashboard billing URL, but billing actions are not part of the v1 API. | - |
1583
+ | **404** | Resource not found. | - |
1584
+
1585
+ [[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
1586
+
1587
+
1588
+ ## environments
1589
+
1590
+ > SandboxEnvironmentListResponse environments()
1591
+
1592
+ List Sandbox environments
1593
+
1594
+ Returns every non-deleted sandbox environment with its latest-version flags, contents, and per-version sandbox usage. A default environment named `base` is created on first access if none exists.
1595
+
1596
+ ### Example
1597
+
1598
+ ```ts
1599
+ import {
1600
+ Configuration,
1601
+ BoatApi,
1602
+ } from '@boatdev/sdk';
1603
+ import type { EnvironmentsRequest } from '@boatdev/sdk';
1604
+
1605
+ async function example() {
1606
+ console.log("🚀 Testing @boatdev/sdk SDK...");
1607
+ const config = new Configuration({
1608
+ // Configure HTTP bearer authorization: BoatBearerAuth
1609
+ accessToken: "YOUR BEARER TOKEN",
1610
+ });
1611
+ const api = new BoatApi(config);
1612
+
1613
+ try {
1614
+ const data = await api.environments();
1615
+ console.log(data);
1616
+ } catch (error) {
1617
+ console.error(error);
1618
+ }
1619
+ }
1620
+
1621
+ // Run the test
1622
+ example().catch(console.error);
1623
+ ```
1624
+
1625
+ ### Parameters
1626
+
1627
+ This endpoint does not need any parameter.
1628
+
1629
+ ### Return type
1630
+
1631
+ [**SandboxEnvironmentListResponse**](SandboxEnvironmentListResponse.md)
1632
+
1633
+ ### Authorization
1634
+
1635
+ [BoatBearerAuth](../README.md#BoatBearerAuth)
1636
+
1637
+ ### HTTP request headers
1638
+
1639
+ - **Content-Type**: Not defined
1640
+ - **Accept**: `application/json`
1641
+
1642
+
1643
+ ### HTTP response details
1644
+ | Status code | Description | Response headers |
1645
+ |-------------|-------------|------------------|
1646
+ | **200** | The account\'s sandbox environments. | - |
1647
+ | **401** | Missing or invalid bearer token. | - |
1648
+
1649
+ [[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
1650
+
1651
+
1652
+ ## events
1653
+
1654
+ > EventsResponse events(sandboxId, limit, cursor, sort, type, conversation)
1655
+
1656
+ List boat events
1657
+
1658
+ Return Sandbox work, lifecycle, and progress events so product UIs can show what the sandbox is doing. A Sandbox runs many conversations in parallel; this streams **all** of them by default and every event carries a `conversationId`. Filter to one or more with `conversation`. Event payloads are extensible. Clients can long-poll this endpoint with `sort=asc` and a cursor to stream responses. Response events expose agent text, streaming partials via `data.is_streaming`, and tool calls/results via `data.tools`.
1659
+
1660
+ ### Example
1661
+
1662
+ ```ts
1663
+ import {
1664
+ Configuration,
1665
+ BoatApi,
1666
+ } from '@boatdev/sdk';
1667
+ import type { EventsRequest } from '@boatdev/sdk';
1668
+
1669
+ async function example() {
1670
+ console.log("🚀 Testing @boatdev/sdk SDK...");
1671
+ const config = new Configuration({
1672
+ // Configure HTTP bearer authorization: BoatBearerAuth
1673
+ accessToken: "YOUR BEARER TOKEN",
1674
+ });
1675
+ const api = new BoatApi(config);
1676
+
1677
+ const body = {
1678
+ // string | Public Sandbox id returned by create/list/get sandbox calls.
1679
+ sandboxId: sandboxId_example,
1680
+ // number | Maximum items to return. (optional)
1681
+ limit: 56,
1682
+ // string | Opaque pagination cursor returned as `pageInfo.nextCursor`. (optional)
1683
+ cursor: cursor_example,
1684
+ // 'asc' | 'desc' | Sort direction for cursor pagination. (optional)
1685
+ sort: sort_example,
1686
+ // string | Comma-separated event type filter, for example `prompt,response,steer`. (optional)
1687
+ type: type_example,
1688
+ // string | Only return events for this conversation id. Repeat the parameter (or comma-separate) for several. Omit to stream every conversation on the sandbox. See [Integrated agents](/integrated-agents). (optional)
1689
+ conversation: conversation_example,
1690
+ } satisfies EventsRequest;
1691
+
1692
+ try {
1693
+ const data = await api.events(body);
1694
+ console.log(data);
1695
+ } catch (error) {
1696
+ console.error(error);
1697
+ }
1698
+ }
1699
+
1700
+ // Run the test
1701
+ example().catch(console.error);
1702
+ ```
1703
+
1704
+ ### Parameters
1705
+
1706
+
1707
+ | Name | Type | Description | Notes |
1708
+ |------------- | ------------- | ------------- | -------------|
1709
+ | **sandboxId** | `string` | Public Sandbox id returned by create/list/get sandbox calls. | [Defaults to `undefined`] |
1710
+ | **limit** | `number` | Maximum items to return. | [Optional] [Defaults to `100`] |
1711
+ | **cursor** | `string` | Opaque pagination cursor returned as `pageInfo.nextCursor`. | [Optional] [Defaults to `undefined`] |
1712
+ | **sort** | `asc`, `desc` | Sort direction for cursor pagination. | [Optional] [Defaults to `'desc'`] [Enum: asc, desc] |
1713
+ | **type** | `string` | Comma-separated event type filter, for example `prompt,response,steer`. | [Optional] [Defaults to `undefined`] |
1714
+ | **conversation** | `string` | Only return events for this conversation id. Repeat the parameter (or comma-separate) for several. Omit to stream every conversation on the sandbox. See [Integrated agents](/integrated-agents). | [Optional] [Defaults to `undefined`] |
1715
+
1716
+ ### Return type
1717
+
1718
+ [**EventsResponse**](EventsResponse.md)
1719
+
1720
+ ### Authorization
1721
+
1722
+ [BoatBearerAuth](../README.md#BoatBearerAuth)
1723
+
1724
+ ### HTTP request headers
1725
+
1726
+ - **Content-Type**: Not defined
1727
+ - **Accept**: `application/json`
1728
+
1729
+
1730
+ ### HTTP response details
1731
+ | Status code | Description | Response headers |
1732
+ |-------------|-------------|------------------|
1733
+ | **200** | The agent\'s work on the sandbox (prompts, responses), not sandbox lifecycle. A sandbox that was never prompted returns an empty list even though it started, stopped and resumed. | - |
1734
+ | **401** | Missing or invalid bearer token. | - |
1735
+ | **402** | Account cannot currently create or operate sandboxes. The error body may include a dashboard billing URL, but billing actions are not part of the v1 API. | - |
1736
+ | **404** | Resource not found. | - |
1737
+
1738
+ [[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
1739
+
1740
+
1741
+ ## fork
1742
+
1743
+ > SandboxActionResponse fork(sandboxId, idempotencyKey, forkRequest)
1744
+
1745
+ Fork sandbox
1746
+
1747
+ Provision a new sandbox from an existing one. Send an `Idempotency-Key` header to make this call safe to retry after a lost response without creating a second billable fork.
1748
+
1749
+ ### Example
1750
+
1751
+ ```ts
1752
+ import {
1753
+ Configuration,
1754
+ BoatApi,
1755
+ } from '@boatdev/sdk';
1756
+ import type { ForkOperationRequest } from '@boatdev/sdk';
1757
+
1758
+ async function example() {
1759
+ console.log("🚀 Testing @boatdev/sdk SDK...");
1760
+ const config = new Configuration({
1761
+ // Configure HTTP bearer authorization: BoatBearerAuth
1762
+ accessToken: "YOUR BEARER TOKEN",
1763
+ });
1764
+ const api = new BoatApi(config);
1765
+
1766
+ const body = {
1767
+ // string | Public Sandbox id returned by create/list/get sandbox calls.
1768
+ sandboxId: sandboxId_example,
1769
+ // string | Optional exactly-once key for creating a sandbox. Send your own opaque, account-unique value (a UUID) to make `POST /sandboxes` safe to retry when the response is lost (network timeout, 5xx): the first request creates the sandbox and binds it to the key; every later request with the **same account, key, and request body** returns that same sandbox instead of creating a second, billable one. Behavior: keys are retained for **24 hours**; a concurrent or early retry while the first sandbox is still being minted returns `409` `idempotency_in_progress` (retry shortly, same key); reusing a key with a **different body** returns `409` `idempotency_key_reused`; timeouts and 5xx are safe to retry with the same key; a create that fails before the sandbox exists releases the key within ~2 minutes so a retry can create the sandbox. Omit the header to keep the default (non-idempotent) behavior. (optional)
1770
+ idempotencyKey: idempotencyKey_example,
1771
+ // ForkRequest (optional)
1772
+ forkRequest: ...,
1773
+ } satisfies ForkOperationRequest;
1774
+
1775
+ try {
1776
+ const data = await api.fork(body);
1777
+ console.log(data);
1778
+ } catch (error) {
1779
+ console.error(error);
1780
+ }
1781
+ }
1782
+
1783
+ // Run the test
1784
+ example().catch(console.error);
1785
+ ```
1786
+
1787
+ ### Parameters
1788
+
1789
+
1790
+ | Name | Type | Description | Notes |
1791
+ |------------- | ------------- | ------------- | -------------|
1792
+ | **sandboxId** | `string` | Public Sandbox id returned by create/list/get sandbox calls. | [Defaults to `undefined`] |
1793
+ | **idempotencyKey** | `string` | Optional exactly-once key for creating a sandbox. Send your own opaque, account-unique value (a UUID) to make `POST /sandboxes` safe to retry when the response is lost (network timeout, 5xx): the first request creates the sandbox and binds it to the key; every later request with the **same account, key, and request body** returns that same sandbox instead of creating a second, billable one. Behavior: keys are retained for **24 hours**; a concurrent or early retry while the first sandbox is still being minted returns `409` `idempotency_in_progress` (retry shortly, same key); reusing a key with a **different body** returns `409` `idempotency_key_reused`; timeouts and 5xx are safe to retry with the same key; a create that fails before the sandbox exists releases the key within ~2 minutes so a retry can create the sandbox. Omit the header to keep the default (non-idempotent) behavior. | [Optional] [Defaults to `undefined`] |
1794
+ | **forkRequest** | [ForkRequest](ForkRequest.md) | | [Optional] |
1795
+
1796
+ ### Return type
1797
+
1798
+ [**SandboxActionResponse**](SandboxActionResponse.md)
1799
+
1800
+ ### Authorization
1801
+
1802
+ [BoatBearerAuth](../README.md#BoatBearerAuth)
1803
+
1804
+ ### HTTP request headers
1805
+
1806
+ - **Content-Type**: `application/json`
1807
+ - **Accept**: `application/json`
1808
+
1809
+
1810
+ ### HTTP response details
1811
+ | Status code | Description | Response headers |
1812
+ |-------------|-------------|------------------|
1813
+ | **202** | Fork started. The response `id` is the new forked sandbox id. | - |
1814
+ | **401** | Missing or invalid bearer token. | - |
1815
+ | **402** | Account cannot currently create or operate sandboxes. The error body may include a dashboard billing URL, but billing actions are not part of the v1 API. | - |
1816
+ | **404** | Resource not found. | - |
1817
+ | **409** | Request conflicts with current account or sandbox state. | - |
1818
+ | **429** | Machine start or concurrent-sandbox limit reached. Create, fork and resume each count as one machine start against your plan\'s start limits (see the Billing guide; `rate_limited`, naming the window you hit). A sandbox that would exceed your plan\'s concurrent-sandbox cap is refused with `limit_reached`, or `member_limit_reached` when an organization owner has capped you below the plan. | - |
1819
+
1820
+ [[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
1821
+
1822
+
1823
+ ## get
1824
+
1825
+ > SandboxInfoResponse get(sandboxId)
1826
+
1827
+ Get sandbox
1828
+
1829
+ Poll this endpoint after create, stop, resume, or fork operations.
1830
+
1831
+ ### Example
1832
+
1833
+ ```ts
1834
+ import {
1835
+ Configuration,
1836
+ BoatApi,
1837
+ } from '@boatdev/sdk';
1838
+ import type { GetRequest } from '@boatdev/sdk';
1839
+
1840
+ async function example() {
1841
+ console.log("🚀 Testing @boatdev/sdk SDK...");
1842
+ const config = new Configuration({
1843
+ // Configure HTTP bearer authorization: BoatBearerAuth
1844
+ accessToken: "YOUR BEARER TOKEN",
1845
+ });
1846
+ const api = new BoatApi(config);
1847
+
1848
+ const body = {
1849
+ // string | Public Sandbox id returned by create/list/get sandbox calls.
1850
+ sandboxId: sandboxId_example,
1851
+ } satisfies GetRequest;
1852
+
1853
+ try {
1854
+ const data = await api.get(body);
1855
+ console.log(data);
1856
+ } catch (error) {
1857
+ console.error(error);
1858
+ }
1859
+ }
1860
+
1861
+ // Run the test
1862
+ example().catch(console.error);
1863
+ ```
1864
+
1865
+ ### Parameters
1866
+
1867
+
1868
+ | Name | Type | Description | Notes |
1869
+ |------------- | ------------- | ------------- | -------------|
1870
+ | **sandboxId** | `string` | Public Sandbox id returned by create/list/get sandbox calls. | [Defaults to `undefined`] |
1871
+
1872
+ ### Return type
1873
+
1874
+ [**SandboxInfoResponse**](SandboxInfoResponse.md)
1875
+
1876
+ ### Authorization
1877
+
1878
+ [BoatBearerAuth](../README.md#BoatBearerAuth)
1879
+
1880
+ ### HTTP request headers
1881
+
1882
+ - **Content-Type**: Not defined
1883
+ - **Accept**: `application/json`
1884
+
1885
+
1886
+ ### HTTP response details
1887
+ | Status code | Description | Response headers |
1888
+ |-------------|-------------|------------------|
1889
+ | **200** | Boat details. | - |
1890
+ | **401** | Missing or invalid bearer token. | - |
1891
+ | **404** | Resource not found. | - |
1892
+
1893
+ [[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
1894
+
1895
+
1896
+ ## getDataRetention
1897
+
1898
+ > DataRetentionPolicyResponse getDataRetention()
1899
+
1900
+ Get account data-retention policy
1901
+
1902
+ Returns the current zero-data-retention policy. Per-Boat API keys cannot access this account-wide setting. Responses are never cached.
1903
+
1904
+ ### Example
1905
+
1906
+ ```ts
1907
+ import {
1908
+ Configuration,
1909
+ BoatApi,
1910
+ } from '@boatdev/sdk';
1911
+ import type { GetDataRetentionRequest } from '@boatdev/sdk';
1912
+
1913
+ async function example() {
1914
+ console.log("🚀 Testing @boatdev/sdk SDK...");
1915
+ const config = new Configuration({
1916
+ // Configure HTTP bearer authorization: BoatBearerAuth
1917
+ accessToken: "YOUR BEARER TOKEN",
1918
+ });
1919
+ const api = new BoatApi(config);
1920
+
1921
+ try {
1922
+ const data = await api.getDataRetention();
1923
+ console.log(data);
1924
+ } catch (error) {
1925
+ console.error(error);
1926
+ }
1927
+ }
1928
+
1929
+ // Run the test
1930
+ example().catch(console.error);
1931
+ ```
1932
+
1933
+ ### Parameters
1934
+
1935
+ This endpoint does not need any parameter.
1936
+
1937
+ ### Return type
1938
+
1939
+ [**DataRetentionPolicyResponse**](DataRetentionPolicyResponse.md)
1940
+
1941
+ ### Authorization
1942
+
1943
+ [BoatBearerAuth](../README.md#BoatBearerAuth)
1944
+
1945
+ ### HTTP request headers
1946
+
1947
+ - **Content-Type**: Not defined
1948
+ - **Accept**: `application/json`
1949
+
1950
+
1951
+ ### HTTP response details
1952
+ | Status code | Description | Response headers |
1953
+ |-------------|-------------|------------------|
1954
+ | **200** | Current retention policy. | - |
1955
+ | **401** | Missing or invalid bearer token. | - |
1956
+ | **403** | Authenticated token is not allowed to perform this action. | - |
1957
+
1958
+ [[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
1959
+
1960
+
1961
+ ## getDeletionOperation
1962
+
1963
+ > DeletionOperationResponse getDeletionOperation(operationId)
1964
+
1965
+ Get deletion operation
1966
+
1967
+ Poll an accepted Boat or snapshot deletion. Only operations owned by the authenticated account are returned. Responses are never cached.
1968
+
1969
+ ### Example
1970
+
1971
+ ```ts
1972
+ import {
1973
+ Configuration,
1974
+ BoatApi,
1975
+ } from '@boatdev/sdk';
1976
+ import type { GetDeletionOperationRequest } from '@boatdev/sdk';
1977
+
1978
+ async function example() {
1979
+ console.log("🚀 Testing @boatdev/sdk SDK...");
1980
+ const config = new Configuration({
1981
+ // Configure HTTP bearer authorization: BoatBearerAuth
1982
+ accessToken: "YOUR BEARER TOKEN",
1983
+ });
1984
+ const api = new BoatApi(config);
1985
+
1986
+ const body = {
1987
+ // string | Deletion operation id returned by an accepted delete request.
1988
+ operationId: operationId_example,
1989
+ } satisfies GetDeletionOperationRequest;
1990
+
1991
+ try {
1992
+ const data = await api.getDeletionOperation(body);
1993
+ console.log(data);
1994
+ } catch (error) {
1995
+ console.error(error);
1996
+ }
1997
+ }
1998
+
1999
+ // Run the test
2000
+ example().catch(console.error);
2001
+ ```
2002
+
2003
+ ### Parameters
2004
+
2005
+
2006
+ | Name | Type | Description | Notes |
2007
+ |------------- | ------------- | ------------- | -------------|
2008
+ | **operationId** | `string` | Deletion operation id returned by an accepted delete request. | [Defaults to `undefined`] |
2009
+
2010
+ ### Return type
2011
+
2012
+ [**DeletionOperationResponse**](DeletionOperationResponse.md)
2013
+
2014
+ ### Authorization
2015
+
2016
+ [BoatBearerAuth](../README.md#BoatBearerAuth)
2017
+
2018
+ ### HTTP request headers
2019
+
2020
+ - **Content-Type**: Not defined
2021
+ - **Accept**: `application/json`
2022
+
2023
+
2024
+ ### HTTP response details
2025
+ | Status code | Description | Response headers |
2026
+ |-------------|-------------|------------------|
2027
+ | **200** | Current deletion operation state. | - |
2028
+ | **401** | Missing or invalid bearer token. | - |
2029
+ | **404** | Resource not found. | - |
2030
+
2031
+ [[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
2032
+
2033
+
2034
+ ## getLatestSandboxSnapshot
2035
+
2036
+ > SnapshotLatestResponse getLatestSandboxSnapshot(sandboxId)
2037
+
2038
+ Get latest boat snapshot
2039
+
2040
+ Return the most recent completed snapshot for this sandbox, or `null` if it has none.
2041
+
2042
+ ### Example
2043
+
2044
+ ```ts
2045
+ import {
2046
+ Configuration,
2047
+ BoatApi,
2048
+ } from '@boatdev/sdk';
2049
+ import type { GetLatestSandboxSnapshotRequest } from '@boatdev/sdk';
2050
+
2051
+ async function example() {
2052
+ console.log("🚀 Testing @boatdev/sdk SDK...");
2053
+ const config = new Configuration({
2054
+ // Configure HTTP bearer authorization: BoatBearerAuth
2055
+ accessToken: "YOUR BEARER TOKEN",
2056
+ });
2057
+ const api = new BoatApi(config);
2058
+
2059
+ const body = {
2060
+ // string | Public Sandbox id returned by create/list/get sandbox calls.
2061
+ sandboxId: sandboxId_example,
2062
+ } satisfies GetLatestSandboxSnapshotRequest;
2063
+
2064
+ try {
2065
+ const data = await api.getLatestSandboxSnapshot(body);
2066
+ console.log(data);
2067
+ } catch (error) {
2068
+ console.error(error);
2069
+ }
2070
+ }
2071
+
2072
+ // Run the test
2073
+ example().catch(console.error);
2074
+ ```
2075
+
2076
+ ### Parameters
2077
+
2078
+
2079
+ | Name | Type | Description | Notes |
2080
+ |------------- | ------------- | ------------- | -------------|
2081
+ | **sandboxId** | `string` | Public Sandbox id returned by create/list/get sandbox calls. | [Defaults to `undefined`] |
2082
+
2083
+ ### Return type
2084
+
2085
+ [**SnapshotLatestResponse**](SnapshotLatestResponse.md)
2086
+
2087
+ ### Authorization
2088
+
2089
+ [BoatBearerAuth](../README.md#BoatBearerAuth)
2090
+
2091
+ ### HTTP request headers
2092
+
2093
+ - **Content-Type**: Not defined
2094
+ - **Accept**: `application/json`
2095
+
2096
+
2097
+ ### HTTP response details
2098
+ | Status code | Description | Response headers |
2099
+ |-------------|-------------|------------------|
2100
+ | **200** | Most recent completed snapshot, or `null`. | - |
2101
+ | **401** | Missing or invalid bearer token. | - |
2102
+ | **404** | Resource not found. | - |
2103
+
2104
+ [[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
2105
+
2106
+
2107
+ ## getNamedSnapshot
2108
+
2109
+ > NamedSnapshotInfoResponse getNamedSnapshot(name)
2110
+
2111
+ Get a named snapshot
2112
+
2113
+ ### Example
2114
+
2115
+ ```ts
2116
+ import {
2117
+ Configuration,
2118
+ BoatApi,
2119
+ } from '@boatdev/sdk';
2120
+ import type { GetNamedSnapshotRequest } from '@boatdev/sdk';
2121
+
2122
+ async function example() {
2123
+ console.log("🚀 Testing @boatdev/sdk SDK...");
2124
+ const config = new Configuration({
2125
+ // Configure HTTP bearer authorization: BoatBearerAuth
2126
+ accessToken: "YOUR BEARER TOKEN",
2127
+ });
2128
+ const api = new BoatApi(config);
2129
+
2130
+ const body = {
2131
+ // string
2132
+ name: name_example,
2133
+ } satisfies GetNamedSnapshotRequest;
2134
+
2135
+ try {
2136
+ const data = await api.getNamedSnapshot(body);
2137
+ console.log(data);
2138
+ } catch (error) {
2139
+ console.error(error);
2140
+ }
2141
+ }
2142
+
2143
+ // Run the test
2144
+ example().catch(console.error);
2145
+ ```
2146
+
2147
+ ### Parameters
2148
+
2149
+
2150
+ | Name | Type | Description | Notes |
2151
+ |------------- | ------------- | ------------- | -------------|
2152
+ | **name** | `string` | | [Defaults to `undefined`] |
2153
+
2154
+ ### Return type
2155
+
2156
+ [**NamedSnapshotInfoResponse**](NamedSnapshotInfoResponse.md)
2157
+
2158
+ ### Authorization
2159
+
2160
+ [BoatBearerAuth](../README.md#BoatBearerAuth)
2161
+
2162
+ ### HTTP request headers
2163
+
2164
+ - **Content-Type**: Not defined
2165
+ - **Accept**: `application/json`
2166
+
2167
+
2168
+ ### HTTP response details
2169
+ | Status code | Description | Response headers |
2170
+ |-------------|-------------|------------------|
2171
+ | **200** | The named snapshot. | - |
2172
+ | **401** | Missing or invalid bearer token. | - |
2173
+ | **404** | Resource not found. | - |
2174
+
2175
+ [[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
2176
+
2177
+
2178
+ ## getSnapshotDownload
2179
+
2180
+ > SnapshotDownloadResponse getSnapshotDownload(snapshotId)
2181
+
2182
+ Get snapshot download
2183
+
2184
+ Return time-limited signed URLs for every chunk needed to reconstruct the sandbox filesystem at this snapshot (the full chain, base through this generation), plus the inventory. Download the chunks and reassemble them as described by `reconstruct`. The `boat snapshot pull` CLI command does this for you.
2185
+
2186
+ ### Example
2187
+
2188
+ ```ts
2189
+ import {
2190
+ Configuration,
2191
+ BoatApi,
2192
+ } from '@boatdev/sdk';
2193
+ import type { GetSnapshotDownloadRequest } from '@boatdev/sdk';
2194
+
2195
+ async function example() {
2196
+ console.log("🚀 Testing @boatdev/sdk SDK...");
2197
+ const config = new Configuration({
2198
+ // Configure HTTP bearer authorization: BoatBearerAuth
2199
+ accessToken: "YOUR BEARER TOKEN",
2200
+ });
2201
+ const api = new BoatApi(config);
2202
+
2203
+ const body = {
2204
+ // string | Snapshot id returned by the snapshot list/latest calls.
2205
+ snapshotId: 38400000-8cf0-11bd-b23e-10b96e4ef00d,
2206
+ } satisfies GetSnapshotDownloadRequest;
2207
+
2208
+ try {
2209
+ const data = await api.getSnapshotDownload(body);
2210
+ console.log(data);
2211
+ } catch (error) {
2212
+ console.error(error);
2213
+ }
2214
+ }
2215
+
2216
+ // Run the test
2217
+ example().catch(console.error);
2218
+ ```
2219
+
2220
+ ### Parameters
2221
+
2222
+
2223
+ | Name | Type | Description | Notes |
2224
+ |------------- | ------------- | ------------- | -------------|
2225
+ | **snapshotId** | `string` | Snapshot id returned by the snapshot list/latest calls. | [Defaults to `undefined`] |
2226
+
2227
+ ### Return type
2228
+
2229
+ [**SnapshotDownloadResponse**](SnapshotDownloadResponse.md)
2230
+
2231
+ ### Authorization
2232
+
2233
+ [BoatBearerAuth](../README.md#BoatBearerAuth)
2234
+
2235
+ ### HTTP request headers
2236
+
2237
+ - **Content-Type**: Not defined
2238
+ - **Accept**: `application/json`
2239
+
2240
+
2241
+ ### HTTP response details
2242
+ | Status code | Description | Response headers |
2243
+ |-------------|-------------|------------------|
2244
+ | **200** | Signed chunk URLs for the snapshot chain. | - |
2245
+ | **401** | Missing or invalid bearer token. | - |
2246
+ | **404** | Resource not found. | - |
2247
+
2248
+ [[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
2249
+
2250
+
2251
+ ## getSnapshotFile
2252
+
2253
+ > Blob getSnapshotFile(snapshotId, path)
2254
+
2255
+ Download a file or folder from a snapshot
2256
+
2257
+ Stream a single file\'s bytes, or a folder subtree as a tar archive, directly out of a snapshot, the sandbox can be stopped or archived; the machine is never contacted. Use `GET /snapshots/{snapshotId}/tree` to list paths, then pass one here. Paths are relative to the snapshot root (same space as `tree` entries; docker volumes under `__dockervol__/`). An empty or `/` path downloads the whole snapshot as a tar. Folder responses set `X-Snapshot-File-Count`, `X-Snapshot-Total-Size-Bytes` and `X-Snapshot-Skipped-Base-Image-Files` headers; both response shapes set `X-Snapshot-Entry-Kind` (`file` or `dir`).
2258
+
2259
+ ### Example
2260
+
2261
+ ```ts
2262
+ import {
2263
+ Configuration,
2264
+ BoatApi,
2265
+ } from '@boatdev/sdk';
2266
+ import type { GetSnapshotFileRequest } from '@boatdev/sdk';
2267
+
2268
+ async function example() {
2269
+ console.log("🚀 Testing @boatdev/sdk SDK...");
2270
+ const config = new Configuration({
2271
+ // Configure HTTP bearer authorization: BoatBearerAuth
2272
+ accessToken: "YOUR BEARER TOKEN",
2273
+ });
2274
+ const api = new BoatApi(config);
2275
+
2276
+ const body = {
2277
+ // string | Snapshot id returned by the snapshot list/latest calls.
2278
+ snapshotId: 38400000-8cf0-11bd-b23e-10b96e4ef00d,
2279
+ // string | File or folder path inside the snapshot. Empty for the whole snapshot. (optional)
2280
+ path: path_example,
2281
+ } satisfies GetSnapshotFileRequest;
2282
+
2283
+ try {
2284
+ const data = await api.getSnapshotFile(body);
2285
+ console.log(data);
2286
+ } catch (error) {
2287
+ console.error(error);
2288
+ }
2289
+ }
2290
+
2291
+ // Run the test
2292
+ example().catch(console.error);
2293
+ ```
2294
+
2295
+ ### Parameters
2296
+
2297
+
2298
+ | Name | Type | Description | Notes |
2299
+ |------------- | ------------- | ------------- | -------------|
2300
+ | **snapshotId** | `string` | Snapshot id returned by the snapshot list/latest calls. | [Defaults to `undefined`] |
2301
+ | **path** | `string` | File or folder path inside the snapshot. Empty for the whole snapshot. | [Optional] [Defaults to `undefined`] |
2302
+
2303
+ ### Return type
2304
+
2305
+ **Blob**
2306
+
2307
+ ### Authorization
2308
+
2309
+ [BoatBearerAuth](../README.md#BoatBearerAuth)
2310
+
2311
+ ### HTTP request headers
2312
+
2313
+ - **Content-Type**: Not defined
2314
+ - **Accept**: `application/octet-stream`, `application/x-tar`, `application/json`
2315
+
2316
+
2317
+ ### HTTP response details
2318
+ | Status code | Description | Response headers |
2319
+ |-------------|-------------|------------------|
2320
+ | **200** | File bytes (`application/octet-stream`) or folder tar (`application/x-tar`). | - |
2321
+ | **401** | Missing or invalid bearer token. | - |
2322
+ | **404** | Resource not found. | - |
2323
+ | **409** | Path has no downloadable bytes, one of `legacy_snapshot` (pre-inventory snapshot), `snapshot_not_indexed` (content captured before the indexed snapshot format; take a new snapshot or use the download bundle), `base_image_file` (stock image file, not stored in snapshots), or `is_symlink` (request the symlink\'s target instead). | - |
2324
+
2325
+ [[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
2326
+
2327
+
2328
+ ## getSnapshotTree
2329
+
2330
+ > SnapshotTreeResponse getSnapshotTree(snapshotId)
2331
+
2332
+ Get snapshot file tree
2333
+
2334
+ List the files and folders captured in a snapshot, with sizes. Returns a flat list of entries you can render as a tree.
2335
+
2336
+ ### Example
2337
+
2338
+ ```ts
2339
+ import {
2340
+ Configuration,
2341
+ BoatApi,
2342
+ } from '@boatdev/sdk';
2343
+ import type { GetSnapshotTreeRequest } from '@boatdev/sdk';
2344
+
2345
+ async function example() {
2346
+ console.log("🚀 Testing @boatdev/sdk SDK...");
2347
+ const config = new Configuration({
2348
+ // Configure HTTP bearer authorization: BoatBearerAuth
2349
+ accessToken: "YOUR BEARER TOKEN",
2350
+ });
2351
+ const api = new BoatApi(config);
2352
+
2353
+ const body = {
2354
+ // string | Snapshot id returned by the snapshot list/latest calls.
2355
+ snapshotId: 38400000-8cf0-11bd-b23e-10b96e4ef00d,
2356
+ } satisfies GetSnapshotTreeRequest;
2357
+
2358
+ try {
2359
+ const data = await api.getSnapshotTree(body);
2360
+ console.log(data);
2361
+ } catch (error) {
2362
+ console.error(error);
2363
+ }
2364
+ }
2365
+
2366
+ // Run the test
2367
+ example().catch(console.error);
2368
+ ```
2369
+
2370
+ ### Parameters
2371
+
2372
+
2373
+ | Name | Type | Description | Notes |
2374
+ |------------- | ------------- | ------------- | -------------|
2375
+ | **snapshotId** | `string` | Snapshot id returned by the snapshot list/latest calls. | [Defaults to `undefined`] |
2376
+
2377
+ ### Return type
2378
+
2379
+ [**SnapshotTreeResponse**](SnapshotTreeResponse.md)
2380
+
2381
+ ### Authorization
2382
+
2383
+ [BoatBearerAuth](../README.md#BoatBearerAuth)
2384
+
2385
+ ### HTTP request headers
2386
+
2387
+ - **Content-Type**: Not defined
2388
+ - **Accept**: `application/json`
2389
+
2390
+
2391
+ ### HTTP response details
2392
+ | Status code | Description | Response headers |
2393
+ |-------------|-------------|------------------|
2394
+ | **200** | Flat file/folder listing for the snapshot. | - |
2395
+ | **401** | Missing or invalid bearer token. | - |
2396
+ | **404** | Resource not found. | - |
2397
+
2398
+ [[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
2399
+
2400
+
2401
+ ## getWebhook
2402
+
2403
+ > WebhookResponse getWebhook(webhookId)
2404
+
2405
+ Get webhook
2406
+
2407
+ Returns webhook metadata without the signing secret.
2408
+
2409
+ ### Example
2410
+
2411
+ ```ts
2412
+ import {
2413
+ Configuration,
2414
+ BoatApi,
2415
+ } from '@boatdev/sdk';
2416
+ import type { GetWebhookRequest } from '@boatdev/sdk';
2417
+
2418
+ async function example() {
2419
+ console.log("🚀 Testing @boatdev/sdk SDK...");
2420
+ const config = new Configuration({
2421
+ // Configure HTTP bearer authorization: BoatBearerAuth
2422
+ accessToken: "YOUR BEARER TOKEN",
2423
+ });
2424
+ const api = new BoatApi(config);
2425
+
2426
+ const body = {
2427
+ // string
2428
+ webhookId: webhookId_example,
2429
+ } satisfies GetWebhookRequest;
2430
+
2431
+ try {
2432
+ const data = await api.getWebhook(body);
2433
+ console.log(data);
2434
+ } catch (error) {
2435
+ console.error(error);
2436
+ }
2437
+ }
2438
+
2439
+ // Run the test
2440
+ example().catch(console.error);
2441
+ ```
2442
+
2443
+ ### Parameters
2444
+
2445
+
2446
+ | Name | Type | Description | Notes |
2447
+ |------------- | ------------- | ------------- | -------------|
2448
+ | **webhookId** | `string` | | [Defaults to `undefined`] |
2449
+
2450
+ ### Return type
2451
+
2452
+ [**WebhookResponse**](WebhookResponse.md)
2453
+
2454
+ ### Authorization
2455
+
2456
+ [BoatBearerAuth](../README.md#BoatBearerAuth)
2457
+
2458
+ ### HTTP request headers
2459
+
2460
+ - **Content-Type**: Not defined
2461
+ - **Accept**: `application/json`
2462
+
2463
+
2464
+ ### HTTP response details
2465
+ | Status code | Description | Response headers |
2466
+ |-------------|-------------|------------------|
2467
+ | **200** | Webhook metadata. | - |
2468
+ | **401** | Missing or invalid bearer token. | - |
2469
+ | **404** | Resource not found. | - |
2470
+
2471
+ [[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
2472
+
2473
+
2474
+ ## hostPort
2475
+
2476
+ > HostPortResponse hostPort(sandboxId, hostPortRequest)
2477
+
2478
+ Expose a sandbox port on a public HTTPS URL
2479
+
2480
+ Registers a stable `https://<sandbox-subdomain>-<port>.on.boat.dev` route for a port inside the sandbox and opens the sandbox firewall for it. Idempotent: calling it again for the same sandbox and port returns the same URL and token.
2481
+
2482
+ ### Example
2483
+
2484
+ ```ts
2485
+ import {
2486
+ Configuration,
2487
+ BoatApi,
2488
+ } from '@boatdev/sdk';
2489
+ import type { HostPortOperationRequest } from '@boatdev/sdk';
2490
+
2491
+ async function example() {
2492
+ console.log("🚀 Testing @boatdev/sdk SDK...");
2493
+ const config = new Configuration({
2494
+ // Configure HTTP bearer authorization: BoatBearerAuth
2495
+ accessToken: "YOUR BEARER TOKEN",
2496
+ });
2497
+ const api = new BoatApi(config);
2498
+
2499
+ const body = {
2500
+ // string | Public Sandbox id returned by create/list/get sandbox calls.
2501
+ sandboxId: sandboxId_example,
2502
+ // HostPortRequest
2503
+ hostPortRequest: ...,
2504
+ } satisfies HostPortOperationRequest;
2505
+
2506
+ try {
2507
+ const data = await api.hostPort(body);
2508
+ console.log(data);
2509
+ } catch (error) {
2510
+ console.error(error);
2511
+ }
2512
+ }
2513
+
2514
+ // Run the test
2515
+ example().catch(console.error);
2516
+ ```
2517
+
2518
+ ### Parameters
2519
+
2520
+
2521
+ | Name | Type | Description | Notes |
2522
+ |------------- | ------------- | ------------- | -------------|
2523
+ | **sandboxId** | `string` | Public Sandbox id returned by create/list/get sandbox calls. | [Defaults to `undefined`] |
2524
+ | **hostPortRequest** | [HostPortRequest](HostPortRequest.md) | | |
2525
+
2526
+ ### Return type
2527
+
2528
+ [**HostPortResponse**](HostPortResponse.md)
2529
+
2530
+ ### Authorization
2531
+
2532
+ [BoatBearerAuth](../README.md#BoatBearerAuth)
2533
+
2534
+ ### HTTP request headers
2535
+
2536
+ - **Content-Type**: `application/json`
2537
+ - **Accept**: `application/json`
2538
+
2539
+
2540
+ ### HTTP response details
2541
+ | Status code | Description | Response headers |
2542
+ |-------------|-------------|------------------|
2543
+ | **200** | The public HTTPS URL for the port. | - |
2544
+ | **400** | Invalid request body or parameters. | - |
2545
+ | **401** | Missing or invalid bearer token. | - |
2546
+ | **402** | Account cannot currently create or operate sandboxes. The error body may include a dashboard billing URL, but billing actions are not part of the v1 API. | - |
2547
+ | **404** | Resource not found. | - |
2548
+
2549
+ [[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
2550
+
2551
+
2552
+ ## interrupt
2553
+
2554
+ > SandboxActionResponse interrupt(sandboxId, conversation)
2555
+
2556
+ Interrupt running work
2557
+
2558
+ Interrupt running agent work. By default this stops **every** conversation on the sandbox. Pass `conversation` to stop just one, leaving the others running. See [Integrated agents](/integrated-agents).
2559
+
2560
+ ### Example
2561
+
2562
+ ```ts
2563
+ import {
2564
+ Configuration,
2565
+ BoatApi,
2566
+ } from '@boatdev/sdk';
2567
+ import type { InterruptRequest } from '@boatdev/sdk';
2568
+
2569
+ async function example() {
2570
+ console.log("🚀 Testing @boatdev/sdk SDK...");
2571
+ const config = new Configuration({
2572
+ // Configure HTTP bearer authorization: BoatBearerAuth
2573
+ accessToken: "YOUR BEARER TOKEN",
2574
+ });
2575
+ const api = new BoatApi(config);
2576
+
2577
+ const body = {
2578
+ // string | Public Sandbox id returned by create/list/get sandbox calls.
2579
+ sandboxId: sandboxId_example,
2580
+ // string | Interrupt only this conversation id. Omit to interrupt the whole sandbox. (optional)
2581
+ conversation: conversation_example,
2582
+ } satisfies InterruptRequest;
2583
+
2584
+ try {
2585
+ const data = await api.interrupt(body);
2586
+ console.log(data);
2587
+ } catch (error) {
2588
+ console.error(error);
2589
+ }
2590
+ }
2591
+
2592
+ // Run the test
2593
+ example().catch(console.error);
2594
+ ```
2595
+
2596
+ ### Parameters
2597
+
2598
+
2599
+ | Name | Type | Description | Notes |
2600
+ |------------- | ------------- | ------------- | -------------|
2601
+ | **sandboxId** | `string` | Public Sandbox id returned by create/list/get sandbox calls. | [Defaults to `undefined`] |
2602
+ | **conversation** | `string` | Interrupt only this conversation id. Omit to interrupt the whole sandbox. | [Optional] [Defaults to `undefined`] |
2603
+
2604
+ ### Return type
2605
+
2606
+ [**SandboxActionResponse**](SandboxActionResponse.md)
2607
+
2608
+ ### Authorization
2609
+
2610
+ [BoatBearerAuth](../README.md#BoatBearerAuth)
2611
+
2612
+ ### HTTP request headers
2613
+
2614
+ - **Content-Type**: Not defined
2615
+ - **Accept**: `application/json`
2616
+
2617
+
2618
+ ### HTTP response details
2619
+ | Status code | Description | Response headers |
2620
+ |-------------|-------------|------------------|
2621
+ | **200** | Interrupt requested. | - |
2622
+ | **401** | Missing or invalid bearer token. | - |
2623
+ | **402** | Account cannot currently create or operate sandboxes. The error body may include a dashboard billing URL, but billing actions are not part of the v1 API. | - |
2624
+ | **404** | Resource not found. | - |
2625
+ | **409** | Request conflicts with current account or sandbox state. | - |
2626
+
2627
+ [[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
2628
+
2629
+
2630
+ ## limits
2631
+
2632
+ > LimitsResponse limits(org, xBoatOrg, teamId)
2633
+
2634
+ Get Boat limits
2635
+
2636
+ Check remaining machine starts, compute time, credits, access readiness, and concurrent-sandbox capacity for the authenticated account. Pass `org` / `X-Boat-Org` (or `teamId`) to read a team wallet you belong to.
2637
+
2638
+ ### Example
2639
+
2640
+ ```ts
2641
+ import {
2642
+ Configuration,
2643
+ BoatApi,
2644
+ } from '@boatdev/sdk';
2645
+ import type { LimitsRequest } from '@boatdev/sdk';
2646
+
2647
+ async function example() {
2648
+ console.log("🚀 Testing @boatdev/sdk SDK...");
2649
+ const config = new Configuration({
2650
+ // Configure HTTP bearer authorization: BoatBearerAuth
2651
+ accessToken: "YOUR BEARER TOKEN",
2652
+ });
2653
+ const api = new BoatApi(config);
2654
+
2655
+ const body = {
2656
+ // string | Billing wallet for this request. A team id you belong to reads that team\'s limits / bills a create to that team. Your own account id is personal. Sandboxes, snapshots, and environments stay creator-private. (optional)
2657
+ org: org_example,
2658
+ // string | Same as the `org` query parameter. Query wins when both are set. (optional)
2659
+ xBoatOrg: xBoatOrg_example,
2660
+ // string | Legacy alias for `org`. Takes precedence over `org` / `X-Boat-Org` when set. (optional)
2661
+ teamId: teamId_example,
2662
+ } satisfies LimitsRequest;
2663
+
2664
+ try {
2665
+ const data = await api.limits(body);
2666
+ console.log(data);
2667
+ } catch (error) {
2668
+ console.error(error);
2669
+ }
2670
+ }
2671
+
2672
+ // Run the test
2673
+ example().catch(console.error);
2674
+ ```
2675
+
2676
+ ### Parameters
2677
+
2678
+
2679
+ | Name | Type | Description | Notes |
2680
+ |------------- | ------------- | ------------- | -------------|
2681
+ | **org** | `string` | Billing wallet for this request. A team id you belong to reads that team\'s limits / bills a create to that team. Your own account id is personal. Sandboxes, snapshots, and environments stay creator-private. | [Optional] [Defaults to `undefined`] |
2682
+ | **xBoatOrg** | `string` | Same as the `org` query parameter. Query wins when both are set. | [Optional] [Defaults to `undefined`] |
2683
+ | **teamId** | `string` | Legacy alias for `org`. Takes precedence over `org` / `X-Boat-Org` when set. | [Optional] [Defaults to `undefined`] |
2684
+
2685
+ ### Return type
2686
+
2687
+ [**LimitsResponse**](LimitsResponse.md)
2688
+
2689
+ ### Authorization
2690
+
2691
+ [BoatBearerAuth](../README.md#BoatBearerAuth)
2692
+
2693
+ ### HTTP request headers
2694
+
2695
+ - **Content-Type**: Not defined
2696
+ - **Accept**: `application/json`
2697
+
2698
+
2699
+ ### HTTP response details
2700
+ | Status code | Description | Response headers |
2701
+ |-------------|-------------|------------------|
2702
+ | **200** | Current creation and concurrent-boat limits. | - |
2703
+ | **401** | Missing or invalid bearer token. | - |
2704
+
2705
+ [[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
2706
+
2707
+
2708
+ ## listNamedSnapshots
2709
+
2710
+ > NamedSnapshotListResponse listNamedSnapshots()
2711
+
2712
+ List named snapshots
2713
+
2714
+ List your named snapshots, newest first.
2715
+
2716
+ ### Example
2717
+
2718
+ ```ts
2719
+ import {
2720
+ Configuration,
2721
+ BoatApi,
2722
+ } from '@boatdev/sdk';
2723
+ import type { ListNamedSnapshotsRequest } from '@boatdev/sdk';
2724
+
2725
+ async function example() {
2726
+ console.log("🚀 Testing @boatdev/sdk SDK...");
2727
+ const config = new Configuration({
2728
+ // Configure HTTP bearer authorization: BoatBearerAuth
2729
+ accessToken: "YOUR BEARER TOKEN",
2730
+ });
2731
+ const api = new BoatApi(config);
2732
+
2733
+ try {
2734
+ const data = await api.listNamedSnapshots();
2735
+ console.log(data);
2736
+ } catch (error) {
2737
+ console.error(error);
2738
+ }
2739
+ }
2740
+
2741
+ // Run the test
2742
+ example().catch(console.error);
2743
+ ```
2744
+
2745
+ ### Parameters
2746
+
2747
+ This endpoint does not need any parameter.
2748
+
2749
+ ### Return type
2750
+
2751
+ [**NamedSnapshotListResponse**](NamedSnapshotListResponse.md)
2752
+
2753
+ ### Authorization
2754
+
2755
+ [BoatBearerAuth](../README.md#BoatBearerAuth)
2756
+
2757
+ ### HTTP request headers
2758
+
2759
+ - **Content-Type**: Not defined
2760
+ - **Accept**: `application/json`
2761
+
2762
+
2763
+ ### HTTP response details
2764
+ | Status code | Description | Response headers |
2765
+ |-------------|-------------|------------------|
2766
+ | **200** | Named snapshots owned by the authenticated Boat user. | - |
2767
+ | **401** | Missing or invalid bearer token. | - |
2768
+
2769
+ [[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
2770
+
2771
+
2772
+ ## listSandboxSnapshots
2773
+
2774
+ > SnapshotListResponse listSandboxSnapshots(sandboxId, limit, cursor, sort)
2775
+
2776
+ List boat snapshots
2777
+
2778
+ List visible completed snapshots for one sandbox with uncapped cursor pagination.
2779
+
2780
+ ### Example
2781
+
2782
+ ```ts
2783
+ import {
2784
+ Configuration,
2785
+ BoatApi,
2786
+ } from '@boatdev/sdk';
2787
+ import type { ListSandboxSnapshotsRequest } from '@boatdev/sdk';
2788
+
2789
+ async function example() {
2790
+ console.log("🚀 Testing @boatdev/sdk SDK...");
2791
+ const config = new Configuration({
2792
+ // Configure HTTP bearer authorization: BoatBearerAuth
2793
+ accessToken: "YOUR BEARER TOKEN",
2794
+ });
2795
+ const api = new BoatApi(config);
2796
+
2797
+ const body = {
2798
+ // string | Public Sandbox id returned by create/list/get sandbox calls.
2799
+ sandboxId: sandboxId_example,
2800
+ // number | Maximum items to return. (optional)
2801
+ limit: 56,
2802
+ // string | Opaque pagination cursor returned as `pageInfo.nextCursor`. (optional)
2803
+ cursor: cursor_example,
2804
+ // 'asc' | 'desc' | Sort direction for cursor pagination. (optional)
2805
+ sort: sort_example,
2806
+ } satisfies ListSandboxSnapshotsRequest;
2807
+
2808
+ try {
2809
+ const data = await api.listSandboxSnapshots(body);
2810
+ console.log(data);
2811
+ } catch (error) {
2812
+ console.error(error);
2813
+ }
2814
+ }
2815
+
2816
+ // Run the test
2817
+ example().catch(console.error);
2818
+ ```
2819
+
2820
+ ### Parameters
2821
+
2822
+
2823
+ | Name | Type | Description | Notes |
2824
+ |------------- | ------------- | ------------- | -------------|
2825
+ | **sandboxId** | `string` | Public Sandbox id returned by create/list/get sandbox calls. | [Defaults to `undefined`] |
2826
+ | **limit** | `number` | Maximum items to return. | [Optional] [Defaults to `100`] |
2827
+ | **cursor** | `string` | Opaque pagination cursor returned as `pageInfo.nextCursor`. | [Optional] [Defaults to `undefined`] |
2828
+ | **sort** | `asc`, `desc` | Sort direction for cursor pagination. | [Optional] [Defaults to `'desc'`] [Enum: asc, desc] |
2829
+
2830
+ ### Return type
2831
+
2832
+ [**SnapshotListResponse**](SnapshotListResponse.md)
2833
+
2834
+ ### Authorization
2835
+
2836
+ [BoatBearerAuth](../README.md#BoatBearerAuth)
2837
+
2838
+ ### HTTP request headers
2839
+
2840
+ - **Content-Type**: Not defined
2841
+ - **Accept**: `application/json`
2842
+
2843
+
2844
+ ### HTTP response details
2845
+ | Status code | Description | Response headers |
2846
+ |-------------|-------------|------------------|
2847
+ | **200** | Completed snapshots for this sandbox. | - |
2848
+ | **400** | Invalid request body or parameters. | - |
2849
+ | **401** | Missing or invalid bearer token. | - |
2850
+ | **404** | Resource not found. | - |
2851
+
2852
+ [[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
2853
+
2854
+
2855
+ ## listSnapshots
2856
+
2857
+ > SnapshotListResponse listSnapshots(limit, cursor, sort)
2858
+
2859
+ List snapshots
2860
+
2861
+ List visible completed snapshots across all of your sandboxes using immutable ownership attribution. Pinned, deletion-scheduled, and privacy-fenced sandbox snapshots are omitted. Follow `nextCursor` through the complete history; there is no hidden 500-snapshot cap.
2862
+
2863
+ ### Example
2864
+
2865
+ ```ts
2866
+ import {
2867
+ Configuration,
2868
+ BoatApi,
2869
+ } from '@boatdev/sdk';
2870
+ import type { ListSnapshotsRequest } from '@boatdev/sdk';
2871
+
2872
+ async function example() {
2873
+ console.log("🚀 Testing @boatdev/sdk SDK...");
2874
+ const config = new Configuration({
2875
+ // Configure HTTP bearer authorization: BoatBearerAuth
2876
+ accessToken: "YOUR BEARER TOKEN",
2877
+ });
2878
+ const api = new BoatApi(config);
2879
+
2880
+ const body = {
2881
+ // number | Maximum items to return. (optional)
2882
+ limit: 56,
2883
+ // string | Opaque pagination cursor returned as `pageInfo.nextCursor`. (optional)
2884
+ cursor: cursor_example,
2885
+ // 'asc' | 'desc' | Sort direction for cursor pagination. (optional)
2886
+ sort: sort_example,
2887
+ } satisfies ListSnapshotsRequest;
2888
+
2889
+ try {
2890
+ const data = await api.listSnapshots(body);
2891
+ console.log(data);
2892
+ } catch (error) {
2893
+ console.error(error);
2894
+ }
2895
+ }
2896
+
2897
+ // Run the test
2898
+ example().catch(console.error);
2899
+ ```
2900
+
2901
+ ### Parameters
2902
+
2903
+
2904
+ | Name | Type | Description | Notes |
2905
+ |------------- | ------------- | ------------- | -------------|
2906
+ | **limit** | `number` | Maximum items to return. | [Optional] [Defaults to `100`] |
2907
+ | **cursor** | `string` | Opaque pagination cursor returned as `pageInfo.nextCursor`. | [Optional] [Defaults to `undefined`] |
2908
+ | **sort** | `asc`, `desc` | Sort direction for cursor pagination. | [Optional] [Defaults to `'desc'`] [Enum: asc, desc] |
2909
+
2910
+ ### Return type
2911
+
2912
+ [**SnapshotListResponse**](SnapshotListResponse.md)
2913
+
2914
+ ### Authorization
2915
+
2916
+ [BoatBearerAuth](../README.md#BoatBearerAuth)
2917
+
2918
+ ### HTTP request headers
2919
+
2920
+ - **Content-Type**: Not defined
2921
+ - **Accept**: `application/json`
2922
+
2923
+
2924
+ ### HTTP response details
2925
+ | Status code | Description | Response headers |
2926
+ |-------------|-------------|------------------|
2927
+ | **200** | Completed snapshots owned by the authenticated Boat user. | - |
2928
+ | **400** | Invalid request body or parameters. | - |
2929
+ | **401** | Missing or invalid bearer token. | - |
2930
+
2931
+ [[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
2932
+
2933
+
2934
+ ## listWebhooks
2935
+
2936
+ > WebhookListResponse listWebhooks()
2937
+
2938
+ List webhooks
2939
+
2940
+ Lists account-wide sandbox lifecycle webhook endpoints. Signing secrets are never included.
2941
+
2942
+ ### Example
2943
+
2944
+ ```ts
2945
+ import {
2946
+ Configuration,
2947
+ BoatApi,
2948
+ } from '@boatdev/sdk';
2949
+ import type { ListWebhooksRequest } from '@boatdev/sdk';
2950
+
2951
+ async function example() {
2952
+ console.log("🚀 Testing @boatdev/sdk SDK...");
2953
+ const config = new Configuration({
2954
+ // Configure HTTP bearer authorization: BoatBearerAuth
2955
+ accessToken: "YOUR BEARER TOKEN",
2956
+ });
2957
+ const api = new BoatApi(config);
2958
+
2959
+ try {
2960
+ const data = await api.listWebhooks();
2961
+ console.log(data);
2962
+ } catch (error) {
2963
+ console.error(error);
2964
+ }
2965
+ }
2966
+
2967
+ // Run the test
2968
+ example().catch(console.error);
2969
+ ```
2970
+
2971
+ ### Parameters
2972
+
2973
+ This endpoint does not need any parameter.
2974
+
2975
+ ### Return type
2976
+
2977
+ [**WebhookListResponse**](WebhookListResponse.md)
2978
+
2979
+ ### Authorization
2980
+
2981
+ [BoatBearerAuth](../README.md#BoatBearerAuth)
2982
+
2983
+ ### HTTP request headers
2984
+
2985
+ - **Content-Type**: Not defined
2986
+ - **Accept**: `application/json`
2987
+
2988
+
2989
+ ### HTTP response details
2990
+ | Status code | Description | Response headers |
2991
+ |-------------|-------------|------------------|
2992
+ | **200** | Registered webhook endpoints. | - |
2993
+ | **401** | Missing or invalid bearer token. | - |
2994
+
2995
+ [[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
2996
+
2997
+
2998
+ ## me
2999
+
3000
+ > MeResponse me()
3001
+
3002
+ Get current Boat user
3003
+
3004
+ Returns GitHub identity for the authenticated Boat account.
3005
+
3006
+ ### Example
3007
+
3008
+ ```ts
3009
+ import {
3010
+ Configuration,
3011
+ BoatApi,
3012
+ } from '@boatdev/sdk';
3013
+ import type { MeRequest } from '@boatdev/sdk';
3014
+
3015
+ async function example() {
3016
+ console.log("🚀 Testing @boatdev/sdk SDK...");
3017
+ const config = new Configuration({
3018
+ // Configure HTTP bearer authorization: BoatBearerAuth
3019
+ accessToken: "YOUR BEARER TOKEN",
3020
+ });
3021
+ const api = new BoatApi(config);
3022
+
3023
+ try {
3024
+ const data = await api.me();
3025
+ console.log(data);
3026
+ } catch (error) {
3027
+ console.error(error);
3028
+ }
3029
+ }
3030
+
3031
+ // Run the test
3032
+ example().catch(console.error);
3033
+ ```
3034
+
3035
+ ### Parameters
3036
+
3037
+ This endpoint does not need any parameter.
3038
+
3039
+ ### Return type
3040
+
3041
+ [**MeResponse**](MeResponse.md)
3042
+
3043
+ ### Authorization
3044
+
3045
+ [BoatBearerAuth](../README.md#BoatBearerAuth)
3046
+
3047
+ ### HTTP request headers
3048
+
3049
+ - **Content-Type**: Not defined
3050
+ - **Accept**: `application/json`
3051
+
3052
+
3053
+ ### HTTP response details
3054
+ | Status code | Description | Response headers |
3055
+ |-------------|-------------|------------------|
3056
+ | **200** | Current user information. | - |
3057
+ | **401** | Missing or invalid bearer token. | - |
3058
+
3059
+ [[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
3060
+
3061
+
3062
+ ## prompt
3063
+
3064
+ > PromptResponse prompt(sandboxId, promptRequest)
3065
+
3066
+ Prompt Sandbox
3067
+
3068
+ Queue a natural-language work item for an agent harness (Codex, Claude Code, pi, OpenCode, or Prime Agent) inside the sandbox. Observe progress with `GET /sandboxes/{sandboxId}/events`. A Sandbox runs many conversations in parallel. Set `new: true` to start a fresh one, `conversationId` to continue a specific one, or omit both to continue the most-recently-active conversation; the response returns the `conversationId`. See [Integrated agents](/integrated-agents).
3069
+
3070
+ ### Example
3071
+
3072
+ ```ts
3073
+ import {
3074
+ Configuration,
3075
+ BoatApi,
3076
+ } from '@boatdev/sdk';
3077
+ import type { PromptOperationRequest } from '@boatdev/sdk';
3078
+
3079
+ async function example() {
3080
+ console.log("🚀 Testing @boatdev/sdk SDK...");
3081
+ const config = new Configuration({
3082
+ // Configure HTTP bearer authorization: BoatBearerAuth
3083
+ accessToken: "YOUR BEARER TOKEN",
3084
+ });
3085
+ const api = new BoatApi(config);
3086
+
3087
+ const body = {
3088
+ // string | Public Sandbox id returned by create/list/get sandbox calls.
3089
+ sandboxId: sandboxId_example,
3090
+ // PromptRequest
3091
+ promptRequest: {"provider":"codex","model":"gpt-5.4","reasoningEffort":"medium","prompt":"Work on the selected repo, run tests, fix failures, commit the result, and report any hosted preview URL."},
3092
+ } satisfies PromptOperationRequest;
3093
+
3094
+ try {
3095
+ const data = await api.prompt(body);
3096
+ console.log(data);
3097
+ } catch (error) {
3098
+ console.error(error);
3099
+ }
3100
+ }
3101
+
3102
+ // Run the test
3103
+ example().catch(console.error);
3104
+ ```
3105
+
3106
+ ### Parameters
3107
+
3108
+
3109
+ | Name | Type | Description | Notes |
3110
+ |------------- | ------------- | ------------- | -------------|
3111
+ | **sandboxId** | `string` | Public Sandbox id returned by create/list/get sandbox calls. | [Defaults to `undefined`] |
3112
+ | **promptRequest** | [PromptRequest](PromptRequest.md) | | |
3113
+
3114
+ ### Return type
3115
+
3116
+ [**PromptResponse**](PromptResponse.md)
3117
+
3118
+ ### Authorization
3119
+
3120
+ [BoatBearerAuth](../README.md#BoatBearerAuth)
3121
+
3122
+ ### HTTP request headers
3123
+
3124
+ - **Content-Type**: `application/json`
3125
+ - **Accept**: `application/json`
3126
+
3127
+
3128
+ ### HTTP response details
3129
+ | Status code | Description | Response headers |
3130
+ |-------------|-------------|------------------|
3131
+ | **202** | Prompt queued. | - |
3132
+ | **400** | Invalid request body or parameters. | - |
3133
+ | **401** | Missing or invalid bearer token. | - |
3134
+ | **402** | Account cannot currently create or operate sandboxes. The error body may include a dashboard billing URL, but billing actions are not part of the v1 API. | - |
3135
+ | **404** | Resource not found. | - |
3136
+ | **409** | Request conflicts with current account or sandbox state. | - |
3137
+
3138
+ [[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
3139
+
3140
+
3141
+ ## promptRunStatus
3142
+
3143
+ > PromptRunResponse promptRunStatus(sandboxId, promptId)
3144
+
3145
+ Get prompt run status
3146
+
3147
+ Returns first-class status for a queued/running/finished prompt so clients do not infer completion from sandbox state and events.
3148
+
3149
+ ### Example
3150
+
3151
+ ```ts
3152
+ import {
3153
+ Configuration,
3154
+ BoatApi,
3155
+ } from '@boatdev/sdk';
3156
+ import type { PromptRunStatusRequest } from '@boatdev/sdk';
3157
+
3158
+ async function example() {
3159
+ console.log("🚀 Testing @boatdev/sdk SDK...");
3160
+ const config = new Configuration({
3161
+ // Configure HTTP bearer authorization: BoatBearerAuth
3162
+ accessToken: "YOUR BEARER TOKEN",
3163
+ });
3164
+ const api = new BoatApi(config);
3165
+
3166
+ const body = {
3167
+ // string | Public Sandbox id returned by create/list/get sandbox calls.
3168
+ sandboxId: sandboxId_example,
3169
+ // string
3170
+ promptId: promptId_example,
3171
+ } satisfies PromptRunStatusRequest;
3172
+
3173
+ try {
3174
+ const data = await api.promptRunStatus(body);
3175
+ console.log(data);
3176
+ } catch (error) {
3177
+ console.error(error);
3178
+ }
3179
+ }
3180
+
3181
+ // Run the test
3182
+ example().catch(console.error);
3183
+ ```
3184
+
3185
+ ### Parameters
3186
+
3187
+
3188
+ | Name | Type | Description | Notes |
3189
+ |------------- | ------------- | ------------- | -------------|
3190
+ | **sandboxId** | `string` | Public Sandbox id returned by create/list/get sandbox calls. | [Defaults to `undefined`] |
3191
+ | **promptId** | `string` | | [Defaults to `undefined`] |
3192
+
3193
+ ### Return type
3194
+
3195
+ [**PromptRunResponse**](PromptRunResponse.md)
3196
+
3197
+ ### Authorization
3198
+
3199
+ [BoatBearerAuth](../README.md#BoatBearerAuth)
3200
+
3201
+ ### HTTP request headers
3202
+
3203
+ - **Content-Type**: Not defined
3204
+ - **Accept**: `application/json`
3205
+
3206
+
3207
+ ### HTTP response details
3208
+ | Status code | Description | Response headers |
3209
+ |-------------|-------------|------------------|
3210
+ | **200** | Prompt run status. | - |
3211
+ | **401** | Missing or invalid bearer token. | - |
3212
+ | **404** | Resource not found. | - |
3213
+
3214
+ [[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
3215
+
3216
+
3217
+ ## readFile
3218
+
3219
+ > FileReadResponse readFile(sandboxId, path, encoding)
3220
+
3221
+ Read a file from a sandbox
3222
+
3223
+ ### Example
3224
+
3225
+ ```ts
3226
+ import {
3227
+ Configuration,
3228
+ BoatApi,
3229
+ } from '@boatdev/sdk';
3230
+ import type { ReadFileRequest } from '@boatdev/sdk';
3231
+
3232
+ async function example() {
3233
+ console.log("🚀 Testing @boatdev/sdk SDK...");
3234
+ const config = new Configuration({
3235
+ // Configure HTTP bearer authorization: BoatBearerAuth
3236
+ accessToken: "YOUR BEARER TOKEN",
3237
+ });
3238
+ const api = new BoatApi(config);
3239
+
3240
+ const body = {
3241
+ // string | Public Sandbox id returned by create/list/get sandbox calls.
3242
+ sandboxId: sandboxId_example,
3243
+ // string
3244
+ path: path_example,
3245
+ // 'utf8' | 'base64' (optional)
3246
+ encoding: encoding_example,
3247
+ } satisfies ReadFileRequest;
3248
+
3249
+ try {
3250
+ const data = await api.readFile(body);
3251
+ console.log(data);
3252
+ } catch (error) {
3253
+ console.error(error);
3254
+ }
3255
+ }
3256
+
3257
+ // Run the test
3258
+ example().catch(console.error);
3259
+ ```
3260
+
3261
+ ### Parameters
3262
+
3263
+
3264
+ | Name | Type | Description | Notes |
3265
+ |------------- | ------------- | ------------- | -------------|
3266
+ | **sandboxId** | `string` | Public Sandbox id returned by create/list/get sandbox calls. | [Defaults to `undefined`] |
3267
+ | **path** | `string` | | [Defaults to `undefined`] |
3268
+ | **encoding** | `utf8`, `base64` | | [Optional] [Defaults to `'utf8'`] [Enum: utf8, base64] |
3269
+
3270
+ ### Return type
3271
+
3272
+ [**FileReadResponse**](FileReadResponse.md)
3273
+
3274
+ ### Authorization
3275
+
3276
+ [BoatBearerAuth](../README.md#BoatBearerAuth)
3277
+
3278
+ ### HTTP request headers
3279
+
3280
+ - **Content-Type**: Not defined
3281
+ - **Accept**: `application/json`
3282
+
3283
+
3284
+ ### HTTP response details
3285
+ | Status code | Description | Response headers |
3286
+ |-------------|-------------|------------------|
3287
+ | **200** | File contents. | - |
3288
+ | **400** | Invalid request body or parameters. | - |
3289
+
3290
+ [[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
3291
+
3292
+
3293
+ ## repos
3294
+
3295
+ > ReposResponse repos(sync, limit, cursor, sort, q, selected)
3296
+
3297
+ List GitHub repositories available to Boat
3298
+
3299
+ Returns GitHub repositories grouped by installation plus the current selected repositories for new Sandboxes.
3300
+
3301
+ ### Example
3302
+
3303
+ ```ts
3304
+ import {
3305
+ Configuration,
3306
+ BoatApi,
3307
+ } from '@boatdev/sdk';
3308
+ import type { ReposRequest } from '@boatdev/sdk';
3309
+
3310
+ async function example() {
3311
+ console.log("🚀 Testing @boatdev/sdk SDK...");
3312
+ const config = new Configuration({
3313
+ // Configure HTTP bearer authorization: BoatBearerAuth
3314
+ accessToken: "YOUR BEARER TOKEN",
3315
+ });
3316
+ const api = new BoatApi(config);
3317
+
3318
+ const body = {
3319
+ // boolean | When true, sync from GitHub before returning repository groups. (optional)
3320
+ sync: true,
3321
+ // number | Maximum items to return. (optional)
3322
+ limit: 56,
3323
+ // string | Opaque pagination cursor returned as `pageInfo.nextCursor`. (optional)
3324
+ cursor: cursor_example,
3325
+ // 'asc' | 'desc' | Sort direction for cursor pagination. (optional)
3326
+ sort: sort_example,
3327
+ // string | Case-insensitive repository name/fullName filter. (optional)
3328
+ q: q_example,
3329
+ // boolean | Filter to selected or unselected repositories. (optional)
3330
+ selected: true,
3331
+ } satisfies ReposRequest;
3332
+
3333
+ try {
3334
+ const data = await api.repos(body);
3335
+ console.log(data);
3336
+ } catch (error) {
3337
+ console.error(error);
3338
+ }
3339
+ }
3340
+
3341
+ // Run the test
3342
+ example().catch(console.error);
3343
+ ```
3344
+
3345
+ ### Parameters
3346
+
3347
+
3348
+ | Name | Type | Description | Notes |
3349
+ |------------- | ------------- | ------------- | -------------|
3350
+ | **sync** | `boolean` | When true, sync from GitHub before returning repository groups. | [Optional] [Defaults to `undefined`] |
3351
+ | **limit** | `number` | Maximum items to return. | [Optional] [Defaults to `100`] |
3352
+ | **cursor** | `string` | Opaque pagination cursor returned as `pageInfo.nextCursor`. | [Optional] [Defaults to `undefined`] |
3353
+ | **sort** | `asc`, `desc` | Sort direction for cursor pagination. | [Optional] [Defaults to `'desc'`] [Enum: asc, desc] |
3354
+ | **q** | `string` | Case-insensitive repository name/fullName filter. | [Optional] [Defaults to `undefined`] |
3355
+ | **selected** | `boolean` | Filter to selected or unselected repositories. | [Optional] [Defaults to `undefined`] |
3356
+
3357
+ ### Return type
3358
+
3359
+ [**ReposResponse**](ReposResponse.md)
3360
+
3361
+ ### Authorization
3362
+
3363
+ [BoatBearerAuth](../README.md#BoatBearerAuth)
3364
+
3365
+ ### HTTP request headers
3366
+
3367
+ - **Content-Type**: Not defined
3368
+ - **Accept**: `application/json`
3369
+
3370
+
3371
+ ### HTTP response details
3372
+ | Status code | Description | Response headers |
3373
+ |-------------|-------------|------------------|
3374
+ | **200** | Repository groups and current sandbox repository selection. | - |
3375
+ | **401** | Missing or invalid bearer token. | - |
3376
+ | **409** | Request conflicts with current account or sandbox state. | - |
3377
+
3378
+ [[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
3379
+
3380
+
3381
+ ## resume
3382
+
3383
+ > SandboxActionResponse resume(sandboxId, resumeRequest)
3384
+
3385
+ Resume sandbox
3386
+
3387
+ ### Example
3388
+
3389
+ ```ts
3390
+ import {
3391
+ Configuration,
3392
+ BoatApi,
3393
+ } from '@boatdev/sdk';
3394
+ import type { ResumeOperationRequest } from '@boatdev/sdk';
3395
+
3396
+ async function example() {
3397
+ console.log("🚀 Testing @boatdev/sdk SDK...");
3398
+ const config = new Configuration({
3399
+ // Configure HTTP bearer authorization: BoatBearerAuth
3400
+ accessToken: "YOUR BEARER TOKEN",
3401
+ });
3402
+ const api = new BoatApi(config);
3403
+
3404
+ const body = {
3405
+ // string | Public Sandbox id returned by create/list/get sandbox calls.
3406
+ sandboxId: sandboxId_example,
3407
+ // ResumeRequest (optional)
3408
+ resumeRequest: ...,
3409
+ } satisfies ResumeOperationRequest;
3410
+
3411
+ try {
3412
+ const data = await api.resume(body);
3413
+ console.log(data);
3414
+ } catch (error) {
3415
+ console.error(error);
3416
+ }
3417
+ }
3418
+
3419
+ // Run the test
3420
+ example().catch(console.error);
3421
+ ```
3422
+
3423
+ ### Parameters
3424
+
3425
+
3426
+ | Name | Type | Description | Notes |
3427
+ |------------- | ------------- | ------------- | -------------|
3428
+ | **sandboxId** | `string` | Public Sandbox id returned by create/list/get sandbox calls. | [Defaults to `undefined`] |
3429
+ | **resumeRequest** | [ResumeRequest](ResumeRequest.md) | | [Optional] |
3430
+
3431
+ ### Return type
3432
+
3433
+ [**SandboxActionResponse**](SandboxActionResponse.md)
3434
+
3435
+ ### Authorization
3436
+
3437
+ [BoatBearerAuth](../README.md#BoatBearerAuth)
3438
+
3439
+ ### HTTP request headers
3440
+
3441
+ - **Content-Type**: `application/json`
3442
+ - **Accept**: `application/json`
3443
+
3444
+
3445
+ ### HTTP response details
3446
+ | Status code | Description | Response headers |
3447
+ |-------------|-------------|------------------|
3448
+ | **202** | Resume started. | - |
3449
+ | **401** | Missing or invalid bearer token. | - |
3450
+ | **402** | Account cannot currently create or operate sandboxes. The error body may include a dashboard billing URL, but billing actions are not part of the v1 API. | - |
3451
+ | **404** | Resource not found. | - |
3452
+ | **409** | Request conflicts with current account or sandbox state. | - |
3453
+ | **429** | Machine start or concurrent-sandbox limit reached. Create, fork and resume each count as one machine start against your plan\'s start limits (see the Billing guide; `rate_limited`, naming the window you hit). A sandbox that would exceed your plan\'s concurrent-sandbox cap is refused with `limit_reached`, or `member_limit_reached` when an organization owner has capped you below the plan. | - |
3454
+
3455
+ [[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
3456
+
3457
+
3458
+ ## revokeApiKey
3459
+
3460
+ > ApiKeyRevokeResponse revokeApiKey(apiKeyId)
3461
+
3462
+ Revoke an API key
3463
+
3464
+ Revokes the key immediately. Requires a dashboard or CLI session.
3465
+
3466
+ ### Example
3467
+
3468
+ ```ts
3469
+ import {
3470
+ Configuration,
3471
+ BoatApi,
3472
+ } from '@boatdev/sdk';
3473
+ import type { RevokeApiKeyRequest } from '@boatdev/sdk';
3474
+
3475
+ async function example() {
3476
+ console.log("🚀 Testing @boatdev/sdk SDK...");
3477
+ const config = new Configuration({
3478
+ // Configure HTTP bearer authorization: BoatBearerAuth
3479
+ accessToken: "YOUR BEARER TOKEN",
3480
+ });
3481
+ const api = new BoatApi(config);
3482
+
3483
+ const body = {
3484
+ // string
3485
+ apiKeyId: apiKeyId_example,
3486
+ } satisfies RevokeApiKeyRequest;
3487
+
3488
+ try {
3489
+ const data = await api.revokeApiKey(body);
3490
+ console.log(data);
3491
+ } catch (error) {
3492
+ console.error(error);
3493
+ }
3494
+ }
3495
+
3496
+ // Run the test
3497
+ example().catch(console.error);
3498
+ ```
3499
+
3500
+ ### Parameters
3501
+
3502
+
3503
+ | Name | Type | Description | Notes |
3504
+ |------------- | ------------- | ------------- | -------------|
3505
+ | **apiKeyId** | `string` | | [Defaults to `undefined`] |
3506
+
3507
+ ### Return type
3508
+
3509
+ [**ApiKeyRevokeResponse**](ApiKeyRevokeResponse.md)
3510
+
3511
+ ### Authorization
3512
+
3513
+ [BoatBearerAuth](../README.md#BoatBearerAuth)
3514
+
3515
+ ### HTTP request headers
3516
+
3517
+ - **Content-Type**: Not defined
3518
+ - **Accept**: `application/json`
3519
+
3520
+
3521
+ ### HTTP response details
3522
+ | Status code | Description | Response headers |
3523
+ |-------------|-------------|------------------|
3524
+ | **200** | Key revoked. | - |
3525
+ | **401** | Missing or invalid bearer token. | - |
3526
+ | **403** | Authenticated token is not allowed to perform this action. | - |
3527
+ | **404** | Resource not found. | - |
3528
+
3529
+ [[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
3530
+
3531
+
3532
+ ## rotateApiKey
3533
+
3534
+ > ApiKeySecretResponse rotateApiKey(apiKeyId)
3535
+
3536
+ Rotate an API key
3537
+
3538
+ Replaces the raw secret without changing expiry or scope. Requires a dashboard or CLI session.
3539
+
3540
+ ### Example
3541
+
3542
+ ```ts
3543
+ import {
3544
+ Configuration,
3545
+ BoatApi,
3546
+ } from '@boatdev/sdk';
3547
+ import type { RotateApiKeyRequest } from '@boatdev/sdk';
3548
+
3549
+ async function example() {
3550
+ console.log("🚀 Testing @boatdev/sdk SDK...");
3551
+ const config = new Configuration({
3552
+ // Configure HTTP bearer authorization: BoatBearerAuth
3553
+ accessToken: "YOUR BEARER TOKEN",
3554
+ });
3555
+ const api = new BoatApi(config);
3556
+
3557
+ const body = {
3558
+ // string
3559
+ apiKeyId: apiKeyId_example,
3560
+ } satisfies RotateApiKeyRequest;
3561
+
3562
+ try {
3563
+ const data = await api.rotateApiKey(body);
3564
+ console.log(data);
3565
+ } catch (error) {
3566
+ console.error(error);
3567
+ }
3568
+ }
3569
+
3570
+ // Run the test
3571
+ example().catch(console.error);
3572
+ ```
3573
+
3574
+ ### Parameters
3575
+
3576
+
3577
+ | Name | Type | Description | Notes |
3578
+ |------------- | ------------- | ------------- | -------------|
3579
+ | **apiKeyId** | `string` | | [Defaults to `undefined`] |
3580
+
3581
+ ### Return type
3582
+
3583
+ [**ApiKeySecretResponse**](ApiKeySecretResponse.md)
3584
+
3585
+ ### Authorization
3586
+
3587
+ [BoatBearerAuth](../README.md#BoatBearerAuth)
3588
+
3589
+ ### HTTP request headers
3590
+
3591
+ - **Content-Type**: Not defined
3592
+ - **Accept**: `application/json`
3593
+
3594
+
3595
+ ### HTTP response details
3596
+ | Status code | Description | Response headers |
3597
+ |-------------|-------------|------------------|
3598
+ | **200** | Rotated key metadata plus the one-time replacement secret. | - |
3599
+ | **401** | Missing or invalid bearer token. | - |
3600
+ | **403** | Authenticated token is not allowed to perform this action. | - |
3601
+ | **404** | Resource not found. | - |
3602
+ | **409** | The scoped API key has already expired and cannot be rotated. | - |
3603
+
3604
+ [[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
3605
+
3606
+
3607
+ ## rotateWebhookSigningSecret
3608
+
3609
+ > WebhookSecretResponse rotateWebhookSigningSecret(webhookId)
3610
+
3611
+ Rotate webhook signing secret
3612
+
3613
+ Replaces the endpoint\'s signing secret. The new secret is returned only in this response; briefly accept the old secret for attempts already in flight.
3614
+
3615
+ ### Example
3616
+
3617
+ ```ts
3618
+ import {
3619
+ Configuration,
3620
+ BoatApi,
3621
+ } from '@boatdev/sdk';
3622
+ import type { RotateWebhookSigningSecretRequest } from '@boatdev/sdk';
3623
+
3624
+ async function example() {
3625
+ console.log("🚀 Testing @boatdev/sdk SDK...");
3626
+ const config = new Configuration({
3627
+ // Configure HTTP bearer authorization: BoatBearerAuth
3628
+ accessToken: "YOUR BEARER TOKEN",
3629
+ });
3630
+ const api = new BoatApi(config);
3631
+
3632
+ const body = {
3633
+ // string
3634
+ webhookId: webhookId_example,
3635
+ } satisfies RotateWebhookSigningSecretRequest;
3636
+
3637
+ try {
3638
+ const data = await api.rotateWebhookSigningSecret(body);
3639
+ console.log(data);
3640
+ } catch (error) {
3641
+ console.error(error);
3642
+ }
3643
+ }
3644
+
3645
+ // Run the test
3646
+ example().catch(console.error);
3647
+ ```
3648
+
3649
+ ### Parameters
3650
+
3651
+
3652
+ | Name | Type | Description | Notes |
3653
+ |------------- | ------------- | ------------- | -------------|
3654
+ | **webhookId** | `string` | | [Defaults to `undefined`] |
3655
+
3656
+ ### Return type
3657
+
3658
+ [**WebhookSecretResponse**](WebhookSecretResponse.md)
3659
+
3660
+ ### Authorization
3661
+
3662
+ [BoatBearerAuth](../README.md#BoatBearerAuth)
3663
+
3664
+ ### HTTP request headers
3665
+
3666
+ - **Content-Type**: Not defined
3667
+ - **Accept**: `application/json`
3668
+
3669
+
3670
+ ### HTTP response details
3671
+ | Status code | Description | Response headers |
3672
+ |-------------|-------------|------------------|
3673
+ | **200** | Signing secret rotated. Store the new secret now. | - |
3674
+ | **401** | Missing or invalid bearer token. | - |
3675
+ | **404** | Resource not found. | - |
3676
+
3677
+ [[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
3678
+
3679
+
3680
+ ## sandboxes
3681
+
3682
+ > SandboxListResponse sandboxes(limit, cursor, sort, state)
3683
+
3684
+ List sandboxes
3685
+
3686
+ ### Example
3687
+
3688
+ ```ts
3689
+ import {
3690
+ Configuration,
3691
+ BoatApi,
3692
+ } from '@boatdev/sdk';
3693
+ import type { SandboxesRequest } from '@boatdev/sdk';
3694
+
3695
+ async function example() {
3696
+ console.log("🚀 Testing @boatdev/sdk SDK...");
3697
+ const config = new Configuration({
3698
+ // Configure HTTP bearer authorization: BoatBearerAuth
3699
+ accessToken: "YOUR BEARER TOKEN",
3700
+ });
3701
+ const api = new BoatApi(config);
3702
+
3703
+ const body = {
3704
+ // number | Maximum items to return. (optional)
3705
+ limit: 56,
3706
+ // string | Opaque pagination cursor returned as `pageInfo.nextCursor`. (optional)
3707
+ cursor: cursor_example,
3708
+ // 'asc' | 'desc' | Sort direction for cursor pagination. (optional)
3709
+ sort: sort_example,
3710
+ // string | Comma-separated sandbox state filter, for example `ready,idle,running`. (optional)
3711
+ state: state_example,
3712
+ } satisfies SandboxesRequest;
3713
+
3714
+ try {
3715
+ const data = await api.sandboxes(body);
3716
+ console.log(data);
3717
+ } catch (error) {
3718
+ console.error(error);
3719
+ }
3720
+ }
3721
+
3722
+ // Run the test
3723
+ example().catch(console.error);
3724
+ ```
3725
+
3726
+ ### Parameters
3727
+
3728
+
3729
+ | Name | Type | Description | Notes |
3730
+ |------------- | ------------- | ------------- | -------------|
3731
+ | **limit** | `number` | Maximum items to return. | [Optional] [Defaults to `100`] |
3732
+ | **cursor** | `string` | Opaque pagination cursor returned as `pageInfo.nextCursor`. | [Optional] [Defaults to `undefined`] |
3733
+ | **sort** | `asc`, `desc` | Sort direction for cursor pagination. | [Optional] [Defaults to `'desc'`] [Enum: asc, desc] |
3734
+ | **state** | `string` | Comma-separated sandbox state filter, for example `ready,idle,running`. | [Optional] [Defaults to `undefined`] |
3735
+
3736
+ ### Return type
3737
+
3738
+ [**SandboxListResponse**](SandboxListResponse.md)
3739
+
3740
+ ### Authorization
3741
+
3742
+ [BoatBearerAuth](../README.md#BoatBearerAuth)
3743
+
3744
+ ### HTTP request headers
3745
+
3746
+ - **Content-Type**: Not defined
3747
+ - **Accept**: `application/json`
3748
+
3749
+
3750
+ ### HTTP response details
3751
+ | Status code | Description | Response headers |
3752
+ |-------------|-------------|------------------|
3753
+ | **200** | Sandboxes owned by the authenticated Boat user. | - |
3754
+ | **401** | Missing or invalid bearer token. | - |
3755
+
3756
+ [[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
3757
+
3758
+
3759
+ ## saveNamedSnapshot
3760
+
3761
+ > NamedSnapshotSavingResponse saveNamedSnapshot(namedSnapshotSaveRequest)
3762
+
3763
+ Save a named snapshot
3764
+
3765
+ Freeze a sandbox\'s current state under a name (`boat snapshot <id> <name>` in the CLI). Answers `202` immediately with the snapshot in `saving`; a running sandbox takes a fresh capture first, which can run minutes. Poll `GET /named-snapshots/{name}` until the status settles at `ready` or `failed`. Reusing one of your existing names replaces that snapshot\'s artifact once the new save is ready.
3766
+
3767
+ ### Example
3768
+
3769
+ ```ts
3770
+ import {
3771
+ Configuration,
3772
+ BoatApi,
3773
+ } from '@boatdev/sdk';
3774
+ import type { SaveNamedSnapshotRequest } from '@boatdev/sdk';
3775
+
3776
+ async function example() {
3777
+ console.log("🚀 Testing @boatdev/sdk SDK...");
3778
+ const config = new Configuration({
3779
+ // Configure HTTP bearer authorization: BoatBearerAuth
3780
+ accessToken: "YOUR BEARER TOKEN",
3781
+ });
3782
+ const api = new BoatApi(config);
3783
+
3784
+ const body = {
3785
+ // NamedSnapshotSaveRequest
3786
+ namedSnapshotSaveRequest: ...,
3787
+ } satisfies SaveNamedSnapshotRequest;
3788
+
3789
+ try {
3790
+ const data = await api.saveNamedSnapshot(body);
3791
+ console.log(data);
3792
+ } catch (error) {
3793
+ console.error(error);
3794
+ }
3795
+ }
3796
+
3797
+ // Run the test
3798
+ example().catch(console.error);
3799
+ ```
3800
+
3801
+ ### Parameters
3802
+
3803
+
3804
+ | Name | Type | Description | Notes |
3805
+ |------------- | ------------- | ------------- | -------------|
3806
+ | **namedSnapshotSaveRequest** | [NamedSnapshotSaveRequest](NamedSnapshotSaveRequest.md) | | |
3807
+
3808
+ ### Return type
3809
+
3810
+ [**NamedSnapshotSavingResponse**](NamedSnapshotSavingResponse.md)
3811
+
3812
+ ### Authorization
3813
+
3814
+ [BoatBearerAuth](../README.md#BoatBearerAuth)
3815
+
3816
+ ### HTTP request headers
3817
+
3818
+ - **Content-Type**: `application/json`
3819
+ - **Accept**: `application/json`
3820
+
3821
+
3822
+ ### HTTP response details
3823
+ | Status code | Description | Response headers |
3824
+ |-------------|-------------|------------------|
3825
+ | **202** | Save accepted and running in the background. | - |
3826
+ | **400** | Invalid request body or parameters. | - |
3827
+ | **401** | Missing or invalid bearer token. | - |
3828
+ | **404** | Resource not found. | - |
3829
+ | **409** | `named_snapshot_limit` when you already keep the maximum of 10 named snapshots; remove one first. `save_in_progress` when a save under this name is already running; wait for it to settle rather than retrying immediately. | - |
3830
+
3831
+ [[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
3832
+
3833
+
3834
+ ## secrets
3835
+
3836
+ > SecretsResponse secrets()
3837
+
3838
+ Get Boat secrets setup
3839
+
3840
+ Returns the environment variables and secret files configured for sandboxes.
3841
+
3842
+ ### Example
3843
+
3844
+ ```ts
3845
+ import {
3846
+ Configuration,
3847
+ BoatApi,
3848
+ } from '@boatdev/sdk';
3849
+ import type { SecretsRequest } from '@boatdev/sdk';
3850
+
3851
+ async function example() {
3852
+ console.log("🚀 Testing @boatdev/sdk SDK...");
3853
+ const config = new Configuration({
3854
+ // Configure HTTP bearer authorization: BoatBearerAuth
3855
+ accessToken: "YOUR BEARER TOKEN",
3856
+ });
3857
+ const api = new BoatApi(config);
3858
+
3859
+ try {
3860
+ const data = await api.secrets();
3861
+ console.log(data);
3862
+ } catch (error) {
3863
+ console.error(error);
3864
+ }
3865
+ }
3866
+
3867
+ // Run the test
3868
+ example().catch(console.error);
3869
+ ```
3870
+
3871
+ ### Parameters
3872
+
3873
+ This endpoint does not need any parameter.
3874
+
3875
+ ### Return type
3876
+
3877
+ [**SecretsResponse**](SecretsResponse.md)
3878
+
3879
+ ### Authorization
3880
+
3881
+ [BoatBearerAuth](../README.md#BoatBearerAuth)
3882
+
3883
+ ### HTTP request headers
3884
+
3885
+ - **Content-Type**: Not defined
3886
+ - **Accept**: `application/json`
3887
+
3888
+
3889
+ ### HTTP response details
3890
+ | Status code | Description | Response headers |
3891
+ |-------------|-------------|------------------|
3892
+ | **200** | Current secret setup metadata. | - |
3893
+ | **401** | Missing or invalid bearer token. | - |
3894
+
3895
+ [[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
3896
+
3897
+
3898
+ ## selectRepo
3899
+
3900
+ > RepoSelectionResponse selectRepo(repoSelectionRequest)
3901
+
3902
+ Select repository for sandboxes
3903
+
3904
+ Idempotently selects one repository for the sandbox environment. Use `databaseId` from `GET /repos` as `repositoryId`; selecting an already-selected repository updates its `baseBranch`.
3905
+
3906
+ ### Example
3907
+
3908
+ ```ts
3909
+ import {
3910
+ Configuration,
3911
+ BoatApi,
3912
+ } from '@boatdev/sdk';
3913
+ import type { SelectRepoRequest } from '@boatdev/sdk';
3914
+
3915
+ async function example() {
3916
+ console.log("🚀 Testing @boatdev/sdk SDK...");
3917
+ const config = new Configuration({
3918
+ // Configure HTTP bearer authorization: BoatBearerAuth
3919
+ accessToken: "YOUR BEARER TOKEN",
3920
+ });
3921
+ const api = new BoatApi(config);
3922
+
3923
+ const body = {
3924
+ // RepoSelectionRequest
3925
+ repoSelectionRequest: ...,
3926
+ } satisfies SelectRepoRequest;
3927
+
3928
+ try {
3929
+ const data = await api.selectRepo(body);
3930
+ console.log(data);
3931
+ } catch (error) {
3932
+ console.error(error);
3933
+ }
3934
+ }
3935
+
3936
+ // Run the test
3937
+ example().catch(console.error);
3938
+ ```
3939
+
3940
+ ### Parameters
3941
+
3942
+
3943
+ | Name | Type | Description | Notes |
3944
+ |------------- | ------------- | ------------- | -------------|
3945
+ | **repoSelectionRequest** | [RepoSelectionRequest](RepoSelectionRequest.md) | | |
3946
+
3947
+ ### Return type
3948
+
3949
+ [**RepoSelectionResponse**](RepoSelectionResponse.md)
3950
+
3951
+ ### Authorization
3952
+
3953
+ [BoatBearerAuth](../README.md#BoatBearerAuth)
3954
+
3955
+ ### HTTP request headers
3956
+
3957
+ - **Content-Type**: `application/json`
3958
+ - **Accept**: `application/json`
3959
+
3960
+
3961
+ ### HTTP response details
3962
+ | Status code | Description | Response headers |
3963
+ |-------------|-------------|------------------|
3964
+ | **200** | Updated repository selection. | - |
3965
+ | **400** | Invalid request body or parameters. | - |
3966
+ | **401** | Missing or invalid bearer token. | - |
3967
+ | **409** | Request conflicts with current account or sandbox state. | - |
3968
+
3969
+ [[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
3970
+
3971
+
3972
+ ## setEnvironmentSecretFile
3973
+
3974
+ > EnvironmentItemChangeResponse setEnvironmentSecretFile(environmentId, setEnvironmentSecretFileRequest)
3975
+
3976
+ Write one secret file
3977
+
3978
+ Adds or replaces a single secret file by path. Mints a new immutable version.
3979
+
3980
+ ### Example
3981
+
3982
+ ```ts
3983
+ import {
3984
+ Configuration,
3985
+ BoatApi,
3986
+ } from '@boatdev/sdk';
3987
+ import type { SetEnvironmentSecretFileOperationRequest } from '@boatdev/sdk';
3988
+
3989
+ async function example() {
3990
+ console.log("🚀 Testing @boatdev/sdk SDK...");
3991
+ const config = new Configuration({
3992
+ // Configure HTTP bearer authorization: BoatBearerAuth
3993
+ accessToken: "YOUR BEARER TOKEN",
3994
+ });
3995
+ const api = new BoatApi(config);
3996
+
3997
+ const body = {
3998
+ // string
3999
+ environmentId: 38400000-8cf0-11bd-b23e-10b96e4ef00d,
4000
+ // SetEnvironmentSecretFileRequest
4001
+ setEnvironmentSecretFileRequest: ...,
4002
+ } satisfies SetEnvironmentSecretFileOperationRequest;
4003
+
4004
+ try {
4005
+ const data = await api.setEnvironmentSecretFile(body);
4006
+ console.log(data);
4007
+ } catch (error) {
4008
+ console.error(error);
4009
+ }
4010
+ }
4011
+
4012
+ // Run the test
4013
+ example().catch(console.error);
4014
+ ```
4015
+
4016
+ ### Parameters
4017
+
4018
+
4019
+ | Name | Type | Description | Notes |
4020
+ |------------- | ------------- | ------------- | -------------|
4021
+ | **environmentId** | `string` | | [Defaults to `undefined`] |
4022
+ | **setEnvironmentSecretFileRequest** | [SetEnvironmentSecretFileRequest](SetEnvironmentSecretFileRequest.md) | | |
4023
+
4024
+ ### Return type
4025
+
4026
+ [**EnvironmentItemChangeResponse**](EnvironmentItemChangeResponse.md)
4027
+
4028
+ ### Authorization
4029
+
4030
+ [BoatBearerAuth](../README.md#BoatBearerAuth)
4031
+
4032
+ ### HTTP request headers
4033
+
4034
+ - **Content-Type**: `application/json`
4035
+ - **Accept**: `application/json`
4036
+
4037
+
4038
+ ### HTTP response details
4039
+ | Status code | Description | Response headers |
4040
+ |-------------|-------------|------------------|
4041
+ | **200** | New version minted. | - |
4042
+ | **400** | Invalid request body or parameters. | - |
4043
+ | **401** | Missing or invalid bearer token. | - |
4044
+ | **404** | Resource not found. | - |
4045
+
4046
+ [[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
4047
+
4048
+
4049
+ ## setEnvironmentVar
4050
+
4051
+ > EnvironmentItemChangeResponse setEnvironmentVar(environmentId, key, setEnvironmentVarRequest)
4052
+
4053
+ Set one environment variable
4054
+
4055
+ Sets or replaces a single variable without reading or rewriting the rest. Mints a new immutable version.
4056
+
4057
+ ### Example
4058
+
4059
+ ```ts
4060
+ import {
4061
+ Configuration,
4062
+ BoatApi,
4063
+ } from '@boatdev/sdk';
4064
+ import type { SetEnvironmentVarOperationRequest } from '@boatdev/sdk';
4065
+
4066
+ async function example() {
4067
+ console.log("🚀 Testing @boatdev/sdk SDK...");
4068
+ const config = new Configuration({
4069
+ // Configure HTTP bearer authorization: BoatBearerAuth
4070
+ accessToken: "YOUR BEARER TOKEN",
4071
+ });
4072
+ const api = new BoatApi(config);
4073
+
4074
+ const body = {
4075
+ // string
4076
+ environmentId: 38400000-8cf0-11bd-b23e-10b96e4ef00d,
4077
+ // string | Environment variable name.
4078
+ key: key_example,
4079
+ // SetEnvironmentVarRequest
4080
+ setEnvironmentVarRequest: ...,
4081
+ } satisfies SetEnvironmentVarOperationRequest;
4082
+
4083
+ try {
4084
+ const data = await api.setEnvironmentVar(body);
4085
+ console.log(data);
4086
+ } catch (error) {
4087
+ console.error(error);
4088
+ }
4089
+ }
4090
+
4091
+ // Run the test
4092
+ example().catch(console.error);
4093
+ ```
4094
+
4095
+ ### Parameters
4096
+
4097
+
4098
+ | Name | Type | Description | Notes |
4099
+ |------------- | ------------- | ------------- | -------------|
4100
+ | **environmentId** | `string` | | [Defaults to `undefined`] |
4101
+ | **key** | `string` | Environment variable name. | [Defaults to `undefined`] |
4102
+ | **setEnvironmentVarRequest** | [SetEnvironmentVarRequest](SetEnvironmentVarRequest.md) | | |
4103
+
4104
+ ### Return type
4105
+
4106
+ [**EnvironmentItemChangeResponse**](EnvironmentItemChangeResponse.md)
4107
+
4108
+ ### Authorization
4109
+
4110
+ [BoatBearerAuth](../README.md#BoatBearerAuth)
4111
+
4112
+ ### HTTP request headers
4113
+
4114
+ - **Content-Type**: `application/json`
4115
+ - **Accept**: `application/json`
4116
+
4117
+
4118
+ ### HTTP response details
4119
+ | Status code | Description | Response headers |
4120
+ |-------------|-------------|------------------|
4121
+ | **200** | New version minted. | - |
4122
+ | **400** | Invalid request body or parameters. | - |
4123
+ | **401** | Missing or invalid bearer token. | - |
4124
+ | **404** | Resource not found. | - |
4125
+
4126
+ [[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
4127
+
4128
+
4129
+ ## sshKey
4130
+
4131
+ > SshKeyResponse sshKey(sandboxId, sshKeyRequest)
4132
+
4133
+ Configure sandbox SSH key
4134
+
4135
+ Adds an OpenSSH public key to the running sandbox so the caller can SSH as user `user`. The response carries `machineIp`, which is the host to connect to on port 22. This is also how you reach your own machine from inside a sandbox without the CLI: authorize the key, then open a reverse tunnel with stock OpenSSH, and a port on your machine answers at `127.0.0.1:<port>` inside the sandbox for as long as the ssh process runs. ```bash ssh -o ExitOnForwardFailure=yes -i ~/.ssh/id_ed25519 -N -R 7777:127.0.0.1:7777 user@<machineIp> ``` `boat forward <id> --reverse --local 7777` is the same tunnel with the key handling and redial done for you.
4136
+
4137
+ ### Example
4138
+
4139
+ ```ts
4140
+ import {
4141
+ Configuration,
4142
+ BoatApi,
4143
+ } from '@boatdev/sdk';
4144
+ import type { SshKeyOperationRequest } from '@boatdev/sdk';
4145
+
4146
+ async function example() {
4147
+ console.log("🚀 Testing @boatdev/sdk SDK...");
4148
+ const config = new Configuration({
4149
+ // Configure HTTP bearer authorization: BoatBearerAuth
4150
+ accessToken: "YOUR BEARER TOKEN",
4151
+ });
4152
+ const api = new BoatApi(config);
4153
+
4154
+ const body = {
4155
+ // string | Public Sandbox id returned by create/list/get sandbox calls.
4156
+ sandboxId: sandboxId_example,
4157
+ // SshKeyRequest
4158
+ sshKeyRequest: ...,
4159
+ } satisfies SshKeyOperationRequest;
4160
+
4161
+ try {
4162
+ const data = await api.sshKey(body);
4163
+ console.log(data);
4164
+ } catch (error) {
4165
+ console.error(error);
4166
+ }
4167
+ }
4168
+
4169
+ // Run the test
4170
+ example().catch(console.error);
4171
+ ```
4172
+
4173
+ ### Parameters
4174
+
4175
+
4176
+ | Name | Type | Description | Notes |
4177
+ |------------- | ------------- | ------------- | -------------|
4178
+ | **sandboxId** | `string` | Public Sandbox id returned by create/list/get sandbox calls. | [Defaults to `undefined`] |
4179
+ | **sshKeyRequest** | [SshKeyRequest](SshKeyRequest.md) | | |
4180
+
4181
+ ### Return type
4182
+
4183
+ [**SshKeyResponse**](SshKeyResponse.md)
4184
+
4185
+ ### Authorization
4186
+
4187
+ [BoatBearerAuth](../README.md#BoatBearerAuth)
4188
+
4189
+ ### HTTP request headers
4190
+
4191
+ - **Content-Type**: `application/json`
4192
+ - **Accept**: `application/json`
4193
+
4194
+
4195
+ ### HTTP response details
4196
+ | Status code | Description | Response headers |
4197
+ |-------------|-------------|------------------|
4198
+ | **200** | SSH key setup result. | - |
4199
+ | **400** | Invalid request body or parameters. | - |
4200
+ | **401** | Missing or invalid bearer token. | - |
4201
+ | **402** | Account cannot currently create or operate sandboxes. The error body may include a dashboard billing URL, but billing actions are not part of the v1 API. | - |
4202
+ | **404** | Resource not found. | - |
4203
+
4204
+ [[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
4205
+
4206
+
4207
+ ## steer
4208
+
4209
+ > SteerResponse steer(sandboxId, steerRequest, conversation)
4210
+
4211
+ Steer a running turn
4212
+
4213
+ Send a new message to a turn that is already running, without losing what the agent is doing. This is what typing into a coding agent while it works does: the instruction is taken into account and the work continues. Where the harness has a native mid-turn primitive (Claude Code, Codex, pi, Prime Agent) nothing is interrupted and the response has `native: true`. Where it does not (OpenCode), Boat interrupts that turn and immediately continues the SAME conversation with the instruction, keeping the session and its memory, and the response has `native: false`. Refused with **409 `no_running_turn`** when the conversation has nothing in flight; queue work with `POST /prompt` instead. The steer shows up in `GET /events` as a `steer` event. See [Integrated agents](/integrated-agents).
4214
+
4215
+ ### Example
4216
+
4217
+ ```ts
4218
+ import {
4219
+ Configuration,
4220
+ BoatApi,
4221
+ } from '@boatdev/sdk';
4222
+ import type { SteerOperationRequest } from '@boatdev/sdk';
4223
+
4224
+ async function example() {
4225
+ console.log("🚀 Testing @boatdev/sdk SDK...");
4226
+ const config = new Configuration({
4227
+ // Configure HTTP bearer authorization: BoatBearerAuth
4228
+ accessToken: "YOUR BEARER TOKEN",
4229
+ });
4230
+ const api = new BoatApi(config);
4231
+
4232
+ const body = {
4233
+ // string | Public Sandbox id returned by create/list/get sandbox calls.
4234
+ sandboxId: sandboxId_example,
4235
+ // SteerRequest
4236
+ steerRequest: {"message":"Also write /home/user/steered.txt containing the word STEERED, then finish."},
4237
+ // string | Conversation id to steer. Also accepted in the body. Omit to steer the sandbox\'s most-recently-active conversation. (optional)
4238
+ conversation: conversation_example,
4239
+ } satisfies SteerOperationRequest;
4240
+
4241
+ try {
4242
+ const data = await api.steer(body);
4243
+ console.log(data);
4244
+ } catch (error) {
4245
+ console.error(error);
4246
+ }
4247
+ }
4248
+
4249
+ // Run the test
4250
+ example().catch(console.error);
4251
+ ```
4252
+
4253
+ ### Parameters
4254
+
4255
+
4256
+ | Name | Type | Description | Notes |
4257
+ |------------- | ------------- | ------------- | -------------|
4258
+ | **sandboxId** | `string` | Public Sandbox id returned by create/list/get sandbox calls. | [Defaults to `undefined`] |
4259
+ | **steerRequest** | [SteerRequest](SteerRequest.md) | | |
4260
+ | **conversation** | `string` | Conversation id to steer. Also accepted in the body. Omit to steer the sandbox\'s most-recently-active conversation. | [Optional] [Defaults to `undefined`] |
4261
+
4262
+ ### Return type
4263
+
4264
+ [**SteerResponse**](SteerResponse.md)
4265
+
4266
+ ### Authorization
4267
+
4268
+ [BoatBearerAuth](../README.md#BoatBearerAuth)
4269
+
4270
+ ### HTTP request headers
4271
+
4272
+ - **Content-Type**: `application/json`
4273
+ - **Accept**: `application/json`
4274
+
4275
+
4276
+ ### HTTP response details
4277
+ | Status code | Description | Response headers |
4278
+ |-------------|-------------|------------------|
4279
+ | **200** | Message delivered to the running turn. | - |
4280
+ | **400** | Invalid request body or parameters. | - |
4281
+ | **401** | Missing or invalid bearer token. | - |
4282
+ | **402** | Account cannot currently create or operate sandboxes. The error body may include a dashboard billing URL, but billing actions are not part of the v1 API. | - |
4283
+ | **404** | Resource not found. | - |
4284
+ | **409** | Request conflicts with current account or sandbox state. | - |
4285
+
4286
+ [[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
4287
+
4288
+
4289
+ ## stop
4290
+
4291
+ > SandboxActionResponse stop(sandboxId, stopRequest)
4292
+
4293
+ Stop and archive sandbox
4294
+
4295
+ Stop active work and archive/snapshot the sandbox for later resume or fork. A stop always saves the sandbox\'s disk first. If that save is failing, the stop is refused and the sandbox keeps running so your work is not discarded, we retry automatically and email you. You are not billed for time spent in that state. Set `force: true` to stop anyway, accepting the loss of everything written since the last successful snapshot. This is irreversible; only reach for it after a stop has already failed.
4296
+
4297
+ ### Example
4298
+
4299
+ ```ts
4300
+ import {
4301
+ Configuration,
4302
+ BoatApi,
4303
+ } from '@boatdev/sdk';
4304
+ import type { StopOperationRequest } from '@boatdev/sdk';
4305
+
4306
+ async function example() {
4307
+ console.log("🚀 Testing @boatdev/sdk SDK...");
4308
+ const config = new Configuration({
4309
+ // Configure HTTP bearer authorization: BoatBearerAuth
4310
+ accessToken: "YOUR BEARER TOKEN",
4311
+ });
4312
+ const api = new BoatApi(config);
4313
+
4314
+ const body = {
4315
+ // string | Public Sandbox id returned by create/list/get sandbox calls.
4316
+ sandboxId: sandboxId_example,
4317
+ // StopRequest (optional)
4318
+ stopRequest: ...,
4319
+ } satisfies StopOperationRequest;
4320
+
4321
+ try {
4322
+ const data = await api.stop(body);
4323
+ console.log(data);
4324
+ } catch (error) {
4325
+ console.error(error);
4326
+ }
4327
+ }
4328
+
4329
+ // Run the test
4330
+ example().catch(console.error);
4331
+ ```
4332
+
4333
+ ### Parameters
4334
+
4335
+
4336
+ | Name | Type | Description | Notes |
4337
+ |------------- | ------------- | ------------- | -------------|
4338
+ | **sandboxId** | `string` | Public Sandbox id returned by create/list/get sandbox calls. | [Defaults to `undefined`] |
4339
+ | **stopRequest** | [StopRequest](StopRequest.md) | | [Optional] |
4340
+
4341
+ ### Return type
4342
+
4343
+ [**SandboxActionResponse**](SandboxActionResponse.md)
4344
+
4345
+ ### Authorization
4346
+
4347
+ [BoatBearerAuth](../README.md#BoatBearerAuth)
4348
+
4349
+ ### HTTP request headers
4350
+
4351
+ - **Content-Type**: `application/json`
4352
+ - **Accept**: `application/json`
4353
+
4354
+
4355
+ ### HTTP response details
4356
+ | Status code | Description | Response headers |
4357
+ |-------------|-------------|------------------|
4358
+ | **202** | Boat archival started or already in progress. | - |
4359
+ | **400** | Invalid request body or parameters. | - |
4360
+ | **401** | Missing or invalid bearer token. | - |
4361
+ | **404** | Resource not found. | - |
4362
+
4363
+ [[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
4364
+
4365
+
4366
+ ## update
4367
+
4368
+ > SandboxInfoResponse update(sandboxId, updateSandboxRequest)
4369
+
4370
+ Update sandbox
4371
+
4372
+ ### Example
4373
+
4374
+ ```ts
4375
+ import {
4376
+ Configuration,
4377
+ BoatApi,
4378
+ } from '@boatdev/sdk';
4379
+ import type { UpdateRequest } from '@boatdev/sdk';
4380
+
4381
+ async function example() {
4382
+ console.log("🚀 Testing @boatdev/sdk SDK...");
4383
+ const config = new Configuration({
4384
+ // Configure HTTP bearer authorization: BoatBearerAuth
4385
+ accessToken: "YOUR BEARER TOKEN",
4386
+ });
4387
+ const api = new BoatApi(config);
4388
+
4389
+ const body = {
4390
+ // string | Public Sandbox id returned by create/list/get sandbox calls.
4391
+ sandboxId: sandboxId_example,
4392
+ // UpdateSandboxRequest
4393
+ updateSandboxRequest: ...,
4394
+ } satisfies UpdateRequest;
4395
+
4396
+ try {
4397
+ const data = await api.update(body);
4398
+ console.log(data);
4399
+ } catch (error) {
4400
+ console.error(error);
4401
+ }
4402
+ }
4403
+
4404
+ // Run the test
4405
+ example().catch(console.error);
4406
+ ```
4407
+
4408
+ ### Parameters
4409
+
4410
+
4411
+ | Name | Type | Description | Notes |
4412
+ |------------- | ------------- | ------------- | -------------|
4413
+ | **sandboxId** | `string` | Public Sandbox id returned by create/list/get sandbox calls. | [Defaults to `undefined`] |
4414
+ | **updateSandboxRequest** | [UpdateSandboxRequest](UpdateSandboxRequest.md) | | |
4415
+
4416
+ ### Return type
4417
+
4418
+ [**SandboxInfoResponse**](SandboxInfoResponse.md)
4419
+
4420
+ ### Authorization
4421
+
4422
+ [BoatBearerAuth](../README.md#BoatBearerAuth)
4423
+
4424
+ ### HTTP request headers
4425
+
4426
+ - **Content-Type**: `application/json`
4427
+ - **Accept**: `application/json`
4428
+
4429
+
4430
+ ### HTTP response details
4431
+ | Status code | Description | Response headers |
4432
+ |-------------|-------------|------------------|
4433
+ | **200** | Updated sandbox details. | - |
4434
+ | **400** | Invalid request body or parameters. | - |
4435
+ | **401** | Missing or invalid bearer token. | - |
4436
+ | **404** | Resource not found. | - |
4437
+
4438
+ [[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
4439
+
4440
+
4441
+ ## updateDataRetention
4442
+
4443
+ > DataRetentionPolicyResponse updateDataRetention(dataRetentionUpdateRequest)
4444
+
4445
+ Update account data-retention policy
4446
+
4447
+ Requires an interactive sandbox session; API keys and legacy permanent tokens are refused. Enabling requires the exact confirmation phrase `delete archived sandbox data`. Disabling affects future archives only and cannot cancel deletion operations already accepted.
4448
+
4449
+ ### Example
4450
+
4451
+ ```ts
4452
+ import {
4453
+ Configuration,
4454
+ BoatApi,
4455
+ } from '@boatdev/sdk';
4456
+ import type { UpdateDataRetentionRequest } from '@boatdev/sdk';
4457
+
4458
+ async function example() {
4459
+ console.log("🚀 Testing @boatdev/sdk SDK...");
4460
+ const config = new Configuration({
4461
+ // Configure HTTP bearer authorization: BoatBearerAuth
4462
+ accessToken: "YOUR BEARER TOKEN",
4463
+ });
4464
+ const api = new BoatApi(config);
4465
+
4466
+ const body = {
4467
+ // DataRetentionUpdateRequest
4468
+ dataRetentionUpdateRequest: ...,
4469
+ } satisfies UpdateDataRetentionRequest;
4470
+
4471
+ try {
4472
+ const data = await api.updateDataRetention(body);
4473
+ console.log(data);
4474
+ } catch (error) {
4475
+ console.error(error);
4476
+ }
4477
+ }
4478
+
4479
+ // Run the test
4480
+ example().catch(console.error);
4481
+ ```
4482
+
4483
+ ### Parameters
4484
+
4485
+
4486
+ | Name | Type | Description | Notes |
4487
+ |------------- | ------------- | ------------- | -------------|
4488
+ | **dataRetentionUpdateRequest** | [DataRetentionUpdateRequest](DataRetentionUpdateRequest.md) | | |
4489
+
4490
+ ### Return type
4491
+
4492
+ [**DataRetentionPolicyResponse**](DataRetentionPolicyResponse.md)
4493
+
4494
+ ### Authorization
4495
+
4496
+ [BoatBearerAuth](../README.md#BoatBearerAuth)
4497
+
4498
+ ### HTTP request headers
4499
+
4500
+ - **Content-Type**: `application/json`
4501
+ - **Accept**: `application/json`
4502
+
4503
+
4504
+ ### HTTP response details
4505
+ | Status code | Description | Response headers |
4506
+ |-------------|-------------|------------------|
4507
+ | **200** | Updated retention policy. Responses are never cached. | - |
4508
+ | **400** | Invalid request body or parameters. | - |
4509
+ | **401** | Missing or invalid bearer token. | - |
4510
+ | **403** | Authenticated token is not allowed to perform this action. | - |
4511
+ | **409** | Request conflicts with current account or sandbox state. | - |
4512
+
4513
+ [[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
4514
+
4515
+
4516
+ ## updateEnvironment
4517
+
4518
+ > SandboxEnvironmentResponse updateEnvironment(environmentId, updateSandboxEnvironmentRequest)
4519
+
4520
+ Update a sandbox environment
4521
+
4522
+ Rename, set as default, and/or edit flags and contents. Any flag or content change mints a new immutable version; existing sandboxes stay on their pinned version until you call upgrade.
4523
+
4524
+ ### Example
4525
+
4526
+ ```ts
4527
+ import {
4528
+ Configuration,
4529
+ BoatApi,
4530
+ } from '@boatdev/sdk';
4531
+ import type { UpdateEnvironmentRequest } from '@boatdev/sdk';
4532
+
4533
+ async function example() {
4534
+ console.log("🚀 Testing @boatdev/sdk SDK...");
4535
+ const config = new Configuration({
4536
+ // Configure HTTP bearer authorization: BoatBearerAuth
4537
+ accessToken: "YOUR BEARER TOKEN",
4538
+ });
4539
+ const api = new BoatApi(config);
4540
+
4541
+ const body = {
4542
+ // string | Environment id returned by `GET /environments`.
4543
+ environmentId: 38400000-8cf0-11bd-b23e-10b96e4ef00d,
4544
+ // UpdateSandboxEnvironmentRequest
4545
+ updateSandboxEnvironmentRequest: ...,
4546
+ } satisfies UpdateEnvironmentRequest;
4547
+
4548
+ try {
4549
+ const data = await api.updateEnvironment(body);
4550
+ console.log(data);
4551
+ } catch (error) {
4552
+ console.error(error);
4553
+ }
4554
+ }
4555
+
4556
+ // Run the test
4557
+ example().catch(console.error);
4558
+ ```
4559
+
4560
+ ### Parameters
4561
+
4562
+
4563
+ | Name | Type | Description | Notes |
4564
+ |------------- | ------------- | ------------- | -------------|
4565
+ | **environmentId** | `string` | Environment id returned by `GET /environments`. | [Defaults to `undefined`] |
4566
+ | **updateSandboxEnvironmentRequest** | [UpdateSandboxEnvironmentRequest](UpdateSandboxEnvironmentRequest.md) | | |
4567
+
4568
+ ### Return type
4569
+
4570
+ [**SandboxEnvironmentResponse**](SandboxEnvironmentResponse.md)
4571
+
4572
+ ### Authorization
4573
+
4574
+ [BoatBearerAuth](../README.md#BoatBearerAuth)
4575
+
4576
+ ### HTTP request headers
4577
+
4578
+ - **Content-Type**: `application/json`
4579
+ - **Accept**: `application/json`
4580
+
4581
+
4582
+ ### HTTP response details
4583
+ | Status code | Description | Response headers |
4584
+ |-------------|-------------|------------------|
4585
+ | **200** | Updated environment. | - |
4586
+ | **400** | Invalid request body or parameters. | - |
4587
+ | **401** | Missing or invalid bearer token. | - |
4588
+ | **404** | Resource not found. | - |
4589
+
4590
+ [[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
4591
+
4592
+
4593
+ ## updateSecrets
4594
+
4595
+ > SecretsResponse updateSecrets(secretsUpdateRequest)
4596
+
4597
+ Update Boat secrets setup
4598
+
4599
+ ### Example
4600
+
4601
+ ```ts
4602
+ import {
4603
+ Configuration,
4604
+ BoatApi,
4605
+ } from '@boatdev/sdk';
4606
+ import type { UpdateSecretsRequest } from '@boatdev/sdk';
4607
+
4608
+ async function example() {
4609
+ console.log("🚀 Testing @boatdev/sdk SDK...");
4610
+ const config = new Configuration({
4611
+ // Configure HTTP bearer authorization: BoatBearerAuth
4612
+ accessToken: "YOUR BEARER TOKEN",
4613
+ });
4614
+ const api = new BoatApi(config);
4615
+
4616
+ const body = {
4617
+ // SecretsUpdateRequest
4618
+ secretsUpdateRequest: ...,
4619
+ } satisfies UpdateSecretsRequest;
4620
+
4621
+ try {
4622
+ const data = await api.updateSecrets(body);
4623
+ console.log(data);
4624
+ } catch (error) {
4625
+ console.error(error);
4626
+ }
4627
+ }
4628
+
4629
+ // Run the test
4630
+ example().catch(console.error);
4631
+ ```
4632
+
4633
+ ### Parameters
4634
+
4635
+
4636
+ | Name | Type | Description | Notes |
4637
+ |------------- | ------------- | ------------- | -------------|
4638
+ | **secretsUpdateRequest** | [SecretsUpdateRequest](SecretsUpdateRequest.md) | | |
4639
+
4640
+ ### Return type
4641
+
4642
+ [**SecretsResponse**](SecretsResponse.md)
4643
+
4644
+ ### Authorization
4645
+
4646
+ [BoatBearerAuth](../README.md#BoatBearerAuth)
4647
+
4648
+ ### HTTP request headers
4649
+
4650
+ - **Content-Type**: `application/json`
4651
+ - **Accept**: `application/json`
4652
+
4653
+
4654
+ ### HTTP response details
4655
+ | Status code | Description | Response headers |
4656
+ |-------------|-------------|------------------|
4657
+ | **200** | Updated secret setup metadata. | - |
4658
+ | **401** | Missing or invalid bearer token. | - |
4659
+
4660
+ [[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
4661
+
4662
+
4663
+ ## updateWebhook
4664
+
4665
+ > WebhookResponse updateWebhook(webhookId, webhookUpdateRequest)
4666
+
4667
+ Update webhook
4668
+
4669
+ Updates the name, endpoint URL, or subscribed events without changing the signing secret.
4670
+
4671
+ ### Example
4672
+
4673
+ ```ts
4674
+ import {
4675
+ Configuration,
4676
+ BoatApi,
4677
+ } from '@boatdev/sdk';
4678
+ import type { UpdateWebhookRequest } from '@boatdev/sdk';
4679
+
4680
+ async function example() {
4681
+ console.log("🚀 Testing @boatdev/sdk SDK...");
4682
+ const config = new Configuration({
4683
+ // Configure HTTP bearer authorization: BoatBearerAuth
4684
+ accessToken: "YOUR BEARER TOKEN",
4685
+ });
4686
+ const api = new BoatApi(config);
4687
+
4688
+ const body = {
4689
+ // string
4690
+ webhookId: webhookId_example,
4691
+ // WebhookUpdateRequest
4692
+ webhookUpdateRequest: ...,
4693
+ } satisfies UpdateWebhookRequest;
4694
+
4695
+ try {
4696
+ const data = await api.updateWebhook(body);
4697
+ console.log(data);
4698
+ } catch (error) {
4699
+ console.error(error);
4700
+ }
4701
+ }
4702
+
4703
+ // Run the test
4704
+ example().catch(console.error);
4705
+ ```
4706
+
4707
+ ### Parameters
4708
+
4709
+
4710
+ | Name | Type | Description | Notes |
4711
+ |------------- | ------------- | ------------- | -------------|
4712
+ | **webhookId** | `string` | | [Defaults to `undefined`] |
4713
+ | **webhookUpdateRequest** | [WebhookUpdateRequest](WebhookUpdateRequest.md) | | |
4714
+
4715
+ ### Return type
4716
+
4717
+ [**WebhookResponse**](WebhookResponse.md)
4718
+
4719
+ ### Authorization
4720
+
4721
+ [BoatBearerAuth](../README.md#BoatBearerAuth)
4722
+
4723
+ ### HTTP request headers
4724
+
4725
+ - **Content-Type**: `application/json`
4726
+ - **Accept**: `application/json`
4727
+
4728
+
4729
+ ### HTTP response details
4730
+ | Status code | Description | Response headers |
4731
+ |-------------|-------------|------------------|
4732
+ | **200** | Updated webhook metadata. | - |
4733
+ | **400** | Invalid request body or parameters. | - |
4734
+ | **401** | Missing or invalid bearer token. | - |
4735
+ | **404** | Resource not found. | - |
4736
+ | **409** | Request conflicts with current account or sandbox state. | - |
4737
+
4738
+ [[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
4739
+
4740
+
4741
+ ## upgradeEnvironment
4742
+
4743
+ > UpgradeSandboxEnvironmentResponse upgradeEnvironment(environmentId, upgradeSandboxEnvironmentRequest)
4744
+
4745
+ Upgrade sandboxes to an environment\'s latest version
4746
+
4747
+ Repoints the caller\'s active sandboxes from an older version of this environment to its latest version, scrubbing any owner secrets the new version drops and hot-pushing the new config.
4748
+
4749
+ ### Example
4750
+
4751
+ ```ts
4752
+ import {
4753
+ Configuration,
4754
+ BoatApi,
4755
+ } from '@boatdev/sdk';
4756
+ import type { UpgradeEnvironmentRequest } from '@boatdev/sdk';
4757
+
4758
+ async function example() {
4759
+ console.log("🚀 Testing @boatdev/sdk SDK...");
4760
+ const config = new Configuration({
4761
+ // Configure HTTP bearer authorization: BoatBearerAuth
4762
+ accessToken: "YOUR BEARER TOKEN",
4763
+ });
4764
+ const api = new BoatApi(config);
4765
+
4766
+ const body = {
4767
+ // string
4768
+ environmentId: 38400000-8cf0-11bd-b23e-10b96e4ef00d,
4769
+ // UpgradeSandboxEnvironmentRequest (optional)
4770
+ upgradeSandboxEnvironmentRequest: ...,
4771
+ } satisfies UpgradeEnvironmentRequest;
4772
+
4773
+ try {
4774
+ const data = await api.upgradeEnvironment(body);
4775
+ console.log(data);
4776
+ } catch (error) {
4777
+ console.error(error);
4778
+ }
4779
+ }
4780
+
4781
+ // Run the test
4782
+ example().catch(console.error);
4783
+ ```
4784
+
4785
+ ### Parameters
4786
+
4787
+
4788
+ | Name | Type | Description | Notes |
4789
+ |------------- | ------------- | ------------- | -------------|
4790
+ | **environmentId** | `string` | | [Defaults to `undefined`] |
4791
+ | **upgradeSandboxEnvironmentRequest** | [UpgradeSandboxEnvironmentRequest](UpgradeSandboxEnvironmentRequest.md) | | [Optional] |
4792
+
4793
+ ### Return type
4794
+
4795
+ [**UpgradeSandboxEnvironmentResponse**](UpgradeSandboxEnvironmentResponse.md)
4796
+
4797
+ ### Authorization
4798
+
4799
+ [BoatBearerAuth](../README.md#BoatBearerAuth)
4800
+
4801
+ ### HTTP request headers
4802
+
4803
+ - **Content-Type**: `application/json`
4804
+ - **Accept**: `application/json`
4805
+
4806
+
4807
+ ### HTTP response details
4808
+ | Status code | Description | Response headers |
4809
+ |-------------|-------------|------------------|
4810
+ | **200** | Upgrade result counts. | - |
4811
+ | **401** | Missing or invalid bearer token. | - |
4812
+ | **404** | Resource not found. | - |
4813
+
4814
+ [[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
4815
+
4816
+
4817
+ ## usage
4818
+
4819
+ > SandboxUsageResponse usage(sandboxId, since, until)
4820
+
4821
+ Get boat usage
4822
+
4823
+ Machine time one sandbox consumed, and what it costs, so you can bill your own users per sandbox. Same meter as `GET /limits`: billable seconds with the sandbox type\'s multiplier applied, paused past a refused stop, never counting time stopped. Narrow it to a billing period with `since` and `until`; a period boundary that falls inside a running stretch splits that stretch pro rata. Works while the sandbox runs and after it stops.
4824
+
4825
+ ### Example
4826
+
4827
+ ```ts
4828
+ import {
4829
+ Configuration,
4830
+ BoatApi,
4831
+ } from '@boatdev/sdk';
4832
+ import type { UsageRequest } from '@boatdev/sdk';
4833
+
4834
+ async function example() {
4835
+ console.log("🚀 Testing @boatdev/sdk SDK...");
4836
+ const config = new Configuration({
4837
+ // Configure HTTP bearer authorization: BoatBearerAuth
4838
+ accessToken: "YOUR BEARER TOKEN",
4839
+ });
4840
+ const api = new BoatApi(config);
4841
+
4842
+ const body = {
4843
+ // string | Public Sandbox id returned by create/list/get sandbox calls.
4844
+ sandboxId: sandboxId_example,
4845
+ // string | Count from this time, ISO 8601 or Unix epoch seconds. Default is the sandbox\'s creation. (optional)
4846
+ since: 2026-09-01T00:00:00Z,
4847
+ // string | Count up to this time, ISO 8601 or Unix epoch seconds. Default is now. (optional)
4848
+ until: 2026-10-01T00:00:00Z,
4849
+ } satisfies UsageRequest;
4850
+
4851
+ try {
4852
+ const data = await api.usage(body);
4853
+ console.log(data);
4854
+ } catch (error) {
4855
+ console.error(error);
4856
+ }
4857
+ }
4858
+
4859
+ // Run the test
4860
+ example().catch(console.error);
4861
+ ```
4862
+
4863
+ ### Parameters
4864
+
4865
+
4866
+ | Name | Type | Description | Notes |
4867
+ |------------- | ------------- | ------------- | -------------|
4868
+ | **sandboxId** | `string` | Public Sandbox id returned by create/list/get sandbox calls. | [Defaults to `undefined`] |
4869
+ | **since** | `string` | Count from this time, ISO 8601 or Unix epoch seconds. Default is the sandbox\'s creation. | [Optional] [Defaults to `undefined`] |
4870
+ | **until** | `string` | Count up to this time, ISO 8601 or Unix epoch seconds. Default is now. | [Optional] [Defaults to `undefined`] |
4871
+
4872
+ ### Return type
4873
+
4874
+ [**SandboxUsageResponse**](SandboxUsageResponse.md)
4875
+
4876
+ ### Authorization
4877
+
4878
+ [BoatBearerAuth](../README.md#BoatBearerAuth)
4879
+
4880
+ ### HTTP request headers
4881
+
4882
+ - **Content-Type**: Not defined
4883
+ - **Accept**: `application/json`
4884
+
4885
+
4886
+ ### HTTP response details
4887
+ | Status code | Description | Response headers |
4888
+ |-------------|-------------|------------------|
4889
+ | **200** | Billable machine time for the sandbox inside the window. | - |
4890
+ | **400** | Invalid request body or parameters. | - |
4891
+ | **401** | Missing or invalid bearer token. | - |
4892
+ | **404** | Resource not found. | - |
4893
+
4894
+ [[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
4895
+
4896
+
4897
+ ## writeFile
4898
+
4899
+ > FileWriteResponse writeFile(sandboxId, fileWriteRequest)
4900
+
4901
+ Write a file in a sandbox
4902
+
4903
+ ### Example
4904
+
4905
+ ```ts
4906
+ import {
4907
+ Configuration,
4908
+ BoatApi,
4909
+ } from '@boatdev/sdk';
4910
+ import type { WriteFileRequest } from '@boatdev/sdk';
4911
+
4912
+ async function example() {
4913
+ console.log("🚀 Testing @boatdev/sdk SDK...");
4914
+ const config = new Configuration({
4915
+ // Configure HTTP bearer authorization: BoatBearerAuth
4916
+ accessToken: "YOUR BEARER TOKEN",
4917
+ });
4918
+ const api = new BoatApi(config);
4919
+
4920
+ const body = {
4921
+ // string | Public Sandbox id returned by create/list/get sandbox calls.
4922
+ sandboxId: sandboxId_example,
4923
+ // FileWriteRequest
4924
+ fileWriteRequest: ...,
4925
+ } satisfies WriteFileRequest;
4926
+
4927
+ try {
4928
+ const data = await api.writeFile(body);
4929
+ console.log(data);
4930
+ } catch (error) {
4931
+ console.error(error);
4932
+ }
4933
+ }
4934
+
4935
+ // Run the test
4936
+ example().catch(console.error);
4937
+ ```
4938
+
4939
+ ### Parameters
4940
+
4941
+
4942
+ | Name | Type | Description | Notes |
4943
+ |------------- | ------------- | ------------- | -------------|
4944
+ | **sandboxId** | `string` | Public Sandbox id returned by create/list/get sandbox calls. | [Defaults to `undefined`] |
4945
+ | **fileWriteRequest** | [FileWriteRequest](FileWriteRequest.md) | | |
4946
+
4947
+ ### Return type
4948
+
4949
+ [**FileWriteResponse**](FileWriteResponse.md)
4950
+
4951
+ ### Authorization
4952
+
4953
+ [BoatBearerAuth](../README.md#BoatBearerAuth)
4954
+
4955
+ ### HTTP request headers
4956
+
4957
+ - **Content-Type**: `application/json`
4958
+ - **Accept**: `application/json`
4959
+
4960
+
4961
+ ### HTTP response details
4962
+ | Status code | Description | Response headers |
4963
+ |-------------|-------------|------------------|
4964
+ | **200** | File written. | - |
4965
+ | **400** | Invalid request body or parameters. | - |
4966
+
4967
+ [[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)