@rapidmx/crm-plugin 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (888) hide show
  1. package/LICENSE +382 -0
  2. package/README.md +210 -0
  3. package/apps/admin-crm/_layout.tsx +46 -0
  4. package/apps/admin-crm/index.tsx +16 -0
  5. package/apps/crm/_layout.tsx +46 -0
  6. package/apps/crm/automations/[uid].tsx +16 -0
  7. package/apps/crm/automations/index.tsx +16 -0
  8. package/apps/crm/campaigns/[uid].tsx +16 -0
  9. package/apps/crm/campaigns/index.tsx +16 -0
  10. package/apps/crm/companies/[uid].tsx +16 -0
  11. package/apps/crm/companies/index.tsx +16 -0
  12. package/apps/crm/contacts/[uid].tsx +16 -0
  13. package/apps/crm/deals/[uid].tsx +16 -0
  14. package/apps/crm/deals/index.tsx +16 -0
  15. package/apps/crm/forms/index.tsx +16 -0
  16. package/apps/crm/imports/index.tsx +16 -0
  17. package/apps/crm/index.tsx +16 -0
  18. package/apps/crm/integrations/index.tsx +16 -0
  19. package/apps/crm/lists/index.tsx +16 -0
  20. package/apps/crm/pipelines/index.tsx +16 -0
  21. package/apps/crm/reports/index.tsx +16 -0
  22. package/apps/crm/scoring/index.tsx +16 -0
  23. package/apps/crm/segments/index.tsx +16 -0
  24. package/apps/crm/settings/index.tsx +16 -0
  25. package/apps/crm/tasks/index.tsx +16 -0
  26. package/apps/crm/templates/[uid].tsx +16 -0
  27. package/apps/crm/templates/index.tsx +16 -0
  28. package/apps/f/[formUid].tsx +11 -0
  29. package/apps/f/_layout.tsx +33 -0
  30. package/apps/f/index.tsx +15 -0
  31. package/apps/shared/components/CrmShell.tsx +229 -0
  32. package/apps/shared/components/FilterBuilder.tsx +204 -0
  33. package/apps/shared/components/FormManager.tsx +326 -0
  34. package/apps/shared/components/ImportWizard.tsx +251 -0
  35. package/apps/shared/components/Integrations.tsx +401 -0
  36. package/apps/shared/components/ListManager.tsx +206 -0
  37. package/apps/shared/components/RecordDetail.tsx +444 -0
  38. package/apps/shared/components/RecordList.tsx +446 -0
  39. package/apps/shared/components/ScoringRules.tsx +262 -0
  40. package/apps/shared/components/SegmentManager.tsx +245 -0
  41. package/apps/shared/components/TaskList.tsx +140 -0
  42. package/apps/shared/components/TemplateList.tsx +170 -0
  43. package/apps/shared/components/WorkspaceSettings.tsx +503 -0
  44. package/apps/shared/components/admin/CrmAdmin.tsx +129 -0
  45. package/apps/shared/components/automations/AutomationEditor.tsx +530 -0
  46. package/apps/shared/components/automations/AutomationList.tsx +147 -0
  47. package/apps/shared/components/automations/StepInspector.tsx +403 -0
  48. package/apps/shared/components/automations/flowModel.ts +331 -0
  49. package/apps/shared/components/campaigns/CampaignEditor.tsx +471 -0
  50. package/apps/shared/components/campaigns/CampaignList.tsx +164 -0
  51. package/apps/shared/components/campaigns/CampaignPage.tsx +30 -0
  52. package/apps/shared/components/campaigns/CampaignReport.tsx +345 -0
  53. package/apps/shared/components/campaigns/campaignUi.tsx +33 -0
  54. package/apps/shared/components/deals/ContactDeals.tsx +40 -0
  55. package/apps/shared/components/deals/DealBoard.tsx +287 -0
  56. package/apps/shared/components/deals/DealDetail.tsx +363 -0
  57. package/apps/shared/components/deals/PipelineManager.tsx +207 -0
  58. package/apps/shared/components/deals/dealUi.ts +24 -0
  59. package/apps/shared/components/designer/BlockView.tsx +92 -0
  60. package/apps/shared/components/designer/Canvas.tsx +206 -0
  61. package/apps/shared/components/designer/Inspector.tsx +339 -0
  62. package/apps/shared/components/designer/LazyTextBlockEditor.tsx +68 -0
  63. package/apps/shared/components/designer/MergeTagPicker.tsx +31 -0
  64. package/apps/shared/components/designer/PreviewModal.tsx +119 -0
  65. package/apps/shared/components/designer/TemplateDesigner.tsx +408 -0
  66. package/apps/shared/components/designer/TestSendModal.tsx +75 -0
  67. package/apps/shared/components/designer/TextBlockEditor.tsx +122 -0
  68. package/apps/shared/components/designer/designModel.ts +276 -0
  69. package/apps/shared/components/public/PublicPages.tsx +343 -0
  70. package/apps/shared/components/public/honeypot.ts +7 -0
  71. package/apps/shared/components/reports/Charts.tsx +315 -0
  72. package/apps/shared/components/reports/Reports.tsx +198 -0
  73. package/apps/shared/crmApi.ts +1046 -0
  74. package/apps/shared/fields.ts +175 -0
  75. package/apps/shared/publicApi.ts +50 -0
  76. package/apps/subscriptions/[token].tsx +11 -0
  77. package/apps/subscriptions/_layout.tsx +33 -0
  78. package/apps/subscriptions/confirm/[token].tsx +11 -0
  79. package/apps/subscriptions/index.tsx +11 -0
  80. package/apps/subscriptions/unsubscribe/[token].tsx +11 -0
  81. package/dist/apps/admin-crm/_layout.d.ts +15 -0
  82. package/dist/apps/admin-crm/_layout.js +8 -0
  83. package/dist/apps/admin-crm/index.d.ts +4 -0
  84. package/dist/apps/admin-crm/index.js +7 -0
  85. package/dist/apps/crm/_layout.d.ts +15 -0
  86. package/dist/apps/crm/_layout.js +8 -0
  87. package/dist/apps/crm/automations/[uid].d.ts +8 -0
  88. package/dist/apps/crm/automations/[uid].js +7 -0
  89. package/dist/apps/crm/automations/index.d.ts +4 -0
  90. package/dist/apps/crm/automations/index.js +7 -0
  91. package/dist/apps/crm/campaigns/[uid].d.ts +8 -0
  92. package/dist/apps/crm/campaigns/[uid].js +7 -0
  93. package/dist/apps/crm/campaigns/index.d.ts +4 -0
  94. package/dist/apps/crm/campaigns/index.js +7 -0
  95. package/dist/apps/crm/companies/[uid].d.ts +8 -0
  96. package/dist/apps/crm/companies/[uid].js +7 -0
  97. package/dist/apps/crm/companies/index.d.ts +4 -0
  98. package/dist/apps/crm/companies/index.js +7 -0
  99. package/dist/apps/crm/contacts/[uid].d.ts +8 -0
  100. package/dist/apps/crm/contacts/[uid].js +7 -0
  101. package/dist/apps/crm/deals/[uid].d.ts +8 -0
  102. package/dist/apps/crm/deals/[uid].js +7 -0
  103. package/dist/apps/crm/deals/index.d.ts +4 -0
  104. package/dist/apps/crm/deals/index.js +7 -0
  105. package/dist/apps/crm/forms/index.d.ts +4 -0
  106. package/dist/apps/crm/forms/index.js +7 -0
  107. package/dist/apps/crm/imports/index.d.ts +4 -0
  108. package/dist/apps/crm/imports/index.js +7 -0
  109. package/dist/apps/crm/index.d.ts +4 -0
  110. package/dist/apps/crm/index.js +7 -0
  111. package/dist/apps/crm/integrations/index.d.ts +4 -0
  112. package/dist/apps/crm/integrations/index.js +7 -0
  113. package/dist/apps/crm/lists/index.d.ts +4 -0
  114. package/dist/apps/crm/lists/index.js +7 -0
  115. package/dist/apps/crm/pipelines/index.d.ts +4 -0
  116. package/dist/apps/crm/pipelines/index.js +7 -0
  117. package/dist/apps/crm/reports/index.d.ts +4 -0
  118. package/dist/apps/crm/reports/index.js +7 -0
  119. package/dist/apps/crm/scoring/index.d.ts +4 -0
  120. package/dist/apps/crm/scoring/index.js +7 -0
  121. package/dist/apps/crm/segments/index.d.ts +4 -0
  122. package/dist/apps/crm/segments/index.js +7 -0
  123. package/dist/apps/crm/settings/index.d.ts +4 -0
  124. package/dist/apps/crm/settings/index.js +7 -0
  125. package/dist/apps/crm/tasks/index.d.ts +4 -0
  126. package/dist/apps/crm/tasks/index.js +7 -0
  127. package/dist/apps/crm/templates/[uid].d.ts +8 -0
  128. package/dist/apps/crm/templates/[uid].js +7 -0
  129. package/dist/apps/crm/templates/index.d.ts +4 -0
  130. package/dist/apps/crm/templates/index.js +7 -0
  131. package/dist/apps/f/[formUid].d.ts +7 -0
  132. package/dist/apps/f/[formUid].js +6 -0
  133. package/dist/apps/f/_layout.d.ts +8 -0
  134. package/dist/apps/f/_layout.js +8 -0
  135. package/dist/apps/f/index.d.ts +3 -0
  136. package/dist/apps/f/index.js +6 -0
  137. package/dist/apps/shared/components/CrmShell.d.ts +39 -0
  138. package/dist/apps/shared/components/CrmShell.js +127 -0
  139. package/dist/apps/shared/components/FilterBuilder.d.ts +34 -0
  140. package/dist/apps/shared/components/FilterBuilder.js +101 -0
  141. package/dist/apps/shared/components/FormManager.d.ts +7 -0
  142. package/dist/apps/shared/components/FormManager.js +132 -0
  143. package/dist/apps/shared/components/ImportWizard.d.ts +8 -0
  144. package/dist/apps/shared/components/ImportWizard.js +105 -0
  145. package/dist/apps/shared/components/Integrations.d.ts +13 -0
  146. package/dist/apps/shared/components/Integrations.js +164 -0
  147. package/dist/apps/shared/components/ListManager.d.ts +6 -0
  148. package/dist/apps/shared/components/ListManager.js +95 -0
  149. package/dist/apps/shared/components/RecordDetail.d.ts +30 -0
  150. package/dist/apps/shared/components/RecordDetail.js +244 -0
  151. package/dist/apps/shared/components/RecordList.d.ts +13 -0
  152. package/dist/apps/shared/components/RecordList.js +214 -0
  153. package/dist/apps/shared/components/ScoringRules.d.ts +13 -0
  154. package/dist/apps/shared/components/ScoringRules.js +128 -0
  155. package/dist/apps/shared/components/SegmentManager.d.ts +10 -0
  156. package/dist/apps/shared/components/SegmentManager.js +119 -0
  157. package/dist/apps/shared/components/TaskList.d.ts +3 -0
  158. package/dist/apps/shared/components/TaskList.js +62 -0
  159. package/dist/apps/shared/components/TemplateList.d.ts +3 -0
  160. package/dist/apps/shared/components/TemplateList.js +81 -0
  161. package/dist/apps/shared/components/WorkspaceSettings.d.ts +6 -0
  162. package/dist/apps/shared/components/WorkspaceSettings.js +239 -0
  163. package/dist/apps/shared/components/admin/CrmAdmin.d.ts +9 -0
  164. package/dist/apps/shared/components/admin/CrmAdmin.js +56 -0
  165. package/dist/apps/shared/components/automations/AutomationEditor.d.ts +15 -0
  166. package/dist/apps/shared/components/automations/AutomationEditor.js +219 -0
  167. package/dist/apps/shared/components/automations/AutomationList.d.ts +3 -0
  168. package/dist/apps/shared/components/automations/AutomationList.js +65 -0
  169. package/dist/apps/shared/components/automations/StepInspector.d.ts +40 -0
  170. package/dist/apps/shared/components/automations/StepInspector.js +177 -0
  171. package/dist/apps/shared/components/automations/flowModel.d.ts +67 -0
  172. package/dist/apps/shared/components/automations/flowModel.js +292 -0
  173. package/dist/apps/shared/components/campaigns/CampaignEditor.d.ts +11 -0
  174. package/dist/apps/shared/components/campaigns/CampaignEditor.js +163 -0
  175. package/dist/apps/shared/components/campaigns/CampaignList.d.ts +3 -0
  176. package/dist/apps/shared/components/campaigns/CampaignList.js +80 -0
  177. package/dist/apps/shared/components/campaigns/CampaignPage.d.ts +5 -0
  178. package/dist/apps/shared/components/campaigns/CampaignPage.js +24 -0
  179. package/dist/apps/shared/components/campaigns/CampaignReport.d.ts +13 -0
  180. package/dist/apps/shared/components/campaigns/CampaignReport.js +119 -0
  181. package/dist/apps/shared/components/campaigns/campaignUi.d.ts +10 -0
  182. package/dist/apps/shared/components/campaigns/campaignUi.js +24 -0
  183. package/dist/apps/shared/components/deals/ContactDeals.d.ts +5 -0
  184. package/dist/apps/shared/components/deals/ContactDeals.js +18 -0
  185. package/dist/apps/shared/components/deals/DealBoard.d.ts +7 -0
  186. package/dist/apps/shared/components/deals/DealBoard.js +134 -0
  187. package/dist/apps/shared/components/deals/DealDetail.d.ts +8 -0
  188. package/dist/apps/shared/components/deals/DealDetail.js +148 -0
  189. package/dist/apps/shared/components/deals/PipelineManager.d.ts +7 -0
  190. package/dist/apps/shared/components/deals/PipelineManager.js +62 -0
  191. package/dist/apps/shared/components/deals/dealUi.d.ts +7 -0
  192. package/dist/apps/shared/components/deals/dealUi.js +17 -0
  193. package/dist/apps/shared/components/designer/BlockView.d.ts +10 -0
  194. package/dist/apps/shared/components/designer/BlockView.js +37 -0
  195. package/dist/apps/shared/components/designer/Canvas.d.ts +31 -0
  196. package/dist/apps/shared/components/designer/Canvas.js +71 -0
  197. package/dist/apps/shared/components/designer/Inspector.d.ts +27 -0
  198. package/dist/apps/shared/components/designer/Inspector.js +102 -0
  199. package/dist/apps/shared/components/designer/LazyTextBlockEditor.d.ts +7 -0
  200. package/dist/apps/shared/components/designer/LazyTextBlockEditor.js +42 -0
  201. package/dist/apps/shared/components/designer/MergeTagPicker.d.ts +11 -0
  202. package/dist/apps/shared/components/designer/MergeTagPicker.js +15 -0
  203. package/dist/apps/shared/components/designer/PreviewModal.d.ts +15 -0
  204. package/dist/apps/shared/components/designer/PreviewModal.js +50 -0
  205. package/dist/apps/shared/components/designer/TemplateDesigner.d.ts +10 -0
  206. package/dist/apps/shared/components/designer/TemplateDesigner.js +194 -0
  207. package/dist/apps/shared/components/designer/TestSendModal.d.ts +11 -0
  208. package/dist/apps/shared/components/designer/TestSendModal.js +35 -0
  209. package/dist/apps/shared/components/designer/TextBlockEditor.d.ts +16 -0
  210. package/dist/apps/shared/components/designer/TextBlockEditor.js +81 -0
  211. package/dist/apps/shared/components/designer/designModel.d.ts +86 -0
  212. package/dist/apps/shared/components/designer/designModel.js +230 -0
  213. package/dist/apps/shared/components/public/PublicPages.d.ts +29 -0
  214. package/dist/apps/shared/components/public/PublicPages.js +155 -0
  215. package/dist/apps/shared/components/public/honeypot.d.ts +2 -0
  216. package/dist/apps/shared/components/public/honeypot.js +6 -0
  217. package/dist/apps/shared/components/reports/Charts.d.ts +32 -0
  218. package/dist/apps/shared/components/reports/Charts.js +121 -0
  219. package/dist/apps/shared/components/reports/Reports.d.ts +9 -0
  220. package/dist/apps/shared/components/reports/Reports.js +61 -0
  221. package/dist/apps/shared/crmApi.d.ts +909 -0
  222. package/dist/apps/shared/crmApi.js +240 -0
  223. package/dist/apps/shared/fields.d.ts +45 -0
  224. package/dist/apps/shared/fields.js +146 -0
  225. package/dist/apps/shared/publicApi.d.ts +48 -0
  226. package/dist/apps/shared/publicApi.js +17 -0
  227. package/dist/apps/subscriptions/[token].d.ts +7 -0
  228. package/dist/apps/subscriptions/[token].js +6 -0
  229. package/dist/apps/subscriptions/_layout.d.ts +8 -0
  230. package/dist/apps/subscriptions/_layout.js +8 -0
  231. package/dist/apps/subscriptions/confirm/[token].d.ts +7 -0
  232. package/dist/apps/subscriptions/confirm/[token].js +6 -0
  233. package/dist/apps/subscriptions/index.d.ts +3 -0
  234. package/dist/apps/subscriptions/index.js +6 -0
  235. package/dist/apps/subscriptions/unsubscribe/[token].d.ts +7 -0
  236. package/dist/apps/subscriptions/unsubscribe/[token].js +6 -0
  237. package/dist/lib/automation/Dates.js +85 -0
  238. package/dist/lib/automation/Dates.js.map +1 -0
  239. package/dist/lib/automation/Engine.js +384 -0
  240. package/dist/lib/automation/Engine.js.map +1 -0
  241. package/dist/lib/automation/Events.js +46 -0
  242. package/dist/lib/automation/Events.js.map +1 -0
  243. package/dist/lib/automation/Graph.js +296 -0
  244. package/dist/lib/automation/Graph.js.map +1 -0
  245. package/dist/lib/filters/Filter.js +343 -0
  246. package/dist/lib/filters/Filter.js.map +1 -0
  247. package/dist/lib/filters/fields.js +71 -0
  248. package/dist/lib/filters/fields.js.map +1 -0
  249. package/dist/lib/index.js +86 -0
  250. package/dist/lib/index.js.map +1 -0
  251. package/dist/lib/jobs/AutomationRunJob.js +110 -0
  252. package/dist/lib/jobs/AutomationRunJob.js.map +1 -0
  253. package/dist/lib/jobs/AutomationTriggerJob.js +126 -0
  254. package/dist/lib/jobs/AutomationTriggerJob.js.map +1 -0
  255. package/dist/lib/jobs/CampaignJob.js +285 -0
  256. package/dist/lib/jobs/CampaignJob.js.map +1 -0
  257. package/dist/lib/jobs/CrmImportJob.js +218 -0
  258. package/dist/lib/jobs/CrmImportJob.js.map +1 -0
  259. package/dist/lib/jobs/CrmJobBase.js +75 -0
  260. package/dist/lib/jobs/CrmJobBase.js.map +1 -0
  261. package/dist/lib/jobs/CrmMailEventJob.js +232 -0
  262. package/dist/lib/jobs/CrmMailEventJob.js.map +1 -0
  263. package/dist/lib/jobs/DateTriggerJob.js +155 -0
  264. package/dist/lib/jobs/DateTriggerJob.js.map +1 -0
  265. package/dist/lib/jobs/ScoringJob.js +75 -0
  266. package/dist/lib/jobs/ScoringJob.js.map +1 -0
  267. package/dist/lib/jobs/SegmentRefreshJob.js +84 -0
  268. package/dist/lib/jobs/SegmentRefreshJob.js.map +1 -0
  269. package/dist/lib/jobs/SendDispatchJob.js +277 -0
  270. package/dist/lib/jobs/SendDispatchJob.js.map +1 -0
  271. package/dist/lib/jobs/TaskReminderJob.js +70 -0
  272. package/dist/lib/jobs/TaskReminderJob.js.map +1 -0
  273. package/dist/lib/jobs/WebhookDeliveryJob.js +126 -0
  274. package/dist/lib/jobs/WebhookDeliveryJob.js.map +1 -0
  275. package/dist/lib/jobs/mongo/AutomationRunJobMongo.js +12 -0
  276. package/dist/lib/jobs/mongo/AutomationRunJobMongo.js.map +1 -0
  277. package/dist/lib/jobs/mongo/AutomationTriggerJobMongo.js +10 -0
  278. package/dist/lib/jobs/mongo/AutomationTriggerJobMongo.js.map +1 -0
  279. package/dist/lib/jobs/mongo/CampaignJobMongo.js +10 -0
  280. package/dist/lib/jobs/mongo/CampaignJobMongo.js.map +1 -0
  281. package/dist/lib/jobs/mongo/CrmImportJobMongo.js +14 -0
  282. package/dist/lib/jobs/mongo/CrmImportJobMongo.js.map +1 -0
  283. package/dist/lib/jobs/mongo/CrmMailEventJobMongo.js +10 -0
  284. package/dist/lib/jobs/mongo/CrmMailEventJobMongo.js.map +1 -0
  285. package/dist/lib/jobs/mongo/DateTriggerJobMongo.js +10 -0
  286. package/dist/lib/jobs/mongo/DateTriggerJobMongo.js.map +1 -0
  287. package/dist/lib/jobs/mongo/ScoringJobMongo.js +10 -0
  288. package/dist/lib/jobs/mongo/ScoringJobMongo.js.map +1 -0
  289. package/dist/lib/jobs/mongo/SegmentRefreshJobMongo.js +10 -0
  290. package/dist/lib/jobs/mongo/SegmentRefreshJobMongo.js.map +1 -0
  291. package/dist/lib/jobs/mongo/SendDispatchJobMongo.js +10 -0
  292. package/dist/lib/jobs/mongo/SendDispatchJobMongo.js.map +1 -0
  293. package/dist/lib/jobs/mongo/TaskReminderJobMongo.js +10 -0
  294. package/dist/lib/jobs/mongo/TaskReminderJobMongo.js.map +1 -0
  295. package/dist/lib/jobs/mongo/WebhookDeliveryJobMongo.js +10 -0
  296. package/dist/lib/jobs/mongo/WebhookDeliveryJobMongo.js.map +1 -0
  297. package/dist/lib/jobs/sql/AutomationRunJobSQL.js +12 -0
  298. package/dist/lib/jobs/sql/AutomationRunJobSQL.js.map +1 -0
  299. package/dist/lib/jobs/sql/AutomationTriggerJobSQL.js +10 -0
  300. package/dist/lib/jobs/sql/AutomationTriggerJobSQL.js.map +1 -0
  301. package/dist/lib/jobs/sql/CampaignJobSQL.js +10 -0
  302. package/dist/lib/jobs/sql/CampaignJobSQL.js.map +1 -0
  303. package/dist/lib/jobs/sql/CrmImportJobSQL.js +14 -0
  304. package/dist/lib/jobs/sql/CrmImportJobSQL.js.map +1 -0
  305. package/dist/lib/jobs/sql/CrmMailEventJobSQL.js +10 -0
  306. package/dist/lib/jobs/sql/CrmMailEventJobSQL.js.map +1 -0
  307. package/dist/lib/jobs/sql/DateTriggerJobSQL.js +10 -0
  308. package/dist/lib/jobs/sql/DateTriggerJobSQL.js.map +1 -0
  309. package/dist/lib/jobs/sql/ScoringJobSQL.js +10 -0
  310. package/dist/lib/jobs/sql/ScoringJobSQL.js.map +1 -0
  311. package/dist/lib/jobs/sql/SegmentRefreshJobSQL.js +10 -0
  312. package/dist/lib/jobs/sql/SegmentRefreshJobSQL.js.map +1 -0
  313. package/dist/lib/jobs/sql/SendDispatchJobSQL.js +10 -0
  314. package/dist/lib/jobs/sql/SendDispatchJobSQL.js.map +1 -0
  315. package/dist/lib/jobs/sql/TaskReminderJobSQL.js +10 -0
  316. package/dist/lib/jobs/sql/TaskReminderJobSQL.js.map +1 -0
  317. package/dist/lib/jobs/sql/WebhookDeliveryJobSQL.js +10 -0
  318. package/dist/lib/jobs/sql/WebhookDeliveryJobSQL.js.map +1 -0
  319. package/dist/lib/models/CrmModelClasses.js +44 -0
  320. package/dist/lib/models/CrmModelClasses.js.map +1 -0
  321. package/dist/lib/models/mongo/ApiKeyMongo.js +105 -0
  322. package/dist/lib/models/mongo/ApiKeyMongo.js.map +1 -0
  323. package/dist/lib/models/mongo/AutomationMongo.js +126 -0
  324. package/dist/lib/models/mongo/AutomationMongo.js.map +1 -0
  325. package/dist/lib/models/mongo/AutomationVersionMongo.js +82 -0
  326. package/dist/lib/models/mongo/AutomationVersionMongo.js.map +1 -0
  327. package/dist/lib/models/mongo/CampaignMongo.js +211 -0
  328. package/dist/lib/models/mongo/CampaignMongo.js.map +1 -0
  329. package/dist/lib/models/mongo/CrmCompanyMongo.js +126 -0
  330. package/dist/lib/models/mongo/CrmCompanyMongo.js.map +1 -0
  331. package/dist/lib/models/mongo/CrmContactMongo.js +156 -0
  332. package/dist/lib/models/mongo/CrmContactMongo.js.map +1 -0
  333. package/dist/lib/models/mongo/CrmEventMongo.js +92 -0
  334. package/dist/lib/models/mongo/CrmEventMongo.js.map +1 -0
  335. package/dist/lib/models/mongo/CrmFormMongo.js +139 -0
  336. package/dist/lib/models/mongo/CrmFormMongo.js.map +1 -0
  337. package/dist/lib/models/mongo/CrmImportMongo.js +190 -0
  338. package/dist/lib/models/mongo/CrmImportMongo.js.map +1 -0
  339. package/dist/lib/models/mongo/CrmNoteMongo.js +89 -0
  340. package/dist/lib/models/mongo/CrmNoteMongo.js.map +1 -0
  341. package/dist/lib/models/mongo/CrmSettingMongo.js +60 -0
  342. package/dist/lib/models/mongo/CrmSettingMongo.js.map +1 -0
  343. package/dist/lib/models/mongo/CrmTaskMongo.js +136 -0
  344. package/dist/lib/models/mongo/CrmTaskMongo.js.map +1 -0
  345. package/dist/lib/models/mongo/DealMongo.js +163 -0
  346. package/dist/lib/models/mongo/DealMongo.js.map +1 -0
  347. package/dist/lib/models/mongo/EmailTemplateMongo.js +90 -0
  348. package/dist/lib/models/mongo/EmailTemplateMongo.js.map +1 -0
  349. package/dist/lib/models/mongo/EngagementEventMongo.js +113 -0
  350. package/dist/lib/models/mongo/EngagementEventMongo.js.map +1 -0
  351. package/dist/lib/models/mongo/EnrollmentMongo.js +150 -0
  352. package/dist/lib/models/mongo/EnrollmentMongo.js.map +1 -0
  353. package/dist/lib/models/mongo/MailingListMongo.js +104 -0
  354. package/dist/lib/models/mongo/MailingListMongo.js.map +1 -0
  355. package/dist/lib/models/mongo/OutboundSendMongo.js +265 -0
  356. package/dist/lib/models/mongo/OutboundSendMongo.js.map +1 -0
  357. package/dist/lib/models/mongo/PipelineMongo.js +74 -0
  358. package/dist/lib/models/mongo/PipelineMongo.js.map +1 -0
  359. package/dist/lib/models/mongo/PropertyDefinitionMongo.js +105 -0
  360. package/dist/lib/models/mongo/PropertyDefinitionMongo.js.map +1 -0
  361. package/dist/lib/models/mongo/PropertyValueMongo.js +101 -0
  362. package/dist/lib/models/mongo/PropertyValueMongo.js.map +1 -0
  363. package/dist/lib/models/mongo/SavedBlockMongo.js +67 -0
  364. package/dist/lib/models/mongo/SavedBlockMongo.js.map +1 -0
  365. package/dist/lib/models/mongo/ScoringRuleMongo.js +112 -0
  366. package/dist/lib/models/mongo/ScoringRuleMongo.js.map +1 -0
  367. package/dist/lib/models/mongo/SegmentMongo.js +113 -0
  368. package/dist/lib/models/mongo/SegmentMongo.js.map +1 -0
  369. package/dist/lib/models/mongo/SubscriptionMongo.js +114 -0
  370. package/dist/lib/models/mongo/SubscriptionMongo.js.map +1 -0
  371. package/dist/lib/models/mongo/SuppressionMongo.js +77 -0
  372. package/dist/lib/models/mongo/SuppressionMongo.js.map +1 -0
  373. package/dist/lib/models/mongo/TimelineEventMongo.js +112 -0
  374. package/dist/lib/models/mongo/TimelineEventMongo.js.map +1 -0
  375. package/dist/lib/models/mongo/WebhookDeliveryMongo.js +128 -0
  376. package/dist/lib/models/mongo/WebhookDeliveryMongo.js.map +1 -0
  377. package/dist/lib/models/mongo/WebhookEndpointMongo.js +118 -0
  378. package/dist/lib/models/mongo/WebhookEndpointMongo.js.map +1 -0
  379. package/dist/lib/models/mongo/WorkspaceMemberMongo.js +92 -0
  380. package/dist/lib/models/mongo/WorkspaceMemberMongo.js.map +1 -0
  381. package/dist/lib/models/mongo/WorkspaceMongo.js +117 -0
  382. package/dist/lib/models/mongo/WorkspaceMongo.js.map +1 -0
  383. package/dist/lib/models/mongo/WorkspaceSenderMongo.js +100 -0
  384. package/dist/lib/models/mongo/WorkspaceSenderMongo.js.map +1 -0
  385. package/dist/lib/models/mongo/index.js +74 -0
  386. package/dist/lib/models/mongo/index.js.map +1 -0
  387. package/dist/lib/models/sql/ApiKeySQL.js +105 -0
  388. package/dist/lib/models/sql/ApiKeySQL.js.map +1 -0
  389. package/dist/lib/models/sql/AutomationSQL.js +126 -0
  390. package/dist/lib/models/sql/AutomationSQL.js.map +1 -0
  391. package/dist/lib/models/sql/AutomationVersionSQL.js +82 -0
  392. package/dist/lib/models/sql/AutomationVersionSQL.js.map +1 -0
  393. package/dist/lib/models/sql/CampaignSQL.js +211 -0
  394. package/dist/lib/models/sql/CampaignSQL.js.map +1 -0
  395. package/dist/lib/models/sql/CrmCompanySQL.js +126 -0
  396. package/dist/lib/models/sql/CrmCompanySQL.js.map +1 -0
  397. package/dist/lib/models/sql/CrmContactSQL.js +156 -0
  398. package/dist/lib/models/sql/CrmContactSQL.js.map +1 -0
  399. package/dist/lib/models/sql/CrmEventSQL.js +92 -0
  400. package/dist/lib/models/sql/CrmEventSQL.js.map +1 -0
  401. package/dist/lib/models/sql/CrmFormSQL.js +139 -0
  402. package/dist/lib/models/sql/CrmFormSQL.js.map +1 -0
  403. package/dist/lib/models/sql/CrmImportSQL.js +190 -0
  404. package/dist/lib/models/sql/CrmImportSQL.js.map +1 -0
  405. package/dist/lib/models/sql/CrmNoteSQL.js +89 -0
  406. package/dist/lib/models/sql/CrmNoteSQL.js.map +1 -0
  407. package/dist/lib/models/sql/CrmSettingSQL.js +60 -0
  408. package/dist/lib/models/sql/CrmSettingSQL.js.map +1 -0
  409. package/dist/lib/models/sql/CrmTaskSQL.js +136 -0
  410. package/dist/lib/models/sql/CrmTaskSQL.js.map +1 -0
  411. package/dist/lib/models/sql/DealSQL.js +163 -0
  412. package/dist/lib/models/sql/DealSQL.js.map +1 -0
  413. package/dist/lib/models/sql/EmailTemplateSQL.js +90 -0
  414. package/dist/lib/models/sql/EmailTemplateSQL.js.map +1 -0
  415. package/dist/lib/models/sql/EngagementEventSQL.js +113 -0
  416. package/dist/lib/models/sql/EngagementEventSQL.js.map +1 -0
  417. package/dist/lib/models/sql/EnrollmentSQL.js +150 -0
  418. package/dist/lib/models/sql/EnrollmentSQL.js.map +1 -0
  419. package/dist/lib/models/sql/MailingListSQL.js +104 -0
  420. package/dist/lib/models/sql/MailingListSQL.js.map +1 -0
  421. package/dist/lib/models/sql/OutboundSendSQL.js +265 -0
  422. package/dist/lib/models/sql/OutboundSendSQL.js.map +1 -0
  423. package/dist/lib/models/sql/PipelineSQL.js +74 -0
  424. package/dist/lib/models/sql/PipelineSQL.js.map +1 -0
  425. package/dist/lib/models/sql/PropertyDefinitionSQL.js +105 -0
  426. package/dist/lib/models/sql/PropertyDefinitionSQL.js.map +1 -0
  427. package/dist/lib/models/sql/PropertyValueSQL.js +101 -0
  428. package/dist/lib/models/sql/PropertyValueSQL.js.map +1 -0
  429. package/dist/lib/models/sql/SavedBlockSQL.js +67 -0
  430. package/dist/lib/models/sql/SavedBlockSQL.js.map +1 -0
  431. package/dist/lib/models/sql/ScoringRuleSQL.js +112 -0
  432. package/dist/lib/models/sql/ScoringRuleSQL.js.map +1 -0
  433. package/dist/lib/models/sql/SegmentSQL.js +113 -0
  434. package/dist/lib/models/sql/SegmentSQL.js.map +1 -0
  435. package/dist/lib/models/sql/SubscriptionSQL.js +114 -0
  436. package/dist/lib/models/sql/SubscriptionSQL.js.map +1 -0
  437. package/dist/lib/models/sql/SuppressionSQL.js +77 -0
  438. package/dist/lib/models/sql/SuppressionSQL.js.map +1 -0
  439. package/dist/lib/models/sql/TimelineEventSQL.js +112 -0
  440. package/dist/lib/models/sql/TimelineEventSQL.js.map +1 -0
  441. package/dist/lib/models/sql/WebhookDeliverySQL.js +128 -0
  442. package/dist/lib/models/sql/WebhookDeliverySQL.js.map +1 -0
  443. package/dist/lib/models/sql/WebhookEndpointSQL.js +118 -0
  444. package/dist/lib/models/sql/WebhookEndpointSQL.js.map +1 -0
  445. package/dist/lib/models/sql/WorkspaceMemberSQL.js +92 -0
  446. package/dist/lib/models/sql/WorkspaceMemberSQL.js.map +1 -0
  447. package/dist/lib/models/sql/WorkspaceSQL.js +117 -0
  448. package/dist/lib/models/sql/WorkspaceSQL.js.map +1 -0
  449. package/dist/lib/models/sql/WorkspaceSenderSQL.js +100 -0
  450. package/dist/lib/models/sql/WorkspaceSenderSQL.js.map +1 -0
  451. package/dist/lib/models/sql/index.js +74 -0
  452. package/dist/lib/models/sql/index.js.map +1 -0
  453. package/dist/lib/models/types.js +275 -0
  454. package/dist/lib/models/types.js.map +1 -0
  455. package/dist/lib/mongo.js +80 -0
  456. package/dist/lib/mongo.js.map +1 -0
  457. package/dist/lib/purge.js +68 -0
  458. package/dist/lib/purge.js.map +1 -0
  459. package/dist/lib/routes/BaseAnalyticsRoute.js +217 -0
  460. package/dist/lib/routes/BaseAnalyticsRoute.js.map +1 -0
  461. package/dist/lib/routes/BaseApiKeyRoute.js +76 -0
  462. package/dist/lib/routes/BaseApiKeyRoute.js.map +1 -0
  463. package/dist/lib/routes/BaseAutomationRoute.js +316 -0
  464. package/dist/lib/routes/BaseAutomationRoute.js.map +1 -0
  465. package/dist/lib/routes/BaseCampaignRoute.js +443 -0
  466. package/dist/lib/routes/BaseCampaignRoute.js.map +1 -0
  467. package/dist/lib/routes/BaseCompanyRoute.js +106 -0
  468. package/dist/lib/routes/BaseCompanyRoute.js.map +1 -0
  469. package/dist/lib/routes/BaseContactRoute.js +162 -0
  470. package/dist/lib/routes/BaseContactRoute.js.map +1 -0
  471. package/dist/lib/routes/BaseCrmAdminRoute.js +108 -0
  472. package/dist/lib/routes/BaseCrmAdminRoute.js.map +1 -0
  473. package/dist/lib/routes/BaseDealRoute.js +312 -0
  474. package/dist/lib/routes/BaseDealRoute.js.map +1 -0
  475. package/dist/lib/routes/BaseFormRoute.js +124 -0
  476. package/dist/lib/routes/BaseFormRoute.js.map +1 -0
  477. package/dist/lib/routes/BaseImportRoute.js +231 -0
  478. package/dist/lib/routes/BaseImportRoute.js.map +1 -0
  479. package/dist/lib/routes/BaseIntegrationRoute.js +181 -0
  480. package/dist/lib/routes/BaseIntegrationRoute.js.map +1 -0
  481. package/dist/lib/routes/BaseListRoute.js +89 -0
  482. package/dist/lib/routes/BaseListRoute.js.map +1 -0
  483. package/dist/lib/routes/BaseNoteRoute.js +69 -0
  484. package/dist/lib/routes/BaseNoteRoute.js.map +1 -0
  485. package/dist/lib/routes/BasePipelineRoute.js +149 -0
  486. package/dist/lib/routes/BasePipelineRoute.js.map +1 -0
  487. package/dist/lib/routes/BasePropertyDefinitionRoute.js +140 -0
  488. package/dist/lib/routes/BasePropertyDefinitionRoute.js.map +1 -0
  489. package/dist/lib/routes/BasePublicRoute.js +528 -0
  490. package/dist/lib/routes/BasePublicRoute.js.map +1 -0
  491. package/dist/lib/routes/BaseSavedBlockRoute.js +39 -0
  492. package/dist/lib/routes/BaseSavedBlockRoute.js.map +1 -0
  493. package/dist/lib/routes/BaseScoringRuleRoute.js +146 -0
  494. package/dist/lib/routes/BaseScoringRuleRoute.js.map +1 -0
  495. package/dist/lib/routes/BaseSegmentRoute.js +136 -0
  496. package/dist/lib/routes/BaseSegmentRoute.js.map +1 -0
  497. package/dist/lib/routes/BaseSubscriptionRoute.js +92 -0
  498. package/dist/lib/routes/BaseSubscriptionRoute.js.map +1 -0
  499. package/dist/lib/routes/BaseSuppressionRoute.js +48 -0
  500. package/dist/lib/routes/BaseSuppressionRoute.js.map +1 -0
  501. package/dist/lib/routes/BaseTaggedRecordRoute.js +312 -0
  502. package/dist/lib/routes/BaseTaggedRecordRoute.js.map +1 -0
  503. package/dist/lib/routes/BaseTaskRoute.js +116 -0
  504. package/dist/lib/routes/BaseTaskRoute.js.map +1 -0
  505. package/dist/lib/routes/BaseTemplateRoute.js +207 -0
  506. package/dist/lib/routes/BaseTemplateRoute.js.map +1 -0
  507. package/dist/lib/routes/BaseTimelineRoute.js +47 -0
  508. package/dist/lib/routes/BaseTimelineRoute.js.map +1 -0
  509. package/dist/lib/routes/BaseTrackingRoute.js +106 -0
  510. package/dist/lib/routes/BaseTrackingRoute.js.map +1 -0
  511. package/dist/lib/routes/BaseWebhookRoute.js +173 -0
  512. package/dist/lib/routes/BaseWebhookRoute.js.map +1 -0
  513. package/dist/lib/routes/BaseWorkspaceRecordRoute.js +220 -0
  514. package/dist/lib/routes/BaseWorkspaceRecordRoute.js.map +1 -0
  515. package/dist/lib/routes/BaseWorkspaceRoute.js +540 -0
  516. package/dist/lib/routes/BaseWorkspaceRoute.js.map +1 -0
  517. package/dist/lib/routes/CrmRouteBase.js +261 -0
  518. package/dist/lib/routes/CrmRouteBase.js.map +1 -0
  519. package/dist/lib/routes/mongo/AnalyticsRouteMongo.js +26 -0
  520. package/dist/lib/routes/mongo/AnalyticsRouteMongo.js.map +1 -0
  521. package/dist/lib/routes/mongo/ApiKeyRouteMongo.js +26 -0
  522. package/dist/lib/routes/mongo/ApiKeyRouteMongo.js.map +1 -0
  523. package/dist/lib/routes/mongo/AutomationRouteMongo.js +26 -0
  524. package/dist/lib/routes/mongo/AutomationRouteMongo.js.map +1 -0
  525. package/dist/lib/routes/mongo/CampaignRouteMongo.js +26 -0
  526. package/dist/lib/routes/mongo/CampaignRouteMongo.js.map +1 -0
  527. package/dist/lib/routes/mongo/CompanyRouteMongo.js +26 -0
  528. package/dist/lib/routes/mongo/CompanyRouteMongo.js.map +1 -0
  529. package/dist/lib/routes/mongo/ContactRouteMongo.js +26 -0
  530. package/dist/lib/routes/mongo/ContactRouteMongo.js.map +1 -0
  531. package/dist/lib/routes/mongo/CrmAdminRouteMongo.js +26 -0
  532. package/dist/lib/routes/mongo/CrmAdminRouteMongo.js.map +1 -0
  533. package/dist/lib/routes/mongo/DealRouteMongo.js +26 -0
  534. package/dist/lib/routes/mongo/DealRouteMongo.js.map +1 -0
  535. package/dist/lib/routes/mongo/FormRouteMongo.js +26 -0
  536. package/dist/lib/routes/mongo/FormRouteMongo.js.map +1 -0
  537. package/dist/lib/routes/mongo/ImportRouteMongo.js +26 -0
  538. package/dist/lib/routes/mongo/ImportRouteMongo.js.map +1 -0
  539. package/dist/lib/routes/mongo/IntegrationRouteMongo.js +28 -0
  540. package/dist/lib/routes/mongo/IntegrationRouteMongo.js.map +1 -0
  541. package/dist/lib/routes/mongo/ListRouteMongo.js +26 -0
  542. package/dist/lib/routes/mongo/ListRouteMongo.js.map +1 -0
  543. package/dist/lib/routes/mongo/NoteRouteMongo.js +26 -0
  544. package/dist/lib/routes/mongo/NoteRouteMongo.js.map +1 -0
  545. package/dist/lib/routes/mongo/PipelineRouteMongo.js +26 -0
  546. package/dist/lib/routes/mongo/PipelineRouteMongo.js.map +1 -0
  547. package/dist/lib/routes/mongo/PropertyDefinitionRouteMongo.js +26 -0
  548. package/dist/lib/routes/mongo/PropertyDefinitionRouteMongo.js.map +1 -0
  549. package/dist/lib/routes/mongo/PublicRouteMongo.js +28 -0
  550. package/dist/lib/routes/mongo/PublicRouteMongo.js.map +1 -0
  551. package/dist/lib/routes/mongo/SavedBlockRouteMongo.js +26 -0
  552. package/dist/lib/routes/mongo/SavedBlockRouteMongo.js.map +1 -0
  553. package/dist/lib/routes/mongo/ScoringRuleRouteMongo.js +26 -0
  554. package/dist/lib/routes/mongo/ScoringRuleRouteMongo.js.map +1 -0
  555. package/dist/lib/routes/mongo/SegmentRouteMongo.js +26 -0
  556. package/dist/lib/routes/mongo/SegmentRouteMongo.js.map +1 -0
  557. package/dist/lib/routes/mongo/SubscriptionRouteMongo.js +26 -0
  558. package/dist/lib/routes/mongo/SubscriptionRouteMongo.js.map +1 -0
  559. package/dist/lib/routes/mongo/SuppressionRouteMongo.js +26 -0
  560. package/dist/lib/routes/mongo/SuppressionRouteMongo.js.map +1 -0
  561. package/dist/lib/routes/mongo/TaskRouteMongo.js +26 -0
  562. package/dist/lib/routes/mongo/TaskRouteMongo.js.map +1 -0
  563. package/dist/lib/routes/mongo/TemplateRouteMongo.js +26 -0
  564. package/dist/lib/routes/mongo/TemplateRouteMongo.js.map +1 -0
  565. package/dist/lib/routes/mongo/TimelineRouteMongo.js +26 -0
  566. package/dist/lib/routes/mongo/TimelineRouteMongo.js.map +1 -0
  567. package/dist/lib/routes/mongo/TrackingRouteMongo.js +26 -0
  568. package/dist/lib/routes/mongo/TrackingRouteMongo.js.map +1 -0
  569. package/dist/lib/routes/mongo/WebhookRouteMongo.js +26 -0
  570. package/dist/lib/routes/mongo/WebhookRouteMongo.js.map +1 -0
  571. package/dist/lib/routes/mongo/WorkspaceRouteMongo.js +26 -0
  572. package/dist/lib/routes/mongo/WorkspaceRouteMongo.js.map +1 -0
  573. package/dist/lib/routes/sql/AnalyticsRouteSQL.js +26 -0
  574. package/dist/lib/routes/sql/AnalyticsRouteSQL.js.map +1 -0
  575. package/dist/lib/routes/sql/ApiKeyRouteSQL.js +26 -0
  576. package/dist/lib/routes/sql/ApiKeyRouteSQL.js.map +1 -0
  577. package/dist/lib/routes/sql/AutomationRouteSQL.js +26 -0
  578. package/dist/lib/routes/sql/AutomationRouteSQL.js.map +1 -0
  579. package/dist/lib/routes/sql/CampaignRouteSQL.js +26 -0
  580. package/dist/lib/routes/sql/CampaignRouteSQL.js.map +1 -0
  581. package/dist/lib/routes/sql/CompanyRouteSQL.js +26 -0
  582. package/dist/lib/routes/sql/CompanyRouteSQL.js.map +1 -0
  583. package/dist/lib/routes/sql/ContactRouteSQL.js +26 -0
  584. package/dist/lib/routes/sql/ContactRouteSQL.js.map +1 -0
  585. package/dist/lib/routes/sql/CrmAdminRouteSQL.js +26 -0
  586. package/dist/lib/routes/sql/CrmAdminRouteSQL.js.map +1 -0
  587. package/dist/lib/routes/sql/DealRouteSQL.js +26 -0
  588. package/dist/lib/routes/sql/DealRouteSQL.js.map +1 -0
  589. package/dist/lib/routes/sql/FormRouteSQL.js +26 -0
  590. package/dist/lib/routes/sql/FormRouteSQL.js.map +1 -0
  591. package/dist/lib/routes/sql/ImportRouteSQL.js +26 -0
  592. package/dist/lib/routes/sql/ImportRouteSQL.js.map +1 -0
  593. package/dist/lib/routes/sql/IntegrationRouteSQL.js +28 -0
  594. package/dist/lib/routes/sql/IntegrationRouteSQL.js.map +1 -0
  595. package/dist/lib/routes/sql/ListRouteSQL.js +26 -0
  596. package/dist/lib/routes/sql/ListRouteSQL.js.map +1 -0
  597. package/dist/lib/routes/sql/NoteRouteSQL.js +26 -0
  598. package/dist/lib/routes/sql/NoteRouteSQL.js.map +1 -0
  599. package/dist/lib/routes/sql/PipelineRouteSQL.js +26 -0
  600. package/dist/lib/routes/sql/PipelineRouteSQL.js.map +1 -0
  601. package/dist/lib/routes/sql/PropertyDefinitionRouteSQL.js +26 -0
  602. package/dist/lib/routes/sql/PropertyDefinitionRouteSQL.js.map +1 -0
  603. package/dist/lib/routes/sql/PublicRouteSQL.js +28 -0
  604. package/dist/lib/routes/sql/PublicRouteSQL.js.map +1 -0
  605. package/dist/lib/routes/sql/SavedBlockRouteSQL.js +26 -0
  606. package/dist/lib/routes/sql/SavedBlockRouteSQL.js.map +1 -0
  607. package/dist/lib/routes/sql/ScoringRuleRouteSQL.js +26 -0
  608. package/dist/lib/routes/sql/ScoringRuleRouteSQL.js.map +1 -0
  609. package/dist/lib/routes/sql/SegmentRouteSQL.js +26 -0
  610. package/dist/lib/routes/sql/SegmentRouteSQL.js.map +1 -0
  611. package/dist/lib/routes/sql/SubscriptionRouteSQL.js +26 -0
  612. package/dist/lib/routes/sql/SubscriptionRouteSQL.js.map +1 -0
  613. package/dist/lib/routes/sql/SuppressionRouteSQL.js +26 -0
  614. package/dist/lib/routes/sql/SuppressionRouteSQL.js.map +1 -0
  615. package/dist/lib/routes/sql/TaskRouteSQL.js +26 -0
  616. package/dist/lib/routes/sql/TaskRouteSQL.js.map +1 -0
  617. package/dist/lib/routes/sql/TemplateRouteSQL.js +26 -0
  618. package/dist/lib/routes/sql/TemplateRouteSQL.js.map +1 -0
  619. package/dist/lib/routes/sql/TimelineRouteSQL.js +26 -0
  620. package/dist/lib/routes/sql/TimelineRouteSQL.js.map +1 -0
  621. package/dist/lib/routes/sql/TrackingRouteSQL.js +26 -0
  622. package/dist/lib/routes/sql/TrackingRouteSQL.js.map +1 -0
  623. package/dist/lib/routes/sql/WebhookRouteSQL.js +26 -0
  624. package/dist/lib/routes/sql/WebhookRouteSQL.js.map +1 -0
  625. package/dist/lib/routes/sql/WorkspaceRouteSQL.js +26 -0
  626. package/dist/lib/routes/sql/WorkspaceRouteSQL.js.map +1 -0
  627. package/dist/lib/scoring/Scoring.js +105 -0
  628. package/dist/lib/scoring/Scoring.js.map +1 -0
  629. package/dist/lib/segments/Segments.js +125 -0
  630. package/dist/lib/segments/Segments.js.map +1 -0
  631. package/dist/lib/sending/Audience.js +87 -0
  632. package/dist/lib/sending/Audience.js.map +1 -0
  633. package/dist/lib/sending/CampaignRenderer.js +123 -0
  634. package/dist/lib/sending/CampaignRenderer.js.map +1 -0
  635. package/dist/lib/sending/Engagement.js +216 -0
  636. package/dist/lib/sending/Engagement.js.map +1 -0
  637. package/dist/lib/sending/Stats.js +70 -0
  638. package/dist/lib/sending/Stats.js.map +1 -0
  639. package/dist/lib/sending/Tracking.js +98 -0
  640. package/dist/lib/sending/Tracking.js.map +1 -0
  641. package/dist/lib/sql.js +80 -0
  642. package/dist/lib/sql.js.map +1 -0
  643. package/dist/lib/templates/Design.js +278 -0
  644. package/dist/lib/templates/Design.js.map +1 -0
  645. package/dist/lib/templates/MergeContext.js +57 -0
  646. package/dist/lib/templates/MergeContext.js.map +1 -0
  647. package/dist/lib/templates/Render.js +147 -0
  648. package/dist/lib/templates/Render.js.map +1 -0
  649. package/dist/lib/templates/Sanitize.js +98 -0
  650. package/dist/lib/templates/Sanitize.js.map +1 -0
  651. package/dist/lib/util/Csv.js +128 -0
  652. package/dist/lib/util/Csv.js.map +1 -0
  653. package/dist/lib/util/ImportMapping.js +206 -0
  654. package/dist/lib/util/ImportMapping.js.map +1 -0
  655. package/dist/lib/util/Mailer.js +43 -0
  656. package/dist/lib/util/Mailer.js.map +1 -0
  657. package/dist/lib/util/PropertyValues.js +145 -0
  658. package/dist/lib/util/PropertyValues.js.map +1 -0
  659. package/dist/lib/util/Secrets.js +31 -0
  660. package/dist/lib/util/Secrets.js.map +1 -0
  661. package/dist/lib/util/Tokens.js +58 -0
  662. package/dist/lib/util/Tokens.js.map +1 -0
  663. package/dist/lib/util/Validation.js +194 -0
  664. package/dist/lib/util/Validation.js.map +1 -0
  665. package/dist/lib/util/WorkspaceAccess.js +55 -0
  666. package/dist/lib/util/WorkspaceAccess.js.map +1 -0
  667. package/dist/lib/webhooks/Deliveries.js +47 -0
  668. package/dist/lib/webhooks/Deliveries.js.map +1 -0
  669. package/dist/lib/webhooks/Webhooks.js +132 -0
  670. package/dist/lib/webhooks/Webhooks.js.map +1 -0
  671. package/dist/types/automation/Dates.d.ts +42 -0
  672. package/dist/types/automation/Engine.d.ts +63 -0
  673. package/dist/types/automation/Events.d.ts +43 -0
  674. package/dist/types/automation/Graph.d.ts +77 -0
  675. package/dist/types/filters/Filter.d.ts +83 -0
  676. package/dist/types/filters/fields.d.ts +9 -0
  677. package/dist/types/index.d.ts +81 -0
  678. package/dist/types/jobs/AutomationRunJob.d.ts +18 -0
  679. package/dist/types/jobs/AutomationTriggerJob.d.ts +23 -0
  680. package/dist/types/jobs/CampaignJob.d.ts +45 -0
  681. package/dist/types/jobs/CrmImportJob.d.ts +44 -0
  682. package/dist/types/jobs/CrmJobBase.d.ts +26 -0
  683. package/dist/types/jobs/CrmMailEventJob.d.ts +102 -0
  684. package/dist/types/jobs/DateTriggerJob.d.ts +21 -0
  685. package/dist/types/jobs/ScoringJob.d.ts +13 -0
  686. package/dist/types/jobs/SegmentRefreshJob.d.ts +16 -0
  687. package/dist/types/jobs/SendDispatchJob.d.ts +52 -0
  688. package/dist/types/jobs/TaskReminderJob.d.ts +12 -0
  689. package/dist/types/jobs/WebhookDeliveryJob.d.ts +22 -0
  690. package/dist/types/jobs/mongo/AutomationRunJobMongo.d.ts +7 -0
  691. package/dist/types/jobs/mongo/AutomationTriggerJobMongo.d.ts +6 -0
  692. package/dist/types/jobs/mongo/CampaignJobMongo.d.ts +6 -0
  693. package/dist/types/jobs/mongo/CrmImportJobMongo.d.ts +8 -0
  694. package/dist/types/jobs/mongo/CrmMailEventJobMongo.d.ts +6 -0
  695. package/dist/types/jobs/mongo/DateTriggerJobMongo.d.ts +6 -0
  696. package/dist/types/jobs/mongo/ScoringJobMongo.d.ts +6 -0
  697. package/dist/types/jobs/mongo/SegmentRefreshJobMongo.d.ts +6 -0
  698. package/dist/types/jobs/mongo/SendDispatchJobMongo.d.ts +6 -0
  699. package/dist/types/jobs/mongo/TaskReminderJobMongo.d.ts +6 -0
  700. package/dist/types/jobs/mongo/WebhookDeliveryJobMongo.d.ts +6 -0
  701. package/dist/types/jobs/sql/AutomationRunJobSQL.d.ts +7 -0
  702. package/dist/types/jobs/sql/AutomationTriggerJobSQL.d.ts +6 -0
  703. package/dist/types/jobs/sql/CampaignJobSQL.d.ts +6 -0
  704. package/dist/types/jobs/sql/CrmImportJobSQL.d.ts +8 -0
  705. package/dist/types/jobs/sql/CrmMailEventJobSQL.d.ts +6 -0
  706. package/dist/types/jobs/sql/DateTriggerJobSQL.d.ts +6 -0
  707. package/dist/types/jobs/sql/ScoringJobSQL.d.ts +6 -0
  708. package/dist/types/jobs/sql/SegmentRefreshJobSQL.d.ts +6 -0
  709. package/dist/types/jobs/sql/SendDispatchJobSQL.d.ts +6 -0
  710. package/dist/types/jobs/sql/TaskReminderJobSQL.d.ts +6 -0
  711. package/dist/types/jobs/sql/WebhookDeliveryJobSQL.d.ts +6 -0
  712. package/dist/types/models/CrmModelClasses.d.ts +63 -0
  713. package/dist/types/models/mongo/ApiKeyMongo.d.ts +19 -0
  714. package/dist/types/models/mongo/AutomationMongo.d.ts +22 -0
  715. package/dist/types/models/mongo/AutomationVersionMongo.d.ts +16 -0
  716. package/dist/types/models/mongo/CampaignMongo.d.ts +34 -0
  717. package/dist/types/models/mongo/CrmCompanyMongo.d.ts +22 -0
  718. package/dist/types/models/mongo/CrmContactMongo.d.ts +26 -0
  719. package/dist/types/models/mongo/CrmEventMongo.d.ts +17 -0
  720. package/dist/types/models/mongo/CrmFormMongo.d.ts +24 -0
  721. package/dist/types/models/mongo/CrmImportMongo.d.ts +31 -0
  722. package/dist/types/models/mongo/CrmNoteMongo.d.ts +17 -0
  723. package/dist/types/models/mongo/CrmSettingMongo.d.ts +13 -0
  724. package/dist/types/models/mongo/CrmTaskMongo.d.ts +23 -0
  725. package/dist/types/models/mongo/DealMongo.d.ts +27 -0
  726. package/dist/types/models/mongo/EmailTemplateMongo.d.ts +17 -0
  727. package/dist/types/models/mongo/EngagementEventMongo.d.ts +20 -0
  728. package/dist/types/models/mongo/EnrollmentMongo.d.ts +25 -0
  729. package/dist/types/models/mongo/MailingListMongo.d.ts +19 -0
  730. package/dist/types/models/mongo/OutboundSendMongo.d.ts +41 -0
  731. package/dist/types/models/mongo/PipelineMongo.d.ts +15 -0
  732. package/dist/types/models/mongo/PropertyDefinitionMongo.d.ts +19 -0
  733. package/dist/types/models/mongo/PropertyValueMongo.d.ts +18 -0
  734. package/dist/types/models/mongo/SavedBlockMongo.d.ts +14 -0
  735. package/dist/types/models/mongo/ScoringRuleMongo.d.ts +20 -0
  736. package/dist/types/models/mongo/SegmentMongo.d.ts +20 -0
  737. package/dist/types/models/mongo/SubscriptionMongo.d.ts +20 -0
  738. package/dist/types/models/mongo/SuppressionMongo.d.ts +15 -0
  739. package/dist/types/models/mongo/TimelineEventMongo.d.ts +20 -0
  740. package/dist/types/models/mongo/WebhookDeliveryMongo.d.ts +22 -0
  741. package/dist/types/models/mongo/WebhookEndpointMongo.d.ts +21 -0
  742. package/dist/types/models/mongo/WorkspaceMemberMongo.d.ts +17 -0
  743. package/dist/types/models/mongo/WorkspaceMongo.d.ts +21 -0
  744. package/dist/types/models/mongo/WorkspaceSenderMongo.d.ts +18 -0
  745. package/dist/types/models/mongo/index.d.ts +3 -0
  746. package/dist/types/models/sql/ApiKeySQL.d.ts +19 -0
  747. package/dist/types/models/sql/AutomationSQL.d.ts +22 -0
  748. package/dist/types/models/sql/AutomationVersionSQL.d.ts +16 -0
  749. package/dist/types/models/sql/CampaignSQL.d.ts +34 -0
  750. package/dist/types/models/sql/CrmCompanySQL.d.ts +22 -0
  751. package/dist/types/models/sql/CrmContactSQL.d.ts +26 -0
  752. package/dist/types/models/sql/CrmEventSQL.d.ts +17 -0
  753. package/dist/types/models/sql/CrmFormSQL.d.ts +24 -0
  754. package/dist/types/models/sql/CrmImportSQL.d.ts +31 -0
  755. package/dist/types/models/sql/CrmNoteSQL.d.ts +17 -0
  756. package/dist/types/models/sql/CrmSettingSQL.d.ts +13 -0
  757. package/dist/types/models/sql/CrmTaskSQL.d.ts +23 -0
  758. package/dist/types/models/sql/DealSQL.d.ts +27 -0
  759. package/dist/types/models/sql/EmailTemplateSQL.d.ts +17 -0
  760. package/dist/types/models/sql/EngagementEventSQL.d.ts +20 -0
  761. package/dist/types/models/sql/EnrollmentSQL.d.ts +25 -0
  762. package/dist/types/models/sql/MailingListSQL.d.ts +19 -0
  763. package/dist/types/models/sql/OutboundSendSQL.d.ts +41 -0
  764. package/dist/types/models/sql/PipelineSQL.d.ts +15 -0
  765. package/dist/types/models/sql/PropertyDefinitionSQL.d.ts +19 -0
  766. package/dist/types/models/sql/PropertyValueSQL.d.ts +18 -0
  767. package/dist/types/models/sql/SavedBlockSQL.d.ts +14 -0
  768. package/dist/types/models/sql/ScoringRuleSQL.d.ts +20 -0
  769. package/dist/types/models/sql/SegmentSQL.d.ts +20 -0
  770. package/dist/types/models/sql/SubscriptionSQL.d.ts +20 -0
  771. package/dist/types/models/sql/SuppressionSQL.d.ts +15 -0
  772. package/dist/types/models/sql/TimelineEventSQL.d.ts +20 -0
  773. package/dist/types/models/sql/WebhookDeliverySQL.d.ts +22 -0
  774. package/dist/types/models/sql/WebhookEndpointSQL.d.ts +21 -0
  775. package/dist/types/models/sql/WorkspaceMemberSQL.d.ts +17 -0
  776. package/dist/types/models/sql/WorkspaceSQL.d.ts +21 -0
  777. package/dist/types/models/sql/WorkspaceSenderSQL.d.ts +18 -0
  778. package/dist/types/models/sql/index.d.ts +3 -0
  779. package/dist/types/models/types.d.ts +902 -0
  780. package/dist/types/mongo.d.ts +75 -0
  781. package/dist/types/purge.d.ts +32 -0
  782. package/dist/types/routes/BaseAnalyticsRoute.d.ts +87 -0
  783. package/dist/types/routes/BaseApiKeyRoute.d.ts +31 -0
  784. package/dist/types/routes/BaseAutomationRoute.d.ts +56 -0
  785. package/dist/types/routes/BaseCampaignRoute.d.ts +66 -0
  786. package/dist/types/routes/BaseCompanyRoute.d.ts +30 -0
  787. package/dist/types/routes/BaseContactRoute.d.ts +42 -0
  788. package/dist/types/routes/BaseCrmAdminRoute.d.ts +41 -0
  789. package/dist/types/routes/BaseDealRoute.d.ts +65 -0
  790. package/dist/types/routes/BaseFormRoute.d.ts +25 -0
  791. package/dist/types/routes/BaseImportRoute.d.ts +39 -0
  792. package/dist/types/routes/BaseIntegrationRoute.d.ts +46 -0
  793. package/dist/types/routes/BaseListRoute.d.ts +26 -0
  794. package/dist/types/routes/BaseNoteRoute.d.ts +15 -0
  795. package/dist/types/routes/BasePipelineRoute.d.ts +31 -0
  796. package/dist/types/routes/BasePropertyDefinitionRoute.d.ts +24 -0
  797. package/dist/types/routes/BasePublicRoute.d.ts +129 -0
  798. package/dist/types/routes/BaseSavedBlockRoute.d.ts +16 -0
  799. package/dist/types/routes/BaseScoringRuleRoute.d.ts +33 -0
  800. package/dist/types/routes/BaseSegmentRoute.d.ts +36 -0
  801. package/dist/types/routes/BaseSubscriptionRoute.d.ts +20 -0
  802. package/dist/types/routes/BaseSuppressionRoute.d.ts +17 -0
  803. package/dist/types/routes/BaseTaggedRecordRoute.d.ts +85 -0
  804. package/dist/types/routes/BaseTaskRoute.d.ts +18 -0
  805. package/dist/types/routes/BaseTemplateRoute.d.ts +52 -0
  806. package/dist/types/routes/BaseTimelineRoute.d.ts +10 -0
  807. package/dist/types/routes/BaseTrackingRoute.d.ts +21 -0
  808. package/dist/types/routes/BaseWebhookRoute.d.ts +49 -0
  809. package/dist/types/routes/BaseWorkspaceRecordRoute.d.ts +78 -0
  810. package/dist/types/routes/BaseWorkspaceRoute.d.ts +78 -0
  811. package/dist/types/routes/CrmRouteBase.d.ts +95 -0
  812. package/dist/types/routes/mongo/AnalyticsRouteMongo.d.ts +6 -0
  813. package/dist/types/routes/mongo/ApiKeyRouteMongo.d.ts +6 -0
  814. package/dist/types/routes/mongo/AutomationRouteMongo.d.ts +6 -0
  815. package/dist/types/routes/mongo/CampaignRouteMongo.d.ts +6 -0
  816. package/dist/types/routes/mongo/CompanyRouteMongo.d.ts +6 -0
  817. package/dist/types/routes/mongo/ContactRouteMongo.d.ts +6 -0
  818. package/dist/types/routes/mongo/CrmAdminRouteMongo.d.ts +6 -0
  819. package/dist/types/routes/mongo/DealRouteMongo.d.ts +6 -0
  820. package/dist/types/routes/mongo/FormRouteMongo.d.ts +6 -0
  821. package/dist/types/routes/mongo/ImportRouteMongo.d.ts +6 -0
  822. package/dist/types/routes/mongo/IntegrationRouteMongo.d.ts +7 -0
  823. package/dist/types/routes/mongo/ListRouteMongo.d.ts +6 -0
  824. package/dist/types/routes/mongo/NoteRouteMongo.d.ts +6 -0
  825. package/dist/types/routes/mongo/PipelineRouteMongo.d.ts +6 -0
  826. package/dist/types/routes/mongo/PropertyDefinitionRouteMongo.d.ts +6 -0
  827. package/dist/types/routes/mongo/PublicRouteMongo.d.ts +7 -0
  828. package/dist/types/routes/mongo/SavedBlockRouteMongo.d.ts +6 -0
  829. package/dist/types/routes/mongo/ScoringRuleRouteMongo.d.ts +6 -0
  830. package/dist/types/routes/mongo/SegmentRouteMongo.d.ts +6 -0
  831. package/dist/types/routes/mongo/SubscriptionRouteMongo.d.ts +6 -0
  832. package/dist/types/routes/mongo/SuppressionRouteMongo.d.ts +6 -0
  833. package/dist/types/routes/mongo/TaskRouteMongo.d.ts +6 -0
  834. package/dist/types/routes/mongo/TemplateRouteMongo.d.ts +6 -0
  835. package/dist/types/routes/mongo/TimelineRouteMongo.d.ts +6 -0
  836. package/dist/types/routes/mongo/TrackingRouteMongo.d.ts +6 -0
  837. package/dist/types/routes/mongo/WebhookRouteMongo.d.ts +6 -0
  838. package/dist/types/routes/mongo/WorkspaceRouteMongo.d.ts +6 -0
  839. package/dist/types/routes/sql/AnalyticsRouteSQL.d.ts +6 -0
  840. package/dist/types/routes/sql/ApiKeyRouteSQL.d.ts +6 -0
  841. package/dist/types/routes/sql/AutomationRouteSQL.d.ts +6 -0
  842. package/dist/types/routes/sql/CampaignRouteSQL.d.ts +6 -0
  843. package/dist/types/routes/sql/CompanyRouteSQL.d.ts +6 -0
  844. package/dist/types/routes/sql/ContactRouteSQL.d.ts +6 -0
  845. package/dist/types/routes/sql/CrmAdminRouteSQL.d.ts +6 -0
  846. package/dist/types/routes/sql/DealRouteSQL.d.ts +6 -0
  847. package/dist/types/routes/sql/FormRouteSQL.d.ts +6 -0
  848. package/dist/types/routes/sql/ImportRouteSQL.d.ts +6 -0
  849. package/dist/types/routes/sql/IntegrationRouteSQL.d.ts +7 -0
  850. package/dist/types/routes/sql/ListRouteSQL.d.ts +6 -0
  851. package/dist/types/routes/sql/NoteRouteSQL.d.ts +6 -0
  852. package/dist/types/routes/sql/PipelineRouteSQL.d.ts +6 -0
  853. package/dist/types/routes/sql/PropertyDefinitionRouteSQL.d.ts +6 -0
  854. package/dist/types/routes/sql/PublicRouteSQL.d.ts +7 -0
  855. package/dist/types/routes/sql/SavedBlockRouteSQL.d.ts +6 -0
  856. package/dist/types/routes/sql/ScoringRuleRouteSQL.d.ts +6 -0
  857. package/dist/types/routes/sql/SegmentRouteSQL.d.ts +6 -0
  858. package/dist/types/routes/sql/SubscriptionRouteSQL.d.ts +6 -0
  859. package/dist/types/routes/sql/SuppressionRouteSQL.d.ts +6 -0
  860. package/dist/types/routes/sql/TaskRouteSQL.d.ts +6 -0
  861. package/dist/types/routes/sql/TemplateRouteSQL.d.ts +6 -0
  862. package/dist/types/routes/sql/TimelineRouteSQL.d.ts +6 -0
  863. package/dist/types/routes/sql/TrackingRouteSQL.d.ts +6 -0
  864. package/dist/types/routes/sql/WebhookRouteSQL.d.ts +6 -0
  865. package/dist/types/routes/sql/WorkspaceRouteSQL.d.ts +6 -0
  866. package/dist/types/scoring/Scoring.d.ts +14 -0
  867. package/dist/types/segments/Segments.d.ts +46 -0
  868. package/dist/types/sending/Audience.d.ts +39 -0
  869. package/dist/types/sending/CampaignRenderer.d.ts +40 -0
  870. package/dist/types/sending/Engagement.d.ts +50 -0
  871. package/dist/types/sending/Stats.d.ts +17 -0
  872. package/dist/types/sending/Tracking.d.ts +39 -0
  873. package/dist/types/sql.d.ts +75 -0
  874. package/dist/types/templates/Design.d.ts +138 -0
  875. package/dist/types/templates/MergeContext.d.ts +27 -0
  876. package/dist/types/templates/Render.d.ts +46 -0
  877. package/dist/types/templates/Sanitize.d.ts +18 -0
  878. package/dist/types/util/Csv.d.ts +26 -0
  879. package/dist/types/util/ImportMapping.d.ts +23 -0
  880. package/dist/types/util/Mailer.d.ts +24 -0
  881. package/dist/types/util/PropertyValues.d.ts +31 -0
  882. package/dist/types/util/Secrets.d.ts +10 -0
  883. package/dist/types/util/Tokens.d.ts +30 -0
  884. package/dist/types/util/Validation.d.ts +59 -0
  885. package/dist/types/util/WorkspaceAccess.d.ts +24 -0
  886. package/dist/types/webhooks/Deliveries.d.ts +26 -0
  887. package/dist/types/webhooks/Webhooks.d.ts +43 -0
  888. package/package.json +226 -0
