@segment/action-destinations 3.199.0 → 3.199.1-staging.225
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.
- package/dist/destinations/engage/sendgrid/sendEmail/SendEmailPerformer.js +11 -11
- package/dist/destinations/engage/sendgrid/sendEmail/SendEmailPerformer.js.map +1 -1
- package/dist/destinations/engage/sendgrid/sendEmail/actionDefinition.js +6 -0
- package/dist/destinations/engage/sendgrid/sendEmail/actionDefinition.js.map +1 -1
- package/dist/destinations/engage/twilio/sendMobilePush/PushSender.js +4 -5
- package/dist/destinations/engage/twilio/sendMobilePush/PushSender.js.map +1 -1
- package/dist/destinations/engage/twilio/sendSms/actionDefinition.js +6 -0
- package/dist/destinations/engage/twilio/sendSms/actionDefinition.js.map +1 -1
- package/dist/destinations/engage/twilio/utils/PhoneMessageSender.d.ts +1 -0
- package/dist/destinations/engage/twilio/utils/PhoneMessageSender.js +17 -2
- package/dist/destinations/engage/twilio/utils/PhoneMessageSender.js.map +1 -1
- package/dist/destinations/engage/utils/EngageStats.js.map +1 -1
- package/dist/destinations/engage/utils/MessageSendPerformer.d.ts +4 -0
- package/dist/destinations/engage/utils/MessageSendPerformer.js +21 -1
- package/dist/destinations/engage/utils/MessageSendPerformer.js.map +1 -1
- package/dist/destinations/engage-messaging-sendgrid/sendEmail.types.d.ts +1 -0
- package/dist/destinations/engage-messaging-twilio/sendSms.types.d.ts +1 -0
- package/dist/destinations/facebook-conversions-api/addToCart/generated-types.d.ts +1 -1
- package/dist/destinations/facebook-conversions-api/custom/generated-types.d.ts +1 -1
- package/dist/destinations/facebook-conversions-api/fb-capi-user-data.js +20 -4
- package/dist/destinations/facebook-conversions-api/fb-capi-user-data.js.map +1 -1
- package/dist/destinations/facebook-conversions-api/initiateCheckout/generated-types.d.ts +1 -1
- package/dist/destinations/facebook-conversions-api/pageView/generated-types.d.ts +1 -1
- package/dist/destinations/facebook-conversions-api/purchase/generated-types.d.ts +1 -1
- package/dist/destinations/facebook-conversions-api/search/generated-types.d.ts +1 -1
- package/dist/destinations/facebook-conversions-api/viewContent/generated-types.d.ts +1 -1
- package/dist/destinations/hubspot/upsertContact/generated-types.d.ts +1 -0
- package/dist/destinations/hubspot/upsertContact/index.d.ts +19 -0
- package/dist/destinations/hubspot/upsertContact/index.js +127 -0
- package/dist/destinations/hubspot/upsertContact/index.js.map +1 -1
- package/dist/destinations/linkedin-audiences/updateAudience/index.js +1 -2
- package/dist/destinations/linkedin-audiences/updateAudience/index.js.map +1 -1
- package/dist/destinations/listrak/updateEmailContactProfileFields/index.js.map +1 -1
- package/dist/destinations/liveramp-audiences/operations.js +25 -13
- package/dist/destinations/liveramp-audiences/operations.js.map +1 -1
- package/dist/destinations/m3ter/auth.js.map +1 -1
- package/dist/destinations/m3ter/submitMeasurements/index.js +3 -3
- package/dist/destinations/m3ter/submitMeasurements/index.js.map +1 -1
- package/dist/destinations/playerzero-cloud/identifyUser/index.js +3 -3
- package/dist/destinations/segment/properties.js +4 -4
- package/dist/destinations/segment/properties.js.map +1 -1
- package/dist/destinations/segment/sendGroup/index.js +4 -1
- package/dist/destinations/segment/sendGroup/index.js.map +1 -1
- package/dist/destinations/segment/sendIdentify/index.js +4 -1
- package/dist/destinations/segment/sendIdentify/index.js.map +1 -1
- package/dist/destinations/segment/sendPage/index.js +4 -1
- package/dist/destinations/segment/sendPage/index.js.map +1 -1
- package/dist/destinations/segment/sendScreen/index.js +4 -1
- package/dist/destinations/segment/sendScreen/index.js.map +1 -1
- package/dist/destinations/segment/sendTrack/index.js +4 -1
- package/dist/destinations/segment/sendTrack/index.js.map +1 -1
- package/dist/destinations/segment-profiles/sendGroup/index.js +4 -1
- package/dist/destinations/segment-profiles/sendGroup/index.js.map +1 -1
- package/dist/destinations/segment-profiles/sendIdentify/index.js +6 -3
- package/dist/destinations/segment-profiles/sendIdentify/index.js.map +1 -1
- package/dist/destinations/the-trade-desk-crm/awsClient.d.ts +0 -1
- package/dist/destinations/the-trade-desk-crm/awsClient.js +0 -1
- package/dist/destinations/the-trade-desk-crm/awsClient.js.map +1 -1
- package/dist/destinations/the-trade-desk-crm/functions.js +1 -58
- package/dist/destinations/the-trade-desk-crm/functions.js.map +1 -1
- package/dist/destinations/the-trade-desk-crm/generated-types.d.ts +3 -0
- package/dist/destinations/the-trade-desk-crm/index.d.ts +29 -3
- package/dist/destinations/the-trade-desk-crm/index.js +63 -1
- package/dist/destinations/the-trade-desk-crm/index.js.map +1 -1
- package/dist/destinations/the-trade-desk-crm/properties.d.ts +1 -2
- package/dist/destinations/the-trade-desk-crm/properties.js +8 -12
- package/dist/destinations/the-trade-desk-crm/properties.js.map +1 -1
- package/dist/destinations/the-trade-desk-crm/syncAudience/generated-types.d.ts +1 -2
- package/dist/destinations/the-trade-desk-crm/syncAudience/index.js +1 -2
- package/dist/destinations/the-trade-desk-crm/syncAudience/index.js.map +1 -1
- package/dist/destinations/tiktok-audiences/addUser/generated-types.d.ts +1 -2
- package/dist/destinations/tiktok-audiences/addUser/index.d.ts +2 -2
- package/dist/destinations/tiktok-audiences/addUser/index.js +12 -39
- package/dist/destinations/tiktok-audiences/addUser/index.js.map +1 -1
- package/dist/destinations/tiktok-audiences/api/index.d.ts +2 -8
- package/dist/destinations/tiktok-audiences/api/index.js +1 -117
- package/dist/destinations/tiktok-audiences/api/index.js.map +1 -1
- package/dist/destinations/tiktok-audiences/constants.d.ts +2 -0
- package/dist/destinations/tiktok-audiences/constants.js +3 -1
- package/dist/destinations/tiktok-audiences/constants.js.map +1 -1
- package/dist/destinations/tiktok-audiences/functions.d.ts +3 -6
- package/dist/destinations/tiktok-audiences/functions.js +10 -16
- package/dist/destinations/tiktok-audiences/functions.js.map +1 -1
- package/dist/destinations/tiktok-audiences/generated-types.d.ts +4 -1
- package/dist/destinations/tiktok-audiences/index.d.ts +3 -3
- package/dist/destinations/tiktok-audiences/index.js +84 -12
- package/dist/destinations/tiktok-audiences/index.js.map +1 -1
- package/dist/destinations/tiktok-audiences/properties.d.ts +1 -0
- package/dist/destinations/tiktok-audiences/properties.js +9 -1
- package/dist/destinations/tiktok-audiences/properties.js.map +1 -1
- package/dist/destinations/tiktok-audiences/removeUser/generated-types.d.ts +1 -2
- package/dist/destinations/tiktok-audiences/removeUser/index.d.ts +2 -2
- package/dist/destinations/tiktok-audiences/removeUser/index.js +12 -39
- package/dist/destinations/tiktok-audiences/removeUser/index.js.map +1 -1
- package/package.json +4 -4
- package/dist/destinations/liveramp-audiences/audienceEnteredSFTP.types.d.ts +0 -16
- package/dist/destinations/liveramp-audiences/audienceEnteredSFTP.types.js +0 -3
- package/dist/destinations/liveramp-audiences/audienceEnteredSFTP.types.js.map +0 -1
- package/dist/destinations/tiktok-audiences/api/api.test.d.ts +0 -1
- package/dist/destinations/tiktok-audiences/api/api.test.js +0 -185
- package/dist/destinations/tiktok-audiences/api/api.test.js.map +0 -1
- package/dist/destinations/tiktok-audiences/createAudience/generated-types.d.ts +0 -5
- package/dist/destinations/tiktok-audiences/createAudience/generated-types.js +0 -3
- package/dist/destinations/tiktok-audiences/createAudience/generated-types.js.map +0 -1
- package/dist/destinations/tiktok-audiences/createAudience/index.d.ts +0 -5
- package/dist/destinations/tiktok-audiences/createAudience/index.js +0 -37
- package/dist/destinations/tiktok-audiences/createAudience/index.js.map +0 -1
|
@@ -15,11 +15,11 @@ const action = {
|
|
|
15
15
|
group_id: segment_properties_1.group_id,
|
|
16
16
|
traits: segment_properties_1.traits
|
|
17
17
|
},
|
|
18
|
-
perform: (request, { payload, settings }) => {
|
|
18
|
+
perform: (request, { payload, settings, features }) => {
|
|
19
19
|
if (!payload.anonymous_id && !payload.user_id) {
|
|
20
20
|
throw errors_1.MissingUserOrAnonymousIdThrowableError;
|
|
21
21
|
}
|
|
22
|
-
const
|
|
22
|
+
const identityPayload = {
|
|
23
23
|
userId: payload?.user_id,
|
|
24
24
|
anonymousId: payload?.anonymous_id,
|
|
25
25
|
groupId: payload?.group_id,
|
|
@@ -33,10 +33,13 @@ const action = {
|
|
|
33
33
|
if (!settings.endpoint || !(settings.endpoint in properties_1.SEGMENT_ENDPOINTS)) {
|
|
34
34
|
throw errors_1.InvalidEndpointSelectedThrowableError;
|
|
35
35
|
}
|
|
36
|
+
if (features && features['actions-segment-profiles-tapi-internal']) {
|
|
37
|
+
return { batch: [identityPayload] };
|
|
38
|
+
}
|
|
36
39
|
const selectedSegmentEndpoint = properties_1.SEGMENT_ENDPOINTS[settings.endpoint].url;
|
|
37
40
|
return request(`${selectedSegmentEndpoint}/identify`, {
|
|
38
41
|
method: 'POST',
|
|
39
|
-
json:
|
|
42
|
+
json: identityPayload,
|
|
40
43
|
headers: {
|
|
41
44
|
authorization: helperFunctions_1.generateSegmentAPIAuthHeaders(payload.engage_space)
|
|
42
45
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/destinations/segment-profiles/sendIdentify/index.ts"],"names":[],"mappings":";;AAGA,8DAA6F;AAC7F,wDAAkE;AAClE,8CAAiD;AACjD,sCAAyG;AAEzG,MAAM,MAAM,GAAwC;IAClD,KAAK,EAAE,eAAe;IACtB,WAAW,EACT,gIAAgI;IAClI,mBAAmB,EAAE,mBAAmB;IACxC,MAAM,EAAE;QACN,YAAY,EAAZ,iCAAY;QACZ,OAAO,EAAP,4BAAO;QACP,YAAY,EAAZ,iCAAY;QACZ,QAAQ,EAAR,6BAAQ;QACR,MAAM,EAAN,2BAAM;KACP;IACD,OAAO,EAAE,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/destinations/segment-profiles/sendIdentify/index.ts"],"names":[],"mappings":";;AAGA,8DAA6F;AAC7F,wDAAkE;AAClE,8CAAiD;AACjD,sCAAyG;AAEzG,MAAM,MAAM,GAAwC;IAClD,KAAK,EAAE,eAAe;IACtB,WAAW,EACT,gIAAgI;IAClI,mBAAmB,EAAE,mBAAmB;IACxC,MAAM,EAAE;QACN,YAAY,EAAZ,iCAAY;QACZ,OAAO,EAAP,4BAAO;QACP,YAAY,EAAZ,iCAAY;QACZ,QAAQ,EAAR,6BAAQ;QACR,MAAM,EAAN,2BAAM;KACP;IACD,OAAO,EAAE,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE;QACpD,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;YAC7C,MAAM,+CAAsC,CAAA;SAC7C;QACD,MAAM,eAAe,GAAW;YAC9B,MAAM,EAAE,OAAO,EAAE,OAAO;YACxB,WAAW,EAAE,OAAO,EAAE,YAAY;YAClC,OAAO,EAAE,OAAO,EAAE,QAAQ;YAC1B,MAAM,EAAE;gBACN,GAAG,OAAO,EAAE,MAAM;aACnB;YACD,YAAY,EAAE;gBAGZ,GAAG,EAAE,KAAK;aACX;SACF,CAAA;QAGD,IAAI,CAAC,QAAQ,CAAC,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,IAAI,8BAAiB,CAAC,EAAE;YACnE,MAAM,8CAAqC,CAAA;SAC5C;QAED,IAAI,QAAQ,IAAI,QAAQ,CAAC,wCAAwC,CAAC,EAAE;YAClE,OAAO,EAAE,KAAK,EAAE,CAAC,eAAe,CAAC,EAAE,CAAA;SACpC;QAED,MAAM,uBAAuB,GAAG,8BAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAA;QACxE,OAAO,OAAO,CAAC,GAAG,uBAAuB,WAAW,EAAE;YACpD,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,eAAe;YACrB,OAAO,EAAE;gBACP,aAAa,EAAE,+CAA6B,CAAC,OAAO,CAAC,YAAY,CAAC;aACnE;SACF,CAAC,CAAA;IACJ,CAAC;CACF,CAAA;AAED,kBAAe,MAAM,CAAA"}
|
|
@@ -19,7 +19,6 @@ const sendEventToAWS = async (request, input) => {
|
|
|
19
19
|
const metadata = JSON.stringify({
|
|
20
20
|
TDDAuthToken: input.TDDAuthToken,
|
|
21
21
|
AdvertiserId: input.AdvertiserId,
|
|
22
|
-
SegmentName: input.SegmentName,
|
|
23
22
|
CrmDataId: input.CrmDataId,
|
|
24
23
|
DropOptions: input.DropOptions,
|
|
25
24
|
RequeueCount: 0
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"awsClient.js","sourceRoot":"","sources":["../../../src/destinations/the-trade-desk-crm/awsClient.ts"],"names":[],"mappings":";;;;;;AAAA,uCAA2C;AAC3C,gDAAuB;AAEvB,wDAAiF;AACjF,2CAA4E;
|
|
1
|
+
{"version":3,"file":"awsClient.js","sourceRoot":"","sources":["../../../src/destinations/the-trade-desk-crm/awsClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,7 +12,7 @@ async function processPayload(input) {
|
|
|
12
12
|
if (input.payloads.length < TTD_MIN_RECORD_COUNT) {
|
|
13
13
|
throw new actions_core_1.PayloadValidationError(`received payload count below The Trade Desk's ingestion limits. Expected: >=${TTD_MIN_RECORD_COUNT} actual: ${input.payloads.length}`);
|
|
14
14
|
}
|
|
15
|
-
const crmID =
|
|
15
|
+
const crmID = input.payloads[0].external_id;
|
|
16
16
|
const usersFormatted = extractUsers(input.payloads);
|
|
17
17
|
if (input.features && input.features[exports.TTD_LEGACY_FLOW_FLAG_NAME]) {
|
|
18
18
|
const dropEndpoint = await getCRMDataDropEndpoint(input.request, input.settings, input.payloads[0], crmID);
|
|
@@ -23,7 +23,6 @@ async function processPayload(input) {
|
|
|
23
23
|
TDDAuthToken: input.settings.auth_token,
|
|
24
24
|
AdvertiserId: input.settings.advertiser_id,
|
|
25
25
|
CrmDataId: crmID,
|
|
26
|
-
SegmentName: input.payloads[0].name,
|
|
27
26
|
UsersFormatted: usersFormatted,
|
|
28
27
|
DropOptions: {
|
|
29
28
|
PiiType: input.payloads[0].pii_type,
|
|
@@ -33,62 +32,6 @@ async function processPayload(input) {
|
|
|
33
32
|
}
|
|
34
33
|
}
|
|
35
34
|
exports.processPayload = processPayload;
|
|
36
|
-
async function getAllDataSegments(request, settings) {
|
|
37
|
-
const allDataSegments = [];
|
|
38
|
-
let response = await request(`${BASE_URL}/crmdata/segment/${settings.advertiser_id}`, {
|
|
39
|
-
method: 'GET',
|
|
40
|
-
headers: {
|
|
41
|
-
'Content-Type': 'application/json',
|
|
42
|
-
'TTD-Auth': settings.auth_token
|
|
43
|
-
}
|
|
44
|
-
});
|
|
45
|
-
let segments = response.data.Segments;
|
|
46
|
-
let pagingToken = response.data.PagingToken;
|
|
47
|
-
while (segments.length > 0) {
|
|
48
|
-
allDataSegments.push(...segments);
|
|
49
|
-
response = await request(`${BASE_URL}/crmdata/segment/${settings.advertiser_id}?pagingToken=${pagingToken}`, {
|
|
50
|
-
method: 'GET',
|
|
51
|
-
headers: {
|
|
52
|
-
'Content-Type': 'application/json',
|
|
53
|
-
'TTD-Auth': settings.auth_token
|
|
54
|
-
}
|
|
55
|
-
});
|
|
56
|
-
segments = response.data.Segments;
|
|
57
|
-
pagingToken = response.data.PagingToken;
|
|
58
|
-
}
|
|
59
|
-
return allDataSegments;
|
|
60
|
-
}
|
|
61
|
-
async function getCRMInfo(request, settings, payload) {
|
|
62
|
-
let segmentId;
|
|
63
|
-
const segments = await getAllDataSegments(request, settings);
|
|
64
|
-
const segmentExists = segments.filter(function (segment) {
|
|
65
|
-
if (segment.SegmentName == payload.name) {
|
|
66
|
-
return segment;
|
|
67
|
-
}
|
|
68
|
-
});
|
|
69
|
-
if (segmentExists.length > 1) {
|
|
70
|
-
throw new actions_core_1.IntegrationError('Multiple audiences found with the same name', 'INVALID_SETTINGS', 400);
|
|
71
|
-
}
|
|
72
|
-
else if (segmentExists.length == 1) {
|
|
73
|
-
segmentId = segmentExists[0].CrmDataId;
|
|
74
|
-
}
|
|
75
|
-
else {
|
|
76
|
-
const response = await request(`${BASE_URL}/crmdata/segment`, {
|
|
77
|
-
method: 'POST',
|
|
78
|
-
headers: {
|
|
79
|
-
'Content-Type': 'application/json',
|
|
80
|
-
'TTD-Auth': settings.auth_token
|
|
81
|
-
},
|
|
82
|
-
json: {
|
|
83
|
-
AdvertiserId: settings.advertiser_id,
|
|
84
|
-
SegmentName: payload.name,
|
|
85
|
-
Region: payload.region
|
|
86
|
-
}
|
|
87
|
-
});
|
|
88
|
-
segmentId = response.data.CrmDataId;
|
|
89
|
-
}
|
|
90
|
-
return segmentId;
|
|
91
|
-
}
|
|
92
35
|
function extractUsers(payloads) {
|
|
93
36
|
let users = '';
|
|
94
37
|
payloads.forEach((payload) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"functions.js","sourceRoot":"","sources":["../../../src/destinations/the-trade-desk-crm/functions.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"functions.js","sourceRoot":"","sources":["../../../src/destinations/the-trade-desk-crm/functions.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,30 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type { Settings } from './generated-types';
|
|
3
|
-
|
|
1
|
+
import type { AudienceDestinationDefinition } from '@segment/actions-core';
|
|
2
|
+
import type { Settings, AudienceSettings } from './generated-types';
|
|
3
|
+
export interface CREATE_API_RESPONSE {
|
|
4
|
+
CrmDataId: string;
|
|
5
|
+
FirstPartyDataId: number;
|
|
6
|
+
}
|
|
7
|
+
export interface GET_API_RESPONSE {
|
|
8
|
+
AdvertiserId: string;
|
|
9
|
+
CrmDataId: string;
|
|
10
|
+
SegmentName: number;
|
|
11
|
+
}
|
|
12
|
+
export interface Segments {
|
|
13
|
+
CrmDataId: string;
|
|
14
|
+
SegmentName: string;
|
|
15
|
+
Region: string;
|
|
16
|
+
FirstPartyDataId: number;
|
|
17
|
+
}
|
|
18
|
+
export interface GET_CRMS_API_RESPONSE {
|
|
19
|
+
Segments: [
|
|
20
|
+
{
|
|
21
|
+
CrmDataId: string;
|
|
22
|
+
SegmentName: string;
|
|
23
|
+
Region: string;
|
|
24
|
+
FirstPartyDataId: number;
|
|
25
|
+
}
|
|
26
|
+
];
|
|
27
|
+
PagingToken: string;
|
|
28
|
+
}
|
|
29
|
+
declare const destination: AudienceDestinationDefinition<Settings, AudienceSettings>;
|
|
4
30
|
export default destination;
|
|
@@ -3,9 +3,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const actions_core_1 = require("@segment/actions-core");
|
|
6
7
|
const syncAudience_1 = __importDefault(require("./syncAudience"));
|
|
8
|
+
const API_VERSION = 'v3';
|
|
9
|
+
const BASE_URL = `https://api.thetradedesk.com/${API_VERSION}`;
|
|
7
10
|
const destination = {
|
|
8
|
-
name: 'The Trade Desk
|
|
11
|
+
name: 'The Trade Desk Crm',
|
|
9
12
|
slug: 'actions-the-trade-desk-crm',
|
|
10
13
|
mode: 'cloud',
|
|
11
14
|
authentication: {
|
|
@@ -39,6 +42,65 @@ const destination = {
|
|
|
39
42
|
}
|
|
40
43
|
}
|
|
41
44
|
},
|
|
45
|
+
audienceFields: {
|
|
46
|
+
region: {
|
|
47
|
+
type: 'string',
|
|
48
|
+
label: 'Region',
|
|
49
|
+
description: 'Region of your audience.'
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
audienceConfig: {
|
|
53
|
+
mode: {
|
|
54
|
+
type: 'synced',
|
|
55
|
+
full_audience_sync: false
|
|
56
|
+
},
|
|
57
|
+
async createAudience(request, createAudienceInput) {
|
|
58
|
+
const audienceName = createAudienceInput.audienceName;
|
|
59
|
+
const advertiserId = createAudienceInput.settings.advertiser_id;
|
|
60
|
+
const authToken = createAudienceInput.settings.auth_token;
|
|
61
|
+
const region = createAudienceInput.audienceSettings?.region;
|
|
62
|
+
if (audienceName?.length == 0) {
|
|
63
|
+
throw new actions_core_1.IntegrationError('Missing audience name value', 'MISSING_REQUIRED_FIELD', 400);
|
|
64
|
+
}
|
|
65
|
+
const response = await request(`${BASE_URL}/crmdata/segment`, {
|
|
66
|
+
method: 'POST',
|
|
67
|
+
headers: {
|
|
68
|
+
'Content-Type': 'application/json',
|
|
69
|
+
'TTD-Auth': authToken
|
|
70
|
+
},
|
|
71
|
+
json: {
|
|
72
|
+
AdvertiserId: advertiserId,
|
|
73
|
+
SegmentName: audienceName,
|
|
74
|
+
Region: region
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
return {
|
|
78
|
+
externalId: response.data.CrmDataId
|
|
79
|
+
};
|
|
80
|
+
},
|
|
81
|
+
async getAudience(request, getAudienceInput) {
|
|
82
|
+
const crmDataId = getAudienceInput.externalId;
|
|
83
|
+
const advertiserId = getAudienceInput.settings.advertiser_id;
|
|
84
|
+
const authToken = getAudienceInput.settings.auth_token;
|
|
85
|
+
const response = await request(`${BASE_URL}/crmdata/segment/${advertiserId}/${crmDataId}`, {
|
|
86
|
+
method: 'GET',
|
|
87
|
+
headers: {
|
|
88
|
+
'Content-Type': 'application/json',
|
|
89
|
+
'TTD-Auth': authToken
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
if (response.status !== 200) {
|
|
93
|
+
throw new actions_core_1.IntegrationError('Invalid response from get audience request', 'INVALID_RESPONSE', 400);
|
|
94
|
+
}
|
|
95
|
+
const externalId = response.data.CrmDataId;
|
|
96
|
+
if (externalId !== getAudienceInput.externalId) {
|
|
97
|
+
throw new actions_core_1.IntegrationError("Unable to verify ownership over audience. Segment Audience ID doesn't match The Trade Desk's Audience ID.", 'INVALID_REQUEST_DATA', 400);
|
|
98
|
+
}
|
|
99
|
+
return {
|
|
100
|
+
externalId: externalId
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
},
|
|
42
104
|
actions: {
|
|
43
105
|
syncAudience: syncAudience_1.default
|
|
44
106
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/destinations/the-trade-desk-crm/index.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/destinations/the-trade-desk-crm/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { InputField } from '@segment/actions-core/destination-kit/types';
|
|
2
|
-
export declare const
|
|
3
|
-
export declare const region: InputField;
|
|
2
|
+
export declare const external_id: InputField;
|
|
4
3
|
export declare const pii_type: InputField;
|
|
5
4
|
export declare const email: InputField;
|
|
6
5
|
export declare const event_name: InputField;
|
|
@@ -1,18 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.merge_mode = exports.batch_size = exports.enable_batching = exports.event_name = exports.email = exports.pii_type = exports.
|
|
4
|
-
exports.
|
|
5
|
-
label: '
|
|
6
|
-
description: 'The
|
|
7
|
-
type: '
|
|
8
|
-
required: true
|
|
9
|
-
};
|
|
10
|
-
exports.region = {
|
|
11
|
-
label: 'Region',
|
|
12
|
-
description: 'The geographical region of the CRM data segment based on the origin of PII.',
|
|
13
|
-
type: 'string',
|
|
3
|
+
exports.merge_mode = exports.batch_size = exports.enable_batching = exports.event_name = exports.email = exports.pii_type = exports.external_id = void 0;
|
|
4
|
+
exports.external_id = {
|
|
5
|
+
label: 'External Audience ID',
|
|
6
|
+
description: 'The CRM Data ID for The Trade Desk Segment. ',
|
|
7
|
+
type: 'hidden',
|
|
14
8
|
required: true,
|
|
15
|
-
default:
|
|
9
|
+
default: {
|
|
10
|
+
'@path': '$.context.personas.external_audience_id'
|
|
11
|
+
}
|
|
16
12
|
};
|
|
17
13
|
exports.pii_type = {
|
|
18
14
|
label: 'PII Type',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"properties.js","sourceRoot":"","sources":["../../../src/destinations/the-trade-desk-crm/properties.ts"],"names":[],"mappings":";;;AAEa,QAAA,
|
|
1
|
+
{"version":3,"file":"properties.js","sourceRoot":"","sources":["../../../src/destinations/the-trade-desk-crm/properties.ts"],"names":[],"mappings":";;;AAEa,QAAA,WAAW,GAAe;IACrC,KAAK,EAAE,sBAAsB;IAC7B,WAAW,EAAE,8CAA8C;IAC3D,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE,IAAI;IACd,OAAO,EAAE;QACP,OAAO,EAAE,yCAAyC;KACnD;CACF,CAAA;AAEY,QAAA,QAAQ,GAAe;IAClC,KAAK,EAAE,UAAU;IACjB,WAAW,EAAE,wEAAwE;IACrF,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE;QACP,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;QAClC,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,uBAAuB,EAAE;KAC1D;IACD,QAAQ,EAAE,IAAI;CACf,CAAA;AAEY,QAAA,KAAK,GAAe;IAC/B,KAAK,EAAE,YAAY;IACnB,WAAW,EAAE,qDAAqD;IAClE,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE;QACP,OAAO,EAAE,wBAAwB;KAClC;CACF,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,4DAA4D;IACzE,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,IAAI;CACd,CAAA;AAEY,QAAA,UAAU,GAAe;IACpC,KAAK,EAAE,YAAY;IACnB,WAAW,EAAE,qFAAqF;IAClG,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE,KAAK;IACf,OAAO,EAAE,MAAM;CAChB,CAAA;AAEY,QAAA,UAAU,GAAe;IACpC,KAAK,EAAE,YAAY;IACnB,WAAW,EAAE,wEAAwE;IACrF,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE;QACP;YACE,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,KAAK;SACb;QACD;YACE,KAAK,EAAE,SAAS;YAChB,KAAK,EAAE,SAAS;SACjB;KACF;IACD,OAAO,EAAE,SAAS;IAClB,QAAQ,EAAE,KAAK;CAChB,CAAA"}
|
|
@@ -7,8 +7,7 @@ const action = {
|
|
|
7
7
|
description: 'Drop users into the given CRM Data Segment',
|
|
8
8
|
defaultSubscription: 'event = "Audience Entered"',
|
|
9
9
|
fields: {
|
|
10
|
-
|
|
11
|
-
region: { ...properties_1.region },
|
|
10
|
+
external_id: { ...properties_1.external_id },
|
|
12
11
|
pii_type: { ...properties_1.pii_type },
|
|
13
12
|
email: { ...properties_1.email },
|
|
14
13
|
merge_mode: { ...properties_1.merge_mode },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/destinations/the-trade-desk-crm/syncAudience/index.ts"],"names":[],"mappings":";;AAGA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/destinations/the-trade-desk-crm/syncAudience/index.ts"],"names":[],"mappings":";;AAGA,8CAAiH;AACjH,4CAA6C;AAE7C,MAAM,MAAM,GAAwC;IAClD,KAAK,EAAE,mCAAmC;IAC1C,WAAW,EAAE,4CAA4C;IACzD,mBAAmB,EAAE,4BAA4B;IACjD,MAAM,EAAE;QACN,WAAW,EAAE,EAAE,GAAG,wBAAW,EAAE;QAC/B,QAAQ,EAAE,EAAE,GAAG,qBAAQ,EAAE;QACzB,KAAK,EAAE,EAAE,GAAG,kBAAK,EAAE;QACnB,UAAU,EAAE,EAAE,GAAG,uBAAU,EAAE;QAC7B,eAAe,EAAE,EAAE,GAAG,4BAAe,EAAE;QACvC,UAAU,EAAE,EAAE,GAAG,uBAAU,EAAE;QAC7B,UAAU,EAAE,EAAE,GAAG,uBAAU,EAAE;KAC9B;IACD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE;QAC1D,OAAO,0BAAc,CAAC;YACpB,OAAO;YACP,QAAQ;YACR,QAAQ,EAAE,CAAC,OAAO,CAAC;YACnB,QAAQ;SACT,CAAC,CAAA;IACJ,CAAC;IACD,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE;QAC/D,OAAO,0BAAc,CAAC;YACpB,OAAO;YACP,QAAQ;YACR,QAAQ,EAAE,OAAO;YACjB,QAAQ;SACT,CAAC,CAAA;IACJ,CAAC;CACF,CAAA;AAED,kBAAe,MAAM,CAAA"}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
export interface Payload {
|
|
2
|
-
selected_advertiser_id: string;
|
|
3
|
-
audience_id: string;
|
|
4
2
|
email?: string;
|
|
5
3
|
advertising_id?: string;
|
|
6
4
|
send_email?: boolean;
|
|
7
5
|
send_advertising_id?: boolean;
|
|
8
6
|
event_name?: string;
|
|
9
7
|
enable_batching?: boolean;
|
|
8
|
+
external_audience_id?: string;
|
|
10
9
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ActionDefinition } from '@segment/actions-core';
|
|
2
|
-
import type { Settings } from '../generated-types';
|
|
2
|
+
import type { Settings, AudienceSettings } from '../generated-types';
|
|
3
3
|
import type { Payload } from './generated-types';
|
|
4
|
-
declare const action: ActionDefinition<Settings, Payload>;
|
|
4
|
+
declare const action: ActionDefinition<Settings, Payload, AudienceSettings>;
|
|
5
5
|
export default action;
|
|
@@ -2,58 +2,31 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const functions_1 = require("../functions");
|
|
4
4
|
const properties_1 = require("../properties");
|
|
5
|
-
const
|
|
5
|
+
const actions_core_1 = require("@segment/actions-core");
|
|
6
6
|
const action = {
|
|
7
7
|
title: 'Add Users',
|
|
8
8
|
description: 'Add contacts from an Engage Audience to a TikTok Audience Segment.',
|
|
9
9
|
defaultSubscription: 'event = "Audience Entered"',
|
|
10
10
|
fields: {
|
|
11
|
-
selected_advertiser_id: { ...properties_1.selected_advertiser_id },
|
|
12
|
-
audience_id: { ...properties_1.audience_id },
|
|
13
11
|
email: { ...properties_1.email },
|
|
14
12
|
advertising_id: { ...properties_1.advertising_id },
|
|
15
13
|
send_email: { ...properties_1.send_email },
|
|
16
14
|
send_advertising_id: { ...properties_1.send_advertising_id },
|
|
17
15
|
event_name: { ...properties_1.event_name },
|
|
18
|
-
enable_batching: { ...properties_1.enable_batching }
|
|
16
|
+
enable_batching: { ...properties_1.enable_batching },
|
|
17
|
+
external_audience_id: { ...properties_1.external_audience_id }
|
|
19
18
|
},
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
const tiktok = new api_1.TikTokAudiences(request);
|
|
24
|
-
return tiktok.fetchAdvertisers(settings.advertiser_ids);
|
|
25
|
-
}
|
|
26
|
-
catch (err) {
|
|
27
|
-
return {
|
|
28
|
-
choices: [],
|
|
29
|
-
error: {
|
|
30
|
-
message: JSON.stringify(err),
|
|
31
|
-
code: '500'
|
|
32
|
-
}
|
|
33
|
-
};
|
|
34
|
-
}
|
|
35
|
-
},
|
|
36
|
-
audience_id: async (request, { payload }) => {
|
|
37
|
-
try {
|
|
38
|
-
const tiktok = new api_1.TikTokAudiences(request);
|
|
39
|
-
return await tiktok.fetchAudiences(payload.selected_advertiser_id);
|
|
40
|
-
}
|
|
41
|
-
catch (err) {
|
|
42
|
-
return {
|
|
43
|
-
choices: [],
|
|
44
|
-
error: {
|
|
45
|
-
message: JSON.stringify(err),
|
|
46
|
-
code: '500'
|
|
47
|
-
}
|
|
48
|
-
};
|
|
49
|
-
}
|
|
19
|
+
perform: async (request, { audienceSettings, payload }) => {
|
|
20
|
+
if (!audienceSettings) {
|
|
21
|
+
throw new actions_core_1.IntegrationError('Bad Request: no audienceSettings found.', 'INVALID_REQUEST_DATA', 400);
|
|
50
22
|
}
|
|
23
|
+
return functions_1.processPayload(request, audienceSettings, [payload], 'add');
|
|
51
24
|
},
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
return functions_1.processPayload(request,
|
|
25
|
+
performBatch: async (request, { payload, audienceSettings }) => {
|
|
26
|
+
if (!audienceSettings) {
|
|
27
|
+
throw new actions_core_1.IntegrationError('Bad Request: no audienceSettings found.', 'INVALID_REQUEST_DATA', 400);
|
|
28
|
+
}
|
|
29
|
+
return functions_1.processPayload(request, audienceSettings, payload, 'add');
|
|
57
30
|
}
|
|
58
31
|
};
|
|
59
32
|
exports.default = action;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/destinations/tiktok-audiences/addUser/index.ts"],"names":[],"mappings":";;AAGA,4CAA6C;AAC7C,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/destinations/tiktok-audiences/addUser/index.ts"],"names":[],"mappings":";;AAGA,4CAA6C;AAC7C,8CAQsB;AACtB,wDAAwD;AAExD,MAAM,MAAM,GAA0D;IACpE,KAAK,EAAE,WAAW;IAClB,WAAW,EAAE,oEAAoE;IACjF,mBAAmB,EAAE,4BAA4B;IACjD,MAAM,EAAE;QACN,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,oBAAoB,EAAE,EAAE,GAAG,iCAAoB,EAAE;KAClD;IACD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,gBAAgB,EAAE,OAAO,EAAE,EAAE,EAAE;QACxD,IAAI,CAAC,gBAAgB,EAAE;YACrB,MAAM,IAAI,+BAAgB,CAAC,yCAAyC,EAAE,sBAAsB,EAAE,GAAG,CAAC,CAAA;SACnG;QAED,OAAO,0BAAc,CAAC,OAAO,EAAE,gBAAgB,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,CAAA;IACpE,CAAC;IACD,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,gBAAgB,EAAE,EAAE,EAAE;QAC7D,IAAI,CAAC,gBAAgB,EAAE;YACrB,MAAM,IAAI,+BAAgB,CAAC,yCAAyC,EAAE,sBAAsB,EAAE,GAAG,CAAC,CAAA;SACnG;QACD,OAAO,0BAAc,CAAC,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,KAAK,CAAC,CAAA;IAClE,CAAC;CACF,CAAA;AAED,kBAAe,MAAM,CAAA"}
|
|
@@ -1,14 +1,8 @@
|
|
|
1
1
|
import type { RequestClient, ModifiedResponse } from '@segment/actions-core';
|
|
2
|
-
import type { APIResponse
|
|
3
|
-
import { DynamicFieldResponse } from '@segment/actions-core';
|
|
4
|
-
import type { Payload } from '../createAudience/generated-types';
|
|
2
|
+
import type { APIResponse } from '../types';
|
|
5
3
|
export declare class TikTokAudiences {
|
|
6
4
|
request: RequestClient;
|
|
7
|
-
|
|
8
|
-
constructor(request: RequestClient, selectedAdvertiserID?: string);
|
|
5
|
+
constructor(request: RequestClient);
|
|
9
6
|
getUserInfo(): Promise<ModifiedResponse<APIResponse>>;
|
|
10
|
-
fetchAudiences: (selected_advertiser_id: string) => Promise<DynamicFieldResponse>;
|
|
11
|
-
createAudience(payload: Payload): Promise<ModifiedResponse<CreateAudienceAPIResponse>>;
|
|
12
7
|
batchUpdate(elements: {}): Promise<ModifiedResponse>;
|
|
13
|
-
fetchAdvertisers: (advertiser_ids: string[]) => Promise<DynamicFieldResponse>;
|
|
14
8
|
}
|
|
@@ -3,130 +3,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.TikTokAudiences = void 0;
|
|
4
4
|
const constants_1 = require("../constants");
|
|
5
5
|
class TikTokAudiences {
|
|
6
|
-
constructor(request
|
|
7
|
-
this.fetchAudiences = async (selected_advertiser_id) => {
|
|
8
|
-
if (!selected_advertiser_id || !selected_advertiser_id.length) {
|
|
9
|
-
return {
|
|
10
|
-
choices: [],
|
|
11
|
-
error: {
|
|
12
|
-
message: 'Please select Advertiser ID first to get list of Audience IDs.',
|
|
13
|
-
code: 'FIELD_NOT_SELECTED'
|
|
14
|
-
}
|
|
15
|
-
};
|
|
16
|
-
}
|
|
17
|
-
try {
|
|
18
|
-
const response = [];
|
|
19
|
-
let page_number = 1;
|
|
20
|
-
let total_page = 1;
|
|
21
|
-
while (page_number <= total_page) {
|
|
22
|
-
const result = await this.request(`${constants_1.BASE_URL}${constants_1.TIKTOK_API_VERSION}/dmp/custom_audience/list/`, {
|
|
23
|
-
method: 'GET',
|
|
24
|
-
searchParams: {
|
|
25
|
-
advertiser_id: selected_advertiser_id,
|
|
26
|
-
page: page_number,
|
|
27
|
-
page_size: '100'
|
|
28
|
-
}
|
|
29
|
-
});
|
|
30
|
-
if (result.data.code !== 0) {
|
|
31
|
-
throw {
|
|
32
|
-
message: result.data.message,
|
|
33
|
-
code: result.data.code
|
|
34
|
-
};
|
|
35
|
-
}
|
|
36
|
-
total_page = result.data?.data?.page_info?.total_page || 1;
|
|
37
|
-
page_number++;
|
|
38
|
-
result.data.data.list.forEach((item) => {
|
|
39
|
-
response.push(item);
|
|
40
|
-
});
|
|
41
|
-
}
|
|
42
|
-
const choices = response?.map((item) => {
|
|
43
|
-
return {
|
|
44
|
-
label: item.name,
|
|
45
|
-
value: item.audience_id
|
|
46
|
-
};
|
|
47
|
-
});
|
|
48
|
-
return {
|
|
49
|
-
choices: choices
|
|
50
|
-
};
|
|
51
|
-
}
|
|
52
|
-
catch (err) {
|
|
53
|
-
return {
|
|
54
|
-
choices: [],
|
|
55
|
-
error: {
|
|
56
|
-
message: err.message ?? 'An error occurred while fetching audiences.',
|
|
57
|
-
code: err.code.toString() ?? 'FETCH_AUDIENCE_ERROR'
|
|
58
|
-
}
|
|
59
|
-
};
|
|
60
|
-
}
|
|
61
|
-
};
|
|
62
|
-
this.fetchAdvertisers = async (advertiser_ids) => {
|
|
63
|
-
if (!advertiser_ids.length) {
|
|
64
|
-
return {
|
|
65
|
-
choices: [],
|
|
66
|
-
error: {
|
|
67
|
-
message: 'Sign in via OAuth on the settings page to load advertisers.',
|
|
68
|
-
code: 'NOT_LOGGED_IN'
|
|
69
|
-
}
|
|
70
|
-
};
|
|
71
|
-
}
|
|
72
|
-
try {
|
|
73
|
-
const result = await this.request(`${constants_1.BASE_URL}${constants_1.TIKTOK_API_VERSION}/advertiser/info/`, {
|
|
74
|
-
method: 'GET',
|
|
75
|
-
searchParams: {
|
|
76
|
-
advertiser_ids: JSON.stringify(advertiser_ids)
|
|
77
|
-
}
|
|
78
|
-
});
|
|
79
|
-
if (result.data.code !== 0) {
|
|
80
|
-
throw {
|
|
81
|
-
message: result.data.message,
|
|
82
|
-
code: result.data.code
|
|
83
|
-
};
|
|
84
|
-
}
|
|
85
|
-
const choices = result.data.data.list.map((item) => {
|
|
86
|
-
return {
|
|
87
|
-
label: item.name,
|
|
88
|
-
value: item.advertiser_id
|
|
89
|
-
};
|
|
90
|
-
});
|
|
91
|
-
return {
|
|
92
|
-
choices: choices
|
|
93
|
-
};
|
|
94
|
-
}
|
|
95
|
-
catch (err) {
|
|
96
|
-
const choices = advertiser_ids.map((id) => {
|
|
97
|
-
return {
|
|
98
|
-
label: id,
|
|
99
|
-
value: id
|
|
100
|
-
};
|
|
101
|
-
});
|
|
102
|
-
return {
|
|
103
|
-
choices: choices,
|
|
104
|
-
error: {
|
|
105
|
-
message: err.response.data.message ?? 'An error occurred while fetching advertisers.',
|
|
106
|
-
code: err.response.data.code.toString() ?? 'FETCH_ADVERTISERS_ERROR'
|
|
107
|
-
}
|
|
108
|
-
};
|
|
109
|
-
}
|
|
110
|
-
};
|
|
6
|
+
constructor(request) {
|
|
111
7
|
this.request = request;
|
|
112
|
-
this.selectedAdvertiserID = selectedAdvertiserID;
|
|
113
8
|
}
|
|
114
9
|
async getUserInfo() {
|
|
115
10
|
return this.request(`${constants_1.BASE_URL}${constants_1.TIKTOK_API_VERSION}/user/info/`, {
|
|
116
11
|
method: 'GET'
|
|
117
12
|
});
|
|
118
13
|
}
|
|
119
|
-
async createAudience(payload) {
|
|
120
|
-
return this.request(`${constants_1.BASE_URL}${constants_1.TIKTOK_API_VERSION}/segment/audience/`, {
|
|
121
|
-
method: 'POST',
|
|
122
|
-
json: {
|
|
123
|
-
custom_audience_name: payload.custom_audience_name,
|
|
124
|
-
advertiser_id: this.selectedAdvertiserID,
|
|
125
|
-
id_type: payload.id_type,
|
|
126
|
-
action: 'create'
|
|
127
|
-
}
|
|
128
|
-
});
|
|
129
|
-
}
|
|
130
14
|
async batchUpdate(elements) {
|
|
131
15
|
return this.request(`${constants_1.BASE_URL}${constants_1.TIKTOK_API_VERSION}/segment/mapping/`, {
|
|
132
16
|
method: 'POST',
|