@agentuity/core 1.0.41 → 1.0.43

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 (254) hide show
  1. package/dist/services/api-reference.d.ts +68 -0
  2. package/dist/services/api-reference.d.ts.map +1 -0
  3. package/dist/services/api-reference.js +91 -0
  4. package/dist/services/api-reference.js.map +1 -0
  5. package/dist/services/apikey/api-reference.d.ts +4 -0
  6. package/dist/services/apikey/api-reference.d.ts.map +1 -0
  7. package/dist/services/apikey/api-reference.js +96 -0
  8. package/dist/services/apikey/api-reference.js.map +1 -0
  9. package/dist/services/db/api-reference.d.ts +4 -0
  10. package/dist/services/db/api-reference.d.ts.map +1 -0
  11. package/dist/services/db/api-reference.js +149 -0
  12. package/dist/services/db/api-reference.js.map +1 -0
  13. package/dist/services/db/types.d.ts +7 -0
  14. package/dist/services/db/types.d.ts.map +1 -0
  15. package/dist/services/db/types.js +9 -0
  16. package/dist/services/db/types.js.map +1 -0
  17. package/dist/services/email/api-reference.d.ts +4 -0
  18. package/dist/services/email/api-reference.d.ts.map +1 -0
  19. package/dist/services/email/api-reference.js +342 -0
  20. package/dist/services/email/api-reference.js.map +1 -0
  21. package/dist/services/email/service.d.ts.map +1 -1
  22. package/dist/services/email/service.js +1 -2
  23. package/dist/services/email/service.js.map +1 -1
  24. package/dist/services/email/types.d.ts +13 -0
  25. package/dist/services/email/types.d.ts.map +1 -0
  26. package/dist/services/email/types.js +11 -0
  27. package/dist/services/email/types.js.map +1 -0
  28. package/dist/services/eval/api-reference.d.ts +4 -0
  29. package/dist/services/eval/api-reference.d.ts.map +1 -0
  30. package/dist/services/eval/api-reference.js +121 -0
  31. package/dist/services/eval/api-reference.js.map +1 -0
  32. package/dist/services/index.d.ts +2 -0
  33. package/dist/services/index.d.ts.map +1 -1
  34. package/dist/services/index.js +2 -0
  35. package/dist/services/index.js.map +1 -1
  36. package/dist/services/keyvalue/api-reference.d.ts +4 -0
  37. package/dist/services/keyvalue/api-reference.d.ts.map +1 -0
  38. package/dist/services/keyvalue/api-reference.js +270 -0
  39. package/dist/services/keyvalue/api-reference.js.map +1 -0
  40. package/dist/services/keyvalue/types.d.ts +18 -0
  41. package/dist/services/keyvalue/types.d.ts.map +1 -0
  42. package/dist/services/keyvalue/types.js +19 -0
  43. package/dist/services/keyvalue/types.js.map +1 -0
  44. package/dist/services/machine/api-reference.d.ts +4 -0
  45. package/dist/services/machine/api-reference.d.ts.map +1 -0
  46. package/dist/services/machine/api-reference.js +152 -0
  47. package/dist/services/machine/api-reference.js.map +1 -0
  48. package/dist/services/machine/types.d.ts +18 -0
  49. package/dist/services/machine/types.d.ts.map +1 -0
  50. package/dist/services/machine/types.js +15 -0
  51. package/dist/services/machine/types.js.map +1 -0
  52. package/dist/services/monitoring/index.d.ts +3 -0
  53. package/dist/services/monitoring/index.d.ts.map +1 -0
  54. package/dist/services/monitoring/index.js +3 -0
  55. package/dist/services/monitoring/index.js.map +1 -0
  56. package/dist/services/monitoring/service.d.ts +55 -0
  57. package/dist/services/monitoring/service.d.ts.map +1 -0
  58. package/dist/services/monitoring/service.js +503 -0
  59. package/dist/services/monitoring/service.js.map +1 -0
  60. package/dist/services/monitoring/types.d.ts +173 -0
  61. package/dist/services/monitoring/types.d.ts.map +1 -0
  62. package/dist/services/monitoring/types.js +2 -0
  63. package/dist/services/monitoring/types.js.map +1 -0
  64. package/dist/services/oauth/activity.d.ts +5 -0
  65. package/dist/services/oauth/activity.d.ts.map +1 -0
  66. package/dist/services/oauth/activity.js +17 -0
  67. package/dist/services/oauth/activity.js.map +1 -0
  68. package/dist/services/oauth/api-reference.d.ts +4 -0
  69. package/dist/services/oauth/api-reference.d.ts.map +1 -0
  70. package/dist/services/oauth/api-reference.js +344 -0
  71. package/dist/services/oauth/api-reference.js.map +1 -0
  72. package/dist/services/oauth/clients.d.ts +18 -0
  73. package/dist/services/oauth/clients.d.ts.map +1 -0
  74. package/dist/services/oauth/clients.js +66 -0
  75. package/dist/services/oauth/clients.js.map +1 -0
  76. package/dist/services/oauth/consent.d.ts +7 -0
  77. package/dist/services/oauth/consent.d.ts.map +1 -0
  78. package/dist/services/oauth/consent.js +17 -0
  79. package/dist/services/oauth/consent.js.map +1 -0
  80. package/dist/services/oauth/index.d.ts +9 -0
  81. package/dist/services/oauth/index.d.ts.map +1 -0
  82. package/dist/services/oauth/index.js +9 -0
  83. package/dist/services/oauth/index.js.map +1 -0
  84. package/dist/services/oauth/keys.d.ts +5 -0
  85. package/dist/services/oauth/keys.d.ts.map +1 -0
  86. package/dist/services/oauth/keys.js +10 -0
  87. package/dist/services/oauth/keys.js.map +1 -0
  88. package/dist/services/oauth/members.d.ts +4 -0
  89. package/dist/services/oauth/members.d.ts.map +1 -0
  90. package/dist/services/oauth/members.js +10 -0
  91. package/dist/services/oauth/members.js.map +1 -0
  92. package/dist/services/oauth/scopes.d.ts +4 -0
  93. package/dist/services/oauth/scopes.d.ts.map +1 -0
  94. package/dist/services/oauth/scopes.js +10 -0
  95. package/dist/services/oauth/scopes.js.map +1 -0
  96. package/dist/services/oauth/types.d.ts +587 -0
  97. package/dist/services/oauth/types.d.ts.map +1 -0
  98. package/dist/services/oauth/types.js +160 -0
  99. package/dist/services/oauth/types.js.map +1 -0
  100. package/dist/services/oauth/util.d.ts +23 -0
  101. package/dist/services/oauth/util.d.ts.map +1 -0
  102. package/dist/services/oauth/util.js +3 -0
  103. package/dist/services/oauth/util.js.map +1 -0
  104. package/dist/services/org/api-reference.d.ts +4 -0
  105. package/dist/services/org/api-reference.d.ts.map +1 -0
  106. package/dist/services/org/api-reference.js +145 -0
  107. package/dist/services/org/api-reference.js.map +1 -0
  108. package/dist/services/org/types.d.ts +8 -0
  109. package/dist/services/org/types.d.ts.map +1 -0
  110. package/dist/services/org/types.js +7 -0
  111. package/dist/services/org/types.js.map +1 -0
  112. package/dist/services/project/api-reference.d.ts +4 -0
  113. package/dist/services/project/api-reference.d.ts.map +1 -0
  114. package/dist/services/project/api-reference.js +618 -0
  115. package/dist/services/project/api-reference.js.map +1 -0
  116. package/dist/services/project/types.d.ts +29 -0
  117. package/dist/services/project/types.d.ts.map +1 -0
  118. package/dist/services/project/types.js +40 -0
  119. package/dist/services/project/types.js.map +1 -0
  120. package/dist/services/queue/api-reference.d.ts +4 -0
  121. package/dist/services/queue/api-reference.d.ts.map +1 -0
  122. package/dist/services/queue/api-reference.js +713 -0
  123. package/dist/services/queue/api-reference.js.map +1 -0
  124. package/dist/services/queue/types.d.ts +281 -0
  125. package/dist/services/queue/types.d.ts.map +1 -1
  126. package/dist/services/queue/types.js +81 -0
  127. package/dist/services/queue/types.js.map +1 -1
  128. package/dist/services/region/api-reference.d.ts +4 -0
  129. package/dist/services/region/api-reference.d.ts.map +1 -0
  130. package/dist/services/region/api-reference.js +98 -0
  131. package/dist/services/region/api-reference.js.map +1 -0
  132. package/dist/services/region/types.d.ts +18 -0
  133. package/dist/services/region/types.d.ts.map +1 -0
  134. package/dist/services/region/types.js +18 -0
  135. package/dist/services/region/types.js.map +1 -0
  136. package/dist/services/sandbox/api-reference.d.ts +4 -0
  137. package/dist/services/sandbox/api-reference.d.ts.map +1 -0
  138. package/dist/services/sandbox/api-reference.js +1006 -0
  139. package/dist/services/sandbox/api-reference.js.map +1 -0
  140. package/dist/services/sandbox/run.d.ts +1 -1
  141. package/dist/services/sandbox/types.d.ts +64 -1
  142. package/dist/services/sandbox/types.d.ts.map +1 -1
  143. package/dist/services/sandbox/types.js +87 -0
  144. package/dist/services/sandbox/types.js.map +1 -1
  145. package/dist/services/schedule/api-reference.d.ts +4 -0
  146. package/dist/services/schedule/api-reference.d.ts.map +1 -0
  147. package/dist/services/schedule/api-reference.js +216 -0
  148. package/dist/services/schedule/api-reference.js.map +1 -0
  149. package/dist/services/schedule/types.d.ts +36 -0
  150. package/dist/services/schedule/types.d.ts.map +1 -0
  151. package/dist/services/schedule/types.js +20 -0
  152. package/dist/services/schedule/types.js.map +1 -0
  153. package/dist/services/session/api-reference.d.ts +4 -0
  154. package/dist/services/session/api-reference.d.ts.map +1 -0
  155. package/dist/services/session/api-reference.js +154 -0
  156. package/dist/services/session/api-reference.js.map +1 -0
  157. package/dist/services/storage/api-reference.d.ts +4 -0
  158. package/dist/services/storage/api-reference.d.ts.map +1 -0
  159. package/dist/services/storage/api-reference.js +196 -0
  160. package/dist/services/storage/api-reference.js.map +1 -0
  161. package/dist/services/storage/types.d.ts.map +1 -1
  162. package/dist/services/storage/types.js +9 -3
  163. package/dist/services/storage/types.js.map +1 -1
  164. package/dist/services/stream/api-reference.d.ts +4 -0
  165. package/dist/services/stream/api-reference.d.ts.map +1 -0
  166. package/dist/services/stream/api-reference.js +153 -0
  167. package/dist/services/stream/api-reference.js.map +1 -0
  168. package/dist/services/stream/types.d.ts +49 -0
  169. package/dist/services/stream/types.d.ts.map +1 -0
  170. package/dist/services/stream/types.js +49 -0
  171. package/dist/services/stream/types.js.map +1 -0
  172. package/dist/services/task/api-reference.d.ts +4 -0
  173. package/dist/services/task/api-reference.d.ts.map +1 -0
  174. package/dist/services/task/api-reference.js +802 -0
  175. package/dist/services/task/api-reference.js.map +1 -0
  176. package/dist/services/task/service.d.ts.map +1 -1
  177. package/dist/services/task/service.js +35 -39
  178. package/dist/services/task/service.js.map +1 -1
  179. package/dist/services/task/types.d.ts +48 -0
  180. package/dist/services/task/types.d.ts.map +1 -0
  181. package/dist/services/task/types.js +55 -0
  182. package/dist/services/task/types.js.map +1 -0
  183. package/dist/services/thread/api-reference.d.ts +4 -0
  184. package/dist/services/thread/api-reference.d.ts.map +1 -0
  185. package/dist/services/thread/api-reference.js +89 -0
  186. package/dist/services/thread/api-reference.js.map +1 -0
  187. package/dist/services/user/api-reference.d.ts +4 -0
  188. package/dist/services/user/api-reference.d.ts.map +1 -0
  189. package/dist/services/user/api-reference.js +27 -0
  190. package/dist/services/user/api-reference.js.map +1 -0
  191. package/dist/services/vector/api-reference.d.ts +4 -0
  192. package/dist/services/vector/api-reference.d.ts.map +1 -0
  193. package/dist/services/vector/api-reference.js +213 -0
  194. package/dist/services/vector/api-reference.js.map +1 -0
  195. package/dist/services/vector/types.d.ts +63 -0
  196. package/dist/services/vector/types.d.ts.map +1 -0
  197. package/dist/services/vector/types.js +90 -0
  198. package/dist/services/vector/types.js.map +1 -0
  199. package/dist/services/webhook/api-reference.d.ts +4 -0
  200. package/dist/services/webhook/api-reference.d.ts.map +1 -0
  201. package/dist/services/webhook/api-reference.js +388 -0
  202. package/dist/services/webhook/api-reference.js.map +1 -0
  203. package/package.json +2 -2
  204. package/src/services/api-reference.ts +198 -0
  205. package/src/services/apikey/api-reference.ts +99 -0
  206. package/src/services/db/api-reference.ts +152 -0
  207. package/src/services/db/types.ts +12 -0
  208. package/src/services/email/api-reference.ts +349 -0
  209. package/src/services/email/service.ts +1 -6
  210. package/src/services/email/types.ts +15 -0
  211. package/src/services/eval/api-reference.ts +124 -0
  212. package/src/services/index.ts +2 -0
  213. package/src/services/keyvalue/api-reference.ts +280 -0
  214. package/src/services/keyvalue/types.ts +25 -0
  215. package/src/services/machine/api-reference.ts +158 -0
  216. package/src/services/machine/types.ts +21 -0
  217. package/src/services/monitoring/index.ts +2 -0
  218. package/src/services/monitoring/service.ts +639 -0
  219. package/src/services/monitoring/types.ts +209 -0
  220. package/src/services/oauth/activity.ts +41 -0
  221. package/src/services/oauth/api-reference.ts +380 -0
  222. package/src/services/oauth/clients.ts +161 -0
  223. package/src/services/oauth/consent.ts +33 -0
  224. package/src/services/oauth/index.ts +8 -0
  225. package/src/services/oauth/keys.ts +13 -0
  226. package/src/services/oauth/members.ts +13 -0
  227. package/src/services/oauth/scopes.ts +13 -0
  228. package/src/services/oauth/types.ts +240 -0
  229. package/src/services/oauth/util.ts +3 -0
  230. package/src/services/org/api-reference.ts +148 -0
  231. package/src/services/org/types.ts +9 -0
  232. package/src/services/project/api-reference.ts +636 -0
  233. package/src/services/project/types.ts +47 -0
  234. package/src/services/queue/api-reference.ts +734 -0
  235. package/src/services/queue/types.ts +112 -0
  236. package/src/services/region/api-reference.ts +105 -0
  237. package/src/services/region/types.ts +27 -0
  238. package/src/services/sandbox/api-reference.ts +1042 -0
  239. package/src/services/sandbox/types.ts +100 -0
  240. package/src/services/schedule/api-reference.ts +228 -0
  241. package/src/services/schedule/types.ts +26 -0
  242. package/src/services/session/api-reference.ts +160 -0
  243. package/src/services/storage/api-reference.ts +207 -0
  244. package/src/services/storage/types.ts +9 -3
  245. package/src/services/stream/api-reference.ts +163 -0
  246. package/src/services/stream/types.ts +64 -0
  247. package/src/services/task/api-reference.ts +830 -0
  248. package/src/services/task/service.ts +35 -93
  249. package/src/services/task/types.ts +73 -0
  250. package/src/services/thread/api-reference.ts +91 -0
  251. package/src/services/user/api-reference.ts +31 -0
  252. package/src/services/vector/api-reference.ts +231 -0
  253. package/src/services/vector/types.ts +112 -0
  254. package/src/services/webhook/api-reference.ts +403 -0
