@unofficialbox/box-open-sdk 0.7.0 → 0.8.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 (182) hide show
  1. package/dist/cjs/buildinfo.js +2 -2
  2. package/dist/cjs/errors.js +7 -0
  3. package/dist/cjs/managers/events.js +27 -1
  4. package/dist/cjs/managers/web_links.js +26 -2
  5. package/dist/cjs/models/schemas/ai.js +1 -1
  6. package/dist/cjs/models/schemas/ai_studio.js +1 -1
  7. package/dist/cjs/models/schemas/app_item_associations.js +1 -1
  8. package/dist/cjs/models/schemas/archives.js +1 -1
  9. package/dist/cjs/models/schemas/authorization.js +1 -1
  10. package/dist/cjs/models/schemas/automate_workflows.js +1 -1
  11. package/dist/cjs/models/schemas/avatars.js +1 -1
  12. package/dist/cjs/models/schemas/chunked_uploads.js +1 -1
  13. package/dist/cjs/models/schemas/classifications.js +1 -1
  14. package/dist/cjs/models/schemas/collaboration_allowlist_entries.js +1 -1
  15. package/dist/cjs/models/schemas/collaboration_allowlist_exempt_targets.js +1 -1
  16. package/dist/cjs/models/schemas/collections.js +1 -1
  17. package/dist/cjs/models/schemas/comments.js +1 -1
  18. package/dist/cjs/models/schemas/device_pinners.js +1 -1
  19. package/dist/cjs/models/schemas/docgen.js +1 -1
  20. package/dist/cjs/models/schemas/docgen_template.js +1 -1
  21. package/dist/cjs/models/schemas/document_split.js +1 -1
  22. package/dist/cjs/models/schemas/email_aliases.js +1 -1
  23. package/dist/cjs/models/schemas/enterprise_configurations.js +1 -1
  24. package/dist/cjs/models/schemas/events.js +1 -1
  25. package/dist/cjs/models/schemas/external_users.js +1 -1
  26. package/dist/cjs/models/schemas/file_requests.js +1 -1
  27. package/dist/cjs/models/schemas/file_version_legal_holds.js +1 -1
  28. package/dist/cjs/models/schemas/file_version_retentions.js +1 -1
  29. package/dist/cjs/models/schemas/file_versions.js +1 -1
  30. package/dist/cjs/models/schemas/files.js +1 -1
  31. package/dist/cjs/models/schemas/folder_locks.js +1 -1
  32. package/dist/cjs/models/schemas/folders.js +1 -1
  33. package/dist/cjs/models/schemas/groups.js +1 -1
  34. package/dist/cjs/models/schemas/hub_collaborations.js +1 -1
  35. package/dist/cjs/models/schemas/hub_document.js +1 -1
  36. package/dist/cjs/models/schemas/hub_items.js +1 -1
  37. package/dist/cjs/models/schemas/hubs.js +1 -1
  38. package/dist/cjs/models/schemas/integration_mappings.js +1 -1
  39. package/dist/cjs/models/schemas/invites.js +1 -1
  40. package/dist/cjs/models/schemas/legal_hold_policies.js +1 -1
  41. package/dist/cjs/models/schemas/legal_hold_policy_assignments.js +1 -1
  42. package/dist/cjs/models/schemas/list_collaborations.js +1 -1
  43. package/dist/cjs/models/schemas/memberships.js +1 -1
  44. package/dist/cjs/models/schemas/metadata_cascade_policies.js +1 -1
  45. package/dist/cjs/models/schemas/metadata_taxonomies.js +1 -1
  46. package/dist/cjs/models/schemas/metadata_templates.js +1 -1
  47. package/dist/cjs/models/schemas/notes.js +1 -1
  48. package/dist/cjs/models/schemas/query.js +1 -1
  49. package/dist/cjs/models/schemas/recent_items.js +1 -1
  50. package/dist/cjs/models/schemas/retention_policies.js +1 -1
  51. package/dist/cjs/models/schemas/retention_policy_assignments.js +1 -1
  52. package/dist/cjs/models/schemas/search.js +1 -1
  53. package/dist/cjs/models/schemas/session_termination.js +1 -1
  54. package/dist/cjs/models/schemas/shared_links_folders.js +1 -1
  55. package/dist/cjs/models/schemas/shield_information_barrier_reports.js +1 -1
  56. package/dist/cjs/models/schemas/shield_information_barrier_segment_members.js +1 -1
  57. package/dist/cjs/models/schemas/shield_information_barrier_segment_restrictions.js +1 -1
  58. package/dist/cjs/models/schemas/shield_information_barrier_segments.js +1 -1
  59. package/dist/cjs/models/schemas/shield_information_barriers.js +1 -1
  60. package/dist/cjs/models/schemas/shield_lists.js +1 -1
  61. package/dist/cjs/models/schemas/shuttle.js +1 -1
  62. package/dist/cjs/models/schemas/sign_requests.js +1 -1
  63. package/dist/cjs/models/schemas/sign_templates.js +1 -1
  64. package/dist/cjs/models/schemas/skills.js +1 -1
  65. package/dist/cjs/models/schemas/storage_policies.js +1 -1
  66. package/dist/cjs/models/schemas/storage_policy_assignments.js +1 -1
  67. package/dist/cjs/models/schemas/task_assignments.js +1 -1
  68. package/dist/cjs/models/schemas/tasks.js +1 -1
  69. package/dist/cjs/models/schemas/terms_of_service_user_statuses.js +1 -1
  70. package/dist/cjs/models/schemas/terms_of_services.js +1 -1
  71. package/dist/cjs/models/schemas/transfer.js +1 -1
  72. package/dist/cjs/models/schemas/trashed_files.js +1 -1
  73. package/dist/cjs/models/schemas/trashed_folders.js +1 -1
  74. package/dist/cjs/models/schemas/trashed_items.js +1 -1
  75. package/dist/cjs/models/schemas/trashed_web_links.js +1 -1
  76. package/dist/cjs/models/schemas/uploads.js +1 -1
  77. package/dist/cjs/models/schemas/user_collaborations.js +1 -1
  78. package/dist/cjs/models/schemas/users.js +1 -1
  79. package/dist/cjs/models/schemas/web_links.js +1 -1
  80. package/dist/cjs/models/schemas/webhooks.js +1 -1
  81. package/dist/cjs/models/schemas/workflows.js +1 -1
  82. package/dist/cjs/models/schemas/zip_downloads.js +1 -1
  83. package/dist/cjs/models/schemas.js +1 -1
  84. package/dist/cjs/runtime.js +115 -1
  85. package/dist/cjs/webhooks.js +113 -0
  86. package/dist/esm/buildinfo.js +2 -2
  87. package/dist/esm/errors.js +6 -0
  88. package/dist/esm/managers/events.js +27 -1
  89. package/dist/esm/managers/web_links.js +26 -2
  90. package/dist/esm/models/schemas/ai.js +1 -1
  91. package/dist/esm/models/schemas/ai_studio.js +1 -1
  92. package/dist/esm/models/schemas/app_item_associations.js +1 -1
  93. package/dist/esm/models/schemas/archives.js +1 -1
  94. package/dist/esm/models/schemas/authorization.js +1 -1
  95. package/dist/esm/models/schemas/automate_workflows.js +1 -1
  96. package/dist/esm/models/schemas/avatars.js +1 -1
  97. package/dist/esm/models/schemas/chunked_uploads.js +1 -1
  98. package/dist/esm/models/schemas/classifications.js +1 -1
  99. package/dist/esm/models/schemas/collaboration_allowlist_entries.js +1 -1
  100. package/dist/esm/models/schemas/collaboration_allowlist_exempt_targets.js +1 -1
  101. package/dist/esm/models/schemas/collections.js +1 -1
  102. package/dist/esm/models/schemas/comments.js +1 -1
  103. package/dist/esm/models/schemas/device_pinners.js +1 -1
  104. package/dist/esm/models/schemas/docgen.js +1 -1
  105. package/dist/esm/models/schemas/docgen_template.js +1 -1
  106. package/dist/esm/models/schemas/document_split.js +1 -1
  107. package/dist/esm/models/schemas/email_aliases.js +1 -1
  108. package/dist/esm/models/schemas/enterprise_configurations.js +1 -1
  109. package/dist/esm/models/schemas/events.js +1 -1
  110. package/dist/esm/models/schemas/external_users.js +1 -1
  111. package/dist/esm/models/schemas/file_requests.js +1 -1
  112. package/dist/esm/models/schemas/file_version_legal_holds.js +1 -1
  113. package/dist/esm/models/schemas/file_version_retentions.js +1 -1
  114. package/dist/esm/models/schemas/file_versions.js +1 -1
  115. package/dist/esm/models/schemas/files.js +1 -1
  116. package/dist/esm/models/schemas/folder_locks.js +1 -1
  117. package/dist/esm/models/schemas/folders.js +1 -1
  118. package/dist/esm/models/schemas/groups.js +1 -1
  119. package/dist/esm/models/schemas/hub_collaborations.js +1 -1
  120. package/dist/esm/models/schemas/hub_document.js +1 -1
  121. package/dist/esm/models/schemas/hub_items.js +1 -1
  122. package/dist/esm/models/schemas/hubs.js +1 -1
  123. package/dist/esm/models/schemas/integration_mappings.js +1 -1
  124. package/dist/esm/models/schemas/invites.js +1 -1
  125. package/dist/esm/models/schemas/legal_hold_policies.js +1 -1
  126. package/dist/esm/models/schemas/legal_hold_policy_assignments.js +1 -1
  127. package/dist/esm/models/schemas/list_collaborations.js +1 -1
  128. package/dist/esm/models/schemas/memberships.js +1 -1
  129. package/dist/esm/models/schemas/metadata_cascade_policies.js +1 -1
  130. package/dist/esm/models/schemas/metadata_taxonomies.js +1 -1
  131. package/dist/esm/models/schemas/metadata_templates.js +1 -1
  132. package/dist/esm/models/schemas/notes.js +1 -1
  133. package/dist/esm/models/schemas/query.js +1 -1
  134. package/dist/esm/models/schemas/recent_items.js +1 -1
  135. package/dist/esm/models/schemas/retention_policies.js +1 -1
  136. package/dist/esm/models/schemas/retention_policy_assignments.js +1 -1
  137. package/dist/esm/models/schemas/search.js +1 -1
  138. package/dist/esm/models/schemas/session_termination.js +1 -1
  139. package/dist/esm/models/schemas/shared_links_folders.js +1 -1
  140. package/dist/esm/models/schemas/shield_information_barrier_reports.js +1 -1
  141. package/dist/esm/models/schemas/shield_information_barrier_segment_members.js +1 -1
  142. package/dist/esm/models/schemas/shield_information_barrier_segment_restrictions.js +1 -1
  143. package/dist/esm/models/schemas/shield_information_barrier_segments.js +1 -1
  144. package/dist/esm/models/schemas/shield_information_barriers.js +1 -1
  145. package/dist/esm/models/schemas/shield_lists.js +1 -1
  146. package/dist/esm/models/schemas/shuttle.js +1 -1
  147. package/dist/esm/models/schemas/sign_requests.js +1 -1
  148. package/dist/esm/models/schemas/sign_templates.js +1 -1
  149. package/dist/esm/models/schemas/skills.js +1 -1
  150. package/dist/esm/models/schemas/storage_policies.js +1 -1
  151. package/dist/esm/models/schemas/storage_policy_assignments.js +1 -1
  152. package/dist/esm/models/schemas/task_assignments.js +1 -1
  153. package/dist/esm/models/schemas/tasks.js +1 -1
  154. package/dist/esm/models/schemas/terms_of_service_user_statuses.js +1 -1
  155. package/dist/esm/models/schemas/terms_of_services.js +1 -1
  156. package/dist/esm/models/schemas/transfer.js +1 -1
  157. package/dist/esm/models/schemas/trashed_files.js +1 -1
  158. package/dist/esm/models/schemas/trashed_folders.js +1 -1
  159. package/dist/esm/models/schemas/trashed_items.js +1 -1
  160. package/dist/esm/models/schemas/trashed_web_links.js +1 -1
  161. package/dist/esm/models/schemas/uploads.js +1 -1
  162. package/dist/esm/models/schemas/user_collaborations.js +1 -1
  163. package/dist/esm/models/schemas/users.js +1 -1
  164. package/dist/esm/models/schemas/web_links.js +1 -1
  165. package/dist/esm/models/schemas/webhooks.js +1 -1
  166. package/dist/esm/models/schemas/workflows.js +1 -1
  167. package/dist/esm/models/schemas/zip_downloads.js +1 -1
  168. package/dist/esm/models/schemas.js +1 -1
  169. package/dist/esm/runtime.js +111 -1
  170. package/dist/esm/webhooks.js +109 -0
  171. package/dist/types/buildinfo.d.ts +1 -1
  172. package/dist/types/errors.d.ts +4 -0
  173. package/dist/types/managers/events.d.ts +4 -0
  174. package/dist/types/managers/web_links.d.ts +14 -2
  175. package/dist/types/runtime.d.ts +36 -1
  176. package/dist/types/webhooks.d.ts +24 -0
  177. package/docs/README.md +1 -0
  178. package/docs/errors.md +14 -8
  179. package/docs/managers/web_links.md +3 -0
  180. package/docs/pagination.md +16 -0
  181. package/docs/webhooks.md +34 -0
  182. package/package.json +1 -1
