@unofficialbox/box-open-sdk 0.1.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 (384) hide show
  1. package/README.md +13 -0
  2. package/dist/cjs/auth.js +112 -0
  3. package/dist/cjs/buildinfo.js +10 -0
  4. package/dist/cjs/client.js +268 -0
  5. package/dist/cjs/errors.js +20 -0
  6. package/dist/cjs/index.js +43 -0
  7. package/dist/cjs/internal.js +37 -0
  8. package/dist/cjs/jwt.js +122 -0
  9. package/dist/cjs/managers/ai.js +106 -0
  10. package/dist/cjs/managers/ai_studio.js +131 -0
  11. package/dist/cjs/managers/app_item_associations.js +119 -0
  12. package/dist/cjs/managers/archives.js +110 -0
  13. package/dist/cjs/managers/authorization.js +149 -0
  14. package/dist/cjs/managers/automate_workflows.js +91 -0
  15. package/dist/cjs/managers/avatars.js +76 -0
  16. package/dist/cjs/managers/chunked_uploads.js +156 -0
  17. package/dist/cjs/managers/classifications.js +94 -0
  18. package/dist/cjs/managers/collaboration_allowlist_entries.js +104 -0
  19. package/dist/cjs/managers/collaboration_allowlist_exempt_targets.js +104 -0
  20. package/dist/cjs/managers/collections.js +124 -0
  21. package/dist/cjs/managers/comments.js +131 -0
  22. package/dist/cjs/managers/device_pinners.js +99 -0
  23. package/dist/cjs/managers/docgen.js +133 -0
  24. package/dist/cjs/managers/docgen_template.js +178 -0
  25. package/dist/cjs/managers/downloads.js +69 -0
  26. package/dist/cjs/managers/email_aliases.js +78 -0
  27. package/dist/cjs/managers/enterprise_configurations.js +58 -0
  28. package/dist/cjs/managers/events.js +82 -0
  29. package/dist/cjs/managers/external_users.js +58 -0
  30. package/dist/cjs/managers/file_classifications.js +97 -0
  31. package/dist/cjs/managers/file_metadata.js +115 -0
  32. package/dist/cjs/managers/file_requests.js +90 -0
  33. package/dist/cjs/managers/file_version_legal_holds.js +88 -0
  34. package/dist/cjs/managers/file_version_retentions.js +105 -0
  35. package/dist/cjs/managers/file_versions.js +140 -0
  36. package/dist/cjs/managers/file_watermarks.js +77 -0
  37. package/dist/cjs/managers/files.js +138 -0
  38. package/dist/cjs/managers/folder_classifications.js +97 -0
  39. package/dist/cjs/managers/folder_locks.js +73 -0
  40. package/dist/cjs/managers/folder_metadata.js +111 -0
  41. package/dist/cjs/managers/folder_watermarks.js +77 -0
  42. package/dist/cjs/managers/folders.js +191 -0
  43. package/dist/cjs/managers/groups.js +132 -0
  44. package/dist/cjs/managers/hub_collaborations.js +121 -0
  45. package/dist/cjs/managers/hub_document.js +113 -0
  46. package/dist/cjs/managers/hub_items.js +96 -0
  47. package/dist/cjs/managers/hubs.js +186 -0
  48. package/dist/cjs/managers/index.js +102 -0
  49. package/dist/cjs/managers/integration_mappings.js +178 -0
  50. package/dist/cjs/managers/invites.js +74 -0
  51. package/dist/cjs/managers/legal_hold_policies.js +121 -0
  52. package/dist/cjs/managers/legal_hold_policy_assignments.js +186 -0
  53. package/dist/cjs/managers/list_collaborations.js +185 -0
  54. package/dist/cjs/managers/memberships.js +160 -0
  55. package/dist/cjs/managers/metadata_cascade_policies.js +118 -0
  56. package/dist/cjs/managers/metadata_taxonomies.js +322 -0
  57. package/dist/cjs/managers/metadata_templates.js +196 -0
  58. package/dist/cjs/managers/notes.js +58 -0
  59. package/dist/cjs/managers/recent_items.js +80 -0
  60. package/dist/cjs/managers/retention_policies.js +131 -0
  61. package/dist/cjs/managers/retention_policy_assignments.js +182 -0
  62. package/dist/cjs/managers/search.js +130 -0
  63. package/dist/cjs/managers/session_termination.js +68 -0
  64. package/dist/cjs/managers/shared_links_app_items.js +55 -0
  65. package/dist/cjs/managers/shared_links_files.js +109 -0
  66. package/dist/cjs/managers/shared_links_folders.js +109 -0
  67. package/dist/cjs/managers/shared_links_web_links.js +109 -0
  68. package/dist/cjs/managers/shield_information_barrier_reports.js +98 -0
  69. package/dist/cjs/managers/shield_information_barrier_segment_members.js +105 -0
  70. package/dist/cjs/managers/shield_information_barrier_segment_restrictions.js +105 -0
  71. package/dist/cjs/managers/shield_information_barrier_segments.js +116 -0
  72. package/dist/cjs/managers/shield_information_barriers.js +108 -0
  73. package/dist/cjs/managers/shield_lists.js +97 -0
  74. package/dist/cjs/managers/sign_requests.js +123 -0
  75. package/dist/cjs/managers/sign_templates.js +87 -0
  76. package/dist/cjs/managers/skills.js +106 -0
  77. package/dist/cjs/managers/storage_policies.js +90 -0
  78. package/dist/cjs/managers/storage_policy_assignments.js +114 -0
  79. package/dist/cjs/managers/task_assignments.js +94 -0
  80. package/dist/cjs/managers/tasks.js +94 -0
  81. package/dist/cjs/managers/terms_of_service_user_statuses.js +81 -0
  82. package/dist/cjs/managers/terms_of_services.js +89 -0
  83. package/dist/cjs/managers/transfer.js +67 -0
  84. package/dist/cjs/managers/trashed_files.js +84 -0
  85. package/dist/cjs/managers/trashed_folders.js +84 -0
  86. package/dist/cjs/managers/trashed_items.js +94 -0
  87. package/dist/cjs/managers/trashed_web_links.js +84 -0
  88. package/dist/cjs/managers/uploads.js +98 -0
  89. package/dist/cjs/managers/user_collaborations.js +95 -0
  90. package/dist/cjs/managers/users.js +165 -0
  91. package/dist/cjs/managers/web_links.js +88 -0
  92. package/dist/cjs/managers/webhooks.js +115 -0
  93. package/dist/cjs/managers/workflows.js +92 -0
  94. package/dist/cjs/managers/zip_downloads.js +76 -0
  95. package/dist/cjs/models/index.js +38 -0
  96. package/dist/cjs/models/schemas.js +3 -0
  97. package/dist/cjs/package.json +3 -0
  98. package/dist/cjs/runtime.js +304 -0
  99. package/dist/cjs/tokens.js +121 -0
  100. package/dist/esm/auth.js +105 -0
  101. package/dist/esm/buildinfo.js +7 -0
  102. package/dist/esm/client.js +264 -0
  103. package/dist/esm/errors.js +16 -0
  104. package/dist/esm/index.js +6 -0
  105. package/dist/esm/internal.js +32 -0
  106. package/dist/esm/jwt.js +86 -0
  107. package/dist/esm/managers/ai.js +69 -0
  108. package/dist/esm/managers/ai_studio.js +94 -0
  109. package/dist/esm/managers/app_item_associations.js +82 -0
  110. package/dist/esm/managers/archives.js +73 -0
  111. package/dist/esm/managers/authorization.js +112 -0
  112. package/dist/esm/managers/automate_workflows.js +54 -0
  113. package/dist/esm/managers/avatars.js +39 -0
  114. package/dist/esm/managers/chunked_uploads.js +119 -0
  115. package/dist/esm/managers/classifications.js +57 -0
  116. package/dist/esm/managers/collaboration_allowlist_entries.js +67 -0
  117. package/dist/esm/managers/collaboration_allowlist_exempt_targets.js +67 -0
  118. package/dist/esm/managers/collections.js +87 -0
  119. package/dist/esm/managers/comments.js +94 -0
  120. package/dist/esm/managers/device_pinners.js +62 -0
  121. package/dist/esm/managers/docgen.js +96 -0
  122. package/dist/esm/managers/docgen_template.js +141 -0
  123. package/dist/esm/managers/downloads.js +32 -0
  124. package/dist/esm/managers/email_aliases.js +41 -0
  125. package/dist/esm/managers/enterprise_configurations.js +21 -0
  126. package/dist/esm/managers/events.js +45 -0
  127. package/dist/esm/managers/external_users.js +21 -0
  128. package/dist/esm/managers/file_classifications.js +60 -0
  129. package/dist/esm/managers/file_metadata.js +78 -0
  130. package/dist/esm/managers/file_requests.js +53 -0
  131. package/dist/esm/managers/file_version_legal_holds.js +51 -0
  132. package/dist/esm/managers/file_version_retentions.js +68 -0
  133. package/dist/esm/managers/file_versions.js +103 -0
  134. package/dist/esm/managers/file_watermarks.js +40 -0
  135. package/dist/esm/managers/files.js +101 -0
  136. package/dist/esm/managers/folder_classifications.js +60 -0
  137. package/dist/esm/managers/folder_locks.js +36 -0
  138. package/dist/esm/managers/folder_metadata.js +74 -0
  139. package/dist/esm/managers/folder_watermarks.js +40 -0
  140. package/dist/esm/managers/folders.js +154 -0
  141. package/dist/esm/managers/groups.js +95 -0
  142. package/dist/esm/managers/hub_collaborations.js +84 -0
  143. package/dist/esm/managers/hub_document.js +76 -0
  144. package/dist/esm/managers/hub_items.js +59 -0
  145. package/dist/esm/managers/hubs.js +149 -0
  146. package/dist/esm/managers/index.js +86 -0
  147. package/dist/esm/managers/integration_mappings.js +141 -0
  148. package/dist/esm/managers/invites.js +37 -0
  149. package/dist/esm/managers/legal_hold_policies.js +84 -0
  150. package/dist/esm/managers/legal_hold_policy_assignments.js +149 -0
  151. package/dist/esm/managers/list_collaborations.js +148 -0
  152. package/dist/esm/managers/memberships.js +123 -0
  153. package/dist/esm/managers/metadata_cascade_policies.js +81 -0
  154. package/dist/esm/managers/metadata_taxonomies.js +285 -0
  155. package/dist/esm/managers/metadata_templates.js +159 -0
  156. package/dist/esm/managers/notes.js +21 -0
  157. package/dist/esm/managers/recent_items.js +43 -0
  158. package/dist/esm/managers/retention_policies.js +94 -0
  159. package/dist/esm/managers/retention_policy_assignments.js +145 -0
  160. package/dist/esm/managers/search.js +93 -0
  161. package/dist/esm/managers/session_termination.js +31 -0
  162. package/dist/esm/managers/shared_links_app_items.js +18 -0
  163. package/dist/esm/managers/shared_links_files.js +72 -0
  164. package/dist/esm/managers/shared_links_folders.js +72 -0
  165. package/dist/esm/managers/shared_links_web_links.js +72 -0
  166. package/dist/esm/managers/shield_information_barrier_reports.js +61 -0
  167. package/dist/esm/managers/shield_information_barrier_segment_members.js +68 -0
  168. package/dist/esm/managers/shield_information_barrier_segment_restrictions.js +68 -0
  169. package/dist/esm/managers/shield_information_barrier_segments.js +79 -0
  170. package/dist/esm/managers/shield_information_barriers.js +71 -0
  171. package/dist/esm/managers/shield_lists.js +60 -0
  172. package/dist/esm/managers/sign_requests.js +86 -0
  173. package/dist/esm/managers/sign_templates.js +50 -0
  174. package/dist/esm/managers/skills.js +69 -0
  175. package/dist/esm/managers/storage_policies.js +53 -0
  176. package/dist/esm/managers/storage_policy_assignments.js +77 -0
  177. package/dist/esm/managers/task_assignments.js +57 -0
  178. package/dist/esm/managers/tasks.js +57 -0
  179. package/dist/esm/managers/terms_of_service_user_statuses.js +44 -0
  180. package/dist/esm/managers/terms_of_services.js +52 -0
  181. package/dist/esm/managers/transfer.js +30 -0
  182. package/dist/esm/managers/trashed_files.js +47 -0
  183. package/dist/esm/managers/trashed_folders.js +47 -0
  184. package/dist/esm/managers/trashed_items.js +57 -0
  185. package/dist/esm/managers/trashed_web_links.js +47 -0
  186. package/dist/esm/managers/uploads.js +61 -0
  187. package/dist/esm/managers/user_collaborations.js +58 -0
  188. package/dist/esm/managers/users.js +128 -0
  189. package/dist/esm/managers/web_links.js +51 -0
  190. package/dist/esm/managers/webhooks.js +78 -0
  191. package/dist/esm/managers/workflows.js +55 -0
  192. package/dist/esm/managers/zip_downloads.js +39 -0
  193. package/dist/esm/models/index.js +2 -0
  194. package/dist/esm/models/schemas.js +2 -0
  195. package/dist/esm/package.json +3 -0
  196. package/dist/esm/runtime.js +272 -0
  197. package/dist/esm/tokens.js +116 -0
  198. package/dist/types/auth.d.ts +56 -0
  199. package/dist/types/buildinfo.d.ts +6 -0
  200. package/dist/types/client.d.ts +176 -0
  201. package/dist/types/errors.d.ts +19 -0
  202. package/dist/types/index.d.ts +5 -0
  203. package/dist/types/internal.d.ts +9 -0
  204. package/dist/types/jwt.d.ts +23 -0
  205. package/dist/types/managers/ai.d.ts +17 -0
  206. package/dist/types/managers/ai_studio.d.ts +27 -0
  207. package/dist/types/managers/app_item_associations.d.ts +25 -0
  208. package/dist/types/managers/archives.d.ts +18 -0
  209. package/dist/types/managers/authorization.d.ts +17 -0
  210. package/dist/types/managers/automate_workflows.d.ts +16 -0
  211. package/dist/types/managers/avatars.d.ts +10 -0
  212. package/dist/types/managers/chunked_uploads.d.ts +26 -0
  213. package/dist/types/managers/classifications.d.ts +11 -0
  214. package/dist/types/managers/collaboration_allowlist_entries.d.ts +18 -0
  215. package/dist/types/managers/collaboration_allowlist_exempt_targets.d.ts +18 -0
  216. package/dist/types/managers/collections.d.ts +26 -0
  217. package/dist/types/managers/comments.d.ts +32 -0
  218. package/dist/types/managers/device_pinners.d.ts +18 -0
  219. package/dist/types/managers/docgen.d.ts +25 -0
  220. package/dist/types/managers/docgen_template.d.ts +35 -0
  221. package/dist/types/managers/downloads.d.ts +14 -0
  222. package/dist/types/managers/email_aliases.d.ts +10 -0
  223. package/dist/types/managers/enterprise_configurations.d.ts +8 -0
  224. package/dist/types/managers/events.d.ts +18 -0
  225. package/dist/types/managers/external_users.d.ts +8 -0
  226. package/dist/types/managers/file_classifications.d.ts +11 -0
  227. package/dist/types/managers/file_metadata.d.ts +20 -0
  228. package/dist/types/managers/file_requests.d.ts +15 -0
  229. package/dist/types/managers/file_version_legal_holds.d.ts +16 -0
  230. package/dist/types/managers/file_version_retentions.d.ts +22 -0
  231. package/dist/types/managers/file_versions.d.ts +32 -0
  232. package/dist/types/managers/file_watermarks.d.ts +10 -0
  233. package/dist/types/managers/files.d.ts +39 -0
  234. package/dist/types/managers/folder_classifications.d.ts +11 -0
  235. package/dist/types/managers/folder_locks.d.ts +10 -0
  236. package/dist/types/managers/folder_metadata.d.ts +16 -0
  237. package/dist/types/managers/folder_watermarks.d.ts +10 -0
  238. package/dist/types/managers/folders.d.ts +54 -0
  239. package/dist/types/managers/groups.d.ts +33 -0
  240. package/dist/types/managers/hub_collaborations.d.ts +19 -0
  241. package/dist/types/managers/hub_document.d.ts +23 -0
  242. package/dist/types/managers/hub_items.d.ts +17 -0
  243. package/dist/types/managers/hubs.d.ts +35 -0
  244. package/dist/types/managers/index.d.ts +85 -0
  245. package/dist/types/managers/integration_mappings.d.ts +34 -0
  246. package/dist/types/managers/invites.d.ts +17 -0
  247. package/dist/types/managers/legal_hold_policies.d.ts +21 -0
  248. package/dist/types/managers/legal_hold_policy_assignments.d.ts +39 -0
  249. package/dist/types/managers/list_collaborations.d.ts +42 -0
  250. package/dist/types/managers/memberships.d.ts +39 -0
  251. package/dist/types/managers/metadata_cascade_policies.d.ts +20 -0
  252. package/dist/types/managers/metadata_taxonomies.d.ts +54 -0
  253. package/dist/types/managers/metadata_templates.d.ts +36 -0
  254. package/dist/types/managers/notes.d.ts +8 -0
  255. package/dist/types/managers/recent_items.d.ts +16 -0
  256. package/dist/types/managers/retention_policies.d.ts +27 -0
  257. package/dist/types/managers/retention_policy_assignments.d.ts +40 -0
  258. package/dist/types/managers/search.d.ts +33 -0
  259. package/dist/types/managers/session_termination.d.ts +9 -0
  260. package/dist/types/managers/shared_links_app_items.d.ts +8 -0
  261. package/dist/types/managers/shared_links_files.d.ts +17 -0
  262. package/dist/types/managers/shared_links_folders.d.ts +17 -0
  263. package/dist/types/managers/shared_links_web_links.d.ts +17 -0
  264. package/dist/types/managers/shield_information_barrier_reports.d.ts +17 -0
  265. package/dist/types/managers/shield_information_barrier_segment_members.d.ts +18 -0
  266. package/dist/types/managers/shield_information_barrier_segment_restrictions.d.ts +18 -0
  267. package/dist/types/managers/shield_information_barrier_segments.d.ts +19 -0
  268. package/dist/types/managers/shield_information_barriers.d.ts +18 -0
  269. package/dist/types/managers/shield_lists.d.ts +12 -0
  270. package/dist/types/managers/sign_requests.d.ts +21 -0
  271. package/dist/types/managers/sign_templates.d.ts +16 -0
  272. package/dist/types/managers/skills.d.ts +12 -0
  273. package/dist/types/managers/storage_policies.d.ts +17 -0
  274. package/dist/types/managers/storage_policy_assignments.d.ts +18 -0
  275. package/dist/types/managers/task_assignments.d.ts +12 -0
  276. package/dist/types/managers/tasks.d.ts +12 -0
  277. package/dist/types/managers/terms_of_service_user_statuses.d.ts +14 -0
  278. package/dist/types/managers/terms_of_services.d.ts +15 -0
  279. package/dist/types/managers/transfer.d.ts +13 -0
  280. package/dist/types/managers/trashed_files.d.ts +18 -0
  281. package/dist/types/managers/trashed_folders.d.ts +18 -0
  282. package/dist/types/managers/trashed_items.d.ts +20 -0
  283. package/dist/types/managers/trashed_web_links.d.ts +18 -0
  284. package/dist/types/managers/uploads.d.ts +21 -0
  285. package/dist/types/managers/user_collaborations.d.ts +20 -0
  286. package/dist/types/managers/users.d.ts +47 -0
  287. package/dist/types/managers/web_links.d.ts +15 -0
  288. package/dist/types/managers/webhooks.d.ts +19 -0
  289. package/dist/types/managers/workflows.d.ts +17 -0
  290. package/dist/types/managers/zip_downloads.d.ts +10 -0
  291. package/dist/types/models/index.d.ts +1 -0
  292. package/dist/types/models/schemas.d.ts +4424 -0
  293. package/dist/types/runtime.d.ts +85 -0
  294. package/dist/types/tokens.d.ts +50 -0
  295. package/docs/README.md +101 -0
  296. package/docs/auth.md +60 -0
  297. package/docs/errors.md +20 -0
  298. package/docs/managers/ai.md +49 -0
  299. package/docs/managers/ai_studio.md +63 -0
  300. package/docs/managers/app_item_associations.md +35 -0
  301. package/docs/managers/archives.md +48 -0
  302. package/docs/managers/authorization.md +43 -0
  303. package/docs/managers/automate_workflows.md +31 -0
  304. package/docs/managers/avatars.md +37 -0
  305. package/docs/managers/chunked_uploads.md +88 -0
  306. package/docs/managers/classifications.md +35 -0
  307. package/docs/managers/collaboration_allowlist_entries.md +46 -0
  308. package/docs/managers/collaboration_allowlist_exempt_targets.md +46 -0
  309. package/docs/managers/collections.md +44 -0
  310. package/docs/managers/comments.md +66 -0
  311. package/docs/managers/device_pinners.md +40 -0
  312. package/docs/managers/docgen.md +50 -0
  313. package/docs/managers/docgen_template.md +75 -0
  314. package/docs/managers/downloads.md +19 -0
  315. package/docs/managers/email_aliases.md +38 -0
  316. package/docs/managers/enterprise_configurations.md +16 -0
  317. package/docs/managers/events.md +26 -0
  318. package/docs/managers/external_users.md +13 -0
  319. package/docs/managers/file_classifications.md +49 -0
  320. package/docs/managers/file_metadata.md +69 -0
  321. package/docs/managers/file_requests.md +50 -0
  322. package/docs/managers/file_version_legal_holds.md +29 -0
  323. package/docs/managers/file_version_retentions.md +34 -0
  324. package/docs/managers/file_versions.md +70 -0
  325. package/docs/managers/file_watermarks.md +37 -0
  326. package/docs/managers/files.md +72 -0
  327. package/docs/managers/folder_classifications.md +49 -0
  328. package/docs/managers/folder_locks.md +33 -0
  329. package/docs/managers/folder_metadata.md +68 -0
  330. package/docs/managers/folder_watermarks.md +37 -0
  331. package/docs/managers/folders.md +93 -0
  332. package/docs/managers/groups.md +66 -0
  333. package/docs/managers/hub_collaborations.md +59 -0
  334. package/docs/managers/hub_document.md +34 -0
  335. package/docs/managers/hub_items.md +32 -0
  336. package/docs/managers/hubs.md +90 -0
  337. package/docs/managers/integration_mappings.md +96 -0
  338. package/docs/managers/invites.md +28 -0
  339. package/docs/managers/legal_hold_policies.md +60 -0
  340. package/docs/managers/legal_hold_policy_assignments.md +80 -0
  341. package/docs/managers/list_collaborations.md +64 -0
  342. package/docs/managers/memberships.md +79 -0
  343. package/docs/managers/metadata_cascade_policies.md +60 -0
  344. package/docs/managers/metadata_taxonomies.md +206 -0
  345. package/docs/managers/metadata_templates.md +98 -0
  346. package/docs/managers/notes.md +13 -0
  347. package/docs/managers/recent_items.md +19 -0
  348. package/docs/managers/retention_policies.md +63 -0
  349. package/docs/managers/retention_policy_assignments.md +78 -0
  350. package/docs/managers/search.md +43 -0
  351. package/docs/managers/session_termination.md +21 -0
  352. package/docs/managers/shared_links_app_items.md +15 -0
  353. package/docs/managers/shared_links_files.md +67 -0
  354. package/docs/managers/shared_links_folders.md +67 -0
  355. package/docs/managers/shared_links_web_links.md +67 -0
  356. package/docs/managers/shield_information_barrier_reports.md +37 -0
  357. package/docs/managers/shield_information_barrier_segment_members.md +47 -0
  358. package/docs/managers/shield_information_barrier_segment_restrictions.md +47 -0
  359. package/docs/managers/shield_information_barrier_segments.md +59 -0
  360. package/docs/managers/shield_information_barriers.md +44 -0
  361. package/docs/managers/shield_lists.md +51 -0
  362. package/docs/managers/sign_requests.md +60 -0
  363. package/docs/managers/sign_templates.md +28 -0
  364. package/docs/managers/skills.md +61 -0
  365. package/docs/managers/storage_policies.md +29 -0
  366. package/docs/managers/storage_policy_assignments.md +59 -0
  367. package/docs/managers/task_assignments.md +55 -0
  368. package/docs/managers/tasks.md +55 -0
  369. package/docs/managers/terms_of_service_user_statuses.md +36 -0
  370. package/docs/managers/terms_of_services.md +45 -0
  371. package/docs/managers/transfer.md +19 -0
  372. package/docs/managers/trashed_files.md +39 -0
  373. package/docs/managers/trashed_folders.md +39 -0
  374. package/docs/managers/trashed_items.md +23 -0
  375. package/docs/managers/trashed_web_links.md +39 -0
  376. package/docs/managers/uploads.md +41 -0
  377. package/docs/managers/user_collaborations.md +51 -0
  378. package/docs/managers/users.md +82 -0
  379. package/docs/managers/web_links.md +46 -0
  380. package/docs/managers/webhooks.md +58 -0
  381. package/docs/managers/workflows.md +32 -0
  382. package/docs/managers/zip_downloads.md +33 -0
  383. package/docs/pagination.md +17 -0
  384. package/package.json +32 -0
