@segment/action-destinations 3.244.0 → 3.244.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (208) hide show
  1. package/dist/destinations/braze/updateUserProfile/__snapshots__/snapshot.test.d.ts +1 -0
  2. package/dist/destinations/braze/updateUserProfile/__snapshots__/snapshot.test.js +184 -0
  3. package/dist/destinations/braze/updateUserProfile/__snapshots__/snapshot.test.js.map +1 -0
  4. package/dist/destinations/customerio/deleteObject/generated-types.d.ts +4 -0
  5. package/dist/destinations/customerio/deleteObject/generated-types.js +3 -0
  6. package/dist/destinations/customerio/deleteObject/generated-types.js.map +1 -0
  7. package/dist/destinations/customerio/deleteObject/index.d.ts +5 -0
  8. package/dist/destinations/customerio/deleteObject/index.js +48 -0
  9. package/dist/destinations/customerio/deleteObject/index.js.map +1 -0
  10. package/dist/destinations/customerio/deletePerson/generated-types.d.ts +3 -0
  11. package/dist/destinations/customerio/deletePerson/generated-types.js +3 -0
  12. package/dist/destinations/customerio/deletePerson/generated-types.js.map +1 -0
  13. package/dist/destinations/customerio/deletePerson/index.d.ts +5 -0
  14. package/dist/destinations/customerio/deletePerson/index.js +41 -0
  15. package/dist/destinations/customerio/deletePerson/index.js.map +1 -0
  16. package/dist/destinations/customerio/deleteRelationship/generated-types.d.ts +6 -0
  17. package/dist/destinations/customerio/deleteRelationship/generated-types.js +3 -0
  18. package/dist/destinations/customerio/deleteRelationship/generated-types.js.map +1 -0
  19. package/dist/destinations/customerio/deleteRelationship/index.d.ts +5 -0
  20. package/dist/destinations/customerio/deleteRelationship/index.js +82 -0
  21. package/dist/destinations/customerio/deleteRelationship/index.js.map +1 -0
  22. package/dist/destinations/customerio/reportDeliveryEvent/generated-types.d.ts +10 -0
  23. package/dist/destinations/customerio/reportDeliveryEvent/generated-types.js +3 -0
  24. package/dist/destinations/customerio/reportDeliveryEvent/generated-types.js.map +1 -0
  25. package/dist/destinations/customerio/reportDeliveryEvent/index.d.ts +5 -0
  26. package/dist/destinations/customerio/reportDeliveryEvent/index.js +121 -0
  27. package/dist/destinations/customerio/reportDeliveryEvent/index.js.map +1 -0
  28. package/dist/destinations/customerio/suppressPerson/generated-types.d.ts +3 -0
  29. package/dist/destinations/customerio/suppressPerson/generated-types.js +3 -0
  30. package/dist/destinations/customerio/suppressPerson/generated-types.js.map +1 -0
  31. package/dist/destinations/customerio/suppressPerson/index.d.ts +5 -0
  32. package/dist/destinations/customerio/suppressPerson/index.js +41 -0
  33. package/dist/destinations/customerio/suppressPerson/index.js.map +1 -0
  34. package/dist/destinations/customerio/test-helper.d.ts +6 -0
  35. package/dist/destinations/customerio/test-helper.js +84 -0
  36. package/dist/destinations/customerio/test-helper.js.map +1 -0
  37. package/dist/destinations/customerio/unsuppressPerson/generated-types.d.ts +3 -0
  38. package/dist/destinations/customerio/unsuppressPerson/generated-types.js +3 -0
  39. package/dist/destinations/customerio/unsuppressPerson/generated-types.js.map +1 -0
  40. package/dist/destinations/customerio/unsuppressPerson/index.d.ts +5 -0
  41. package/dist/destinations/customerio/unsuppressPerson/index.js +41 -0
  42. package/dist/destinations/customerio/unsuppressPerson/index.js.map +1 -0
  43. package/dist/destinations/engage/sendgrid/Profile.d.ts +6 -0
  44. package/dist/destinations/engage/sendgrid/Profile.js +3 -0
  45. package/dist/destinations/engage/sendgrid/Profile.js.map +1 -0
  46. package/dist/destinations/engage/sendgrid/previewApiLookup/api-lookups.d.ts +18 -0
  47. package/dist/destinations/engage/sendgrid/previewApiLookup/api-lookups.js +94 -0
  48. package/dist/destinations/engage/sendgrid/previewApiLookup/api-lookups.js.map +1 -0
  49. package/dist/destinations/engage/twilio/sendMobilePush/PushSender.d.ts +1 -0
  50. package/dist/destinations/engage/twilio/sendMobilePush/PushSender.js +19 -6
  51. package/dist/destinations/engage/twilio/sendMobilePush/PushSender.js.map +1 -1
  52. package/dist/destinations/engage/twilio/sendMobilePush/actionDefinition.js +7 -0
  53. package/dist/destinations/engage/twilio/sendMobilePush/actionDefinition.js.map +1 -1
  54. package/dist/destinations/engage/utils/track.d.ts +17 -17
  55. package/dist/destinations/engage-messaging-twilio/sendMobilePush.types.d.ts +1 -0
  56. package/dist/destinations/klaviyo/removeProfileToList/generated-types.d.ts +4 -0
  57. package/dist/destinations/klaviyo/removeProfileToList/generated-types.js +3 -0
  58. package/dist/destinations/klaviyo/removeProfileToList/generated-types.js.map +1 -0
  59. package/dist/destinations/klaviyo/removeProfileToList/index.d.ts +5 -0
  60. package/dist/destinations/klaviyo/removeProfileToList/index.js +43 -0
  61. package/dist/destinations/klaviyo/removeProfileToList/index.js.map +1 -0
  62. package/dist/destinations/linkedin-conversions/api/api.test.js +118 -0
  63. package/dist/destinations/linkedin-conversions/api/api.test.js.map +1 -1
  64. package/dist/destinations/linkedin-conversions/api/index.d.ts +4 -1
  65. package/dist/destinations/linkedin-conversions/api/index.js +118 -27
  66. package/dist/destinations/linkedin-conversions/api/index.js.map +1 -1
  67. package/dist/destinations/linkedin-conversions/streamConversion/generated-types.d.ts +1 -0
  68. package/dist/destinations/linkedin-conversions/streamConversion/index.js +11 -2
  69. package/dist/destinations/linkedin-conversions/streamConversion/index.js.map +1 -1
  70. package/dist/destinations/linkedin-conversions/types.d.ts +2 -0
  71. package/dist/destinations/mixpanel/utils.d.ts +13 -0
  72. package/dist/destinations/mixpanel/utils.js +117 -0
  73. package/dist/destinations/mixpanel/utils.js.map +1 -0
  74. package/dist/destinations/movable-ink/categoryView/generated-types.d.ts +22 -0
  75. package/dist/destinations/movable-ink/categoryView/generated-types.js +3 -0
  76. package/dist/destinations/movable-ink/categoryView/generated-types.js.map +1 -0
  77. package/dist/destinations/movable-ink/categoryView/index.d.ts +5 -0
  78. package/dist/destinations/movable-ink/categoryView/index.js +43 -0
  79. package/dist/destinations/movable-ink/categoryView/index.js.map +1 -0
  80. package/dist/destinations/movable-ink/conversion/generated-types.d.ts +20 -0
  81. package/dist/destinations/movable-ink/conversion/generated-types.js +3 -0
  82. package/dist/destinations/movable-ink/conversion/generated-types.js.map +1 -0
  83. package/dist/destinations/movable-ink/conversion/index.d.ts +5 -0
  84. package/dist/destinations/movable-ink/conversion/index.js +45 -0
  85. package/dist/destinations/movable-ink/conversion/index.js.map +1 -0
  86. package/dist/destinations/movable-ink/fields.d.ts +21 -0
  87. package/dist/destinations/movable-ink/fields.js +236 -0
  88. package/dist/destinations/movable-ink/fields.js.map +1 -0
  89. package/dist/destinations/movable-ink/identify/generated-types.d.ts +7 -0
  90. package/dist/destinations/movable-ink/identify/generated-types.js +3 -0
  91. package/dist/destinations/movable-ink/identify/generated-types.js.map +1 -0
  92. package/dist/destinations/movable-ink/identify/index.d.ts +5 -0
  93. package/dist/destinations/movable-ink/identify/index.js +32 -0
  94. package/dist/destinations/movable-ink/identify/index.js.map +1 -0
  95. package/dist/destinations/movable-ink/productAdded/generated-types.d.ts +22 -0
  96. package/dist/destinations/movable-ink/productAdded/generated-types.js +3 -0
  97. package/dist/destinations/movable-ink/productAdded/generated-types.js.map +1 -0
  98. package/dist/destinations/movable-ink/productAdded/index.d.ts +5 -0
  99. package/dist/destinations/movable-ink/productAdded/index.js +43 -0
  100. package/dist/destinations/movable-ink/productAdded/index.js.map +1 -0
  101. package/dist/destinations/movable-ink/productViewed/generated-types.d.ts +21 -0
  102. package/dist/destinations/movable-ink/productViewed/generated-types.js +3 -0
  103. package/dist/destinations/movable-ink/productViewed/generated-types.js.map +1 -0
  104. package/dist/destinations/movable-ink/productViewed/index.d.ts +5 -0
  105. package/dist/destinations/movable-ink/productViewed/index.js +43 -0
  106. package/dist/destinations/movable-ink/productViewed/index.js.map +1 -0
  107. package/dist/destinations/movable-ink/search/generated-types.d.ts +12 -0
  108. package/dist/destinations/movable-ink/search/generated-types.js +3 -0
  109. package/dist/destinations/movable-ink/search/generated-types.js.map +1 -0
  110. package/dist/destinations/movable-ink/search/index.d.ts +5 -0
  111. package/dist/destinations/movable-ink/search/index.js +43 -0
  112. package/dist/destinations/movable-ink/search/index.js.map +1 -0
  113. package/dist/destinations/movable-ink/sendCustomEvent/generated-types.d.ts +25 -0
  114. package/dist/destinations/movable-ink/sendCustomEvent/generated-types.js +3 -0
  115. package/dist/destinations/movable-ink/sendCustomEvent/generated-types.js.map +1 -0
  116. package/dist/destinations/movable-ink/sendCustomEvent/index.d.ts +5 -0
  117. package/dist/destinations/movable-ink/sendCustomEvent/index.js +48 -0
  118. package/dist/destinations/movable-ink/sendCustomEvent/index.js.map +1 -0
  119. package/dist/destinations/responsys/asyncMergePetRecords/generated-types.d.ts +14 -0
  120. package/dist/destinations/responsys/asyncMergePetRecords/generated-types.js +3 -0
  121. package/dist/destinations/responsys/asyncMergePetRecords/generated-types.js.map +1 -0
  122. package/dist/destinations/responsys/asyncMergePetRecords/index.d.ts +5 -0
  123. package/dist/destinations/responsys/asyncMergePetRecords/index.js +113 -0
  124. package/dist/destinations/responsys/asyncMergePetRecords/index.js.map +1 -0
  125. package/dist/destinations/responsys/asyncMergeProfileListMembers/generated-types.d.ts +20 -0
  126. package/dist/destinations/responsys/asyncMergeProfileListMembers/generated-types.js +3 -0
  127. package/dist/destinations/responsys/asyncMergeProfileListMembers/generated-types.js.map +1 -0
  128. package/dist/destinations/responsys/asyncMergeProfileListMembers/index.d.ts +5 -0
  129. package/dist/destinations/responsys/asyncMergeProfileListMembers/index.js +174 -0
  130. package/dist/destinations/responsys/asyncMergeProfileListMembers/index.js.map +1 -0
  131. package/dist/destinations/responsys/rsp-operations.d.ts +14 -0
  132. package/dist/destinations/responsys/rsp-operations.js +33 -0
  133. package/dist/destinations/responsys/rsp-operations.js.map +1 -0
  134. package/dist/destinations/responsys/rsp-properties.d.ts +4 -0
  135. package/dist/destinations/responsys/rsp-properties.js +27 -0
  136. package/dist/destinations/responsys/rsp-properties.js.map +1 -0
  137. package/dist/destinations/responsys/sendAudience/index.js +0 -1
  138. package/dist/destinations/responsys/sendAudience/index.js.map +1 -1
  139. package/dist/destinations/responsys/sendCustomTraits/index.js +0 -1
  140. package/dist/destinations/responsys/sendCustomTraits/index.js.map +1 -1
  141. package/dist/destinations/responsys/upsertListMember/index.js +2 -5
  142. package/dist/destinations/responsys/upsertListMember/index.js.map +1 -1
  143. package/dist/destinations/responsys/utils.d.ts +0 -1
  144. package/dist/destinations/responsys/utils.js +4 -14
  145. package/dist/destinations/responsys/utils.js.map +1 -1
  146. package/dist/destinations/segment/segment-properties.d.ts +1 -0
  147. package/dist/destinations/segment/segment-properties.js +7 -1
  148. package/dist/destinations/segment/segment-properties.js.map +1 -1
  149. package/dist/destinations/segment/sendGroup/generated-types.d.ts +1 -0
  150. package/dist/destinations/segment/sendGroup/index.js +39 -25
  151. package/dist/destinations/segment/sendGroup/index.js.map +1 -1
  152. package/dist/destinations/segment/sendIdentify/generated-types.d.ts +1 -0
  153. package/dist/destinations/segment/sendIdentify/index.js +39 -25
  154. package/dist/destinations/segment/sendIdentify/index.js.map +1 -1
  155. package/dist/destinations/segment/sendPage/generated-types.d.ts +1 -0
  156. package/dist/destinations/segment/sendPage/index.js +47 -33
  157. package/dist/destinations/segment/sendPage/index.js.map +1 -1
  158. package/dist/destinations/segment/sendScreen/generated-types.d.ts +1 -0
  159. package/dist/destinations/segment/sendScreen/index.js +40 -26
  160. package/dist/destinations/segment/sendScreen/index.js.map +1 -1
  161. package/dist/destinations/segment/sendTrack/generated-types.d.ts +1 -0
  162. package/dist/destinations/segment/sendTrack/index.js +43 -29
  163. package/dist/destinations/segment/sendTrack/index.js.map +1 -1
  164. package/dist/destinations/snap-conversions-api/_tests_/capiV2tests.d.ts +1 -0
  165. package/dist/destinations/snap-conversions-api/_tests_/capiV2tests.js +381 -0
  166. package/dist/destinations/snap-conversions-api/_tests_/capiV2tests.js.map +1 -0
  167. package/dist/destinations/snap-conversions-api/_tests_/capiV3tests.d.ts +1 -0
  168. package/dist/destinations/snap-conversions-api/_tests_/capiV3tests.js +499 -0
  169. package/dist/destinations/snap-conversions-api/_tests_/capiV3tests.js.map +1 -0
  170. package/dist/destinations/snap-conversions-api/reportConversionEvent/snap-capi-v2.d.ts +4 -0
  171. package/dist/destinations/snap-conversions-api/reportConversionEvent/snap-capi-v2.js +97 -0
  172. package/dist/destinations/snap-conversions-api/reportConversionEvent/snap-capi-v2.js.map +1 -0
  173. package/dist/destinations/snap-conversions-api/reportConversionEvent/snap-capi-v3.d.ts +8 -0
  174. package/dist/destinations/snap-conversions-api/reportConversionEvent/snap-capi-v3.js +126 -0
  175. package/dist/destinations/snap-conversions-api/reportConversionEvent/snap-capi-v3.js.map +1 -0
  176. package/dist/destinations/snap-conversions-api/reportConversionEvent/utils.d.ts +13 -0
  177. package/dist/destinations/snap-conversions-api/reportConversionEvent/utils.js +40 -0
  178. package/dist/destinations/snap-conversions-api/reportConversionEvent/utils.js.map +1 -0
  179. package/dist/destinations/tiktok-conversions-sandbox/index.js +2 -2
  180. package/dist/destinations/tiktok-conversions-sandbox/index.js.map +1 -1
  181. package/dist/destinations/tiktok-offline-conversions/reportOfflineEvent/formatter.d.ts +3 -0
  182. package/dist/destinations/tiktok-offline-conversions/reportOfflineEvent/formatter.js +43 -0
  183. package/dist/destinations/tiktok-offline-conversions/reportOfflineEvent/formatter.js.map +1 -0
  184. package/dist/destinations/tiktok-offline-conversions/reportOfflineEvent/generated-types.d.ts +33 -0
  185. package/dist/destinations/tiktok-offline-conversions/reportOfflineEvent/generated-types.js +3 -0
  186. package/dist/destinations/tiktok-offline-conversions/reportOfflineEvent/generated-types.js.map +1 -0
  187. package/dist/destinations/tiktok-offline-conversions/reportOfflineEvent/index.d.ts +5 -0
  188. package/dist/destinations/tiktok-offline-conversions/reportOfflineEvent/index.js +16 -0
  189. package/dist/destinations/tiktok-offline-conversions/reportOfflineEvent/index.js.map +1 -0
  190. package/dist/destinations/tiktok-offline-conversions/utils.d.ts +8 -0
  191. package/dist/destinations/tiktok-offline-conversions/utils.js +67 -0
  192. package/dist/destinations/tiktok-offline-conversions/utils.js.map +1 -0
  193. package/dist/destinations/tiktok-offline-conversions-sandbox/index.js +2 -2
  194. package/dist/destinations/tiktok-offline-conversions-sandbox/index.js.map +1 -1
  195. package/dist/destinations/tiktok-offline-conversions-sandbox/reportOfflineEvent/index.js +1 -1
  196. package/dist/destinations/tiktok-offline-conversions-sandbox/reportOfflineEvent/index.js.map +1 -1
  197. package/dist/destinations/trackey/group.types.d.ts +11 -0
  198. package/dist/destinations/trackey/group.types.js +3 -0
  199. package/dist/destinations/trackey/group.types.js.map +1 -0
  200. package/dist/destinations/trackey/identify.types.d.ts +11 -0
  201. package/dist/destinations/trackey/identify.types.js +3 -0
  202. package/dist/destinations/trackey/identify.types.js.map +1 -0
  203. package/dist/destinations/trackey/track.types.d.ts +12 -0
  204. package/dist/destinations/trackey/track.types.js +3 -0
  205. package/dist/destinations/trackey/track.types.js.map +1 -0
  206. package/dist/destinations/webhook/send/index.js +6 -0
  207. package/dist/destinations/webhook/send/index.js.map +1 -1
  208. package/package.json +2 -2