@@ -1,2 +1,2 @@
1
- // Code generated by box-gantry 0.1.0 (spec 3283827dcf199770) for Box API 2024.0. DO NOT EDIT.
1
+ // Code generated by box-gantry 0.1.0 (spec 21e020ceb5dcf964) for Box API 2024.0. DO NOT EDIT.
2
2
  export {};
@@ -1,2 +1,2 @@
1
- // Code generated by box-gantry 0.1.0 (spec 3283827dcf199770) for Box API 2024.0. DO NOT EDIT.
1
+ // Code generated by box-gantry 0.1.0 (spec 21e020ceb5dcf964) for Box API 2024.0. DO NOT EDIT.
2
2
  export {};
@@ -1,2 +1,2 @@
1
- // Code generated by box-gantry 0.1.0 (spec 3283827dcf199770) for Box API 2024.0. DO NOT EDIT.
1
+ // Code generated by box-gantry 0.1.0 (spec 21e020ceb5dcf964) for Box API 2024.0. DO NOT EDIT.
2
2
  export {};
@@ -1,2 +1,2 @@
1
- // Code generated by box-gantry 0.1.0 (spec 3283827dcf199770) for Box API 2024.0. DO NOT EDIT.
1
+ // Code generated by box-gantry 0.1.0 (spec 21e020ceb5dcf964) for Box API 2024.0. DO NOT EDIT.
2
2
  export {};