@@ -0,0 +1,128 @@
1
+ // Code generated by box-gantry. DO NOT EDIT.
2
+ import * as runtime from '../runtime.js';
3
+ import { pathEscape } from '../internal.js';
4
+ /** Operations for the "users" API area. */
5
+ export class UsersManager {
6
+ session;
7
+ constructor(session) {
8
+ this.session = session;
9
+ }
10
+ /** Iterate every `models.schemas.UserFull` across pages, threading the marker cursor. */
11
+ async *list(opts) {
12
+ const options = { ...opts };
13
+ for (;;) {
14
+ const page = await this.listPage(options);
15
+ const items = page.entries ?? [];
16
+ for (const item of items) {
17
+ yield item;
18
+ }
19
+ const cursor = page.next_marker;
20
+ if (cursor === undefined || cursor === null || cursor === '') {
21
+ return;
22
+ }
23
+ options.marker = cursor;
24
+ }
25
+ }
26
+ async listPage(opts) {
27
+ let url = this.session.baseUrl("api");
28
+ url += "/users";
29
+ let req = this.session.newRequest("GET", url);
30
+ const options = opts ?? {};
31
+ if (options.filter_term !== undefined) {
32
+ req = runtime.withQuery(req, "filter_term", options.filter_term);
33
+ }
34
+ if (options.user_type !== undefined) {
35
+ req = runtime.withQuery(req, "user_type", options.user_type);
36
+ }
37
+ if (options.external_app_user_id !== undefined) {
38
+ req = runtime.withQuery(req, "external_app_user_id", options.external_app_user_id);
39
+ }
40
+ if (options.fields !== undefined) {
41
+ req = runtime.withQuery(req, "fields", options.fields.join(','));
42
+ }
43
+ if (options.offset !== undefined) {
44
+ req = runtime.withQuery(req, "offset", String(options.offset));
45
+ }
46
+ if (options.limit !== undefined) {
47
+ req = runtime.withQuery(req, "limit", String(options.limit));
48
+ }
49
+ if (options.usemarker !== undefined) {
50
+ req = runtime.withQuery(req, "usemarker", String(options.usemarker));
51
+ }
52
+ if (options.marker !== undefined) {
53
+ req = runtime.withQuery(req, "marker", options.marker);
54
+ }
55
+ const resp = await this.session.fetch(req);
56
+ const data = runtime.responseBytes(resp);
57
+ return JSON.parse(new TextDecoder().decode(data));
58
+ }
59
+ async create(body, opts) {
60
+ let url = this.session.baseUrl("api");
61
+ url += "/users";
62
+ let req = this.session.newRequest("POST", url);
63
+ const options = opts ?? {};
64
+ if (options.fields !== undefined) {
65
+ req = runtime.withQuery(req, "fields", options.fields.join(','));
66
+ }
67
+ const payload = new TextEncoder().encode(JSON.stringify(body));
68
+ req = runtime.withJsonBody(req, payload);
69
+ const resp = await this.session.fetch(req);
70
+ const data = runtime.responseBytes(resp);
71
+ return JSON.parse(new TextDecoder().decode(data));
72
+ }
73
+ async getMe(opts) {
74
+ let url = this.session.baseUrl("api");
75
+ url += "/users";
76
+ url += "/me";
77
+ let req = this.session.newRequest("GET", url);
78
+ const options = opts ?? {};
79
+ if (options.fields !== undefined) {
80
+ req = runtime.withQuery(req, "fields", options.fields.join(','));
81
+ }
82
+ const resp = await this.session.fetch(req);
83
+ const data = runtime.responseBytes(resp);
84
+ return JSON.parse(new TextDecoder().decode(data));
85
+ }
86
+ async get(userId, opts) {
87
+ let url = this.session.baseUrl("api");
88
+ url += "/users";
89
+ url += '/' + pathEscape(userId);
90
+ let req = this.session.newRequest("GET", url);
91
+ const options = opts ?? {};
92
+ if (options.fields !== undefined) {
93
+ req = runtime.withQuery(req, "fields", options.fields.join(','));
94
+ }
95
+ const resp = await this.session.fetch(req);
96
+ const data = runtime.responseBytes(resp);
97
+ return JSON.parse(new TextDecoder().decode(data));
98
+ }
99
+ async update(userId, body, opts) {
100
+ let url = this.session.baseUrl("api");
101
+ url += "/users";
102
+ url += '/' + pathEscape(userId);
103
+ let req = this.session.newRequest("PUT", url);
104
+ const options = opts ?? {};
105
+ if (options.fields !== undefined) {
106
+ req = runtime.withQuery(req, "fields", options.fields.join(','));
107
+ }
108
+ const payload = new TextEncoder().encode(JSON.stringify(body));
109
+ req = runtime.withJsonBody(req, payload);
110
+ const resp = await this.session.fetch(req);
111
+ const data = runtime.responseBytes(resp);
112
+ return JSON.parse(new TextDecoder().decode(data));
113
+ }
114
+ async delete_(userId, opts) {
115
+ let url = this.session.baseUrl("api");
116
+ url += "/users";
117
+ url += '/' + pathEscape(userId);
118
+ let req = this.session.newRequest("DELETE", url);
119
+ const options = opts ?? {};
120
+ if (options.notify !== undefined) {
121
+ req = runtime.withQuery(req, "notify", String(options.notify));
122
+ }
123
+ if (options.force !== undefined) {
124
+ req = runtime.withQuery(req, "force", String(options.force));
125
+ }
126
+ await this.session.fetch(req);
127
+ }
128
+ }
@@ -0,0 +1,51 @@
1
+ // Code generated by box-gantry. DO NOT EDIT.
2
+ import * as runtime from '../runtime.js';
3
+ import { pathEscape } from '../internal.js';
4
+ /** Operations for the "web_links" API area. */
5
+ export class WebLinksManager {
6
+ session;
7
+ constructor(session) {
8
+ this.session = session;
9
+ }
10
+ async create(body) {
11
+ let url = this.session.baseUrl("api");
12
+ url += "/web_links";
13
+ let req = this.session.newRequest("POST", url);
14
+ const payload = new TextEncoder().encode(JSON.stringify(body));
15
+ req = runtime.withJsonBody(req, payload);
16
+ const resp = await this.session.fetch(req);
17
+ const data = runtime.responseBytes(resp);
18
+ return JSON.parse(new TextDecoder().decode(data));
19
+ }
20
+ async get(webLinkId, opts) {
21
+ let url = this.session.baseUrl("api");
22
+ url += "/web_links";
23
+ url += '/' + pathEscape(webLinkId);
24
+ let req = this.session.newRequest("GET", url);
25
+ const options = opts ?? {};
26
+ if (options.boxapi !== undefined) {
27
+ req = runtime.withHeader(req, "boxapi", options.boxapi);
28
+ }
29
+ const resp = await this.session.fetch(req);
30
+ const data = runtime.responseBytes(resp);
31
+ return JSON.parse(new TextDecoder().decode(data));
32
+ }
33
+ async update(webLinkId, body) {
34
+ let url = this.session.baseUrl("api");
35
+ url += "/web_links";
36
+ url += '/' + pathEscape(webLinkId);
37
+ let req = this.session.newRequest("PUT", url);
38
+ const payload = new TextEncoder().encode(JSON.stringify(body));
39
+ req = runtime.withJsonBody(req, payload);
40
+ const resp = await this.session.fetch(req);
41
+ const data = runtime.responseBytes(resp);
42
+ return JSON.parse(new TextDecoder().decode(data));
43
+ }
44
+ async delete_(webLinkId) {
45
+ let url = this.session.baseUrl("api");
46
+ url += "/web_links";
47
+ url += '/' + pathEscape(webLinkId);
48
+ let req = this.session.newRequest("DELETE", url);
49
+ await this.session.fetch(req);
50
+ }
51
+ }
@@ -0,0 +1,78 @@
1
+ // Code generated by box-gantry. DO NOT EDIT.
2
+ import * as runtime from '../runtime.js';
3
+ import { pathEscape } from '../internal.js';
4
+ /** Operations for the "webhooks" API area. */
5
+ export class WebhooksManager {
6
+ session;
7
+ constructor(session) {
8
+ this.session = session;
9
+ }
10
+ /** Iterate every `models.schemas.WebhookMini` across pages, threading the marker cursor. */
11
+ async *list(opts) {
12
+ const options = { ...opts };
13
+ for (;;) {
14
+ const page = await this.listPage(options);
15
+ const items = page.entries ?? [];
16
+ for (const item of items) {
17
+ yield item;
18
+ }
19
+ const cursor = page.next_marker;
20
+ if (cursor === undefined || cursor === null || cursor === '') {
21
+ return;
22
+ }
23
+ options.marker = cursor;
24
+ }
25
+ }
26
+ async listPage(opts) {
27
+ let url = this.session.baseUrl("api");
28
+ url += "/webhooks";
29
+ let req = this.session.newRequest("GET", url);
30
+ const options = opts ?? {};
31
+ if (options.marker !== undefined) {
32
+ req = runtime.withQuery(req, "marker", options.marker);
33
+ }
34
+ if (options.limit !== undefined) {
35
+ req = runtime.withQuery(req, "limit", String(options.limit));
36
+ }
37
+ const resp = await this.session.fetch(req);
38
+ const data = runtime.responseBytes(resp);
39
+ return JSON.parse(new TextDecoder().decode(data));
40
+ }
41
+ async create(body) {
42
+ let url = this.session.baseUrl("api");
43
+ url += "/webhooks";
44
+ let req = this.session.newRequest("POST", url);
45
+ const payload = new TextEncoder().encode(JSON.stringify(body));
46
+ req = runtime.withJsonBody(req, payload);
47
+ const resp = await this.session.fetch(req);
48
+ const data = runtime.responseBytes(resp);
49
+ return JSON.parse(new TextDecoder().decode(data));
50
+ }
51
+ async get(webhookId) {
52
+ let url = this.session.baseUrl("api");
53
+ url += "/webhooks";
54
+ url += '/' + pathEscape(webhookId);
55
+ let req = this.session.newRequest("GET", url);
56
+ const resp = await this.session.fetch(req);
57
+ const data = runtime.responseBytes(resp);
58
+ return JSON.parse(new TextDecoder().decode(data));
59
+ }
60
+ async update(webhookId, body) {
61
+ let url = this.session.baseUrl("api");
62
+ url += "/webhooks";
63
+ url += '/' + pathEscape(webhookId);
64
+ let req = this.session.newRequest("PUT", url);
65
+ const payload = new TextEncoder().encode(JSON.stringify(body));
66
+ req = runtime.withJsonBody(req, payload);
67
+ const resp = await this.session.fetch(req);
68
+ const data = runtime.responseBytes(resp);
69
+ return JSON.parse(new TextDecoder().decode(data));
70
+ }
71
+ async delete_(webhookId) {
72
+ let url = this.session.baseUrl("api");
73
+ url += "/webhooks";
74
+ url += '/' + pathEscape(webhookId);
75
+ let req = this.session.newRequest("DELETE", url);
76
+ await this.session.fetch(req);
77
+ }
78
+ }
@@ -0,0 +1,55 @@
1
+ // Code generated by box-gantry. DO NOT EDIT.
2
+ import * as runtime from '../runtime.js';
3
+ import { pathEscape } from '../internal.js';
4
+ /** Operations for the "workflows" API area. */
5
+ export class WorkflowsManager {
6
+ session;
7
+ constructor(session) {
8
+ this.session = session;
9
+ }
10
+ /** Iterate every `models.schemas.Workflow` across pages, threading the marker cursor. */
11
+ async *list(folderId, opts) {
12
+ const options = { ...opts };
13
+ for (;;) {
14
+ const page = await this.listPage(folderId, options);
15
+ const items = page.entries ?? [];
16
+ for (const item of items) {
17
+ yield item;
18
+ }
19
+ const cursor = page.next_marker;
20
+ if (cursor === undefined || cursor === null || cursor === '') {
21
+ return;
22
+ }
23
+ options.marker = cursor;
24
+ }
25
+ }
26
+ async listPage(folderId, opts) {
27
+ let url = this.session.baseUrl("api");
28
+ url += "/workflows";
29
+ let req = this.session.newRequest("GET", url);
30
+ req = runtime.withQuery(req, "folder_id", folderId);
31
+ const options = opts ?? {};
32
+ if (options.trigger_type !== undefined) {
33
+ req = runtime.withQuery(req, "trigger_type", options.trigger_type);
34
+ }
35
+ if (options.limit !== undefined) {
36
+ req = runtime.withQuery(req, "limit", String(options.limit));
37
+ }
38
+ if (options.marker !== undefined) {
39
+ req = runtime.withQuery(req, "marker", options.marker);
40
+ }
41
+ const resp = await this.session.fetch(req);
42
+ const data = runtime.responseBytes(resp);
43
+ return JSON.parse(new TextDecoder().decode(data));
44
+ }
45
+ async start(workflowId, body) {
46
+ let url = this.session.baseUrl("api");
47
+ url += "/workflows";
48
+ url += '/' + pathEscape(workflowId);
49
+ url += "/start";
50
+ let req = this.session.newRequest("POST", url);
51
+ const payload = new TextEncoder().encode(JSON.stringify(body));
52
+ req = runtime.withJsonBody(req, payload);
53
+ await this.session.fetch(req);
54
+ }
55
+ }
@@ -0,0 +1,39 @@
1
+ // Code generated by box-gantry. DO NOT EDIT.
2
+ import * as runtime from '../runtime.js';
3
+ import { pathEscape } from '../internal.js';
4
+ /** Operations for the "zip_downloads" API area. */
5
+ export class ZipDownloadsManager {
6
+ session;
7
+ constructor(session) {
8
+ this.session = session;
9
+ }
10
+ async create(body) {
11
+ let url = this.session.baseUrl("api");
12
+ url += "/zip_downloads";
13
+ let req = this.session.newRequest("POST", url);
14
+ const payload = new TextEncoder().encode(JSON.stringify(body));
15
+ req = runtime.withJsonBody(req, payload);
16
+ const resp = await this.session.fetch(req);
17
+ const data = runtime.responseBytes(resp);
18
+ return JSON.parse(new TextDecoder().decode(data));
19
+ }
20
+ async getContent(zipDownloadId) {
21
+ let url = this.session.baseUrl("download");
22
+ url += "/zip_downloads";
23
+ url += '/' + pathEscape(zipDownloadId);
24
+ url += "/content";
25
+ let req = this.session.newRequest("GET", url);
26
+ const resp = await this.session.fetch(req);
27
+ return runtime.responseStream(resp);
28
+ }
29
+ async getStatus(zipDownloadId) {
30
+ let url = this.session.baseUrl("api");
31
+ url += "/zip_downloads";
32
+ url += '/' + pathEscape(zipDownloadId);
33
+ url += "/status";
34
+ let req = this.session.newRequest("GET", url);
35
+ const resp = await this.session.fetch(req);
36
+ const data = runtime.responseBytes(resp);
37
+ return JSON.parse(new TextDecoder().decode(data));
38
+ }
39
+ }
@@ -0,0 +1,2 @@
1
+ // Code generated by box-gantry. DO NOT EDIT.
2
+ export * as schemas from './schemas.js';
@@ -0,0 +1,2 @@
1
+ // Code generated by box-gantry 0.1.0 (spec ee7d55aedefe2fa0) for Box API 2024.0. DO NOT EDIT.
2
+ export {};
@@ -0,0 +1,3 @@
1
+ {
2
+ "type": "module"
3
+ }
@@ -0,0 +1,272 @@
1
+ // Code generated by box-gantry (vendored from runtimes/typescript/gantryruntime/src/runtime.ts). DO NOT EDIT.
2
+ import { BoxApiError } from './errors.js';
3
+ export { BoxApiError } from './errors.js';
4
+ export * from './auth.js';
5
+ /** The default base URLs for the D-106 URL classes. */
6
+ const DEFAULT_BASE_URLS = {
7
+ api: 'https://api.box.com/2.0',
8
+ api_root: 'https://api.box.com',
9
+ upload: 'https://upload.box.com/api/2.0',
10
+ upload_session: 'https://upload.box.com/api/2.0',
11
+ oauth_authorize: 'https://account.box.com/api/oauth2',
12
+ download: 'https://api.box.com/2.0',
13
+ };
14
+ /** The runtime-owned HTTP request envelope, assembled by the `with*` builders
15
+ * before `fetch` executes it. */
16
+ export class Request {
17
+ method;
18
+ url;
19
+ headers = new Headers();
20
+ query = new URLSearchParams();
21
+ /** The buffered request body, if any (buffered so retries can replay it). */
22
+ body;
23
+ constructor(method, url) {
24
+ this.method = method;
25
+ this.url = url;
26
+ }
27
+ }
28
+ /** The runtime-owned HTTP response envelope. The body is read fully so it can be
29
+ * replayed as bytes or a stream, and so retries stay safe. */
30
+ export class Response {
31
+ status;
32
+ headers;
33
+ bodyBytes;
34
+ constructor(status, headers, bodyBytes) {
35
+ this.status = status;
36
+ this.headers = headers;
37
+ this.bodyBytes = bodyBytes;
38
+ }
39
+ }
40
+ /** A response/request body as bytes. The platform buffers it (the manifest's
41
+ * `Streaming` axis allows buffering) so a retried request can replay it. */
42
+ export class Stream {
43
+ data;
44
+ constructor(data) {
45
+ this.data = data;
46
+ }
47
+ /** An empty stream (e.g. an absent multipart file part). */
48
+ static empty() {
49
+ return new Stream(new Uint8Array(0));
50
+ }
51
+ }
52
+ /** The runtime session: it holds the auth flow, base-URL configuration, and
53
+ * retry policy shared by every manager. */
54
+ export class Client {
55
+ auth;
56
+ baseUrls;
57
+ maxRetries;
58
+ constructor(auth, options = {}) {
59
+ this.auth = auth;
60
+ const maxRetries = options.maxRetries ?? 5;
61
+ if (!Number.isInteger(maxRetries) || maxRetries < 0) {
62
+ throw new RangeError('maxRetries must be a non-negative integer');
63
+ }
64
+ this.maxRetries = maxRetries;
65
+ this.baseUrls = { ...DEFAULT_BASE_URLS, ...(options.baseUrls ?? {}) };
66
+ }
67
+ /** The configured base URL for a D-106 class, without a trailing slash. */
68
+ baseUrl(name) {
69
+ return this.baseUrls[name] ?? '';
70
+ }
71
+ /** A valid access token for the configured auth flow. The `signal` is
72
+ * accepted for contract symmetry; token acquisition is a shared refresh not
73
+ * bound to a single request's cancellation (mirroring the Rust runtime). */
74
+ async accessToken(_signal) {
75
+ return this.auth.accessToken();
76
+ }
77
+ /** A request envelope for a method and fully built URL. */
78
+ newRequest(method, url) {
79
+ return new Request(method, url);
80
+ }
81
+ /** Execute the request with retries: exponential backoff + full jitter, a
82
+ * single force-refresh on 401, and Retry-After (as a floor) on 429/5xx.
83
+ *
84
+ * Retry policy follows idempotency: a 429 (rate-limited, never processed)
85
+ * retries for every method; a transport error or a 5xx may have already
86
+ * committed a write, so those retry only for idempotent methods
87
+ * (GET/HEAD/PUT/DELETE/…). The 401 refresh applies to every method. */
88
+ async fetch(request, signal) {
89
+ let token = await this.auth.accessToken();
90
+ const query = request.query.toString();
91
+ const url = query ? `${request.url}?${query}` : request.url;
92
+ const idempotent = isIdempotent(request.method);
93
+ let refreshed = false;
94
+ let lastError;
95
+ for (let attempt = 0; attempt <= this.maxRetries; attempt++) {
96
+ const headers = new Headers(request.headers);
97
+ headers.set('Authorization', `Bearer ${token}`);
98
+ // `httpResponse` is the platform `Response` (via inference — the name is
99
+ // shadowed by this module's `Response` class, so it is never annotated).
100
+ let httpResponse;
101
+ try {
102
+ httpResponse = await fetch(url, {
103
+ method: request.method,
104
+ headers,
105
+ // A `Uint8Array` is a valid `BodyInit` at runtime; the cast bridges
106
+ // the `Uint8Array<ArrayBufferLike>` vs `BufferSource` generic gap in
107
+ // the DOM lib without narrowing the contract's plain-`Uint8Array` body.
108
+ body: request.body,
109
+ signal,
110
+ });
111
+ }
112
+ catch (err) {
113
+ // A transport error gives no response, so a non-idempotent write may
114
+ // already have committed — only retry idempotent methods.
115
+ lastError = err;
116
+ if (attempt === this.maxRetries || !idempotent) {
117
+ break;
118
+ }
119
+ await sleep(backoff(attempt), signal);
120
+ continue;
121
+ }
122
+ const bodyBytes = new Uint8Array(await httpResponse.arrayBuffer());
123
+ const response = new Response(httpResponse.status, httpResponse.headers, bodyBytes);
124
+ // A single force-refresh on 401: re-acquire past the token cache so the
125
+ // retry doesn't just resend the same rejected token.
126
+ if (response.status === 401 && !refreshed) {
127
+ refreshed = true;
128
+ token = await this.auth.forceRefresh(token);
129
+ continue;
130
+ }
131
+ if (shouldRetry(response.status, idempotent) && attempt < this.maxRetries) {
132
+ await sleep(retryDelay(response, attempt), signal);
133
+ continue;
134
+ }
135
+ return response;
136
+ }
137
+ throw new BoxApiError(`request failed after ${this.maxRetries + 1} attempts`, {
138
+ cause: lastError,
139
+ });
140
+ }
141
+ }
142
+ /** The safety ceiling on any single retry sleep, so a hostile server-sent
143
+ * Retry-After can't stall the client indefinitely. */
144
+ const MAX_RETRY_DELAY_MS = 30_000;
145
+ /** HTTP's idempotent methods: safe to replay after a transport error or 5xx. */
146
+ const IDEMPOTENT_METHODS = new Set(['GET', 'HEAD', 'PUT', 'DELETE', 'OPTIONS', 'TRACE']);
147
+ function isIdempotent(method) {
148
+ return IDEMPOTENT_METHODS.has(method.toUpperCase());
149
+ }
150
+ /** Whether a response status warrants a retry for a request of this idempotency.
151
+ * A 429 (rate-limited, never processed) retries for any method; a 5xx may have
152
+ * committed a write, so it retries only for idempotent methods. */
153
+ function shouldRetry(status, idempotent) {
154
+ return status === 429 || (status >= 500 && idempotent);
155
+ }
156
+ /** Full-jitter exponential backoff, capped at the max retry delay. */
157
+ function backoff(attempt) {
158
+ const base = Math.min(2 ** attempt * 500, MAX_RETRY_DELAY_MS);
159
+ return Math.random() * base;
160
+ }
161
+ /** The delay before the next retry: exponential backoff, raised to a
162
+ * (delay-seconds) Retry-After as a floor when present, and clamped to
163
+ * `MAX_RETRY_DELAY_MS`. HTTP-date Retry-After values fall back to backoff (the
164
+ * same posture as the Rust runtime). */
165
+ function retryDelay(response, attempt) {
166
+ let delay = backoff(attempt);
167
+ const header = response.headers.get('Retry-After');
168
+ if (header && /^\d+$/.test(header.trim())) {
169
+ delay = Math.max(delay, Number(header.trim()) * 1000);
170
+ }
171
+ return Math.min(delay, MAX_RETRY_DELAY_MS);
172
+ }
173
+ /** Sleep for `ms`, rejecting promptly if the signal aborts. */
174
+ function sleep(ms, signal) {
175
+ return new Promise((resolve, reject) => {
176
+ if (signal?.aborted) {
177
+ reject(abortError(signal));
178
+ return;
179
+ }
180
+ const onAbort = () => {
181
+ clearTimeout(timer);
182
+ reject(abortError(signal));
183
+ };
184
+ const timer = setTimeout(() => {
185
+ signal?.removeEventListener('abort', onAbort);
186
+ resolve();
187
+ }, ms);
188
+ signal?.addEventListener('abort', onAbort, { once: true });
189
+ });
190
+ }
191
+ function abortError(signal) {
192
+ const reason = signal?.reason;
193
+ return reason instanceof Error
194
+ ? new BoxApiError(`request aborted: ${reason.message}`)
195
+ : new BoxApiError('request aborted');
196
+ }
197
+ /** Return the request with the header set. */
198
+ export function withHeader(request, name, value) {
199
+ request.headers.set(name, value);
200
+ return request;
201
+ }
202
+ /** Return the request with the query parameter appended, encoded. */
203
+ export function withQuery(request, name, value) {
204
+ request.query.append(name, value);
205
+ return request;
206
+ }
207
+ /** Return the request with the serialized JSON body and content type set. */
208
+ export function withJsonBody(request, body) {
209
+ request.headers.set('Content-Type', 'application/json');
210
+ request.body = body;
211
+ return request;
212
+ }
213
+ /** Return the request with an application/x-www-form-urlencoded body (the
214
+ * OAuth2 token endpoints). */
215
+ export function withFormBody(request, form) {
216
+ request.headers.set('Content-Type', 'application/x-www-form-urlencoded');
217
+ request.body = form;
218
+ return request;
219
+ }
220
+ /** Return the request with a streaming body (buffered, so retries can replay
221
+ * it — the manifest's `Streaming` axis permits buffering). */
222
+ export function withStreamBody(request, body, contentType) {
223
+ request.headers.set('Content-Type', contentType);
224
+ request.body = body.data;
225
+ return request;
226
+ }
227
+ /** Return the request with a Box-style multipart body: an `attributes` JSON
228
+ * part plus a file part (G-7). */
229
+ export function withMultipartBody(request, attributes, fileName, file) {
230
+ const boundary = `----gantryFormBoundary${Math.random().toString(36).slice(2)}`;
231
+ const encoder = new TextEncoder();
232
+ const escaped = fileName.replace(/["\r\n]/g, '_');
233
+ const parts = [
234
+ encoder.encode(`--${boundary}\r\nContent-Disposition: form-data; name="attributes"\r\n\r\n`),
235
+ attributes,
236
+ encoder.encode(`\r\n--${boundary}\r\nContent-Disposition: form-data; name="file"; filename="${escaped}"\r\n` +
237
+ 'Content-Type: application/octet-stream\r\n\r\n'),
238
+ file.data,
239
+ encoder.encode(`\r\n--${boundary}--\r\n`),
240
+ ];
241
+ request.headers.set('Content-Type', `multipart/form-data; boundary=${boundary}`);
242
+ request.body = concat(parts);
243
+ return request;
244
+ }
245
+ /** Concatenate byte chunks into one buffer. */
246
+ function concat(chunks) {
247
+ const total = chunks.reduce((sum, chunk) => sum + chunk.length, 0);
248
+ const out = new Uint8Array(total);
249
+ let offset = 0;
250
+ for (const chunk of chunks) {
251
+ out.set(chunk, offset);
252
+ offset += chunk.length;
253
+ }
254
+ return out;
255
+ }
256
+ /** Read the whole response body. */
257
+ export function responseBytes(response) {
258
+ return response.bodyBytes;
259
+ }
260
+ /** The response body as a stream, for binary downloads (FR-7.4). */
261
+ export function responseStream(response) {
262
+ return new Stream(response.bodyBytes);
263
+ }
264
+ /** A response header value, empty when absent (redirect Location, Retry-After
265
+ * surfacing). */
266
+ export function responseHeader(response, name) {
267
+ return response.headers.get(name) ?? '';
268
+ }
269
+ /** The response status code. */
270
+ export function statusCode(response) {
271
+ return response.status;
272
+ }