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,1611 @@
1
+ /**
2
+ * Marketing Entity Types (Nouns)
3
+ *
4
+ * Semantic type definitions for marketing digital 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
+ // Campaign
14
+ // =============================================================================
15
+ /**
16
+ * Marketing campaign entity
17
+ *
18
+ * Represents a marketing campaign with goals, budget, and tracking
19
+ */
20
+ export const Campaign = {
21
+ singular: 'campaign',
22
+ plural: 'campaigns',
23
+ description: 'A marketing campaign with goals, budget, and performance tracking',
24
+ properties: {
25
+ // Identity
26
+ name: {
27
+ type: 'string',
28
+ description: 'Campaign name',
29
+ },
30
+ description: {
31
+ type: 'string',
32
+ optional: true,
33
+ description: 'Campaign description and goals',
34
+ },
35
+ // Type & Classification
36
+ type: {
37
+ type: 'string',
38
+ description: 'Campaign type: email, social, paid-ads, content, event, webinar, seo',
39
+ examples: ['email', 'social', 'paid-ads', 'content', 'event', 'webinar', 'seo'],
40
+ },
41
+ category: {
42
+ type: 'string',
43
+ optional: true,
44
+ description: 'Campaign category for organization',
45
+ },
46
+ tags: {
47
+ type: 'string',
48
+ array: true,
49
+ optional: true,
50
+ description: 'Tags for categorization and filtering',
51
+ },
52
+ // Status & Timing
53
+ status: {
54
+ type: 'string',
55
+ description: 'Campaign status: draft, scheduled, active, paused, completed, archived',
56
+ examples: ['draft', 'scheduled', 'active', 'paused', 'completed', 'archived'],
57
+ },
58
+ startDate: {
59
+ type: 'datetime',
60
+ optional: true,
61
+ description: 'Campaign start date',
62
+ },
63
+ endDate: {
64
+ type: 'datetime',
65
+ optional: true,
66
+ description: 'Campaign end date',
67
+ },
68
+ // Budget & Finance
69
+ budget: {
70
+ type: 'number',
71
+ optional: true,
72
+ description: 'Total campaign budget',
73
+ },
74
+ spent: {
75
+ type: 'number',
76
+ optional: true,
77
+ description: 'Amount spent so far',
78
+ },
79
+ currency: {
80
+ type: 'string',
81
+ optional: true,
82
+ description: 'Currency code (USD, EUR, etc.)',
83
+ examples: ['USD', 'EUR', 'GBP'],
84
+ },
85
+ // Goals & KPIs
86
+ goal: {
87
+ type: 'string',
88
+ optional: true,
89
+ description: 'Campaign goal: awareness, leads, sales, engagement, traffic',
90
+ examples: ['awareness', 'leads', 'sales', 'engagement', 'traffic'],
91
+ },
92
+ targetImpressions: {
93
+ type: 'number',
94
+ optional: true,
95
+ description: 'Target number of impressions',
96
+ },
97
+ targetClicks: {
98
+ type: 'number',
99
+ optional: true,
100
+ description: 'Target number of clicks',
101
+ },
102
+ targetConversions: {
103
+ type: 'number',
104
+ optional: true,
105
+ description: 'Target number of conversions',
106
+ },
107
+ targetRevenue: {
108
+ type: 'number',
109
+ optional: true,
110
+ description: 'Target revenue amount',
111
+ },
112
+ // Performance Metrics
113
+ impressions: {
114
+ type: 'number',
115
+ optional: true,
116
+ description: 'Total impressions delivered',
117
+ },
118
+ clicks: {
119
+ type: 'number',
120
+ optional: true,
121
+ description: 'Total clicks received',
122
+ },
123
+ conversions: {
124
+ type: 'number',
125
+ optional: true,
126
+ description: 'Total conversions',
127
+ },
128
+ revenue: {
129
+ type: 'number',
130
+ optional: true,
131
+ description: 'Total revenue generated',
132
+ },
133
+ ctr: {
134
+ type: 'number',
135
+ optional: true,
136
+ description: 'Click-through rate (percentage)',
137
+ },
138
+ conversionRate: {
139
+ type: 'number',
140
+ optional: true,
141
+ description: 'Conversion rate (percentage)',
142
+ },
143
+ roi: {
144
+ type: 'number',
145
+ optional: true,
146
+ description: 'Return on investment (percentage)',
147
+ },
148
+ },
149
+ relationships: {
150
+ audience: {
151
+ type: 'Audience',
152
+ required: false,
153
+ description: 'Target audience for this campaign',
154
+ },
155
+ emailTemplates: {
156
+ type: 'EmailTemplate[]',
157
+ description: 'Email templates used in this campaign',
158
+ },
159
+ landingPages: {
160
+ type: 'LandingPage[]',
161
+ description: 'Landing pages associated with this campaign',
162
+ },
163
+ socialPosts: {
164
+ type: 'SocialPost[]',
165
+ description: 'Social media posts in this campaign',
166
+ },
167
+ adCreatives: {
168
+ type: 'AdCreative[]',
169
+ description: 'Ad creatives used in this campaign',
170
+ },
171
+ utmLinks: {
172
+ type: 'UTMLink[]',
173
+ description: 'Tracked URLs for this campaign',
174
+ },
175
+ formSubmissions: {
176
+ type: 'FormSubmission[]',
177
+ description: 'Form submissions generated by this campaign',
178
+ },
179
+ owner: {
180
+ type: 'Contact',
181
+ description: 'Campaign owner/manager',
182
+ },
183
+ team: {
184
+ type: 'Contact[]',
185
+ description: 'Team members working on this campaign',
186
+ },
187
+ },
188
+ actions: [
189
+ 'create',
190
+ 'update',
191
+ 'delete',
192
+ 'schedule',
193
+ 'launch',
194
+ 'pause',
195
+ 'resume',
196
+ 'complete',
197
+ 'archive',
198
+ 'duplicate',
199
+ 'export',
200
+ 'analyze',
201
+ 'optimize',
202
+ ],
203
+ events: [
204
+ 'created',
205
+ 'updated',
206
+ 'deleted',
207
+ 'scheduled',
208
+ 'launched',
209
+ 'paused',
210
+ 'resumed',
211
+ 'completed',
212
+ 'archived',
213
+ 'duplicated',
214
+ 'goalReached',
215
+ 'budgetExceeded',
216
+ ],
217
+ };
218
+ // =============================================================================
219
+ // Audience
220
+ // =============================================================================
221
+ /**
222
+ * Target audience or segment entity
223
+ *
224
+ * Represents a group of people targeted by marketing efforts
225
+ */
226
+ export const Audience = {
227
+ singular: 'audience',
228
+ plural: 'audiences',
229
+ description: 'A target audience or customer segment for marketing',
230
+ properties: {
231
+ // Identity
232
+ name: {
233
+ type: 'string',
234
+ description: 'Audience name',
235
+ },
236
+ description: {
237
+ type: 'string',
238
+ optional: true,
239
+ description: 'Audience description',
240
+ },
241
+ // Size & Stats
242
+ size: {
243
+ type: 'number',
244
+ optional: true,
245
+ description: 'Estimated or actual audience size',
246
+ },
247
+ activeCount: {
248
+ type: 'number',
249
+ optional: true,
250
+ description: 'Number of active/engaged members',
251
+ },
252
+ // Segmentation Criteria
253
+ criteria: {
254
+ type: 'json',
255
+ optional: true,
256
+ description: 'Segmentation criteria (demographics, behavior, etc.)',
257
+ },
258
+ demographics: {
259
+ type: 'json',
260
+ optional: true,
261
+ description: 'Demographic filters (age, gender, location, etc.)',
262
+ },
263
+ interests: {
264
+ type: 'string',
265
+ array: true,
266
+ optional: true,
267
+ description: 'Interest categories',
268
+ },
269
+ behaviors: {
270
+ type: 'json',
271
+ optional: true,
272
+ description: 'Behavioral targeting criteria',
273
+ },
274
+ // Geographic
275
+ countries: {
276
+ type: 'string',
277
+ array: true,
278
+ optional: true,
279
+ description: 'Target countries',
280
+ },
281
+ regions: {
282
+ type: 'string',
283
+ array: true,
284
+ optional: true,
285
+ description: 'Target regions/states',
286
+ },
287
+ cities: {
288
+ type: 'string',
289
+ array: true,
290
+ optional: true,
291
+ description: 'Target cities',
292
+ },
293
+ languages: {
294
+ type: 'string',
295
+ array: true,
296
+ optional: true,
297
+ description: 'Target languages',
298
+ },
299
+ // Status
300
+ status: {
301
+ type: 'string',
302
+ description: 'Audience status: active, archived, building',
303
+ examples: ['active', 'archived', 'building'],
304
+ },
305
+ // Source & Type
306
+ source: {
307
+ type: 'string',
308
+ optional: true,
309
+ description: 'How the audience was created: manual, imported, dynamic, lookalike',
310
+ examples: ['manual', 'imported', 'dynamic', 'lookalike'],
311
+ },
312
+ type: {
313
+ type: 'string',
314
+ optional: true,
315
+ description: 'Audience type: email-list, custom, retargeting, lookalike',
316
+ examples: ['email-list', 'custom', 'retargeting', 'lookalike'],
317
+ },
318
+ // Metadata
319
+ tags: {
320
+ type: 'string',
321
+ array: true,
322
+ optional: true,
323
+ description: 'Tags for organization',
324
+ },
325
+ lastUpdated: {
326
+ type: 'datetime',
327
+ optional: true,
328
+ description: 'When the audience was last updated',
329
+ },
330
+ },
331
+ relationships: {
332
+ campaigns: {
333
+ type: 'Campaign[]',
334
+ description: 'Campaigns targeting this audience',
335
+ },
336
+ contacts: {
337
+ type: 'Contact[]',
338
+ description: 'Contacts in this audience',
339
+ },
340
+ parentAudience: {
341
+ type: 'Audience',
342
+ required: false,
343
+ description: 'Parent audience if this is a sub-segment',
344
+ },
345
+ subAudiences: {
346
+ type: 'Audience[]',
347
+ description: 'Sub-segments of this audience',
348
+ },
349
+ },
350
+ actions: [
351
+ 'create',
352
+ 'update',
353
+ 'delete',
354
+ 'segment',
355
+ 'export',
356
+ 'import',
357
+ 'refresh',
358
+ 'merge',
359
+ 'duplicate',
360
+ 'archive',
361
+ 'analyze',
362
+ ],
363
+ events: [
364
+ 'created',
365
+ 'updated',
366
+ 'deleted',
367
+ 'segmented',
368
+ 'exported',
369
+ 'imported',
370
+ 'refreshed',
371
+ 'merged',
372
+ 'archived',
373
+ 'sizeChanged',
374
+ ],
375
+ };
376
+ // =============================================================================
377
+ // EmailTemplate
378
+ // =============================================================================
379
+ /**
380
+ * Email template entity
381
+ *
382
+ * Represents an email template with subject, body, and variables
383
+ */
384
+ export const EmailTemplate = {
385
+ singular: 'email template',
386
+ plural: 'email templates',
387
+ description: 'A reusable email template for marketing campaigns',
388
+ properties: {
389
+ // Identity
390
+ name: {
391
+ type: 'string',
392
+ description: 'Template name',
393
+ },
394
+ description: {
395
+ type: 'string',
396
+ optional: true,
397
+ description: 'Template description',
398
+ },
399
+ // Email Content
400
+ subject: {
401
+ type: 'string',
402
+ description: 'Email subject line (may contain variables)',
403
+ },
404
+ preheader: {
405
+ type: 'string',
406
+ optional: true,
407
+ description: 'Email preheader/preview text',
408
+ },
409
+ body: {
410
+ type: 'string',
411
+ description: 'Plain text email body',
412
+ },
413
+ html: {
414
+ type: 'string',
415
+ optional: true,
416
+ description: 'HTML email body',
417
+ },
418
+ // Sender Info
419
+ fromName: {
420
+ type: 'string',
421
+ optional: true,
422
+ description: 'Sender name',
423
+ },
424
+ fromEmail: {
425
+ type: 'string',
426
+ optional: true,
427
+ description: 'Sender email address',
428
+ },
429
+ replyTo: {
430
+ type: 'string',
431
+ optional: true,
432
+ description: 'Reply-to email address',
433
+ },
434
+ // Variables & Personalization
435
+ variables: {
436
+ type: 'string',
437
+ array: true,
438
+ optional: true,
439
+ description: 'Variable placeholders (e.g., {{firstName}}, {{company}})',
440
+ },
441
+ personalizationTags: {
442
+ type: 'json',
443
+ optional: true,
444
+ description: 'Available personalization tags and their descriptions',
445
+ },
446
+ // Design & Layout
447
+ category: {
448
+ type: 'string',
449
+ optional: true,
450
+ description: 'Template category: newsletter, promotional, transactional, welcome, abandoned-cart',
451
+ examples: ['newsletter', 'promotional', 'transactional', 'welcome', 'abandoned-cart'],
452
+ },
453
+ designFormat: {
454
+ type: 'string',
455
+ optional: true,
456
+ description: 'Design format: html, drag-drop, rich-text, plain-text',
457
+ examples: ['html', 'drag-drop', 'rich-text', 'plain-text'],
458
+ },
459
+ thumbnailUrl: {
460
+ type: 'url',
461
+ optional: true,
462
+ description: 'Preview thumbnail URL',
463
+ },
464
+ // Status & Version
465
+ status: {
466
+ type: 'string',
467
+ description: 'Template status: draft, active, archived',
468
+ examples: ['draft', 'active', 'archived'],
469
+ },
470
+ version: {
471
+ type: 'number',
472
+ optional: true,
473
+ description: 'Template version number',
474
+ },
475
+ // Performance
476
+ timesSent: {
477
+ type: 'number',
478
+ optional: true,
479
+ description: 'Number of times this template has been sent',
480
+ },
481
+ avgOpenRate: {
482
+ type: 'number',
483
+ optional: true,
484
+ description: 'Average open rate (percentage)',
485
+ },
486
+ avgClickRate: {
487
+ type: 'number',
488
+ optional: true,
489
+ description: 'Average click rate (percentage)',
490
+ },
491
+ // Metadata
492
+ tags: {
493
+ type: 'string',
494
+ array: true,
495
+ optional: true,
496
+ description: 'Tags for organization',
497
+ },
498
+ },
499
+ relationships: {
500
+ campaign: {
501
+ type: 'Campaign',
502
+ required: false,
503
+ description: 'Campaign this template belongs to',
504
+ },
505
+ author: {
506
+ type: 'Contact',
507
+ description: 'Template creator',
508
+ },
509
+ utmLinks: {
510
+ type: 'UTMLink[]',
511
+ description: 'Tracked links in this template',
512
+ },
513
+ },
514
+ actions: [
515
+ 'create',
516
+ 'update',
517
+ 'delete',
518
+ 'duplicate',
519
+ 'preview',
520
+ 'test',
521
+ 'send',
522
+ 'schedule',
523
+ 'archive',
524
+ 'restore',
525
+ 'export',
526
+ 'import',
527
+ ],
528
+ events: [
529
+ 'created',
530
+ 'updated',
531
+ 'deleted',
532
+ 'duplicated',
533
+ 'previewed',
534
+ 'tested',
535
+ 'sent',
536
+ 'scheduled',
537
+ 'archived',
538
+ 'restored',
539
+ ],
540
+ };
541
+ // =============================================================================
542
+ // LandingPage
543
+ // =============================================================================
544
+ /**
545
+ * Landing page entity
546
+ *
547
+ * Represents a marketing landing page with form and conversion tracking
548
+ */
549
+ export const LandingPage = {
550
+ singular: 'landing page',
551
+ plural: 'landing pages',
552
+ description: 'A marketing landing page designed for conversion',
553
+ properties: {
554
+ // Identity
555
+ name: {
556
+ type: 'string',
557
+ description: 'Landing page name',
558
+ },
559
+ title: {
560
+ type: 'string',
561
+ description: 'Page title (HTML title tag)',
562
+ },
563
+ description: {
564
+ type: 'string',
565
+ optional: true,
566
+ description: 'Page description (meta description)',
567
+ },
568
+ // URL & Slug
569
+ url: {
570
+ type: 'url',
571
+ description: 'Full landing page URL',
572
+ },
573
+ slug: {
574
+ type: 'string',
575
+ optional: true,
576
+ description: 'URL slug',
577
+ },
578
+ domain: {
579
+ type: 'string',
580
+ optional: true,
581
+ description: 'Custom domain if applicable',
582
+ },
583
+ // Content
584
+ headline: {
585
+ type: 'string',
586
+ optional: true,
587
+ description: 'Main headline',
588
+ },
589
+ subheadline: {
590
+ type: 'string',
591
+ optional: true,
592
+ description: 'Subheadline',
593
+ },
594
+ body: {
595
+ type: 'markdown',
596
+ optional: true,
597
+ description: 'Page body content',
598
+ },
599
+ // Design
600
+ template: {
601
+ type: 'string',
602
+ optional: true,
603
+ description: 'Template used for this page',
604
+ },
605
+ theme: {
606
+ type: 'string',
607
+ optional: true,
608
+ description: 'Color theme or style',
609
+ },
610
+ thumbnailUrl: {
611
+ type: 'url',
612
+ optional: true,
613
+ description: 'Page screenshot/thumbnail URL',
614
+ },
615
+ // Form & CTA
616
+ hasForm: {
617
+ type: 'boolean',
618
+ optional: true,
619
+ description: 'Whether page includes a form',
620
+ },
621
+ formFields: {
622
+ type: 'json',
623
+ optional: true,
624
+ description: 'Form field definitions',
625
+ },
626
+ ctaText: {
627
+ type: 'string',
628
+ optional: true,
629
+ description: 'Call-to-action button text',
630
+ },
631
+ ctaUrl: {
632
+ type: 'url',
633
+ optional: true,
634
+ description: 'Call-to-action destination URL',
635
+ },
636
+ // Conversion Tracking
637
+ conversionGoal: {
638
+ type: 'string',
639
+ optional: true,
640
+ description: 'Conversion goal: form-submission, click, purchase, signup',
641
+ examples: ['form-submission', 'click', 'purchase', 'signup'],
642
+ },
643
+ trackingPixels: {
644
+ type: 'json',
645
+ optional: true,
646
+ description: 'Tracking pixels/scripts (GA, Facebook Pixel, etc.)',
647
+ },
648
+ // Status
649
+ status: {
650
+ type: 'string',
651
+ description: 'Page status: draft, published, archived, testing',
652
+ examples: ['draft', 'published', 'archived', 'testing'],
653
+ },
654
+ publishedAt: {
655
+ type: 'datetime',
656
+ optional: true,
657
+ description: 'When the page was published',
658
+ },
659
+ // SEO
660
+ metaTitle: {
661
+ type: 'string',
662
+ optional: true,
663
+ description: 'SEO meta title',
664
+ },
665
+ metaDescription: {
666
+ type: 'string',
667
+ optional: true,
668
+ description: 'SEO meta description',
669
+ },
670
+ keywords: {
671
+ type: 'string',
672
+ array: true,
673
+ optional: true,
674
+ description: 'SEO keywords',
675
+ },
676
+ // Performance Metrics
677
+ visits: {
678
+ type: 'number',
679
+ optional: true,
680
+ description: 'Total page visits',
681
+ },
682
+ uniqueVisits: {
683
+ type: 'number',
684
+ optional: true,
685
+ description: 'Unique visitors',
686
+ },
687
+ conversions: {
688
+ type: 'number',
689
+ optional: true,
690
+ description: 'Total conversions',
691
+ },
692
+ conversionRate: {
693
+ type: 'number',
694
+ optional: true,
695
+ description: 'Conversion rate (percentage)',
696
+ },
697
+ bounceRate: {
698
+ type: 'number',
699
+ optional: true,
700
+ description: 'Bounce rate (percentage)',
701
+ },
702
+ avgTimeOnPage: {
703
+ type: 'number',
704
+ optional: true,
705
+ description: 'Average time on page in seconds',
706
+ },
707
+ // Metadata
708
+ tags: {
709
+ type: 'string',
710
+ array: true,
711
+ optional: true,
712
+ description: 'Tags for organization',
713
+ },
714
+ },
715
+ relationships: {
716
+ campaign: {
717
+ type: 'Campaign',
718
+ required: false,
719
+ description: 'Campaign this landing page belongs to',
720
+ },
721
+ formSubmissions: {
722
+ type: 'FormSubmission[]',
723
+ backref: 'landingPage',
724
+ description: 'Form submissions from this page',
725
+ },
726
+ utmLinks: {
727
+ type: 'UTMLink[]',
728
+ description: 'Tracked links on this page',
729
+ },
730
+ owner: {
731
+ type: 'Contact',
732
+ description: 'Page owner/creator',
733
+ },
734
+ variants: {
735
+ type: 'LandingPage[]',
736
+ description: 'A/B test variants of this page',
737
+ },
738
+ },
739
+ actions: [
740
+ 'create',
741
+ 'update',
742
+ 'delete',
743
+ 'publish',
744
+ 'unpublish',
745
+ 'duplicate',
746
+ 'preview',
747
+ 'test',
748
+ 'archive',
749
+ 'restore',
750
+ 'optimize',
751
+ 'export',
752
+ ],
753
+ events: [
754
+ 'created',
755
+ 'updated',
756
+ 'deleted',
757
+ 'published',
758
+ 'unpublished',
759
+ 'duplicated',
760
+ 'previewed',
761
+ 'visited',
762
+ 'converted',
763
+ 'archived',
764
+ ],
765
+ };
766
+ // =============================================================================
767
+ // FormSubmission
768
+ // =============================================================================
769
+ /**
770
+ * Form submission entity
771
+ *
772
+ * Represents a lead capture or form submission from a landing page
773
+ */
774
+ export const FormSubmission = {
775
+ singular: 'form submission',
776
+ plural: 'form submissions',
777
+ description: 'A form submission or lead capture from a marketing form',
778
+ properties: {
779
+ // Form Data
780
+ formData: {
781
+ type: 'json',
782
+ description: 'Submitted form field data (key-value pairs)',
783
+ },
784
+ // Common Fields (duplicated for easier access)
785
+ email: {
786
+ type: 'string',
787
+ optional: true,
788
+ description: 'Submitted email address',
789
+ },
790
+ name: {
791
+ type: 'string',
792
+ optional: true,
793
+ description: 'Submitted name',
794
+ },
795
+ phone: {
796
+ type: 'string',
797
+ optional: true,
798
+ description: 'Submitted phone number',
799
+ },
800
+ company: {
801
+ type: 'string',
802
+ optional: true,
803
+ description: 'Submitted company name',
804
+ },
805
+ message: {
806
+ type: 'string',
807
+ optional: true,
808
+ description: 'Submitted message or comments',
809
+ },
810
+ // Source & Attribution
811
+ source: {
812
+ type: 'string',
813
+ optional: true,
814
+ description: 'Traffic source',
815
+ },
816
+ medium: {
817
+ type: 'string',
818
+ optional: true,
819
+ description: 'Traffic medium',
820
+ },
821
+ referrer: {
822
+ type: 'url',
823
+ optional: true,
824
+ description: 'Referring URL',
825
+ },
826
+ // User Agent & Device
827
+ userAgent: {
828
+ type: 'string',
829
+ optional: true,
830
+ description: 'Browser user agent string',
831
+ },
832
+ device: {
833
+ type: 'string',
834
+ optional: true,
835
+ description: 'Device type: desktop, mobile, tablet',
836
+ examples: ['desktop', 'mobile', 'tablet'],
837
+ },
838
+ browser: {
839
+ type: 'string',
840
+ optional: true,
841
+ description: 'Browser name',
842
+ },
843
+ os: {
844
+ type: 'string',
845
+ optional: true,
846
+ description: 'Operating system',
847
+ },
848
+ // Location
849
+ ipAddress: {
850
+ type: 'string',
851
+ optional: true,
852
+ description: 'Submitter IP address',
853
+ },
854
+ country: {
855
+ type: 'string',
856
+ optional: true,
857
+ description: 'Country from IP geolocation',
858
+ },
859
+ region: {
860
+ type: 'string',
861
+ optional: true,
862
+ description: 'Region/state from IP geolocation',
863
+ },
864
+ city: {
865
+ type: 'string',
866
+ optional: true,
867
+ description: 'City from IP geolocation',
868
+ },
869
+ // Status & Processing
870
+ status: {
871
+ type: 'string',
872
+ description: 'Submission status: new, contacted, qualified, converted, spam, deleted',
873
+ examples: ['new', 'contacted', 'qualified', 'converted', 'spam', 'deleted'],
874
+ },
875
+ qualityScore: {
876
+ type: 'number',
877
+ optional: true,
878
+ description: 'Lead quality score (0-100)',
879
+ },
880
+ spam: {
881
+ type: 'boolean',
882
+ optional: true,
883
+ description: 'Whether flagged as spam',
884
+ },
885
+ // Notes & Follow-up
886
+ notes: {
887
+ type: 'string',
888
+ optional: true,
889
+ description: 'Internal notes about this submission',
890
+ },
891
+ assignedTo: {
892
+ type: 'string',
893
+ optional: true,
894
+ description: 'User ID this submission is assigned to',
895
+ },
896
+ // Metadata
897
+ submittedAt: {
898
+ type: 'datetime',
899
+ description: 'Submission timestamp',
900
+ },
901
+ tags: {
902
+ type: 'string',
903
+ array: true,
904
+ optional: true,
905
+ description: 'Tags for organization',
906
+ },
907
+ },
908
+ relationships: {
909
+ landingPage: {
910
+ type: 'LandingPage',
911
+ backref: 'formSubmissions',
912
+ required: false,
913
+ description: 'Landing page where form was submitted',
914
+ },
915
+ campaign: {
916
+ type: 'Campaign',
917
+ required: false,
918
+ description: 'Campaign this submission is attributed to',
919
+ },
920
+ contact: {
921
+ type: 'Contact',
922
+ required: false,
923
+ description: 'Created or matched contact record',
924
+ },
925
+ utmLink: {
926
+ type: 'UTMLink',
927
+ required: false,
928
+ description: 'UTM link that drove this submission',
929
+ },
930
+ assignee: {
931
+ type: 'Contact',
932
+ required: false,
933
+ description: 'Person assigned to follow up',
934
+ },
935
+ },
936
+ actions: [
937
+ 'create',
938
+ 'update',
939
+ 'delete',
940
+ 'qualify',
941
+ 'contact',
942
+ 'convert',
943
+ 'assign',
944
+ 'markSpam',
945
+ 'markNotSpam',
946
+ 'export',
947
+ 'merge',
948
+ ],
949
+ events: [
950
+ 'submitted',
951
+ 'updated',
952
+ 'deleted',
953
+ 'qualified',
954
+ 'contacted',
955
+ 'converted',
956
+ 'assigned',
957
+ 'markedSpam',
958
+ 'exported',
959
+ ],
960
+ };
961
+ // =============================================================================
962
+ // SocialPost
963
+ // =============================================================================
964
+ /**
965
+ * Social media post entity
966
+ *
967
+ * Represents a social media post scheduled or published across platforms
968
+ */
969
+ export const SocialPost = {
970
+ singular: 'social post',
971
+ plural: 'social posts',
972
+ description: 'A social media post for one or more platforms',
973
+ properties: {
974
+ // Content
975
+ message: {
976
+ type: 'string',
977
+ description: 'Post text content',
978
+ },
979
+ mediaUrls: {
980
+ type: 'url',
981
+ array: true,
982
+ optional: true,
983
+ description: 'Attached media URLs (images, videos)',
984
+ },
985
+ mediaType: {
986
+ type: 'string',
987
+ optional: true,
988
+ description: 'Media type: image, video, gif, carousel',
989
+ examples: ['image', 'video', 'gif', 'carousel'],
990
+ },
991
+ link: {
992
+ type: 'url',
993
+ optional: true,
994
+ description: 'Shared link URL',
995
+ },
996
+ linkPreview: {
997
+ type: 'json',
998
+ optional: true,
999
+ description: 'Link preview card data',
1000
+ },
1001
+ // Platform & Targeting
1002
+ platform: {
1003
+ type: 'string',
1004
+ description: 'Social platform: facebook, instagram, twitter, linkedin, tiktok, youtube',
1005
+ examples: ['facebook', 'instagram', 'twitter', 'linkedin', 'tiktok', 'youtube'],
1006
+ },
1007
+ accountId: {
1008
+ type: 'string',
1009
+ optional: true,
1010
+ description: 'Platform account/page identifier',
1011
+ },
1012
+ accountName: {
1013
+ type: 'string',
1014
+ optional: true,
1015
+ description: 'Platform account/page name',
1016
+ },
1017
+ // Scheduling
1018
+ status: {
1019
+ type: 'string',
1020
+ description: 'Post status: draft, scheduled, published, failed, deleted',
1021
+ examples: ['draft', 'scheduled', 'published', 'failed', 'deleted'],
1022
+ },
1023
+ scheduledAt: {
1024
+ type: 'datetime',
1025
+ optional: true,
1026
+ description: 'Scheduled publish time',
1027
+ },
1028
+ publishedAt: {
1029
+ type: 'datetime',
1030
+ optional: true,
1031
+ description: 'Actual publish time',
1032
+ },
1033
+ // Platform-specific
1034
+ platformPostId: {
1035
+ type: 'string',
1036
+ optional: true,
1037
+ description: 'Post ID on the platform',
1038
+ },
1039
+ platformUrl: {
1040
+ type: 'url',
1041
+ optional: true,
1042
+ description: 'Direct URL to the post on the platform',
1043
+ },
1044
+ // Hashtags & Mentions
1045
+ hashtags: {
1046
+ type: 'string',
1047
+ array: true,
1048
+ optional: true,
1049
+ description: 'Hashtags used in the post',
1050
+ },
1051
+ mentions: {
1052
+ type: 'string',
1053
+ array: true,
1054
+ optional: true,
1055
+ description: 'User handles mentioned',
1056
+ },
1057
+ // Engagement Metrics
1058
+ likes: {
1059
+ type: 'number',
1060
+ optional: true,
1061
+ description: 'Number of likes/reactions',
1062
+ },
1063
+ comments: {
1064
+ type: 'number',
1065
+ optional: true,
1066
+ description: 'Number of comments',
1067
+ },
1068
+ shares: {
1069
+ type: 'number',
1070
+ optional: true,
1071
+ description: 'Number of shares/retweets',
1072
+ },
1073
+ clicks: {
1074
+ type: 'number',
1075
+ optional: true,
1076
+ description: 'Number of link clicks',
1077
+ },
1078
+ impressions: {
1079
+ type: 'number',
1080
+ optional: true,
1081
+ description: 'Total impressions',
1082
+ },
1083
+ reach: {
1084
+ type: 'number',
1085
+ optional: true,
1086
+ description: 'Unique reach',
1087
+ },
1088
+ engagementRate: {
1089
+ type: 'number',
1090
+ optional: true,
1091
+ description: 'Engagement rate (percentage)',
1092
+ },
1093
+ // Metadata
1094
+ tags: {
1095
+ type: 'string',
1096
+ array: true,
1097
+ optional: true,
1098
+ description: 'Internal tags for organization',
1099
+ },
1100
+ notes: {
1101
+ type: 'string',
1102
+ optional: true,
1103
+ description: 'Internal notes',
1104
+ },
1105
+ },
1106
+ relationships: {
1107
+ campaign: {
1108
+ type: 'Campaign',
1109
+ required: false,
1110
+ description: 'Campaign this post belongs to',
1111
+ },
1112
+ utmLink: {
1113
+ type: 'UTMLink',
1114
+ required: false,
1115
+ description: 'Tracked URL included in post',
1116
+ },
1117
+ author: {
1118
+ type: 'Contact',
1119
+ description: 'Post creator',
1120
+ },
1121
+ },
1122
+ actions: [
1123
+ 'create',
1124
+ 'update',
1125
+ 'delete',
1126
+ 'schedule',
1127
+ 'publish',
1128
+ 'cancel',
1129
+ 'reschedule',
1130
+ 'boost',
1131
+ 'preview',
1132
+ 'analyze',
1133
+ 'export',
1134
+ ],
1135
+ events: [
1136
+ 'created',
1137
+ 'updated',
1138
+ 'deleted',
1139
+ 'scheduled',
1140
+ 'published',
1141
+ 'failed',
1142
+ 'canceled',
1143
+ 'rescheduled',
1144
+ 'boosted',
1145
+ 'liked',
1146
+ 'commented',
1147
+ 'shared',
1148
+ ],
1149
+ };
1150
+ // =============================================================================
1151
+ // AdCreative
1152
+ // =============================================================================
1153
+ /**
1154
+ * Ad creative entity
1155
+ *
1156
+ * Represents an advertisement creative with copy, images, and CTA
1157
+ */
1158
+ export const AdCreative = {
1159
+ singular: 'ad creative',
1160
+ plural: 'ad creatives',
1161
+ description: 'An advertisement creative for paid campaigns',
1162
+ properties: {
1163
+ // Identity
1164
+ name: {
1165
+ type: 'string',
1166
+ description: 'Creative name (internal)',
1167
+ },
1168
+ description: {
1169
+ type: 'string',
1170
+ optional: true,
1171
+ description: 'Internal description',
1172
+ },
1173
+ // Format & Type
1174
+ format: {
1175
+ type: 'string',
1176
+ description: 'Ad format: image, video, carousel, collection, story, banner',
1177
+ examples: ['image', 'video', 'carousel', 'collection', 'story', 'banner'],
1178
+ },
1179
+ adType: {
1180
+ type: 'string',
1181
+ optional: true,
1182
+ description: 'Ad type: display, search, social, video, native',
1183
+ examples: ['display', 'search', 'social', 'video', 'native'],
1184
+ },
1185
+ // Creative Assets
1186
+ headline: {
1187
+ type: 'string',
1188
+ optional: true,
1189
+ description: 'Primary headline',
1190
+ },
1191
+ body: {
1192
+ type: 'string',
1193
+ optional: true,
1194
+ description: 'Ad body copy',
1195
+ },
1196
+ adDescription: {
1197
+ type: 'string',
1198
+ optional: true,
1199
+ description: 'Ad description text',
1200
+ },
1201
+ imageUrl: {
1202
+ type: 'url',
1203
+ optional: true,
1204
+ description: 'Primary image URL',
1205
+ },
1206
+ videoUrl: {
1207
+ type: 'url',
1208
+ optional: true,
1209
+ description: 'Video URL',
1210
+ },
1211
+ thumbnailUrl: {
1212
+ type: 'url',
1213
+ optional: true,
1214
+ description: 'Video thumbnail or creative preview',
1215
+ },
1216
+ mediaUrls: {
1217
+ type: 'url',
1218
+ array: true,
1219
+ optional: true,
1220
+ description: 'Multiple media assets (for carousel, etc.)',
1221
+ },
1222
+ // Call to Action
1223
+ ctaText: {
1224
+ type: 'string',
1225
+ optional: true,
1226
+ description: 'Call-to-action button text',
1227
+ },
1228
+ ctaType: {
1229
+ type: 'string',
1230
+ optional: true,
1231
+ description: 'CTA type: learn-more, shop-now, sign-up, download, contact',
1232
+ examples: ['learn-more', 'shop-now', 'sign-up', 'download', 'contact'],
1233
+ },
1234
+ destinationUrl: {
1235
+ type: 'url',
1236
+ optional: true,
1237
+ description: 'Landing page URL',
1238
+ },
1239
+ // Dimensions & Specs
1240
+ dimensions: {
1241
+ type: 'json',
1242
+ optional: true,
1243
+ description: 'Creative dimensions (width x height)',
1244
+ },
1245
+ aspectRatio: {
1246
+ type: 'string',
1247
+ optional: true,
1248
+ description: 'Aspect ratio (16:9, 1:1, 9:16, etc.)',
1249
+ examples: ['16:9', '1:1', '9:16', '4:5'],
1250
+ },
1251
+ fileSize: {
1252
+ type: 'number',
1253
+ optional: true,
1254
+ description: 'File size in bytes',
1255
+ },
1256
+ duration: {
1257
+ type: 'number',
1258
+ optional: true,
1259
+ description: 'Video duration in seconds',
1260
+ },
1261
+ // Platform & Placement
1262
+ platform: {
1263
+ type: 'string',
1264
+ optional: true,
1265
+ description: 'Target platform: facebook, instagram, google, linkedin, twitter',
1266
+ examples: ['facebook', 'instagram', 'google', 'linkedin', 'twitter'],
1267
+ },
1268
+ placement: {
1269
+ type: 'string',
1270
+ optional: true,
1271
+ description: 'Ad placement: feed, story, search, display, video',
1272
+ examples: ['feed', 'story', 'search', 'display', 'video'],
1273
+ },
1274
+ // Status
1275
+ status: {
1276
+ type: 'string',
1277
+ description: 'Creative status: draft, active, paused, archived, rejected',
1278
+ examples: ['draft', 'active', 'paused', 'archived', 'rejected'],
1279
+ },
1280
+ approvalStatus: {
1281
+ type: 'string',
1282
+ optional: true,
1283
+ description: 'Platform approval status: pending, approved, rejected',
1284
+ examples: ['pending', 'approved', 'rejected'],
1285
+ },
1286
+ rejectionReason: {
1287
+ type: 'string',
1288
+ optional: true,
1289
+ description: 'Reason for rejection if applicable',
1290
+ },
1291
+ // Performance Metrics
1292
+ impressions: {
1293
+ type: 'number',
1294
+ optional: true,
1295
+ description: 'Total impressions',
1296
+ },
1297
+ clicks: {
1298
+ type: 'number',
1299
+ optional: true,
1300
+ description: 'Total clicks',
1301
+ },
1302
+ conversions: {
1303
+ type: 'number',
1304
+ optional: true,
1305
+ description: 'Total conversions',
1306
+ },
1307
+ ctr: {
1308
+ type: 'number',
1309
+ optional: true,
1310
+ description: 'Click-through rate (percentage)',
1311
+ },
1312
+ conversionRate: {
1313
+ type: 'number',
1314
+ optional: true,
1315
+ description: 'Conversion rate (percentage)',
1316
+ },
1317
+ spend: {
1318
+ type: 'number',
1319
+ optional: true,
1320
+ description: 'Total spend on this creative',
1321
+ },
1322
+ cpc: {
1323
+ type: 'number',
1324
+ optional: true,
1325
+ description: 'Cost per click',
1326
+ },
1327
+ cpm: {
1328
+ type: 'number',
1329
+ optional: true,
1330
+ description: 'Cost per thousand impressions',
1331
+ },
1332
+ cpa: {
1333
+ type: 'number',
1334
+ optional: true,
1335
+ description: 'Cost per acquisition',
1336
+ },
1337
+ // Metadata
1338
+ tags: {
1339
+ type: 'string',
1340
+ array: true,
1341
+ optional: true,
1342
+ description: 'Tags for organization',
1343
+ },
1344
+ },
1345
+ relationships: {
1346
+ campaign: {
1347
+ type: 'Campaign',
1348
+ required: false,
1349
+ description: 'Campaign this creative belongs to',
1350
+ },
1351
+ utmLink: {
1352
+ type: 'UTMLink',
1353
+ required: false,
1354
+ description: 'Tracked URL for this creative',
1355
+ },
1356
+ audience: {
1357
+ type: 'Audience',
1358
+ required: false,
1359
+ description: 'Target audience',
1360
+ },
1361
+ creator: {
1362
+ type: 'Contact',
1363
+ description: 'Creative designer/creator',
1364
+ },
1365
+ variants: {
1366
+ type: 'AdCreative[]',
1367
+ description: 'A/B test variants',
1368
+ },
1369
+ },
1370
+ actions: [
1371
+ 'create',
1372
+ 'update',
1373
+ 'delete',
1374
+ 'preview',
1375
+ 'submit',
1376
+ 'approve',
1377
+ 'reject',
1378
+ 'activate',
1379
+ 'pause',
1380
+ 'duplicate',
1381
+ 'archive',
1382
+ 'test',
1383
+ 'export',
1384
+ ],
1385
+ events: [
1386
+ 'created',
1387
+ 'updated',
1388
+ 'deleted',
1389
+ 'submitted',
1390
+ 'approved',
1391
+ 'rejected',
1392
+ 'activated',
1393
+ 'paused',
1394
+ 'duplicated',
1395
+ 'archived',
1396
+ ],
1397
+ };
1398
+ // =============================================================================
1399
+ // UTMLink
1400
+ // =============================================================================
1401
+ /**
1402
+ * UTM tracked link entity
1403
+ *
1404
+ * Represents a URL with UTM parameters for tracking campaign performance
1405
+ */
1406
+ export const UTMLink = {
1407
+ singular: 'utm link',
1408
+ plural: 'utm links',
1409
+ description: 'A tracked URL with UTM parameters for campaign attribution',
1410
+ properties: {
1411
+ // Identity
1412
+ name: {
1413
+ type: 'string',
1414
+ optional: true,
1415
+ description: 'Link name (internal)',
1416
+ },
1417
+ description: {
1418
+ type: 'string',
1419
+ optional: true,
1420
+ description: 'Link description',
1421
+ },
1422
+ // URLs
1423
+ destinationUrl: {
1424
+ type: 'url',
1425
+ description: 'Original destination URL (without UTM parameters)',
1426
+ },
1427
+ fullUrl: {
1428
+ type: 'url',
1429
+ description: 'Complete URL with UTM parameters',
1430
+ },
1431
+ shortUrl: {
1432
+ type: 'url',
1433
+ optional: true,
1434
+ description: 'Shortened URL (bit.ly, etc.)',
1435
+ },
1436
+ // UTM Parameters
1437
+ utmSource: {
1438
+ type: 'string',
1439
+ description: 'Traffic source (utm_source): google, facebook, newsletter',
1440
+ },
1441
+ utmMedium: {
1442
+ type: 'string',
1443
+ description: 'Marketing medium (utm_medium): email, cpc, social, organic',
1444
+ },
1445
+ utmCampaign: {
1446
+ type: 'string',
1447
+ description: 'Campaign name (utm_campaign)',
1448
+ },
1449
+ utmTerm: {
1450
+ type: 'string',
1451
+ optional: true,
1452
+ description: 'Paid keyword (utm_term)',
1453
+ },
1454
+ utmContent: {
1455
+ type: 'string',
1456
+ optional: true,
1457
+ description: 'Content variant (utm_content) for A/B testing',
1458
+ },
1459
+ // Additional Tracking
1460
+ customParameters: {
1461
+ type: 'json',
1462
+ optional: true,
1463
+ description: 'Additional custom tracking parameters',
1464
+ },
1465
+ trackingId: {
1466
+ type: 'string',
1467
+ optional: true,
1468
+ description: 'Internal tracking identifier',
1469
+ },
1470
+ // Context
1471
+ platform: {
1472
+ type: 'string',
1473
+ optional: true,
1474
+ description: 'Platform where link is used: email, social, ad, website',
1475
+ examples: ['email', 'social', 'ad', 'website'],
1476
+ },
1477
+ placement: {
1478
+ type: 'string',
1479
+ optional: true,
1480
+ description: 'Specific placement location',
1481
+ },
1482
+ // Performance Metrics
1483
+ clicks: {
1484
+ type: 'number',
1485
+ optional: true,
1486
+ description: 'Total clicks',
1487
+ },
1488
+ uniqueClicks: {
1489
+ type: 'number',
1490
+ optional: true,
1491
+ description: 'Unique clicks',
1492
+ },
1493
+ conversions: {
1494
+ type: 'number',
1495
+ optional: true,
1496
+ description: 'Total conversions attributed',
1497
+ },
1498
+ revenue: {
1499
+ type: 'number',
1500
+ optional: true,
1501
+ description: 'Revenue attributed to this link',
1502
+ },
1503
+ // Status
1504
+ status: {
1505
+ type: 'string',
1506
+ description: 'Link status: active, expired, archived',
1507
+ examples: ['active', 'expired', 'archived'],
1508
+ },
1509
+ expiresAt: {
1510
+ type: 'datetime',
1511
+ optional: true,
1512
+ description: 'Link expiration date',
1513
+ },
1514
+ // Metadata
1515
+ tags: {
1516
+ type: 'string',
1517
+ array: true,
1518
+ optional: true,
1519
+ description: 'Tags for organization',
1520
+ },
1521
+ notes: {
1522
+ type: 'string',
1523
+ optional: true,
1524
+ description: 'Internal notes',
1525
+ },
1526
+ },
1527
+ relationships: {
1528
+ campaign: {
1529
+ type: 'Campaign',
1530
+ required: false,
1531
+ description: 'Campaign this link belongs to',
1532
+ },
1533
+ emailTemplate: {
1534
+ type: 'EmailTemplate',
1535
+ required: false,
1536
+ description: 'Email template using this link',
1537
+ },
1538
+ landingPage: {
1539
+ type: 'LandingPage',
1540
+ required: false,
1541
+ description: 'Landing page where this link appears',
1542
+ },
1543
+ socialPost: {
1544
+ type: 'SocialPost',
1545
+ required: false,
1546
+ description: 'Social post using this link',
1547
+ },
1548
+ adCreative: {
1549
+ type: 'AdCreative',
1550
+ required: false,
1551
+ description: 'Ad creative using this link',
1552
+ },
1553
+ formSubmissions: {
1554
+ type: 'FormSubmission[]',
1555
+ description: 'Form submissions attributed to this link',
1556
+ },
1557
+ creator: {
1558
+ type: 'Contact',
1559
+ description: 'Link creator',
1560
+ },
1561
+ },
1562
+ actions: [
1563
+ 'create',
1564
+ 'update',
1565
+ 'delete',
1566
+ 'shorten',
1567
+ 'copy',
1568
+ 'share',
1569
+ 'test',
1570
+ 'archive',
1571
+ 'expire',
1572
+ 'renew',
1573
+ 'export',
1574
+ ],
1575
+ events: [
1576
+ 'created',
1577
+ 'updated',
1578
+ 'deleted',
1579
+ 'shortened',
1580
+ 'clicked',
1581
+ 'converted',
1582
+ 'archived',
1583
+ 'expired',
1584
+ 'renewed',
1585
+ ],
1586
+ };
1587
+ // =============================================================================
1588
+ // Export all entities as a schema
1589
+ // =============================================================================
1590
+ /**
1591
+ * All marketing entity types
1592
+ */
1593
+ export const MarketingEntities = {
1594
+ Campaign,
1595
+ Audience,
1596
+ EmailTemplate,
1597
+ LandingPage,
1598
+ FormSubmission,
1599
+ SocialPost,
1600
+ AdCreative,
1601
+ UTMLink,
1602
+ };
1603
+ /**
1604
+ * Entity categories for organization
1605
+ */
1606
+ export const MarketingCategories = {
1607
+ core: ['Campaign', 'Audience'],
1608
+ content: ['EmailTemplate', 'LandingPage', 'SocialPost', 'AdCreative'],
1609
+ tracking: ['UTMLink', 'FormSubmission'],
1610
+ };
1611
+ //# sourceMappingURL=marketing.js.map