@oneuptime/common 12.0.18 → 12.0.19

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 (206) hide show
  1. package/Models/DatabaseModels/EnterpriseLicense.ts +23 -0
  2. package/Models/DatabaseModels/Index.ts +4 -2
  3. package/Models/DatabaseModels/Monitor.ts +39 -9
  4. package/Models/DatabaseModels/UserMicrosoftTeams.ts +344 -0
  5. package/Models/DatabaseModels/UserNotificationRule.ts +144 -8
  6. package/Models/DatabaseModels/UserNotificationSetting.ts +34 -0
  7. package/Models/DatabaseModels/UserOnCallLogTimeline.ts +95 -0
  8. package/Models/DatabaseModels/UserSlack.ts +341 -0
  9. package/Models/DatabaseModels/WorkspaceProjectAuthToken.ts +9 -0
  10. package/Server/API/UserMicrosoftTeamsAPI.ts +127 -0
  11. package/Server/API/UserSlackAPI.ts +125 -0
  12. package/Server/EnvironmentConfig.ts +12 -107
  13. package/Server/Infrastructure/Postgres/SchemaMigrations/1788700000000-RemoveMarketingConversionUploadState.ts +33 -0
  14. package/Server/Infrastructure/Postgres/SchemaMigrations/1788800000000-DropMarketingConversionAddEnterpriseLicenseEmail.ts +51 -0
  15. package/Server/Infrastructure/Postgres/SchemaMigrations/1788900000000-RedactStoredMonitorIngestSecrets.ts +117 -0
  16. package/Server/Infrastructure/Postgres/SchemaMigrations/1789000000000-AddUserSlackAndMicrosoftTeams.ts +197 -0
  17. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +8 -0
  18. package/Server/Infrastructure/Queue.ts +7 -0
  19. package/Server/Services/EnterpriseLicenseService.ts +60 -0
  20. package/Server/Services/Index.ts +6 -2
  21. package/Server/Services/LlmLogService.ts +25 -9
  22. package/Server/Services/OnCallReadinessService.ts +86 -2
  23. package/Server/Services/ProjectService.ts +67 -0
  24. package/Server/Services/UserMicrosoftTeamsService.ts +208 -0
  25. package/Server/Services/UserNotificationMethodAdminService.ts +167 -5
  26. package/Server/Services/UserNotificationRuleAdminService.ts +40 -6
  27. package/Server/Services/UserNotificationRuleService.ts +589 -11
  28. package/Server/Services/UserNotificationSettingService.ts +138 -0
  29. package/Server/Services/UserService.ts +28 -0
  30. package/Server/Services/UserSlackService.ts +218 -0
  31. package/Server/Services/WorkspaceProjectAuthTokenService.ts +67 -1
  32. package/Server/Services/WorkspaceUserAuthTokenService.ts +73 -0
  33. package/Server/Services/WorkspaceUserNotificationService.ts +190 -0
  34. package/Server/Utils/Marketing/MarketingEventUtil.ts +145 -0
  35. package/Server/Utils/Marketing/MarketingEventWebhook.ts +114 -0
  36. package/Server/Utils/Monitor/MonitorLogUtil.ts +14 -1
  37. package/Server/Utils/Monitor/MonitorPayloadRedaction.ts +321 -0
  38. package/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.ts +191 -4
  39. package/Tests/App/Dashboard/AdminNotificationRulesPage.test.tsx +22 -14
  40. package/Tests/App/Dashboard/AdminUserNotificationMethodsPage.test.tsx +22 -11
  41. package/Tests/App/Dashboard/OnCallPreventionGuards.test.tsx +37 -1
  42. package/Tests/App/Dashboard/OnCallRulesTable.test.tsx +18 -10
  43. package/Tests/Models/DatabaseModels/DomainRoleTierCoverage.test.ts +27 -1
  44. package/Tests/Models/DatabaseModels/MonitorSecretKeyColumnAccessControl.test.ts +214 -0
  45. package/Tests/Server/API/OnCallReadinessAPI.test.ts +145 -26
  46. package/Tests/Server/API/UserNotificationMethodAdminAPI.test.ts +2 -2
  47. package/Tests/Server/Services/AIServiceDailyBudget.test.ts +11 -1
  48. package/Tests/Server/Services/AdminRuleEditGuards.test.ts +22 -8
  49. package/Tests/Server/Services/DeliverNotificationForRuleExtraction.test.ts +18 -2
  50. package/Tests/Server/Services/EpisodeRuleSeverityRepair.test.ts +5 -1
  51. package/Tests/Server/Services/LlmLogServiceTokenAggregateParams.test.ts +640 -0
  52. package/Tests/Server/Services/NotificationChannelEventCoverage.test.ts +246 -22
  53. package/Tests/Server/Services/NotificationDeletionImpact.test.ts +136 -8
  54. package/Tests/Server/Services/OnCallNotificationFallback.test.ts +191 -8
  55. package/Tests/Server/Services/OnCallReadinessService.test.ts +343 -18
  56. package/Tests/Server/Services/SeverityRuleBackfill.test.ts +5 -1
  57. package/Tests/Server/Services/UserMicrosoftTeamsService.test.ts +343 -0
  58. package/Tests/Server/Services/UserNotificationMethodAdminService.test.ts +209 -8
  59. package/Tests/Server/Services/UserNotificationRuleAdminGuards.test.ts +22 -6
  60. package/Tests/Server/Services/UserNotificationRuleDefaultCreation.test.ts +12 -6
  61. package/Tests/Server/Services/UserNotificationRuleExecuteItem.test.ts +37 -3
  62. package/Tests/Server/Services/UserNotificationRuleWorkspaceDelivery.test.ts +669 -0
  63. package/Tests/Server/Services/UserNotificationSettingWorkspaceChannels.test.ts +410 -0
  64. package/Tests/Server/Services/UserSlackService.test.ts +407 -0
  65. package/Tests/Server/Services/WorkspaceProjectAuthTokenDisconnectCascade.test.ts +224 -0
  66. package/Tests/Server/Services/WorkspaceUserAuthTokenNotificationMethodCascade.test.ts +189 -0
  67. package/Tests/Server/Services/WorkspaceUserNotificationService.test.ts +496 -0
  68. package/Tests/Server/Types/Database/Permissions/AdminNotificationRuleAccess.test.ts +30 -17
  69. package/Tests/Server/Types/Database/Permissions/CreateOwnershipScoping.test.ts +8 -3
  70. package/Tests/Server/Types/Database/Permissions/OwnerOnlyColumns.test.ts +72 -3
  71. package/Tests/Server/Types/Database/Permissions/UserNotificationRuleScoping.test.ts +22 -18
  72. package/Tests/Server/Types/Database/Permissions/WorkspaceMethodStampedColumnCreate.test.ts +178 -0
  73. package/Tests/Server/Utils/Marketing/MarketingEventUtil.test.ts +259 -0
  74. package/Tests/Server/Utils/Marketing/MarketingEventWebhook.test.ts +257 -0
  75. package/Tests/Server/Utils/Monitor/MonitorLogUtilRedaction.test.ts +300 -0
  76. package/Tests/Server/Utils/Monitor/MonitorPayloadRedaction.test.ts +381 -0
  77. package/Tests/Server/Utils/Runbook/RunbookExecutePermission.test.ts +228 -0
  78. package/Tests/Server/Utils/SessionReplay/SessionReplayErasureTombstone.test.ts +189 -0
  79. package/Tests/Server/Utils/SessionReplay/SessionReplayUsage.test.ts +205 -0
  80. package/Tests/Server/Utils/Telemetry/AppMetrics.test.ts +275 -0
  81. package/Tests/Server/Utils/Telemetry/TelemetryContext.test.ts +279 -0
  82. package/Tests/Server/Utils/Workspace/MicrosoftTeamsDirectMessage.test.ts +454 -0
  83. package/Tests/UI/Utils/NotificationMethodUtil.test.ts +137 -9
  84. package/Tests/UI/Utils/PermissionGate.test.ts +105 -0
  85. package/Types/Marketing/MarketingEvent.ts +97 -0
  86. package/UI/Utils/NotificationMethodUtil.ts +41 -1
  87. package/UI/Utils/PermissionGate.ts +56 -0
  88. package/build/dist/Models/DatabaseModels/EnterpriseLicense.js +24 -0
  89. package/build/dist/Models/DatabaseModels/EnterpriseLicense.js.map +1 -1
  90. package/build/dist/Models/DatabaseModels/Index.js +4 -2
  91. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  92. package/build/dist/Models/DatabaseModels/Monitor.js +39 -9
  93. package/build/dist/Models/DatabaseModels/Monitor.js.map +1 -1
  94. package/build/dist/Models/DatabaseModels/UserMicrosoftTeams.js +363 -0
  95. package/build/dist/Models/DatabaseModels/UserMicrosoftTeams.js.map +1 -0
  96. package/build/dist/Models/DatabaseModels/UserNotificationRule.js +145 -8
  97. package/build/dist/Models/DatabaseModels/UserNotificationRule.js.map +1 -1
  98. package/build/dist/Models/DatabaseModels/UserNotificationSetting.js +38 -0
  99. package/build/dist/Models/DatabaseModels/UserNotificationSetting.js.map +1 -1
  100. package/build/dist/Models/DatabaseModels/UserOnCallLogTimeline.js +96 -0
  101. package/build/dist/Models/DatabaseModels/UserOnCallLogTimeline.js.map +1 -1
  102. package/build/dist/Models/DatabaseModels/UserSlack.js +361 -0
  103. package/build/dist/Models/DatabaseModels/UserSlack.js.map +1 -0
  104. package/build/dist/Models/DatabaseModels/WorkspaceProjectAuthToken.js.map +1 -1
  105. package/build/dist/Server/API/UserMicrosoftTeamsAPI.js +82 -0
  106. package/build/dist/Server/API/UserMicrosoftTeamsAPI.js.map +1 -0
  107. package/build/dist/Server/API/UserSlackAPI.js +81 -0
  108. package/build/dist/Server/API/UserSlackAPI.js.map +1 -0
  109. package/build/dist/Server/EnvironmentConfig.js +10 -70
  110. package/build/dist/Server/EnvironmentConfig.js.map +1 -1
  111. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1788700000000-RemoveMarketingConversionUploadState.js +26 -0
  112. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1788700000000-RemoveMarketingConversionUploadState.js.map +1 -0
  113. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1788800000000-DropMarketingConversionAddEnterpriseLicenseEmail.js +37 -0
  114. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1788800000000-DropMarketingConversionAddEnterpriseLicenseEmail.js.map +1 -0
  115. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1788900000000-RedactStoredMonitorIngestSecrets.js +106 -0
  116. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1788900000000-RedactStoredMonitorIngestSecrets.js.map +1 -0
  117. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1789000000000-AddUserSlackAndMicrosoftTeams.js +78 -0
  118. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1789000000000-AddUserSlackAndMicrosoftTeams.js.map +1 -0
  119. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +8 -0
  120. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  121. package/build/dist/Server/Infrastructure/Queue.js +7 -0
  122. package/build/dist/Server/Infrastructure/Queue.js.map +1 -1
  123. package/build/dist/Server/Services/EnterpriseLicenseService.js +65 -0
  124. package/build/dist/Server/Services/EnterpriseLicenseService.js.map +1 -1
  125. package/build/dist/Server/Services/Index.js +6 -2
  126. package/build/dist/Server/Services/Index.js.map +1 -1
  127. package/build/dist/Server/Services/LlmLogService.js +25 -9
  128. package/build/dist/Server/Services/LlmLogService.js.map +1 -1
  129. package/build/dist/Server/Services/OnCallReadinessService.js +74 -2
  130. package/build/dist/Server/Services/OnCallReadinessService.js.map +1 -1
  131. package/build/dist/Server/Services/ProjectService.js +56 -0
  132. package/build/dist/Server/Services/ProjectService.js.map +1 -1
  133. package/build/dist/Server/Services/UserMicrosoftTeamsService.js +183 -0
  134. package/build/dist/Server/Services/UserMicrosoftTeamsService.js.map +1 -0
  135. package/build/dist/Server/Services/UserNotificationMethodAdminService.js +138 -2
  136. package/build/dist/Server/Services/UserNotificationMethodAdminService.js.map +1 -1
  137. package/build/dist/Server/Services/UserNotificationRuleAdminService.js +32 -4
  138. package/build/dist/Server/Services/UserNotificationRuleAdminService.js.map +1 -1
  139. package/build/dist/Server/Services/UserNotificationRuleService.js +499 -67
  140. package/build/dist/Server/Services/UserNotificationRuleService.js.map +1 -1
  141. package/build/dist/Server/Services/UserNotificationSettingService.js +118 -0
  142. package/build/dist/Server/Services/UserNotificationSettingService.js.map +1 -1
  143. package/build/dist/Server/Services/UserService.js +26 -1
  144. package/build/dist/Server/Services/UserService.js.map +1 -1
  145. package/build/dist/Server/Services/UserSlackService.js +195 -0
  146. package/build/dist/Server/Services/UserSlackService.js.map +1 -0
  147. package/build/dist/Server/Services/WorkspaceProjectAuthTokenService.js +64 -1
  148. package/build/dist/Server/Services/WorkspaceProjectAuthTokenService.js.map +1 -1
  149. package/build/dist/Server/Services/WorkspaceUserAuthTokenService.js +70 -0
  150. package/build/dist/Server/Services/WorkspaceUserAuthTokenService.js.map +1 -1
  151. package/build/dist/Server/Services/WorkspaceUserNotificationService.js +129 -0
  152. package/build/dist/Server/Services/WorkspaceUserNotificationService.js.map +1 -0
  153. package/build/dist/Server/Utils/Marketing/MarketingEventUtil.js +94 -0
  154. package/build/dist/Server/Utils/Marketing/MarketingEventUtil.js.map +1 -0
  155. package/build/dist/Server/Utils/Marketing/MarketingEventWebhook.js +93 -0
  156. package/build/dist/Server/Utils/Marketing/MarketingEventWebhook.js.map +1 -0
  157. package/build/dist/Server/Utils/Monitor/MonitorLogUtil.js +12 -1
  158. package/build/dist/Server/Utils/Monitor/MonitorLogUtil.js.map +1 -1
  159. package/build/dist/Server/Utils/Monitor/MonitorPayloadRedaction.js +233 -0
  160. package/build/dist/Server/Utils/Monitor/MonitorPayloadRedaction.js.map +1 -0
  161. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js +141 -4
  162. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js.map +1 -1
  163. package/build/dist/Types/Marketing/MarketingEvent.js +43 -0
  164. package/build/dist/Types/Marketing/MarketingEvent.js.map +1 -0
  165. package/build/dist/UI/Utils/NotificationMethodUtil.js +33 -1
  166. package/build/dist/UI/Utils/NotificationMethodUtil.js.map +1 -1
  167. package/build/dist/UI/Utils/PermissionGate.js +32 -0
  168. package/build/dist/UI/Utils/PermissionGate.js.map +1 -1
  169. package/package.json +1 -1
  170. package/Models/DatabaseModels/MarketingConversion.ts +0 -410
  171. package/Server/Services/MarketingConversionService.ts +0 -10
  172. package/Server/Utils/Marketing/ConversionUploadProvider.ts +0 -215
  173. package/Server/Utils/Marketing/ConversionUploadProviders.ts +0 -22
  174. package/Server/Utils/Marketing/Providers/GoogleAds.ts +0 -333
  175. package/Server/Utils/Marketing/Providers/LinkedIn.ts +0 -185
  176. package/Server/Utils/Marketing/Providers/Meta.ts +0 -182
  177. package/Server/Utils/Marketing/Providers/MicrosoftAds.ts +0 -223
  178. package/Server/Utils/Marketing/Providers/Reddit.ts +0 -208
  179. package/Tests/Server/Utils/Marketing/AdUploadableConversionTypes.test.ts +0 -315
  180. package/Tests/Server/Utils/Marketing/ConversionUploadProvider.test.ts +0 -300
  181. package/Tests/Server/Utils/Marketing/GoogleAds.test.ts +0 -592
  182. package/Tests/Server/Utils/Marketing/LinkedIn.test.ts +0 -282
  183. package/Tests/Server/Utils/Marketing/Meta.test.ts +0 -304
  184. package/Tests/Server/Utils/Marketing/MicrosoftAds.test.ts +0 -263
  185. package/Tests/Server/Utils/Marketing/Reddit.test.ts +0 -259
  186. package/Types/Marketing/MarketingConversion.ts +0 -53
  187. package/build/dist/Models/DatabaseModels/MarketingConversion.js +0 -445
  188. package/build/dist/Models/DatabaseModels/MarketingConversion.js.map +0 -1
  189. package/build/dist/Server/Services/MarketingConversionService.js +0 -9
  190. package/build/dist/Server/Services/MarketingConversionService.js.map +0 -1
  191. package/build/dist/Server/Utils/Marketing/ConversionUploadProvider.js +0 -93
  192. package/build/dist/Server/Utils/Marketing/ConversionUploadProvider.js.map +0 -1
  193. package/build/dist/Server/Utils/Marketing/ConversionUploadProviders.js +0 -20
  194. package/build/dist/Server/Utils/Marketing/ConversionUploadProviders.js.map +0 -1
  195. package/build/dist/Server/Utils/Marketing/Providers/GoogleAds.js +0 -221
  196. package/build/dist/Server/Utils/Marketing/Providers/GoogleAds.js.map +0 -1
  197. package/build/dist/Server/Utils/Marketing/Providers/LinkedIn.js +0 -137
  198. package/build/dist/Server/Utils/Marketing/Providers/LinkedIn.js.map +0 -1
  199. package/build/dist/Server/Utils/Marketing/Providers/Meta.js +0 -133
  200. package/build/dist/Server/Utils/Marketing/Providers/Meta.js.map +0 -1
  201. package/build/dist/Server/Utils/Marketing/Providers/MicrosoftAds.js +0 -143
  202. package/build/dist/Server/Utils/Marketing/Providers/MicrosoftAds.js.map +0 -1
  203. package/build/dist/Server/Utils/Marketing/Providers/Reddit.js +0 -145
  204. package/build/dist/Server/Utils/Marketing/Providers/Reddit.js.map +0 -1
  205. package/build/dist/Types/Marketing/MarketingConversion.js +0 -52
  206. package/build/dist/Types/Marketing/MarketingConversion.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"MicrosoftAds.js","sourceRoot":"","sources":["../../../../../../Server/Utils/Marketing/Providers/MicrosoftAds.ts"],"names":[],"mappings":"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"}
