@segment/action-destinations 3.345.8-staging → 3.345.9-staging.0
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/amazon-amc/syncAudiencesToDSP/index.js +49 -29
- package/dist/destinations/amazon-amc/syncAudiencesToDSP/index.js.map +1 -1
- package/dist/destinations/responsys/generated-types.d.ts +2 -1
- package/dist/destinations/responsys/index.js +15 -7
- package/dist/destinations/responsys/index.js.map +1 -1
- package/dist/destinations/responsys/sendAudience/index.js +3 -3
- package/dist/destinations/responsys/sendAudience/index.js.map +1 -1
- package/dist/destinations/responsys/sendAudienceAsPet/functions.d.ts +4 -3
- package/dist/destinations/responsys/sendAudienceAsPet/functions.js +81 -54
- package/dist/destinations/responsys/sendAudienceAsPet/functions.js.map +1 -1
- package/dist/destinations/responsys/sendAudienceAsPet/generated-types.d.ts +2 -1
- package/dist/destinations/responsys/sendAudienceAsPet/index.js +17 -63
- package/dist/destinations/responsys/sendAudienceAsPet/index.js.map +1 -1
- package/dist/destinations/responsys/sendCustomTraits/generated-types.d.ts +1 -0
- package/dist/destinations/responsys/sendCustomTraits/index.js +29 -8
- package/dist/destinations/responsys/sendCustomTraits/index.js.map +1 -1
- package/dist/destinations/responsys/sendToPet/functions.d.ts +10 -0
- package/dist/destinations/responsys/sendToPet/functions.js +108 -0
- package/dist/destinations/responsys/sendToPet/functions.js.map +1 -0
- package/dist/destinations/responsys/sendToPet/generated-types.d.ts +15 -0
- package/dist/destinations/responsys/sendToPet/generated-types.js +3 -0
- package/dist/destinations/responsys/sendToPet/generated-types.js.map +1 -0
- package/dist/destinations/responsys/sendToPet/index.d.ts +5 -0
- package/dist/destinations/responsys/sendToPet/index.js +69 -0
- package/dist/destinations/responsys/sendToPet/index.js.map +1 -0
- package/dist/destinations/responsys/shared-properties.d.ts +5 -1
- package/dist/destinations/responsys/shared-properties.js +75 -2
- package/dist/destinations/responsys/shared-properties.js.map +1 -1
- package/dist/destinations/responsys/types.d.ts +3 -0
- package/dist/destinations/responsys/upsertListMember/generated-types.d.ts +2 -1
- package/dist/destinations/responsys/upsertListMember/index.js +6 -7
- package/dist/destinations/responsys/upsertListMember/index.js.map +1 -1
- package/dist/destinations/responsys/utils.d.ts +7 -3
- package/dist/destinations/responsys/utils.js +108 -49
- package/dist/destinations/responsys/utils.js.map +1 -1
- package/dist/destinations/salesforce-marketing-cloud/_tests_/multistatus.test.d.ts +1 -0
- package/dist/destinations/salesforce-marketing-cloud/_tests_/multistatus.test.js +325 -0
- package/dist/destinations/salesforce-marketing-cloud/_tests_/multistatus.test.js.map +1 -0
- package/dist/destinations/salesforce-marketing-cloud/contactDataExtension/index.js +1 -17
- package/dist/destinations/salesforce-marketing-cloud/contactDataExtension/index.js.map +1 -1
- package/dist/destinations/salesforce-marketing-cloud/dataExtension/index.js +1 -17
- package/dist/destinations/salesforce-marketing-cloud/dataExtension/index.js.map +1 -1
- package/dist/destinations/salesforce-marketing-cloud/sfmc-operations.d.ts +2 -2
- package/dist/destinations/salesforce-marketing-cloud/sfmc-operations.js +45 -7
- package/dist/destinations/salesforce-marketing-cloud/sfmc-operations.js.map +1 -1
- package/dist/destinations/salesforce-marketing-cloud/types.d.ts +19 -0
- package/dist/destinations/salesforce-marketing-cloud/types.js +3 -0
- package/dist/destinations/salesforce-marketing-cloud/types.js.map +1 -0
- package/package.json +1 -1
|
@@ -2,55 +2,20 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const utils_1 = require("../utils");
|
|
4
4
|
const functions_1 = require("./functions");
|
|
5
|
+
const shared_properties_1 = require("../shared-properties");
|
|
6
|
+
const getAllPetsWaitInterval = 60;
|
|
7
|
+
const createPetWaitInterval = 6000;
|
|
5
8
|
const action = {
|
|
6
|
-
title: 'Send Audience as
|
|
9
|
+
title: 'Send Audience as PET (Profile Extension Table)',
|
|
7
10
|
description: 'Send Engage Audience to a separate, newly created Profile Extension Table in Responsys',
|
|
8
11
|
defaultSubscription: 'type = "identify" or type = "track"',
|
|
9
12
|
fields: {
|
|
10
|
-
userData:
|
|
11
|
-
label: 'Recipient Data',
|
|
12
|
-
description: 'Record data that represents field names and corresponding values for each profile.',
|
|
13
|
-
type: 'object',
|
|
14
|
-
defaultObjectUI: 'keyvalue',
|
|
15
|
-
required: true,
|
|
16
|
-
additionalProperties: false,
|
|
17
|
-
properties: {
|
|
18
|
-
EMAIL_ADDRESS_: {
|
|
19
|
-
label: 'Email address',
|
|
20
|
-
description: "The user's email address.",
|
|
21
|
-
type: 'string',
|
|
22
|
-
format: 'email',
|
|
23
|
-
required: false
|
|
24
|
-
},
|
|
25
|
-
CUSTOMER_ID_: {
|
|
26
|
-
label: 'Customer ID',
|
|
27
|
-
description: 'Responsys Customer ID.',
|
|
28
|
-
type: 'string',
|
|
29
|
-
required: false
|
|
30
|
-
},
|
|
31
|
-
RIID_: {
|
|
32
|
-
label: 'Recipient ID',
|
|
33
|
-
description: 'Recipient ID (RIID). RIID is required if Email Address is empty.',
|
|
34
|
-
type: 'string',
|
|
35
|
-
required: false
|
|
36
|
-
}
|
|
37
|
-
},
|
|
38
|
-
default: {
|
|
39
|
-
EMAIL_ADDRESS_: {
|
|
40
|
-
'@if': {
|
|
41
|
-
exists: { '@path': '$.traits.email' },
|
|
42
|
-
then: { '@path': '$.traits.email' },
|
|
43
|
-
else: { '@path': '$.context.traits.email' }
|
|
44
|
-
}
|
|
45
|
-
},
|
|
46
|
-
CUSTOMER_ID_: { '@path': '$.userId' }
|
|
47
|
-
}
|
|
48
|
-
},
|
|
13
|
+
userData: shared_properties_1.recipient_data,
|
|
49
14
|
folder_name: {
|
|
50
15
|
label: 'Folder Name',
|
|
51
|
-
description: 'The name of the folder where the new Profile Extension Table will be created.',
|
|
16
|
+
description: 'The name of the folder where the new Profile Extension Table will be created. Overrides the default folder name in Settings.',
|
|
52
17
|
type: 'string',
|
|
53
|
-
required:
|
|
18
|
+
required: false,
|
|
54
19
|
default: 'Segment'
|
|
55
20
|
},
|
|
56
21
|
pet_name: {
|
|
@@ -93,35 +58,22 @@ const action = {
|
|
|
93
58
|
'@path': '$.timestamp'
|
|
94
59
|
}
|
|
95
60
|
},
|
|
96
|
-
retry:
|
|
97
|
-
|
|
98
|
-
description: `A delay of the selected seconds will be added before retrying a failed request.
|
|
99
|
-
Max delay allowed is 600 secs (10 mins). The default is 0 seconds.`,
|
|
100
|
-
type: 'number',
|
|
101
|
-
choices: [
|
|
102
|
-
{ label: '0 secs', value: 0 },
|
|
103
|
-
{ label: '30 secs', value: 30 },
|
|
104
|
-
{ label: '120 secs', value: 120 },
|
|
105
|
-
{ label: '300 secs', value: 300 },
|
|
106
|
-
{ label: '480 secs', value: 480 },
|
|
107
|
-
{ label: '600 secs', value: 600 }
|
|
108
|
-
],
|
|
109
|
-
required: false,
|
|
110
|
-
unsafe_hidden: true,
|
|
111
|
-
default: 0
|
|
112
|
-
}
|
|
61
|
+
retry: shared_properties_1.retry,
|
|
62
|
+
default_permission_status: shared_properties_1.default_permission_status
|
|
113
63
|
},
|
|
114
64
|
perform: async (request, data) => {
|
|
115
|
-
const { payload, settings } = data;
|
|
65
|
+
const { payload, settings, auth } = data;
|
|
116
66
|
utils_1.validateListMemberPayload(payload.userData);
|
|
67
|
+
await new Promise((resolve) => setTimeout(resolve, getAllPetsWaitInterval));
|
|
117
68
|
const petAlreadyExists = await functions_1.petExists(request, settings, payload.pet_name);
|
|
118
69
|
if (!petAlreadyExists) {
|
|
70
|
+
await new Promise((resolve) => setTimeout(resolve, createPetWaitInterval));
|
|
119
71
|
await functions_1.createPet(request, settings, payload);
|
|
120
72
|
}
|
|
121
|
-
return await functions_1.updateProfileListAndPet(request, settings, [payload]);
|
|
73
|
+
return await functions_1.updateProfileListAndPet(request, auth, settings, [payload]);
|
|
122
74
|
},
|
|
123
75
|
performBatch: async (request, data) => {
|
|
124
|
-
const { payload, settings } = data;
|
|
76
|
+
const { payload, settings, auth } = data;
|
|
125
77
|
const validPayloads = [];
|
|
126
78
|
for (const item of payload) {
|
|
127
79
|
try {
|
|
@@ -132,11 +84,13 @@ const action = {
|
|
|
132
84
|
console.error(error);
|
|
133
85
|
}
|
|
134
86
|
}
|
|
87
|
+
await new Promise((resolve) => setTimeout(resolve, getAllPetsWaitInterval));
|
|
135
88
|
const petAlreadyExists = await functions_1.petExists(request, settings, payload[0].pet_name);
|
|
136
89
|
if (!petAlreadyExists) {
|
|
90
|
+
await new Promise((resolve) => setTimeout(resolve, createPetWaitInterval));
|
|
137
91
|
await functions_1.createPet(request, settings, payload[0]);
|
|
138
92
|
}
|
|
139
|
-
return await functions_1.updateProfileListAndPet(request, settings, payload);
|
|
93
|
+
return await functions_1.updateProfileListAndPet(request, auth, settings, payload);
|
|
140
94
|
}
|
|
141
95
|
};
|
|
142
96
|
exports.default = action;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/destinations/responsys/sendAudienceAsPet/index.ts"],"names":[],"mappings":";;AAIA,oCAAoD;AACpD,2CAA2E;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/destinations/responsys/sendAudienceAsPet/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const actions_core_1 = require("@segment/actions-core");
|
|
3
4
|
const shared_properties_1 = require("../shared-properties");
|
|
4
5
|
const utils_1 = require("../utils");
|
|
5
6
|
const action = {
|
|
@@ -34,7 +35,13 @@ const action = {
|
|
|
34
35
|
CUSTOMER_ID_: { '@path': '$.userId' }
|
|
35
36
|
}
|
|
36
37
|
},
|
|
37
|
-
|
|
38
|
+
pet_name: {
|
|
39
|
+
label: 'Profile Extension Table Name',
|
|
40
|
+
description: 'The PET (Profile Extension Table) name. Overrides the default Profile Extension Table name in Settings.',
|
|
41
|
+
type: 'string',
|
|
42
|
+
required: false
|
|
43
|
+
},
|
|
44
|
+
enable_batching: shared_properties_1.use_responsys_async_api,
|
|
38
45
|
batch_size: shared_properties_1.batch_size,
|
|
39
46
|
stringify: {
|
|
40
47
|
label: 'Stringify Recipient Data',
|
|
@@ -74,25 +81,39 @@ const action = {
|
|
|
74
81
|
perform: async (request, data) => {
|
|
75
82
|
const { payload, settings, statsContext } = data;
|
|
76
83
|
const userDataFieldNames = utils_1.getUserDataFieldNames(data);
|
|
77
|
-
utils_1.
|
|
78
|
-
profileExtensionTable: settings.profileExtensionTable,
|
|
84
|
+
utils_1.testConditionsToRetry({
|
|
79
85
|
timestamp: payload.timestamp,
|
|
80
86
|
statsContext: statsContext,
|
|
81
87
|
retry: payload.retry
|
|
82
88
|
});
|
|
89
|
+
const profileExtensionTable = String(payload.pet_name || settings.profileExtensionTable);
|
|
90
|
+
if (!(typeof profileExtensionTable !== 'undefined' &&
|
|
91
|
+
profileExtensionTable !== null &&
|
|
92
|
+
profileExtensionTable.trim().length > 0)) {
|
|
93
|
+
throw new actions_core_1.IntegrationError('Send Custom Traits Action requires "PET Name" setting field to be populated', 'PET_NAME_SETTING_MISSING', 400);
|
|
94
|
+
}
|
|
83
95
|
utils_1.validateListMemberPayload(payload.userData);
|
|
84
96
|
return utils_1.sendCustomTraits(request, [payload], settings, userDataFieldNames);
|
|
85
97
|
},
|
|
86
98
|
performBatch: async (request, data) => {
|
|
87
99
|
const { payload, settings, statsContext } = data;
|
|
88
100
|
const userDataFieldNames = utils_1.getUserDataFieldNames(data);
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
101
|
+
const validatedPayloads = [];
|
|
102
|
+
for (const item of payload) {
|
|
103
|
+
const profileExtensionTable = String(item.pet_name || settings.profileExtensionTable);
|
|
104
|
+
if (!profileExtensionTable || profileExtensionTable.trim().length === 0) {
|
|
105
|
+
continue;
|
|
106
|
+
}
|
|
107
|
+
if (item.userData.EMAIL_ADDRESS_ || item.userData.RIID_ || item.userData.CUSTOMER_ID_) {
|
|
108
|
+
validatedPayloads.push(item);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
utils_1.testConditionsToRetry({
|
|
112
|
+
timestamp: validatedPayloads[0].timestamp,
|
|
92
113
|
statsContext: statsContext,
|
|
93
|
-
retry:
|
|
114
|
+
retry: validatedPayloads[0].retry
|
|
94
115
|
});
|
|
95
|
-
return utils_1.sendCustomTraits(request,
|
|
116
|
+
return utils_1.sendCustomTraits(request, validatedPayloads, settings, userDataFieldNames);
|
|
96
117
|
}
|
|
97
118
|
};
|
|
98
119
|
exports.default = action;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/destinations/responsys/sendCustomTraits/index.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/destinations/responsys/sendCustomTraits/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ModifiedResponse, RequestClient } from '@segment/actions-core/*';
|
|
2
|
+
import { AuthTokens } from '@segment/actions-core/destination-kit/parse-settings';
|
|
3
|
+
import { Settings } from '../generated-types';
|
|
4
|
+
import { Payload } from './generated-types';
|
|
5
|
+
export declare const getAllPets: (request: RequestClient, settings: Settings) => Promise<{
|
|
6
|
+
objectName: string;
|
|
7
|
+
folderName: string;
|
|
8
|
+
}[]>;
|
|
9
|
+
export declare const createPet: (request: RequestClient, settings: Settings, petName: string, fields: string[], folderName?: string | undefined) => Promise<void>;
|
|
10
|
+
export declare const sendToPet: (request: RequestClient, authTokens: AuthTokens, payload: Payload[], settings: Settings, userDataFieldNames: string[]) => Promise<ModifiedResponse<unknown>[] | undefined>;
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.sendToPet = exports.createPet = exports.getAllPets = void 0;
|
|
4
|
+
const utils_1 = require("../utils");
|
|
5
|
+
const getAllPets = async (request, settings) => {
|
|
6
|
+
const path = `/rest/api/v1.3/lists/${settings.profileListName}/listExtensions`;
|
|
7
|
+
const endpoint = new URL(path, settings.baseUrl);
|
|
8
|
+
const response = await request(endpoint.href, {
|
|
9
|
+
method: 'GET'
|
|
10
|
+
});
|
|
11
|
+
const results = response.data;
|
|
12
|
+
const filteredResults = results.filter((item) => item && item.profileExtension !== undefined);
|
|
13
|
+
return filteredResults.map((item) => item.profileExtension);
|
|
14
|
+
};
|
|
15
|
+
exports.getAllPets = getAllPets;
|
|
16
|
+
const createPet = async (request, settings, petName, fields, folderName) => {
|
|
17
|
+
const petFields = fields.map((field) => {
|
|
18
|
+
return {
|
|
19
|
+
fieldName: field.substring(0, 30),
|
|
20
|
+
fieldType: 'STR500'
|
|
21
|
+
};
|
|
22
|
+
});
|
|
23
|
+
const requestBody = {
|
|
24
|
+
profileExtension: {
|
|
25
|
+
objectName: petName,
|
|
26
|
+
folderName: folderName || settings.defaultFolderName
|
|
27
|
+
},
|
|
28
|
+
fields: petFields
|
|
29
|
+
};
|
|
30
|
+
const path = `/rest/api/v1.3/lists/${settings.profileListName}/listExtensions`;
|
|
31
|
+
const endpoint = new URL(path, settings.baseUrl);
|
|
32
|
+
await request(endpoint.href, {
|
|
33
|
+
method: 'POST',
|
|
34
|
+
body: JSON.stringify(requestBody)
|
|
35
|
+
});
|
|
36
|
+
};
|
|
37
|
+
exports.createPet = createPet;
|
|
38
|
+
const sendToPet = async (request, authTokens, payload, settings, userDataFieldNames) => {
|
|
39
|
+
const usingAsyncApi = payload.length > 0 ? payload[0].use_responsys_async_api : false;
|
|
40
|
+
const getAllPetsWaitInterval = 60;
|
|
41
|
+
const createPetWaitInterval = 6000;
|
|
42
|
+
const sendToPetWaitInterval = 120;
|
|
43
|
+
await utils_1.upsertListMembers(request, authTokens, payload, settings, usingAsyncApi);
|
|
44
|
+
const folderRecords = {};
|
|
45
|
+
for (const item of payload) {
|
|
46
|
+
const petName = String(item.pet_name || settings.profileExtensionTable);
|
|
47
|
+
const folderName = String(item.folder_name || settings.defaultFolderName);
|
|
48
|
+
if (!folderRecords[folderName]) {
|
|
49
|
+
folderRecords[folderName] = {};
|
|
50
|
+
}
|
|
51
|
+
if (!folderRecords[folderName][petName]) {
|
|
52
|
+
folderRecords[folderName][petName] = [];
|
|
53
|
+
}
|
|
54
|
+
folderRecords[folderName][petName].push(item.stringify ? utils_1.stringifyObject(item.userData) : item.userData);
|
|
55
|
+
}
|
|
56
|
+
await new Promise((resolve) => setTimeout(resolve, getAllPetsWaitInterval));
|
|
57
|
+
const allPets = await exports.getAllPets(request, settings);
|
|
58
|
+
const responses = [];
|
|
59
|
+
for (const [folderName, petRecords] of Object.entries(folderRecords)) {
|
|
60
|
+
for (const [petName, records] of Object.entries(petRecords)) {
|
|
61
|
+
const correspondingPet = allPets.find((item) => item.objectName === petName && item.folderName === folderName);
|
|
62
|
+
if (!correspondingPet) {
|
|
63
|
+
await new Promise((resolve) => setTimeout(resolve, createPetWaitInterval));
|
|
64
|
+
await exports.createPet(request, settings, petName, userDataFieldNames, folderName);
|
|
65
|
+
allPets.push({ objectName: petName, folderName });
|
|
66
|
+
}
|
|
67
|
+
const resolvedRecords = records.map((userData) => {
|
|
68
|
+
return userDataFieldNames.map((fieldName) => {
|
|
69
|
+
return fieldName in userData ? userData[fieldName] : '';
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
for (let i = 0; i < resolvedRecords.length; i += 200) {
|
|
73
|
+
const chunk = resolvedRecords.slice(i, i + 200);
|
|
74
|
+
const recordData = {
|
|
75
|
+
fieldNames: userDataFieldNames.map((field) => field.toUpperCase()),
|
|
76
|
+
records: chunk,
|
|
77
|
+
mapTemplateName: ''
|
|
78
|
+
};
|
|
79
|
+
const requestBody = {
|
|
80
|
+
recordData,
|
|
81
|
+
insertOnNoMatch: settings.insertOnNoMatch,
|
|
82
|
+
updateOnMatch: settings.updateOnMatch || 'REPLACE_ALL',
|
|
83
|
+
matchColumnName1: settings.matchColumnName1,
|
|
84
|
+
matchColumnName2: settings.matchColumnName2 || ''
|
|
85
|
+
};
|
|
86
|
+
const path = `/rest/${usingAsyncApi ? 'asyncApi' : 'api'}/v1.3/lists/${settings.profileListName}/listExtensions/${petName}/members`;
|
|
87
|
+
const endpoint = new URL(path, settings.baseUrl);
|
|
88
|
+
await new Promise((resolve) => setTimeout(resolve, sendToPetWaitInterval * 2));
|
|
89
|
+
const response = await request(endpoint.href, {
|
|
90
|
+
method: 'POST',
|
|
91
|
+
skipResponseCloning: true,
|
|
92
|
+
body: JSON.stringify(requestBody)
|
|
93
|
+
});
|
|
94
|
+
if (usingAsyncApi) {
|
|
95
|
+
const requestId = response.data.requestId;
|
|
96
|
+
const asyncResponse = await utils_1.getAsyncResponse(requestId, authTokens, settings);
|
|
97
|
+
await utils_1.sendDebugMessageToSegmentSource(request, requestBody, asyncResponse, settings);
|
|
98
|
+
responses.push(asyncResponse);
|
|
99
|
+
}
|
|
100
|
+
await utils_1.sendDebugMessageToSegmentSource(request, requestBody, response, settings);
|
|
101
|
+
responses.push(response);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
return responses;
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
exports.sendToPet = sendToPet;
|
|
108
|
+
//# sourceMappingURL=functions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"functions.js","sourceRoot":"","sources":["../../../../src/destinations/responsys/sendToPet/functions.ts"],"names":[],"mappings":";;;AAGA,oCAAgH;AAIzG,MAAM,UAAU,GAAG,KAAK,EAC7B,OAAsB,EACtB,QAAkB,EACqC,EAAE;IACzD,MAAM,IAAI,GAAG,wBAAwB,QAAQ,CAAC,eAAe,iBAAiB,CAAA;IAC9E,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAA;IAEhD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE;QAC5C,MAAM,EAAE,KAAK;KACd,CAAC,CAAA;IAEF,MAAM,OAAO,GAAG,QAAQ,CAAC,IAA2E,CAAA;IACpG,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,IAAI,CAAC,gBAAgB,KAAK,SAAS,CAAC,CAAA;IAC7F,OAAO,eAAe,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,gBAA8D,CAAC,CAAA;AAC3G,CAAC,CAAA;AAdY,QAAA,UAAU,cActB;AAEM,MAAM,SAAS,GAAG,KAAK,EAC5B,OAAsB,EACtB,QAAkB,EAClB,OAAe,EACf,MAAgB,EAChB,UAAmB,EACnB,EAAE;IACF,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACrC,OAAO;YACL,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC;YACjC,SAAS,EAAE,QAAQ;SACpB,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,MAAM,WAAW,GAAG;QAClB,gBAAgB,EAAE;YAChB,UAAU,EAAE,OAAO;YACnB,UAAU,EAAE,UAAU,IAAI,QAAQ,CAAC,iBAAiB;SACrD;QACD,MAAM,EAAE,SAAS;KAClB,CAAA;IAED,MAAM,IAAI,GAAG,wBAAwB,QAAQ,CAAC,eAAe,iBAAiB,CAAA;IAC9E,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAA;IAEhD,MAAM,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE;QAC3B,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;KAClC,CAAC,CAAA;AACJ,CAAC,CAAA;AA7BY,QAAA,SAAS,aA6BrB;AAEM,MAAM,SAAS,GAAG,KAAK,EAC5B,OAAsB,EACtB,UAAsB,EACtB,OAAkB,EAClB,QAAkB,EAClB,kBAA4B,EAC5B,EAAE;IACF,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,KAAK,CAAA;IAUrF,MAAM,sBAAsB,GAAG,EAAE,CAAA;IAIjC,MAAM,qBAAqB,GAAG,IAAI,CAAA;IAIlC,MAAM,qBAAqB,GAAG,GAAG,CAAA;IAGjC,MAAM,yBAAiB,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAA;IAG9E,MAAM,aAAa,GAWf,EAAE,CAAA;IACN,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE;QAC1B,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,qBAAqB,CAAC,CAAA;QACvE,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,IAAI,QAAQ,CAAC,iBAAiB,CAAC,CAAA;QACzE,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE;YAC9B,aAAa,CAAC,UAAU,CAAC,GAAG,EAAE,CAAA;SAC/B;QAED,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,EAAE;YACvC,aAAa,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAA;SACxC;QAED,aAAa,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,uBAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;KACzG;IAGD,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,sBAAsB,CAAC,CAAC,CAAA;IAC3E,MAAM,OAAO,GAAG,MAAM,kBAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;IAEnD,MAAM,SAAS,GAAgC,EAAE,CAAA;IACjD,KAAK,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE;QACpE,KAAK,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;YAC3D,MAAM,gBAAgB,GAAG,OAAO,CAAC,IAAI,CACnC,CAAC,IAAgD,EAAE,EAAE,CACnD,IAAI,CAAC,UAAU,KAAK,OAAO,IAAI,IAAI,CAAC,UAAU,KAAK,UAAU,CAChE,CAAA;YAED,IAAI,CAAC,gBAAgB,EAAE;gBAErB,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,qBAAqB,CAAC,CAAC,CAAA;gBAC1E,MAAM,iBAAS,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,kBAAkB,EAAE,UAAU,CAAC,CAAA;gBAC3E,OAAO,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAA;aAClD;YAED,MAAM,eAAe,GAAe,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;gBAC3D,OAAO,kBAAkB,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE;oBAC1C,OAAO,SAAS,IAAI,QAAQ,CAAC,CAAC,CAAE,QAAmC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;gBACrF,CAAC,CAAC,CAAA;YACJ,CAAC,CAAC,CAAA;YAIF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC,IAAI,GAAG,EAAE;gBACpD,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAA;gBAC/C,MAAM,UAAU,GAAwB;oBACtC,UAAU,EAAE,kBAAkB,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;oBAClE,OAAO,EAAE,KAAK;oBACd,eAAe,EAAE,EAAE;iBACpB,CAAA;gBAED,MAAM,WAAW,GAAqC;oBACpD,UAAU;oBACV,eAAe,EAAE,QAAQ,CAAC,eAAe;oBACzC,aAAa,EAAE,QAAQ,CAAC,aAAa,IAAI,aAAa;oBACtD,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB;oBAC3C,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB,IAAI,EAAE;iBAClD,CAAA;gBAED,MAAM,IAAI,GAAG,SAAS,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,eACtD,QAAQ,CAAC,eACX,mBAAmB,OAAO,UAAU,CAAA;gBACpC,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAA;gBAKhD,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,qBAAqB,GAAG,CAAC,CAAC,CAAC,CAAA;gBAC9E,MAAM,QAAQ,GAA6C,MAAM,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE;oBACtF,MAAM,EAAE,MAAM;oBACd,mBAAmB,EAAE,IAAI;oBACzB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;iBAClC,CAAC,CAAA;gBAEF,IAAI,aAAa,EAAE;oBACjB,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAA;oBACzC,MAAM,aAAa,GAAG,MAAM,wBAAgB,CAAC,SAAS,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAA;oBAC7E,MAAM,uCAA+B,CAAC,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAA;oBACpF,SAAS,CAAC,IAAI,CAAC,aAA0C,CAAC,CAAA;iBAC3D;gBAED,MAAM,uCAA+B,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAA;gBAC/E,SAAS,CAAC,IAAI,CAAC,QAAqC,CAAC,CAAA;aACtD;SACF;QAED,OAAO,SAAS,CAAA;KACjB;AACH,CAAC,CAAA;AAjIY,QAAA,SAAS,aAiIrB"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export interface Payload {
|
|
2
|
+
userData: {
|
|
3
|
+
EMAIL_ADDRESS_?: string;
|
|
4
|
+
CUSTOMER_ID_?: string;
|
|
5
|
+
RIID_?: string;
|
|
6
|
+
[k: string]: unknown;
|
|
7
|
+
};
|
|
8
|
+
folder_name?: string;
|
|
9
|
+
pet_name?: string;
|
|
10
|
+
timestamp?: string | number;
|
|
11
|
+
use_responsys_async_api?: boolean;
|
|
12
|
+
batch_size?: number;
|
|
13
|
+
stringify?: boolean;
|
|
14
|
+
default_permission_status?: string;
|
|
15
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generated-types.js","sourceRoot":"","sources":["../../../../src/destinations/responsys/sendToPet/generated-types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const actions_core_1 = require("@segment/actions-core");
|
|
4
|
+
const shared_properties_1 = require("../shared-properties");
|
|
5
|
+
const utils_1 = require("../utils");
|
|
6
|
+
const functions_1 = require("./functions");
|
|
7
|
+
const action = {
|
|
8
|
+
title: 'Send to PET (Profile Extension Table)',
|
|
9
|
+
description: 'Send values to a Profile Extension Table in Responsys.',
|
|
10
|
+
fields: {
|
|
11
|
+
userData: { ...shared_properties_1.recipient_data, additionalProperties: true },
|
|
12
|
+
folder_name: shared_properties_1.folder_name,
|
|
13
|
+
pet_name: {
|
|
14
|
+
label: 'Profile Extension Table Name',
|
|
15
|
+
description: 'The PET (Profile Extension Table) name. Overrides the default Profile Extension Table name in Settings.',
|
|
16
|
+
type: 'string',
|
|
17
|
+
required: false
|
|
18
|
+
},
|
|
19
|
+
timestamp: {
|
|
20
|
+
label: 'Timestamp',
|
|
21
|
+
description: 'The timestamp of when the event occurred.',
|
|
22
|
+
type: 'datetime',
|
|
23
|
+
required: false,
|
|
24
|
+
unsafe_hidden: true,
|
|
25
|
+
default: {
|
|
26
|
+
'@path': '$.timestamp'
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
use_responsys_async_api: shared_properties_1.use_responsys_async_api,
|
|
30
|
+
batch_size: shared_properties_1.batch_size,
|
|
31
|
+
stringify: {
|
|
32
|
+
label: 'Stringify Recipient Data',
|
|
33
|
+
description: 'If true, all Recipient data will be converted to strings before being sent to Responsys.',
|
|
34
|
+
type: 'boolean',
|
|
35
|
+
required: false,
|
|
36
|
+
default: false
|
|
37
|
+
},
|
|
38
|
+
default_permission_status: shared_properties_1.default_permission_status
|
|
39
|
+
},
|
|
40
|
+
perform: async (request, data) => {
|
|
41
|
+
const { payload, settings, auth } = data;
|
|
42
|
+
const userDataFieldNames = utils_1.getUserDataFieldNames(data);
|
|
43
|
+
const profileExtensionTable = String(payload.pet_name || settings.profileExtensionTable);
|
|
44
|
+
if (!(typeof profileExtensionTable !== 'undefined' &&
|
|
45
|
+
profileExtensionTable !== null &&
|
|
46
|
+
profileExtensionTable.trim().length > 0)) {
|
|
47
|
+
throw new actions_core_1.IntegrationError('Send Custom Traits Action requires "PET Name" setting field to be populated', 'PET_NAME_SETTING_MISSING', 400);
|
|
48
|
+
}
|
|
49
|
+
utils_1.validateListMemberPayload(payload.userData);
|
|
50
|
+
return functions_1.sendToPet(request, auth, [payload], settings, userDataFieldNames);
|
|
51
|
+
},
|
|
52
|
+
performBatch: async (request, data) => {
|
|
53
|
+
const { payload, settings, auth } = data;
|
|
54
|
+
const userDataFieldNames = utils_1.getUserDataFieldNames(data);
|
|
55
|
+
const validatedPayloads = [];
|
|
56
|
+
for (const item of payload) {
|
|
57
|
+
const profileExtensionTable = String(item.pet_name || settings.profileExtensionTable);
|
|
58
|
+
if (!profileExtensionTable || profileExtensionTable.trim().length === 0) {
|
|
59
|
+
continue;
|
|
60
|
+
}
|
|
61
|
+
if (item.userData.EMAIL_ADDRESS_ || item.userData.RIID_ || item.userData.CUSTOMER_ID_) {
|
|
62
|
+
validatedPayloads.push(item);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return functions_1.sendToPet(request, auth, validatedPayloads, settings, userDataFieldNames);
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
exports.default = action;
|
|
69
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/destinations/responsys/sendToPet/index.ts"],"names":[],"mappings":";;AAAA,wDAA0E;AAI1E,4DAM6B;AAC7B,oCAA2E;AAE3E,2CAAuC;AAGvC,MAAM,MAAM,GAAwC;IAClD,KAAK,EAAE,uCAAuC;IAC9C,WAAW,EAAE,wDAAwD;IACrE,MAAM,EAAE;QACN,QAAQ,EAAE,EAAE,GAAG,kCAAc,EAAE,oBAAoB,EAAE,IAAI,EAAE;QAC3D,WAAW,EAAE,+BAAW;QACxB,QAAQ,EAAE;YACR,KAAK,EAAE,8BAA8B;YACrC,WAAW,EACT,yGAAyG;YAC3G,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,KAAK;SAChB;QACD,SAAS,EAAE;YACT,KAAK,EAAE,WAAW;YAClB,WAAW,EAAE,2CAA2C;YACxD,IAAI,EAAE,UAAU;YAChB,QAAQ,EAAE,KAAK;YACf,aAAa,EAAE,IAAI;YACnB,OAAO,EAAE;gBACP,OAAO,EAAE,aAAa;aACvB;SACF;QACD,uBAAuB,EAAE,2CAAuB;QAChD,UAAU,EAAE,8BAAU;QACtB,SAAS,EAAE;YACT,KAAK,EAAE,0BAA0B;YACjC,WAAW,EAAE,0FAA0F;YACvG,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,KAAK;YACf,OAAO,EAAE,KAAK;SACf;QACD,yBAAyB,EAAE,6CAAyB;KACrD;IACD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QAC/B,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,IAAI,CAAA;QAExC,MAAM,kBAAkB,GAAG,6BAAqB,CAAC,IAAuB,CAAC,CAAA;QAEzE,MAAM,qBAAqB,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,IAAI,QAAQ,CAAC,qBAAqB,CAAC,CAAA;QAExF,IACE,CAAC,CACC,OAAO,qBAAqB,KAAK,WAAW;YAC5C,qBAAqB,KAAK,IAAI;YAC9B,qBAAqB,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CACxC,EACD;YACA,MAAM,IAAI,+BAAgB,CACxB,6EAA6E,EAC7E,0BAA0B,EAC1B,GAAG,CACJ,CAAA;SACF;QAED,iCAAyB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;QAE3C,OAAO,qBAAS,CAAC,OAAO,EAAE,IAAkB,EAAE,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,kBAAkB,CAAC,CAAA;IACxF,CAAC;IAED,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QACpC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,IAAI,CAAA;QAExC,MAAM,kBAAkB,GAAG,6BAAqB,CAAC,IAAuB,CAAC,CAAA;QAEzE,MAAM,iBAAiB,GAAc,EAAE,CAAA;QACvC,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE;YAC1B,MAAM,qBAAqB,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,qBAAqB,CAAC,CAAA;YACrF,IAAI,CAAC,qBAAqB,IAAI,qBAAqB,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE;gBACvE,SAAQ;aACT;YAED,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE;gBACrF,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;aAC7B;SACF;QAED,OAAO,qBAAS,CAAC,OAAO,EAAE,IAAkB,EAAE,iBAAiB,EAAE,QAAQ,EAAE,kBAAkB,CAAC,CAAA;IAChG,CAAC;CACF,CAAA;AAED,kBAAe,MAAM,CAAA"}
|
|
@@ -1,3 +1,7 @@
|
|
|
1
1
|
import { InputField } from '@segment/actions-core/destination-kit/types';
|
|
2
|
-
export declare const
|
|
2
|
+
export declare const folder_name: InputField;
|
|
3
|
+
export declare const recipient_data: InputField;
|
|
4
|
+
export declare const retry: InputField;
|
|
5
|
+
export declare const use_responsys_async_api: InputField;
|
|
3
6
|
export declare const batch_size: InputField;
|
|
7
|
+
export declare const default_permission_status: InputField;
|
|
@@ -1,7 +1,70 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.batch_size = exports.
|
|
4
|
-
exports.
|
|
3
|
+
exports.default_permission_status = exports.batch_size = exports.use_responsys_async_api = exports.retry = exports.recipient_data = exports.folder_name = void 0;
|
|
4
|
+
exports.folder_name = {
|
|
5
|
+
label: 'Folder Name',
|
|
6
|
+
description: 'The name of the folder where the new Profile Extension Table will be created. Overrides the default folder name in Settings.',
|
|
7
|
+
type: 'string',
|
|
8
|
+
required: false,
|
|
9
|
+
default: 'Segment'
|
|
10
|
+
};
|
|
11
|
+
exports.recipient_data = {
|
|
12
|
+
label: 'Recipient Data',
|
|
13
|
+
description: 'Record data that represents field names and corresponding values for each profile.',
|
|
14
|
+
type: 'object',
|
|
15
|
+
defaultObjectUI: 'keyvalue',
|
|
16
|
+
required: true,
|
|
17
|
+
additionalProperties: false,
|
|
18
|
+
properties: {
|
|
19
|
+
EMAIL_ADDRESS_: {
|
|
20
|
+
label: 'Email address',
|
|
21
|
+
description: "The user's email address.",
|
|
22
|
+
type: 'string',
|
|
23
|
+
format: 'email',
|
|
24
|
+
required: false
|
|
25
|
+
},
|
|
26
|
+
CUSTOMER_ID_: {
|
|
27
|
+
label: 'Customer ID',
|
|
28
|
+
description: 'Responsys Customer ID.',
|
|
29
|
+
type: 'string',
|
|
30
|
+
required: false
|
|
31
|
+
},
|
|
32
|
+
RIID_: {
|
|
33
|
+
label: 'Recipient ID',
|
|
34
|
+
description: 'Recipient ID (RIID). RIID is required if Email Address and Customer ID are empty. Only use it if the corresponding profile already exists in Responsys.',
|
|
35
|
+
type: 'string',
|
|
36
|
+
required: false
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
default: {
|
|
40
|
+
EMAIL_ADDRESS_: {
|
|
41
|
+
'@if': {
|
|
42
|
+
exists: { '@path': '$.traits.email' },
|
|
43
|
+
then: { '@path': '$.traits.email' },
|
|
44
|
+
else: { '@path': '$.context.traits.email' }
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
CUSTOMER_ID_: { '@path': '$.userId' }
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
exports.retry = {
|
|
51
|
+
label: 'Delay (seconds)',
|
|
52
|
+
description: `A delay of the selected seconds will be added before retrying a failed request.
|
|
53
|
+
Max delay allowed is 600 secs (10 mins). The default is 0 seconds.`,
|
|
54
|
+
type: 'number',
|
|
55
|
+
choices: [
|
|
56
|
+
{ label: '0 secs', value: 0 },
|
|
57
|
+
{ label: '30 secs', value: 30 },
|
|
58
|
+
{ label: '120 secs', value: 120 },
|
|
59
|
+
{ label: '300 secs', value: 300 },
|
|
60
|
+
{ label: '480 secs', value: 480 },
|
|
61
|
+
{ label: '600 secs', value: 600 }
|
|
62
|
+
],
|
|
63
|
+
required: false,
|
|
64
|
+
unsafe_hidden: true,
|
|
65
|
+
default: 0
|
|
66
|
+
};
|
|
67
|
+
exports.use_responsys_async_api = {
|
|
5
68
|
label: 'Use Responsys Async API',
|
|
6
69
|
description: 'Once enabled, Segment will collect events into batches of 200 before sending to Responsys.',
|
|
7
70
|
type: 'boolean',
|
|
@@ -16,4 +79,14 @@ exports.batch_size = {
|
|
|
16
79
|
unsafe_hidden: true,
|
|
17
80
|
default: 200
|
|
18
81
|
};
|
|
82
|
+
exports.default_permission_status = {
|
|
83
|
+
label: 'Default Permission Status',
|
|
84
|
+
description: 'This value must be specified as either OPTIN or OPTOUT. It defaults to the value defined in this destination settings.',
|
|
85
|
+
type: 'string',
|
|
86
|
+
required: false,
|
|
87
|
+
choices: [
|
|
88
|
+
{ label: 'Opt In', value: 'OPTIN' },
|
|
89
|
+
{ label: 'Opt Out', value: 'OPTOUT' }
|
|
90
|
+
]
|
|
91
|
+
};
|
|
19
92
|
//# sourceMappingURL=shared-properties.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared-properties.js","sourceRoot":"","sources":["../../../src/destinations/responsys/shared-properties.ts"],"names":[],"mappings":";;;AAEa,QAAA,eAAe,GAAe;
|
|
1
|
+
{"version":3,"file":"shared-properties.js","sourceRoot":"","sources":["../../../src/destinations/responsys/shared-properties.ts"],"names":[],"mappings":";;;AAEa,QAAA,WAAW,GAAe;IACrC,KAAK,EAAE,aAAa;IACpB,WAAW,EACT,8HAA8H;IAChI,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE,KAAK;IACf,OAAO,EAAE,SAAS;CACnB,CAAA;AAEY,QAAA,cAAc,GAAe;IACxC,KAAK,EAAE,gBAAgB;IACvB,WAAW,EAAE,oFAAoF;IACjG,IAAI,EAAE,QAAQ;IACd,eAAe,EAAE,UAAU;IAC3B,QAAQ,EAAE,IAAI;IACd,oBAAoB,EAAE,KAAK;IAC3B,UAAU,EAAE;QACV,cAAc,EAAE;YACd,KAAK,EAAE,eAAe;YACtB,WAAW,EAAE,2BAA2B;YACxC,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE,OAAO;YACf,QAAQ,EAAE,KAAK;SAChB;QACD,YAAY,EAAE;YACZ,KAAK,EAAE,aAAa;YACpB,WAAW,EAAE,wBAAwB;YACrC,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,KAAK;SAChB;QACD,KAAK,EAAE;YACL,KAAK,EAAE,cAAc;YACrB,WAAW,EACT,yJAAyJ;YAC3J,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,KAAK;SAChB;KACF;IACD,OAAO,EAAE;QACP,cAAc,EAAE;YACd,KAAK,EAAE;gBACL,MAAM,EAAE,EAAE,OAAO,EAAE,gBAAgB,EAAE;gBACrC,IAAI,EAAE,EAAE,OAAO,EAAE,gBAAgB,EAAE;gBACnC,IAAI,EAAE,EAAE,OAAO,EAAE,wBAAwB,EAAE;aAC5C;SACF;QACD,YAAY,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE;KACtC;CACF,CAAA;AAEY,QAAA,KAAK,GAAe;IAC/B,KAAK,EAAE,iBAAiB;IACxB,WAAW,EAAE;mFACoE;IACjF,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE;QACP,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE;QAC7B,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE;QAC/B,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE;QACjC,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE;QACjC,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE;QACjC,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE;KAClC;IACD,QAAQ,EAAE,KAAK;IACf,aAAa,EAAE,IAAI;IACnB,OAAO,EAAE,CAAC;CACX,CAAA;AAEY,QAAA,uBAAuB,GAAe;IACjD,KAAK,EAAE,yBAAyB;IAChC,WAAW,EAAE,4FAA4F;IACzG,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,IAAI;IACb,aAAa,EAAE,IAAI;CACpB,CAAA;AAEY,QAAA,UAAU,GAAe;IACpC,KAAK,EAAE,YAAY;IACnB,WAAW,EAAE,qFAAqF;IAClG,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE,KAAK;IACf,aAAa,EAAE,IAAI;IACnB,OAAO,EAAE,GAAG;CACb,CAAA;AAEY,QAAA,yBAAyB,GAAe;IACnD,KAAK,EAAE,2BAA2B;IAClC,WAAW,EACT,wHAAwH;IAC1H,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE,KAAK;IACf,OAAO,EAAE;QACP,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE;QACnC,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE;KACtC;CACF,CAAA"}
|
|
@@ -5,6 +5,9 @@ export interface Data {
|
|
|
5
5
|
};
|
|
6
6
|
};
|
|
7
7
|
}
|
|
8
|
+
export interface ResponsysAsyncResponse {
|
|
9
|
+
requestId: string;
|
|
10
|
+
}
|
|
8
11
|
export declare type ResponsysMatchField = 'CUSTOMER_ID' | 'EMAIL_ADDRESS' | 'RIID';
|
|
9
12
|
export declare type ResponsysMatchType = 'CUSTOMER_ID_' | 'EMAIL_ADDRESS_' | 'RIID_';
|
|
10
13
|
export declare type ResponsysMergeRule = {
|
|
@@ -65,20 +65,19 @@ const action = {
|
|
|
65
65
|
label: 'Stringify Recipient Data',
|
|
66
66
|
description: 'If true, all Recipient data will be converted to strings before being sent to Responsys.',
|
|
67
67
|
type: 'boolean',
|
|
68
|
-
required:
|
|
68
|
+
required: false,
|
|
69
69
|
default: false
|
|
70
70
|
},
|
|
71
|
-
enable_batching: shared_properties_1.
|
|
72
|
-
batch_size: shared_properties_1.batch_size
|
|
71
|
+
enable_batching: shared_properties_1.use_responsys_async_api,
|
|
72
|
+
batch_size: shared_properties_1.batch_size,
|
|
73
|
+
default_permission_status: shared_properties_1.default_permission_status
|
|
73
74
|
},
|
|
74
75
|
perform: async (request, data) => {
|
|
75
|
-
const userDataFieldNames = utils_1.getUserDataFieldNames(data);
|
|
76
76
|
utils_1.validateListMemberPayload(data.payload.userData);
|
|
77
|
-
return utils_1.upsertListMembers(request, [data.payload], data.settings
|
|
77
|
+
return utils_1.upsertListMembers(request, data.auth, [data.payload], data.settings);
|
|
78
78
|
},
|
|
79
79
|
performBatch: async (request, data) => {
|
|
80
|
-
|
|
81
|
-
return utils_1.upsertListMembers(request, data.payload, data.settings, userDataFieldNames);
|
|
80
|
+
return utils_1.upsertListMembers(request, data.auth, data.payload, data.settings);
|
|
82
81
|
}
|
|
83
82
|
};
|
|
84
83
|
exports.default = action;
|