@segment/action-destinations 3.65.1-alpha.5 → 3.65.1-alpha.6

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 (31) hide show
  1. package/dist/destinations/amplitude/index.js +2 -10
  2. package/dist/destinations/amplitude/index.js.map +1 -1
  3. package/dist/destinations/amplitude/logEvent/generated-types.d.ts +8 -0
  4. package/dist/destinations/amplitude/logEvent/index.d.ts +0 -3
  5. package/dist/destinations/amplitude/logEvent/index.js +171 -113
  6. package/dist/destinations/amplitude/logEvent/index.js.map +1 -1
  7. package/dist/destinations/index.js +1 -0
  8. package/dist/destinations/index.js.map +1 -1
  9. package/dist/destinations/snap-conversions-api/_tests_/index.test.d.ts +1 -0
  10. package/dist/destinations/snap-conversions-api/_tests_/index.test.js +292 -0
  11. package/dist/destinations/snap-conversions-api/_tests_/index.test.js.map +1 -0
  12. package/dist/destinations/snap-conversions-api/generated-types.d.ts +5 -0
  13. package/dist/destinations/{amplitude/logPurchase → snap-conversions-api}/generated-types.js +0 -0
  14. package/dist/destinations/snap-conversions-api/generated-types.js.map +1 -0
  15. package/dist/destinations/snap-conversions-api/index.d.ts +4 -0
  16. package/dist/destinations/snap-conversions-api/index.js +186 -0
  17. package/dist/destinations/snap-conversions-api/index.js.map +1 -0
  18. package/dist/destinations/snap-conversions-api/reportConversionEvent/generated-types.d.ts +25 -0
  19. package/dist/destinations/snap-conversions-api/reportConversionEvent/generated-types.js +3 -0
  20. package/dist/destinations/snap-conversions-api/reportConversionEvent/generated-types.js.map +1 -0
  21. package/dist/destinations/{amplitude/logPurchase → snap-conversions-api/reportConversionEvent}/index.d.ts +1 -1
  22. package/dist/destinations/snap-conversions-api/reportConversionEvent/index.js +61 -0
  23. package/dist/destinations/snap-conversions-api/reportConversionEvent/index.js.map +1 -0
  24. package/dist/destinations/snap-conversions-api/snap-capi-properties.d.ts +28 -0
  25. package/dist/destinations/snap-conversions-api/snap-capi-properties.js +289 -0
  26. package/dist/destinations/snap-conversions-api/snap-capi-properties.js.map +1 -0
  27. package/package.json +2 -2
  28. package/dist/destinations/amplitude/logPurchase/generated-types.d.ts +0 -64
  29. package/dist/destinations/amplitude/logPurchase/generated-types.js.map +0 -1
  30. package/dist/destinations/amplitude/logPurchase/index.js +0 -95
  31. package/dist/destinations/amplitude/logPurchase/index.js.map +0 -1