@@ -1,145 +0,0 @@
1
- import axios from "axios";
2
- import { RedditAdsAccountId, RedditAdsOAuthClientId, RedditAdsOAuthClientSecret, RedditAdsOAuthRefreshToken, } from "../../../EnvironmentConfig";
3
- import ConversionUploadProvider from "../ConversionUploadProvider";
4
- import { MarketingConversionType } from "../../../../Types/Marketing/MarketingConversion";
5
- const REQUEST_TIMEOUT_MS = 30000;
6
- // Reddit accepts conversion events up to 7 days old.
7
- const REDDIT_MAX_EVENT_AGE_IN_DAYS = 7;
8
- /*
9
- * Reddit Conversions API
10
- * (ads-api.reddit.com/api/v2.0/conversions/events/{accountId}) using the
11
- * rdt_cid click id or a SHA-256 email, whichever the conversion carries.
12
- * conversion_id (the conversion row id) makes retried uploads idempotent on
13
- * Reddit's side. OAuth2 refresh-token flow with HTTP basic auth against
14
- * reddit.com.
15
- */
16
- export default class RedditProvider extends ConversionUploadProvider {
17
- constructor() {
18
- super(...arguments);
19
- this.key = "reddit";
20
- this.displayName = "Reddit";
21
- this.cachedAccessToken = null;
22
- this.cachedAccessTokenExpiresAt = 0;
23
- }
24
- isConfigured() {
25
- return Boolean(RedditAdsOAuthClientId &&
26
- RedditAdsOAuthClientSecret &&
27
- RedditAdsOAuthRefreshToken &&
28
- RedditAdsAccountId);
29
- }
30
- getProviderSkipReason(conversion) {
31
- if (!this.getClickId(conversion, "rdt_cid") &&
32
- !this.getHashedEmail(conversion)) {
33
- return {
34
- reason: "No Reddit click id (rdt_cid) and no email to match on",
35
- isPermanent: true,
36
- };
37
- }
38
- if (!this.getTrackingType(conversion)) {
39
- return {
40
- reason: "No Reddit tracking type mapped for this conversion type",
41
- isPermanent: true,
42
- };
43
- }
44
- if (this.isOlderThanDays(conversion, REDDIT_MAX_EVENT_AGE_IN_DAYS)) {
45
- return {
46
- reason: "Conversion older than Reddit's 7-day upload window",
47
- isPermanent: true,
48
- };
49
- }
50
- return null;
51
- }
52
- /*
53
- * Reddit standard tracking types. A booked meeting is `Lead`: Reddit has no
54
- * distinct "meeting booked" type, and reporting it as Purchase would put a
55
- * demo into the same optimisation pool as revenue.
56
- */
57
- getTrackingType(conversion) {
58
- const mapping = {
59
- [MarketingConversionType.SignUp]: "SignUp",
60
- [MarketingConversionType.MeetingBooked]: "Lead",
61
- [MarketingConversionType.PaidSubscription]: "Purchase",
62
- };
63
- return this.resolveByConversionType(conversion, mapping);
64
- }
65
- async getAccessToken() {
66
- var _a, _b;
67
- if (this.cachedAccessToken &&
68
- Date.now() < this.cachedAccessTokenExpiresAt) {
69
- return this.cachedAccessToken;
70
- }
71
- const params = new URLSearchParams();
72
- params.append("grant_type", "refresh_token");
73
- params.append("refresh_token", RedditAdsOAuthRefreshToken);
74
- const response = await axios.post("https://www.reddit.com/api/v1/access_token", params.toString(), {
75
- auth: {
76
- username: RedditAdsOAuthClientId,
77
- password: RedditAdsOAuthClientSecret,
78
- },
79
- headers: {
80
- "content-type": "application/x-www-form-urlencoded",
81
- // Reddit throttles/blocks requests without a descriptive User-Agent.
82
- "User-Agent": "OneUptime-ConversionsUpload/1.0",
83
- },
84
- timeout: REQUEST_TIMEOUT_MS,
85
- });
86
- const accessToken = (_a = response.data) === null || _a === void 0 ? void 0 : _a.access_token;
87
- if (!accessToken) {
88
- throw new Error("Reddit OAuth token response had no access_token");
89
- }
90
- this.cachedAccessToken = accessToken;
91
- this.cachedAccessTokenExpiresAt =
92
- Date.now() + ((((_b = response.data) === null || _b === void 0 ? void 0 : _b.expires_in) || 3600) - 60) * 1000;
93
- return accessToken;
94
- }
95
- async upload(conversions) {
96
- const accessToken = await this.getAccessToken();
97
- const events = conversions.map((conversion) => {
98
- const eventAt = conversion.conversionAt || new Date();
99
- const eventMetadata = {
100
- // Dedup key: retried uploads are idempotent on Reddit's side.
101
- conversion_id: conversion.id.toString(),
102
- };
103
- const valueInUSD = this.getValueInUSD(conversion);
104
- if (valueInUSD !== undefined) {
105
- eventMetadata["value_decimal"] = valueInUSD;
106
- eventMetadata["currency"] = "USD";
107
- }
108
- const payload = {
109
- event_at: eventAt.toISOString(),
110
- event_type: {
111
- tracking_type: this.getTrackingType(conversion) || "Lead",
112
- },
113
- event_metadata: eventMetadata,
114
- };
115
- const clickId = this.getClickId(conversion, "rdt_cid");
116
- if (clickId) {
117
- payload["click_id"] = clickId;
118
- }
119
- const hashedEmail = this.getHashedEmail(conversion);
120
- if (hashedEmail) {
121
- payload["user"] = {
122
- email: hashedEmail,
123
- };
124
- }
125
- return payload;
126
- });
127
- await axios.post(`https://ads-api.reddit.com/api/v2.0/conversions/events/${RedditAdsAccountId}`, {
128
- test_mode: false,
129
- events: events,
130
- }, {
131
- headers: {
132
- Authorization: `Bearer ${accessToken}`,
133
- "Content-Type": "application/json",
134
- },
135
- timeout: REQUEST_TIMEOUT_MS,
136
- });
137
- /*
138
- * Reddit accepts or rejects the request as a whole; request-level
139
- * failures throw and the batch is retried (idempotent via
140
- * conversion_id).
141
- */
142
- return { permanentFailures: new Map() };
143
- }
144
- }
145
- //# sourceMappingURL=Reddit.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Reddit.js","sourceRoot":"","sources":["../../../../../../Server/Utils/Marketing/Providers/Reddit.ts"],"names":[],"mappings":"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"}
@@ -1,52 +0,0 @@
1
- export var MarketingConversionType;
2
- (function (MarketingConversionType) {
3
- MarketingConversionType["SignUp"] = "SignUp";
4
- // A verified Cal.com booking. See Docs/analytics/enterprise-conversion-tracking.md.
5
- MarketingConversionType["MeetingBooked"] = "MeetingBooked";
6
- MarketingConversionType["PaidSubscription"] = "PaidSubscription";
7
- })(MarketingConversionType || (MarketingConversionType = {}));
8
- /*
9
- * Conversion types ad platforms may be told about.
10
- *
11
- * This list used to hold only SignUp and PaidSubscription because every
12
- * provider chose its platform conversion action with a two-way branch on
13
- * isSignUp(), so any third type would have been uploaded as a *purchase*
14
- * carrying whatever value the row held. That branch is gone: providers now
15
- * declare a Record<MarketingConversionType, ...> mapping, which the compiler
16
- * refuses to accept unless every member of the enum above is named. Adding a
17
- * conversion type is therefore a type error in each provider until that
18
- * provider says what the type means on its platform.
19
- *
20
- * A mapping may legitimately be an empty string, meaning "this deployment has
21
- * not configured a conversion action for this type yet". That is a config gap,
22
- * not a modelling gap: the worker leaves such rows pending rather than
23
- * skipping them, so they upload once the id is set.
24
- */
25
- export const AdUploadableMarketingConversionTypes = [
26
- MarketingConversionType.SignUp,
27
- MarketingConversionType.MeetingBooked,
28
- MarketingConversionType.PaidSubscription,
29
- ];
30
- /*
31
- * Types that represent a sales-led lead rather than a completed self-serve
32
- * transaction. They carry no revenue of their own — a booked meeting is not
33
- * money — so providers must not attach a conversion value to them even when
34
- * the row happens to have one, and platforms that demand a value for their
35
- * purchase-shaped events must not be handed these as purchases.
36
- *
37
- * Every sales-led step is a booked meeting. The enterprise licence request is
38
- * not a separate type: asking about a licence and booking an architecture
39
- * assessment are the same conversation, reached through the same Cal embed, so
40
- * they are the same conversion.
41
- */
42
- export const LeadMarketingConversionTypes = [
43
- MarketingConversionType.MeetingBooked,
44
- ];
45
- export var MarketingConversionUploadStatus;
46
- (function (MarketingConversionUploadStatus) {
47
- MarketingConversionUploadStatus["Uploaded"] = "Uploaded";
48
- MarketingConversionUploadStatus["Failed"] = "Failed";
49
- // No identifier relevant to this ad platform — nothing to upload.
50
- MarketingConversionUploadStatus["Skipped"] = "Skipped";
51
- })(MarketingConversionUploadStatus || (MarketingConversionUploadStatus = {}));
52
- //# sourceMappingURL=MarketingConversion.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MarketingConversion.js","sourceRoot":"","sources":["../../../../Types/Marketing/MarketingConversion.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,uBAKX;AALD,WAAY,uBAAuB;IACjC,4CAAiB,CAAA;IACjB,oFAAoF;IACpF,0DAA+B,CAAA;IAC/B,gEAAqC,CAAA;AACvC,CAAC,EALW,uBAAuB,KAAvB,uBAAuB,QAKlC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAC/C;IACE,uBAAuB,CAAC,MAAM;IAC9B,uBAAuB,CAAC,aAAa;IACrC,uBAAuB,CAAC,gBAAgB;CACzC,CAAC;AAEJ;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAmC;IAC1E,uBAAuB,CAAC,aAAa;CACtC,CAAC;AAEF,MAAM,CAAN,IAAY,+BAKX;AALD,WAAY,+BAA+B;IACzC,wDAAqB,CAAA;IACrB,oDAAiB,CAAA;IACjB,kEAAkE;IAClE,sDAAmB,CAAA;AACrB,CAAC,EALW,+BAA+B,KAA/B,+BAA+B,QAK1C"}