@segment/action-destinations 3.134.0 → 3.134.1-staging.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 (200) hide show
  1. package/dist/destinations/actable-predictive/index.js +1 -1
  2. package/dist/destinations/actable-predictive/index.js.map +1 -1
  3. package/dist/destinations/actable-predictive/sendCustomEvent/index.js +13 -13
  4. package/dist/destinations/actable-predictive/sendCustomEvent/index.js.map +1 -1
  5. package/dist/destinations/actable-predictive/sendEmailEvent/index.js +20 -20
  6. package/dist/destinations/actable-predictive/sendEmailEvent/index.js.map +1 -1
  7. package/dist/destinations/actable-predictive/sendTransactionEvent/index.js +28 -28
  8. package/dist/destinations/actable-predictive/sendTransactionEvent/index.js.map +1 -1
  9. package/dist/destinations/actable-predictive/sendWebEvent/index.js +25 -25
  10. package/dist/destinations/actable-predictive/sendWebEvent/index.js.map +1 -1
  11. package/dist/destinations/actions-bingads/functions.d.ts +0 -0
  12. package/dist/destinations/actions-bingads/functions.js +2 -0
  13. package/dist/destinations/actions-bingads/functions.js.map +1 -0
  14. package/dist/destinations/actions-bingads/generated-types.d.ts +10 -0
  15. package/dist/destinations/actions-bingads/generated-types.js +3 -0
  16. package/dist/destinations/actions-bingads/generated-types.js.map +1 -0
  17. package/dist/destinations/actions-bingads/index.d.ts +4 -0
  18. package/dist/destinations/actions-bingads/index.js +77 -0
  19. package/dist/destinations/actions-bingads/index.js.map +1 -0
  20. package/dist/destinations/actions-bingads/offlineConversions/formatter.d.ts +8 -0
  21. package/dist/destinations/actions-bingads/offlineConversions/formatter.js +33 -0
  22. package/dist/destinations/actions-bingads/offlineConversions/formatter.js.map +1 -0
  23. package/dist/destinations/actions-bingads/offlineConversions/generated-types.d.ts +7 -0
  24. package/dist/destinations/actions-bingads/offlineConversions/generated-types.js +3 -0
  25. package/dist/destinations/actions-bingads/offlineConversions/generated-types.js.map +1 -0
  26. package/dist/destinations/actions-bingads/offlineConversions/index.d.ts +5 -0
  27. package/dist/destinations/actions-bingads/offlineConversions/index.js +131 -0
  28. package/dist/destinations/actions-bingads/offlineConversions/index.js.map +1 -0
  29. package/dist/destinations/braze/trackEvent/generated-types.d.ts +0 -1
  30. package/dist/destinations/braze/trackEvent/index.js +35 -11
  31. package/dist/destinations/braze/trackEvent/index.js.map +1 -1
  32. package/dist/destinations/braze/trackPurchase/index.js +43 -2
  33. package/dist/destinations/braze/trackPurchase/index.js.map +1 -1
  34. package/dist/destinations/braze-cohorts/cohortChanges.d.ts +10 -0
  35. package/dist/destinations/braze-cohorts/cohortChanges.js +3 -0
  36. package/dist/destinations/braze-cohorts/cohortChanges.js.map +1 -0
  37. package/dist/destinations/clevertap/userDelete/index.js +4 -4
  38. package/dist/destinations/clevertap/userDelete/index.js.map +1 -1
  39. package/dist/destinations/cordial/addContactToList/index.js.map +1 -1
  40. package/dist/destinations/cordial/addProductToCart/index.js +1 -1
  41. package/dist/destinations/cordial/addProductToCart/index.js.map +1 -1
  42. package/dist/destinations/cordial/cordial-client.js +2 -2
  43. package/dist/destinations/cordial/createContactactivity/index.js.map +1 -1
  44. package/dist/destinations/cordial/identities-fields.d.ts +1 -1
  45. package/dist/destinations/cordial/identities-fields.js +1 -1
  46. package/dist/destinations/cordial/identities-fields.js.map +1 -1
  47. package/dist/destinations/cordial/index.js +1 -1
  48. package/dist/destinations/cordial/index.js.map +1 -1
  49. package/dist/destinations/cordial/mergeContacts/index.js.map +1 -1
  50. package/dist/destinations/cordial/removeContactFromList/index.js.map +1 -1
  51. package/dist/destinations/cordial/removeProductFromCart/index.js.map +1 -1
  52. package/dist/destinations/cordial/upsertOrder/index.js +8 -8
  53. package/dist/destinations/cordial/upsertOrder/index.js.map +1 -1
  54. package/dist/destinations/engage-messaging-twilio/sendWhatsApp/whatsapp-sender.js +1 -1
  55. package/dist/destinations/engage-messaging-twilio/sendWhatsApp/whatsapp-sender.js.map +1 -1
  56. package/dist/destinations/google-analytics-4/addPaymentInfo/generated-types.d.ts +1 -3
  57. package/dist/destinations/google-analytics-4/addPaymentInfo/index.js +6 -10
  58. package/dist/destinations/google-analytics-4/addPaymentInfo/index.js.map +1 -1
  59. package/dist/destinations/google-analytics-4/addToCart/generated-types.d.ts +1 -3
  60. package/dist/destinations/google-analytics-4/addToCart/index.js +6 -10
  61. package/dist/destinations/google-analytics-4/addToCart/index.js.map +1 -1
  62. package/dist/destinations/google-analytics-4/addToWishlist/generated-types.d.ts +1 -3
  63. package/dist/destinations/google-analytics-4/addToWishlist/index.js +6 -10
  64. package/dist/destinations/google-analytics-4/addToWishlist/index.js.map +1 -1
  65. package/dist/destinations/google-analytics-4/beginCheckout/generated-types.d.ts +1 -3
  66. package/dist/destinations/google-analytics-4/beginCheckout/index.js +6 -10
  67. package/dist/destinations/google-analytics-4/beginCheckout/index.js.map +1 -1
  68. package/dist/destinations/google-analytics-4/customEvent/generated-types.d.ts +1 -3
  69. package/dist/destinations/google-analytics-4/customEvent/index.js +6 -10
  70. package/dist/destinations/google-analytics-4/customEvent/index.js.map +1 -1
  71. package/dist/destinations/google-analytics-4/ga4-functions.d.ts +0 -7
  72. package/dist/destinations/google-analytics-4/ga4-functions.js +1 -38
  73. package/dist/destinations/google-analytics-4/ga4-functions.js.map +1 -1
  74. package/dist/destinations/google-analytics-4/ga4-properties.d.ts +0 -2
  75. package/dist/destinations/google-analytics-4/ga4-properties.js +3 -17
  76. package/dist/destinations/google-analytics-4/ga4-properties.js.map +1 -1
  77. package/dist/destinations/google-analytics-4/ga4-types.d.ts +0 -14
  78. package/dist/destinations/google-analytics-4/ga4-types.js +0 -6
  79. package/dist/destinations/google-analytics-4/ga4-types.js.map +1 -1
  80. package/dist/destinations/google-analytics-4/generateLead/generated-types.d.ts +1 -3
  81. package/dist/destinations/google-analytics-4/generateLead/index.js +6 -10
  82. package/dist/destinations/google-analytics-4/generateLead/index.js.map +1 -1
  83. package/dist/destinations/google-analytics-4/generated-types.d.ts +1 -2
  84. package/dist/destinations/google-analytics-4/index.js +10 -15
  85. package/dist/destinations/google-analytics-4/index.js.map +1 -1
  86. package/dist/destinations/google-analytics-4/login/generated-types.d.ts +1 -3
  87. package/dist/destinations/google-analytics-4/login/index.js +6 -10
  88. package/dist/destinations/google-analytics-4/login/index.js.map +1 -1
  89. package/dist/destinations/google-analytics-4/pageView/generated-types.d.ts +1 -3
  90. package/dist/destinations/google-analytics-4/pageView/index.js +6 -10
  91. package/dist/destinations/google-analytics-4/pageView/index.js.map +1 -1
  92. package/dist/destinations/google-analytics-4/purchase/generated-types.d.ts +1 -3
  93. package/dist/destinations/google-analytics-4/purchase/index.js +6 -10
  94. package/dist/destinations/google-analytics-4/purchase/index.js.map +1 -1
  95. package/dist/destinations/google-analytics-4/refund/generated-types.d.ts +1 -3
  96. package/dist/destinations/google-analytics-4/refund/index.js +6 -10
  97. package/dist/destinations/google-analytics-4/refund/index.js.map +1 -1
  98. package/dist/destinations/google-analytics-4/removeFromCart/generated-types.d.ts +1 -3
  99. package/dist/destinations/google-analytics-4/removeFromCart/index.js +6 -10
  100. package/dist/destinations/google-analytics-4/removeFromCart/index.js.map +1 -1
  101. package/dist/destinations/google-analytics-4/search/generated-types.d.ts +1 -3
  102. package/dist/destinations/google-analytics-4/search/index.js +6 -10
  103. package/dist/destinations/google-analytics-4/search/index.js.map +1 -1
  104. package/dist/destinations/google-analytics-4/selectItem/generated-types.d.ts +1 -3
  105. package/dist/destinations/google-analytics-4/selectItem/index.js +6 -10
  106. package/dist/destinations/google-analytics-4/selectItem/index.js.map +1 -1
  107. package/dist/destinations/google-analytics-4/selectPromotion/generated-types.d.ts +1 -3
  108. package/dist/destinations/google-analytics-4/selectPromotion/index.js +6 -10
  109. package/dist/destinations/google-analytics-4/selectPromotion/index.js.map +1 -1
  110. package/dist/destinations/google-analytics-4/signUp/generated-types.d.ts +1 -3
  111. package/dist/destinations/google-analytics-4/signUp/index.js +6 -10
  112. package/dist/destinations/google-analytics-4/signUp/index.js.map +1 -1
  113. package/dist/destinations/google-analytics-4/viewCart/generated-types.d.ts +1 -3
  114. package/dist/destinations/google-analytics-4/viewCart/index.js +6 -10
  115. package/dist/destinations/google-analytics-4/viewCart/index.js.map +1 -1
  116. package/dist/destinations/google-analytics-4/viewItem/generated-types.d.ts +1 -3
  117. package/dist/destinations/google-analytics-4/viewItem/index.js +6 -10
  118. package/dist/destinations/google-analytics-4/viewItem/index.js.map +1 -1
  119. package/dist/destinations/google-analytics-4/viewItemList/generated-types.d.ts +1 -3
  120. package/dist/destinations/google-analytics-4/viewItemList/index.js +6 -10
  121. package/dist/destinations/google-analytics-4/viewItemList/index.js.map +1 -1
  122. package/dist/destinations/google-analytics-4/viewPromotion/generated-types.d.ts +1 -3
  123. package/dist/destinations/google-analytics-4/viewPromotion/index.js +6 -10
  124. package/dist/destinations/google-analytics-4/viewPromotion/index.js.map +1 -1
  125. package/dist/destinations/google-sheets-dev/index.js +10 -3
  126. package/dist/destinations/google-sheets-dev/index.js.map +1 -1
  127. package/dist/destinations/google-sheets-partner/constants.d.ts +3 -0
  128. package/dist/destinations/google-sheets-partner/constants.js +7 -0
  129. package/dist/destinations/google-sheets-partner/constants.js.map +1 -0
  130. package/dist/destinations/google-sheets-partner/generated-types.d.ts +2 -0
  131. package/dist/destinations/google-sheets-partner/generated-types.js +3 -0
  132. package/dist/destinations/google-sheets-partner/generated-types.js.map +1 -0
  133. package/dist/destinations/google-sheets-partner/googleapis/index.d.ts +17 -0
  134. package/dist/destinations/google-sheets-partner/googleapis/index.js +34 -0
  135. package/dist/destinations/google-sheets-partner/googleapis/index.js.map +1 -0
  136. package/dist/destinations/google-sheets-partner/index.d.ts +4 -0
  137. package/dist/destinations/google-sheets-partner/index.js +43 -0
  138. package/dist/destinations/google-sheets-partner/index.js.map +1 -0
  139. package/dist/destinations/google-sheets-partner/postSheet/generated-types.d.ts +11 -0
  140. package/dist/destinations/google-sheets-partner/postSheet/generated-types.js +3 -0
  141. package/dist/destinations/google-sheets-partner/postSheet/generated-types.js.map +1 -0
  142. package/dist/destinations/google-sheets-partner/postSheet/index.d.ts +5 -0
  143. package/dist/destinations/google-sheets-partner/postSheet/index.js +79 -0
  144. package/dist/destinations/google-sheets-partner/postSheet/index.js.map +1 -0
  145. package/dist/destinations/google-sheets-partner/postSheet/operations.d.ts +10 -0
  146. package/dist/destinations/google-sheets-partner/postSheet/operations.js +96 -0
  147. package/dist/destinations/google-sheets-partner/postSheet/operations.js.map +1 -0
  148. package/dist/destinations/index.js +2 -0
  149. package/dist/destinations/index.js.map +1 -1
  150. package/dist/destinations/mixpanel/index.js +1 -1
  151. package/dist/destinations/mixpanel/mixpanel-properties.js.map +1 -1
  152. package/dist/destinations/mixpanel/trackEvent/functions.js +1 -1
  153. package/dist/destinations/mixpanel/trackEvent/functions.js.map +1 -1
  154. package/dist/destinations/mixpanel/trackEvent/index.js.map +1 -1
  155. package/dist/destinations/mixpanel/trackPurchase/index.js.map +1 -1
  156. package/dist/destinations/salesforce/sf-properties.d.ts +1 -0
  157. package/dist/destinations/salesforce/sf-properties.js.map +1 -1
  158. package/dist/destinations/segment/segment-properties.js +1 -2
  159. package/dist/destinations/segment/segment-properties.js.map +1 -1
  160. package/dist/destinations/segment/sendTrack/generated-types.d.ts +1 -1
  161. package/dist/destinations/tiktok-audiences/addUser/generated-types.d.ts +12 -0
  162. package/dist/destinations/tiktok-audiences/addUser/generated-types.js +3 -0
  163. package/dist/destinations/tiktok-audiences/addUser/generated-types.js.map +1 -0
  164. package/dist/destinations/tiktok-audiences/addUser/index.d.ts +5 -0
  165. package/dist/destinations/tiktok-audiences/addUser/index.js +47 -0
  166. package/dist/destinations/tiktok-audiences/addUser/index.js.map +1 -0
  167. package/dist/destinations/tiktok-audiences/api/api.test.d.ts +1 -0
  168. package/dist/destinations/tiktok-audiences/api/api.test.js +118 -0
  169. package/dist/destinations/tiktok-audiences/api/api.test.js.map +1 -0
  170. package/dist/destinations/tiktok-audiences/api/index.d.ts +13 -0
  171. package/dist/destinations/tiktok-audiences/api/index.js +93 -0
  172. package/dist/destinations/tiktok-audiences/api/index.js.map +1 -0
  173. package/dist/destinations/tiktok-audiences/constants.d.ts +2 -0
  174. package/dist/destinations/tiktok-audiences/constants.js +6 -0
  175. package/dist/destinations/tiktok-audiences/constants.js.map +1 -0
  176. package/dist/destinations/tiktok-audiences/functions.d.ts +14 -0
  177. package/dist/destinations/tiktok-audiences/functions.js +116 -0
  178. package/dist/destinations/tiktok-audiences/functions.js.map +1 -0
  179. package/dist/destinations/tiktok-audiences/generated-types.d.ts +3 -0
  180. package/dist/destinations/tiktok-audiences/generated-types.js +3 -0
  181. package/dist/destinations/tiktok-audiences/generated-types.js.map +1 -0
  182. package/dist/destinations/tiktok-audiences/index.d.ts +4 -0
  183. package/dist/destinations/tiktok-audiences/index.js +38 -0
  184. package/dist/destinations/tiktok-audiences/index.js.map +1 -0
  185. package/dist/destinations/tiktok-audiences/properties.d.ts +11 -0
  186. package/dist/destinations/tiktok-audiences/properties.js +80 -0
  187. package/dist/destinations/tiktok-audiences/properties.js.map +1 -0
  188. package/dist/destinations/tiktok-audiences/removeUser/generated-types.d.ts +12 -0
  189. package/dist/destinations/tiktok-audiences/removeUser/generated-types.js +3 -0
  190. package/dist/destinations/tiktok-audiences/removeUser/generated-types.js.map +1 -0
  191. package/dist/destinations/tiktok-audiences/removeUser/index.d.ts +5 -0
  192. package/dist/destinations/tiktok-audiences/removeUser/index.js +47 -0
  193. package/dist/destinations/tiktok-audiences/removeUser/index.js.map +1 -0
  194. package/dist/destinations/tiktok-audiences/types.d.ts +33 -0
  195. package/dist/destinations/tiktok-audiences/types.js +3 -0
  196. package/dist/destinations/tiktok-audiences/types.js.map +1 -0
  197. package/package.json +2 -3
  198. package/dist/destinations/braze/utils.d.ts +0 -6
  199. package/dist/destinations/braze/utils.js +0 -81
  200. package/dist/destinations/braze/utils.js.map +0 -1