@@ -1,2 +1,2 @@
1
- // Code generated by box-gantry 0.1.0 (spec 3283827dcf199770) for Box API 2024.0. DO NOT EDIT.
1
+ // Code generated by box-gantry 0.1.0 (spec 21e020ceb5dcf964) for Box API 2024.0. DO NOT EDIT.
2
2
  export {};
@@ -1,2 +1,2 @@
1
- // Code generated by box-gantry 0.1.0 (spec 3283827dcf199770) for Box API 2024.0. DO NOT EDIT.
1
+ // Code generated by box-gantry 0.1.0 (spec 21e020ceb5dcf964) for Box API 2024.0. DO NOT EDIT.
2
2
  export {};
@@ -1,2 +1,2 @@
1
- // Code generated by box-gantry 0.1.0 (spec 3283827dcf199770) for Box API 2024.0. DO NOT EDIT.
1
+ // Code generated by box-gantry 0.1.0 (spec 21e020ceb5dcf964) for Box API 2024.0. DO NOT EDIT.
2
2
  export {};
@@ -1,2 +1,2 @@
1
- // Code generated by box-gantry 0.1.0 (spec 3283827dcf199770) for Box API 2024.0. DO NOT EDIT.
1
+ // Code generated by box-gantry 0.1.0 (spec 21e020ceb5dcf964) for Box API 2024.0. DO NOT EDIT.
2
2
  export {};
@@ -1,2 +1,2 @@
1
- // Code generated by box-gantry 0.1.0 (spec 3283827dcf199770) for Box API 2024.0. DO NOT EDIT.
1
+ // Code generated by box-gantry 0.1.0 (spec 21e020ceb5dcf964) for Box API 2024.0. DO NOT EDIT.
2
2
  export {};
@@ -1,2 +1,2 @@
1
- // Code generated by box-gantry 0.1.0 (spec 3283827dcf199770) for Box API 2024.0. DO NOT EDIT.
1
+ // Code generated by box-gantry 0.1.0 (spec 21e020ceb5dcf964) for Box API 2024.0. DO NOT EDIT.
2
2
  export {};
@@ -1,2 +1,2 @@
1
- // Code generated by box-gantry 0.1.0 (spec 3283827dcf199770) for Box API 2024.0. DO NOT EDIT.
1
+ // Code generated by box-gantry 0.1.0 (spec 21e020ceb5dcf964) for Box API 2024.0. DO NOT EDIT.
2
2
  export {};
@@ -1,2 +1,2 @@
1
- // Code generated by box-gantry 0.1.0 (spec 3283827dcf199770) for Box API 2024.0. DO NOT EDIT.
1
+ // Code generated by box-gantry 0.1.0 (spec 21e020ceb5dcf964) for Box API 2024.0. DO NOT EDIT.
2
2
  export {};
@@ -1,2 +1,2 @@
1
- // Code generated by box-gantry 0.1.0 (spec 3283827dcf199770) for Box API 2024.0. DO NOT EDIT.
1
+ // Code generated by box-gantry 0.1.0 (spec 21e020ceb5dcf964) for Box API 2024.0. DO NOT EDIT.
2
2
  export {};
