digital-tools 2.0.1

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 (452) hide show
  1. package/.turbo/turbo-build.log +5 -0
  2. package/CHANGELOG.md +9 -0
  3. package/README.md +1144 -0
  4. package/dist/define.d.ts +109 -0
  5. package/dist/define.d.ts.map +1 -0
  6. package/dist/define.js +268 -0
  7. package/dist/define.js.map +1 -0
  8. package/dist/entities/advertising.d.ts +79 -0
  9. package/dist/entities/advertising.d.ts.map +1 -0
  10. package/dist/entities/advertising.js +1000 -0
  11. package/dist/entities/advertising.js.map +1 -0
  12. package/dist/entities/ai.d.ts +69 -0
  13. package/dist/entities/ai.d.ts.map +1 -0
  14. package/dist/entities/ai.js +757 -0
  15. package/dist/entities/ai.js.map +1 -0
  16. package/dist/entities/analytics.d.ts +83 -0
  17. package/dist/entities/analytics.d.ts.map +1 -0
  18. package/dist/entities/analytics.js +1589 -0
  19. package/dist/entities/analytics.js.map +1 -0
  20. package/dist/entities/automation.d.ts +61 -0
  21. package/dist/entities/automation.d.ts.map +1 -0
  22. package/dist/entities/automation.js +602 -0
  23. package/dist/entities/automation.js.map +1 -0
  24. package/dist/entities/communication.d.ts +96 -0
  25. package/dist/entities/communication.d.ts.map +1 -0
  26. package/dist/entities/communication.js +1151 -0
  27. package/dist/entities/communication.js.map +1 -0
  28. package/dist/entities/crm.d.ts +91 -0
  29. package/dist/entities/crm.d.ts.map +1 -0
  30. package/dist/entities/crm.js +1387 -0
  31. package/dist/entities/crm.js.map +1 -0
  32. package/dist/entities/design.d.ts +61 -0
  33. package/dist/entities/design.d.ts.map +1 -0
  34. package/dist/entities/design.js +547 -0
  35. package/dist/entities/design.js.map +1 -0
  36. package/dist/entities/development.d.ts +145 -0
  37. package/dist/entities/development.d.ts.map +1 -0
  38. package/dist/entities/development.js +2213 -0
  39. package/dist/entities/development.js.map +1 -0
  40. package/dist/entities/document.d.ts +54 -0
  41. package/dist/entities/document.d.ts.map +1 -0
  42. package/dist/entities/document.js +875 -0
  43. package/dist/entities/document.js.map +1 -0
  44. package/dist/entities/ecommerce.d.ts +93 -0
  45. package/dist/entities/ecommerce.d.ts.map +1 -0
  46. package/dist/entities/ecommerce.js +1430 -0
  47. package/dist/entities/ecommerce.js.map +1 -0
  48. package/dist/entities/experiment.d.ts +89 -0
  49. package/dist/entities/experiment.d.ts.map +1 -0
  50. package/dist/entities/experiment.js +1040 -0
  51. package/dist/entities/experiment.js.map +1 -0
  52. package/dist/entities/finance.d.ts +272 -0
  53. package/dist/entities/finance.d.ts.map +1 -0
  54. package/dist/entities/finance.js +3479 -0
  55. package/dist/entities/finance.js.map +1 -0
  56. package/dist/entities/forms.d.ts +91 -0
  57. package/dist/entities/forms.d.ts.map +1 -0
  58. package/dist/entities/forms.js +1893 -0
  59. package/dist/entities/forms.js.map +1 -0
  60. package/dist/entities/hr.d.ts +62 -0
  61. package/dist/entities/hr.d.ts.map +1 -0
  62. package/dist/entities/hr.js +662 -0
  63. package/dist/entities/hr.js.map +1 -0
  64. package/dist/entities/identity.d.ts +90 -0
  65. package/dist/entities/identity.d.ts.map +1 -0
  66. package/dist/entities/identity.js +998 -0
  67. package/dist/entities/identity.js.map +1 -0
  68. package/dist/entities/index.d.ts +410 -0
  69. package/dist/entities/index.d.ts.map +1 -0
  70. package/dist/entities/index.js +283 -0
  71. package/dist/entities/index.js.map +1 -0
  72. package/dist/entities/infrastructure.d.ts +98 -0
  73. package/dist/entities/infrastructure.d.ts.map +1 -0
  74. package/dist/entities/infrastructure.js +1154 -0
  75. package/dist/entities/infrastructure.js.map +1 -0
  76. package/dist/entities/knowledge.d.ts +98 -0
  77. package/dist/entities/knowledge.d.ts.map +1 -0
  78. package/dist/entities/knowledge.js +1439 -0
  79. package/dist/entities/knowledge.js.map +1 -0
  80. package/dist/entities/marketing.d.ts +82 -0
  81. package/dist/entities/marketing.d.ts.map +1 -0
  82. package/dist/entities/marketing.js +1611 -0
  83. package/dist/entities/marketing.js.map +1 -0
  84. package/dist/entities/media.d.ts +83 -0
  85. package/dist/entities/media.d.ts.map +1 -0
  86. package/dist/entities/media.js +1635 -0
  87. package/dist/entities/media.js.map +1 -0
  88. package/dist/entities/notification.d.ts +76 -0
  89. package/dist/entities/notification.d.ts.map +1 -0
  90. package/dist/entities/notification.js +1200 -0
  91. package/dist/entities/notification.js.map +1 -0
  92. package/dist/entities/presentation.d.ts +61 -0
  93. package/dist/entities/presentation.d.ts.map +1 -0
  94. package/dist/entities/presentation.js +1275 -0
  95. package/dist/entities/presentation.js.map +1 -0
  96. package/dist/entities/productivity.d.ts +92 -0
  97. package/dist/entities/productivity.d.ts.map +1 -0
  98. package/dist/entities/productivity.js +1318 -0
  99. package/dist/entities/productivity.js.map +1 -0
  100. package/dist/entities/project-management.d.ts +89 -0
  101. package/dist/entities/project-management.d.ts.map +1 -0
  102. package/dist/entities/project-management.js +1137 -0
  103. package/dist/entities/project-management.js.map +1 -0
  104. package/dist/entities/recruiting.d.ts +54 -0
  105. package/dist/entities/recruiting.d.ts.map +1 -0
  106. package/dist/entities/recruiting.js +737 -0
  107. package/dist/entities/recruiting.js.map +1 -0
  108. package/dist/entities/shipping.d.ts +52 -0
  109. package/dist/entities/shipping.d.ts.map +1 -0
  110. package/dist/entities/shipping.js +510 -0
  111. package/dist/entities/shipping.js.map +1 -0
  112. package/dist/entities/signature.d.ts +83 -0
  113. package/dist/entities/signature.d.ts.map +1 -0
  114. package/dist/entities/signature.js +1103 -0
  115. package/dist/entities/signature.js.map +1 -0
  116. package/dist/entities/site.d.ts +33 -0
  117. package/dist/entities/site.d.ts.map +1 -0
  118. package/dist/entities/site.js +223 -0
  119. package/dist/entities/site.js.map +1 -0
  120. package/dist/entities/spreadsheet.d.ts +68 -0
  121. package/dist/entities/spreadsheet.d.ts.map +1 -0
  122. package/dist/entities/spreadsheet.js +1342 -0
  123. package/dist/entities/spreadsheet.js.map +1 -0
  124. package/dist/entities/storage.d.ts +74 -0
  125. package/dist/entities/storage.d.ts.map +1 -0
  126. package/dist/entities/storage.js +1199 -0
  127. package/dist/entities/storage.js.map +1 -0
  128. package/dist/entities/support.d.ts +83 -0
  129. package/dist/entities/support.d.ts.map +1 -0
  130. package/dist/entities/support.js +1167 -0
  131. package/dist/entities/support.js.map +1 -0
  132. package/dist/entities/video-conferencing.d.ts +129 -0
  133. package/dist/entities/video-conferencing.d.ts.map +1 -0
  134. package/dist/entities/video-conferencing.js +1751 -0
  135. package/dist/entities/video-conferencing.js.map +1 -0
  136. package/dist/entities/video.d.ts +76 -0
  137. package/dist/entities/video.d.ts.map +1 -0
  138. package/dist/entities/video.js +951 -0
  139. package/dist/entities/video.js.map +1 -0
  140. package/dist/entities.d.ts +147 -0
  141. package/dist/entities.d.ts.map +1 -0
  142. package/dist/entities.js +1664 -0
  143. package/dist/entities.js.map +1 -0
  144. package/dist/index.d.ts +29 -0
  145. package/dist/index.d.ts.map +1 -0
  146. package/dist/index.js +75 -0
  147. package/dist/index.js.map +1 -0
  148. package/dist/providers/analytics/index.d.ts +19 -0
  149. package/dist/providers/analytics/index.d.ts.map +1 -0
  150. package/dist/providers/analytics/index.js +18 -0
  151. package/dist/providers/analytics/index.js.map +1 -0
  152. package/dist/providers/analytics/mixpanel.d.ts +25 -0
  153. package/dist/providers/analytics/mixpanel.d.ts.map +1 -0
  154. package/dist/providers/analytics/mixpanel.js +256 -0
  155. package/dist/providers/analytics/mixpanel.js.map +1 -0
  156. package/dist/providers/calendar/cal-com.d.ts +26 -0
  157. package/dist/providers/calendar/cal-com.d.ts.map +1 -0
  158. package/dist/providers/calendar/cal-com.js +304 -0
  159. package/dist/providers/calendar/cal-com.js.map +1 -0
  160. package/dist/providers/calendar/google-calendar.d.ts +25 -0
  161. package/dist/providers/calendar/google-calendar.d.ts.map +1 -0
  162. package/dist/providers/calendar/google-calendar.js +336 -0
  163. package/dist/providers/calendar/google-calendar.js.map +1 -0
  164. package/dist/providers/calendar/index.d.ts +20 -0
  165. package/dist/providers/calendar/index.d.ts.map +1 -0
  166. package/dist/providers/calendar/index.js +21 -0
  167. package/dist/providers/calendar/index.js.map +1 -0
  168. package/dist/providers/crm/hubspot.d.ts +25 -0
  169. package/dist/providers/crm/hubspot.d.ts.map +1 -0
  170. package/dist/providers/crm/hubspot.js +567 -0
  171. package/dist/providers/crm/hubspot.js.map +1 -0
  172. package/dist/providers/crm/index.d.ts +19 -0
  173. package/dist/providers/crm/index.d.ts.map +1 -0
  174. package/dist/providers/crm/index.js +18 -0
  175. package/dist/providers/crm/index.js.map +1 -0
  176. package/dist/providers/development/github.d.ts +25 -0
  177. package/dist/providers/development/github.d.ts.map +1 -0
  178. package/dist/providers/development/github.js +473 -0
  179. package/dist/providers/development/github.js.map +1 -0
  180. package/dist/providers/development/index.d.ts +19 -0
  181. package/dist/providers/development/index.d.ts.map +1 -0
  182. package/dist/providers/development/index.js +18 -0
  183. package/dist/providers/development/index.js.map +1 -0
  184. package/dist/providers/ecommerce/index.d.ts +19 -0
  185. package/dist/providers/ecommerce/index.d.ts.map +1 -0
  186. package/dist/providers/ecommerce/index.js +18 -0
  187. package/dist/providers/ecommerce/index.js.map +1 -0
  188. package/dist/providers/ecommerce/shopify.d.ts +25 -0
  189. package/dist/providers/ecommerce/shopify.d.ts.map +1 -0
  190. package/dist/providers/ecommerce/shopify.js +379 -0
  191. package/dist/providers/ecommerce/shopify.js.map +1 -0
  192. package/dist/providers/email/index.d.ts +20 -0
  193. package/dist/providers/email/index.d.ts.map +1 -0
  194. package/dist/providers/email/index.js +21 -0
  195. package/dist/providers/email/index.js.map +1 -0
  196. package/dist/providers/email/resend.d.ts +25 -0
  197. package/dist/providers/email/resend.d.ts.map +1 -0
  198. package/dist/providers/email/resend.js +259 -0
  199. package/dist/providers/email/resend.js.map +1 -0
  200. package/dist/providers/email/sendgrid.d.ts +25 -0
  201. package/dist/providers/email/sendgrid.d.ts.map +1 -0
  202. package/dist/providers/email/sendgrid.js +162 -0
  203. package/dist/providers/email/sendgrid.js.map +1 -0
  204. package/dist/providers/finance/index.d.ts +19 -0
  205. package/dist/providers/finance/index.d.ts.map +1 -0
  206. package/dist/providers/finance/index.js +18 -0
  207. package/dist/providers/finance/index.js.map +1 -0
  208. package/dist/providers/finance/stripe.d.ts +25 -0
  209. package/dist/providers/finance/stripe.d.ts.map +1 -0
  210. package/dist/providers/finance/stripe.js +550 -0
  211. package/dist/providers/finance/stripe.js.map +1 -0
  212. package/dist/providers/forms/index.d.ts +19 -0
  213. package/dist/providers/forms/index.d.ts.map +1 -0
  214. package/dist/providers/forms/index.js +18 -0
  215. package/dist/providers/forms/index.js.map +1 -0
  216. package/dist/providers/forms/typeform.d.ts +25 -0
  217. package/dist/providers/forms/typeform.d.ts.map +1 -0
  218. package/dist/providers/forms/typeform.js +501 -0
  219. package/dist/providers/forms/typeform.js.map +1 -0
  220. package/dist/providers/index.d.ts +56 -0
  221. package/dist/providers/index.d.ts.map +1 -0
  222. package/dist/providers/index.js +124 -0
  223. package/dist/providers/index.js.map +1 -0
  224. package/dist/providers/knowledge/index.d.ts +19 -0
  225. package/dist/providers/knowledge/index.d.ts.map +1 -0
  226. package/dist/providers/knowledge/index.js +18 -0
  227. package/dist/providers/knowledge/index.js.map +1 -0
  228. package/dist/providers/knowledge/notion.d.ts +25 -0
  229. package/dist/providers/knowledge/notion.d.ts.map +1 -0
  230. package/dist/providers/knowledge/notion.js +390 -0
  231. package/dist/providers/knowledge/notion.js.map +1 -0
  232. package/dist/providers/marketing/index.d.ts +19 -0
  233. package/dist/providers/marketing/index.d.ts.map +1 -0
  234. package/dist/providers/marketing/index.js +18 -0
  235. package/dist/providers/marketing/index.js.map +1 -0
  236. package/dist/providers/marketing/mailchimp.d.ts +25 -0
  237. package/dist/providers/marketing/mailchimp.d.ts.map +1 -0
  238. package/dist/providers/marketing/mailchimp.js +444 -0
  239. package/dist/providers/marketing/mailchimp.js.map +1 -0
  240. package/dist/providers/media/cloudinary.d.ts +25 -0
  241. package/dist/providers/media/cloudinary.d.ts.map +1 -0
  242. package/dist/providers/media/cloudinary.js +319 -0
  243. package/dist/providers/media/cloudinary.js.map +1 -0
  244. package/dist/providers/media/index.d.ts +19 -0
  245. package/dist/providers/media/index.d.ts.map +1 -0
  246. package/dist/providers/media/index.js +18 -0
  247. package/dist/providers/media/index.js.map +1 -0
  248. package/dist/providers/messaging/index.d.ts +24 -0
  249. package/dist/providers/messaging/index.d.ts.map +1 -0
  250. package/dist/providers/messaging/index.js +21 -0
  251. package/dist/providers/messaging/index.js.map +1 -0
  252. package/dist/providers/messaging/slack.d.ts +25 -0
  253. package/dist/providers/messaging/slack.d.ts.map +1 -0
  254. package/dist/providers/messaging/slack.js +394 -0
  255. package/dist/providers/messaging/slack.js.map +1 -0
  256. package/dist/providers/messaging/twilio-sms.d.ts +25 -0
  257. package/dist/providers/messaging/twilio-sms.d.ts.map +1 -0
  258. package/dist/providers/messaging/twilio-sms.js +250 -0
  259. package/dist/providers/messaging/twilio-sms.js.map +1 -0
  260. package/dist/providers/project-management/index.d.ts +19 -0
  261. package/dist/providers/project-management/index.d.ts.map +1 -0
  262. package/dist/providers/project-management/index.js +18 -0
  263. package/dist/providers/project-management/index.js.map +1 -0
  264. package/dist/providers/project-management/linear.d.ts +25 -0
  265. package/dist/providers/project-management/linear.d.ts.map +1 -0
  266. package/dist/providers/project-management/linear.js +576 -0
  267. package/dist/providers/project-management/linear.js.map +1 -0
  268. package/dist/providers/registry.d.ts +41 -0
  269. package/dist/providers/registry.d.ts.map +1 -0
  270. package/dist/providers/registry.js +87 -0
  271. package/dist/providers/registry.js.map +1 -0
  272. package/dist/providers/spreadsheet/google-sheets.d.ts +25 -0
  273. package/dist/providers/spreadsheet/google-sheets.d.ts.map +1 -0
  274. package/dist/providers/spreadsheet/google-sheets.js +376 -0
  275. package/dist/providers/spreadsheet/google-sheets.js.map +1 -0
  276. package/dist/providers/spreadsheet/index.d.ts +20 -0
  277. package/dist/providers/spreadsheet/index.d.ts.map +1 -0
  278. package/dist/providers/spreadsheet/index.js +21 -0
  279. package/dist/providers/spreadsheet/index.js.map +1 -0
  280. package/dist/providers/spreadsheet/xlsx.d.ts +26 -0
  281. package/dist/providers/spreadsheet/xlsx.d.ts.map +1 -0
  282. package/dist/providers/spreadsheet/xlsx.js +424 -0
  283. package/dist/providers/spreadsheet/xlsx.js.map +1 -0
  284. package/dist/providers/storage/index.d.ts +30 -0
  285. package/dist/providers/storage/index.d.ts.map +1 -0
  286. package/dist/providers/storage/index.js +25 -0
  287. package/dist/providers/storage/index.js.map +1 -0
  288. package/dist/providers/storage/s3.d.ts +25 -0
  289. package/dist/providers/storage/s3.d.ts.map +1 -0
  290. package/dist/providers/storage/s3.js +420 -0
  291. package/dist/providers/storage/s3.js.map +1 -0
  292. package/dist/providers/support/index.d.ts +19 -0
  293. package/dist/providers/support/index.d.ts.map +1 -0
  294. package/dist/providers/support/index.js +18 -0
  295. package/dist/providers/support/index.js.map +1 -0
  296. package/dist/providers/support/zendesk.d.ts +25 -0
  297. package/dist/providers/support/zendesk.d.ts.map +1 -0
  298. package/dist/providers/support/zendesk.js +374 -0
  299. package/dist/providers/support/zendesk.js.map +1 -0
  300. package/dist/providers/tasks/index.d.ts +19 -0
  301. package/dist/providers/tasks/index.d.ts.map +1 -0
  302. package/dist/providers/tasks/index.js +18 -0
  303. package/dist/providers/tasks/index.js.map +1 -0
  304. package/dist/providers/tasks/todoist.d.ts +25 -0
  305. package/dist/providers/tasks/todoist.d.ts.map +1 -0
  306. package/dist/providers/tasks/todoist.js +287 -0
  307. package/dist/providers/tasks/todoist.js.map +1 -0
  308. package/dist/providers/types.d.ts +1753 -0
  309. package/dist/providers/types.d.ts.map +1 -0
  310. package/dist/providers/types.js +10 -0
  311. package/dist/providers/types.js.map +1 -0
  312. package/dist/providers/video-conferencing/google-meet.d.ts +26 -0
  313. package/dist/providers/video-conferencing/google-meet.d.ts.map +1 -0
  314. package/dist/providers/video-conferencing/google-meet.js +287 -0
  315. package/dist/providers/video-conferencing/google-meet.js.map +1 -0
  316. package/dist/providers/video-conferencing/index.d.ts +22 -0
  317. package/dist/providers/video-conferencing/index.d.ts.map +1 -0
  318. package/dist/providers/video-conferencing/index.js +32 -0
  319. package/dist/providers/video-conferencing/index.js.map +1 -0
  320. package/dist/providers/video-conferencing/jitsi.d.ts +26 -0
  321. package/dist/providers/video-conferencing/jitsi.d.ts.map +1 -0
  322. package/dist/providers/video-conferencing/jitsi.js +255 -0
  323. package/dist/providers/video-conferencing/jitsi.js.map +1 -0
  324. package/dist/providers/video-conferencing/teams.d.ts +26 -0
  325. package/dist/providers/video-conferencing/teams.d.ts.map +1 -0
  326. package/dist/providers/video-conferencing/teams.js +271 -0
  327. package/dist/providers/video-conferencing/teams.js.map +1 -0
  328. package/dist/providers/video-conferencing/zoom.d.ts +25 -0
  329. package/dist/providers/video-conferencing/zoom.d.ts.map +1 -0
  330. package/dist/providers/video-conferencing/zoom.js +333 -0
  331. package/dist/providers/video-conferencing/zoom.js.map +1 -0
  332. package/dist/providers/voice/vapi.d.ts +27 -0
  333. package/dist/providers/voice/vapi.d.ts.map +1 -0
  334. package/dist/providers/voice/vapi.js +440 -0
  335. package/dist/providers/voice/vapi.js.map +1 -0
  336. package/dist/registry.d.ts +38 -0
  337. package/dist/registry.d.ts.map +1 -0
  338. package/dist/registry.js +129 -0
  339. package/dist/registry.js.map +1 -0
  340. package/dist/tools/communication.d.ts +94 -0
  341. package/dist/tools/communication.d.ts.map +1 -0
  342. package/dist/tools/communication.js +185 -0
  343. package/dist/tools/communication.js.map +1 -0
  344. package/dist/tools/data.d.ts +61 -0
  345. package/dist/tools/data.d.ts.map +1 -0
  346. package/dist/tools/data.js +206 -0
  347. package/dist/tools/data.js.map +1 -0
  348. package/dist/tools/index.d.ts +12 -0
  349. package/dist/tools/index.d.ts.map +1 -0
  350. package/dist/tools/index.js +12 -0
  351. package/dist/tools/index.js.map +1 -0
  352. package/dist/tools/web.d.ts +45 -0
  353. package/dist/tools/web.d.ts.map +1 -0
  354. package/dist/tools/web.js +138 -0
  355. package/dist/tools/web.js.map +1 -0
  356. package/dist/types.d.ts +330 -0
  357. package/dist/types.d.ts.map +1 -0
  358. package/dist/types.js +11 -0
  359. package/dist/types.js.map +1 -0
  360. package/package.json +45 -0
  361. package/src/define.ts +321 -0
  362. package/src/entities/advertising.ts +1086 -0
  363. package/src/entities/ai.ts +835 -0
  364. package/src/entities/analytics.ts +1690 -0
  365. package/src/entities/automation.ts +669 -0
  366. package/src/entities/communication.ts +1255 -0
  367. package/src/entities/crm.ts +1481 -0
  368. package/src/entities/design.ts +606 -0
  369. package/src/entities/development.ts +2392 -0
  370. package/src/entities/document.ts +930 -0
  371. package/src/entities/ecommerce.ts +1539 -0
  372. package/src/entities/experiment.ts +1139 -0
  373. package/src/entities/finance.ts +3907 -0
  374. package/src/entities/forms.ts +2021 -0
  375. package/src/entities/hr.ts +725 -0
  376. package/src/entities/identity.ts +1093 -0
  377. package/src/entities/index.ts +731 -0
  378. package/src/entities/infrastructure.ts +1254 -0
  379. package/src/entities/knowledge.ts +1547 -0
  380. package/src/entities/marketing.ts +1718 -0
  381. package/src/entities/media.ts +1747 -0
  382. package/src/entities/notification.ts +1260 -0
  383. package/src/entities/presentation.ts +1360 -0
  384. package/src/entities/productivity.ts +1411 -0
  385. package/src/entities/project-management.ts +1222 -0
  386. package/src/entities/recruiting.ts +797 -0
  387. package/src/entities/shipping.ts +566 -0
  388. package/src/entities/signature.ts +1204 -0
  389. package/src/entities/site.ts +244 -0
  390. package/src/entities/spreadsheet.ts +1434 -0
  391. package/src/entities/storage.ts +1290 -0
  392. package/src/entities/support.ts +1267 -0
  393. package/src/entities/video-conferencing.ts +1874 -0
  394. package/src/entities/video.ts +1035 -0
  395. package/src/entities.ts +1795 -0
  396. package/src/index.ts +176 -0
  397. package/src/providers/analytics/index.ts +21 -0
  398. package/src/providers/analytics/mixpanel.ts +311 -0
  399. package/src/providers/calendar/cal-com.ts +435 -0
  400. package/src/providers/calendar/google-calendar.ts +412 -0
  401. package/src/providers/calendar/index.ts +24 -0
  402. package/src/providers/crm/hubspot.ts +667 -0
  403. package/src/providers/crm/index.ts +21 -0
  404. package/src/providers/development/github.ts +608 -0
  405. package/src/providers/development/index.ts +21 -0
  406. package/src/providers/ecommerce/index.ts +21 -0
  407. package/src/providers/ecommerce/shopify.ts +451 -0
  408. package/src/providers/email/index.ts +24 -0
  409. package/src/providers/email/resend.ts +301 -0
  410. package/src/providers/email/sendgrid.ts +196 -0
  411. package/src/providers/finance/index.ts +21 -0
  412. package/src/providers/finance/stripe.ts +665 -0
  413. package/src/providers/forms/index.ts +21 -0
  414. package/src/providers/forms/typeform.ts +598 -0
  415. package/src/providers/index.ts +281 -0
  416. package/src/providers/knowledge/index.ts +21 -0
  417. package/src/providers/knowledge/notion.ts +497 -0
  418. package/src/providers/marketing/index.ts +21 -0
  419. package/src/providers/marketing/mailchimp.ts +656 -0
  420. package/src/providers/media/cloudinary.ts +373 -0
  421. package/src/providers/media/index.ts +21 -0
  422. package/src/providers/messaging/index.ts +24 -0
  423. package/src/providers/messaging/slack.ts +487 -0
  424. package/src/providers/messaging/twilio-sms.ts +301 -0
  425. package/src/providers/project-management/index.ts +21 -0
  426. package/src/providers/project-management/linear.ts +693 -0
  427. package/src/providers/registry.ts +119 -0
  428. package/src/providers/spreadsheet/google-sheets.ts +464 -0
  429. package/src/providers/spreadsheet/index.ts +24 -0
  430. package/src/providers/spreadsheet/xlsx.ts +542 -0
  431. package/src/providers/storage/index.ts +35 -0
  432. package/src/providers/storage/s3.ts +513 -0
  433. package/src/providers/support/index.ts +21 -0
  434. package/src/providers/support/zendesk.ts +417 -0
  435. package/src/providers/tasks/index.ts +21 -0
  436. package/src/providers/tasks/todoist.ts +407 -0
  437. package/src/providers/types.ts +2113 -0
  438. package/src/providers/video-conferencing/google-meet.ts +412 -0
  439. package/src/providers/video-conferencing/index.ts +35 -0
  440. package/src/providers/video-conferencing/jitsi.ts +324 -0
  441. package/src/providers/video-conferencing/teams.ts +408 -0
  442. package/src/providers/video-conferencing/zoom.ts +451 -0
  443. package/src/registry.ts +172 -0
  444. package/src/tools/communication.ts +256 -0
  445. package/src/tools/data.ts +236 -0
  446. package/src/tools/index.ts +12 -0
  447. package/src/tools/web.ts +161 -0
  448. package/src/types.ts +539 -0
  449. package/test/define.test.ts +367 -0
  450. package/test/registry.test.ts +444 -0
  451. package/test/tools.test.ts +453 -0
  452. package/tsconfig.json +20 -0