@@ -0,0 +1,1006 @@
1
+ import { SandboxCreateDataSchema, SandboxCreateRequestSchema } from "./create.js";
2
+ import { DiskCheckpointCreateParamsSchema, DiskCheckpointInfoSchema } from "./disk-checkpoint.js";
3
+ import { ExecuteDataSchema, ExecuteRequestSchema } from "./execute.js";
4
+ import { ListFilesDataSchema, MkDirRequestSchema, RmDirRequestSchema, RmFileRequestSchema, WriteFilesDataSchema, WriteFilesRequestSchema, } from "./files.js";
5
+ import { SandboxResolveDataSchema } from "./resolve.js";
6
+ import { SnapshotBuildInitResponseSchema } from "./snapshot.js";
7
+ import { ListRuntimesResponseSchema, ListSandboxesResponseSchema, SandboxEnvUpdateRequestSchema, SandboxEnvUpdateResponseSchema, SandboxStatusResponseDataSchema, SnapshotBuildFinalizeRequestSchema, SnapshotBuildInitRequestSchema, SnapshotCreateOptionsSchema, SnapshotListResponseSchema, SnapshotTagUpdateRequestSchema, } from "./types.js";
8
+ const service = {
9
+ name: 'Sandboxes',
10
+ slug: 'sandboxes',
11
+ description: 'Create and manage isolated execution environments with full lifecycle, file system, snapshot, and checkpoint support',
12
+ hasPublicEndpoints: true,
13
+ endpoints: [
14
+ // ── Sandbox Management ────────────────────────────────────────────
15
+ {
16
+ id: 'create-sandbox',
17
+ title: 'Create Sandbox',
18
+ sectionTitle: 'Sandbox Management',
19
+ method: 'POST',
20
+ path: '/sandbox',
21
+ description: 'Create a new sandbox execution environment.',
22
+ pathParams: [],
23
+ queryParams: [
24
+ { name: 'orgId', type: 'string', description: 'Organization ID', required: false },
25
+ ],
26
+ requestBody: {
27
+ description: 'Sandbox creation payload.',
28
+ fields: { schema: SandboxCreateRequestSchema },
29
+ },
30
+ responseDescription: 'Returns the sandbox ID, status, and optional stream URLs for stdout/stderr.',
31
+ responseFields: { schema: SandboxCreateDataSchema },
32
+ statuses: [
33
+ { code: 201, description: 'Sandbox created' },
34
+ { code: 401, description: 'Unauthorized — invalid or missing API key' },
35
+ ],
36
+ examplePath: '/sandbox',
37
+ exampleBody: {
38
+ name: 'dev-sandbox',
39
+ runtime: 'node-20',
40
+ resources: { memory: 512 },
41
+ env: { NODE_ENV: 'development' },
42
+ },
43
+ },
44
+ {
45
+ id: 'list-sandboxes',
46
+ title: 'List Sandboxes',
47
+ sectionTitle: 'Sandbox Management',
48
+ method: 'GET',
49
+ path: '/sandbox',
50
+ description: 'List sandboxes with optional filtering and pagination.',
51
+ pathParams: [],
52
+ queryParams: [
53
+ { name: 'orgId', type: 'string', description: 'Organization ID', required: false },
54
+ { name: 'name', type: 'string', description: 'Filter by name', required: false },
55
+ { name: 'mode', type: 'string', description: 'Filter by mode', required: false },
56
+ {
57
+ name: 'projectId',
58
+ type: 'string',
59
+ description: 'Filter by project',
60
+ required: false,
61
+ },
62
+ { name: 'status', type: 'string', description: 'Filter by status', required: false },
63
+ {
64
+ name: 'live',
65
+ type: 'boolean',
66
+ description: 'Only running sandboxes',
67
+ required: false,
68
+ },
69
+ {
70
+ name: 'limit',
71
+ type: 'number',
72
+ description: 'Maximum results to return',
73
+ required: false,
74
+ },
75
+ { name: 'offset', type: 'number', description: 'Pagination offset', required: false },
76
+ { name: 'sort', type: 'string', description: 'Field to sort by', required: false },
77
+ { name: 'direction', type: 'string', description: 'Sort direction', required: false },
78
+ {
79
+ name: 'deletedOnly',
80
+ type: 'boolean',
81
+ description: 'Only deleted sandboxes',
82
+ required: false,
83
+ },
84
+ ],
85
+ requestBody: null,
86
+ responseDescription: 'Returns paginated list of sandboxes.',
87
+ responseFields: { schema: ListSandboxesResponseSchema },
88
+ statuses: [
89
+ { code: 200, description: 'Sandboxes returned' },
90
+ { code: 401, description: 'Unauthorized — invalid or missing API key' },
91
+ ],
92
+ examplePath: '/sandbox',
93
+ },
94
+ {
95
+ id: 'get-sandbox',
96
+ title: 'Get Sandbox',
97
+ sectionTitle: 'Sandbox Management',
98
+ method: 'GET',
99
+ path: '/sandbox/{sandboxId}',
100
+ description: 'Retrieve a specific sandbox by ID.',
101
+ pathParams: [
102
+ { name: 'sandboxId', type: 'string', description: 'Sandbox ID', required: true },
103
+ ],
104
+ queryParams: [
105
+ { name: 'orgId', type: 'string', description: 'Organization ID', required: false },
106
+ {
107
+ name: 'includeDeleted',
108
+ type: 'boolean',
109
+ description: 'Include deleted sandboxes',
110
+ required: false,
111
+ },
112
+ ],
113
+ requestBody: null,
114
+ responseDescription: 'Returns full sandbox details including resources, runtime, network, timeout, and usage metrics.',
115
+ statuses: [
116
+ { code: 200, description: 'Sandbox returned' },
117
+ { code: 401, description: 'Unauthorized — invalid or missing API key' },
118
+ { code: 404, description: 'Sandbox not found' },
119
+ ],
120
+ examplePath: '/sandbox/sbx_abc123',
121
+ },
122
+ {
123
+ id: 'destroy-sandbox',
124
+ title: 'Destroy Sandbox',
125
+ sectionTitle: 'Sandbox Management',
126
+ method: 'DELETE',
127
+ path: '/sandbox/{sandboxId}',
128
+ description: 'Destroy a sandbox and release all resources.',
129
+ pathParams: [
130
+ { name: 'sandboxId', type: 'string', description: 'Sandbox ID', required: true },
131
+ ],
132
+ queryParams: [
133
+ { name: 'orgId', type: 'string', description: 'Organization ID', required: false },
134
+ ],
135
+ requestBody: null,
136
+ responseDescription: 'Destroys the sandbox and releases all resources.',
137
+ statuses: [
138
+ { code: 200, description: 'Sandbox destroyed' },
139
+ { code: 401, description: 'Unauthorized — invalid or missing API key' },
140
+ { code: 404, description: 'Sandbox not found' },
141
+ ],
142
+ examplePath: '/sandbox/sbx_abc123',
143
+ },
144
+ {
145
+ id: 'get-sandbox-status',
146
+ title: 'Get Sandbox Status',
147
+ sectionTitle: 'Sandbox Management',
148
+ method: 'GET',
149
+ path: '/sandbox/status/{sandboxId}',
150
+ description: 'Lightweight status check backed by Redis (~1ms). Optimized for polling.',
151
+ pathParams: [
152
+ { name: 'sandboxId', type: 'string', description: 'Sandbox ID', required: true },
153
+ ],
154
+ queryParams: [
155
+ { name: 'orgId', type: 'string', description: 'Organization ID', required: false },
156
+ ],
157
+ requestBody: null,
158
+ responseDescription: 'Returns the sandbox status.',
159
+ responseFields: { schema: SandboxStatusResponseDataSchema, stripRequired: true },
160
+ statuses: [
161
+ { code: 200, description: 'Status returned' },
162
+ { code: 401, description: 'Unauthorized — invalid or missing API key' },
163
+ { code: 404, description: 'Sandbox not found' },
164
+ ],
165
+ examplePath: '/sandbox/status/sbx_abc123',
166
+ },
167
+ {
168
+ id: 'pause-sandbox',
169
+ title: 'Pause Sandbox',
170
+ sectionTitle: 'Sandbox Management',
171
+ method: 'POST',
172
+ path: '/sandbox/{sandboxId}/pause',
173
+ description: 'Pause a running sandbox and create a checkpoint.',
174
+ pathParams: [
175
+ { name: 'sandboxId', type: 'string', description: 'Sandbox ID', required: true },
176
+ ],
177
+ queryParams: [
178
+ { name: 'orgId', type: 'string', description: 'Organization ID', required: false },
179
+ ],
180
+ requestBody: null,
181
+ responseDescription: 'Pauses the sandbox and creates a checkpoint.',
182
+ statuses: [
183
+ { code: 200, description: 'Sandbox paused' },
184
+ { code: 401, description: 'Unauthorized — invalid or missing API key' },
185
+ { code: 404, description: 'Sandbox not found' },
186
+ ],
187
+ examplePath: '/sandbox/sbx_abc123/pause',
188
+ },
189
+ {
190
+ id: 'resume-sandbox',
191
+ title: 'Resume Sandbox',
192
+ sectionTitle: 'Sandbox Management',
193
+ method: 'POST',
194
+ path: '/sandbox/{sandboxId}/resume',
195
+ description: 'Resume a paused sandbox from its checkpoint.',
196
+ pathParams: [
197
+ { name: 'sandboxId', type: 'string', description: 'Sandbox ID', required: true },
198
+ ],
199
+ queryParams: [
200
+ { name: 'orgId', type: 'string', description: 'Organization ID', required: false },
201
+ ],
202
+ requestBody: null,
203
+ responseDescription: 'Resumes a paused sandbox from its checkpoint.',
204
+ statuses: [
205
+ { code: 200, description: 'Sandbox resumed' },
206
+ { code: 401, description: 'Unauthorized — invalid or missing API key' },
207
+ { code: 404, description: 'Sandbox not found' },
208
+ ],
209
+ examplePath: '/sandbox/sbx_abc123/resume',
210
+ },
211
+ {
212
+ id: 'update-sandbox-env',
213
+ title: 'Update Environment',
214
+ sectionTitle: 'Sandbox Management',
215
+ method: 'PATCH',
216
+ path: '/sandbox/env/{sandboxId}',
217
+ description: 'Update environment variables for a sandbox. Set a value to null to delete a variable.',
218
+ pathParams: [
219
+ { name: 'sandboxId', type: 'string', description: 'Sandbox ID', required: true },
220
+ ],
221
+ queryParams: [
222
+ { name: 'orgId', type: 'string', description: 'Organization ID', required: false },
223
+ ],
224
+ requestBody: {
225
+ description: 'Environment variable updates.',
226
+ fields: { schema: SandboxEnvUpdateRequestSchema },
227
+ },
228
+ responseDescription: 'Returns the current environment after update.',
229
+ responseFields: { schema: SandboxEnvUpdateResponseSchema, stripRequired: true },
230
+ statuses: [
231
+ { code: 200, description: 'Environment updated' },
232
+ { code: 401, description: 'Unauthorized — invalid or missing API key' },
233
+ { code: 404, description: 'Sandbox not found' },
234
+ ],
235
+ examplePath: '/sandbox/env/sbx_abc123',
236
+ exampleBody: { env: { NODE_ENV: 'production', OLD_VAR: null } },
237
+ },
238
+ // ── Execution ─────────────────────────────────────────────────────
239
+ {
240
+ id: 'execute-command',
241
+ title: 'Execute Command',
242
+ sectionTitle: 'Execution',
243
+ method: 'POST',
244
+ path: '/sandbox/{sandboxId}/execute',
245
+ description: 'Execute a command in a sandbox.',
246
+ pathParams: [
247
+ { name: 'sandboxId', type: 'string', description: 'Sandbox ID', required: true },
248
+ ],
249
+ queryParams: [
250
+ { name: 'orgId', type: 'string', description: 'Organization ID', required: false },
251
+ ],
252
+ requestBody: {
253
+ description: 'Command execution payload.',
254
+ fields: { schema: ExecuteRequestSchema },
255
+ },
256
+ responseDescription: 'Returns execution ID and stream URLs. Returns 409 if sandbox is busy.',
257
+ responseFields: { schema: ExecuteDataSchema },
258
+ statuses: [
259
+ { code: 200, description: 'Command executed' },
260
+ { code: 401, description: 'Unauthorized — invalid or missing API key' },
261
+ { code: 404, description: 'Sandbox not found' },
262
+ { code: 409, description: 'Conflict — sandbox is busy with another execution' },
263
+ ],
264
+ examplePath: '/sandbox/sbx_abc123/execute',
265
+ exampleBody: { command: ['node', '-e', "console.log('hello')"] },
266
+ },
267
+ {
268
+ id: 'get-execution',
269
+ title: 'Get Execution',
270
+ sectionTitle: 'Execution',
271
+ method: 'GET',
272
+ path: '/sandbox/execution/{executionId}',
273
+ description: 'Retrieve execution details. Use the `wait` parameter for long-polling.',
274
+ pathParams: [
275
+ { name: 'executionId', type: 'string', description: 'Execution ID', required: true },
276
+ ],
277
+ queryParams: [
278
+ { name: 'orgId', type: 'string', description: 'Organization ID', required: false },
279
+ {
280
+ name: 'wait',
281
+ type: 'string',
282
+ description: "Long-poll duration (e.g., '60s', '5m'). Server holds connection until execution completes or timeout.",
283
+ required: false,
284
+ },
285
+ ],
286
+ requestBody: null,
287
+ responseDescription: 'Returns execution details. Use the `wait` parameter for long-polling.',
288
+ statuses: [
289
+ { code: 200, description: 'Execution returned' },
290
+ { code: 401, description: 'Unauthorized — invalid or missing API key' },
291
+ { code: 404, description: 'Execution not found' },
292
+ ],
293
+ examplePath: '/sandbox/execution/exec_abc123',
294
+ },
295
+ {
296
+ id: 'list-executions',
297
+ title: 'List Executions',
298
+ sectionTitle: 'Execution',
299
+ method: 'GET',
300
+ path: '/sandbox/sandboxes/{sandboxId}/executions',
301
+ description: 'List executions for a specific sandbox.',
302
+ pathParams: [
303
+ { name: 'sandboxId', type: 'string', description: 'Sandbox ID', required: true },
304
+ ],
305
+ queryParams: [
306
+ { name: 'orgId', type: 'string', description: 'Organization ID', required: false },
307
+ {
308
+ name: 'limit',
309
+ type: 'number',
310
+ description: 'Maximum results to return',
311
+ required: false,
312
+ },
313
+ ],
314
+ requestBody: null,
315
+ responseDescription: 'Returns list of executions for the sandbox.',
316
+ statuses: [
317
+ { code: 200, description: 'Executions returned' },
318
+ { code: 401, description: 'Unauthorized — invalid or missing API key' },
319
+ { code: 404, description: 'Sandbox not found' },
320
+ ],
321
+ examplePath: '/sandbox/sandboxes/sbx_abc123/executions',
322
+ },
323
+ // ── File System ───────────────────────────────────────────────────
324
+ {
325
+ id: 'write-files',
326
+ title: 'Write Files',
327
+ sectionTitle: 'File System',
328
+ method: 'POST',
329
+ path: '/fs/{sandboxId}',
330
+ description: 'Write one or more files to the sandbox filesystem.',
331
+ pathParams: [
332
+ { name: 'sandboxId', type: 'string', description: 'Sandbox ID', required: true },
333
+ ],
334
+ queryParams: [
335
+ { name: 'orgId', type: 'string', description: 'Organization ID', required: false },
336
+ ],
337
+ requestBody: {
338
+ description: 'Files to write.',
339
+ fields: { schema: WriteFilesRequestSchema },
340
+ },
341
+ responseDescription: 'Returns the number of files written.',
342
+ responseFields: { schema: WriteFilesDataSchema },
343
+ statuses: [
344
+ { code: 200, description: 'Files written' },
345
+ { code: 401, description: 'Unauthorized — invalid or missing API key' },
346
+ { code: 404, description: 'Sandbox not found' },
347
+ ],
348
+ examplePath: '/fs/sbx_abc123',
349
+ exampleBody: {
350
+ files: [{ path: '/app/index.js', content: 'Y29uc29sZS5sb2coJ2hlbGxvJyk=' }],
351
+ },
352
+ },
353
+ {
354
+ id: 'read-file',
355
+ title: 'Read File',
356
+ sectionTitle: 'File System',
357
+ method: 'GET',
358
+ path: '/fs/{sandboxId}',
359
+ description: 'Read a file from the sandbox filesystem.',
360
+ pathParams: [
361
+ { name: 'sandboxId', type: 'string', description: 'Sandbox ID', required: true },
362
+ ],
363
+ queryParams: [
364
+ { name: 'path', type: 'string', description: 'File path to read', required: true },
365
+ { name: 'orgId', type: 'string', description: 'Organization ID', required: false },
366
+ ],
367
+ requestBody: null,
368
+ responseDescription: 'Returns the raw file contents as a stream.',
369
+ statuses: [
370
+ { code: 200, description: 'File contents returned' },
371
+ { code: 401, description: 'Unauthorized — invalid or missing API key' },
372
+ { code: 404, description: 'Sandbox or file not found' },
373
+ ],
374
+ examplePath: '/fs/sbx_abc123?path=/home/user/file.txt',
375
+ },
376
+ {
377
+ id: 'create-directory',
378
+ title: 'Create Directory',
379
+ sectionTitle: 'File System',
380
+ method: 'POST',
381
+ path: '/fs/mkdir/{sandboxId}',
382
+ description: 'Create a directory in the sandbox filesystem.',
383
+ pathParams: [
384
+ { name: 'sandboxId', type: 'string', description: 'Sandbox ID', required: true },
385
+ ],
386
+ queryParams: [
387
+ { name: 'orgId', type: 'string', description: 'Organization ID', required: false },
388
+ ],
389
+ requestBody: {
390
+ description: 'Directory creation payload.',
391
+ fields: { schema: MkDirRequestSchema },
392
+ },
393
+ responseDescription: 'Directory created successfully.',
394
+ statuses: [
395
+ { code: 200, description: 'Directory created' },
396
+ { code: 401, description: 'Unauthorized — invalid or missing API key' },
397
+ { code: 404, description: 'Sandbox not found' },
398
+ ],
399
+ examplePath: '/fs/mkdir/sbx_abc123',
400
+ exampleBody: { path: '/app/src', recursive: true },
401
+ },
402
+ {
403
+ id: 'remove-directory',
404
+ title: 'Remove Directory',
405
+ sectionTitle: 'File System',
406
+ method: 'POST',
407
+ path: '/fs/rmdir/{sandboxId}',
408
+ description: 'Remove a directory from the sandbox filesystem.',
409
+ pathParams: [
410
+ { name: 'sandboxId', type: 'string', description: 'Sandbox ID', required: true },
411
+ ],
412
+ queryParams: [
413
+ { name: 'orgId', type: 'string', description: 'Organization ID', required: false },
414
+ ],
415
+ requestBody: {
416
+ description: 'Directory removal payload.',
417
+ fields: { schema: RmDirRequestSchema },
418
+ },
419
+ responseDescription: 'Directory removed successfully.',
420
+ statuses: [
421
+ { code: 200, description: 'Directory removed' },
422
+ { code: 401, description: 'Unauthorized — invalid or missing API key' },
423
+ { code: 404, description: 'Sandbox not found' },
424
+ ],
425
+ examplePath: '/fs/rmdir/sbx_abc123',
426
+ exampleBody: { path: '/app/tmp', recursive: true },
427
+ },
428
+ {
429
+ id: 'remove-file',
430
+ title: 'Remove File',
431
+ sectionTitle: 'File System',
432
+ method: 'POST',
433
+ path: '/fs/rm/{sandboxId}',
434
+ description: 'Remove a file from the sandbox filesystem.',
435
+ pathParams: [
436
+ { name: 'sandboxId', type: 'string', description: 'Sandbox ID', required: true },
437
+ ],
438
+ queryParams: [
439
+ { name: 'orgId', type: 'string', description: 'Organization ID', required: false },
440
+ ],
441
+ requestBody: {
442
+ description: 'File removal payload.',
443
+ fields: { schema: RmFileRequestSchema },
444
+ },
445
+ responseDescription: 'File removed successfully.',
446
+ statuses: [
447
+ { code: 200, description: 'File removed' },
448
+ { code: 401, description: 'Unauthorized — invalid or missing API key' },
449
+ { code: 404, description: 'Sandbox not found' },
450
+ ],
451
+ examplePath: '/fs/rm/sbx_abc123',
452
+ exampleBody: { path: '/app/old-file.js' },
453
+ },
454
+ {
455
+ id: 'list-files',
456
+ title: 'List Files',
457
+ sectionTitle: 'File System',
458
+ method: 'GET',
459
+ path: '/fs/list/{sandboxId}',
460
+ description: 'List files in a sandbox directory.',
461
+ pathParams: [
462
+ { name: 'sandboxId', type: 'string', description: 'Sandbox ID', required: true },
463
+ ],
464
+ queryParams: [
465
+ { name: 'path', type: 'string', description: 'Directory to list', required: false },
466
+ { name: 'orgId', type: 'string', description: 'Organization ID', required: false },
467
+ ],
468
+ requestBody: null,
469
+ responseDescription: 'Returns list of files in the directory.',
470
+ responseFields: { schema: ListFilesDataSchema },
471
+ statuses: [
472
+ { code: 200, description: 'Files listed' },
473
+ { code: 401, description: 'Unauthorized — invalid or missing API key' },
474
+ { code: 404, description: 'Sandbox not found' },
475
+ ],
476
+ examplePath: '/fs/list/sbx_abc123',
477
+ },
478
+ {
479
+ id: 'download-archive',
480
+ title: 'Download Archive',
481
+ sectionTitle: 'File System',
482
+ method: 'GET',
483
+ path: '/fs/download/{sandboxId}',
484
+ description: 'Download a compressed archive of the sandbox filesystem.',
485
+ pathParams: [
486
+ { name: 'sandboxId', type: 'string', description: 'Sandbox ID', required: true },
487
+ ],
488
+ queryParams: [
489
+ { name: 'path', type: 'string', description: 'Directory to archive', required: false },
490
+ { name: 'format', type: 'string', description: "'zip' or 'tar.gz'", required: false },
491
+ { name: 'orgId', type: 'string', description: 'Organization ID', required: false },
492
+ ],
493
+ requestBody: null,
494
+ responseDescription: 'Returns a streaming archive of the sandbox filesystem.',
495
+ statuses: [
496
+ { code: 200, description: 'Archive returned' },
497
+ { code: 401, description: 'Unauthorized — invalid or missing API key' },
498
+ { code: 404, description: 'Sandbox not found' },
499
+ ],
500
+ examplePath: '/fs/download/sbx_abc123',
501
+ },
502
+ {
503
+ id: 'upload-archive',
504
+ title: 'Upload Archive',
505
+ sectionTitle: 'File System',
506
+ method: 'POST',
507
+ path: '/fs/upload/{sandboxId}',
508
+ description: 'Upload and extract a compressed archive to the sandbox. Send raw binary with Content-Type: application/octet-stream.',
509
+ pathParams: [
510
+ { name: 'sandboxId', type: 'string', description: 'Sandbox ID', required: true },
511
+ ],
512
+ queryParams: [
513
+ { name: 'path', type: 'string', description: 'Target directory', required: false },
514
+ { name: 'format', type: 'string', description: 'Archive format', required: false },
515
+ { name: 'orgId', type: 'string', description: 'Organization ID', required: false },
516
+ ],
517
+ requestBody: null,
518
+ responseDescription: 'Uploads and extracts a compressed archive to the sandbox. Send raw binary with Content-Type: application/octet-stream.',
519
+ statuses: [
520
+ { code: 200, description: 'Archive uploaded and extracted' },
521
+ { code: 401, description: 'Unauthorized — invalid or missing API key' },
522
+ { code: 404, description: 'Sandbox not found' },
523
+ ],
524
+ examplePath: '/fs/upload/sbx_abc123',
525
+ exampleHeaders: { 'Content-Type': 'application/octet-stream' },
526
+ exampleBody: '<binary archive data>',
527
+ },
528
+ // ── Snapshots ─────────────────────────────────────────────────────
529
+ {
530
+ id: 'create-snapshot',
531
+ title: 'Create Snapshot',
532
+ sectionTitle: 'Snapshots',
533
+ method: 'POST',
534
+ path: '/sandbox/{sandboxId}/snapshot',
535
+ description: 'Create a snapshot of the sandbox filesystem.',
536
+ pathParams: [
537
+ { name: 'sandboxId', type: 'string', description: 'Sandbox ID', required: true },
538
+ ],
539
+ queryParams: [
540
+ { name: 'orgId', type: 'string', description: 'Organization ID', required: false },
541
+ ],
542
+ requestBody: {
543
+ description: 'Snapshot creation payload.',
544
+ fields: { schema: SnapshotCreateOptionsSchema },
545
+ },
546
+ responseDescription: 'Returns the created snapshot.',
547
+ statuses: [
548
+ { code: 201, description: 'Snapshot created' },
549
+ { code: 401, description: 'Unauthorized — invalid or missing API key' },
550
+ { code: 404, description: 'Sandbox not found' },
551
+ ],
552
+ examplePath: '/sandbox/sbx_abc123/snapshot',
553
+ exampleBody: { name: 'baseline', tag: 'v1.0' },
554
+ },
555
+ {
556
+ id: 'get-snapshot',
557
+ title: 'Get Snapshot',
558
+ sectionTitle: 'Snapshots',
559
+ method: 'GET',
560
+ path: '/sandbox/snapshots/{snapshotId}',
561
+ description: 'Retrieve a specific snapshot by ID.',
562
+ pathParams: [
563
+ { name: 'snapshotId', type: 'string', description: 'Snapshot ID', required: true },
564
+ ],
565
+ queryParams: [
566
+ { name: 'orgId', type: 'string', description: 'Organization ID', required: false },
567
+ ],
568
+ requestBody: null,
569
+ responseDescription: 'Returns the snapshot object.',
570
+ statuses: [
571
+ { code: 200, description: 'Snapshot returned' },
572
+ { code: 401, description: 'Unauthorized — invalid or missing API key' },
573
+ { code: 404, description: 'Snapshot not found' },
574
+ ],
575
+ examplePath: '/sandbox/snapshots/snp_abc123',
576
+ },
577
+ {
578
+ id: 'list-snapshots',
579
+ title: 'List Snapshots',
580
+ sectionTitle: 'Snapshots',
581
+ method: 'GET',
582
+ path: '/sandbox/snapshots',
583
+ description: 'List snapshots with optional filtering and pagination.',
584
+ pathParams: [],
585
+ queryParams: [
586
+ {
587
+ name: 'sandboxId',
588
+ type: 'string',
589
+ description: 'Filter by sandbox',
590
+ required: false,
591
+ },
592
+ {
593
+ name: 'limit',
594
+ type: 'number',
595
+ description: 'Maximum results to return',
596
+ required: false,
597
+ },
598
+ { name: 'offset', type: 'number', description: 'Pagination offset', required: false },
599
+ { name: 'sort', type: 'string', description: 'Field to sort by', required: false },
600
+ { name: 'direction', type: 'string', description: 'Sort direction', required: false },
601
+ { name: 'orgId', type: 'string', description: 'Organization ID', required: false },
602
+ ],
603
+ requestBody: null,
604
+ responseDescription: 'Returns paginated list of snapshots.',
605
+ responseFields: { schema: SnapshotListResponseSchema },
606
+ statuses: [
607
+ { code: 200, description: 'Snapshots returned' },
608
+ { code: 401, description: 'Unauthorized — invalid or missing API key' },
609
+ ],
610
+ examplePath: '/sandbox/snapshots',
611
+ },
612
+ {
613
+ id: 'delete-snapshot',
614
+ title: 'Delete Snapshot',
615
+ sectionTitle: 'Snapshots',
616
+ method: 'DELETE',
617
+ path: '/sandbox/snapshots/{snapshotId}',
618
+ description: 'Delete a snapshot.',
619
+ pathParams: [
620
+ { name: 'snapshotId', type: 'string', description: 'Snapshot ID', required: true },
621
+ ],
622
+ queryParams: [
623
+ { name: 'orgId', type: 'string', description: 'Organization ID', required: false },
624
+ ],
625
+ requestBody: null,
626
+ responseDescription: 'Empty response on success.',
627
+ statuses: [
628
+ { code: 204, description: 'Snapshot deleted' },
629
+ { code: 401, description: 'Unauthorized — invalid or missing API key' },
630
+ { code: 404, description: 'Snapshot not found' },
631
+ ],
632
+ examplePath: '/sandbox/snapshots/snp_abc123',
633
+ },
634
+ {
635
+ id: 'update-snapshot-tag',
636
+ title: 'Update Snapshot Tag',
637
+ sectionTitle: 'Snapshots',
638
+ method: 'PATCH',
639
+ path: '/sandbox/snapshots/{snapshotId}',
640
+ description: 'Update the tag on a snapshot.',
641
+ pathParams: [
642
+ { name: 'snapshotId', type: 'string', description: 'Snapshot ID', required: true },
643
+ ],
644
+ queryParams: [
645
+ { name: 'orgId', type: 'string', description: 'Organization ID', required: false },
646
+ ],
647
+ requestBody: {
648
+ description: 'Tag update payload.',
649
+ fields: { schema: SnapshotTagUpdateRequestSchema },
650
+ },
651
+ responseDescription: 'Returns the updated snapshot.',
652
+ statuses: [
653
+ { code: 200, description: 'Snapshot tag updated' },
654
+ { code: 401, description: 'Unauthorized — invalid or missing API key' },
655
+ { code: 404, description: 'Snapshot not found' },
656
+ ],
657
+ examplePath: '/sandbox/snapshots/snp_abc123',
658
+ exampleBody: { tag: 'v2.0' },
659
+ },
660
+ {
661
+ id: 'get-snapshot-lineage',
662
+ title: 'Get Snapshot Lineage',
663
+ sectionTitle: 'Snapshots',
664
+ method: 'GET',
665
+ path: '/sandbox/snapshots/lineage',
666
+ description: 'Get the ordered ancestry chain from a specified snapshot to root.',
667
+ pathParams: [],
668
+ queryParams: [
669
+ {
670
+ name: 'snapshot',
671
+ type: 'string',
672
+ description: 'Snapshot ID or name:tag',
673
+ required: false,
674
+ },
675
+ { name: 'name', type: 'string', description: 'Snapshot name', required: false },
676
+ { name: 'tag', type: 'string', description: 'Snapshot tag', required: false },
677
+ {
678
+ name: 'limit',
679
+ type: 'number',
680
+ description: 'Maximum results to return',
681
+ required: false,
682
+ },
683
+ { name: 'orgId', type: 'string', description: 'Organization ID', required: false },
684
+ ],
685
+ requestBody: null,
686
+ responseDescription: 'Returns ordered ancestry chain from specified snapshot to root.',
687
+ statuses: [
688
+ { code: 200, description: 'Lineage returned' },
689
+ { code: 401, description: 'Unauthorized — invalid or missing API key' },
690
+ ],
691
+ examplePath: '/sandbox/snapshots/lineage',
692
+ },
693
+ {
694
+ id: 'get-public-snapshot',
695
+ title: 'Get Public Snapshot',
696
+ sectionTitle: 'Snapshots',
697
+ method: 'GET',
698
+ path: '/sandbox/snapshots/public/{snapshotRef}',
699
+ description: 'Retrieve a public snapshot by ID, full name (@slug/name:tag), or name:tag. No authentication required.',
700
+ pathParams: [
701
+ {
702
+ name: 'snapshotRef',
703
+ type: 'string',
704
+ description: 'Snapshot ID, full name (@slug/name:tag), or name:tag',
705
+ required: true,
706
+ },
707
+ ],
708
+ queryParams: [],
709
+ requestBody: null,
710
+ responseDescription: 'Returns public snapshot details. No authentication required.',
711
+ statuses: [
712
+ { code: 200, description: 'Public snapshot returned' },
713
+ { code: 404, description: 'Snapshot not found' },
714
+ ],
715
+ examplePath: '/sandbox/snapshots/public/snp_abc123',
716
+ },
717
+ {
718
+ id: 'list-public-snapshots',
719
+ title: 'List Public Snapshots',
720
+ sectionTitle: 'Snapshots',
721
+ method: 'GET',
722
+ path: '/sandbox/snapshots/public',
723
+ description: 'List publicly available snapshots.',
724
+ pathParams: [],
725
+ queryParams: [
726
+ { name: 'limit', type: 'number', description: 'Max 100', required: false },
727
+ { name: 'offset', type: 'number', description: 'Pagination offset', required: false },
728
+ ],
729
+ requestBody: null,
730
+ responseDescription: 'Returns paginated list of public snapshots.',
731
+ responseFields: { schema: SnapshotListResponseSchema, stripRequired: true },
732
+ statuses: [{ code: 200, description: 'Public snapshots returned' }],
733
+ examplePath: '/sandbox/snapshots/public',
734
+ },
735
+ {
736
+ id: 'initialize-snapshot-build',
737
+ title: 'Initialize Snapshot Build',
738
+ sectionTitle: 'Snapshots',
739
+ method: 'POST',
740
+ path: '/sandbox/snapshots/build',
741
+ description: 'Initialize a snapshot build. Returns a presigned upload URL for the snapshot archive.',
742
+ pathParams: [],
743
+ queryParams: [
744
+ { name: 'orgId', type: 'string', description: 'Organization ID', required: false },
745
+ ],
746
+ requestBody: {
747
+ description: 'Snapshot build initialization payload.',
748
+ fields: { schema: SnapshotBuildInitRequestSchema },
749
+ },
750
+ responseDescription: 'Returns snapshot ID and presigned upload URL. If unchanged is true, content matches existing snapshot.',
751
+ responseFields: { schema: SnapshotBuildInitResponseSchema, stripRequired: true },
752
+ statuses: [
753
+ { code: 200, description: 'Build initialized' },
754
+ { code: 401, description: 'Unauthorized — invalid or missing API key' },
755
+ ],
756
+ examplePath: '/sandbox/snapshots/build',
757
+ exampleBody: { runtime: 'node-20', name: 'my-app', tag: 'latest' },
758
+ },
759
+ {
760
+ id: 'finalize-snapshot-build',
761
+ title: 'Finalize Snapshot Build',
762
+ sectionTitle: 'Snapshots',
763
+ method: 'POST',
764
+ path: '/sandbox/snapshots/{snapshotId}/finalize',
765
+ description: 'Finalize a snapshot build after uploading the archive.',
766
+ pathParams: [
767
+ { name: 'snapshotId', type: 'string', description: 'Snapshot ID', required: true },
768
+ ],
769
+ queryParams: [
770
+ { name: 'orgId', type: 'string', description: 'Organization ID', required: false },
771
+ ],
772
+ requestBody: {
773
+ description: 'Snapshot finalization payload.',
774
+ fields: { schema: SnapshotBuildFinalizeRequestSchema },
775
+ },
776
+ responseDescription: 'Returns the finalized snapshot.',
777
+ statuses: [
778
+ { code: 200, description: 'Snapshot finalized' },
779
+ { code: 401, description: 'Unauthorized — invalid or missing API key' },
780
+ { code: 404, description: 'Snapshot not found' },
781
+ ],
782
+ examplePath: '/sandbox/snapshots/snp_abc123/finalize',
783
+ exampleBody: {
784
+ sizeBytes: 1048576,
785
+ fileCount: 42,
786
+ files: [{ path: '/app/index.js', size: 1024 }],
787
+ },
788
+ },
789
+ {
790
+ id: 'upload-public-snapshot',
791
+ title: 'Upload Public Snapshot',
792
+ sectionTitle: 'Snapshots',
793
+ method: 'PUT',
794
+ path: '/sandbox/snapshots/{snapshotId}/upload',
795
+ description: 'Upload a gzip archive for public snapshots. Content-Type must be application/gzip. Includes virus scanning.',
796
+ pathParams: [
797
+ { name: 'snapshotId', type: 'string', description: 'Snapshot ID', required: true },
798
+ ],
799
+ queryParams: [
800
+ { name: 'orgId', type: 'string', description: 'Organization ID', required: false },
801
+ ],
802
+ requestBody: null,
803
+ responseDescription: 'Uploads a gzip archive for public snapshots. Content-Type must be application/gzip. Includes virus scanning.',
804
+ statuses: [
805
+ { code: 200, description: 'Snapshot uploaded' },
806
+ { code: 401, description: 'Unauthorized — invalid or missing API key' },
807
+ { code: 404, description: 'Snapshot not found' },
808
+ ],
809
+ examplePath: '/sandbox/snapshots/snp_abc123/upload',
810
+ exampleHeaders: { 'Content-Type': 'application/gzip' },
811
+ exampleBody: '<binary gzip data>',
812
+ },
813
+ // ── Disk Checkpoints ──────────────────────────────────────────────
814
+ {
815
+ id: 'create-checkpoint',
816
+ title: 'Create Checkpoint',
817
+ sectionTitle: 'Disk Checkpoints',
818
+ method: 'POST',
819
+ path: '/sandbox/{sandboxId}/checkpoint',
820
+ description: 'Create a named checkpoint of the sandbox filesystem.',
821
+ pathParams: [
822
+ { name: 'sandboxId', type: 'string', description: 'Sandbox ID', required: true },
823
+ ],
824
+ queryParams: [
825
+ { name: 'orgId', type: 'string', description: 'Organization ID', required: false },
826
+ ],
827
+ requestBody: {
828
+ description: 'Checkpoint creation payload.',
829
+ fields: { schema: DiskCheckpointCreateParamsSchema, omit: ['sandboxId', 'orgId'] },
830
+ },
831
+ responseDescription: 'Returns the created checkpoint.',
832
+ responseFields: { schema: DiskCheckpointInfoSchema },
833
+ statuses: [
834
+ { code: 201, description: 'Checkpoint created' },
835
+ { code: 401, description: 'Unauthorized — invalid or missing API key' },
836
+ { code: 404, description: 'Sandbox not found' },
837
+ ],
838
+ examplePath: '/sandbox/sbx_abc123/checkpoint',
839
+ exampleBody: { name: 'before-migration' },
840
+ },
841
+ {
842
+ id: 'list-checkpoints',
843
+ title: 'List Checkpoints',
844
+ sectionTitle: 'Disk Checkpoints',
845
+ method: 'GET',
846
+ path: '/sandbox/checkpoints/{sandboxId}',
847
+ description: 'List checkpoints for a specific sandbox.',
848
+ pathParams: [
849
+ { name: 'sandboxId', type: 'string', description: 'Sandbox ID', required: true },
850
+ ],
851
+ queryParams: [
852
+ { name: 'orgId', type: 'string', description: 'Organization ID', required: false },
853
+ ],
854
+ requestBody: null,
855
+ responseDescription: 'Returns list of checkpoints for the sandbox.',
856
+ statuses: [
857
+ { code: 200, description: 'Checkpoints returned' },
858
+ { code: 401, description: 'Unauthorized — invalid or missing API key' },
859
+ { code: 404, description: 'Sandbox not found' },
860
+ ],
861
+ examplePath: '/sandbox/checkpoints/sbx_abc123',
862
+ },
863
+ {
864
+ id: 'restore-checkpoint',
865
+ title: 'Restore Checkpoint',
866
+ sectionTitle: 'Disk Checkpoints',
867
+ method: 'POST',
868
+ path: '/sandbox/{sandboxId}/checkpoint/{checkpointId}/restore',
869
+ description: 'Restore the sandbox filesystem to a checkpoint state.',
870
+ pathParams: [
871
+ { name: 'sandboxId', type: 'string', description: 'Sandbox ID', required: true },
872
+ { name: 'checkpointId', type: 'string', description: 'Checkpoint ID', required: true },
873
+ ],
874
+ queryParams: [
875
+ { name: 'orgId', type: 'string', description: 'Organization ID', required: false },
876
+ ],
877
+ requestBody: null,
878
+ responseDescription: 'Restores the sandbox filesystem to the checkpoint state.',
879
+ statuses: [
880
+ { code: 200, description: 'Checkpoint restored' },
881
+ { code: 401, description: 'Unauthorized — invalid or missing API key' },
882
+ { code: 404, description: 'Sandbox or checkpoint not found' },
883
+ ],
884
+ examplePath: '/sandbox/sbx_abc123/checkpoint/ckpt_def456/restore',
885
+ },
886
+ {
887
+ id: 'delete-checkpoint',
888
+ title: 'Delete Checkpoint',
889
+ sectionTitle: 'Disk Checkpoints',
890
+ method: 'DELETE',
891
+ path: '/sandbox/{sandboxId}/checkpoint/{checkpointId}',
892
+ description: 'Delete a checkpoint.',
893
+ pathParams: [
894
+ { name: 'sandboxId', type: 'string', description: 'Sandbox ID', required: true },
895
+ { name: 'checkpointId', type: 'string', description: 'Checkpoint ID', required: true },
896
+ ],
897
+ queryParams: [
898
+ { name: 'orgId', type: 'string', description: 'Organization ID', required: false },
899
+ ],
900
+ requestBody: null,
901
+ responseDescription: 'Empty response on success.',
902
+ statuses: [
903
+ { code: 204, description: 'Checkpoint deleted' },
904
+ { code: 401, description: 'Unauthorized — invalid or missing API key' },
905
+ { code: 404, description: 'Sandbox or checkpoint not found' },
906
+ ],
907
+ examplePath: '/sandbox/sbx_abc123/checkpoint/ckpt_def456',
908
+ },
909
+ // ── Runtimes ──────────────────────────────────────────────────────
910
+ {
911
+ id: 'list-runtimes',
912
+ title: 'List Runtimes',
913
+ sectionTitle: 'Runtimes',
914
+ method: 'GET',
915
+ path: '/sandbox/runtimes',
916
+ description: 'List available sandbox runtimes with their requirements.',
917
+ pathParams: [],
918
+ queryParams: [
919
+ { name: 'orgId', type: 'string', description: 'Organization ID', required: false },
920
+ {
921
+ name: 'limit',
922
+ type: 'number',
923
+ description: 'Maximum results to return',
924
+ required: false,
925
+ },
926
+ { name: 'offset', type: 'number', description: 'Pagination offset', required: false },
927
+ { name: 'sort', type: 'string', description: 'Field to sort by', required: false },
928
+ { name: 'direction', type: 'string', description: 'Sort direction', required: false },
929
+ ],
930
+ requestBody: null,
931
+ responseDescription: 'Returns available sandbox runtimes with their requirements.',
932
+ responseFields: { schema: ListRuntimesResponseSchema },
933
+ statuses: [
934
+ { code: 200, description: 'Runtimes returned' },
935
+ { code: 401, description: 'Unauthorized — invalid or missing API key' },
936
+ ],
937
+ examplePath: '/sandbox/runtimes',
938
+ },
939
+ // ── CLI Endpoints ─────────────────────────────────────────────────
940
+ {
941
+ id: 'cli-list-sandboxes',
942
+ title: 'List Sandboxes (Cross-Org)',
943
+ sectionTitle: 'CLI Endpoints',
944
+ method: 'GET',
945
+ path: '/cli/sandbox',
946
+ description: 'List sandboxes across all organizations the user belongs to.',
947
+ pathParams: [],
948
+ queryParams: [
949
+ { name: 'name', type: 'string', description: 'Filter by name', required: false },
950
+ {
951
+ name: 'mode',
952
+ type: 'string',
953
+ description: "'oneshot' or 'interactive'",
954
+ required: false,
955
+ },
956
+ {
957
+ name: 'projectId',
958
+ type: 'string',
959
+ description: 'Filter by project',
960
+ required: false,
961
+ },
962
+ {
963
+ name: 'orgId',
964
+ type: 'string',
965
+ description: 'Filter by organization',
966
+ required: false,
967
+ },
968
+ { name: 'status', type: 'string', description: 'Filter by status', required: false },
969
+ { name: 'limit', type: 'number', description: 'Max 100', required: false },
970
+ { name: 'offset', type: 'number', description: 'Pagination offset', required: false },
971
+ { name: 'sort', type: 'string', description: 'Field to sort by', required: false },
972
+ { name: 'direction', type: 'string', description: 'Sort direction', required: false },
973
+ ],
974
+ requestBody: null,
975
+ responseDescription: 'Lists sandboxes across all organizations the user belongs to.',
976
+ statuses: [
977
+ { code: 200, description: 'Sandboxes returned' },
978
+ { code: 401, description: 'Unauthorized — invalid or missing API key' },
979
+ ],
980
+ examplePath: '/cli/sandbox',
981
+ },
982
+ {
983
+ id: 'cli-resolve-sandbox',
984
+ title: 'Resolve Sandbox',
985
+ sectionTitle: 'CLI Endpoints',
986
+ method: 'GET',
987
+ path: '/cli/sandbox/{sandboxId}',
988
+ description: 'Resolve a sandbox ID to its org, region, and project. Used for cross-org sandbox lookup.',
989
+ pathParams: [
990
+ { name: 'sandboxId', type: 'string', description: 'Sandbox ID', required: true },
991
+ ],
992
+ queryParams: [],
993
+ requestBody: null,
994
+ responseDescription: 'Resolves a sandbox ID to its org, region, and project. Used for cross-org sandbox lookup.',
995
+ responseFields: { schema: SandboxResolveDataSchema },
996
+ statuses: [
997
+ { code: 200, description: 'Sandbox resolved' },
998
+ { code: 401, description: 'Unauthorized — invalid or missing API key' },
999
+ { code: 404, description: 'Sandbox not found' },
1000
+ ],
1001
+ examplePath: '/cli/sandbox/sbx_abc123',
1002
+ },
1003
+ ],
1004
+ };
1005
+ export default service;
1006
+ //# sourceMappingURL=api-reference.js.map