@@ -1,2 +1,2 @@
1
- // Code generated by box-gantry 0.1.0 (spec 3283827dcf199770) for Box API 2024.0. DO NOT EDIT.
1
+ // Code generated by box-gantry 0.1.0 (spec 21e020ceb5dcf964) for Box API 2024.0. DO NOT EDIT.
2
2
  export {};
@@ -1,2 +1,2 @@
1
- // Code generated by box-gantry 0.1.0 (spec 3283827dcf199770) for Box API 2024.0. DO NOT EDIT.
1
+ // Code generated by box-gantry 0.1.0 (spec 21e020ceb5dcf964) for Box API 2024.0. DO NOT EDIT.
2
2
  export {};
@@ -1,2 +1,2 @@
1
- // Code generated by box-gantry 0.1.0 (spec 3283827dcf199770) for Box API 2024.0. DO NOT EDIT.
1
+ // Code generated by box-gantry 0.1.0 (spec 21e020ceb5dcf964) for Box API 2024.0. DO NOT EDIT.
2
2
  export {};
@@ -1,2 +1,2 @@
1
- // Code generated by box-gantry 0.1.0 (spec 3283827dcf199770) for Box API 2024.0. DO NOT EDIT.
1
+ // Code generated by box-gantry 0.1.0 (spec 21e020ceb5dcf964) for Box API 2024.0. DO NOT EDIT.
2
2
  export {};
@@ -1,2 +1,2 @@
1
- // Code generated by box-gantry 0.1.0 (spec 3283827dcf199770) for Box API 2024.0. DO NOT EDIT.
1
+ // Code generated by box-gantry 0.1.0 (spec 21e020ceb5dcf964) for Box API 2024.0. DO NOT EDIT.
2
2
  export {};
@@ -1,2 +1,2 @@
1
- // Code generated by box-gantry 0.1.0 (spec 3283827dcf199770) for Box API 2024.0. DO NOT EDIT.
1
+ // Code generated by box-gantry 0.1.0 (spec 21e020ceb5dcf964) for Box API 2024.0. DO NOT EDIT.
2
2
  export {};
@@ -1,2 +1,2 @@
1
- // Code generated by box-gantry 0.1.0 (spec 3283827dcf199770) for Box API 2024.0. DO NOT EDIT.
1
+ // Code generated by box-gantry 0.1.0 (spec 21e020ceb5dcf964) for Box API 2024.0. DO NOT EDIT.
2
2
  export {};
@@ -1,2 +1,2 @@
1
- // Code generated by box-gantry 0.1.0 (spec 3283827dcf199770) for Box API 2024.0. DO NOT EDIT.
1
+ // Code generated by box-gantry 0.1.0 (spec 21e020ceb5dcf964) for Box API 2024.0. DO NOT EDIT.
2
2
  export {};
@@ -1,2 +1,2 @@
1
- // Code generated by box-gantry 0.1.0 (spec 3283827dcf199770) for Box API 2024.0. DO NOT EDIT.
1
+ // Code generated by box-gantry 0.1.0 (spec 21e020ceb5dcf964) for Box API 2024.0. DO NOT EDIT.
2
2
  export {};
@@ -1,2 +1,2 @@
1
- // Code generated by box-gantry 0.1.0 (spec 3283827dcf199770) for Box API 2024.0. DO NOT EDIT.
1
+ // Code generated by box-gantry 0.1.0 (spec 21e020ceb5dcf964) for Box API 2024.0. DO NOT EDIT.
2
2
  export {};
@@ -1,2 +1,2 @@
1
- // Code generated by box-gantry 0.1.0 (spec 3283827dcf199770) for Box API 2024.0. DO NOT EDIT.
1
+ // Code generated by box-gantry 0.1.0 (spec 21e020ceb5dcf964) for Box API 2024.0. DO NOT EDIT.
2
2
  export {};
@@ -1,2 +1,2 @@
1
- // Code generated by box-gantry 0.1.0 (spec 3283827dcf199770) for Box API 2024.0. DO NOT EDIT.
1
+ // Code generated by box-gantry 0.1.0 (spec 21e020ceb5dcf964) for Box API 2024.0. DO NOT EDIT.
2
2
  export {};
@@ -1,2 +1,2 @@
1
- // Code generated by box-gantry 0.1.0 (spec 3283827dcf199770) for Box API 2024.0. DO NOT EDIT.
1
+ // Code generated by box-gantry 0.1.0 (spec 21e020ceb5dcf964) for Box API 2024.0. DO NOT EDIT.
2
2
  export {};
@@ -1,2 +1,2 @@
1
- // Code generated by box-gantry 0.1.0 (spec 3283827dcf199770) for Box API 2024.0. DO NOT EDIT.
1
+ // Code generated by box-gantry 0.1.0 (spec 21e020ceb5dcf964) for Box API 2024.0. DO NOT EDIT.
2
2
  export {};
@@ -1,2 +1,2 @@
1
- // Code generated by box-gantry 0.1.0 (spec 3283827dcf199770) for Box API 2024.0. DO NOT EDIT.
1
+ // Code generated by box-gantry 0.1.0 (spec 21e020ceb5dcf964) for Box API 2024.0. DO NOT EDIT.
2
2
  export {};
@@ -1,2 +1,2 @@
1
- // Code generated by box-gantry 0.1.0 (spec 3283827dcf199770) for Box API 2024.0. DO NOT EDIT.
1
+ // Code generated by box-gantry 0.1.0 (spec 21e020ceb5dcf964) for Box API 2024.0. DO NOT EDIT.
2
2
  export {};
@@ -1,2 +1,2 @@
1
- // Code generated by box-gantry 0.1.0 (spec 3283827dcf199770) for Box API 2024.0. DO NOT EDIT.
1
+ // Code generated by box-gantry 0.1.0 (spec 21e020ceb5dcf964) for Box API 2024.0. DO NOT EDIT.
2
2
  export {};