@@ -0,0 +1,26 @@
1
+ import { MailingList, WorkspaceAction } from "../models/types.js";
2
+ import { BaseWorkspaceRecordRoute, WriteContext } from "./BaseWorkspaceRecordRoute.js";
3
+ /** How many lists one workspace may have. */
4
+ export declare const MAX_LISTS = 500;
5
+ /** A list as the API shows it: the list, and how many contacts are subscribed to it and waiting to confirm. */
6
+ export interface MailingListView extends MailingList {
7
+ subscribedCount: number;
8
+ pendingCount: number;
9
+ }
10
+ /**
11
+ * A workspace's mailing lists (`/api/mail/crm/lists`) - see `BaseWorkspaceRecordRoute` for the endpoints. Creating, changing and
12
+ * deleting a list takes `MANAGE`. A list with double opt-in needs a sender for its confirmation emails. Deleting a list deletes its
13
+ * subscriptions.
14
+ */
15
+ export declare abstract class BaseListRoute extends BaseWorkspaceRecordRoute<MailingList, MailingListView> {
16
+ protected readonly model: "mailingList";
17
+ protected readonly pushType: string;
18
+ protected readonly writeAction: WorkspaceAction;
19
+ protected readonly sortFields: readonly string[];
20
+ protected readonly maxRecords: number;
21
+ protected readCreate(body: Record<string, unknown>, context: WriteContext): Promise<Partial<MailingList>>;
22
+ protected readUpdate(body: Record<string, unknown>, existing: MailingList, context: WriteContext): Promise<Partial<MailingList>>;
23
+ private readFields;
24
+ protected toViews(records: MailingList[]): Promise<MailingListView[]>;
25
+ protected afterDelete(record: MailingList, context: WriteContext): Promise<void>;
26
+ }
@@ -0,0 +1,15 @@
1
+ import { CrmNote } from "../models/types.js";
2
+ import { BaseWorkspaceRecordRoute, WriteContext } from "./BaseWorkspaceRecordRoute.js";
3
+ /**
4
+ * Notes on contacts and companies (`/api/mail/crm/notes`) - see `BaseWorkspaceRecordRoute` for the endpoints. `GET /:workspaceUid`
5
+ * takes `subjectUid` to list one record's notes. A new note also goes on its record's timeline; deleting it takes it off.
6
+ */
7
+ export declare abstract class BaseNoteRoute extends BaseWorkspaceRecordRoute<CrmNote> {
8
+ protected readonly model: "note";
9
+ protected readonly pushType: string;
10
+ protected readCreate(body: Record<string, unknown>, context: WriteContext): Promise<Partial<CrmNote>>;
11
+ protected readUpdate(body: Record<string, unknown>, existing: CrmNote): Promise<Partial<CrmNote>>;
12
+ protected afterWrite(record: CrmNote, before: CrmNote | undefined, _body: Record<string, unknown>, context: WriteContext): Promise<void>;
13
+ protected afterDelete(record: CrmNote, context: WriteContext): Promise<void>;
14
+ protected listQuery(query: Record<string, unknown>): Record<string, unknown>;
15
+ }
@@ -0,0 +1,31 @@
1
+ import type { JWTUser } from "@rapidrest/core";
2
+ import { Pipeline, PipelineStage, WorkspaceAction } from "../models/types.js";
3
+ import { BaseWorkspaceRecordRoute, WriteContext } from "./BaseWorkspaceRecordRoute.js";
4
+ /** How many pipelines one workspace may have, and stages one pipeline. */
5
+ export declare const MAX_PIPELINES = 20;
6
+ export declare const MAX_STAGES = 20;
7
+ /** The stages a workspace's first pipeline starts with. */
8
+ export declare function defaultStages(): PipelineStage[];
9
+ /**
10
+ * A workspace's sales pipelines (`/api/mail/crm/pipelines`) - see `BaseWorkspaceRecordRoute` for the endpoints; changing them takes
11
+ * `MANAGE`. A workspace with none gets a default one ("Sales") the first time its pipelines are listed.
12
+ *
13
+ * A pipeline's `stages` are replaced as a whole: each keeps its `id` (a new one gets one), and a stage that still holds deals can't be
14
+ * removed. A pipeline needs a won and a lost stage, and one that holds deals can't be deleted. One pipeline is the default.
15
+ */
16
+ export declare abstract class BasePipelineRoute extends BaseWorkspaceRecordRoute<Pipeline> {
17
+ protected readonly model: "pipeline";
18
+ protected readonly pushType: string;
19
+ protected readonly writeAction: WorkspaceAction;
20
+ protected readonly sortFields: readonly string[];
21
+ protected readonly maxRecords: number;
22
+ protected readCreate(body: Record<string, unknown>, context: WriteContext): Promise<Partial<Pipeline>>;
23
+ protected readUpdate(body: Record<string, unknown>, existing: Pipeline): Promise<Partial<Pipeline>>;
24
+ /** `raw` as a pipeline's stages: known ids kept, new ones given one; a won and a lost stage required. */
25
+ private readStages;
26
+ /** A new default takes over from the old one. */
27
+ protected afterWrite(record: Pipeline): Promise<void>;
28
+ protected beforeDelete(record: Pipeline): Promise<void>;
29
+ /** A workspace's pipelines, making it a default one ("Sales") if it has none. */
30
+ list(workspaceUid: string, query: Record<string, unknown> | undefined, user?: JWTUser): Promise<Pipeline[]>;
31
+ }
@@ -0,0 +1,24 @@
1
+ import { PropertyDefinition, WorkspaceAction } from "../models/types.js";
2
+ import { BaseWorkspaceRecordRoute, WriteContext } from "./BaseWorkspaceRecordRoute.js";
3
+ /** How many options a select property may have, and how long one may be. */
4
+ export declare const MAX_OPTIONS = 200;
5
+ export declare const MAX_OPTION_LENGTH = 100;
6
+ /** How many custom properties one workspace may define. */
7
+ export declare const MAX_PROPERTY_DEFINITIONS = 500;
8
+ /**
9
+ * A workspace's custom properties (`/api/mail/crm/properties`) - see `BaseWorkspaceRecordRoute` for the endpoints. Defining them takes
10
+ * `MANAGE` (a workspace admin). A property's `objectType`, `key` and `type` are fixed once created; its label, options, group and
11
+ * description can change. Deleting one deletes every value of it.
12
+ */
13
+ export declare abstract class BasePropertyDefinitionRoute extends BaseWorkspaceRecordRoute<PropertyDefinition> {
14
+ protected readonly model: "propertyDefinition";
15
+ protected readonly pushType: string;
16
+ protected readonly writeAction: WorkspaceAction;
17
+ protected readonly maxRecords: number;
18
+ protected readCreate(body: Record<string, unknown>, context: WriteContext): Promise<Partial<PropertyDefinition>>;
19
+ protected readUpdate(body: Record<string, unknown>, existing: PropertyDefinition): Promise<Partial<PropertyDefinition>>;
20
+ /** The options of a select or multi-select property (required on create), each `{ value, label }` with unique values. */
21
+ private readOptions;
22
+ protected afterDelete(record: PropertyDefinition, context: WriteContext): Promise<void>;
23
+ protected listQuery(query: Record<string, unknown>): Record<string, unknown>;
24
+ }
@@ -0,0 +1,129 @@
1
+ import { HttpRequest, HttpResponse, RateLimiter } from "@rapidrest/service-core";
2
+ import { type MailTransport } from "@rapidmx/restapi";
3
+ import { FormField, PropertyType } from "../models/types.js";
4
+ import { CrmRouteBase } from "./CrmRouteBase.js";
5
+ /** How long a double opt-in confirmation link works, in days. */
6
+ export declare const CONFIRM_TOKEN_DAYS = 7;
7
+ /** The name of a form's hidden trap field: people never fill it in, simple bots do. */
8
+ export declare const HONEYPOT_FIELD = "website";
9
+ /** A form as anyone may see it. */
10
+ export interface PublicForm {
11
+ uid: string;
12
+ title: string;
13
+ description?: string;
14
+ fields: (FormField & {
15
+ type: "email" | "text" | PropertyType;
16
+ options?: {
17
+ value: string;
18
+ label: string;
19
+ }[];
20
+ })[];
21
+ }
22
+ /** What a form submission answers. */
23
+ export interface FormResult {
24
+ /** `confirm`: an email asks the subscriber to confirm; `subscribed`: done. */
25
+ result: "confirm" | "subscribed";
26
+ message: string;
27
+ redirectUrl?: string;
28
+ }
29
+ /** A subscriber's preferences as the preference center shows them. */
30
+ export interface PreferencesView {
31
+ workspaceName: string;
32
+ email: string;
33
+ /** The contact has unsubscribed from all email. */
34
+ unsubscribedAll: boolean;
35
+ lists: {
36
+ uid: string;
37
+ name: string;
38
+ description?: string;
39
+ subscribed: boolean;
40
+ }[];
41
+ }
42
+ /**
43
+ * The CRM's anonymous endpoints (`/api/mail/crm/public`), for the public pages and the links in emails. None takes a signed-in user;
44
+ * a form is found by its uid, everything else by a signed token (`util/Tokens.ts`) from an email, which names the workspace and the
45
+ * contact and can't be forged. Every endpoint is rate limited per client address, and answers 404 for anything it can't find or verify.
46
+ *
47
+ * - `GET /forms/:formUid`, `POST /forms/:formUid` - an enabled form, and submitting it: the address becomes (or fills in the blanks of)
48
+ * a contact and is subscribed to the form's lists - straight away, or pending until confirmed when the form has double opt-in, in
49
+ * which case a confirmation email is sent from the form's sender.
50
+ * - `POST /confirm/:token` - confirms the pending subscriptions a confirmation email was about.
51
+ * - `GET /preferences/:token`, `POST /preferences/:token` - the preference center: the lists a subscriber may join or leave, and
52
+ * unsubscribing from all email.
53
+ * - `POST /unsubscribe/:token` - one-click unsubscribe (RFC 8058: what a mail client posts for `List-Unsubscribe-Post`), from the
54
+ * token's list, or from all email when it names none.
55
+ */
56
+ export declare abstract class BasePublicRoute extends CrmRouteBase {
57
+ /** The backend's concrete contact route, which writes contacts from forms exactly as the API does. */
58
+ protected abstract contactRouteClass: any;
59
+ protected mailTransport?: MailTransport;
60
+ protected rateLimiter?: RateLimiter;
61
+ protected trustedProxies: string[];
62
+ private contactRoute?;
63
+ getForm(formUid: string, req: HttpRequest): Promise<PublicForm>;
64
+ submitForm(formUid: string, body: unknown, req: HttpRequest): Promise<FormResult>;
65
+ confirm(token: string, req: HttpRequest): Promise<{
66
+ workspaceName: string;
67
+ lists: string[];
68
+ }>;
69
+ getPreferences(token: string, req: HttpRequest): Promise<PreferencesView>;
70
+ /**
71
+ * Changes a subscriber's preferences: `lists` maps list uids to whether to be subscribed (only lists the preference center shows -
72
+ * visible ones and those the contact is on), and `unsubscribeAll: true` unsubscribes from every list and all email.
73
+ * `unsubscribeAll: false` (or subscribing to a list) takes back an earlier "unsubscribe from all".
74
+ */
75
+ setPreferences(token: string, body: unknown, req: HttpRequest): Promise<PreferencesView>;
76
+ /**
77
+ * The landing page of an unsubscribe link, for a `GET` of the address a message's `List-Unsubscribe` header gives (mail clients
78
+ * `POST` it; a person following it gets the page with its button). Unsubscribes nothing itself.
79
+ */
80
+ unsubscribePage(token: string, res: HttpResponse): Promise<void>;
81
+ /**
82
+ * One-click unsubscribe, from the link's lists (every list and all email when it names none, or none of them exists any more).
83
+ * A link from a campaign message counts the unsubscribe in that campaign's statistics. Answers with a preferences token, so the
84
+ * landing page can offer the preference center.
85
+ */
86
+ unsubscribe(token: string, req: HttpRequest): Promise<{
87
+ workspaceName: string;
88
+ list?: string;
89
+ preferencesToken: string;
90
+ }>;
91
+ /** Records the unsubscribe on the outbound message the link came in, if it names one of the contact's. */
92
+ private countUnsubscribe;
93
+ /** Counts one request of `kind` against the caller's address. */
94
+ private limit;
95
+ /** The anonymous caller's address - `resolveClientIp()`, so a forged `X-Forwarded-For` from an untrusted peer is ignored. */
96
+ protected clientAddress(req: HttpRequest): string | undefined;
97
+ private contacts;
98
+ private requireForm;
99
+ private contactProperties;
100
+ /**
101
+ * The submitted value of each of the form's fields, checked: the email address, text fields as text, and each custom property as its
102
+ * type (a number, yes/no, a date, one option or several). A required field left empty, or a value that doesn't fit, is a 400.
103
+ */
104
+ private readFormValues;
105
+ /** A form's input for a custom property as the property's type. */
106
+ private propertyInput;
107
+ /**
108
+ * What a submission writes to its contact: every submitted field for a new contact (with the form's tags and source `form`); for an
109
+ * existing one only the fields and properties it doesn't have yet, so a form can't overwrite what a workspace knows about someone.
110
+ * A company name links the contact to that company (found by name, or created) when it has none.
111
+ */
112
+ private contactWrite;
113
+ /** The workspace's company named `name`, created when there is none. */
114
+ private companyByName;
115
+ /** Emails the subscriber a link confirming their pending subscriptions to `lists`, from the form's sender. Never throws. */
116
+ private sendConfirmation;
117
+ private countSubmission;
118
+ private findSubscription;
119
+ private findContact;
120
+ /** The token's payload, workspace and contact - or a 404 for a bad token or one whose workspace or contact is gone. */
121
+ private resolveToken;
122
+ private preferencesView;
123
+ /** Unsubscribes the contact from every list, and marks them as not wanting any marketing email. */
124
+ private unsubscribeAll;
125
+ /** Takes back a contact's "unsubscribe from all" once they subscribe again. A bounced or complaining address stays as it is. */
126
+ private reactivate;
127
+ /** Moves the contact's `emailStatus` to `to` when it is `from`, with a timeline entry. */
128
+ private setEmailStatus;
129
+ }
@@ -0,0 +1,16 @@
1
+ import { SavedBlock } from "../models/types.js";
2
+ import { BaseWorkspaceRecordRoute, WriteContext } from "./BaseWorkspaceRecordRoute.js";
3
+ /** How many saved blocks one workspace may have. */
4
+ export declare const MAX_SAVED_BLOCK_RECORDS = 500;
5
+ /**
6
+ * Blocks saved for reuse in a workspace's templates (`/api/mail/crm/saved-blocks`) - see `BaseWorkspaceRecordRoute` for the endpoints.
7
+ * The blocks are checked and sanitized like a template's; hand-written HTML only from a workspace admin.
8
+ */
9
+ export declare abstract class BaseSavedBlockRoute extends BaseWorkspaceRecordRoute<SavedBlock> {
10
+ protected readonly model: "savedBlock";
11
+ protected readonly pushType: string;
12
+ protected readonly sortFields: readonly string[];
13
+ protected readonly maxRecords: number;
14
+ protected readCreate(body: Record<string, unknown>, context: WriteContext): Promise<Partial<SavedBlock>>;
15
+ protected readUpdate(body: Record<string, unknown>, _existing: SavedBlock, context: WriteContext): Promise<Partial<SavedBlock>>;
16
+ }
@@ -0,0 +1,33 @@
1
+ import type { JWTUser } from "@rapidrest/core";
2
+ import { ScoringRule, WorkspaceAction } from "../models/types.js";
3
+ import { BaseWorkspaceRecordRoute, WriteContext } from "./BaseWorkspaceRecordRoute.js";
4
+ /** How many scoring rules one workspace may have. */
5
+ export declare const MAX_SCORING_RULES = 50;
6
+ /**
7
+ * A workspace's lead scoring rules (`/api/mail/crm/scoring-rules`) - see `BaseWorkspaceRecordRoute` for the endpoints; changing them
8
+ * takes `MANAGE` - plus `POST /:workspaceUid/recalculate`, which scores every contact now (`{ changed }`).
9
+ *
10
+ * A contact's `score` is the sum of the enabled rules' points: a **property** rule gives its points to the contacts its filter matches
11
+ * (the same filters as segments, but not naming segments), an **activity** rule gives its points for each time a contact did something
12
+ * - opened, clicked, replied, bounced, submitted a form, subscribed, unsubscribed - in its last `withinDays`, up to `maxPoints`.
13
+ * `ScoringJob` rescores a workspace soon after its rules change, and regularly after that (activity windows move).
14
+ */
15
+ export declare abstract class BaseScoringRuleRoute extends BaseWorkspaceRecordRoute<ScoringRule> {
16
+ protected readonly model: "scoringRule";
17
+ protected readonly pushType: string;
18
+ protected readonly writeAction: WorkspaceAction;
19
+ protected readonly sortFields: readonly string[];
20
+ protected readonly maxRecords: number;
21
+ protected readCreate(body: Record<string, unknown>, context: WriteContext): Promise<Partial<ScoringRule>>;
22
+ protected readUpdate(body: Record<string, unknown>, existing: ScoringRule, context: WriteContext): Promise<Partial<ScoringRule>>;
23
+ /** The fields of a rule of `kind` in `body`: all of them when `creating`, else those given. */
24
+ private readRule;
25
+ protected afterWrite(record: ScoringRule): Promise<void>;
26
+ protected afterDelete(record: ScoringRule): Promise<void>;
27
+ /** Marks the workspace's scores out of date and counts its rules, so `ScoringJob` rescores it (and to 0, with none left). */
28
+ private touchWorkspace;
29
+ private updateWorkspace;
30
+ recalculate(workspaceUid: string, user?: JWTUser): Promise<{
31
+ changed: number;
32
+ }>;
33
+ }
@@ -0,0 +1,36 @@
1
+ import type { JWTUser } from "@rapidrest/core";
2
+ import { CrmContact, Segment } from "../models/types.js";
3
+ import { BaseWorkspaceRecordRoute, WriteContext } from "./BaseWorkspaceRecordRoute.js";
4
+ /** How many segments one workspace may have. */
5
+ export declare const MAX_SEGMENTS = 200;
6
+ /**
7
+ * A workspace's segments (`/api/mail/crm/segments`) - see `BaseWorkspaceRecordRoute` for the endpoints - plus:
8
+ * - `POST /:workspaceUid/preview` - `{ filter }` to `{ count, capped, contacts }`: how many contacts a filter matches now, and the
9
+ * first few, for the segment editor.
10
+ * - `POST /:workspaceUid/:uid/refresh` - works the members out again now (a static segment's only way to change).
11
+ *
12
+ * Members are worked out when a segment is created and whenever its filter or kind changes; `SegmentRefreshJob` keeps dynamic ones
13
+ * current after that. A segment's filter may not name segments.
14
+ */
15
+ export declare abstract class BaseSegmentRoute extends BaseWorkspaceRecordRoute<Segment> {
16
+ protected readonly model: "segment";
17
+ protected readonly pushType: string;
18
+ protected readonly sortFields: readonly string[];
19
+ protected readonly maxRecords: number;
20
+ protected readCreate(body: Record<string, unknown>, context: WriteContext): Promise<Partial<Segment>>;
21
+ protected readUpdate(body: Record<string, unknown>, _existing: Segment, context: WriteContext): Promise<Partial<Segment>>;
22
+ /** A new segment, or one whose filter or kind changed, gets its members at once. */
23
+ protected afterWrite(record: Segment, before: Segment | undefined): Promise<Segment | void>;
24
+ protected afterDelete(record: Segment): Promise<void>;
25
+ /**
26
+ * Works `segment`'s members out and saves the counts. Returns the segment as saved. With `events`, who entered and left is
27
+ * recorded for automations - not on a segment's first working out, or everyone in it would count as just entered.
28
+ */
29
+ private refresh;
30
+ preview(workspaceUid: string, body: unknown, user?: JWTUser): Promise<{
31
+ count: number;
32
+ capped: boolean;
33
+ contacts: Pick<CrmContact, "uid" | "email" | "firstName" | "lastName">[];
34
+ }>;
35
+ refreshNow(workspaceUid: string, uid: string, user?: JWTUser): Promise<Segment>;
36
+ }
@@ -0,0 +1,20 @@
1
+ import { type JWTUser } from "@rapidrest/core";
2
+ import { Subscription } from "../models/types.js";
3
+ import { CrmRouteBase } from "./CrmRouteBase.js";
4
+ /** How many contacts one subscription request may change. */
5
+ export declare const MAX_SUBSCRIPTION_BATCH = 500;
6
+ /**
7
+ * Contacts' subscriptions to a workspace's lists (`/api/mail/crm/subscriptions`):
8
+ * - `GET /:workspaceUid` - subscriptions, newest first, narrowed by `listUid`, `contactUid` and `status`.
9
+ * - `POST /:workspaceUid` - `{ listUid, contactUids, status }` subscribes (`subscribed`) or unsubscribes (`unsubscribed`) up to
10
+ * `MAX_SUBSCRIPTION_BATCH` contacts at once, as a member (source `manual`). A member can't make a subscription pending: only a
11
+ * form's double opt-in does that.
12
+ *
13
+ * Reading takes `READ` on the workspace, changing `WRITE`.
14
+ */
15
+ export declare abstract class BaseSubscriptionRoute extends CrmRouteBase {
16
+ list(workspaceUid: string, query: Record<string, unknown> | undefined, user?: JWTUser): Promise<Subscription[]>;
17
+ change(workspaceUid: string, body: unknown, user?: JWTUser): Promise<{
18
+ changed: number;
19
+ }>;
20
+ }
@@ -0,0 +1,17 @@
1
+ import { Suppression, WorkspaceAction } from "../models/types.js";
2
+ import { BaseWorkspaceRecordRoute, WriteContext } from "./BaseWorkspaceRecordRoute.js";
3
+ /**
4
+ * A workspace's suppression list (`/api/mail/crm/suppressions`) - see `BaseWorkspaceRecordRoute` for the endpoints: addresses no
5
+ * campaign or automation ever mails, whatever lists they are on. Bounces and spam complaints add to it on their own (Phase 4); a
6
+ * member with `MANAGE` adds and removes addresses by hand. `GET /:workspaceUid` takes `email` to look one address up. Only an
7
+ * entry's note can change.
8
+ */
9
+ export declare abstract class BaseSuppressionRoute extends BaseWorkspaceRecordRoute<Suppression> {
10
+ protected readonly model: "suppression";
11
+ protected readonly pushType: string;
12
+ protected readonly writeAction: WorkspaceAction;
13
+ protected readonly sortFields: readonly string[];
14
+ protected readCreate(body: Record<string, unknown>, context: WriteContext): Promise<Partial<Suppression>>;
15
+ protected readUpdate(body: Record<string, unknown>, existing: Suppression): Promise<Partial<Suppression>>;
16
+ protected listQuery(query: Record<string, unknown>): Record<string, unknown>;
17
+ }
@@ -0,0 +1,85 @@
1
+ import { type JWTUser } from "@rapidrest/core";
2
+ import { HttpResponse } from "@rapidrest/service-core";
3
+ import { FilterField } from "../filters/Filter.js";
4
+ import { CrmObjectType, PropertyDefinition } from "../models/types.js";
5
+ import { PropertyViewValue, StoredValue } from "../util/PropertyValues.js";
6
+ import { BaseWorkspaceRecordRoute, WorkspaceRecord, WriteContext } from "./BaseWorkspaceRecordRoute.js";
7
+ /** A contact or company: a workspace record with tags and custom properties. */
8
+ export interface TaggedRecord extends WorkspaceRecord {
9
+ tags: string[];
10
+ ownerUserUid?: string;
11
+ }
12
+ /** A contact or company as the API shows it: the record plus its custom property values. */
13
+ export type TaggedRecordView<T> = T & {
14
+ properties: Record<string, PropertyViewValue>;
15
+ };
16
+ /** How many records one bulk request may change. */
17
+ export declare const MAX_BULK = 500;
18
+ /** How many records one export may hold, by default (`mail:crm:export:max_rows`). */
19
+ export declare const MAX_EXPORT_ROWS = 50000;
20
+ /** The bulk actions (`POST /:workspaceUid/bulk`). */
21
+ export type BulkAction = "delete" | "addTags" | "removeTags" | "setOwner";
22
+ /**
23
+ * What contacts and companies share on top of `BaseWorkspaceRecordRoute`: tags and custom properties on every write (a request's
24
+ * `tags` and `properties`, stored as `PropertyValue` rows - `util/PropertyValues.ts`), filtered search (`filter` compiled by
25
+ * `filters/Filter.ts`, and `q` for a quick text search), bulk actions, CSV export, and an activity timeline entry for every create
26
+ * and change. Deleting a record deletes its values, notes and timeline, and unlinks the tasks about it.
27
+ */
28
+ export declare abstract class BaseTaggedRecordRoute<T extends TaggedRecord> extends BaseWorkspaceRecordRoute<T, TaggedRecordView<T>> {
29
+ /** The `CrmObjectType` of the records. */
30
+ protected abstract readonly objectType: CrmObjectType;
31
+ /** The record's own filterable fields (`CONTACT_FIELDS`/`COMPANY_FIELDS`). */
32
+ protected abstract readonly recordFields: Readonly<Record<string, FilterField>>;
33
+ /** The fields `q` searches, case-insensitively. */
34
+ protected abstract readonly textFields: readonly string[];
35
+ /** The record's own fields an export lists, in order. */
36
+ protected abstract readonly exportFields: readonly string[];
37
+ /** How a record is named on its timeline and in exports' file names. */
38
+ protected abstract readonly noun: string;
39
+ /** How many records one export may hold. */
40
+ protected maxExportRows: number;
41
+ /** How many records an export reads at a time. */
42
+ protected exportPageSize: number;
43
+ /** The record's own fields a CSV column may be imported into, and how its text is read (`number`: as a number). */
44
+ abstract readonly importFields: Readonly<Record<string, "text" | "number">>;
45
+ /** The workspace's record an imported row is the same as (by email for a contact, by domain or name for a company). */
46
+ protected abstract findExisting(workspaceUid: string, body: Record<string, unknown>): Promise<T | undefined>;
47
+ /**
48
+ * Creates or updates one record from an imported row (`body` in the shape of a create request, as `CrmImportJob` builds it), with
49
+ * the same checks and side effects as the API: a row the same as an existing record updates it when `updateExisting` is set -
50
+ * adding its tags to the record's rather than replacing them - and is skipped otherwise. A bad row throws its 400.
51
+ */
52
+ importRow(workspaceUid: string, userUid: string, body: Record<string, unknown>, updateExisting: boolean): Promise<{
53
+ outcome: "created" | "updated" | "skipped";
54
+ uid: string;
55
+ }>;
56
+ /** The workspace's custom property definitions for this record type. */
57
+ protected definitions(workspaceUid: string): Promise<PropertyDefinition[]>;
58
+ protected toViews(records: T[], workspaceUid: string): Promise<TaggedRecordView<T>[]>;
59
+ /** Checks a write's `properties` before the record is written, so a bad value fails the whole request. */
60
+ protected readPropertyWrites(body: Record<string, unknown>, workspaceUid: string): Promise<Map<string, StoredValue[]>>;
61
+ protected afterWrite(record: T, before: T | undefined, body: Record<string, unknown>, context: WriteContext): Promise<void>;
62
+ /**
63
+ * Changes `existing` as `PUT /:workspaceUid/:uid` with `body` would, on behalf of `actorUid` (empty for nobody in particular) - for
64
+ * automations, which change records outside any request. Returns the record as saved.
65
+ */
66
+ applyUpdate(workspaceUid: string, actorUid: string, existing: T, body: Record<string, unknown>): Promise<T>;
67
+ protected afterDelete(record: T, context: WriteContext): Promise<void>;
68
+ /** Deletes what belongs to the records `uids` - their values, notes and timeline - and unlinks the tasks about them. */
69
+ protected deleteRelated(uids: string[], workspaceUid: string): Promise<void>;
70
+ protected searchQuery(body: Record<string, unknown>, workspaceUid: string): Promise<Record<string, unknown> | undefined>;
71
+ /**
72
+ * Applies one action to up to `MAX_BULK` records: `delete`, `addTags`/`removeTags` (`tags`), or `setOwner` (`ownerUserUid`, a
73
+ * member, or `null`). Records that aren't the workspace's are skipped. Answers how many were changed.
74
+ */
75
+ bulk(workspaceUid: string, body: unknown, user?: JWTUser): Promise<{
76
+ changed: number;
77
+ }>;
78
+ /** One record's bulk change, through the same `afterWrite()` a single update runs. */
79
+ private writeBulk;
80
+ /**
81
+ * The records matching a search (`filter`, `q`, `sort` - as `POST /:workspaceUid/search`) as a CSV file: the record's own fields,
82
+ * then `tags` (separated by `;`), then one column per custom property. At most `MAX_EXPORT_ROWS` rows.
83
+ */
84
+ export(workspaceUid: string, body: unknown, res: HttpResponse, user?: JWTUser): Promise<HttpResponse>;
85
+ }
@@ -0,0 +1,18 @@
1
+ import { CrmTask } from "../models/types.js";
2
+ import { BaseWorkspaceRecordRoute, WriteContext } from "./BaseWorkspaceRecordRoute.js";
3
+ /**
4
+ * A workspace's tasks (`/api/mail/crm/tasks`) - see `BaseWorkspaceRecordRoute` for the endpoints. `GET /:workspaceUid` takes `status`,
5
+ * `assigneeUserUid` and `subjectUid`. A task is assigned to a member (its creator unless it says otherwise) and may be about a
6
+ * contact or company, whose timeline then shows it being created and done. Marking a task `done` stamps `completedAt`; reopening it
7
+ * clears it.
8
+ */
9
+ export declare abstract class BaseTaskRoute extends BaseWorkspaceRecordRoute<CrmTask> {
10
+ protected readonly model: "task";
11
+ protected readonly pushType: string;
12
+ protected readonly sortFields: readonly string[];
13
+ protected readCreate(body: Record<string, unknown>, context: WriteContext): Promise<Partial<CrmTask>>;
14
+ protected readUpdate(body: Record<string, unknown>, existing: CrmTask, context: WriteContext): Promise<Partial<CrmTask>>;
15
+ private readFields;
16
+ protected afterWrite(record: CrmTask, before: CrmTask | undefined, _body: Record<string, unknown>, context: WriteContext): Promise<void>;
17
+ protected listQuery(query: Record<string, unknown>): Record<string, unknown>;
18
+ }
@@ -0,0 +1,52 @@
1
+ import { type JWTUser } from "@rapidrest/core";
2
+ import { type MailTransport } from "@rapidmx/restapi";
3
+ import { EmailTemplate } from "../models/types.js";
4
+ import { DesignBlock } from "../templates/Design.js";
5
+ import { RenderedEmail } from "../templates/Render.js";
6
+ import { BaseWorkspaceRecordRoute, WriteContext } from "./BaseWorkspaceRecordRoute.js";
7
+ /** How many templates one workspace may have. */
8
+ export declare const MAX_TEMPLATES = 1000;
9
+ /** A template as the API shows it: the template, and whether its design lets readers unsubscribe (campaigns require it). */
10
+ export interface EmailTemplateView extends EmailTemplate {
11
+ hasUnsubscribeLink: boolean;
12
+ }
13
+ /**
14
+ * A workspace's email templates (`/api/mail/crm/templates`) - see `BaseWorkspaceRecordRoute` for the endpoints - plus:
15
+ * - `POST /:workspaceUid/render` - `{ design, subject, preheader?, contactUid? }` to `{ subject, html, text }`: a preview of a design, saved
16
+ * or not, for one contact or a made-up reader.
17
+ * - `POST /:workspaceUid/:uid/test` - `{ to, senderUid, contactUid? }`: sends the template to one address of a mailbox the caller can
18
+ * read (so a test send can't mail strangers), subject prefixed "[Test]".
19
+ * - `POST /:workspaceUid/:uid/duplicate` - a copy named "Copy of ...".
20
+ * - `GET /:workspaceUid/merge-tags` - the merge tags a template can use, the workspace's custom properties included.
21
+ *
22
+ * A template's design is checked and sanitized on save (`templates/Design.ts`), compiled with MJML, and its merge tags are parsed, so a
23
+ * template that can't be sent is refused at once. Hand-written HTML blocks can only be added or changed by workspace admins.
24
+ */
25
+ export declare abstract class BaseTemplateRoute extends BaseWorkspaceRecordRoute<EmailTemplate, EmailTemplateView> {
26
+ protected readonly model: "template";
27
+ protected readonly pushType: string;
28
+ protected readonly sortFields: readonly string[];
29
+ protected readonly maxRecords: number;
30
+ protected mailTransport?: MailTransport;
31
+ protected readCreate(body: Record<string, unknown>, context: WriteContext): Promise<Partial<EmailTemplate>>;
32
+ protected readUpdate(body: Record<string, unknown>, existing: EmailTemplate, context: WriteContext): Promise<Partial<EmailTemplate>>;
33
+ private readFields;
34
+ /** The design of a request, checked - hand-written HTML only from an admin, unless unchanged from `existing`. */
35
+ private readDesign;
36
+ /** Refuses a design MJML can't lay out, or a subject or design with a broken merge tag. */
37
+ private checkCompiles;
38
+ protected toViews(records: EmailTemplate[]): Promise<EmailTemplateView[]>;
39
+ mergeTags(workspaceUid: string, user?: JWTUser): Promise<{
40
+ tag: string;
41
+ label: string;
42
+ }[]>;
43
+ render(workspaceUid: string, body: unknown, user?: JWTUser): Promise<RenderedEmail>;
44
+ test(workspaceUid: string, uid: string, body: unknown, user?: JWTUser): Promise<{
45
+ sent: string;
46
+ }>;
47
+ duplicate(workspaceUid: string, uid: string, user?: JWTUser): Promise<EmailTemplateView>;
48
+ }
49
+ /** How long a saved block's name may be, and how many blocks it may hold. */
50
+ export declare const MAX_SAVED_BLOCKS = 20;
51
+ /** Reads the `blocks` of a saved block request, checked like a design's. */
52
+ export declare function readSavedBlocks(raw: unknown, allowHtml: boolean): DesignBlock[];
@@ -0,0 +1,10 @@
1
+ import { type JWTUser } from "@rapidrest/core";
2
+ import { TimelineEvent } from "../models/types.js";
3
+ import { CrmRouteBase } from "./CrmRouteBase.js";
4
+ /**
5
+ * A contact's or company's activity timeline (`/api/mail/crm/timeline`): `GET /:workspaceUid/:subjectType/:subjectUid`, newest first,
6
+ * a page at a time (`limit`, `page`). Read-only: entries are added by the changes they record.
7
+ */
8
+ export declare abstract class BaseTimelineRoute extends CrmRouteBase {
9
+ list(workspaceUid: string, subjectType: string, subjectUid: string, query: Record<string, unknown> | undefined, user?: JWTUser): Promise<TimelineEvent[]>;
10
+ }
@@ -0,0 +1,21 @@
1
+ import { HttpRequest, HttpResponse } from "@rapidrest/service-core";
2
+ import { CrmRouteBase } from "./CrmRouteBase.js";
3
+ /** How many opens, and clicks, of one message are recorded; beyond that they are served but not counted. */
4
+ export declare const MAX_TRACKED_OPENS = 100;
5
+ export declare const MAX_TRACKED_CLICKS = 500;
6
+ /**
7
+ * The anonymous endpoints CRM email calls home through (`/api/mail/crm/t`):
8
+ * - `GET /o/:token` - the invisible image that records an open. Always answers with the image, whatever the token.
9
+ * - `GET /c/:token/:index?u=<url>&s=<signature>` - a tracked link: records the click and redirects to `u`. The signature
10
+ * (`clickPath()`) must match, so the redirect only ever goes where the email's link did - a forged or changed link is a 404.
11
+ *
12
+ * Opens and clicks from scanners and previewers are recorded as `machine` (`isMachine()`), which statistics leave out of opens.
13
+ */
14
+ export declare abstract class BaseTrackingRoute extends CrmRouteBase {
15
+ open(token: string, req: HttpRequest, res: HttpResponse): Promise<void>;
16
+ click(token: string, index: string, query: Record<string, unknown> | undefined, req: HttpRequest, res: HttpResponse): Promise<void>;
17
+ private findSend;
18
+ /** Records an open or click. A failure is logged: the reader still gets the image or their link. */
19
+ private record;
20
+ private userAgent;
21
+ }
@@ -0,0 +1,49 @@
1
+ import type { JWTUser } from "@rapidrest/core";
2
+ import { WebhookDelivery, WebhookEndpoint, WorkspaceAction } from "../models/types.js";
3
+ import { WebhookPoster } from "../webhooks/Webhooks.js";
4
+ import { BaseWorkspaceRecordRoute, WriteContext } from "./BaseWorkspaceRecordRoute.js";
5
+ /** How many webhook endpoints one workspace may have. */
6
+ export declare const MAX_WEBHOOKS = 20;
7
+ /** The event types an endpoint may take, besides `*` (all). */
8
+ export declare const WEBHOOK_EVENTS: readonly string[];
9
+ /** An endpoint as the API shows it: its secret only as its last characters. */
10
+ export interface WebhookEndpointView extends Omit<WebhookEndpoint, "secret"> {
11
+ secretHint: string;
12
+ }
13
+ /**
14
+ * A workspace's webhook endpoints (`/api/mail/crm/webhooks`) - see `BaseWorkspaceRecordRoute` for the endpoints; changing them takes
15
+ * `MANAGE` - plus:
16
+ * - `POST /:workspaceUid/:uid/secret` - makes a new signing secret and answers it (`{ secret }`), the only time it is shown in full
17
+ * besides creation (`POST` answers `secret` once).
18
+ * - `POST /:workspaceUid/:uid/test` - posts a `ping` now and answers `{ status }` or `{ error }`.
19
+ * - `GET /:workspaceUid/:uid/deliveries` - the 50 latest deliveries.
20
+ *
21
+ * Addresses must be `https://` on the public internet (checked again, by resolving the host, whenever something is sent). Switching
22
+ * an endpoint back on clears its failure count.
23
+ */
24
+ export declare abstract class BaseWebhookRoute extends BaseWorkspaceRecordRoute<WebhookEndpoint, WebhookEndpointView> {
25
+ protected readonly model: "webhookEndpoint";
26
+ protected readonly pushType: string;
27
+ protected readonly writeAction: WorkspaceAction;
28
+ protected readonly maxRecords: number;
29
+ /** How a webhook is posted - a seam for tests. */
30
+ protected post: WebhookPoster;
31
+ protected readCreate(body: Record<string, unknown>, context: WriteContext): Promise<Partial<WebhookEndpoint>>;
32
+ protected readUpdate(body: Record<string, unknown>, existing: WebhookEndpoint): Promise<Partial<WebhookEndpoint>>;
33
+ private readUrl;
34
+ private readEvents;
35
+ protected toViews(records: WebhookEndpoint[]): Promise<WebhookEndpointView[]>;
36
+ /** A new endpoint's secret is answered once, with it. */
37
+ create(workspaceUid: string, body: unknown, user?: JWTUser): Promise<WebhookEndpointView & {
38
+ secret?: string;
39
+ }>;
40
+ rotateSecret(workspaceUid: string, uid: string, user?: JWTUser): Promise<{
41
+ secret: string;
42
+ }>;
43
+ test(workspaceUid: string, uid: string, user?: JWTUser): Promise<{
44
+ status?: number;
45
+ error?: string;
46
+ }>;
47
+ deliveries(workspaceUid: string, uid: string, user?: JWTUser): Promise<WebhookDelivery[]>;
48
+ protected afterDelete(record: WebhookEndpoint): Promise<void>;
49
+ }