@@ -0,0 +1,292 @@
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
+ const nock_1 = __importDefault(require("nock"));
7
+ const actions_core_1 = require("@segment/actions-core");
8
+ const index_1 = __importDefault(require("../index"));
9
+ const testDestination = actions_core_1.createTestIntegration(index_1.default);
10
+ const timestamp = '2022-05-12T15:21:15.449Z';
11
+ const settings = {
12
+ snap_app_id: 'test123',
13
+ pixel_id: 'test123',
14
+ app_id: 'test123'
15
+ };
16
+ const accessToken = 'test123';
17
+ const refreshToken = 'test123';
18
+ describe('Snap Conversions API ', () => {
19
+ describe('ReportConversionEvent', () => {
20
+ it('should handle a basic event', async () => {
21
+ nock_1.default(`https://tr.snapchat.com/v2/conversion`).post('').reply(200, {});
22
+ const event = actions_core_1.createTestEvent({
23
+ timestamp: timestamp,
24
+ messageId: 'test-message-rv4t40s898k',
25
+ event: 'PURCHASE',
26
+ type: 'track',
27
+ properties: {
28
+ email: 'test123@gmail.com',
29
+ phone: '+44 844 412 4653',
30
+ event_tag: 'back-to-school',
31
+ number_items: 10,
32
+ price: '15',
33
+ currency: 'USD',
34
+ level: 3
35
+ }
36
+ });
37
+ const responses = await testDestination.testAction('reportConversionEvent', {
38
+ event,
39
+ settings,
40
+ useDefaultMappings: true,
41
+ auth: {
42
+ accessToken,
43
+ refreshToken
44
+ },
45
+ mapping: {
46
+ event_type: 'PURCHASE',
47
+ event_conversion_type: 'WEB'
48
+ }
49
+ });
50
+ expect(responses.length).toBe(1);
51
+ expect(responses[0].status).toBe(200);
52
+ expect(responses[0].options.body).toMatchInlineSnapshot(`"{\\"event_type\\":\\"PURCHASE\\",\\"event_conversion_type\\":\\"WEB\\",\\"timestamp\\":1652368875449,\\"hashed_email\\":\\"cc779c04191c2e736d89e45c11339c8382832bcaf70383f7df94e3d08ba7a6d9\\",\\"hashed_phone_number\\":\\"dc008fda46e2e64002cf2f82a4906236282d431c4f75e5b60bfe79fc48546383\\",\\"user_agent\\":\\"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\\",\\"hashed_ip_address\\":\\"838c4c2573848f58e74332341a7ca6bc5cd86a8aec7d644137d53b4d597f10f5\\",\\"price\\":15,\\"currency\\":\\"USD\\",\\"page_url\\":\\"https://segment.com/academy/\\",\\"pixel_id\\":\\"test123\\"}"`);
53
+ });
54
+ it('should fail web event without pixel_id', async () => {
55
+ nock_1.default(`https://tr.snapchat.com/v2/conversion`).post('').reply(400, {});
56
+ const event = actions_core_1.createTestEvent({
57
+ timestamp: timestamp,
58
+ messageId: 'test-message-rv4t40s898k',
59
+ event: 'PURCHASE',
60
+ type: 'track',
61
+ properties: {
62
+ email: 'test123@gmail.com',
63
+ phone: '+44 844 412 4653',
64
+ event_tag: 'back-to-school',
65
+ number_items: 10,
66
+ price: '15',
67
+ currency: 'USD',
68
+ level: 3
69
+ }
70
+ });
71
+ await expect(testDestination.testAction('reportConversionEvent', {
72
+ event,
73
+ settings: {
74
+ app_id: 'test123'
75
+ },
76
+ useDefaultMappings: true,
77
+ auth: {
78
+ accessToken,
79
+ refreshToken
80
+ },
81
+ mapping: {
82
+ event_type: 'PURCHASE',
83
+ event_conversion_type: 'WEB'
84
+ }
85
+ })).rejects.toThrowError('If event conversion type is "WEB" then pixel_id must be defined');
86
+ });
87
+ it('should fail web event without snap_app_id', async () => {
88
+ nock_1.default(`https://tr.snapchat.com/v2/conversion`).post('').reply(400, {});
89
+ const event = actions_core_1.createTestEvent({
90
+ timestamp: timestamp,
91
+ messageId: 'test-message-rv4t40s898k',
92
+ event: 'PURCHASE',
93
+ type: 'track',
94
+ properties: {
95
+ email: 'test123@gmail.com',
96
+ phone: '+44 844 412 4653',
97
+ event_tag: 'back-to-school',
98
+ number_items: 10,
99
+ price: '15',
100
+ currency: 'USD',
101
+ level: 3
102
+ }
103
+ });
104
+ await expect(testDestination.testAction('reportConversionEvent', {
105
+ event,
106
+ settings: {
107
+ pixel_id: 'test123',
108
+ app_id: 'test123'
109
+ },
110
+ useDefaultMappings: true,
111
+ auth: {
112
+ accessToken,
113
+ refreshToken
114
+ },
115
+ mapping: {
116
+ event_type: 'PURCHASE',
117
+ event_conversion_type: 'MOBILE_APP'
118
+ }
119
+ })).rejects.toThrowError('If event conversion type is "MOBILE_APP" then snap_app_id and app_id must be defined');
120
+ });
121
+ it('should handle an offline event conversion type', async () => {
122
+ nock_1.default(`https://tr.snapchat.com/v2/conversion`).post('').reply(200, {});
123
+ const event = actions_core_1.createTestEvent({
124
+ timestamp: timestamp,
125
+ messageId: 'test-message-rv4t40s898k',
126
+ event: 'SAVE',
127
+ type: 'track',
128
+ properties: {
129
+ email: 'test123@gmail.com',
130
+ phone: '+44 844 412 4653',
131
+ event_tag: 'back-to-school',
132
+ number_items: 10,
133
+ price: '15',
134
+ currency: 'USD',
135
+ level: 3
136
+ }
137
+ });
138
+ const responses = await testDestination.testAction('reportConversionEvent', {
139
+ event,
140
+ settings,
141
+ useDefaultMappings: true,
142
+ auth: {
143
+ accessToken,
144
+ refreshToken
145
+ },
146
+ mapping: {
147
+ event_type: 'SAVE',
148
+ event_conversion_type: 'OFFLINE'
149
+ }
150
+ });
151
+ expect(responses.length).toBe(1);
152
+ expect(responses[0].status).toBe(200);
153
+ expect(responses[0].options.body).toMatchInlineSnapshot(`"{\\"event_type\\":\\"SAVE\\",\\"event_conversion_type\\":\\"OFFLINE\\",\\"timestamp\\":1652368875449,\\"hashed_email\\":\\"cc779c04191c2e736d89e45c11339c8382832bcaf70383f7df94e3d08ba7a6d9\\",\\"hashed_phone_number\\":\\"dc008fda46e2e64002cf2f82a4906236282d431c4f75e5b60bfe79fc48546383\\",\\"user_agent\\":\\"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\\",\\"hashed_ip_address\\":\\"838c4c2573848f58e74332341a7ca6bc5cd86a8aec7d644137d53b4d597f10f5\\",\\"price\\":15,\\"currency\\":\\"USD\\",\\"page_url\\":\\"https://segment.com/academy/\\",\\"pixel_id\\":\\"test123\\"}"`);
154
+ });
155
+ it('should handle a mobile app event conversion type', async () => {
156
+ nock_1.default(`https://tr.snapchat.com/v2/conversion`).post('').reply(200, {});
157
+ const event = actions_core_1.createTestEvent({
158
+ timestamp: timestamp,
159
+ messageId: 'test-message-rv4t40s898k',
160
+ event: 'SAVE',
161
+ type: 'track',
162
+ properties: {
163
+ email: 'test123@gmail.com',
164
+ phone: '+44 844 412 4653',
165
+ event_tag: 'back-to-school',
166
+ number_items: 10,
167
+ price: '15',
168
+ currency: 'USD',
169
+ level: 3
170
+ }
171
+ });
172
+ const responses = await testDestination.testAction('reportConversionEvent', {
173
+ event,
174
+ settings: {
175
+ snap_app_id: '123',
176
+ app_id: '123'
177
+ },
178
+ useDefaultMappings: true,
179
+ auth: {
180
+ accessToken,
181
+ refreshToken
182
+ },
183
+ mapping: {
184
+ event_type: 'SAVE',
185
+ event_conversion_type: 'MOBILE_APP'
186
+ }
187
+ });
188
+ expect(responses.length).toBe(1);
189
+ expect(responses[0].status).toBe(200);
190
+ expect(responses[0].options.body).toMatchInlineSnapshot(`"{\\"event_type\\":\\"SAVE\\",\\"event_conversion_type\\":\\"MOBILE_APP\\",\\"timestamp\\":1652368875449,\\"hashed_email\\":\\"cc779c04191c2e736d89e45c11339c8382832bcaf70383f7df94e3d08ba7a6d9\\",\\"hashed_phone_number\\":\\"dc008fda46e2e64002cf2f82a4906236282d431c4f75e5b60bfe79fc48546383\\",\\"user_agent\\":\\"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\\",\\"hashed_ip_address\\":\\"838c4c2573848f58e74332341a7ca6bc5cd86a8aec7d644137d53b4d597f10f5\\",\\"price\\":15,\\"currency\\":\\"USD\\",\\"page_url\\":\\"https://segment.com/academy/\\",\\"snap_app_id\\":\\"123\\",\\"app_id\\":\\"123\\"}"`);
191
+ });
192
+ it('should fail invalid currency', async () => {
193
+ nock_1.default(`https://tr.snapchat.com/v2/conversion`).post('').reply(400, {});
194
+ const event = actions_core_1.createTestEvent({
195
+ timestamp: timestamp,
196
+ messageId: 'test-message-rv4t40s898k',
197
+ event: 'PURCHASE',
198
+ type: 'track',
199
+ properties: {
200
+ email: 'test123@gmail.com',
201
+ phone: '+44 844 412 4653',
202
+ event_tag: 'back-to-school',
203
+ number_items: 10,
204
+ price: '15',
205
+ currency: 'Galleon',
206
+ level: 3
207
+ }
208
+ });
209
+ await expect(testDestination.testAction('reportConversionEvent', {
210
+ event,
211
+ settings,
212
+ useDefaultMappings: true,
213
+ auth: {
214
+ accessToken,
215
+ refreshToken
216
+ },
217
+ mapping: {
218
+ event_type: 'PURCHASE',
219
+ event_conversion_type: 'WEB'
220
+ }
221
+ })).rejects.toThrowError('Galleon is not a valid currency code.');
222
+ });
223
+ it('should fail missing event conversion type', async () => {
224
+ nock_1.default(`https://tr.snapchat.com/v2/conversion`).post('').reply(400, {});
225
+ const event = actions_core_1.createTestEvent({
226
+ timestamp: timestamp,
227
+ messageId: 'test-message-rv4t40s898k',
228
+ event: 'PURCHASE',
229
+ type: 'track',
230
+ properties: {
231
+ email: 'test123@gmail.com',
232
+ phone: '+44 844 412 4653',
233
+ event_tag: 'back-to-school',
234
+ number_items: 10,
235
+ price: '15',
236
+ currency: 'Galleon',
237
+ level: 3
238
+ }
239
+ });
240
+ await expect(testDestination.testAction('reportConversionEvent', {
241
+ event,
242
+ settings,
243
+ useDefaultMappings: true,
244
+ auth: {
245
+ accessToken,
246
+ refreshToken
247
+ },
248
+ mapping: {
249
+ event_type: 'PURCHASE'
250
+ }
251
+ })).rejects.toThrowError("The root value is missing the required field 'event_conversion_type'.");
252
+ });
253
+ it('should handle a custom event', async () => {
254
+ nock_1.default(`https://tr.snapchat.com/v2/conversion`).post('').reply(200, {});
255
+ const event = actions_core_1.createTestEvent({
256
+ timestamp: timestamp,
257
+ messageId: 'test-message-rv4t40s898k',
258
+ event: 'CUSTOM_EVENT_5',
259
+ type: 'track',
260
+ properties: {
261
+ email: 'test123@gmail.com',
262
+ phone: '+44 844 412 4653',
263
+ event_tag: 'back-to-school',
264
+ number_items: 10,
265
+ price: '15',
266
+ currency: 'USD',
267
+ level: 3
268
+ }
269
+ });
270
+ const responses = await testDestination.testAction('reportConversionEvent', {
271
+ event,
272
+ settings: {
273
+ snap_app_id: '123',
274
+ app_id: '123'
275
+ },
276
+ useDefaultMappings: true,
277
+ auth: {
278
+ accessToken,
279
+ refreshToken
280
+ },
281
+ mapping: {
282
+ event_type: { '@path': '$.event' },
283
+ event_conversion_type: 'MOBILE_APP'
284
+ }
285
+ });
286
+ expect(responses.length).toBe(1);
287
+ expect(responses[0].status).toBe(200);
288
+ expect(responses[0].options.body).toMatchInlineSnapshot(`"{\\"event_type\\":\\"CUSTOM_EVENT_5\\",\\"event_conversion_type\\":\\"MOBILE_APP\\",\\"timestamp\\":1652368875449,\\"hashed_email\\":\\"cc779c04191c2e736d89e45c11339c8382832bcaf70383f7df94e3d08ba7a6d9\\",\\"hashed_phone_number\\":\\"dc008fda46e2e64002cf2f82a4906236282d431c4f75e5b60bfe79fc48546383\\",\\"user_agent\\":\\"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\\",\\"hashed_ip_address\\":\\"838c4c2573848f58e74332341a7ca6bc5cd86a8aec7d644137d53b4d597f10f5\\",\\"price\\":15,\\"currency\\":\\"USD\\",\\"page_url\\":\\"https://segment.com/academy/\\",\\"snap_app_id\\":\\"123\\",\\"app_id\\":\\"123\\"}"`);
289
+ });
290
+ });
291
+ });
292
+ //# sourceMappingURL=index.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../../../src/destinations/snap-conversions-api/_tests_/index.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export interface Settings {
2
+ pixel_id?: string;
3
+ snap_app_id?: string;
4
+ app_id?: string;
5
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generated-types.js","sourceRoot":"","sources":["../../../src/destinations/snap-conversions-api/generated-types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ import { DestinationDefinition } from '@segment/actions-core';
2
+ import type { Settings } from './generated-types';
3
+ declare const destination: DestinationDefinition<Settings>;
4
+ export default destination;
@@ -0,0 +1,186 @@
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
+ const actions_core_1 = require("@segment/actions-core");
7
+ const reportConversionEvent_1 = __importDefault(require("./reportConversionEvent"));
8
+ const defaultVals = { ...actions_core_1.defaultValues(reportConversionEvent_1.default.fields) };
9
+ const presets = [
10
+ {
11
+ name: 'Add Billing',
12
+ subscribe: 'event = "Payment Info Entered"',
13
+ partnerAction: 'reportConversionEvent',
14
+ mapping: {
15
+ ...defaultVals,
16
+ event_type: 'ADD_BILLING'
17
+ }
18
+ },
19
+ {
20
+ name: 'Add to Cart',
21
+ subscribe: 'event = "Product Added"',
22
+ partnerAction: 'reportConversionEvent',
23
+ mapping: {
24
+ ...defaultVals,
25
+ event_type: 'ADD_CART'
26
+ }
27
+ },
28
+ {
29
+ name: 'Add to Wishlist',
30
+ subscribe: 'event = "Product Added to Wishlist"',
31
+ partnerAction: 'reportConversionEvent',
32
+ mapping: {
33
+ ...defaultVals,
34
+ event_type: 'ADD_TO_WISHLIST'
35
+ }
36
+ },
37
+ {
38
+ name: 'App Install',
39
+ subscribe: 'event = "Application Installed"',
40
+ partnerAction: 'reportConversionEvent',
41
+ mapping: {
42
+ ...defaultVals,
43
+ event_type: 'APP_INSTALL'
44
+ }
45
+ },
46
+ {
47
+ name: 'List View',
48
+ subscribe: 'event = "Product List Viewed"',
49
+ partnerAction: 'reportConversionEvent',
50
+ mapping: {
51
+ ...defaultVals,
52
+ event_type: 'LIST_VIEW'
53
+ }
54
+ },
55
+ {
56
+ name: 'App Open',
57
+ subscribe: 'event = "Application Opened"',
58
+ partnerAction: 'reportConversionEvent',
59
+ mapping: {
60
+ ...defaultVals,
61
+ event_type: 'APP_OPEN'
62
+ }
63
+ },
64
+ {
65
+ name: 'Login',
66
+ subscribe: 'event = "Signed In"',
67
+ partnerAction: 'reportConversionEvent',
68
+ mapping: {
69
+ ...defaultVals,
70
+ event_type: 'LOGIN'
71
+ }
72
+ },
73
+ {
74
+ name: 'Page View',
75
+ subscribe: 'type = "page"',
76
+ partnerAction: 'reportConversionEvent',
77
+ mapping: {
78
+ ...defaultVals,
79
+ event_type: 'PAGE_VIEW'
80
+ }
81
+ },
82
+ {
83
+ name: 'Purchase',
84
+ subscribe: 'event = "Order Completed"',
85
+ partnerAction: 'reportConversionEvent',
86
+ mapping: {
87
+ ...defaultVals,
88
+ event_type: 'PURCHASE'
89
+ }
90
+ },
91
+ {
92
+ name: 'Search',
93
+ subscribe: 'event = "Products Searched"',
94
+ partnerAction: 'reportConversionEvent',
95
+ mapping: {
96
+ ...defaultVals,
97
+ event_type: 'SEARCH'
98
+ }
99
+ },
100
+ {
101
+ name: 'Share',
102
+ subscribe: 'event = "Product Shared"',
103
+ partnerAction: 'reportConversionEvent',
104
+ mapping: {
105
+ ...defaultVals,
106
+ event_type: 'SHARE'
107
+ }
108
+ },
109
+ {
110
+ name: 'Sign Up',
111
+ subscribe: 'event = "Signed Up"',
112
+ partnerAction: 'reportConversionEvent',
113
+ mapping: {
114
+ ...defaultVals,
115
+ event_type: 'SIGN_UP'
116
+ }
117
+ },
118
+ {
119
+ name: 'Start Checkout',
120
+ subscribe: 'event = "Checkout Started"',
121
+ partnerAction: 'reportConversionEvent',
122
+ mapping: {
123
+ ...defaultVals,
124
+ event_type: 'START_CHECKOUT'
125
+ }
126
+ },
127
+ {
128
+ name: 'View Content',
129
+ subscribe: 'event = "Product Viewed"',
130
+ partnerAction: 'reportConversionEvent',
131
+ mapping: {
132
+ ...defaultVals,
133
+ event_type: 'VIEW_CONTENT'
134
+ }
135
+ }
136
+ ];
137
+ const destination = {
138
+ name: 'Snap Conversions Api',
139
+ slug: 'actions-snap-conversions',
140
+ mode: 'cloud',
141
+ authentication: {
142
+ scheme: 'oauth2',
143
+ fields: {
144
+ pixel_id: {
145
+ label: 'Pixel ID',
146
+ description: 'The Pixel ID for your Snapchat Ad Account. Required for web and offline events.',
147
+ type: 'string'
148
+ },
149
+ snap_app_id: {
150
+ label: 'Snap App ID',
151
+ description: 'The Snap App ID associated with your app. This is a unique code generated in Snapchat Ads Manager and included in your MMP dashboard. Required for app events.',
152
+ type: 'string'
153
+ },
154
+ app_id: {
155
+ label: 'App ID',
156
+ description: 'The unique ID assigned for a given application. It should be numeric for iOS, and the human interpretable string for Android. Required for app events.',
157
+ type: 'string'
158
+ }
159
+ },
160
+ refreshAccessToken: async (request, { auth }) => {
161
+ const res = await request('https://accounts.snapchat.com/login/oauth2/access_token', {
162
+ method: 'POST',
163
+ body: new URLSearchParams({
164
+ refresh_token: auth.refreshToken,
165
+ client_id: auth.clientId,
166
+ client_secret: auth.clientSecret,
167
+ grant_type: 'refresh_token'
168
+ })
169
+ });
170
+ return { accessToken: res.data.access_token };
171
+ }
172
+ },
173
+ extendRequest({ auth }) {
174
+ return {
175
+ headers: {
176
+ authorization: `Bearer ${auth?.accessToken}`
177
+ }
178
+ };
179
+ },
180
+ presets,
181
+ actions: {
182
+ reportConversionEvent: reportConversionEvent_1.default
183
+ }
184
+ };
185
+ exports.default = destination;
186
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/destinations/snap-conversions-api/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ export interface Payload {
2
+ event_type: string;
3
+ event_conversion_type: string;
4
+ event_tag?: string;
5
+ timestamp: string;
6
+ email?: string;
7
+ mobile_ad_id?: string;
8
+ uuid_c1?: string;
9
+ idfv?: string;
10
+ phone_number?: string;
11
+ user_agent?: string;
12
+ ip_address?: string;
13
+ item_category?: string;
14
+ item_ids?: string;
15
+ description?: string;
16
+ number_items?: string;
17
+ price?: number;
18
+ currency?: string;
19
+ transaction_id?: string;
20
+ level?: string;
21
+ client_dedup_id?: string;
22
+ search_string?: string;
23
+ page_url?: string;
24
+ sign_up_method?: string;
25
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=generated-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generated-types.js","sourceRoot":"","sources":["../../../../src/destinations/snap-conversions-api/reportConversionEvent/generated-types.ts"],"names":[],"mappings":""}
@@ -1,4 +1,4 @@
1
- import type { ActionDefinition } from '@segment/actions-core';
1
+ import { ActionDefinition } from '@segment/actions-core';
2
2
  import type { Settings } from '../generated-types';
3
3
  import type { Payload } from './generated-types';
4
4
  declare const action: ActionDefinition<Settings, Payload>;
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const actions_core_1 = require("@segment/actions-core");
4
+ const snap_capi_properties_1 = require("../snap-capi-properties");
5
+ const action = {
6
+ title: 'Report Conversion Event',
7
+ description: 'Report events directly to Snapchat. Data shared can power Snap solutions such as custom audience targeting, campaign optimization, Dynamic Ads, and more.',
8
+ fields: {
9
+ event_type: { ...snap_capi_properties_1.event_type, required: true },
10
+ event_conversion_type: { ...snap_capi_properties_1.event_conversion_type, required: true },
11
+ event_tag: snap_capi_properties_1.event_tag,
12
+ timestamp: { ...snap_capi_properties_1.timestamp, required: true },
13
+ email: snap_capi_properties_1.email,
14
+ mobile_ad_id: snap_capi_properties_1.mobile_ad_id,
15
+ uuid_c1: snap_capi_properties_1.uuid_c1,
16
+ idfv: snap_capi_properties_1.idfv,
17
+ phone_number: snap_capi_properties_1.phone_number,
18
+ user_agent: snap_capi_properties_1.user_agent,
19
+ ip_address: snap_capi_properties_1.ip_address,
20
+ item_category: snap_capi_properties_1.item_category,
21
+ item_ids: snap_capi_properties_1.item_ids,
22
+ description: snap_capi_properties_1.description,
23
+ number_items: snap_capi_properties_1.number_items,
24
+ price: snap_capi_properties_1.price,
25
+ currency: snap_capi_properties_1.currency,
26
+ transaction_id: snap_capi_properties_1.transaction_id,
27
+ level: snap_capi_properties_1.level,
28
+ client_dedup_id: snap_capi_properties_1.client_dedup_id,
29
+ search_string: snap_capi_properties_1.search_string,
30
+ page_url: snap_capi_properties_1.page_url,
31
+ sign_up_method: snap_capi_properties_1.sign_up_method
32
+ },
33
+ perform: (request, data) => {
34
+ const payload = snap_capi_properties_1.formatPayload(data.payload);
35
+ if (data.payload.event_conversion_type === 'MOBILE_APP') {
36
+ if (data.settings?.snap_app_id === undefined || data.settings?.app_id === undefined) {
37
+ 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);
38
+ }
39
+ delete data.settings?.pixel_id;
40
+ }
41
+ else {
42
+ if (data.settings?.pixel_id === undefined) {
43
+ throw new actions_core_1.IntegrationError(`If event conversion type is "${data.payload.event_conversion_type}" then pixel_id must be defined`, 'Misconfigured required field', 400);
44
+ }
45
+ delete data.settings?.snap_app_id;
46
+ delete data.settings?.app_id;
47
+ }
48
+ if (data.payload.currency && !snap_capi_properties_1.CURRENCY_ISO_CODES.has(data.payload.currency)) {
49
+ throw new actions_core_1.IntegrationError(`${data.payload.currency} is not a valid currency code.`, 'Misconfigured required field', 400);
50
+ }
51
+ return request('https://tr.snapchat.com/v2/conversion', {
52
+ method: 'post',
53
+ json: {
54
+ ...payload,
55
+ ...data.settings
56
+ }
57
+ });
58
+ }
59
+ };
60
+ exports.default = action;
61
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/destinations/snap-conversions-api/reportConversionEvent/index.ts"],"names":[],"mappings":";;AAAA,wDAA0E;AAG1E,kEA0BgC;AAEhC,MAAM,MAAM,GAAwC;IAClD,KAAK,EAAE,yBAAyB;IAChC,WAAW,EACT,2JAA2J;IAC7J,MAAM,EAAE;QACN,UAAU,EAAE,EAAE,GAAG,iCAAU,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC7C,qBAAqB,EAAE,EAAE,GAAG,4CAAqB,EAAE,QAAQ,EAAE,IAAI,EAAE;QACnE,SAAS,EAAE,gCAAS;QACpB,SAAS,EAAE,EAAE,GAAG,gCAAS,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC3C,KAAK,EAAE,4BAAK;QACZ,YAAY,EAAE,mCAAY;QAC1B,OAAO,EAAE,8BAAO;QAChB,IAAI,EAAE,2BAAI;QACV,YAAY,EAAE,mCAAY;QAC1B,UAAU,EAAE,iCAAU;QACtB,UAAU,EAAE,iCAAU;QACtB,aAAa,EAAE,oCAAa;QAC5B,QAAQ,EAAE,+BAAQ;QAClB,WAAW,EAAE,kCAAW;QACxB,YAAY,EAAE,mCAAY;QAC1B,KAAK,EAAE,4BAAK;QACZ,QAAQ,EAAE,+BAAQ;QAClB,cAAc,EAAE,qCAAc;QAC9B,KAAK,EAAE,4BAAK;QACZ,eAAe,EAAE,sCAAe;QAChC,aAAa,EAAE,oCAAa;QAC5B,QAAQ,EAAE,+BAAQ;QAClB,cAAc,EAAE,qCAAc;KAC/B;IACD,OAAO,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE;QACzB,MAAM,OAAO,GAAW,oCAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAGnD,IAAI,IAAI,CAAC,OAAO,CAAC,qBAAqB,KAAK,YAAY,EAAE;YACvD,IAAI,IAAI,CAAC,QAAQ,EAAE,WAAW,KAAK,SAAS,IAAI,IAAI,CAAC,QAAQ,EAAE,MAAM,KAAK,SAAS,EAAE;gBACnF,MAAM,IAAI,+BAAgB,CACxB,sFAAsF,EACtF,8BAA8B,EAC9B,GAAG,CACJ,CAAA;aACF;YACD,OAAO,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAA;SAC/B;aAAM;YACL,IAAI,IAAI,CAAC,QAAQ,EAAE,QAAQ,KAAK,SAAS,EAAE;gBACzC,MAAM,IAAI,+BAAgB,CACxB,gCAAgC,IAAI,CAAC,OAAO,CAAC,qBAAqB,iCAAiC,EACnG,8BAA8B,EAC9B,GAAG,CACJ,CAAA;aACF;YACD,OAAO,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAA;YACjC,OAAO,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAA;SAC7B;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,yCAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;YAC3E,MAAM,IAAI,+BAAgB,CACxB,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,gCAAgC,EACxD,8BAA8B,EAC9B,GAAG,CACJ,CAAA;SACF;QAGD,OAAO,OAAO,CAAC,uCAAuC,EAAE;YACtD,MAAM,EAAE,MAAM;YACd,IAAI,EAAE;gBACJ,GAAG,OAAO;gBACV,GAAG,IAAI,CAAC,QAAQ;aACjB;SACF,CAAC,CAAA;IACJ,CAAC;CACF,CAAA;AAED,kBAAe,MAAM,CAAA"}
@@ -0,0 +1,28 @@
1
+ import { InputField } from '@segment/actions-core/src/destination-kit/types';
2
+ import { Payload } from './reportConversionEvent/generated-types';
3
+ export declare const CURRENCY_ISO_CODES: Set<string>;
4
+ export declare const event_type: InputField;
5
+ export declare const event_conversion_type: InputField;
6
+ export declare const event_tag: InputField;
7
+ export declare const timestamp: InputField;
8
+ export declare const email: InputField;
9
+ export declare const mobile_ad_id: InputField;
10
+ export declare const uuid_c1: InputField;
11
+ export declare const idfv: InputField;
12
+ export declare const phone_number: InputField;
13
+ export declare const user_agent: InputField;
14
+ export declare const ip_address: InputField;
15
+ export declare const item_category: InputField;
16
+ export declare const item_ids: InputField;
17
+ export declare const description: InputField;
18
+ export declare const number_items: InputField;
19
+ export declare const price: InputField;
20
+ export declare const currency: InputField;
21
+ export declare const transaction_id: InputField;
22
+ export declare const level: InputField;
23
+ export declare const client_dedup_id: InputField;
24
+ export declare const search_string: InputField;
25
+ export declare const page_url: InputField;
26
+ export declare const sign_up_method: InputField;
27
+ export declare const hash: (value: string | undefined) => string | undefined;
28
+ export declare const formatPayload: (payload: Payload) => Object;