@@ -0,0 +1,118 @@
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 create_request_client_1 = __importDefault(require("../../../../../core/src/create-request-client"));
8
+ const index_1 = require("./index");
9
+ const constants_1 = require("../constants");
10
+ const settings = {
11
+ advertiser_ids: ['1234567890', '0987654321', '2345675643']
12
+ };
13
+ const requestClient = create_request_client_1.default();
14
+ describe('TikTok', () => {
15
+ describe('fetchAdvertisers', () => {
16
+ const tiktok = new index_1.TikTokAudiences(requestClient);
17
+ it('should fetch a list of advertisers, with their names', async () => {
18
+ nock_1.default(`${constants_1.BASE_URL}${constants_1.TIKTOK_API_VERSION}/advertiser/info`)
19
+ .get(`/`)
20
+ .query({ advertiser_ids: JSON.stringify(settings.advertiser_ids) })
21
+ .reply(200, {
22
+ code: 0,
23
+ message: 'success',
24
+ data: {
25
+ list: [
26
+ {
27
+ balance: 0.0,
28
+ email: 'd*******************@***********',
29
+ promotion_area: '0',
30
+ display_timezone: 'America/New_York',
31
+ create_time: 1672341876,
32
+ telephone_number: '+10000****00',
33
+ license_no: '',
34
+ description: null,
35
+ license_province: null,
36
+ address: '',
37
+ industry: '292801',
38
+ currency: 'USD',
39
+ rejection_reason: '-',
40
+ country: 'US',
41
+ license_url: null,
42
+ timezone: 'Etc/GMT+5',
43
+ license_city: null,
44
+ brand: null,
45
+ promotion_center_province: null,
46
+ advertiser_account_type: 'AUCTION',
47
+ status: 'STATUS_ENABLE',
48
+ cellphone_number: '+10000****00',
49
+ name: 'TestAccount1',
50
+ role: 'ROLE_ADVERTISER',
51
+ contacter: 'Se***nt',
52
+ promotion_center_city: null,
53
+ advertiser_id: '1234567890',
54
+ language: '',
55
+ company: 'Segment'
56
+ },
57
+ {
58
+ advertiser_id: '0987654321',
59
+ name: 'TestAccount2'
60
+ },
61
+ {
62
+ advertiser_id: '2345675643',
63
+ name: 'TestAccount3'
64
+ }
65
+ ]
66
+ }
67
+ });
68
+ const fetchAdvertisersRes = await tiktok.fetchAdvertisers(settings.advertiser_ids);
69
+ expect(fetchAdvertisersRes).toEqual({
70
+ choices: [
71
+ {
72
+ label: 'TestAccount1',
73
+ value: '1234567890'
74
+ },
75
+ {
76
+ label: 'TestAccount2',
77
+ value: '0987654321'
78
+ },
79
+ {
80
+ label: 'TestAccount3',
81
+ value: '2345675643'
82
+ }
83
+ ]
84
+ });
85
+ });
86
+ it('should fallback to stored advertiser_ids if tiktok returns an error', async () => {
87
+ nock_1.default(`${constants_1.BASE_URL}${constants_1.TIKTOK_API_VERSION}/advertiser/info`)
88
+ .get(`/`)
89
+ .query({ advertiser_ids: JSON.stringify(settings.advertiser_ids) })
90
+ .reply(200, {
91
+ code: 500,
92
+ message: 'Internal Server Error'
93
+ });
94
+ const fetchAdvertisersRes = await tiktok.fetchAdvertisers(settings.advertiser_ids);
95
+ expect(fetchAdvertisersRes).toEqual({
96
+ choices: [
97
+ {
98
+ label: '1234567890',
99
+ value: '1234567890'
100
+ },
101
+ {
102
+ label: '0987654321',
103
+ value: '0987654321'
104
+ },
105
+ {
106
+ label: '2345675643',
107
+ value: '2345675643'
108
+ }
109
+ ],
110
+ error: {
111
+ message: 'Internal Server Error',
112
+ code: '500'
113
+ }
114
+ });
115
+ });
116
+ });
117
+ });
118
+ //# sourceMappingURL=api.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.test.js","sourceRoot":"","sources":["../../../../src/destinations/tiktok-audiences/api/api.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { RequestClient, ModifiedResponse } from '@segment/actions-core';
2
+ import type { Payload } from '../addUser/generated-types';
3
+ import type { GetAudienceAPIResponse, CreateAudienceAPIResponse } from '../types';
4
+ import { DynamicFieldResponse } from '@segment/actions-core';
5
+ export declare class TikTokAudiences {
6
+ request: RequestClient;
7
+ selectedAdvertiserID?: string;
8
+ constructor(request: RequestClient, selectedAdvertiserID?: string);
9
+ getAudiences(page_number: number, page_size: number): Promise<ModifiedResponse<GetAudienceAPIResponse>>;
10
+ createAudience(payload: Payload): Promise<ModifiedResponse<CreateAudienceAPIResponse>>;
11
+ batchUpdate(elements: {}): Promise<ModifiedResponse>;
12
+ fetchAdvertisers: (advertiser_ids: string[]) => Promise<DynamicFieldResponse>;
13
+ }
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TikTokAudiences = void 0;
4
+ const constants_1 = require("../constants");
5
+ class TikTokAudiences {
6
+ constructor(request, selectedAdvertiserID) {
7
+ this.fetchAdvertisers = async (advertiser_ids) => {
8
+ if (!advertiser_ids.length) {
9
+ throw {
10
+ error: {
11
+ message: 'Sign in via OAuth on the settings page to load advertisers.',
12
+ code: 'NOT_LOGGED_IN'
13
+ }
14
+ };
15
+ }
16
+ try {
17
+ const result = await this.request(`${constants_1.BASE_URL}${constants_1.TIKTOK_API_VERSION}/advertiser/info/`, {
18
+ method: 'GET',
19
+ searchParams: {
20
+ advertiser_ids: JSON.stringify(advertiser_ids)
21
+ }
22
+ });
23
+ console.log(result);
24
+ if (result.data.code !== 0) {
25
+ throw {
26
+ response: {
27
+ data: {
28
+ message: result.data.message,
29
+ code: result.data.code
30
+ }
31
+ }
32
+ };
33
+ }
34
+ const choices = result.data.data.list.map((item) => {
35
+ return {
36
+ label: item.name,
37
+ value: item.advertiser_id
38
+ };
39
+ });
40
+ return {
41
+ choices: choices
42
+ };
43
+ }
44
+ catch (err) {
45
+ const choices = advertiser_ids.map((id) => {
46
+ return {
47
+ label: id,
48
+ value: id
49
+ };
50
+ });
51
+ return {
52
+ choices: choices,
53
+ error: {
54
+ message: err.response.data.message ?? 'An error occurred while fetching advertisers.',
55
+ code: err.response.data.code.toString() ?? 'FETCH_ADVERTISERS_ERROR'
56
+ }
57
+ };
58
+ }
59
+ };
60
+ this.request = request;
61
+ this.selectedAdvertiserID = selectedAdvertiserID;
62
+ }
63
+ async getAudiences(page_number, page_size) {
64
+ return this.request(`${constants_1.BASE_URL}${constants_1.TIKTOK_API_VERSION}/dmp/custom_audience/list/`, {
65
+ method: 'GET',
66
+ searchParams: {
67
+ advertiser_id: this.selectedAdvertiserID ?? '',
68
+ page: page_number,
69
+ page_size: page_size
70
+ }
71
+ });
72
+ }
73
+ async createAudience(payload) {
74
+ return this.request(`${constants_1.BASE_URL}${constants_1.TIKTOK_API_VERSION}/segment/audience/`, {
75
+ method: 'POST',
76
+ json: {
77
+ custom_audience_name: payload.custom_audience_name,
78
+ advertiser_id: this.selectedAdvertiserID,
79
+ id_type: payload.id_type,
80
+ action: 'create'
81
+ }
82
+ });
83
+ }
84
+ async batchUpdate(elements) {
85
+ return this.request(`${constants_1.BASE_URL}${constants_1.TIKTOK_API_VERSION}/segment/mapping/`, {
86
+ method: 'POST',
87
+ json: elements,
88
+ throwHttpErrors: false
89
+ });
90
+ }
91
+ }
92
+ exports.TikTokAudiences = TikTokAudiences;
93
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/destinations/tiktok-audiences/api/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const TIKTOK_API_VERSION = "v1.3";
2
+ export declare const BASE_URL = "https://business-api.tiktok.com/open_api/";
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BASE_URL = exports.TIKTOK_API_VERSION = void 0;
4
+ exports.TIKTOK_API_VERSION = 'v1.3';
5
+ exports.BASE_URL = 'https://business-api.tiktok.com/open_api/';
6
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/destinations/tiktok-audiences/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,kBAAkB,GAAG,MAAM,CAAA;AAC3B,QAAA,QAAQ,GAAG,2CAA2C,CAAA"}
@@ -0,0 +1,14 @@
1
+ import { RequestClient } from '@segment/actions-core';
2
+ import { Audiences } from './types';
3
+ import { TikTokAudiences } from './api';
4
+ import { Payload as AddUserPayload } from './addUser/generated-types';
5
+ import { Payload as RemoveUserPayload } from './removeUser/generated-types';
6
+ import { Settings } from './generated-types';
7
+ declare type GenericPayload = AddUserPayload | RemoveUserPayload;
8
+ export declare function processPayload(request: RequestClient, settings: Settings, payloads: GenericPayload[], action: string): Promise<import("@segment/actions-core").ModifiedResponse<unknown> | undefined>;
9
+ export declare function validate(payloads: GenericPayload[]): void;
10
+ export declare function getAllAudiences(TikTokApiClient: TikTokAudiences): Promise<Audiences[]>;
11
+ export declare function getAudienceID(TikTokApiClient: TikTokAudiences, payload: GenericPayload, audiences: Audiences[]): Promise<string>;
12
+ export declare function getIDSchema(payload: GenericPayload): string[];
13
+ export declare function extractUsers(payloads: GenericPayload[], audienceID: string): {}[][];
14
+ export {};
@@ -0,0 +1,116 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.extractUsers = exports.getIDSchema = exports.getAudienceID = exports.getAllAudiences = exports.validate = exports.processPayload = void 0;
4
+ const actions_core_1 = require("@segment/actions-core");
5
+ const crypto_1 = require("crypto");
6
+ const api_1 = require("./api");
7
+ async function processPayload(request, settings, payloads, action) {
8
+ validate(payloads);
9
+ const selected_advertiser_id = payloads[0].selected_advertiser_id ?? undefined;
10
+ const TikTokApiClient = new api_1.TikTokAudiences(request, selected_advertiser_id);
11
+ const audiences = await getAllAudiences(TikTokApiClient);
12
+ const audience_id = await getAudienceID(TikTokApiClient, payloads[0], audiences);
13
+ const id_schema = getIDSchema(payloads[0]);
14
+ const users = extractUsers(payloads, audience_id);
15
+ let res;
16
+ if (users.length > 0) {
17
+ const elements = {
18
+ advertiser_ids: settings.advertiser_ids,
19
+ action: action,
20
+ id_schema: id_schema,
21
+ batch_data: users
22
+ };
23
+ res = await TikTokApiClient.batchUpdate(elements);
24
+ if (res.status !== 200) {
25
+ throw new actions_core_1.RetryableError('Error while attempting to update TikTok Audience. This batch will be retried.');
26
+ }
27
+ }
28
+ return res;
29
+ }
30
+ exports.processPayload = processPayload;
31
+ function validate(payloads) {
32
+ if (payloads[0].custom_audience_name !== payloads[0].personas_audience_key) {
33
+ throw new actions_core_1.IntegrationError('The value of `custom_audience_name` and `personas_audience_key` must match.', 'INVALID_SETTINGS', 400);
34
+ }
35
+ if (payloads[0].send_email === false && payloads[0].send_advertising_id === false) {
36
+ throw new actions_core_1.IntegrationError('At least one of `Send Email`, or `Send Advertising ID` must be set to `true`.', 'INVALID_SETTINGS', 400);
37
+ }
38
+ }
39
+ exports.validate = validate;
40
+ async function getAllAudiences(TikTokApiClient) {
41
+ let response = await TikTokApiClient.getAudiences(1, 100);
42
+ let audiences = response.data.data.list;
43
+ const total_number_audiences = response.data.data.page_info.total_number;
44
+ let recieved_audiences = 100;
45
+ let page_number = 2;
46
+ while (recieved_audiences < total_number_audiences) {
47
+ response = await TikTokApiClient.getAudiences(page_number, 100);
48
+ audiences = audiences.concat(response.data.data.list);
49
+ page_number += 1;
50
+ recieved_audiences += 100;
51
+ }
52
+ return audiences;
53
+ }
54
+ exports.getAllAudiences = getAllAudiences;
55
+ async function getAudienceID(TikTokApiClient, payload, audiences) {
56
+ let audienceID;
57
+ const audienceExists = audiences.filter(function (audience) {
58
+ if (audience.name === payload.custom_audience_name) {
59
+ return audience.audience_id;
60
+ }
61
+ });
62
+ if (audienceExists.length > 1) {
63
+ throw new actions_core_1.IntegrationError('Multiple audiences found with the same name', 'INVALID_SETTINGS', 400);
64
+ }
65
+ if (audienceExists.length == 1) {
66
+ audienceID = audienceExists[0].audience_id;
67
+ }
68
+ else {
69
+ const response = await TikTokApiClient.createAudience(payload);
70
+ audienceID = response.data.data.audience_id;
71
+ }
72
+ return audienceID;
73
+ }
74
+ exports.getAudienceID = getAudienceID;
75
+ function getIDSchema(payload) {
76
+ const id_schema = [];
77
+ if (payload.send_email === true) {
78
+ id_schema.push('EMAIL_SHA256');
79
+ }
80
+ if (payload.send_advertising_id === true) {
81
+ id_schema.push('IDFA_SHA256');
82
+ }
83
+ return id_schema;
84
+ }
85
+ exports.getIDSchema = getIDSchema;
86
+ function extractUsers(payloads, audienceID) {
87
+ const batch_data = [];
88
+ payloads.forEach((payload) => {
89
+ if (!payload.email && !payload.advertising_id) {
90
+ return;
91
+ }
92
+ const user_ids = [];
93
+ if (payload.send_email === true) {
94
+ let email_id = {};
95
+ if (payload.email) {
96
+ payload.email = payload.email.replace(/\+.*@/, '@').replace(/\./g, '').toLowerCase();
97
+ email_id = { id: crypto_1.createHash('sha256').update(payload.email).digest('hex'), audience_ids: [audienceID] };
98
+ }
99
+ user_ids.push(email_id);
100
+ }
101
+ if (payload.send_advertising_id === true) {
102
+ let advertising_id = {};
103
+ if (payload.advertising_id) {
104
+ advertising_id = {
105
+ id: crypto_1.createHash('sha256').update(payload.advertising_id).digest('hex'),
106
+ audience_ids: [audienceID]
107
+ };
108
+ }
109
+ user_ids.push(advertising_id);
110
+ }
111
+ batch_data.push(user_ids);
112
+ });
113
+ return batch_data;
114
+ }
115
+ exports.extractUsers = extractUsers;
116
+ //# sourceMappingURL=functions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"functions.js","sourceRoot":"","sources":["../../../src/destinations/tiktok-audiences/functions.ts"],"names":[],"mappings":";;;AAAA,wDAAuF;AAEvF,mCAAmC;AACnC,+BAAuC;AAOhC,KAAK,UAAU,cAAc,CAClC,OAAsB,EACtB,QAAkB,EAClB,QAA0B,EAC1B,MAAc;IAEd,QAAQ,CAAC,QAAQ,CAAC,CAAA;IAElB,MAAM,sBAAsB,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,sBAAsB,IAAI,SAAS,CAAA;IAC9E,MAAM,eAAe,GAAoB,IAAI,qBAAe,CAAC,OAAO,EAAE,sBAAsB,CAAC,CAAA;IAE7F,MAAM,SAAS,GAAG,MAAM,eAAe,CAAC,eAAe,CAAC,CAAA;IAExD,MAAM,WAAW,GAAG,MAAM,aAAa,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAA;IAEhF,MAAM,SAAS,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;IAE1C,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAA;IAEjD,IAAI,GAAG,CAAA;IACP,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;QACpB,MAAM,QAAQ,GAAG;YACf,cAAc,EAAE,QAAQ,CAAC,cAAc;YACvC,MAAM,EAAE,MAAM;YACd,SAAS,EAAE,SAAS;YACpB,UAAU,EAAE,KAAK;SAClB,CAAA;QACD,GAAG,GAAG,MAAM,eAAe,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAA;QAMjD,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE;YACtB,MAAM,IAAI,6BAAc,CAAC,+EAA+E,CAAC,CAAA;SAC1G;KACF;IAED,OAAO,GAAG,CAAA;AACZ,CAAC;AAvCD,wCAuCC;AAED,SAAgB,QAAQ,CAAC,QAA0B;IACjD,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,oBAAoB,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,qBAAqB,EAAE;QAC1E,MAAM,IAAI,+BAAgB,CACxB,6EAA6E,EAC7E,kBAAkB,EAClB,GAAG,CACJ,CAAA;KACF;IAED,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,KAAK,KAAK,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,mBAAmB,KAAK,KAAK,EAAE;QACjF,MAAM,IAAI,+BAAgB,CACxB,+EAA+E,EAC/E,kBAAkB,EAClB,GAAG,CACJ,CAAA;KACF;AACH,CAAC;AAhBD,4BAgBC;AAOM,KAAK,UAAU,eAAe,CAAC,eAAgC;IACpE,IAAI,QAAQ,GAAG,MAAM,eAAe,CAAC,YAAY,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;IACzD,IAAI,SAAS,GAAgB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAA;IACpD,MAAM,sBAAsB,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAA;IACxE,IAAI,kBAAkB,GAAG,GAAG,CAAA;IAC5B,IAAI,WAAW,GAAG,CAAC,CAAA;IACnB,OAAO,kBAAkB,GAAG,sBAAsB,EAAE;QAClD,QAAQ,GAAG,MAAM,eAAe,CAAC,YAAY,CAAC,WAAW,EAAE,GAAG,CAAC,CAAA;QAC/D,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACrD,WAAW,IAAI,CAAC,CAAA;QAChB,kBAAkB,IAAI,GAAG,CAAA;KAC1B;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAbD,0CAaC;AAEM,KAAK,UAAU,aAAa,CACjC,eAAgC,EAChC,OAAuB,EACvB,SAAsB;IAEtB,IAAI,UAAU,CAAA;IACd,MAAM,cAAc,GAAG,SAAS,CAAC,MAAM,CAAC,UAAU,QAAQ;QACxD,IAAI,QAAQ,CAAC,IAAI,KAAK,OAAO,CAAC,oBAAoB,EAAE;YAClD,OAAO,QAAQ,CAAC,WAAW,CAAA;SAC5B;IACH,CAAC,CAAC,CAAA;IAGF,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;QAC7B,MAAM,IAAI,+BAAgB,CAAC,6CAA6C,EAAE,kBAAkB,EAAE,GAAG,CAAC,CAAA;KACnG;IAED,IAAI,cAAc,CAAC,MAAM,IAAI,CAAC,EAAE;QAC9B,UAAU,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,WAAW,CAAA;KAC3C;SAAM;QACL,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,cAAc,CAAC,OAAyB,CAAC,CAAA;QAChF,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAA;KAC5C;IAED,OAAO,UAAU,CAAA;AACnB,CAAC;AAzBD,sCAyBC;AAED,SAAgB,WAAW,CAAC,OAAuB;IACjD,MAAM,SAAS,GAAG,EAAE,CAAA;IACpB,IAAI,OAAO,CAAC,UAAU,KAAK,IAAI,EAAE;QAC/B,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;KAC/B;IACD,IAAI,OAAO,CAAC,mBAAmB,KAAK,IAAI,EAAE;QACxC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;KAC9B;IAED,OAAO,SAAS,CAAA;AAClB,CAAC;AAVD,kCAUC;AAED,SAAgB,YAAY,CAAC,QAA0B,EAAE,UAAkB;IACzE,MAAM,UAAU,GAAW,EAAE,CAAA;IAE7B,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAuB,EAAE,EAAE;QAC3C,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE;YAC7C,OAAM;SACP;QAED,MAAM,QAAQ,GAAS,EAAE,CAAA;QAEzB,IAAI,OAAO,CAAC,UAAU,KAAK,IAAI,EAAE;YAC/B,IAAI,QAAQ,GAAG,EAAE,CAAA;YACjB,IAAI,OAAO,CAAC,KAAK,EAAE;gBACjB,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAA;gBACpF,QAAQ,GAAG,EAAE,EAAE,EAAE,mBAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,YAAY,EAAE,CAAC,UAAU,CAAC,EAAE,CAAA;aACxG;YACD,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;SACxB;QAED,IAAI,OAAO,CAAC,mBAAmB,KAAK,IAAI,EAAE;YACxC,IAAI,cAAc,GAAG,EAAE,CAAA;YACvB,IAAI,OAAO,CAAC,cAAc,EAAE;gBAC1B,cAAc,GAAG;oBACf,EAAE,EAAE,mBAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;oBACrE,YAAY,EAAE,CAAC,UAAU,CAAC;iBAC3B,CAAA;aACF;YACD,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;SAC9B;QAED,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IAC3B,CAAC,CAAC,CAAA;IACF,OAAO,UAAU,CAAA;AACnB,CAAC;AAjCD,oCAiCC"}
@@ -0,0 +1,3 @@
1
+ export interface Settings {
2
+ advertiser_ids: string[];
3
+ }
@@ -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/tiktok-audiences/generated-types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ import type { 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,38 @@
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 addUser_1 = __importDefault(require("./addUser"));
7
+ const removeUser_1 = __importDefault(require("./removeUser"));
8
+ const destination = {
9
+ name: 'TikTok Audiences',
10
+ slug: 'actions-tiktok-audiences',
11
+ mode: 'cloud',
12
+ authentication: {
13
+ scheme: 'oauth2',
14
+ fields: {
15
+ advertiser_ids: {
16
+ label: 'TikTok Advertiser IDs',
17
+ description: 'The Advertiser IDs where audiences should be synced.',
18
+ type: 'string',
19
+ required: true,
20
+ multiple: true
21
+ }
22
+ }
23
+ },
24
+ extendRequest({ auth }) {
25
+ return {
26
+ headers: {
27
+ 'Access-Token': `${auth?.accessToken}`,
28
+ 'Content-Type': 'application/json'
29
+ }
30
+ };
31
+ },
32
+ actions: {
33
+ addUser: addUser_1.default,
34
+ removeUser: removeUser_1.default
35
+ }
36
+ };
37
+ exports.default = destination;
38
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/destinations/tiktok-audiences/index.ts"],"names":[],"mappings":";;;;;AAGA,wDAA+B;AAC/B,8DAAqC;AAErC,MAAM,WAAW,GAAoC;IACnD,IAAI,EAAE,kBAAkB;IACxB,IAAI,EAAE,0BAA0B;IAChC,IAAI,EAAE,OAAO;IAEb,cAAc,EAAE;QACd,MAAM,EAAE,QAAQ;QAChB,MAAM,EAAE;YACN,cAAc,EAAE;gBACd,KAAK,EAAE,uBAAuB;gBAC9B,WAAW,EAAE,sDAAsD;gBACnE,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,IAAI;gBACd,QAAQ,EAAE,IAAI;aACf;SACF;KASF;IACD,aAAa,CAAC,EAAE,IAAI,EAAE;QACpB,OAAO;YACL,OAAO,EAAE;gBACP,cAAc,EAAE,GAAG,IAAI,EAAE,WAAW,EAAE;gBACtC,cAAc,EAAE,kBAAkB;aACnC;SACF,CAAA;IACH,CAAC;IAED,OAAO,EAAE;QACP,OAAO,EAAP,iBAAO;QACP,UAAU,EAAV,oBAAU;KACX;CACF,CAAA;AAED,kBAAe,WAAW,CAAA"}
@@ -0,0 +1,11 @@
1
+ import { InputField } from '@segment/actions-core/src/destination-kit/types';
2
+ export declare const selected_advertiser_id: InputField;
3
+ export declare const custom_audience_name: InputField;
4
+ export declare const id_type: InputField;
5
+ export declare const email: InputField;
6
+ export declare const send_email: InputField;
7
+ export declare const advertising_id: InputField;
8
+ export declare const send_advertising_id: InputField;
9
+ export declare const event_name: InputField;
10
+ export declare const enable_batching: InputField;
11
+ export declare const personas_audience_key: InputField;
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.personas_audience_key = exports.enable_batching = exports.event_name = exports.send_advertising_id = exports.advertising_id = exports.send_email = exports.email = exports.id_type = exports.custom_audience_name = exports.selected_advertiser_id = void 0;
4
+ exports.selected_advertiser_id = {
5
+ label: 'Advertiser ID',
6
+ description: 'The advertiser ID to use when syncing audiences.',
7
+ type: 'string',
8
+ dynamic: true,
9
+ required: true
10
+ };
11
+ exports.custom_audience_name = {
12
+ label: 'Custom Audience Name',
13
+ description: 'Custom audience name of audience to be created. Please note that names over 70 characters will be truncated to 67 characters with "..." appended. This field is set only when Segment creates a new audience. Updating this field after Segment has created an audience will not update the audience name in TikTok.',
14
+ type: 'string',
15
+ default: {
16
+ '@path': '$.properties.audience_key'
17
+ },
18
+ required: true
19
+ };
20
+ exports.id_type = {
21
+ label: 'ID Type',
22
+ description: 'Encryption type to be used for populating the audience. This field is set only when Segment creates a new audience.',
23
+ type: 'string',
24
+ choices: [
25
+ { label: 'Email', value: 'EMAIL_SHA256' },
26
+ { label: 'Phone', value: 'PHONE_SHA256' },
27
+ { label: 'Google Advertising ID', value: 'GAID_SHA256' },
28
+ { label: 'Android Advertising ID', value: 'AAID_SHA256' },
29
+ { label: 'iOS Advertising ID', value: 'IDFA_SHA256' }
30
+ ],
31
+ required: true
32
+ };
33
+ exports.email = {
34
+ label: 'User Email',
35
+ description: "The user's email address to send to TikTok.",
36
+ type: 'hidden',
37
+ default: {
38
+ '@path': '$.context.traits.email'
39
+ }
40
+ };
41
+ exports.send_email = {
42
+ label: 'Send Email',
43
+ description: 'Send email to TikTok. Segment will hash this value before sending',
44
+ type: 'boolean',
45
+ default: true
46
+ };
47
+ exports.advertising_id = {
48
+ label: 'User Advertising ID',
49
+ description: "The user's mobile dvertising ID to send to TikTok. This could be a GAID, IDFA, or AAID",
50
+ type: 'hidden',
51
+ default: {
52
+ '@path': '$.context.device.advertisingId'
53
+ }
54
+ };
55
+ exports.send_advertising_id = {
56
+ label: 'Send Mobile Advertising ID',
57
+ description: 'Send mobile advertising ID (IDFA, AAID or GAID) to TikTok. Segment will hash this value before sending.',
58
+ type: 'boolean',
59
+ default: true
60
+ };
61
+ exports.event_name = {
62
+ label: 'Event Name',
63
+ description: 'The name of the current Segment event.',
64
+ type: 'hidden',
65
+ default: {
66
+ '@path': '$.event'
67
+ }
68
+ };
69
+ exports.enable_batching = {
70
+ label: 'Enable Batching',
71
+ description: 'Enable batching of requests to the TikTok Audiences.',
72
+ type: 'boolean',
73
+ default: true
74
+ };
75
+ exports.personas_audience_key = {
76
+ label: 'Segment Engage Audience Key',
77
+ description: 'The `audience_key` of the Engage audience you want to sync to TikTok. This value must be a hard-coded string variable, e.g. `personas_test_audience`, in order for batching to work properly.',
78
+ type: 'string'
79
+ };
80
+ //# sourceMappingURL=properties.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"properties.js","sourceRoot":"","sources":["../../../src/destinations/tiktok-audiences/properties.ts"],"names":[],"mappings":";;;AAEa,QAAA,sBAAsB,GAAe;IAChD,KAAK,EAAE,eAAe;IACtB,WAAW,EAAE,kDAAkD;IAC/D,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,IAAI;CACf,CAAA;AAEY,QAAA,oBAAoB,GAAe;IAC9C,KAAK,EAAE,sBAAsB;IAC7B,WAAW,EACT,sTAAsT;IACxT,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE;QACP,OAAO,EAAE,2BAA2B;KACrC;IACD,QAAQ,EAAE,IAAI;CACf,CAAA;AAEY,QAAA,OAAO,GAAe;IACjC,KAAK,EAAE,SAAS;IAChB,WAAW,EACT,qHAAqH;IACvH,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE;QACP,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE;QACzC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE;QACzC,EAAE,KAAK,EAAE,uBAAuB,EAAE,KAAK,EAAE,aAAa,EAAE;QACxD,EAAE,KAAK,EAAE,wBAAwB,EAAE,KAAK,EAAE,aAAa,EAAE;QACzD,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,aAAa,EAAE;KACtD;IACD,QAAQ,EAAE,IAAI;CACf,CAAA;AAEY,QAAA,KAAK,GAAe;IAC/B,KAAK,EAAE,YAAY;IACnB,WAAW,EAAE,6CAA6C;IAC1D,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE;QACP,OAAO,EAAE,wBAAwB;KAClC;CACF,CAAA;AAEY,QAAA,UAAU,GAAe;IACpC,KAAK,EAAE,YAAY;IACnB,WAAW,EAAE,mEAAmE;IAChF,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,IAAI;CACd,CAAA;AAEY,QAAA,cAAc,GAAe;IACxC,KAAK,EAAE,qBAAqB;IAC5B,WAAW,EAAE,wFAAwF;IACrG,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE;QACP,OAAO,EAAE,gCAAgC;KAC1C;CACF,CAAA;AAEY,QAAA,mBAAmB,GAAe;IAC7C,KAAK,EAAE,4BAA4B;IACnC,WAAW,EACT,yGAAyG;IAC3G,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,IAAI;CACd,CAAA;AAEY,QAAA,UAAU,GAAe;IACpC,KAAK,EAAE,YAAY;IACnB,WAAW,EAAE,wCAAwC;IACrD,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE;QACP,OAAO,EAAE,SAAS;KACnB;CACF,CAAA;AAEY,QAAA,eAAe,GAAe;IACzC,KAAK,EAAE,iBAAiB;IACxB,WAAW,EAAE,sDAAsD;IACnE,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,IAAI;CACd,CAAA;AAEY,QAAA,qBAAqB,GAAe;IAC/C,KAAK,EAAE,6BAA6B;IACpC,WAAW,EACT,+LAA+L;IACjM,IAAI,EAAE,QAAQ;CACf,CAAA"}
@@ -0,0 +1,12 @@
1
+ export interface Payload {
2
+ selected_advertiser_id: string;
3
+ custom_audience_name: string;
4
+ id_type: string;
5
+ email?: string;
6
+ advertising_id?: string;
7
+ send_email?: boolean;
8
+ send_advertising_id?: boolean;
9
+ event_name?: string;
10
+ enable_batching?: boolean;
11
+ personas_audience_key?: string;
12
+ }
@@ -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/tiktok-audiences/removeUser/generated-types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ import type { ActionDefinition } from '@segment/actions-core';
2
+ import type { Settings } from '../generated-types';
3
+ import type { Payload } from './generated-types';
4
+ declare const action: ActionDefinition<Settings, Payload>;
5
+ export default action;
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const functions_1 = require("../functions");
4
+ const properties_1 = require("../properties");
5
+ const api_1 = require("../api");
6
+ const action = {
7
+ title: 'Remove Users',
8
+ description: 'Remove contacts from an Engage Audience to a TikTok Audience Segment.',
9
+ defaultSubscription: 'event = "Audience Exited"',
10
+ fields: {
11
+ selected_advertiser_id: { ...properties_1.selected_advertiser_id },
12
+ custom_audience_name: { ...properties_1.custom_audience_name },
13
+ id_type: { ...properties_1.id_type },
14
+ email: { ...properties_1.email },
15
+ advertising_id: { ...properties_1.advertising_id },
16
+ send_email: { ...properties_1.send_email },
17
+ send_advertising_id: { ...properties_1.send_advertising_id },
18
+ event_name: { ...properties_1.event_name },
19
+ enable_batching: { ...properties_1.enable_batching },
20
+ personas_audience_key: { ...properties_1.personas_audience_key }
21
+ },
22
+ dynamicFields: {
23
+ selected_advertiser_id: async (request, { settings }) => {
24
+ try {
25
+ const tiktok = new api_1.TikTokAudiences(request);
26
+ return tiktok.fetchAdvertisers(settings.advertiser_ids);
27
+ }
28
+ catch (err) {
29
+ return {
30
+ choices: [],
31
+ error: {
32
+ message: JSON.stringify(err),
33
+ code: '500'
34
+ }
35
+ };
36
+ }
37
+ }
38
+ },
39
+ perform: async (request, { settings, payload }) => {
40
+ return functions_1.processPayload(request, settings, [payload], 'delete');
41
+ },
42
+ performBatch: async (request, { settings, payload }) => {
43
+ return functions_1.processPayload(request, settings, payload, 'delete');
44
+ }
45
+ };
46
+ exports.default = action;
47
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/destinations/tiktok-audiences/removeUser/index.ts"],"names":[],"mappings":";;AAGA,4CAA6C;AAC7C,8CAWsB;AACtB,gCAAwC;AAExC,MAAM,MAAM,GAAwC;IAClD,KAAK,EAAE,cAAc;IACrB,WAAW,EAAE,uEAAuE;IACpF,mBAAmB,EAAE,2BAA2B;IAChD,MAAM,EAAE;QACN,sBAAsB,EAAE,EAAE,GAAG,mCAAsB,EAAE;QACrD,oBAAoB,EAAE,EAAE,GAAG,iCAAoB,EAAE;QACjD,OAAO,EAAE,EAAE,GAAG,oBAAO,EAAE;QACvB,KAAK,EAAE,EAAE,GAAG,kBAAK,EAAE;QACnB,cAAc,EAAE,EAAE,GAAG,2BAAc,EAAE;QACrC,UAAU,EAAE,EAAE,GAAG,uBAAU,EAAE;QAC7B,mBAAmB,EAAE,EAAE,GAAG,gCAAmB,EAAE;QAC/C,UAAU,EAAE,EAAE,GAAG,uBAAU,EAAE;QAC7B,eAAe,EAAE,EAAE,GAAG,4BAAe,EAAE;QACvC,qBAAqB,EAAE,EAAE,GAAG,kCAAqB,EAAE;KACpD;IACD,aAAa,EAAE;QACb,sBAAsB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;YACtD,IAAI;gBACF,MAAM,MAAM,GAAG,IAAI,qBAAe,CAAC,OAAO,CAAC,CAAA;gBAE3C,OAAO,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAA;aACxD;YAAC,OAAO,GAAG,EAAE;gBACZ,OAAO;oBACL,OAAO,EAAE,EAAE;oBACX,KAAK,EAAE;wBACL,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;wBAC5B,IAAI,EAAE,KAAK;qBACZ;iBACF,CAAA;aACF;QACH,CAAC;KACF;IACD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE;QAChD,OAAO,0BAAc,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAA;IAC/D,CAAC;IACD,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE;QACrD,OAAO,0BAAc,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAA;IAC7D,CAAC;CACF,CAAA;AAED,kBAAe,MAAM,CAAA"}