@@ -0,0 +1,499 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.capiV3tests = void 0;
7
+ const nock_1 = __importDefault(require("nock"));
8
+ const actions_core_1 = require("@segment/actions-core");
9
+ const index_1 = __importDefault(require("../index"));
10
+ const testDestination = actions_core_1.createTestIntegration(index_1.default);
11
+ const timestamp = '2022-05-12T15:21:15.449Z';
12
+ const settings = {
13
+ snap_app_id: 'test123',
14
+ pixel_id: 'test123',
15
+ app_id: 'test123'
16
+ };
17
+ const accessToken = 'test123';
18
+ const refreshToken = 'test123';
19
+ const testEvent = actions_core_1.createTestEvent({
20
+ timestamp: timestamp,
21
+ messageId: 'test-message-rv4t40s898k',
22
+ event: 'PURCHASE',
23
+ type: 'track',
24
+ properties: {
25
+ email: ' Test123@gmail.com ',
26
+ phone: '+44 844 412 4653',
27
+ event_tag: 'back-to-school',
28
+ number_items: 10,
29
+ revenue: '15',
30
+ currency: 'USD',
31
+ level: 3
32
+ }
33
+ });
34
+ const features = {
35
+ ['actions-snap-api-migration-test-capiv3']: false,
36
+ ['actions-snap-api-migration-use-capiv3']: true
37
+ };
38
+ const capiV3tests = () => describe('CAPIv3 Implementation', () => {
39
+ it('should use products array over number_items, product_id and category fields', async () => {
40
+ nock_1.default(/.*/).post(/.*/).reply(200);
41
+ const event = actions_core_1.createTestEvent({
42
+ ...testEvent,
43
+ properties: {
44
+ email: 'test123@gmail.com',
45
+ phone: '+44 844 412 4653',
46
+ event_tag: 'back-to-school',
47
+ quantity: 10,
48
+ revenue: '15',
49
+ currency: 'USD',
50
+ level: 3,
51
+ products: [
52
+ { product_id: '123', category: 'games', brand: 'Hasbro' },
53
+ { product_id: '456', category: 'games', brand: 'Mattel' }
54
+ ]
55
+ },
56
+ context: {}
57
+ });
58
+ const responses = await testDestination.testAction('reportConversionEvent', {
59
+ event,
60
+ settings,
61
+ useDefaultMappings: true,
62
+ auth: {
63
+ accessToken,
64
+ refreshToken
65
+ },
66
+ features,
67
+ mapping: {
68
+ event_type: 'PURCHASE',
69
+ event_conversion_type: 'WEB'
70
+ }
71
+ });
72
+ expect(responses).not.toBeNull();
73
+ expect(responses[0].status).toBe(200);
74
+ const body = JSON.parse(responses[0].options.body);
75
+ const { data } = body;
76
+ expect(data.length).toBe(1);
77
+ const { integration, event_name, event_time, user_data, custom_data, action_source, app_data } = data[0];
78
+ const { em, ph } = user_data;
79
+ const { brands, content_category, content_ids, currency, num_items, value } = custom_data;
80
+ expect(integration).toBe('segment');
81
+ expect(event_name).toBe('PURCHASE');
82
+ expect(event_time).toBe(1652368875449);
83
+ expect(em[0]).toBe('cc779c04191c2e736d89e45c11339c8382832bcaf70383f7df94e3d08ba7a6d9');
84
+ expect(ph[0]).toBe('dc008fda46e2e64002cf2f82a4906236282d431c4f75e5b60bfe79fc48546383');
85
+ expect(currency).toBe('USD');
86
+ expect(value).toBe(15);
87
+ expect(action_source).toBe('website');
88
+ expect(app_data).toBeUndefined();
89
+ expect(brands).toEqual(['Hasbro', 'Mattel']);
90
+ expect(content_category).toEqual(['games', 'games']);
91
+ expect(content_ids).toEqual(['123', '456']);
92
+ expect(num_items).toBe(2);
93
+ });
94
+ it('should handle a basic event', async () => {
95
+ nock_1.default(/.*/).post(/.*/).reply(200);
96
+ const event = actions_core_1.createTestEvent(testEvent);
97
+ const responses = await testDestination.testAction('reportConversionEvent', {
98
+ event,
99
+ settings,
100
+ useDefaultMappings: true,
101
+ auth: {
102
+ accessToken,
103
+ refreshToken
104
+ },
105
+ features,
106
+ mapping: {
107
+ event_type: 'PURCHASE',
108
+ event_conversion_type: 'WEB'
109
+ }
110
+ });
111
+ expect(responses).not.toBeNull();
112
+ expect(responses[0].status).toBe(200);
113
+ const body = JSON.parse(responses[0].options.body);
114
+ const { data } = body;
115
+ expect(data.length).toBe(1);
116
+ const { integration, event_name, event_source_url, event_time, user_data, custom_data, action_source, app_data } = data[0];
117
+ const { client_ip_address, client_user_agent, em, ph } = user_data;
118
+ const { currency, value } = custom_data;
119
+ expect(integration).toBe('segment');
120
+ expect(event_name).toBe('PURCHASE');
121
+ expect(event_source_url).toBe('https://segment.com/academy/');
122
+ expect(event_time).toBe(1652368875449);
123
+ expect(client_ip_address).toBe('8.8.8.8');
124
+ expect(client_user_agent).toBe('Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1');
125
+ expect(em[0]).toBe('cc779c04191c2e736d89e45c11339c8382832bcaf70383f7df94e3d08ba7a6d9');
126
+ expect(ph[0]).toBe('dc008fda46e2e64002cf2f82a4906236282d431c4f75e5b60bfe79fc48546383');
127
+ expect(currency).toBe('USD');
128
+ expect(value).toBe(15);
129
+ expect(action_source).toBe('website');
130
+ expect(app_data).toBeUndefined();
131
+ });
132
+ it('should fail web event without pixel_id', async () => {
133
+ nock_1.default(/.*/).post(/.*/).reply(200);
134
+ const event = actions_core_1.createTestEvent(testEvent);
135
+ await expect(testDestination.testAction('reportConversionEvent', {
136
+ event,
137
+ settings: {
138
+ snap_app_id: 'test123'
139
+ },
140
+ useDefaultMappings: true,
141
+ auth: {
142
+ accessToken,
143
+ refreshToken
144
+ },
145
+ features,
146
+ mapping: {
147
+ event_type: 'PURCHASE',
148
+ event_conversion_type: 'WEB'
149
+ }
150
+ })).rejects.toThrowError('If event conversion type is "WEB" then Pixel ID must be defined');
151
+ });
152
+ it('should fail app event without snap_app_id', async () => {
153
+ nock_1.default(/.*/).post(/.*/).reply(200);
154
+ const event = actions_core_1.createTestEvent(testEvent);
155
+ await expect(testDestination.testAction('reportConversionEvent', {
156
+ event,
157
+ settings: {
158
+ pixel_id: 'test123',
159
+ app_id: 'test123'
160
+ },
161
+ useDefaultMappings: true,
162
+ auth: {
163
+ accessToken,
164
+ refreshToken
165
+ },
166
+ features,
167
+ mapping: {
168
+ event_type: 'PURCHASE',
169
+ event_conversion_type: 'MOBILE_APP'
170
+ }
171
+ })).rejects.toThrowError('If event conversion type is "MOBILE_APP" then Snap App ID and App ID must be defined');
172
+ });
173
+ it('should handle an offline event conversion type', async () => {
174
+ nock_1.default(/.*/).post(/.*/).reply(200);
175
+ const event = actions_core_1.createTestEvent(testEvent);
176
+ const responses = await testDestination.testAction('reportConversionEvent', {
177
+ event,
178
+ settings,
179
+ useDefaultMappings: true,
180
+ auth: {
181
+ accessToken,
182
+ refreshToken
183
+ },
184
+ features,
185
+ mapping: {
186
+ event_type: 'SAVE',
187
+ event_conversion_type: 'OFFLINE'
188
+ }
189
+ });
190
+ expect(responses).not.toBeNull();
191
+ expect(responses[0].status).toBe(200);
192
+ const body = JSON.parse(responses[0].options.body);
193
+ const { data } = body;
194
+ expect(data.length).toBe(1);
195
+ const { integration, event_name, event_source_url, event_time, user_data, custom_data, action_source, app_data } = data[0];
196
+ const { client_ip_address, client_user_agent, em, ph } = user_data;
197
+ const { currency, value } = custom_data;
198
+ expect(integration).toBe('segment');
199
+ expect(event_name).toBe('SAVE');
200
+ expect(event_source_url).toBe('https://segment.com/academy/');
201
+ expect(event_time).toBe(1652368875449);
202
+ expect(client_ip_address).toBe('8.8.8.8');
203
+ expect(client_user_agent).toBe('Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1');
204
+ expect(em[0]).toBe('cc779c04191c2e736d89e45c11339c8382832bcaf70383f7df94e3d08ba7a6d9');
205
+ expect(ph[0]).toBe('dc008fda46e2e64002cf2f82a4906236282d431c4f75e5b60bfe79fc48546383');
206
+ expect(currency).toBe('USD');
207
+ expect(value).toBe(15);
208
+ expect(action_source).toBe('other');
209
+ expect(app_data).toBeUndefined();
210
+ });
211
+ it('should handle a mobile app event conversion type', async () => {
212
+ nock_1.default(/.*/).post(/.*/).reply(200);
213
+ const event = actions_core_1.createTestEvent(testEvent);
214
+ const responses = await testDestination.testAction('reportConversionEvent', {
215
+ event,
216
+ settings: {
217
+ snap_app_id: '123',
218
+ app_id: '123'
219
+ },
220
+ useDefaultMappings: true,
221
+ auth: {
222
+ accessToken,
223
+ refreshToken
224
+ },
225
+ features,
226
+ mapping: {
227
+ device_model: 'iPhone12,1',
228
+ os_version: '17.2',
229
+ event_type: 'SAVE',
230
+ event_conversion_type: 'MOBILE_APP'
231
+ }
232
+ });
233
+ expect(responses[0].status).toBe(200);
234
+ const body = JSON.parse(responses[0].options.body);
235
+ const { data } = body;
236
+ expect(data.length).toBe(1);
237
+ const { integration, event_name, event_source_url, event_time, user_data, custom_data, action_source, app_data } = data[0];
238
+ const { client_ip_address, client_user_agent, em, ph } = user_data;
239
+ const { currency, value } = custom_data;
240
+ expect(integration).toBe('segment');
241
+ expect(event_name).toBe('SAVE');
242
+ expect(event_source_url).toBe('https://segment.com/academy/');
243
+ expect(event_time).toBe(1652368875449);
244
+ expect(client_ip_address).toBe('8.8.8.8');
245
+ expect(client_user_agent).toBe('Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1');
246
+ expect(em[0]).toBe('cc779c04191c2e736d89e45c11339c8382832bcaf70383f7df94e3d08ba7a6d9');
247
+ expect(ph[0]).toBe('dc008fda46e2e64002cf2f82a4906236282d431c4f75e5b60bfe79fc48546383');
248
+ expect(currency).toBe('USD');
249
+ expect(value).toBe(15);
250
+ expect(action_source).toBe('app');
251
+ expect(app_data.extinfo).toEqual(['i2', '', '', '', '17.2', 'iPhone12,1', '', '', '', '', '', '', '', '', '', '']);
252
+ });
253
+ it('should fail invalid currency', async () => {
254
+ nock_1.default(/.*/).post(/.*/).reply(200);
255
+ const event = actions_core_1.createTestEvent({
256
+ ...testEvent,
257
+ properties: {
258
+ currency: 'Galleon'
259
+ }
260
+ });
261
+ await expect(testDestination.testAction('reportConversionEvent', {
262
+ event,
263
+ settings,
264
+ useDefaultMappings: true,
265
+ auth: {
266
+ accessToken,
267
+ refreshToken
268
+ },
269
+ features,
270
+ mapping: {
271
+ event_type: 'PURCHASE',
272
+ event_conversion_type: 'WEB'
273
+ }
274
+ })).rejects.toThrowError('Galleon is not a valid currency code.');
275
+ });
276
+ it('should fail missing event conversion type', async () => {
277
+ nock_1.default(/.*/).post(/.*/).reply(200);
278
+ const event = actions_core_1.createTestEvent(testEvent);
279
+ await expect(testDestination.testAction('reportConversionEvent', {
280
+ event,
281
+ settings,
282
+ useDefaultMappings: true,
283
+ auth: {
284
+ accessToken,
285
+ refreshToken
286
+ },
287
+ features,
288
+ mapping: {
289
+ event_type: 'PURCHASE'
290
+ }
291
+ })).rejects.toThrowError("The root value is missing the required field 'event_conversion_type'.");
292
+ });
293
+ it('should handle a custom event', async () => {
294
+ nock_1.default(/.*/).post(/.*/).reply(200);
295
+ const event = actions_core_1.createTestEvent({
296
+ ...testEvent,
297
+ event: 'CUSTOM_EVENT_5'
298
+ });
299
+ const responses = await testDestination.testAction('reportConversionEvent', {
300
+ event,
301
+ settings: {
302
+ snap_app_id: '123',
303
+ app_id: '123'
304
+ },
305
+ useDefaultMappings: true,
306
+ auth: {
307
+ accessToken,
308
+ refreshToken
309
+ },
310
+ features,
311
+ mapping: {
312
+ event_type: { '@path': '$.event' },
313
+ event_conversion_type: 'MOBILE_APP'
314
+ }
315
+ });
316
+ expect(responses).not.toBeNull();
317
+ expect(responses[0].status).toBe(200);
318
+ const body = JSON.parse(responses[0].options.body);
319
+ const { data } = body;
320
+ expect(data.length).toBe(1);
321
+ const { integration, event_name, event_source_url, event_time, user_data, custom_data, action_source, app_data } = data[0];
322
+ const { client_ip_address, client_user_agent, em, ph } = user_data;
323
+ const { currency, value } = custom_data;
324
+ expect(integration).toBe('segment');
325
+ expect(event_name).toBe('CUSTOM_EVENT_5');
326
+ expect(event_source_url).toBe('https://segment.com/academy/');
327
+ expect(event_time).toBe(1652368875449);
328
+ expect(client_ip_address).toBe('8.8.8.8');
329
+ expect(client_user_agent).toBe('Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1');
330
+ expect(em[0]).toBe('cc779c04191c2e736d89e45c11339c8382832bcaf70383f7df94e3d08ba7a6d9');
331
+ expect(ph[0]).toBe('dc008fda46e2e64002cf2f82a4906236282d431c4f75e5b60bfe79fc48546383');
332
+ expect(currency).toBe('USD');
333
+ expect(value).toBe(15);
334
+ expect(action_source).toBe('app');
335
+ expect(app_data).toBeUndefined();
336
+ });
337
+ it('should fail event missing all Snap identifiers', async () => {
338
+ const event = actions_core_1.createTestEvent({
339
+ ...testEvent,
340
+ properties: {},
341
+ context: {}
342
+ });
343
+ await expect(testDestination.testAction('reportConversionEvent', {
344
+ event,
345
+ settings,
346
+ useDefaultMappings: true,
347
+ auth: {
348
+ accessToken,
349
+ refreshToken
350
+ },
351
+ features,
352
+ mapping: {
353
+ event_type: 'PURCHASE',
354
+ event_conversion_type: 'WEB'
355
+ }
356
+ })).rejects.toThrowError('Payload must contain values for Email or Phone Number or Mobile Ad Identifier or both IP Address and User Agent fields');
357
+ });
358
+ it('should handle event with email as only Snap identifier', async () => {
359
+ nock_1.default(/.*/).post(/.*/).reply(200);
360
+ const event = actions_core_1.createTestEvent({
361
+ ...testEvent,
362
+ properties: {
363
+ email: 'test123@gmail.com'
364
+ },
365
+ context: {}
366
+ });
367
+ const responses = await testDestination.testAction('reportConversionEvent', {
368
+ event,
369
+ settings,
370
+ useDefaultMappings: true,
371
+ auth: {
372
+ accessToken,
373
+ refreshToken
374
+ },
375
+ features,
376
+ mapping: {
377
+ event_type: 'PURCHASE',
378
+ event_conversion_type: 'WEB'
379
+ }
380
+ });
381
+ expect(responses).not.toBeNull();
382
+ expect(responses[0].status).toBe(200);
383
+ const body = JSON.parse(responses[0].options.body);
384
+ const { data } = body;
385
+ expect(data.length).toBe(1);
386
+ const { integration, event_name, event_time, user_data, action_source } = data[0];
387
+ const { em } = user_data;
388
+ expect(integration).toBe('segment');
389
+ expect(event_name).toBe('PURCHASE');
390
+ expect(event_time).toBe(1652368875449);
391
+ expect(em[0]).toBe('cc779c04191c2e736d89e45c11339c8382832bcaf70383f7df94e3d08ba7a6d9');
392
+ expect(action_source).toBe('website');
393
+ });
394
+ it('should handle event with phone as only Snap identifier', async () => {
395
+ nock_1.default(/.*/).post(/.*/).reply(200);
396
+ const event = actions_core_1.createTestEvent({
397
+ ...testEvent,
398
+ properties: {
399
+ phone: '+44 844 412 4653'
400
+ },
401
+ context: {}
402
+ });
403
+ const responses = await testDestination.testAction('reportConversionEvent', {
404
+ event,
405
+ settings,
406
+ useDefaultMappings: true,
407
+ auth: {
408
+ accessToken,
409
+ refreshToken
410
+ },
411
+ features,
412
+ mapping: {
413
+ event_type: 'PURCHASE',
414
+ event_conversion_type: 'WEB'
415
+ }
416
+ });
417
+ const body = JSON.parse(responses[0].options.body);
418
+ const { data } = body;
419
+ expect(data.length).toBe(1);
420
+ const { integration, event_name, event_time, user_data, action_source } = data[0];
421
+ const { ph } = user_data;
422
+ expect(integration).toBe('segment');
423
+ expect(event_name).toBe('PURCHASE');
424
+ expect(event_time).toBe(1652368875449);
425
+ expect(ph[0]).toBe('dc008fda46e2e64002cf2f82a4906236282d431c4f75e5b60bfe79fc48546383');
426
+ expect(action_source).toBe('website');
427
+ });
428
+ it('should handle event with advertising_id as only Snap identifier', async () => {
429
+ nock_1.default(/.*/).post(/.*/).reply(200);
430
+ const advertisingId = '87a7def4-b6e9-4bf7-91b6-66372842007a';
431
+ const event = actions_core_1.createTestEvent({
432
+ ...testEvent,
433
+ properties: {},
434
+ context: {
435
+ device: {
436
+ advertisingId
437
+ }
438
+ }
439
+ });
440
+ const responses = await testDestination.testAction('reportConversionEvent', {
441
+ event,
442
+ settings,
443
+ useDefaultMappings: true,
444
+ auth: {
445
+ accessToken,
446
+ refreshToken
447
+ },
448
+ features,
449
+ mapping: {
450
+ event_type: 'PURCHASE',
451
+ event_conversion_type: 'WEB'
452
+ }
453
+ });
454
+ const body = JSON.parse(responses[0].options.body);
455
+ const { data } = body;
456
+ expect(data.length).toBe(1);
457
+ const { integration, event_name, event_time, user_data, action_source } = data[0];
458
+ const { madid } = user_data;
459
+ expect(integration).toBe('segment');
460
+ expect(event_name).toBe('PURCHASE');
461
+ expect(event_time).toBe(1652368875449);
462
+ expect(madid).toBe(advertisingId);
463
+ expect(action_source).toBe('website');
464
+ });
465
+ it('should handle event with ip and user_agent as only Snap identifiers', async () => {
466
+ nock_1.default(/.*/).post(/.*/).reply(200);
467
+ const event = actions_core_1.createTestEvent({
468
+ ...testEvent,
469
+ properties: {}
470
+ });
471
+ const responses = await testDestination.testAction('reportConversionEvent', {
472
+ event,
473
+ settings,
474
+ useDefaultMappings: true,
475
+ auth: {
476
+ accessToken,
477
+ refreshToken
478
+ },
479
+ features,
480
+ mapping: {
481
+ event_type: 'PURCHASE',
482
+ event_conversion_type: 'WEB'
483
+ }
484
+ });
485
+ const body = JSON.parse(responses[0].options.body);
486
+ const { data } = body;
487
+ expect(data.length).toBe(1);
488
+ const { integration, event_name, event_time, user_data, action_source } = data[0];
489
+ const { client_ip_address, client_user_agent } = user_data;
490
+ expect(integration).toBe('segment');
491
+ expect(event_name).toBe('PURCHASE');
492
+ expect(event_time).toBe(1652368875449);
493
+ expect(client_ip_address).toBe('8.8.8.8');
494
+ expect(client_user_agent).toBe('Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1');
495
+ expect(action_source).toBe('website');
496
+ });
497
+ });
498
+ exports.capiV3tests = capiV3tests;
499
+ //# sourceMappingURL=capiV3tests.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capiV3tests.js","sourceRoot":"","sources":["../../../../src/destinations/snap-conversions-api/_tests_/capiV3tests.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { ExecuteInput, ModifiedResponse, RequestClient } from '@segment/actions-core';
2
+ import { Settings } from '../generated-types';
3
+ import { Payload } from './generated-types';
4
+ export declare const performSnapCAPIv2: (request: RequestClient, data: ExecuteInput<Settings, Payload>) => Promise<ModifiedResponse<unknown>>;
@@ -0,0 +1,97 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.performSnapCAPIv2 = void 0;
4
+ const actions_core_1 = require("@segment/actions-core");
5
+ const snap_capi_properties_1 = require("../snap-capi-properties");
6
+ const utils_1 = require("./utils");
7
+ const conversionType = (oldSettings, event_conversion_type) => {
8
+ const settings = { ...oldSettings };
9
+ if (event_conversion_type === 'MOBILE_APP') {
10
+ if (!settings?.snap_app_id || !settings?.app_id) {
11
+ throw new actions_core_1.IntegrationError('If event conversion type is "MOBILE_APP" then Snap App ID and App ID must be defined', 'Misconfigured required field', 400);
12
+ }
13
+ delete settings?.pixel_id;
14
+ }
15
+ else {
16
+ if (!settings?.pixel_id) {
17
+ throw new actions_core_1.IntegrationError(`If event conversion type is "${event_conversion_type}" then Pixel ID must be defined`, 'Misconfigured required field', 400);
18
+ }
19
+ delete settings?.snap_app_id;
20
+ delete settings?.app_id;
21
+ }
22
+ return settings;
23
+ };
24
+ const formatPayload = (oldPayload) => {
25
+ const payload = { ...oldPayload };
26
+ if (payload.email) {
27
+ payload.email = payload.email.replace(/\s/g, '').toLowerCase();
28
+ }
29
+ if (payload.phone_number) {
30
+ payload.phone_number = payload.phone_number.replace(/\D|^0+/g, '');
31
+ }
32
+ if (payload.mobile_ad_id) {
33
+ payload.mobile_ad_id = payload.mobile_ad_id.toLowerCase();
34
+ }
35
+ let item_ids = undefined;
36
+ let item_category = undefined;
37
+ let brands = undefined;
38
+ const p = payload?.products;
39
+ if (p && Array.isArray(p) && p.length > 0) {
40
+ item_ids = utils_1.transformProperty('item_id', p);
41
+ item_category = utils_1.transformProperty('item_category', p);
42
+ brands = p.map((product) => product.brand ?? '');
43
+ }
44
+ return {
45
+ event_type: payload?.event_type,
46
+ event_conversion_type: payload?.event_conversion_type,
47
+ event_tag: payload?.event_tag,
48
+ timestamp: Date.parse(payload?.timestamp),
49
+ hashed_email: utils_1.isHashedEmail(String(payload?.email)) ? payload?.email : utils_1.hash(payload?.email),
50
+ hashed_mobile_ad_id: utils_1.hash(payload?.mobile_ad_id),
51
+ uuid_c1: payload?.uuid_c1,
52
+ hashed_idfv: utils_1.hash(payload?.idfv),
53
+ hashed_phone_number: utils_1.hash(payload?.phone_number),
54
+ user_agent: payload?.user_agent,
55
+ hashed_ip_address: utils_1.hash(payload?.ip_address),
56
+ item_category: item_category ?? payload?.item_category,
57
+ brands: brands ?? payload?.brands,
58
+ item_ids: item_ids ?? payload?.item_ids,
59
+ description: payload?.description,
60
+ number_items: payload?.number_items,
61
+ price: payload?.price,
62
+ currency: payload?.currency,
63
+ transaction_id: payload?.transaction_id,
64
+ level: payload?.level,
65
+ client_dedup_id: payload?.client_dedup_id,
66
+ search_string: payload?.search_string,
67
+ page_url: payload?.page_url,
68
+ sign_up_method: payload?.sign_up_method,
69
+ device_model: payload?.device_model,
70
+ os_version: payload?.os_version,
71
+ click_id: payload?.click_id
72
+ };
73
+ };
74
+ const CONVERSION_EVENT_URL = 'https://tr.snapchat.com/v2/conversion';
75
+ const performSnapCAPIv2 = (request, data) => {
76
+ if (data.payload.currency && !snap_capi_properties_1.CURRENCY_ISO_4217_CODES.has(data.payload.currency.toUpperCase())) {
77
+ throw new actions_core_1.IntegrationError(`${data.payload.currency} is not a valid currency code.`, 'Misconfigured required field', 400);
78
+ }
79
+ if (!data.payload.email &&
80
+ !data.payload.phone_number &&
81
+ !data.payload.mobile_ad_id &&
82
+ (!data.payload.ip_address || !data.payload.user_agent)) {
83
+ throw new actions_core_1.IntegrationError(`Payload must contain values for Email or Phone Number or Mobile Ad Identifier or both IP Address and User Agent fields`, 'Misconfigured required field', 400);
84
+ }
85
+ const payload = formatPayload(data.payload);
86
+ const settings = conversionType(data.settings, data.payload.event_conversion_type);
87
+ return request(CONVERSION_EVENT_URL, {
88
+ method: 'post',
89
+ json: {
90
+ integration: 'segment',
91
+ ...payload,
92
+ ...settings
93
+ }
94
+ });
95
+ };
96
+ exports.performSnapCAPIv2 = performSnapCAPIv2;
97
+ //# sourceMappingURL=snap-capi-v2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snap-capi-v2.js","sourceRoot":"","sources":["../../../../src/destinations/snap-conversions-api/reportConversionEvent/snap-capi-v2.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { ExecuteInput, ModifiedResponse, RequestClient } from '@segment/actions-core';
2
+ import { Payload } from './generated-types';
3
+ import { Settings } from '../generated-types';
4
+ export declare const validatePayload: (payload: Payload) => Payload;
5
+ export declare const formatPayload: (payload: Payload, settings: Settings, isTest?: boolean) => object;
6
+ export declare const validateAppOrPixelID: (settings: Settings, event_conversion_type: string) => string;
7
+ export declare const buildRequestURL: (appOrPixelID: string, authToken: string) => string;
8
+ export declare const performSnapCAPIv3: (request: RequestClient, data: ExecuteInput<Settings, Payload>, isTest?: boolean) => Promise<ModifiedResponse<unknown>>;