@@ -0,0 +1,1290 @@
1
+ /**
2
+ * Storage & Files Entity Types (Nouns)
3
+ *
4
+ * Semantic type definitions for file storage and cloud drive tools.
5
+ * Each entity defines properties, relationships, actions, and events
6
+ * for working with files, folders, drives, sharing, versioning, and backups.
7
+ *
8
+ * @packageDocumentation
9
+ */
10
+
11
+ import type { Noun, NounProperty, NounRelationship, Verb } from 'ai-database'
12
+
13
+ // =============================================================================
14
+ // File
15
+ // =============================================================================
16
+
17
+ /**
18
+ * File entity
19
+ *
20
+ * Represents a file with metadata, permissions, and version control
21
+ */
22
+ export const File: Noun = {
23
+ singular: 'file',
24
+ plural: 'files',
25
+ description: 'A file stored in a filesystem or cloud drive',
26
+
27
+ properties: {
28
+ // Identity
29
+ name: {
30
+ type: 'string',
31
+ description: 'File name including extension',
32
+ },
33
+ path: {
34
+ type: 'string',
35
+ description: 'Full path to the file',
36
+ },
37
+ extension: {
38
+ type: 'string',
39
+ optional: true,
40
+ description: 'File extension (e.g., pdf, jpg, docx)',
41
+ },
42
+
43
+ // Content
44
+ size: {
45
+ type: 'number',
46
+ description: 'File size in bytes',
47
+ },
48
+ mimeType: {
49
+ type: 'string',
50
+ description: 'MIME type of the file',
51
+ },
52
+ hash: {
53
+ type: 'string',
54
+ optional: true,
55
+ description: 'Content hash (MD5, SHA256, etc.) for integrity verification',
56
+ },
57
+ encoding: {
58
+ type: 'string',
59
+ optional: true,
60
+ description: 'Character encoding for text files',
61
+ },
62
+
63
+ // Metadata
64
+ type: {
65
+ type: 'string',
66
+ description: 'File type category: document, image, video, audio, archive, code, other',
67
+ examples: ['document', 'image', 'video', 'audio', 'archive', 'code', 'other'],
68
+ },
69
+ description: {
70
+ type: 'string',
71
+ optional: true,
72
+ description: 'File description or notes',
73
+ },
74
+ tags: {
75
+ type: 'string',
76
+ array: true,
77
+ optional: true,
78
+ description: 'Tags or labels for organization',
79
+ },
80
+
81
+ // Permissions
82
+ permissions: {
83
+ type: 'json',
84
+ optional: true,
85
+ description: 'File permissions (read, write, execute)',
86
+ },
87
+ visibility: {
88
+ type: 'string',
89
+ optional: true,
90
+ description: 'Visibility level: private, shared, public',
91
+ examples: ['private', 'shared', 'public'],
92
+ },
93
+ owner: {
94
+ type: 'string',
95
+ optional: true,
96
+ description: 'File owner user ID',
97
+ },
98
+
99
+ // Status
100
+ status: {
101
+ type: 'string',
102
+ optional: true,
103
+ description: 'File status: active, archived, deleted, quarantined',
104
+ examples: ['active', 'archived', 'deleted', 'quarantined'],
105
+ },
106
+ starred: {
107
+ type: 'boolean',
108
+ optional: true,
109
+ description: 'Whether the file is starred/favorited',
110
+ },
111
+ locked: {
112
+ type: 'boolean',
113
+ optional: true,
114
+ description: 'Whether the file is locked from editing',
115
+ },
116
+
117
+ // URLs
118
+ url: {
119
+ type: 'url',
120
+ optional: true,
121
+ description: 'URL to access/download the file',
122
+ },
123
+ thumbnailUrl: {
124
+ type: 'url',
125
+ optional: true,
126
+ description: 'URL to a thumbnail preview',
127
+ },
128
+ webViewUrl: {
129
+ type: 'url',
130
+ optional: true,
131
+ description: 'URL to view the file in a web browser',
132
+ },
133
+
134
+ // Dates
135
+ createdAt: {
136
+ type: 'datetime',
137
+ optional: true,
138
+ description: 'When the file was created',
139
+ },
140
+ modifiedAt: {
141
+ type: 'datetime',
142
+ optional: true,
143
+ description: 'When the file was last modified',
144
+ },
145
+ accessedAt: {
146
+ type: 'datetime',
147
+ optional: true,
148
+ description: 'When the file was last accessed',
149
+ },
150
+ },
151
+
152
+ relationships: {
153
+ folder: {
154
+ type: 'Folder',
155
+ backref: 'files',
156
+ description: 'Parent folder containing this file',
157
+ },
158
+ drive: {
159
+ type: 'Drive',
160
+ description: 'Drive where this file is stored',
161
+ },
162
+ versions: {
163
+ type: 'FileVersion[]',
164
+ backref: 'file',
165
+ description: 'Version history of this file',
166
+ },
167
+ sharedLinks: {
168
+ type: 'SharedLink[]',
169
+ backref: 'file',
170
+ description: 'Sharing links for this file',
171
+ },
172
+ owner: {
173
+ type: 'Contact',
174
+ description: 'Owner of the file',
175
+ },
176
+ collaborators: {
177
+ type: 'Contact[]',
178
+ description: 'People with access to the file',
179
+ },
180
+ },
181
+
182
+ actions: [
183
+ 'create',
184
+ 'upload',
185
+ 'download',
186
+ 'open',
187
+ 'edit',
188
+ 'save',
189
+ 'copy',
190
+ 'move',
191
+ 'rename',
192
+ 'delete',
193
+ 'restore',
194
+ 'share',
195
+ 'unshare',
196
+ 'star',
197
+ 'unstar',
198
+ 'lock',
199
+ 'unlock',
200
+ 'tag',
201
+ 'untag',
202
+ 'preview',
203
+ 'compress',
204
+ 'decompress',
205
+ 'encrypt',
206
+ 'decrypt',
207
+ ],
208
+
209
+ events: [
210
+ 'created',
211
+ 'uploaded',
212
+ 'downloaded',
213
+ 'opened',
214
+ 'edited',
215
+ 'saved',
216
+ 'copied',
217
+ 'moved',
218
+ 'renamed',
219
+ 'deleted',
220
+ 'restored',
221
+ 'shared',
222
+ 'unshared',
223
+ 'starred',
224
+ 'unstarred',
225
+ 'locked',
226
+ 'unlocked',
227
+ 'tagged',
228
+ 'untagged',
229
+ 'previewed',
230
+ 'compressed',
231
+ 'decompressed',
232
+ 'encrypted',
233
+ 'decrypted',
234
+ 'virusScanned',
235
+ 'quarantined',
236
+ ],
237
+ }
238
+
239
+ // =============================================================================
240
+ // Folder
241
+ // =============================================================================
242
+
243
+ /**
244
+ * Folder/Directory entity
245
+ *
246
+ * Represents a folder or directory that can contain files and subfolders
247
+ */
248
+ export const Folder: Noun = {
249
+ singular: 'folder',
250
+ plural: 'folders',
251
+ description: 'A folder or directory containing files and subfolders',
252
+
253
+ properties: {
254
+ // Identity
255
+ name: {
256
+ type: 'string',
257
+ description: 'Folder name',
258
+ },
259
+ path: {
260
+ type: 'string',
261
+ description: 'Full path to the folder',
262
+ },
263
+
264
+ // Metadata
265
+ description: {
266
+ type: 'string',
267
+ optional: true,
268
+ description: 'Folder description or purpose',
269
+ },
270
+ color: {
271
+ type: 'string',
272
+ optional: true,
273
+ description: 'Folder color for visual organization',
274
+ },
275
+ icon: {
276
+ type: 'string',
277
+ optional: true,
278
+ description: 'Folder icon identifier',
279
+ },
280
+
281
+ // Content stats
282
+ fileCount: {
283
+ type: 'number',
284
+ optional: true,
285
+ description: 'Number of files directly in this folder',
286
+ },
287
+ folderCount: {
288
+ type: 'number',
289
+ optional: true,
290
+ description: 'Number of subfolders',
291
+ },
292
+ totalSize: {
293
+ type: 'number',
294
+ optional: true,
295
+ description: 'Total size of all contents in bytes',
296
+ },
297
+
298
+ // Permissions
299
+ permissions: {
300
+ type: 'json',
301
+ optional: true,
302
+ description: 'Folder permissions',
303
+ },
304
+ visibility: {
305
+ type: 'string',
306
+ optional: true,
307
+ description: 'Visibility level: private, shared, public',
308
+ examples: ['private', 'shared', 'public'],
309
+ },
310
+ owner: {
311
+ type: 'string',
312
+ optional: true,
313
+ description: 'Folder owner user ID',
314
+ },
315
+
316
+ // Status
317
+ starred: {
318
+ type: 'boolean',
319
+ optional: true,
320
+ description: 'Whether the folder is starred/favorited',
321
+ },
322
+ pinned: {
323
+ type: 'boolean',
324
+ optional: true,
325
+ description: 'Whether the folder is pinned for quick access',
326
+ },
327
+ archived: {
328
+ type: 'boolean',
329
+ optional: true,
330
+ description: 'Whether the folder is archived',
331
+ },
332
+
333
+ // URLs
334
+ url: {
335
+ type: 'url',
336
+ optional: true,
337
+ description: 'URL to access the folder',
338
+ },
339
+ webViewUrl: {
340
+ type: 'url',
341
+ optional: true,
342
+ description: 'URL to view the folder in a web browser',
343
+ },
344
+
345
+ // Dates
346
+ createdAt: {
347
+ type: 'datetime',
348
+ optional: true,
349
+ description: 'When the folder was created',
350
+ },
351
+ modifiedAt: {
352
+ type: 'datetime',
353
+ optional: true,
354
+ description: 'When the folder contents were last modified',
355
+ },
356
+ },
357
+
358
+ relationships: {
359
+ parentFolder: {
360
+ type: 'Folder',
361
+ backref: 'subfolders',
362
+ required: false,
363
+ description: 'Parent folder (null for root)',
364
+ },
365
+ subfolders: {
366
+ type: 'Folder[]',
367
+ backref: 'parentFolder',
368
+ description: 'Subfolders within this folder',
369
+ },
370
+ files: {
371
+ type: 'File[]',
372
+ backref: 'folder',
373
+ description: 'Files within this folder',
374
+ },
375
+ drive: {
376
+ type: 'Drive',
377
+ description: 'Drive where this folder is stored',
378
+ },
379
+ sharedLinks: {
380
+ type: 'SharedLink[]',
381
+ backref: 'folder',
382
+ description: 'Sharing links for this folder',
383
+ },
384
+ owner: {
385
+ type: 'Contact',
386
+ description: 'Owner of the folder',
387
+ },
388
+ collaborators: {
389
+ type: 'Contact[]',
390
+ description: 'People with access to the folder',
391
+ },
392
+ },
393
+
394
+ actions: [
395
+ 'create',
396
+ 'rename',
397
+ 'move',
398
+ 'copy',
399
+ 'delete',
400
+ 'restore',
401
+ 'share',
402
+ 'unshare',
403
+ 'star',
404
+ 'unstar',
405
+ 'pin',
406
+ 'unpin',
407
+ 'archive',
408
+ 'unarchive',
409
+ 'compress',
410
+ 'sync',
411
+ ],
412
+
413
+ events: [
414
+ 'created',
415
+ 'renamed',
416
+ 'moved',
417
+ 'copied',
418
+ 'deleted',
419
+ 'restored',
420
+ 'shared',
421
+ 'unshared',
422
+ 'starred',
423
+ 'unstarred',
424
+ 'pinned',
425
+ 'unpinned',
426
+ 'archived',
427
+ 'unarchived',
428
+ 'compressed',
429
+ 'synced',
430
+ ],
431
+ }
432
+
433
+ // =============================================================================
434
+ // Drive
435
+ // =============================================================================
436
+
437
+ /**
438
+ * Cloud drive entity
439
+ *
440
+ * Represents a cloud storage drive (Google Drive, Dropbox, OneDrive, etc.)
441
+ */
442
+ export const Drive: Noun = {
443
+ singular: 'drive',
444
+ plural: 'drives',
445
+ description: 'A cloud storage drive or filesystem root',
446
+
447
+ properties: {
448
+ // Identity
449
+ name: {
450
+ type: 'string',
451
+ description: 'Drive name',
452
+ },
453
+ type: {
454
+ type: 'string',
455
+ description: 'Drive type: personal, shared, team, external, system',
456
+ examples: ['personal', 'shared', 'team', 'external', 'system'],
457
+ },
458
+ provider: {
459
+ type: 'string',
460
+ optional: true,
461
+ description: 'Cloud provider: google-drive, dropbox, onedrive, box, s3',
462
+ examples: ['google-drive', 'dropbox', 'onedrive', 'box', 's3', 'local'],
463
+ },
464
+
465
+ // Metadata
466
+ description: {
467
+ type: 'string',
468
+ optional: true,
469
+ description: 'Drive description or purpose',
470
+ },
471
+ icon: {
472
+ type: 'url',
473
+ optional: true,
474
+ description: 'Drive icon URL',
475
+ },
476
+
477
+ // Capacity
478
+ totalCapacity: {
479
+ type: 'number',
480
+ optional: true,
481
+ description: 'Total storage capacity in bytes',
482
+ },
483
+ usedSpace: {
484
+ type: 'number',
485
+ optional: true,
486
+ description: 'Used storage space in bytes',
487
+ },
488
+ availableSpace: {
489
+ type: 'number',
490
+ optional: true,
491
+ description: 'Available storage space in bytes',
492
+ },
493
+
494
+ // Permissions
495
+ owner: {
496
+ type: 'string',
497
+ optional: true,
498
+ description: 'Drive owner user ID',
499
+ },
500
+ permissions: {
501
+ type: 'json',
502
+ optional: true,
503
+ description: 'Drive-level permissions',
504
+ },
505
+
506
+ // Features
507
+ features: {
508
+ type: 'string',
509
+ array: true,
510
+ optional: true,
511
+ description: 'Supported features: versioning, sharing, sync, encryption, backup',
512
+ examples: ['versioning', 'sharing', 'sync', 'encryption', 'backup'],
513
+ },
514
+ versioningEnabled: {
515
+ type: 'boolean',
516
+ optional: true,
517
+ description: 'Whether version history is enabled',
518
+ },
519
+ encryptionEnabled: {
520
+ type: 'boolean',
521
+ optional: true,
522
+ description: 'Whether encryption is enabled',
523
+ },
524
+
525
+ // Status
526
+ status: {
527
+ type: 'string',
528
+ optional: true,
529
+ description: 'Drive status: active, readonly, suspended, error',
530
+ examples: ['active', 'readonly', 'suspended', 'error'],
531
+ },
532
+ connected: {
533
+ type: 'boolean',
534
+ optional: true,
535
+ description: 'Whether the drive is currently connected/accessible',
536
+ },
537
+
538
+ // URLs
539
+ url: {
540
+ type: 'url',
541
+ optional: true,
542
+ description: 'URL to access the drive',
543
+ },
544
+ webViewUrl: {
545
+ type: 'url',
546
+ optional: true,
547
+ description: 'URL to view the drive in a web browser',
548
+ },
549
+
550
+ // Dates
551
+ createdAt: {
552
+ type: 'datetime',
553
+ optional: true,
554
+ description: 'When the drive was created',
555
+ },
556
+ lastSyncedAt: {
557
+ type: 'datetime',
558
+ optional: true,
559
+ description: 'When the drive was last synced',
560
+ },
561
+ },
562
+
563
+ relationships: {
564
+ rootFolder: {
565
+ type: 'Folder',
566
+ description: 'Root folder of the drive',
567
+ },
568
+ quota: {
569
+ type: 'StorageQuota',
570
+ backref: 'drive',
571
+ description: 'Storage quota for this drive',
572
+ },
573
+ syncs: {
574
+ type: 'Sync[]',
575
+ backref: 'drive',
576
+ description: 'Sync operations for this drive',
577
+ },
578
+ backups: {
579
+ type: 'Backup[]',
580
+ backref: 'drive',
581
+ description: 'Backups of this drive',
582
+ },
583
+ owner: {
584
+ type: 'Contact',
585
+ description: 'Owner of the drive',
586
+ },
587
+ members: {
588
+ type: 'Contact[]',
589
+ description: 'Members with access to the drive',
590
+ },
591
+ },
592
+
593
+ actions: [
594
+ 'create',
595
+ 'connect',
596
+ 'disconnect',
597
+ 'sync',
598
+ 'configure',
599
+ 'delete',
600
+ 'share',
601
+ 'unshare',
602
+ 'backup',
603
+ 'restore',
604
+ 'checkQuota',
605
+ 'cleanUp',
606
+ ],
607
+
608
+ events: [
609
+ 'created',
610
+ 'connected',
611
+ 'disconnected',
612
+ 'synced',
613
+ 'configured',
614
+ 'deleted',
615
+ 'shared',
616
+ 'unshared',
617
+ 'backedUp',
618
+ 'restored',
619
+ 'quotaExceeded',
620
+ 'quotaWarning',
621
+ 'error',
622
+ ],
623
+ }
624
+
625
+ // =============================================================================
626
+ // SharedLink
627
+ // =============================================================================
628
+
629
+ /**
630
+ * Shared link entity
631
+ *
632
+ * Represents a sharing link with permissions and expiry
633
+ */
634
+ export const SharedLink: Noun = {
635
+ singular: 'shared link',
636
+ plural: 'shared links',
637
+ description: 'A sharing link for files or folders',
638
+
639
+ properties: {
640
+ // Identity
641
+ token: {
642
+ type: 'string',
643
+ description: 'Unique sharing token/ID',
644
+ },
645
+ url: {
646
+ type: 'url',
647
+ description: 'Full sharing URL',
648
+ },
649
+
650
+ // Permissions
651
+ permissions: {
652
+ type: 'string',
653
+ description: 'Link permissions: view, comment, edit',
654
+ examples: ['view', 'comment', 'edit'],
655
+ },
656
+ passwordProtected: {
657
+ type: 'boolean',
658
+ optional: true,
659
+ description: 'Whether the link requires a password',
660
+ },
661
+ password: {
662
+ type: 'string',
663
+ optional: true,
664
+ description: 'Password required to access (if password protected)',
665
+ },
666
+
667
+ // Access control
668
+ allowedDomains: {
669
+ type: 'string',
670
+ array: true,
671
+ optional: true,
672
+ description: 'Email domains allowed to access (e.g., company.com)',
673
+ },
674
+ allowedUsers: {
675
+ type: 'string',
676
+ array: true,
677
+ optional: true,
678
+ description: 'Specific user IDs allowed to access',
679
+ },
680
+ maxAccessCount: {
681
+ type: 'number',
682
+ optional: true,
683
+ description: 'Maximum number of times link can be accessed',
684
+ },
685
+ accessCount: {
686
+ type: 'number',
687
+ optional: true,
688
+ description: 'Number of times link has been accessed',
689
+ },
690
+
691
+ // Expiration
692
+ expiresAt: {
693
+ type: 'datetime',
694
+ optional: true,
695
+ description: 'When the link expires',
696
+ },
697
+ expired: {
698
+ type: 'boolean',
699
+ optional: true,
700
+ description: 'Whether the link has expired',
701
+ },
702
+
703
+ // Status
704
+ active: {
705
+ type: 'boolean',
706
+ description: 'Whether the link is active',
707
+ },
708
+ revoked: {
709
+ type: 'boolean',
710
+ optional: true,
711
+ description: 'Whether the link has been revoked',
712
+ },
713
+
714
+ // Features
715
+ allowDownload: {
716
+ type: 'boolean',
717
+ optional: true,
718
+ description: 'Whether downloading is allowed',
719
+ },
720
+ notifyOnAccess: {
721
+ type: 'boolean',
722
+ optional: true,
723
+ description: 'Whether to notify owner when accessed',
724
+ },
725
+
726
+ // Metadata
727
+ label: {
728
+ type: 'string',
729
+ optional: true,
730
+ description: 'Custom label for the link',
731
+ },
732
+ description: {
733
+ type: 'string',
734
+ optional: true,
735
+ description: 'Description of what is being shared',
736
+ },
737
+
738
+ // Dates
739
+ createdAt: {
740
+ type: 'datetime',
741
+ optional: true,
742
+ description: 'When the link was created',
743
+ },
744
+ lastAccessedAt: {
745
+ type: 'datetime',
746
+ optional: true,
747
+ description: 'When the link was last accessed',
748
+ },
749
+ },
750
+
751
+ relationships: {
752
+ file: {
753
+ type: 'File',
754
+ backref: 'sharedLinks',
755
+ required: false,
756
+ description: 'File being shared (if sharing a file)',
757
+ },
758
+ folder: {
759
+ type: 'Folder',
760
+ backref: 'sharedLinks',
761
+ required: false,
762
+ description: 'Folder being shared (if sharing a folder)',
763
+ },
764
+ creator: {
765
+ type: 'Contact',
766
+ description: 'Who created the sharing link',
767
+ },
768
+ accessedBy: {
769
+ type: 'Contact[]',
770
+ description: 'Users who have accessed the link',
771
+ },
772
+ },
773
+
774
+ actions: [
775
+ 'create',
776
+ 'revoke',
777
+ 'extend',
778
+ 'updatePermissions',
779
+ 'setPassword',
780
+ 'removePassword',
781
+ 'copy',
782
+ 'delete',
783
+ ],
784
+
785
+ events: [
786
+ 'created',
787
+ 'accessed',
788
+ 'revoked',
789
+ 'extended',
790
+ 'permissionsUpdated',
791
+ 'passwordSet',
792
+ 'passwordRemoved',
793
+ 'expired',
794
+ 'deleted',
795
+ ],
796
+ }
797
+
798
+ // =============================================================================
799
+ // FileVersion
800
+ // =============================================================================
801
+
802
+ /**
803
+ * File version entity
804
+ *
805
+ * Represents a version in a file's version history
806
+ */
807
+ export const FileVersion: Noun = {
808
+ singular: 'file version',
809
+ plural: 'file versions',
810
+ description: 'A version snapshot in a file\'s version history',
811
+
812
+ properties: {
813
+ // Identity
814
+ versionNumber: {
815
+ type: 'number',
816
+ description: 'Version number (sequential)',
817
+ },
818
+ versionId: {
819
+ type: 'string',
820
+ optional: true,
821
+ description: 'Unique version identifier',
822
+ },
823
+ label: {
824
+ type: 'string',
825
+ optional: true,
826
+ description: 'Version label or tag (e.g., v1.0, final)',
827
+ },
828
+
829
+ // Content
830
+ size: {
831
+ type: 'number',
832
+ description: 'File size at this version in bytes',
833
+ },
834
+ hash: {
835
+ type: 'string',
836
+ optional: true,
837
+ description: 'Content hash for this version',
838
+ },
839
+
840
+ // Changes
841
+ changeDescription: {
842
+ type: 'string',
843
+ optional: true,
844
+ description: 'Description of changes in this version',
845
+ },
846
+ changeType: {
847
+ type: 'string',
848
+ optional: true,
849
+ description: 'Type of change: create, modify, rename, restore',
850
+ examples: ['create', 'modify', 'rename', 'restore'],
851
+ },
852
+
853
+ // Status
854
+ current: {
855
+ type: 'boolean',
856
+ optional: true,
857
+ description: 'Whether this is the current version',
858
+ },
859
+ pinned: {
860
+ type: 'boolean',
861
+ optional: true,
862
+ description: 'Whether this version is pinned to prevent deletion',
863
+ },
864
+
865
+ // Storage
866
+ url: {
867
+ type: 'url',
868
+ optional: true,
869
+ description: 'URL to download this version',
870
+ },
871
+ storagePath: {
872
+ type: 'string',
873
+ optional: true,
874
+ description: 'Storage path for this version',
875
+ },
876
+
877
+ // Dates
878
+ createdAt: {
879
+ type: 'datetime',
880
+ description: 'When this version was created',
881
+ },
882
+ expiresAt: {
883
+ type: 'datetime',
884
+ optional: true,
885
+ description: 'When this version expires (if retention policy applies)',
886
+ },
887
+ },
888
+
889
+ relationships: {
890
+ file: {
891
+ type: 'File',
892
+ backref: 'versions',
893
+ description: 'File this is a version of',
894
+ },
895
+ author: {
896
+ type: 'Contact',
897
+ description: 'Who created this version',
898
+ },
899
+ previousVersion: {
900
+ type: 'FileVersion',
901
+ required: false,
902
+ description: 'Previous version in the history',
903
+ },
904
+ },
905
+
906
+ actions: [
907
+ 'create',
908
+ 'restore',
909
+ 'download',
910
+ 'compare',
911
+ 'delete',
912
+ 'pin',
913
+ 'unpin',
914
+ 'label',
915
+ ],
916
+
917
+ events: [
918
+ 'created',
919
+ 'restored',
920
+ 'downloaded',
921
+ 'compared',
922
+ 'deleted',
923
+ 'pinned',
924
+ 'unpinned',
925
+ 'labeled',
926
+ 'expired',
927
+ ],
928
+ }
929
+
930
+ // =============================================================================
931
+ // StorageQuota
932
+ // =============================================================================
933
+
934
+ /**
935
+ * Storage quota entity
936
+ *
937
+ * Represents storage quota and usage tracking
938
+ */
939
+ export const StorageQuota: Noun = {
940
+ singular: 'storage quota',
941
+ plural: 'storage quotas',
942
+ description: 'Storage quota and usage tracking for a drive or account',
943
+
944
+ properties: {
945
+ // Capacity
946
+ total: {
947
+ type: 'number',
948
+ description: 'Total storage quota in bytes',
949
+ },
950
+ used: {
951
+ type: 'number',
952
+ description: 'Used storage in bytes',
953
+ },
954
+ available: {
955
+ type: 'number',
956
+ description: 'Available storage in bytes',
957
+ },
958
+ percentUsed: {
959
+ type: 'number',
960
+ optional: true,
961
+ description: 'Percentage of quota used (0-100)',
962
+ },
963
+
964
+ // Breakdown
965
+ usedByFiles: {
966
+ type: 'number',
967
+ optional: true,
968
+ description: 'Storage used by files in bytes',
969
+ },
970
+ usedByTrash: {
971
+ type: 'number',
972
+ optional: true,
973
+ description: 'Storage used by trash/deleted items in bytes',
974
+ },
975
+ usedByVersions: {
976
+ type: 'number',
977
+ optional: true,
978
+ description: 'Storage used by file versions in bytes',
979
+ },
980
+
981
+ // Limits
982
+ unlimited: {
983
+ type: 'boolean',
984
+ optional: true,
985
+ description: 'Whether storage is unlimited',
986
+ },
987
+ maxFileSize: {
988
+ type: 'number',
989
+ optional: true,
990
+ description: 'Maximum individual file size in bytes',
991
+ },
992
+
993
+ // Thresholds
994
+ warningThreshold: {
995
+ type: 'number',
996
+ optional: true,
997
+ description: 'Percentage at which to warn (e.g., 80)',
998
+ },
999
+ criticalThreshold: {
1000
+ type: 'number',
1001
+ optional: true,
1002
+ description: 'Percentage at which to alert (e.g., 95)',
1003
+ },
1004
+
1005
+ // Status
1006
+ status: {
1007
+ type: 'string',
1008
+ optional: true,
1009
+ description: 'Quota status: normal, warning, critical, exceeded',
1010
+ examples: ['normal', 'warning', 'critical', 'exceeded'],
1011
+ },
1012
+
1013
+ // Plan
1014
+ plan: {
1015
+ type: 'string',
1016
+ optional: true,
1017
+ description: 'Storage plan: free, basic, premium, business, enterprise',
1018
+ examples: ['free', 'basic', 'premium', 'business', 'enterprise'],
1019
+ },
1020
+
1021
+ // Dates
1022
+ lastUpdatedAt: {
1023
+ type: 'datetime',
1024
+ optional: true,
1025
+ description: 'When quota was last calculated',
1026
+ },
1027
+ renewsAt: {
1028
+ type: 'datetime',
1029
+ optional: true,
1030
+ description: 'When quota resets (for monthly limits)',
1031
+ },
1032
+ },
1033
+
1034
+ relationships: {
1035
+ drive: {
1036
+ type: 'Drive',
1037
+ backref: 'quota',
1038
+ description: 'Drive this quota applies to',
1039
+ },
1040
+ owner: {
1041
+ type: 'Contact',
1042
+ description: 'Account owner',
1043
+ },
1044
+ },
1045
+
1046
+ actions: [
1047
+ 'check',
1048
+ 'update',
1049
+ 'upgrade',
1050
+ 'downgrade',
1051
+ 'cleanUp',
1052
+ 'emptyTrash',
1053
+ 'deleteOldVersions',
1054
+ ],
1055
+
1056
+ events: [
1057
+ 'checked',
1058
+ 'updated',
1059
+ 'upgraded',
1060
+ 'downgraded',
1061
+ 'warningThresholdReached',
1062
+ 'criticalThresholdReached',
1063
+ 'exceeded',
1064
+ 'cleanedUp',
1065
+ ],
1066
+ }
1067
+
1068
+ // =============================================================================
1069
+ // Backup
1070
+ // =============================================================================
1071
+
1072
+ /**
1073
+ * Backup entity
1074
+ *
1075
+ * Represents a backup snapshot of files or drives
1076
+ */
1077
+ export const Backup: Noun = {
1078
+ singular: 'backup',
1079
+ plural: 'backups',
1080
+ description: 'A backup snapshot of files or an entire drive',
1081
+
1082
+ properties: {
1083
+ // Identity
1084
+ name: {
1085
+ type: 'string',
1086
+ description: 'Backup name or label',
1087
+ },
1088
+ backupId: {
1089
+ type: 'string',
1090
+ optional: true,
1091
+ description: 'Unique backup identifier',
1092
+ },
1093
+
1094
+ // Type
1095
+ type: {
1096
+ type: 'string',
1097
+ description: 'Backup type: full, incremental, differential',
1098
+ examples: ['full', 'incremental', 'differential'],
1099
+ },
1100
+ scope: {
1101
+ type: 'string',
1102
+ description: 'Backup scope: file, folder, drive',
1103
+ examples: ['file', 'folder', 'drive'],
1104
+ },
1105
+
1106
+ // Status
1107
+ status: {
1108
+ type: 'string',
1109
+ description: 'Backup status: pending, in-progress, completed, failed, expired',
1110
+ examples: ['pending', 'in-progress', 'completed', 'failed', 'expired'],
1111
+ },
1112
+
1113
+ // Content
1114
+ itemCount: {
1115
+ type: 'number',
1116
+ optional: true,
1117
+ description: 'Number of items backed up',
1118
+ },
1119
+ totalSize: {
1120
+ type: 'number',
1121
+ optional: true,
1122
+ description: 'Total size of backup in bytes',
1123
+ },
1124
+ compressedSize: {
1125
+ type: 'number',
1126
+ optional: true,
1127
+ description: 'Compressed backup size in bytes',
1128
+ },
1129
+ compressed: {
1130
+ type: 'boolean',
1131
+ optional: true,
1132
+ description: 'Whether backup is compressed',
1133
+ },
1134
+ encrypted: {
1135
+ type: 'boolean',
1136
+ optional: true,
1137
+ description: 'Whether backup is encrypted',
1138
+ },
1139
+
1140
+ // Storage
1141
+ storagePath: {
1142
+ type: 'string',
1143
+ optional: true,
1144
+ description: 'Path where backup is stored',
1145
+ },
1146
+ storageLocation: {
1147
+ type: 'string',
1148
+ optional: true,
1149
+ description: 'Storage location: local, cloud, external',
1150
+ examples: ['local', 'cloud', 'external'],
1151
+ },
1152
+
1153
+ // Schedule
1154
+ scheduled: {
1155
+ type: 'boolean',
1156
+ optional: true,
1157
+ description: 'Whether this is a scheduled backup',
1158
+ },
1159
+ scheduleType: {
1160
+ type: 'string',
1161
+ optional: true,
1162
+ description: 'Schedule type: manual, hourly, daily, weekly, monthly',
1163
+ examples: ['manual', 'hourly', 'daily', 'weekly', 'monthly'],
1164
+ },
1165
+
1166
+ // Retention
1167
+ retentionDays: {
1168
+ type: 'number',
1169
+ optional: true,
1170
+ description: 'Number of days to retain this backup',
1171
+ },
1172
+ expiresAt: {
1173
+ type: 'datetime',
1174
+ optional: true,
1175
+ description: 'When this backup expires',
1176
+ },
1177
+ keepForever: {
1178
+ type: 'boolean',
1179
+ optional: true,
1180
+ description: 'Whether to keep this backup indefinitely',
1181
+ },
1182
+
1183
+ // Verification
1184
+ verified: {
1185
+ type: 'boolean',
1186
+ optional: true,
1187
+ description: 'Whether backup integrity has been verified',
1188
+ },
1189
+ verifiedAt: {
1190
+ type: 'datetime',
1191
+ optional: true,
1192
+ description: 'When backup was last verified',
1193
+ },
1194
+ checksum: {
1195
+ type: 'string',
1196
+ optional: true,
1197
+ description: 'Backup checksum for integrity verification',
1198
+ },
1199
+
1200
+ // Dates
1201
+ createdAt: {
1202
+ type: 'datetime',
1203
+ description: 'When backup was created',
1204
+ },
1205
+ completedAt: {
1206
+ type: 'datetime',
1207
+ optional: true,
1208
+ description: 'When backup completed',
1209
+ },
1210
+ },
1211
+
1212
+ relationships: {
1213
+ drive: {
1214
+ type: 'Drive',
1215
+ backref: 'backups',
1216
+ description: 'Drive being backed up',
1217
+ },
1218
+ files: {
1219
+ type: 'File[]',
1220
+ description: 'Files included in this backup',
1221
+ },
1222
+ folders: {
1223
+ type: 'Folder[]',
1224
+ description: 'Folders included in this backup',
1225
+ },
1226
+ creator: {
1227
+ type: 'Contact',
1228
+ description: 'Who created the backup',
1229
+ },
1230
+ parentBackup: {
1231
+ type: 'Backup',
1232
+ required: false,
1233
+ description: 'Parent backup for incremental backups',
1234
+ },
1235
+ },
1236
+
1237
+ actions: [
1238
+ 'create',
1239
+ 'restore',
1240
+ 'verify',
1241
+ 'download',
1242
+ 'delete',
1243
+ 'schedule',
1244
+ 'cancel',
1245
+ 'compress',
1246
+ 'encrypt',
1247
+ 'export',
1248
+ ],
1249
+
1250
+ events: [
1251
+ 'created',
1252
+ 'started',
1253
+ 'progressed',
1254
+ 'completed',
1255
+ 'failed',
1256
+ 'restored',
1257
+ 'verified',
1258
+ 'downloaded',
1259
+ 'deleted',
1260
+ 'scheduled',
1261
+ 'expired',
1262
+ ],
1263
+ }
1264
+
1265
+ // =============================================================================
1266
+ // Export all entities as a schema
1267
+ // =============================================================================
1268
+
1269
+ /**
1270
+ * All storage entity types
1271
+ */
1272
+ export const StorageEntities = {
1273
+ File,
1274
+ Folder,
1275
+ Drive,
1276
+ SharedLink,
1277
+ FileVersion,
1278
+ StorageQuota,
1279
+ Backup,
1280
+ }
1281
+
1282
+ /**
1283
+ * Storage entity categories for organization
1284
+ */
1285
+ export const StorageCategories = {
1286
+ files: ['File', 'Folder', 'FileVersion'],
1287
+ drives: ['Drive', 'StorageQuota'],
1288
+ sharing: ['SharedLink'],
1289
+ operations: ['Backup'],
1290
+ } as const