@@ -1,2 +1,2 @@
1
- // Code generated by box-gantry 0.1.0 (spec 3283827dcf199770) for Box API 2024.0. DO NOT EDIT.
1
+ // Code generated by box-gantry 0.1.0 (spec 21e020ceb5dcf964) for Box API 2024.0. DO NOT EDIT.
2
2
  export {};
@@ -1,2 +1,2 @@
1
- // Code generated by box-gantry 0.1.0 (spec 3283827dcf199770) for Box API 2024.0. DO NOT EDIT.
1
+ // Code generated by box-gantry 0.1.0 (spec 21e020ceb5dcf964) for Box API 2024.0. DO NOT EDIT.
2
2
  export {};
@@ -1,2 +1,2 @@
1
- // Code generated by box-gantry 0.1.0 (spec 3283827dcf199770) for Box API 2024.0. DO NOT EDIT.
1
+ // Code generated by box-gantry 0.1.0 (spec 21e020ceb5dcf964) for Box API 2024.0. DO NOT EDIT.
2
2
  export {};
@@ -1,2 +1,2 @@
1
- // Code generated by box-gantry 0.1.0 (spec 3283827dcf199770) for Box API 2024.0. DO NOT EDIT.
1
+ // Code generated by box-gantry 0.1.0 (spec 21e020ceb5dcf964) for Box API 2024.0. DO NOT EDIT.
2
2
  export {};
@@ -1,2 +1,2 @@
1
- // Code generated by box-gantry 0.1.0 (spec 3283827dcf199770) for Box API 2024.0. DO NOT EDIT.
1
+ // Code generated by box-gantry 0.1.0 (spec 21e020ceb5dcf964) for Box API 2024.0. DO NOT EDIT.
2
2
  export {};
@@ -1,2 +1,2 @@
1
- // Code generated by box-gantry 0.1.0 (spec 3283827dcf199770) for Box API 2024.0. DO NOT EDIT.
1
+ // Code generated by box-gantry 0.1.0 (spec 21e020ceb5dcf964) for Box API 2024.0. DO NOT EDIT.
2
2
  export {};
@@ -1,2 +1,2 @@
1
- // Code generated by box-gantry 0.1.0 (spec 3283827dcf199770) for Box API 2024.0. DO NOT EDIT.
1
+ // Code generated by box-gantry 0.1.0 (spec 21e020ceb5dcf964) for Box API 2024.0. DO NOT EDIT.
2
2
  export {};
@@ -1,4 +1,4 @@
1
- // Code generated by box-gantry 0.1.0 (spec 3283827dcf199770) for Box API 2024.0. DO NOT EDIT.
1
+ // Code generated by box-gantry 0.1.0 (spec 21e020ceb5dcf964) for Box API 2024.0. DO NOT EDIT.
2
2
  export * from './schemas/ai.js';
3
3
  export * from './schemas/ai_studio.js';
4
4
  export * from './schemas/app_item_associations.js';
@@ -1,7 +1,8 @@
1
1
  // Code generated by box-gantry (vendored from runtimes/typescript/gantryruntime/src/runtime.ts). DO NOT EDIT.
2
2
  import { BoxApiError, apiErrorFromResponse } from './errors.js';
3
- export { BoxApiError } from './errors.js';
3
+ export { BoxApiError, isPreconditionFailed } from './errors.js';
4
4
  export * from './auth.js';
5
+ export * from './webhooks.js';
5
6
  /** The default base URLs for the D-106 URL classes. */
