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,1589 @@
1
+ /**
2
+ * Analytics and Reporting Entity Types (Nouns)
3
+ *
4
+ * Semantic type definitions for analytics and reporting tools that can be used by
5
+ * both remote human workers AND AI agents. Each entity defines:
6
+ * - Properties: The data fields
7
+ * - Actions: Operations that can be performed (Verbs)
8
+ * - Events: State changes that occur
9
+ *
10
+ * @packageDocumentation
11
+ */
12
+ // =============================================================================
13
+ // Report
14
+ // =============================================================================
15
+ /**
16
+ * Report entity
17
+ *
18
+ * Represents a generated report with data, visualizations, and scheduling
19
+ */
20
+ export const Report = {
21
+ singular: 'report',
22
+ plural: 'reports',
23
+ description: 'A generated report containing data analysis and visualizations',
24
+ properties: {
25
+ // Identity
26
+ title: {
27
+ type: 'string',
28
+ description: 'Report title',
29
+ },
30
+ description: {
31
+ type: 'string',
32
+ optional: true,
33
+ description: 'Report description or summary',
34
+ },
35
+ // Type and configuration
36
+ type: {
37
+ type: 'string',
38
+ description: 'Report type: summary, detail, comparison, trend, custom',
39
+ examples: ['summary', 'detail', 'comparison', 'trend', 'custom'],
40
+ },
41
+ format: {
42
+ type: 'string',
43
+ description: 'Output format: pdf, html, csv, xlsx, json',
44
+ examples: ['pdf', 'html', 'csv', 'xlsx', 'json'],
45
+ },
46
+ template: {
47
+ type: 'string',
48
+ optional: true,
49
+ description: 'Template used for report generation',
50
+ },
51
+ // Time range
52
+ startDate: {
53
+ type: 'datetime',
54
+ optional: true,
55
+ description: 'Start date for report data',
56
+ },
57
+ endDate: {
58
+ type: 'datetime',
59
+ optional: true,
60
+ description: 'End date for report data',
61
+ },
62
+ period: {
63
+ type: 'string',
64
+ optional: true,
65
+ description: 'Time period: daily, weekly, monthly, quarterly, yearly, custom',
66
+ examples: ['daily', 'weekly', 'monthly', 'quarterly', 'yearly', 'custom'],
67
+ },
68
+ // Scheduling
69
+ scheduled: {
70
+ type: 'boolean',
71
+ optional: true,
72
+ description: 'Whether report is automatically generated on schedule',
73
+ },
74
+ schedule: {
75
+ type: 'string',
76
+ optional: true,
77
+ description: 'Cron expression or schedule string',
78
+ },
79
+ scheduleTimezone: {
80
+ type: 'string',
81
+ optional: true,
82
+ description: 'Timezone for scheduled generation',
83
+ },
84
+ lastRunAt: {
85
+ type: 'datetime',
86
+ optional: true,
87
+ description: 'When report was last generated',
88
+ },
89
+ nextRunAt: {
90
+ type: 'datetime',
91
+ optional: true,
92
+ description: 'When report will next be generated',
93
+ },
94
+ // Status
95
+ status: {
96
+ type: 'string',
97
+ description: 'Report status: draft, generating, completed, failed, scheduled',
98
+ examples: ['draft', 'generating', 'completed', 'failed', 'scheduled'],
99
+ },
100
+ progress: {
101
+ type: 'number',
102
+ optional: true,
103
+ description: 'Generation progress (0-100)',
104
+ },
105
+ error: {
106
+ type: 'string',
107
+ optional: true,
108
+ description: 'Error message if generation failed',
109
+ },
110
+ // Content
111
+ content: {
112
+ type: 'json',
113
+ optional: true,
114
+ description: 'Generated report content/data',
115
+ },
116
+ url: {
117
+ type: 'url',
118
+ optional: true,
119
+ description: 'URL to access/download the report',
120
+ },
121
+ size: {
122
+ type: 'number',
123
+ optional: true,
124
+ description: 'Report file size in bytes',
125
+ },
126
+ // Distribution
127
+ recipients: {
128
+ type: 'string',
129
+ array: true,
130
+ optional: true,
131
+ description: 'Email addresses to send report to',
132
+ },
133
+ shared: {
134
+ type: 'boolean',
135
+ optional: true,
136
+ description: 'Whether report is publicly shared',
137
+ },
138
+ shareUrl: {
139
+ type: 'url',
140
+ optional: true,
141
+ description: 'Public URL for shared report',
142
+ },
143
+ // Metadata
144
+ tags: {
145
+ type: 'string',
146
+ array: true,
147
+ optional: true,
148
+ description: 'Tags for categorizing reports',
149
+ },
150
+ category: {
151
+ type: 'string',
152
+ optional: true,
153
+ description: 'Report category',
154
+ },
155
+ },
156
+ relationships: {
157
+ dataSource: {
158
+ type: 'DataSource',
159
+ description: 'Primary data source for the report',
160
+ },
161
+ dataSources: {
162
+ type: 'DataSource[]',
163
+ description: 'All data sources used in the report',
164
+ },
165
+ queries: {
166
+ type: 'Query[]',
167
+ description: 'Queries used to fetch report data',
168
+ },
169
+ metrics: {
170
+ type: 'Metric[]',
171
+ description: 'Metrics included in the report',
172
+ },
173
+ widgets: {
174
+ type: 'Widget[]',
175
+ description: 'Widgets/visualizations in the report',
176
+ },
177
+ owner: {
178
+ type: 'Contact',
179
+ description: 'Report owner/creator',
180
+ },
181
+ subscribers: {
182
+ type: 'Contact[]',
183
+ description: 'People subscribed to receive this report',
184
+ },
185
+ },
186
+ actions: [
187
+ 'create',
188
+ 'edit',
189
+ 'generate',
190
+ 'regenerate',
191
+ 'schedule',
192
+ 'unschedule',
193
+ 'export',
194
+ 'download',
195
+ 'share',
196
+ 'unshare',
197
+ 'send',
198
+ 'duplicate',
199
+ 'archive',
200
+ 'delete',
201
+ 'subscribe',
202
+ 'unsubscribe',
203
+ ],
204
+ events: [
205
+ 'created',
206
+ 'edited',
207
+ 'generating',
208
+ 'generated',
209
+ 'failed',
210
+ 'scheduled',
211
+ 'unscheduled',
212
+ 'exported',
213
+ 'downloaded',
214
+ 'shared',
215
+ 'unshared',
216
+ 'sent',
217
+ 'duplicated',
218
+ 'archived',
219
+ 'deleted',
220
+ ],
221
+ };
222
+ // =============================================================================
223
+ // Dashboard
224
+ // =============================================================================
225
+ /**
226
+ * Dashboard entity
227
+ *
228
+ * Represents a dashboard with multiple widgets displaying metrics and data
229
+ */
230
+ export const Dashboard = {
231
+ singular: 'dashboard',
232
+ plural: 'dashboards',
233
+ description: 'A dashboard containing widgets and charts for data visualization',
234
+ properties: {
235
+ // Identity
236
+ name: {
237
+ type: 'string',
238
+ description: 'Dashboard name',
239
+ },
240
+ description: {
241
+ type: 'string',
242
+ optional: true,
243
+ description: 'Dashboard description',
244
+ },
245
+ // Layout
246
+ layout: {
247
+ type: 'string',
248
+ description: 'Dashboard layout type: grid, freeform, fixed',
249
+ examples: ['grid', 'freeform', 'fixed'],
250
+ },
251
+ columns: {
252
+ type: 'number',
253
+ optional: true,
254
+ description: 'Number of columns in grid layout',
255
+ },
256
+ theme: {
257
+ type: 'string',
258
+ optional: true,
259
+ description: 'Dashboard theme: light, dark, custom',
260
+ examples: ['light', 'dark', 'custom'],
261
+ },
262
+ customStyles: {
263
+ type: 'json',
264
+ optional: true,
265
+ description: 'Custom CSS styles or theme configuration',
266
+ },
267
+ // Time settings
268
+ timeRange: {
269
+ type: 'string',
270
+ optional: true,
271
+ description: 'Default time range: last_hour, last_24h, last_7d, last_30d, last_90d, custom',
272
+ examples: ['last_hour', 'last_24h', 'last_7d', 'last_30d', 'last_90d', 'custom'],
273
+ },
274
+ startDate: {
275
+ type: 'datetime',
276
+ optional: true,
277
+ description: 'Start date for custom time range',
278
+ },
279
+ endDate: {
280
+ type: 'datetime',
281
+ optional: true,
282
+ description: 'End date for custom time range',
283
+ },
284
+ autoRefresh: {
285
+ type: 'boolean',
286
+ optional: true,
287
+ description: 'Whether dashboard auto-refreshes',
288
+ },
289
+ refreshInterval: {
290
+ type: 'number',
291
+ optional: true,
292
+ description: 'Auto-refresh interval in seconds',
293
+ },
294
+ lastRefreshedAt: {
295
+ type: 'datetime',
296
+ optional: true,
297
+ description: 'When dashboard was last refreshed',
298
+ },
299
+ // Access control
300
+ visibility: {
301
+ type: 'string',
302
+ description: 'Dashboard visibility: private, team, organization, public',
303
+ examples: ['private', 'team', 'organization', 'public'],
304
+ },
305
+ shared: {
306
+ type: 'boolean',
307
+ optional: true,
308
+ description: 'Whether dashboard is publicly shared',
309
+ },
310
+ shareUrl: {
311
+ type: 'url',
312
+ optional: true,
313
+ description: 'Public URL for shared dashboard',
314
+ },
315
+ embedded: {
316
+ type: 'boolean',
317
+ optional: true,
318
+ description: 'Whether dashboard can be embedded',
319
+ },
320
+ // Organization
321
+ favorite: {
322
+ type: 'boolean',
323
+ optional: true,
324
+ description: 'Whether dashboard is favorited by current user',
325
+ },
326
+ tags: {
327
+ type: 'string',
328
+ array: true,
329
+ optional: true,
330
+ description: 'Tags for categorizing dashboard',
331
+ },
332
+ category: {
333
+ type: 'string',
334
+ optional: true,
335
+ description: 'Dashboard category',
336
+ },
337
+ template: {
338
+ type: 'boolean',
339
+ optional: true,
340
+ description: 'Whether this is a template dashboard',
341
+ },
342
+ },
343
+ relationships: {
344
+ widgets: {
345
+ type: 'Widget[]',
346
+ backref: 'dashboard',
347
+ description: 'Widgets displayed on this dashboard',
348
+ },
349
+ dataSources: {
350
+ type: 'DataSource[]',
351
+ description: 'Data sources used by dashboard widgets',
352
+ },
353
+ owner: {
354
+ type: 'Contact',
355
+ description: 'Dashboard owner/creator',
356
+ },
357
+ viewers: {
358
+ type: 'Contact[]',
359
+ description: 'People with view access',
360
+ },
361
+ editors: {
362
+ type: 'Contact[]',
363
+ description: 'People with edit access',
364
+ },
365
+ },
366
+ actions: [
367
+ 'create',
368
+ 'edit',
369
+ 'view',
370
+ 'refresh',
371
+ 'duplicate',
372
+ 'export',
373
+ 'share',
374
+ 'unshare',
375
+ 'embed',
376
+ 'favorite',
377
+ 'unfavorite',
378
+ 'addWidget',
379
+ 'removeWidget',
380
+ 'reorderWidgets',
381
+ 'setTimeRange',
382
+ 'archive',
383
+ 'delete',
384
+ ],
385
+ events: [
386
+ 'created',
387
+ 'edited',
388
+ 'viewed',
389
+ 'refreshed',
390
+ 'duplicated',
391
+ 'exported',
392
+ 'shared',
393
+ 'unshared',
394
+ 'embedded',
395
+ 'favorited',
396
+ 'unfavorited',
397
+ 'widgetAdded',
398
+ 'widgetRemoved',
399
+ 'widgetsReordered',
400
+ 'timeRangeChanged',
401
+ 'archived',
402
+ 'deleted',
403
+ ],
404
+ };
405
+ // =============================================================================
406
+ // Widget
407
+ // =============================================================================
408
+ /**
409
+ * Widget entity
410
+ *
411
+ * Represents a dashboard widget (chart, metric, table, etc.)
412
+ */
413
+ export const Widget = {
414
+ singular: 'widget',
415
+ plural: 'widgets',
416
+ description: 'A dashboard widget displaying data as a chart, metric, table, or other visualization',
417
+ properties: {
418
+ // Identity
419
+ title: {
420
+ type: 'string',
421
+ description: 'Widget title',
422
+ },
423
+ description: {
424
+ type: 'string',
425
+ optional: true,
426
+ description: 'Widget description',
427
+ },
428
+ // Type and visualization
429
+ type: {
430
+ type: 'string',
431
+ description: 'Widget type: metric, chart, table, text, image, iframe',
432
+ examples: ['metric', 'chart', 'table', 'text', 'image', 'iframe'],
433
+ },
434
+ chartType: {
435
+ type: 'string',
436
+ optional: true,
437
+ description: 'Chart type: line, bar, pie, area, scatter, heatmap, gauge, funnel',
438
+ examples: ['line', 'bar', 'pie', 'area', 'scatter', 'heatmap', 'gauge', 'funnel'],
439
+ },
440
+ visualization: {
441
+ type: 'json',
442
+ optional: true,
443
+ description: 'Visualization configuration (axes, colors, legend, etc.)',
444
+ },
445
+ // Layout
446
+ position: {
447
+ type: 'json',
448
+ description: 'Widget position and size: {x, y, width, height}',
449
+ },
450
+ minWidth: {
451
+ type: 'number',
452
+ optional: true,
453
+ description: 'Minimum width in grid units',
454
+ },
455
+ minHeight: {
456
+ type: 'number',
457
+ optional: true,
458
+ description: 'Minimum height in grid units',
459
+ },
460
+ // Data
461
+ data: {
462
+ type: 'json',
463
+ optional: true,
464
+ description: 'Current widget data',
465
+ },
466
+ aggregation: {
467
+ type: 'string',
468
+ optional: true,
469
+ description: 'Data aggregation method: sum, avg, min, max, count, distinct',
470
+ examples: ['sum', 'avg', 'min', 'max', 'count', 'distinct'],
471
+ },
472
+ groupBy: {
473
+ type: 'string',
474
+ optional: true,
475
+ description: 'Field to group data by',
476
+ },
477
+ filters: {
478
+ type: 'json',
479
+ optional: true,
480
+ description: 'Data filters applied to widget',
481
+ },
482
+ limit: {
483
+ type: 'number',
484
+ optional: true,
485
+ description: 'Maximum number of data points or rows',
486
+ },
487
+ // Time settings
488
+ timeRange: {
489
+ type: 'string',
490
+ optional: true,
491
+ description: 'Widget-specific time range override',
492
+ },
493
+ startDate: {
494
+ type: 'datetime',
495
+ optional: true,
496
+ description: 'Start date for widget data',
497
+ },
498
+ endDate: {
499
+ type: 'datetime',
500
+ optional: true,
501
+ description: 'End date for widget data',
502
+ },
503
+ // Display options
504
+ showLegend: {
505
+ type: 'boolean',
506
+ optional: true,
507
+ description: 'Whether to show chart legend',
508
+ },
509
+ showLabels: {
510
+ type: 'boolean',
511
+ optional: true,
512
+ description: 'Whether to show data labels',
513
+ },
514
+ colors: {
515
+ type: 'string',
516
+ array: true,
517
+ optional: true,
518
+ description: 'Custom color palette',
519
+ },
520
+ // Status
521
+ loading: {
522
+ type: 'boolean',
523
+ optional: true,
524
+ description: 'Whether widget is currently loading data',
525
+ },
526
+ error: {
527
+ type: 'string',
528
+ optional: true,
529
+ description: 'Error message if data loading failed',
530
+ },
531
+ lastUpdatedAt: {
532
+ type: 'datetime',
533
+ optional: true,
534
+ description: 'When widget data was last updated',
535
+ },
536
+ },
537
+ relationships: {
538
+ dashboard: {
539
+ type: 'Dashboard',
540
+ backref: 'widgets',
541
+ description: 'Dashboard this widget belongs to',
542
+ },
543
+ dataSource: {
544
+ type: 'DataSource',
545
+ description: 'Data source for this widget',
546
+ },
547
+ query: {
548
+ type: 'Query',
549
+ description: 'Query used to fetch widget data',
550
+ },
551
+ metrics: {
552
+ type: 'Metric[]',
553
+ description: 'Metrics displayed in this widget',
554
+ },
555
+ alerts: {
556
+ type: 'Alert[]',
557
+ description: 'Alerts configured for this widget',
558
+ },
559
+ },
560
+ actions: [
561
+ 'create',
562
+ 'edit',
563
+ 'refresh',
564
+ 'duplicate',
565
+ 'resize',
566
+ 'move',
567
+ 'delete',
568
+ 'export',
569
+ 'drilldown',
570
+ 'filter',
571
+ 'setTimeRange',
572
+ 'toggleLegend',
573
+ 'changeChartType',
574
+ ],
575
+ events: [
576
+ 'created',
577
+ 'edited',
578
+ 'refreshed',
579
+ 'duplicated',
580
+ 'resized',
581
+ 'moved',
582
+ 'deleted',
583
+ 'exported',
584
+ 'drilledDown',
585
+ 'filtered',
586
+ 'timeRangeChanged',
587
+ 'dataLoaded',
588
+ 'dataFailed',
589
+ ],
590
+ };
591
+ // =============================================================================
592
+ // Metric
593
+ // =============================================================================
594
+ /**
595
+ * Metric entity
596
+ *
597
+ * Represents a tracked metric or KPI with current value and trends
598
+ */
599
+ export const Metric = {
600
+ singular: 'metric',
601
+ plural: 'metrics',
602
+ description: 'A tracked metric or key performance indicator (KPI)',
603
+ properties: {
604
+ // Identity
605
+ name: {
606
+ type: 'string',
607
+ description: 'Metric name',
608
+ },
609
+ displayName: {
610
+ type: 'string',
611
+ optional: true,
612
+ description: 'Human-readable display name',
613
+ },
614
+ description: {
615
+ type: 'string',
616
+ optional: true,
617
+ description: 'Metric description',
618
+ },
619
+ // Type and calculation
620
+ type: {
621
+ type: 'string',
622
+ description: 'Metric type: number, currency, percentage, ratio, duration, count',
623
+ examples: ['number', 'currency', 'percentage', 'ratio', 'duration', 'count'],
624
+ },
625
+ unit: {
626
+ type: 'string',
627
+ optional: true,
628
+ description: 'Unit of measurement',
629
+ },
630
+ format: {
631
+ type: 'string',
632
+ optional: true,
633
+ description: 'Display format string',
634
+ },
635
+ aggregation: {
636
+ type: 'string',
637
+ description: 'Aggregation method: sum, avg, min, max, count, distinct',
638
+ examples: ['sum', 'avg', 'min', 'max', 'count', 'distinct'],
639
+ },
640
+ formula: {
641
+ type: 'string',
642
+ optional: true,
643
+ description: 'Calculation formula for computed metrics',
644
+ },
645
+ // Current value
646
+ value: {
647
+ type: 'number',
648
+ description: 'Current metric value',
649
+ },
650
+ previousValue: {
651
+ type: 'number',
652
+ optional: true,
653
+ description: 'Previous period value for comparison',
654
+ },
655
+ change: {
656
+ type: 'number',
657
+ optional: true,
658
+ description: 'Absolute change from previous period',
659
+ },
660
+ changePercent: {
661
+ type: 'number',
662
+ optional: true,
663
+ description: 'Percentage change from previous period',
664
+ },
665
+ // Trend
666
+ trend: {
667
+ type: 'string',
668
+ optional: true,
669
+ description: 'Trend direction: up, down, flat',
670
+ examples: ['up', 'down', 'flat'],
671
+ },
672
+ trendData: {
673
+ type: 'json',
674
+ optional: true,
675
+ description: 'Time series data for trend visualization',
676
+ },
677
+ // Thresholds
678
+ target: {
679
+ type: 'number',
680
+ optional: true,
681
+ description: 'Target value or goal',
682
+ },
683
+ minValue: {
684
+ type: 'number',
685
+ optional: true,
686
+ description: 'Minimum acceptable value',
687
+ },
688
+ maxValue: {
689
+ type: 'number',
690
+ optional: true,
691
+ description: 'Maximum acceptable value',
692
+ },
693
+ warningThreshold: {
694
+ type: 'number',
695
+ optional: true,
696
+ description: 'Warning threshold value',
697
+ },
698
+ criticalThreshold: {
699
+ type: 'number',
700
+ optional: true,
701
+ description: 'Critical threshold value',
702
+ },
703
+ // Status
704
+ status: {
705
+ type: 'string',
706
+ optional: true,
707
+ description: 'Metric status: normal, warning, critical, unknown',
708
+ examples: ['normal', 'warning', 'critical', 'unknown'],
709
+ },
710
+ // Metadata
711
+ category: {
712
+ type: 'string',
713
+ optional: true,
714
+ description: 'Metric category',
715
+ },
716
+ tags: {
717
+ type: 'string',
718
+ array: true,
719
+ optional: true,
720
+ description: 'Tags for categorization',
721
+ },
722
+ dimensions: {
723
+ type: 'json',
724
+ optional: true,
725
+ description: 'Dimensional breakdown of metric',
726
+ },
727
+ // Timing
728
+ period: {
729
+ type: 'string',
730
+ optional: true,
731
+ description: 'Time period: hourly, daily, weekly, monthly, quarterly, yearly',
732
+ examples: ['hourly', 'daily', 'weekly', 'monthly', 'quarterly', 'yearly'],
733
+ },
734
+ timestamp: {
735
+ type: 'datetime',
736
+ optional: true,
737
+ description: 'When metric was last calculated',
738
+ },
739
+ },
740
+ relationships: {
741
+ dataSource: {
742
+ type: 'DataSource',
743
+ description: 'Data source for this metric',
744
+ },
745
+ query: {
746
+ type: 'Query',
747
+ description: 'Query used to calculate metric',
748
+ },
749
+ goal: {
750
+ type: 'Goal',
751
+ required: false,
752
+ description: 'Associated goal or target',
753
+ },
754
+ alerts: {
755
+ type: 'Alert[]',
756
+ backref: 'metric',
757
+ description: 'Alerts configured for this metric',
758
+ },
759
+ reports: {
760
+ type: 'Report[]',
761
+ description: 'Reports that include this metric',
762
+ },
763
+ dashboards: {
764
+ type: 'Dashboard[]',
765
+ description: 'Dashboards that display this metric',
766
+ },
767
+ },
768
+ actions: [
769
+ 'calculate',
770
+ 'refresh',
771
+ 'setTarget',
772
+ 'setThreshold',
773
+ 'track',
774
+ 'compare',
775
+ 'export',
776
+ 'archive',
777
+ 'delete',
778
+ ],
779
+ events: [
780
+ 'calculated',
781
+ 'refreshed',
782
+ 'targetSet',
783
+ 'thresholdSet',
784
+ 'thresholdExceeded',
785
+ 'targetReached',
786
+ 'trendChanged',
787
+ 'archived',
788
+ 'deleted',
789
+ ],
790
+ };
791
+ // =============================================================================
792
+ // Goal
793
+ // =============================================================================
794
+ /**
795
+ * Goal entity
796
+ *
797
+ * Represents a goal or target with progress tracking
798
+ */
799
+ export const Goal = {
800
+ singular: 'goal',
801
+ plural: 'goals',
802
+ description: 'A goal or target with progress tracking',
803
+ properties: {
804
+ // Identity
805
+ name: {
806
+ type: 'string',
807
+ description: 'Goal name',
808
+ },
809
+ description: {
810
+ type: 'string',
811
+ optional: true,
812
+ description: 'Goal description',
813
+ },
814
+ // Target
815
+ target: {
816
+ type: 'number',
817
+ description: 'Target value to achieve',
818
+ },
819
+ unit: {
820
+ type: 'string',
821
+ optional: true,
822
+ description: 'Unit of measurement',
823
+ },
824
+ type: {
825
+ type: 'string',
826
+ description: 'Goal type: increase, decrease, maintain, threshold',
827
+ examples: ['increase', 'decrease', 'maintain', 'threshold'],
828
+ },
829
+ // Current state
830
+ current: {
831
+ type: 'number',
832
+ description: 'Current value',
833
+ },
834
+ progress: {
835
+ type: 'number',
836
+ description: 'Progress percentage (0-100)',
837
+ },
838
+ remaining: {
839
+ type: 'number',
840
+ optional: true,
841
+ description: 'Remaining amount to reach goal',
842
+ },
843
+ // Timing
844
+ startDate: {
845
+ type: 'datetime',
846
+ description: 'Goal start date',
847
+ },
848
+ endDate: {
849
+ type: 'datetime',
850
+ description: 'Goal target completion date',
851
+ },
852
+ completedAt: {
853
+ type: 'datetime',
854
+ optional: true,
855
+ description: 'When goal was achieved',
856
+ },
857
+ // Status
858
+ status: {
859
+ type: 'string',
860
+ description: 'Goal status: active, completed, failed, cancelled, paused',
861
+ examples: ['active', 'completed', 'failed', 'cancelled', 'paused'],
862
+ },
863
+ onTrack: {
864
+ type: 'boolean',
865
+ optional: true,
866
+ description: 'Whether goal is on track to be achieved',
867
+ },
868
+ projectedCompletion: {
869
+ type: 'datetime',
870
+ optional: true,
871
+ description: 'Projected completion date based on current progress',
872
+ },
873
+ // Organization
874
+ priority: {
875
+ type: 'string',
876
+ optional: true,
877
+ description: 'Goal priority: low, medium, high, critical',
878
+ examples: ['low', 'medium', 'high', 'critical'],
879
+ },
880
+ category: {
881
+ type: 'string',
882
+ optional: true,
883
+ description: 'Goal category',
884
+ },
885
+ tags: {
886
+ type: 'string',
887
+ array: true,
888
+ optional: true,
889
+ description: 'Tags for categorization',
890
+ },
891
+ // Notifications
892
+ notifyOnProgress: {
893
+ type: 'boolean',
894
+ optional: true,
895
+ description: 'Whether to notify on progress milestones',
896
+ },
897
+ notifyOnCompletion: {
898
+ type: 'boolean',
899
+ optional: true,
900
+ description: 'Whether to notify when goal is achieved',
901
+ },
902
+ },
903
+ relationships: {
904
+ metric: {
905
+ type: 'Metric',
906
+ description: 'Metric being tracked for this goal',
907
+ },
908
+ owner: {
909
+ type: 'Contact',
910
+ description: 'Goal owner/responsible person',
911
+ },
912
+ team: {
913
+ type: 'Contact[]',
914
+ description: 'Team members working towards this goal',
915
+ },
916
+ milestones: {
917
+ type: 'Goal[]',
918
+ description: 'Sub-goals or milestones',
919
+ },
920
+ parentGoal: {
921
+ type: 'Goal',
922
+ required: false,
923
+ description: 'Parent goal if this is a milestone',
924
+ },
925
+ },
926
+ actions: [
927
+ 'create',
928
+ 'update',
929
+ 'track',
930
+ 'complete',
931
+ 'fail',
932
+ 'cancel',
933
+ 'pause',
934
+ 'resume',
935
+ 'setTarget',
936
+ 'addMilestone',
937
+ 'delete',
938
+ ],
939
+ events: [
940
+ 'created',
941
+ 'updated',
942
+ 'progressed',
943
+ 'completed',
944
+ 'failed',
945
+ 'cancelled',
946
+ 'paused',
947
+ 'resumed',
948
+ 'targetChanged',
949
+ 'milestoneAdded',
950
+ 'milestoneReached',
951
+ 'deleted',
952
+ ],
953
+ };
954
+ // =============================================================================
955
+ // DataSource
956
+ // =============================================================================
957
+ /**
958
+ * DataSource entity
959
+ *
960
+ * Represents a connection to a data source (database, API, file, etc.)
961
+ */
962
+ export const DataSource = {
963
+ singular: 'data source',
964
+ plural: 'data sources',
965
+ description: 'A connection to a data source for analytics and reporting',
966
+ properties: {
967
+ // Identity
968
+ name: {
969
+ type: 'string',
970
+ description: 'Data source name',
971
+ },
972
+ description: {
973
+ type: 'string',
974
+ optional: true,
975
+ description: 'Data source description',
976
+ },
977
+ // Type and connection
978
+ type: {
979
+ type: 'string',
980
+ description: 'Data source type: database, api, file, webhook, streaming',
981
+ examples: ['database', 'api', 'file', 'webhook', 'streaming'],
982
+ },
983
+ subtype: {
984
+ type: 'string',
985
+ optional: true,
986
+ description: 'Specific data source subtype: postgresql, mysql, mongodb, rest, graphql, csv, json, etc.',
987
+ examples: ['postgresql', 'mysql', 'mongodb', 'rest', 'graphql', 'csv', 'json'],
988
+ },
989
+ connectionString: {
990
+ type: 'string',
991
+ optional: true,
992
+ description: 'Connection string or URL (may be encrypted)',
993
+ },
994
+ host: {
995
+ type: 'string',
996
+ optional: true,
997
+ description: 'Host address',
998
+ },
999
+ port: {
1000
+ type: 'number',
1001
+ optional: true,
1002
+ description: 'Port number',
1003
+ },
1004
+ database: {
1005
+ type: 'string',
1006
+ optional: true,
1007
+ description: 'Database name',
1008
+ },
1009
+ schema: {
1010
+ type: 'string',
1011
+ optional: true,
1012
+ description: 'Schema name',
1013
+ },
1014
+ // Authentication
1015
+ authType: {
1016
+ type: 'string',
1017
+ optional: true,
1018
+ description: 'Authentication type: none, basic, apikey, oauth, certificate',
1019
+ examples: ['none', 'basic', 'apikey', 'oauth', 'certificate'],
1020
+ },
1021
+ username: {
1022
+ type: 'string',
1023
+ optional: true,
1024
+ description: 'Username for authentication',
1025
+ },
1026
+ encrypted: {
1027
+ type: 'boolean',
1028
+ optional: true,
1029
+ description: 'Whether credentials are encrypted',
1030
+ },
1031
+ // Configuration
1032
+ config: {
1033
+ type: 'json',
1034
+ optional: true,
1035
+ description: 'Additional configuration options',
1036
+ },
1037
+ timeout: {
1038
+ type: 'number',
1039
+ optional: true,
1040
+ description: 'Connection timeout in milliseconds',
1041
+ },
1042
+ maxConnections: {
1043
+ type: 'number',
1044
+ optional: true,
1045
+ description: 'Maximum number of concurrent connections',
1046
+ },
1047
+ ssl: {
1048
+ type: 'boolean',
1049
+ optional: true,
1050
+ description: 'Whether to use SSL/TLS',
1051
+ },
1052
+ // Status
1053
+ status: {
1054
+ type: 'string',
1055
+ description: 'Connection status: connected, disconnected, error, testing',
1056
+ examples: ['connected', 'disconnected', 'error', 'testing'],
1057
+ },
1058
+ lastConnectedAt: {
1059
+ type: 'datetime',
1060
+ optional: true,
1061
+ description: 'When connection was last established',
1062
+ },
1063
+ lastTestedAt: {
1064
+ type: 'datetime',
1065
+ optional: true,
1066
+ description: 'When connection was last tested',
1067
+ },
1068
+ error: {
1069
+ type: 'string',
1070
+ optional: true,
1071
+ description: 'Connection error message',
1072
+ },
1073
+ // Metadata
1074
+ tables: {
1075
+ type: 'string',
1076
+ array: true,
1077
+ optional: true,
1078
+ description: 'Available tables or collections',
1079
+ },
1080
+ dataSchema: {
1081
+ type: 'json',
1082
+ optional: true,
1083
+ description: 'Data schema information',
1084
+ },
1085
+ tags: {
1086
+ type: 'string',
1087
+ array: true,
1088
+ optional: true,
1089
+ description: 'Tags for categorization',
1090
+ },
1091
+ // Access control
1092
+ readOnly: {
1093
+ type: 'boolean',
1094
+ optional: true,
1095
+ description: 'Whether connection is read-only',
1096
+ },
1097
+ shared: {
1098
+ type: 'boolean',
1099
+ optional: true,
1100
+ description: 'Whether data source is shared with team',
1101
+ },
1102
+ },
1103
+ relationships: {
1104
+ reports: {
1105
+ type: 'Report[]',
1106
+ description: 'Reports using this data source',
1107
+ },
1108
+ dashboards: {
1109
+ type: 'Dashboard[]',
1110
+ description: 'Dashboards using this data source',
1111
+ },
1112
+ queries: {
1113
+ type: 'Query[]',
1114
+ backref: 'dataSource',
1115
+ description: 'Queries saved for this data source',
1116
+ },
1117
+ metrics: {
1118
+ type: 'Metric[]',
1119
+ description: 'Metrics calculated from this data source',
1120
+ },
1121
+ owner: {
1122
+ type: 'Contact',
1123
+ description: 'Data source owner',
1124
+ },
1125
+ collaborators: {
1126
+ type: 'Contact[]',
1127
+ description: 'People with access to this data source',
1128
+ },
1129
+ },
1130
+ actions: [
1131
+ 'create',
1132
+ 'edit',
1133
+ 'connect',
1134
+ 'disconnect',
1135
+ 'test',
1136
+ 'refresh',
1137
+ 'query',
1138
+ 'sync',
1139
+ 'share',
1140
+ 'unshare',
1141
+ 'delete',
1142
+ ],
1143
+ events: [
1144
+ 'created',
1145
+ 'edited',
1146
+ 'connected',
1147
+ 'disconnected',
1148
+ 'tested',
1149
+ 'refreshed',
1150
+ 'queried',
1151
+ 'synced',
1152
+ 'shared',
1153
+ 'unshared',
1154
+ 'failed',
1155
+ 'deleted',
1156
+ ],
1157
+ };
1158
+ // =============================================================================
1159
+ // Query
1160
+ // =============================================================================
1161
+ /**
1162
+ * Query entity
1163
+ *
1164
+ * Represents a saved query or filter for data retrieval
1165
+ */
1166
+ export const Query = {
1167
+ singular: 'query',
1168
+ plural: 'queries',
1169
+ description: 'A saved query or filter for retrieving data',
1170
+ properties: {
1171
+ // Identity
1172
+ name: {
1173
+ type: 'string',
1174
+ description: 'Query name',
1175
+ },
1176
+ description: {
1177
+ type: 'string',
1178
+ optional: true,
1179
+ description: 'Query description',
1180
+ },
1181
+ // Query definition
1182
+ queryType: {
1183
+ type: 'string',
1184
+ description: 'Query type: sql, graphql, rest, nosql, custom',
1185
+ examples: ['sql', 'graphql', 'rest', 'nosql', 'custom'],
1186
+ },
1187
+ queryString: {
1188
+ type: 'string',
1189
+ description: 'The query text (SQL, GraphQL, etc.)',
1190
+ },
1191
+ parameters: {
1192
+ type: 'json',
1193
+ optional: true,
1194
+ description: 'Query parameters and their default values',
1195
+ },
1196
+ variables: {
1197
+ type: 'json',
1198
+ optional: true,
1199
+ description: 'Current variable values',
1200
+ },
1201
+ // Filters and transformations
1202
+ filters: {
1203
+ type: 'json',
1204
+ optional: true,
1205
+ description: 'Additional filters applied to results',
1206
+ },
1207
+ sort: {
1208
+ type: 'json',
1209
+ optional: true,
1210
+ description: 'Sort configuration',
1211
+ },
1212
+ limit: {
1213
+ type: 'number',
1214
+ optional: true,
1215
+ description: 'Maximum number of results',
1216
+ },
1217
+ offset: {
1218
+ type: 'number',
1219
+ optional: true,
1220
+ description: 'Result offset for pagination',
1221
+ },
1222
+ transformations: {
1223
+ type: 'json',
1224
+ optional: true,
1225
+ description: 'Data transformations to apply',
1226
+ },
1227
+ // Caching
1228
+ cached: {
1229
+ type: 'boolean',
1230
+ optional: true,
1231
+ description: 'Whether to cache query results',
1232
+ },
1233
+ cacheDuration: {
1234
+ type: 'number',
1235
+ optional: true,
1236
+ description: 'Cache duration in seconds',
1237
+ },
1238
+ lastExecutedAt: {
1239
+ type: 'datetime',
1240
+ optional: true,
1241
+ description: 'When query was last executed',
1242
+ },
1243
+ // Performance
1244
+ executionTime: {
1245
+ type: 'number',
1246
+ optional: true,
1247
+ description: 'Last execution time in milliseconds',
1248
+ },
1249
+ rowCount: {
1250
+ type: 'number',
1251
+ optional: true,
1252
+ description: 'Number of rows returned',
1253
+ },
1254
+ timeout: {
1255
+ type: 'number',
1256
+ optional: true,
1257
+ description: 'Query timeout in milliseconds',
1258
+ },
1259
+ // Status
1260
+ status: {
1261
+ type: 'string',
1262
+ optional: true,
1263
+ description: 'Query status: ready, running, completed, failed',
1264
+ examples: ['ready', 'running', 'completed', 'failed'],
1265
+ },
1266
+ error: {
1267
+ type: 'string',
1268
+ optional: true,
1269
+ description: 'Error message if query failed',
1270
+ },
1271
+ // Organization
1272
+ category: {
1273
+ type: 'string',
1274
+ optional: true,
1275
+ description: 'Query category',
1276
+ },
1277
+ tags: {
1278
+ type: 'string',
1279
+ array: true,
1280
+ optional: true,
1281
+ description: 'Tags for categorization',
1282
+ },
1283
+ favorite: {
1284
+ type: 'boolean',
1285
+ optional: true,
1286
+ description: 'Whether query is favorited',
1287
+ },
1288
+ shared: {
1289
+ type: 'boolean',
1290
+ optional: true,
1291
+ description: 'Whether query is shared with team',
1292
+ },
1293
+ },
1294
+ relationships: {
1295
+ dataSource: {
1296
+ type: 'DataSource',
1297
+ backref: 'queries',
1298
+ description: 'Data source this query runs against',
1299
+ },
1300
+ reports: {
1301
+ type: 'Report[]',
1302
+ description: 'Reports using this query',
1303
+ },
1304
+ widgets: {
1305
+ type: 'Widget[]',
1306
+ description: 'Widgets using this query',
1307
+ },
1308
+ metrics: {
1309
+ type: 'Metric[]',
1310
+ description: 'Metrics calculated from this query',
1311
+ },
1312
+ owner: {
1313
+ type: 'Contact',
1314
+ description: 'Query owner/creator',
1315
+ },
1316
+ collaborators: {
1317
+ type: 'Contact[]',
1318
+ description: 'People with access to this query',
1319
+ },
1320
+ },
1321
+ actions: [
1322
+ 'create',
1323
+ 'edit',
1324
+ 'execute',
1325
+ 'cancel',
1326
+ 'test',
1327
+ 'validate',
1328
+ 'optimize',
1329
+ 'schedule',
1330
+ 'export',
1331
+ 'duplicate',
1332
+ 'share',
1333
+ 'unshare',
1334
+ 'favorite',
1335
+ 'unfavorite',
1336
+ 'delete',
1337
+ ],
1338
+ events: [
1339
+ 'created',
1340
+ 'edited',
1341
+ 'executed',
1342
+ 'cancelled',
1343
+ 'tested',
1344
+ 'validated',
1345
+ 'optimized',
1346
+ 'scheduled',
1347
+ 'exported',
1348
+ 'duplicated',
1349
+ 'shared',
1350
+ 'unshared',
1351
+ 'favorited',
1352
+ 'unfavorited',
1353
+ 'failed',
1354
+ 'deleted',
1355
+ ],
1356
+ };
1357
+ // =============================================================================
1358
+ // Alert
1359
+ // =============================================================================
1360
+ /**
1361
+ * Alert entity
1362
+ *
1363
+ * Represents an alert or notification triggered by metric thresholds
1364
+ */
1365
+ export const Alert = {
1366
+ singular: 'alert',
1367
+ plural: 'alerts',
1368
+ description: 'An alert or notification based on metric thresholds and conditions',
1369
+ properties: {
1370
+ // Identity
1371
+ name: {
1372
+ type: 'string',
1373
+ description: 'Alert name',
1374
+ },
1375
+ description: {
1376
+ type: 'string',
1377
+ optional: true,
1378
+ description: 'Alert description',
1379
+ },
1380
+ // Condition
1381
+ condition: {
1382
+ type: 'string',
1383
+ description: 'Alert condition expression',
1384
+ },
1385
+ operator: {
1386
+ type: 'string',
1387
+ description: 'Comparison operator: gt, gte, lt, lte, eq, ne, between, outside',
1388
+ examples: ['gt', 'gte', 'lt', 'lte', 'eq', 'ne', 'between', 'outside'],
1389
+ },
1390
+ threshold: {
1391
+ type: 'number',
1392
+ description: 'Threshold value',
1393
+ },
1394
+ secondThreshold: {
1395
+ type: 'number',
1396
+ optional: true,
1397
+ description: 'Second threshold for between/outside operators',
1398
+ },
1399
+ // Evaluation
1400
+ evaluationInterval: {
1401
+ type: 'number',
1402
+ description: 'How often to evaluate condition (in seconds)',
1403
+ },
1404
+ evaluationWindow: {
1405
+ type: 'number',
1406
+ optional: true,
1407
+ description: 'Time window for evaluation (in seconds)',
1408
+ },
1409
+ evaluationCount: {
1410
+ type: 'number',
1411
+ optional: true,
1412
+ description: 'Number of consecutive evaluations before triggering',
1413
+ },
1414
+ // Severity
1415
+ severity: {
1416
+ type: 'string',
1417
+ description: 'Alert severity: info, warning, error, critical',
1418
+ examples: ['info', 'warning', 'error', 'critical'],
1419
+ },
1420
+ priority: {
1421
+ type: 'string',
1422
+ optional: true,
1423
+ description: 'Alert priority: low, medium, high',
1424
+ examples: ['low', 'medium', 'high'],
1425
+ },
1426
+ // Status
1427
+ enabled: {
1428
+ type: 'boolean',
1429
+ description: 'Whether alert is enabled',
1430
+ },
1431
+ status: {
1432
+ type: 'string',
1433
+ description: 'Alert status: active, triggered, resolved, snoozed, disabled',
1434
+ examples: ['active', 'triggered', 'resolved', 'snoozed', 'disabled'],
1435
+ },
1436
+ triggeredAt: {
1437
+ type: 'datetime',
1438
+ optional: true,
1439
+ description: 'When alert was triggered',
1440
+ },
1441
+ resolvedAt: {
1442
+ type: 'datetime',
1443
+ optional: true,
1444
+ description: 'When alert condition was resolved',
1445
+ },
1446
+ snoozedUntil: {
1447
+ type: 'datetime',
1448
+ optional: true,
1449
+ description: 'Alert is snoozed until this time',
1450
+ },
1451
+ lastEvaluatedAt: {
1452
+ type: 'datetime',
1453
+ optional: true,
1454
+ description: 'When condition was last evaluated',
1455
+ },
1456
+ nextEvaluationAt: {
1457
+ type: 'datetime',
1458
+ optional: true,
1459
+ description: 'When condition will be evaluated next',
1460
+ },
1461
+ // Notification
1462
+ notificationChannels: {
1463
+ type: 'string',
1464
+ array: true,
1465
+ optional: true,
1466
+ description: 'Notification channels: email, sms, slack, webhook, push',
1467
+ examples: ['email', 'sms', 'slack', 'webhook', 'push'],
1468
+ },
1469
+ recipients: {
1470
+ type: 'string',
1471
+ array: true,
1472
+ optional: true,
1473
+ description: 'Recipients to notify',
1474
+ },
1475
+ message: {
1476
+ type: 'string',
1477
+ optional: true,
1478
+ description: 'Custom alert message',
1479
+ },
1480
+ notifyOnResolve: {
1481
+ type: 'boolean',
1482
+ optional: true,
1483
+ description: 'Whether to notify when alert resolves',
1484
+ },
1485
+ // History
1486
+ triggerCount: {
1487
+ type: 'number',
1488
+ optional: true,
1489
+ description: 'Number of times alert has triggered',
1490
+ },
1491
+ lastTriggerValue: {
1492
+ type: 'number',
1493
+ optional: true,
1494
+ description: 'Metric value when last triggered',
1495
+ },
1496
+ // Organization
1497
+ tags: {
1498
+ type: 'string',
1499
+ array: true,
1500
+ optional: true,
1501
+ description: 'Tags for categorization',
1502
+ },
1503
+ category: {
1504
+ type: 'string',
1505
+ optional: true,
1506
+ description: 'Alert category',
1507
+ },
1508
+ },
1509
+ relationships: {
1510
+ metric: {
1511
+ type: 'Metric',
1512
+ backref: 'alerts',
1513
+ description: 'Metric being monitored',
1514
+ },
1515
+ widget: {
1516
+ type: 'Widget',
1517
+ required: false,
1518
+ description: 'Widget associated with this alert',
1519
+ },
1520
+ dataSource: {
1521
+ type: 'DataSource',
1522
+ description: 'Data source for alert evaluation',
1523
+ },
1524
+ owner: {
1525
+ type: 'Contact',
1526
+ description: 'Alert owner/creator',
1527
+ },
1528
+ subscribers: {
1529
+ type: 'Contact[]',
1530
+ description: 'People subscribed to alert notifications',
1531
+ },
1532
+ },
1533
+ actions: [
1534
+ 'create',
1535
+ 'edit',
1536
+ 'enable',
1537
+ 'disable',
1538
+ 'trigger',
1539
+ 'resolve',
1540
+ 'snooze',
1541
+ 'unsnooze',
1542
+ 'test',
1543
+ 'acknowledge',
1544
+ 'escalate',
1545
+ 'delete',
1546
+ ],
1547
+ events: [
1548
+ 'created',
1549
+ 'edited',
1550
+ 'enabled',
1551
+ 'disabled',
1552
+ 'triggered',
1553
+ 'resolved',
1554
+ 'snoozed',
1555
+ 'unsnoozed',
1556
+ 'tested',
1557
+ 'acknowledged',
1558
+ 'escalated',
1559
+ 'notificationSent',
1560
+ 'notificationFailed',
1561
+ 'deleted',
1562
+ ],
1563
+ };
1564
+ // =============================================================================
1565
+ // Export all entities as a schema
1566
+ // =============================================================================
1567
+ /**
1568
+ * All analytics and reporting entity types
1569
+ */
1570
+ export const AnalyticsEntities = {
1571
+ Report,
1572
+ Dashboard,
1573
+ Widget,
1574
+ Metric,
1575
+ Goal,
1576
+ DataSource,
1577
+ Query,
1578
+ Alert,
1579
+ };
1580
+ /**
1581
+ * Entity categories for organization
1582
+ */
1583
+ export const AnalyticsCategories = {
1584
+ reporting: ['Report'],
1585
+ visualization: ['Dashboard', 'Widget'],
1586
+ tracking: ['Metric', 'Goal', 'Alert'],
1587
+ data: ['DataSource', 'Query'],
1588
+ };
1589
+ //# sourceMappingURL=analytics.js.map