6
7
  const DEFAULT_BASE_URLS = {
7
8
  api: 'https://api.box.com/2.0',
@@ -284,3 +285,112 @@ export function responseHeader(response, name) {
284
285
  export function statusCode(response) {
285
286
  return response.status;
286
287
  }
288
+ const DEFAULT_LONG_POLL_RETRIES = 10;
289
+ const DEFAULT_LONG_POLL_TIMEOUT_SECONDS = 610;
290
+ /** Box may deliver an event twice; this many recent event ids are kept to drop
291
+ * the repeats (the bound Box's own SDKs use). */
292
+ const MAX_SEEN_EVENTS = 1000;
293
+ /**
294
+ * Follow Box's long-poll protocol from `position` (`'now'` for events from
295
+ * here on): yield the events after it, each once, then wait on a real-time
296
+ * server until Box reports a change and yield those. A `reconnect` answer, or
297
+ * exhausting the server's retries, lists a fresh server. A long poll that times
298
+ * out or fails in transit is retried; an error response from Box ends the
299
+ * stream by throwing it, and aborting `signal` throws the abort.
300
+ */
301
+ export async function* eventStream(client, position, source, signal) {
302
+ let seen = new Set();
303
+ let server;
304
+ let retries = 0;
305
+ for (;;) {
306
+ const { events, next } = await source.page(position);
307
+ for (const event of events) {
308
+ const id = source.id(event);
309
+ if (id !== undefined) {
310
+ if (seen.has(id)) {
311
+ continue;
312
+ }
313
+ seen.add(id);
314
+ }
315
+ yield event;
316
+ }
317
+ if (seen.size >= MAX_SEEN_EVENTS) {
318
+ // Repeats arrive close together: keep only this page's ids.
319
+ seen = new Set();
320
+ for (const event of events) {
321
+ const id = source.id(event);
322
+ if (id !== undefined) {
323
+ seen.add(id);
324
+ }
325
+ }
326
+ }
327
+ if (next !== undefined && next !== '') {
328
+ position = next;
329
+ }
330
+ // Wait for Box to report a change after `position`.
331
+ for (let changed = false; !changed;) {
332
+ if (server === undefined || retries >= server.maxRetries) {
333
+ const listed = await source.server();
334
+ server = {
335
+ url: listed.url,
336
+ maxRetries: positiveOr(listed.maxRetries, DEFAULT_LONG_POLL_RETRIES),
337
+ retryTimeoutSeconds: positiveOr(listed.retryTimeoutSeconds, DEFAULT_LONG_POLL_TIMEOUT_SECONDS),
338
+ };
339
+ retries = 0;
340
+ }
341
+ retries++;
342
+ let message;
343
+ try {
344
+ message = await longPoll(client, server, position, signal);
345
+ }
346
+ catch (err) {
347
+ if (signal?.aborted || (err instanceof BoxApiError && err.status !== undefined)) {
348
+ throw err;
349
+ }
350
+ // Timed out or failed in transit: poll again.
351
+ continue;
352
+ }
353
+ if (message === 'new_change') {
354
+ changed = true;
355
+ }
356
+ else if (message === 'reconnect' || message === 'max_retries') {
357
+ server = undefined;
358
+ }
359
+ }
360
+ }
361
+ }
362
+ function positiveOr(value, fallback) {
363
+ return value !== undefined && value > 0 ? value : fallback;
364
+ }
365
+ /** Wait on a real-time server for Box's next message about the stream after
366
+ * `position`: `new_change`, `reconnect`, or `max_retries`. */
367
+ async function longPoll(client, server, position, signal) {
368
+ const separator = server.url.includes('?') ? '&' : '?';
369
+ const url = `${server.url}${separator}stream_position=${encodeURIComponent(position)}`;
370
+ const timeout = AbortSignal.timeout(server.retryTimeoutSeconds * 1000);
371
+ const response = await client.fetch(client.newRequest('GET', url), signal === undefined ? timeout : AbortSignal.any([signal, timeout]));
372
+ const answer = JSON.parse(new TextDecoder().decode(response.bodyBytes));
373
+ if (typeof answer === 'object' && answer !== null && 'message' in answer) {
374
+ return typeof answer.message === 'string' ? answer.message : undefined;
375
+ }
376
+ return undefined;
377
+ }
378
+ /** A stream position Box sent as a JSON string or number, as the string to
379
+ * send back. */
380
+ export function streamPosition(value) {
381
+ if (typeof value === 'string') {
382
+ return value;
383
+ }
384
+ return typeof value === 'number' || typeof value === 'bigint' ? String(value) : undefined;
385
+ }
386
+ /** `JSON.parse`, except an integer too large for a `number` keeps its exact
387
+ * digits as a string — a stream position must round-trip unchanged. */
388
+ export function parseJsonExact(text) {
389
+ const reviver = (_key, value, context) => typeof value === 'number' &&
390
+ !Number.isSafeInteger(value) &&
391
+ context?.source !== undefined &&
392
+ /^-?\d+$/.test(context.source)
393
+ ? context.source
394
+ : value;
395
+ return JSON.parse(text, reviver);
396
+ }
@@ -0,0 +1,109 @@
1
+ // Code generated by box-gantry (vendored from runtimes/typescript/gantryruntime/src/webhooks.ts). DO NOT EDIT.
2
+ // Box webhook signature verification (Box's v2 scheme). Each
3
+ // `BOX-SIGNATURE-*` header of a delivery is the base64 HMAC-SHA256, under that
4
+ // signature key, of the body followed by the `BOX-DELIVERY-TIMESTAMP` header.
5
+ // Built on WebCrypto (`crypto.subtle`), so it runs in Node and browsers alike
6
+ // and needs no `node:crypto`; `subtle.verify` compares in constant time.
7
+ /** How old a delivery may be, in seconds, before it's rejected as a possible
8
+ * replay: Box's ten minutes. */
9
+ export const DEFAULT_WEBHOOK_MAX_AGE_SECONDS = 600;
10
+ /**
11
+ * Whether `body` and `headers` are a genuine, recent delivery from Box. Pass
12
+ * the body exactly as received; header names match in any case. Resolves
13
+ * `false` for an unknown signature version or algorithm, a delivery older than
14
+ * the maximum age or timestamped in the future, and a signature no configured
15
+ * key produces.
16
+ */
17
+ export async function verifyWebhook(body, headers, keys) {
18
+ const header = (name) => {
19
+ if (headers instanceof Headers) {
20
+ return headers.get(name) ?? undefined;
21
+ }
22
+ for (const [key, value] of Object.entries(headers)) {
23
+ if (key.toLowerCase() === name) {
24
+ return value;
25
+ }
26
+ }
27
+ return undefined;
28
+ };
29
+ if (header('box-signature-version') !== '1' || header('box-signature-algorithm') !== 'HmacSHA256') {
30
+ return false;
31
+ }
32
+ const timestamp = header('box-delivery-timestamp');
33
+ const sentMs = timestamp === undefined ? NaN : Date.parse(timestamp);
34
+ if (Number.isNaN(sentMs)) {
35
+ return false;
36
+ }
37
+ // Whole seconds, as Box's own SDKs compare them.
38
+ const sent = Math.floor(sentMs / 1000);
39
+ const at = Math.floor((keys.now ?? new Date()).getTime() / 1000);
40
+ if (sent > at || at - sent > (keys.maxAgeSeconds ?? DEFAULT_WEBHOOK_MAX_AGE_SECONDS)) {
41
+ return false;
42
+ }
43
+ const encoder = new TextEncoder();
44
+ const raw = typeof body === 'string' ? encoder.encode(body) : Uint8Array.from(body);
45
+ const bodies = [raw];
46
+ const escaped = escapeNonAscii(raw);
47
+ if (escaped !== undefined) {
48
+ bodies.push(encoder.encode(escaped));
49
+ }
50
+ const stamp = encoder.encode(timestamp);
51
+ const signed = [
52
+ [keys.primaryKey, 'box-signature-primary'],
53
+ [keys.secondaryKey, 'box-signature-secondary'],
54
+ ];
55
+ for (const [key, name] of signed) {
56
+ const received = decodeBase64(header(name));
57
+ if (key === undefined || key === '' || received === undefined) {
58
+ continue;
59
+ }
60
+ const hmac = await crypto.subtle.importKey('raw', encoder.encode(key), { name: 'HMAC', hash: 'SHA-256' }, false, ['verify']);
61
+ for (const candidate of bodies) {
62
+ const message = new Uint8Array(candidate.length + stamp.length);
63
+ message.set(candidate);
64
+ message.set(stamp, candidate.length);
65
+ if (await crypto.subtle.verify('HMAC', hmac, received, message)) {
66
+ return true;
67
+ }
68
+ }
69
+ }
70
+ return false;
71
+ }
72
+ /** Standard base64 to bytes; `undefined` when absent, empty, or malformed. */
73
+ function decodeBase64(value) {
74
+ if (value === undefined || value === '') {
75
+ return undefined;
76
+ }
77
+ try {
78
+ return Uint8Array.from(atob(value), (c) => c.charCodeAt(0));
79
+ }
80
+ catch {
81
+ return undefined;
82
+ }
83
+ }
84
+ /** `body` with every character from U+007F up written as a JSON `\uXXXX`
85
+ * escape (UTF-16, lowercase hex) — the form Box signs. A body re-encoded as
86
+ * raw UTF-8 on its way to the caller verifies through it. `undefined` when
87
+ * `body` is already all ASCII, or is not UTF-8. */
88
+ function escapeNonAscii(body) {
89
+ let text;
90
+ try {
91
+ text = new TextDecoder('utf-8', { fatal: true }).decode(body);
92
+ }
93
+ catch {
94
+ return undefined;
95
+ }
96
+ let out = '';
97
+ let escaped = false;
98
+ for (let i = 0; i < text.length; i++) {
99
+ const unit = text.charCodeAt(i);
100
+ if (unit < 0x7f) {
101
+ out += text[i];
102
+ }
103
+ else {
104
+ escaped = true;
105
+ out += `\\u${unit.toString(16).padStart(4, '0')}`;
106
+ }
107
+ }
108
+ return escaped ? out : undefined;
109
+ }
@@ -1,6 +1,6 @@
1
1
  /** The box-gantry engine version that generated this SDK. */
2
2
  export declare const ENGINE = "0.1.0";
3
3
  /** Fingerprint of the input spec set. */
4
- export declare const SPEC_FINGERPRINT = "3283827dcf199770";
4
+ export declare const SPEC_FINGERPRINT = "21e020ceb5dcf964";
5
5
  /** The target language key (FR-4). */
6
6
  export declare const TARGET = "typescript";
@@ -33,6 +33,10 @@ export declare class BoxApiError extends Error {
33
33
  readonly body?: Uint8Array;
34
34
  constructor(message: string, options?: BoxApiErrorOptions);
35
35
  }
36
+ /** Whether `err` is Box's 412 Precondition Failed: an `If-Match` write whose
37
+ * etag no longer matches, because the item changed since it was read. Re-read
38
+ * the item and retry with its new etag. */
39
+ export declare function isPreconditionFailed(err: unknown): err is BoxApiError;
36
40
  /** The error for a non-2xx response: `Client.fetch` throws it once the retry
37
41
  * budget and the single 401 refresh are spent, so a caller never mistakes an
38
42
  * error body for a result. Box's error fields are read from the body when it
@@ -15,4 +15,8 @@ export declare class EventsManager {
15
15
  constructor(session: runtime.Client);
16
16
  list(opts?: EventsManagerListOptions): Promise<models.schemas.Events>;
17
17
  options(): Promise<models.schemas.RealtimeServers>;
18
+ /** Box's long-poll event stream from `opts.stream_position` (`'now'` when
19
+ * unset): yields each event once, then waits on a real-time server for the
20
+ * next change. It rejects when a call fails; aborting `signal` stops it. */
21
+ stream(opts?: EventsManagerListOptions, signal?: AbortSignal): AsyncGenerator<models.schemas.Event, void, undefined>;
18
22
  }
@@ -3,6 +3,15 @@ import type * as models from '../models/index.js';
3
3
  /** Optional parameters for WebLinksManager.get. */
4
4
  export interface WebLinksManagerGetOptions {
5
5
  boxapi?: string;
6
+ "if-none-match"?: string;
7
+ }
8
+ /** Optional parameters for WebLinksManager.update. */
9
+ export interface WebLinksManagerUpdateOptions {
10
+ "if-match"?: string;
11
+ }
12
+ /** Optional parameters for WebLinksManager.delete_. */
13
+ export interface WebLinksManagerDeleteOptions {
14
+ "if-match"?: string;
6
15
  }
7
16
  /** Operations for the "web_links" API area. */
8
17
  export declare class WebLinksManager {
@@ -10,6 +19,9 @@ export declare class WebLinksManager {
10
19
  constructor(session: runtime.Client);
11
20
  create(body: models.schemas.CreateWebLinkRequest): Promise<models.schemas.WebLink>;
12
21
  get(webLinkId: string, opts?: WebLinksManagerGetOptions): Promise<models.schemas.WebLink>;
13
- update(webLinkId: string, body: models.schemas.UpdateWebLinkRequest): Promise<models.schemas.WebLink>;
14
- delete_(webLinkId: string): Promise<void>;
22
+ /** `get` with `If-None-Match` set to `etag`: resolves `undefined` when
23
+ * the item is unchanged since `etag` (Box answers 304 Not Modified). */
24
+ getIfModified(webLinkId: string, etag: string, opts?: WebLinksManagerGetOptions): Promise<models.schemas.WebLink | undefined>;
25
+ update(webLinkId: string, body: models.schemas.UpdateWebLinkRequest, opts?: WebLinksManagerUpdateOptions): Promise<models.schemas.WebLink>;
26
+ delete_(webLinkId: string, opts?: WebLinksManagerDeleteOptions): Promise<void>;
15
27
  }
@@ -1,6 +1,7 @@
1
1
  import type { Auth } from './auth.js';
2
- export { BoxApiError } from './errors.js';
2
+ export { BoxApiError, isPreconditionFailed } from './errors.js';
3
3
  export * from './auth.js';
4
+ export * from './webhooks.js';
4
5
  /** The runtime-owned HTTP request envelope, assembled by the `with*` builders
5
6
  * before `fetch` executes it. */
6
7
  export declare class Request {
@@ -97,3 +98,37 @@ export declare function responseStream(response: Response): Stream;
97
98
  export declare function responseHeader(response: Response, name: string): string;
98
99
  /** The response status code. */
99
100
  export declare function statusCode(response: Response): number;
101
+ /** One of Box's real-time servers, as `OPTIONS /events` lists them. An absent
102
+ * `maxRetries` or `retryTimeoutSeconds` takes Box's documented default. */
103
+ export interface LongPollServer {
104
+ url: string;
105
+ maxRetries?: number;
106
+ retryTimeoutSeconds?: number;
107
+ }
108
+ /** What `eventStream` drives: the typed calls a generated events manager
109
+ * supplies. `server` lists a real-time server; `page` fetches the events after
110
+ * a stream position and the position to wait from next; `id` names an event
111
+ * so a repeat can be dropped. */
112
+ export interface EventSource<E> {
113
+ server(): Promise<LongPollServer>;
114
+ page(position: string): Promise<{
115
+ events: E[];
116
+ next?: string;
117
+ }>;
118
+ id(event: E): string | undefined;
119
+ }
120
+ /**
121
+ * Follow Box's long-poll protocol from `position` (`'now'` for events from
122
+ * here on): yield the events after it, each once, then wait on a real-time
123
+ * server until Box reports a change and yield those. A `reconnect` answer, or
124
+ * exhausting the server's retries, lists a fresh server. A long poll that times
125
+ * out or fails in transit is retried; an error response from Box ends the
126
+ * stream by throwing it, and aborting `signal` throws the abort.
127
+ */
128
+ export declare function eventStream<E>(client: Client, position: string, source: EventSource<E>, signal?: AbortSignal): AsyncGenerator<E, void, undefined>;
129
+ /** A stream position Box sent as a JSON string or number, as the string to
130
+ * send back. */
131
+ export declare function streamPosition(value: unknown): string | undefined;
132
+ /** `JSON.parse`, except an integer too large for a `number` keeps its exact
133
+ * digits as a string — a stream position must round-trip unchanged. */
134
+ export declare function parseJsonExact(text: string): unknown;
@@ -0,0 +1,24 @@
1
+ /** How old a delivery may be, in seconds, before it's rejected as a possible
2
+ * replay: Box's ten minutes. */
3
+ export declare const DEFAULT_WEBHOOK_MAX_AGE_SECONDS = 600;
4
+ /** The keys and limits a delivery is checked against. */
5
+ export interface WebhookKeys {
6
+ /** The app's primary signature key, from the Developer Console. */
7
+ primaryKey?: string;
8
+ /** The app's secondary signature key. A delivery is genuine when the
9
+ * signature of any configured key matches, so a key can be rotated while the
10
+ * other keeps verifying. */
11
+ secondaryKey?: string;
12
+ /** How old a delivery may be (default `DEFAULT_WEBHOOK_MAX_AGE_SECONDS`). */
13
+ maxAgeSeconds?: number;
14
+ /** The clock (default: now). */
15
+ now?: Date;
16
+ }
17
+ /**
18
+ * Whether `body` and `headers` are a genuine, recent delivery from Box. Pass
19
+ * the body exactly as received; header names match in any case. Resolves
20
+ * `false` for an unknown signature version or algorithm, a delivery older than
21
+ * the maximum age or timestamped in the future, and a signature no configured
22
+ * key produces.
23
+ */
24
+ export declare function verifyWebhook(body: Uint8Array | string, headers: Headers | Record<string, string | undefined>, keys: WebhookKeys): Promise<boolean>;
package/docs/README.md CHANGED
@@ -9,6 +9,7 @@ One resource manager per Box API tag, reached through the single
9
9
  - [Authentication](auth.md)
10
10
  - [Pagination](pagination.md)
11
11
  - [Errors](errors.md)
12
+ - [Webhooks](webhooks.md)
12
13
 
13
14
  ## Managers
14
15
 
package/docs/errors.md CHANGED
@@ -26,26 +26,32 @@ Files and folders carry an `etag`. Send it back to stay in sync with Box
26
26
  (Box's [Ensure consistency](https://developer.box.com/guides/api-calls/ensure-consistency/)
27
27
  guide):
28
28
 
29
- - **Reads** — a file or folder `get`, and each shared-item lookup, has an
29
+ - **Reads** — a file, folder, or web link `get`, and each shared-item lookup, has an
30
30
  `…IfModified` variant that takes the stored etag, sends it as
31
31
  `If-None-Match`, and returns `undefined` when Box answers `304 Not Modified`:
32
32
  keep your cached copy. (The plain method surfaces that 304 as the error
33
33
  above if you set `if-none-match` on it yourself.)
34
- - **Writes** — pass the etag as `'if-match'` on a file or folder update or
34
+ - **Writes** — pass the etag as `'if-match'` on a file, folder, or web link update or
35
35
  delete, or a new file version upload. Box answers `412 Precondition
36
36
  Failed` (code `precondition_failed`) when the item changed since you read
37
- it: read it again, reapply your change, retry. `If-Match` can't block a move.
37
+ it, and `runtime.isPreconditionFailed(err)` reports it: read it again,
38
+ reapply your change, retry. `If-Match` can't block a move.
38
39
 
39
40
  ```ts
40
41
  const file = await client.files.getIfModified(fileId, etag);
41
42
  if (file === undefined) {
42
43
  // unchanged since etag
43
44
  }
44
- try {
45
- await client.files.update(fileId, body, { 'if-match': etag });
46
- } catch (err) {
47
- if (err instanceof runtime.BoxApiError && err.status === 412) {
48
- // changed since etag: re-read and retry
45
+
46
+ // Re-read and retry: the update lands only on the version it was made from.
47
+ for (let attempt = 1; ; attempt++) {
48
+ try {
49
+ await client.files.update(fileId, body, { 'if-match': etag });
50
+ break;
51
+ } catch (err) {
52
+ if (!runtime.isPreconditionFailed(err) || attempt === 3) throw err;
53
+ const current = await client.files.get(fileId);
54
+ etag = current.etag ?? undefined; // reapply your change to current here
49
55
  }
50
56
  }
51
57
  ```