@segment/action-destinations 3.372.0 → 3.374.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.
Files changed (65) hide show
  1. package/dist/destinations/dawn/identifyUser/index.js +2 -1
  2. package/dist/destinations/dawn/identifyUser/index.js.map +1 -1
  3. package/dist/destinations/dawn/index.js +2 -1
  4. package/dist/destinations/dawn/index.js.map +1 -1
  5. package/dist/destinations/dawn/track/index.js +2 -1
  6. package/dist/destinations/dawn/track/index.js.map +1 -1
  7. package/dist/destinations/dawn/utils.d.ts +1 -0
  8. package/dist/destinations/dawn/utils.js +5 -0
  9. package/dist/destinations/dawn/utils.js.map +1 -0
  10. package/dist/destinations/facebook-custom-audiences/constants.d.ts +1 -1
  11. package/dist/destinations/facebook-custom-audiences/constants.js +1 -1
  12. package/dist/destinations/facebook-custom-audiences/fbca-operations.d.ts +3 -3
  13. package/dist/destinations/facebook-custom-audiences/fbca-operations.js +9 -15
  14. package/dist/destinations/facebook-custom-audiences/fbca-operations.js.map +1 -1
  15. package/dist/destinations/facebook-custom-audiences/sync/index.js +4 -4
  16. package/dist/destinations/facebook-custom-audiences/sync/index.js.map +1 -1
  17. package/dist/destinations/first-party-dv360/addToAudContactInfo/_tests_/index.test.d.ts +1 -0
  18. package/dist/destinations/first-party-dv360/addToAudContactInfo/_tests_/index.test.js +75 -0
  19. package/dist/destinations/first-party-dv360/addToAudContactInfo/_tests_/index.test.js.map +1 -0
  20. package/dist/destinations/first-party-dv360/addToAudContactInfo/index.js +4 -4
  21. package/dist/destinations/first-party-dv360/addToAudContactInfo/index.js.map +1 -1
  22. package/dist/destinations/first-party-dv360/functions.d.ts +2 -2
  23. package/dist/destinations/first-party-dv360/functions.js +10 -12
  24. package/dist/destinations/first-party-dv360/functions.js.map +1 -1
  25. package/dist/destinations/first-party-dv360/removeFromAudContactInfo/_tests_/index.test.d.ts +1 -0
  26. package/dist/destinations/first-party-dv360/removeFromAudContactInfo/_tests_/index.test.js +75 -0
  27. package/dist/destinations/first-party-dv360/removeFromAudContactInfo/_tests_/index.test.js.map +1 -0
  28. package/dist/destinations/first-party-dv360/removeFromAudContactInfo/index.js +4 -4
  29. package/dist/destinations/first-party-dv360/removeFromAudContactInfo/index.js.map +1 -1
  30. package/dist/destinations/linkedin-audiences/updateAudience/index.js +11 -10
  31. package/dist/destinations/linkedin-audiences/updateAudience/index.js.map +1 -1
  32. package/dist/destinations/pinterest-conversions/pinterset-capi-user-data.d.ts +3 -2
  33. package/dist/destinations/pinterest-conversions/pinterset-capi-user-data.js +36 -34
  34. package/dist/destinations/pinterest-conversions/pinterset-capi-user-data.js.map +1 -1
  35. package/dist/destinations/pinterest-conversions/reportConversionEvent/index.js +6 -6
  36. package/dist/destinations/pinterest-conversions/reportConversionEvent/index.js.map +1 -1
  37. package/dist/destinations/salesforce-marketing-cloud/_tests_/dataExtension.test.js +50 -0
  38. package/dist/destinations/salesforce-marketing-cloud/_tests_/dataExtension.test.js.map +1 -1
  39. package/dist/destinations/salesforce-marketing-cloud/contactDataExtension/generated-types.d.ts +48 -0
  40. package/dist/destinations/salesforce-marketing-cloud/contactDataExtension/index.js +30 -4
  41. package/dist/destinations/salesforce-marketing-cloud/contactDataExtension/index.js.map +1 -1
  42. package/dist/destinations/salesforce-marketing-cloud/dataExtension/generated-types.d.ts +48 -0
  43. package/dist/destinations/salesforce-marketing-cloud/dataExtension/index.js +30 -4
  44. package/dist/destinations/salesforce-marketing-cloud/dataExtension/index.js.map +1 -1
  45. package/dist/destinations/salesforce-marketing-cloud/sfmc-operations.d.ts +12 -3
  46. package/dist/destinations/salesforce-marketing-cloud/sfmc-operations.js +312 -9
  47. package/dist/destinations/salesforce-marketing-cloud/sfmc-operations.js.map +1 -1
  48. package/dist/destinations/salesforce-marketing-cloud/sfmc-properties.d.ts +2 -0
  49. package/dist/destinations/salesforce-marketing-cloud/sfmc-properties.js +170 -10
  50. package/dist/destinations/salesforce-marketing-cloud/sfmc-properties.js.map +1 -1
  51. package/dist/destinations/vwo/pageVisit/index.js +2 -2
  52. package/dist/destinations/vwo/pageVisit/index.js.map +1 -1
  53. package/dist/destinations/webhook-extensible/__test__/webhook.test.js +43 -0
  54. package/dist/destinations/webhook-extensible/__test__/webhook.test.js.map +1 -1
  55. package/dist/destinations/webhook-extensible/index.js +3 -1
  56. package/dist/destinations/webhook-extensible/index.js.map +1 -1
  57. package/dist/destinations/yahoo-audiences/updateSegment/index.js +10 -7
  58. package/dist/destinations/yahoo-audiences/updateSegment/index.js.map +1 -1
  59. package/dist/destinations/yahoo-audiences/utils-rt.d.ts +3 -2
  60. package/dist/destinations/yahoo-audiences/utils-rt.js +6 -5
  61. package/dist/destinations/yahoo-audiences/utils-rt.js.map +1 -1
  62. package/dist/lib/hashing-utils.d.ts +1 -1
  63. package/dist/lib/hashing-utils.js +1 -1
  64. package/dist/lib/hashing-utils.js.map +1 -1
  65. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/destinations/salesforce-marketing-cloud/dataExtension/index.ts"],"names":[],"mappings":";;AAGA,wDAA2G;AAC3G,wDAA6E;AAE7E,MAAM,MAAM,GAAwC;IAClD,KAAK,EAAE,8BAA8B;IACrC,WAAW,EAAE,sFAAsF;IACnG,MAAM,EAAE;QACN,GAAG,EAAE,qBAAG;QACR,EAAE,EAAE,oBAAE;QACN,IAAI,EAAE,EAAE,GAAG,sBAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;QACjC,MAAM,EAAE,4CAA0B;QAClC,eAAe,EAAE,iCAAe;QAChC,UAAU,EAAE,4BAAU;KACvB;IACD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE;QAChD,OAAO,IAAA,4BAAU,EAAC,OAAO,EAAE,QAAQ,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,CAAC,CAAA;IAC3D,CAAC;IACD,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE;QACrD,OAAO,IAAA,8CAA4B,EAAC,OAAO,EAAE,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;IAC3E,CAAC;CACF,CAAA;AAED,kBAAe,MAAM,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/destinations/salesforce-marketing-cloud/dataExtension/index.ts"],"names":[],"mappings":";;AAGA,wDAQ2B;AAC3B,wDAAqG;AAErG,MAAM,MAAM,GAAwC;IAClD,KAAK,EAAE,8BAA8B;IACrC,WAAW,EAAE,sFAAsF;IACnG,MAAM,EAAE;QACN,GAAG,EAAE,qBAAG;QACR,EAAE,EAAE,oBAAE;QACN,IAAI,EAAE,EAAE,GAAG,sBAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;QACjC,MAAM,EAAE,4CAA0B;QAClC,eAAe,EAAE,iCAAe;QAChC,UAAU,EAAE,4BAAU;KACvB;IACD,aAAa,EAAE;QACb,IAAI,EAAE;YACJ,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE;gBACjD,MAAM,eAAe,GAClB,OAAe,CAAC,aAAa,EAAE,OAAO,EAAE,EAAE,IAAK,OAAe,CAAC,iBAAiB,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAA;gBACtG,OAAO,MAAM,IAAA,wCAAsB,EAAC,OAAO,EAAE,QAAQ,CAAC,SAAS,EAAE,QAAQ,EAAE,eAAe,EAAE,IAAI,CAAC,CAAA;YACnG,CAAC;SACF;QACD,MAAM,EAAE;YACN,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE;gBACjD,MAAM,eAAe,GAClB,OAAe,CAAC,aAAa,EAAE,OAAO,EAAE,EAAE,IAAK,OAAe,CAAC,iBAAiB,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAA;gBACtG,OAAO,MAAM,IAAA,wCAAsB,EAAC,OAAO,EAAE,QAAQ,CAAC,SAAS,EAAE,QAAQ,EAAE,eAAe,EAAE,KAAK,CAAC,CAAA;YACpG,CAAC;SACF;KACF;IACD,KAAK,EAAE;QACL,iBAAiB,EAAE;YACjB,GAAG,mCAAiB;SACrB;QACD,aAAa,EAAE;YACb,GAAG,mCAAiB;SACrB;KACF;IACD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE;QAC7D,MAAM,eAAe,GACnB,WAAW,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,IAAI,WAAW,EAAE,iBAAiB,EAAE,OAAO,EAAE,EAAE,IAAI,OAAO,CAAC,EAAE,CAAA;QACtG,MAAM,2BAA2B,GAAG,OAAO,CAAC,GAAG,CAAA;QAE/C,OAAO,IAAA,4BAAU,EAAC,OAAO,EAAE,QAAQ,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,EAAE,eAAe,EAAE,2BAA2B,CAAC,CAAA;IACzG,CAAC;IACD,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE;QAClE,MAAM,eAAe,GACnB,WAAW,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,IAAI,WAAW,EAAE,iBAAiB,EAAE,OAAO,EAAE,EAAE,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;QACzG,MAAM,2BAA2B,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAA;QAElD,OAAO,IAAA,8CAA4B,EACjC,OAAO,EACP,QAAQ,CAAC,SAAS,EAClB,OAAO,EACP,eAAe,EACf,2BAA2B,CAC5B,CAAA;IACH,CAAC;CACF,CAAA;AAED,kBAAe,MAAM,CAAA"}
@@ -1,5 +1,14 @@
1
- import { RequestClient, MultiStatusResponse, ModifiedResponse } from '@segment/actions-core';
1
+ import { RequestClient, MultiStatusResponse, ModifiedResponse, ActionHookResponse, DynamicFieldResponse } from '@segment/actions-core';
2
2
  import { Payload as payload_dataExtension } from './dataExtension/generated-types';
3
3
  import { Payload as payload_contactDataExtension } from './contactDataExtension/generated-types';
4
- export declare function upsertRows(request: RequestClient, subdomain: String, payloads: payload_dataExtension[] | payload_contactDataExtension[]): Promise<ModifiedResponse<unknown>>;
5
- export declare function executeUpsertWithMultiStatus(request: RequestClient, subdomain: String, payloads: payload_dataExtension[] | payload_contactDataExtension[]): Promise<MultiStatusResponse>;
4
+ import { OnMappingSaveInputs } from './dataExtension/generated-types';
5
+ import { Settings } from './generated-types';
6
+ export declare function upsertRows(request: RequestClient, subdomain: String, payloads: payload_dataExtension[] | payload_contactDataExtension[], dataExtensionId?: string, dataExtensionKey?: string): Promise<ModifiedResponse<unknown>>;
7
+ export declare function executeUpsertWithMultiStatus(request: RequestClient, subdomain: String, payloads: payload_dataExtension[] | payload_contactDataExtension[], dataExtensionId?: string, dataExtensionKey?: string): Promise<MultiStatusResponse>;
8
+ export declare const selectOrCreateDataExtension: (request: RequestClient, subdomain: string, hookInputs: OnMappingSaveInputs, settings: Settings) => Promise<ActionHookResponse<{
9
+ id: string;
10
+ name: string;
11
+ }>>;
12
+ export declare const getDataExtensions: (request: RequestClient, subdomain: string, settings: Settings, query?: string) => Promise<DynamicFieldResponse>;
13
+ export declare const getDataExtensionFields: (request: RequestClient, subdomain: string, settings: Settings, dataExtensionID: string, primaryKey: boolean) => Promise<DynamicFieldResponse>;
14
+ export declare const getCategories: (request: RequestClient, settings: Settings) => Promise<DynamicFieldResponse>;
@@ -1,7 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.executeUpsertWithMultiStatus = exports.upsertRows = void 0;
3
+ exports.getCategories = exports.getDataExtensionFields = exports.getDataExtensions = exports.selectOrCreateDataExtension = exports.executeUpsertWithMultiStatus = exports.upsertRows = void 0;
4
4
  const actions_core_1 = require("@segment/actions-core");
5
+ const xml_js_1 = require("xml-js");
5
6
  function generateRows(payloads) {
6
7
  const rows = [];
7
8
  payloads.forEach((payload) => {
@@ -12,32 +13,31 @@ function generateRows(payloads) {
12
13
  });
13
14
  return rows;
14
15
  }
15
- function upsertRows(request, subdomain, payloads) {
16
- const { key, id } = payloads[0];
17
- if (!key && !id) {
16
+ function upsertRows(request, subdomain, payloads, dataExtensionId, dataExtensionKey) {
17
+ if (!dataExtensionKey && !dataExtensionId) {
18
18
  throw new actions_core_1.IntegrationError(`In order to send an event to a data extension either Data Extension ID or Data Extension Key must be defined.`, 'Misconfigured required field', 400);
19
19
  }
20
20
  const rows = generateRows(payloads);
21
- if (key) {
22
- return request(`https://${subdomain}.rest.marketingcloudapis.com/hub/v1/dataevents/key:${key}/rowset`, {
21
+ if (dataExtensionKey) {
22
+ return request(`https://${subdomain}.rest.marketingcloudapis.com/hub/v1/dataevents/key:${dataExtensionKey}/rowset`, {
23
23
  method: 'POST',
24
24
  json: rows
25
25
  });
26
26
  }
27
27
  else {
28
- return request(`https://${subdomain}.rest.marketingcloudapis.com/hub/v1/dataevents/${id}/rowset`, {
28
+ return request(`https://${subdomain}.rest.marketingcloudapis.com/hub/v1/dataevents/${dataExtensionId}/rowset`, {
29
29
  method: 'POST',
30
30
  json: rows
31
31
  });
32
32
  }
33
33
  }
34
34
  exports.upsertRows = upsertRows;
35
- async function executeUpsertWithMultiStatus(request, subdomain, payloads) {
35
+ async function executeUpsertWithMultiStatus(request, subdomain, payloads, dataExtensionId, dataExtensionKey) {
36
36
  const multiStatusResponse = new actions_core_1.MultiStatusResponse();
37
37
  let response;
38
38
  const rows = generateRows(payloads);
39
39
  try {
40
- response = await upsertRows(request, subdomain, payloads);
40
+ response = await upsertRows(request, subdomain, payloads, dataExtensionId, dataExtensionKey);
41
41
  if (response) {
42
42
  const responseData = response.data;
43
43
  payloads.forEach((_, index) => {
@@ -80,4 +80,307 @@ async function executeUpsertWithMultiStatus(request, subdomain, payloads) {
80
80
  return multiStatusResponse;
81
81
  }
82
82
  exports.executeUpsertWithMultiStatus = executeUpsertWithMultiStatus;
83
+ const getAccessToken = async (request, settings) => {
84
+ const baseUrl = `https://${settings.subdomain}.auth.marketingcloudapis.com/v2/token`;
85
+ const res = await request(`${baseUrl}`, {
86
+ method: 'POST',
87
+ body: new URLSearchParams({
88
+ account_id: settings.account_id,
89
+ client_id: settings.client_id,
90
+ client_secret: settings.client_secret,
91
+ grant_type: 'client_credentials'
92
+ })
93
+ });
94
+ return { accessToken: res.data.access_token, soapInstanceUrl: res.data.soap_instance_url };
95
+ };
96
+ const dataExtensionRequest = async (request, hookInputs, auth) => {
97
+ if (!hookInputs) {
98
+ return { id: '', key: '', error: 'No inputs provided' };
99
+ }
100
+ if (!hookInputs.columns) {
101
+ return { id: '', key: '', error: 'No columns provided' };
102
+ }
103
+ const fields = hookInputs.columns.map((column, i) => {
104
+ return {
105
+ name: column.name,
106
+ type: column.type,
107
+ isNullable: column.isNullable,
108
+ isPrimaryKey: column.isPrimaryKey,
109
+ length: column.length,
110
+ scale: column.scale,
111
+ description: column.description || '',
112
+ ordinal: i,
113
+ isTemplateField: false,
114
+ isHidden: false,
115
+ isReadOnly: false,
116
+ isInheritable: false,
117
+ isOverridable: false,
118
+ mustOverride: false
119
+ };
120
+ });
121
+ try {
122
+ const response = await request(`https://${auth.subdomain}.rest.marketingcloudapis.com/data/v1/customobjects`, {
123
+ method: 'POST',
124
+ json: {
125
+ name: hookInputs.name,
126
+ description: hookInputs.description,
127
+ categoryId: hookInputs.categoryId,
128
+ isSendable: hookInputs.isSendable,
129
+ sendableCustomObjectField: hookInputs.sendableCustomObjectField,
130
+ sendableSubscriberField: hookInputs.sendableSubscriberField,
131
+ fields
132
+ },
133
+ headers: {
134
+ authorization: `Bearer ${auth.accessToken}`
135
+ }
136
+ });
137
+ if (response.status !== 201) {
138
+ return { id: '', key: '', error: `Failed to create Data Extension` };
139
+ }
140
+ return {
141
+ id: response.data.id,
142
+ key: response.data.key
143
+ };
144
+ }
145
+ catch (error) {
146
+ return { id: '', key: '', error: error.response.data.message };
147
+ }
148
+ };
149
+ async function createDataExtension(request, subdomain, hookInputs, settings) {
150
+ if (!hookInputs) {
151
+ return {
152
+ error: { message: 'No inputs provided', code: 'ERROR' }
153
+ };
154
+ }
155
+ const { accessToken } = await getAccessToken(request, settings);
156
+ const { id, key, error } = await dataExtensionRequest(request, hookInputs, { subdomain, accessToken });
157
+ if (error || !id || !key) {
158
+ return {
159
+ error: { message: error || 'Unknown Error', code: 'ERROR' }
160
+ };
161
+ }
162
+ return {
163
+ successMessage: `Data Extension ${hookInputs.name} created successfully with External Key ${key}`,
164
+ savedData: {
165
+ id,
166
+ name: hookInputs.name
167
+ }
168
+ };
169
+ }
170
+ const selectDataExtensionRequest = async (request, hookInputs, auth) => {
171
+ if (!hookInputs) {
172
+ return { id: '', name: '', error: 'No inputs provided' };
173
+ }
174
+ if (!hookInputs.dataExtensionId) {
175
+ return { id: '', name: '', error: 'No Data Extension Id provided' };
176
+ }
177
+ try {
178
+ const response = await request(`https://${auth.subdomain}.rest.marketingcloudapis.com/data/v1/customobjects/${hookInputs.dataExtensionId}`, {
179
+ method: 'GET',
180
+ headers: {
181
+ authorization: `Bearer ${auth.accessToken}`
182
+ }
183
+ });
184
+ if (response.status !== 200) {
185
+ return { id: '', name: '', error: `Failed to select Data Extension` };
186
+ }
187
+ return {
188
+ id: response.data.id,
189
+ name: response.data.name
190
+ };
191
+ }
192
+ catch (err) {
193
+ return { id: '', name: '', error: err.response.data.message };
194
+ }
195
+ };
196
+ async function selectDataExtension(request, subdomain, hookInputs, settings) {
197
+ if (!hookInputs) {
198
+ return {
199
+ error: { message: 'No inputs provided', code: 'ERROR' }
200
+ };
201
+ }
202
+ const { accessToken } = await getAccessToken(request, settings);
203
+ const { id, name, error } = await selectDataExtensionRequest(request, hookInputs, { subdomain, accessToken });
204
+ if (error || !id) {
205
+ return {
206
+ error: { message: error || 'Unknown Error', code: 'ERROR' }
207
+ };
208
+ }
209
+ return {
210
+ successMessage: `Data Extension ${name} selected successfully with External ID ${id}`,
211
+ savedData: {
212
+ id,
213
+ name: name
214
+ }
215
+ };
216
+ }
217
+ const selectOrCreateDataExtension = async (request, subdomain, hookInputs, settings) => {
218
+ if (hookInputs.operation === 'create') {
219
+ return await createDataExtension(request, subdomain, hookInputs, settings);
220
+ }
221
+ else if (hookInputs.operation === 'select') {
222
+ return await selectDataExtension(request, subdomain, hookInputs, settings);
223
+ }
224
+ return {
225
+ error: { message: 'Invalid operation', code: 'ERROR' }
226
+ };
227
+ };
228
+ exports.selectOrCreateDataExtension = selectOrCreateDataExtension;
229
+ const getDataExtensionsRequest = async (request, searchQuery, auth) => {
230
+ try {
231
+ const response = await request(`https://${auth.subdomain}.rest.marketingcloudapis.com/data/v1/customobjects`, {
232
+ method: 'get',
233
+ searchParams: {
234
+ $search: searchQuery
235
+ },
236
+ headers: {
237
+ authorization: `Bearer ${auth.accessToken}`
238
+ }
239
+ });
240
+ if (response.status !== 200) {
241
+ return { error: { message: 'Failed to fetch Data Extensions', code: 'BAD_REQUEST' } };
242
+ }
243
+ const choices = response.data.items;
244
+ return {
245
+ results: choices.map((choice) => {
246
+ return {
247
+ value: choice.id,
248
+ label: choice.name
249
+ };
250
+ })
251
+ };
252
+ }
253
+ catch (err) {
254
+ return { error: { message: err.response.data.message, code: 'BAD_REQUEST' } };
255
+ }
256
+ };
257
+ const getDataExtensions = async (request, subdomain, settings, query) => {
258
+ let searchQuery = '_';
259
+ if (query && query !== '') {
260
+ searchQuery = query;
261
+ }
262
+ const { accessToken } = await getAccessToken(request, settings);
263
+ const { results, error } = await getDataExtensionsRequest(request, searchQuery, { subdomain, accessToken });
264
+ if (error) {
265
+ return {
266
+ choices: [],
267
+ error: error
268
+ };
269
+ }
270
+ if (!results || (Array.isArray(results) && results.length === 0)) {
271
+ return {
272
+ choices: [],
273
+ error: { message: 'No Data Extensions found', code: 'NOT_FOUND' }
274
+ };
275
+ }
276
+ return {
277
+ choices: results
278
+ };
279
+ };
280
+ exports.getDataExtensions = getDataExtensions;
281
+ const getDataExtensionFieldsRequest = async (request, dataExtensionId, auth, primaryKey) => {
282
+ try {
283
+ const response = await request(`https://${auth.subdomain}.rest.marketingcloudapis.com/data/v1/customobjects/${dataExtensionId}/fields`, {
284
+ method: 'GET',
285
+ headers: {
286
+ authorization: `Bearer ${auth.accessToken}`
287
+ }
288
+ });
289
+ if (response.status !== 200) {
290
+ return { error: { message: 'Failed to fetch Data Extension fields', code: 'BAD_REQUEST' } };
291
+ }
292
+ const filteredItems = response.data.fields.filter((field) => field.isPrimaryKey === primaryKey);
293
+ const choices = filteredItems.map((field) => {
294
+ return { value: field.name, label: field.name };
295
+ });
296
+ return { results: choices };
297
+ }
298
+ catch (err) {
299
+ return { error: { message: err.response.data.message, code: 'BAD_REQUEST' } };
300
+ }
301
+ };
302
+ const getDataExtensionFields = async (request, subdomain, settings, dataExtensionID, primaryKey) => {
303
+ if (!dataExtensionID) {
304
+ return { choices: [], error: { message: 'No Data Extension ID provided', code: 'BAD_REQUEST' } };
305
+ }
306
+ const { accessToken } = await getAccessToken(request, settings);
307
+ const { results, error } = await getDataExtensionFieldsRequest(request, dataExtensionID, { subdomain, accessToken }, primaryKey);
308
+ if (error) {
309
+ return {
310
+ choices: [],
311
+ error: error
312
+ };
313
+ }
314
+ if (!results || (Array.isArray(results) && results.length === 0)) {
315
+ return {
316
+ choices: [],
317
+ error: { message: 'No Data Extension fields found', code: 'NOT_FOUND' }
318
+ };
319
+ }
320
+ return {
321
+ choices: results
322
+ };
323
+ };
324
+ exports.getDataExtensionFields = getDataExtensionFields;
325
+ const getCategoriesRequest = async (request, auth) => {
326
+ try {
327
+ const response = await request(`${auth.soapInstanceUrl}/Service.asmx`, {
328
+ method: 'POST',
329
+ headers: {
330
+ 'Content-Type': 'text/xml',
331
+ SOAPAction: 'Retrieve'
332
+ },
333
+ body: `<?xml version="1.0" encoding="UTF-8"?>
334
+ <SOAP-ENV:Envelope
335
+ xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
336
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
337
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
338
+ <SOAP-ENV:Header>
339
+ <fueloauth xmlns="http://exacttarget.com">${auth.accessToken}</fueloauth>
340
+ </SOAP-ENV:Header>
341
+ <SOAP-ENV:Body>
342
+ <RetrieveRequestMsg
343
+ xmlns="http://exacttarget.com/wsdl/partnerAPI">
344
+ <RetrieveRequest>
345
+ <ObjectType>DataFolder</ObjectType>
346
+ <Properties>ID</Properties>
347
+ <Properties>Name</Properties>
348
+ <Properties>ContentType</Properties>
349
+ </RetrieveRequest>
350
+ </RetrieveRequestMsg>
351
+ </SOAP-ENV:Body>
352
+ </SOAP-ENV:Envelope>
353
+ `
354
+ });
355
+ const convert = (0, xml_js_1.xml2js)(response.content, { compact: true });
356
+ const items = convert['soap:Envelope']['soap:Body']['RetrieveResponseMsg']['Results'].map((item) => {
357
+ const type = item.ContentType._text;
358
+ return {
359
+ label: item.Name._text,
360
+ value: item.ID._text,
361
+ description: `ContentType: ${type}`
362
+ };
363
+ });
364
+ return {
365
+ results: items
366
+ };
367
+ }
368
+ catch (err) {
369
+ return { error: { message: err.response.data.message, code: 'BAD_REQUEST' } };
370
+ }
371
+ };
372
+ const getCategories = async (request, settings) => {
373
+ const { accessToken, soapInstanceUrl } = await getAccessToken(request, settings);
374
+ const { results, error } = await getCategoriesRequest(request, { soapInstanceUrl, accessToken });
375
+ if (error) {
376
+ return {
377
+ choices: [],
378
+ error: error
379
+ };
380
+ }
381
+ return {
382
+ choices: results || []
383
+ };
384
+ };
385
+ exports.getCategories = getCategories;
83
386
  //# sourceMappingURL=sfmc-operations.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sfmc-operations.js","sourceRoot":"","sources":["../../../src/destinations/salesforce-marketing-cloud/sfmc-operations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sfmc-operations.js","sourceRoot":"","sources":["../../../src/destinations/salesforce-marketing-cloud/sfmc-operations.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { ActionHookDefinition } from '@segment/actions-core/destination-kit';
1
2
  import { InputField } from '@segment/actions-core/destination-kit/types';
2
3
  export declare const contactKey: InputField;
3
4
  export declare const contactKeyAPIEvent: InputField;
@@ -10,3 +11,4 @@ export declare const eventDefinitionKey: InputField;
10
11
  export declare const eventData: InputField;
11
12
  export declare const enable_batching: InputField;
12
13
  export declare const batch_size: InputField;
14
+ export declare const dataExtensionHook: ActionHookDefinition<any, any, any, any, any>;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.batch_size = exports.enable_batching = exports.eventData = exports.eventDefinitionKey = exports.values_dataExtensionFields = exports.values_contactFields = exports.keys = exports.id = exports.key = exports.contactKeyAPIEvent = exports.contactKey = void 0;
3
+ exports.dataExtensionHook = exports.batch_size = exports.enable_batching = exports.eventData = exports.eventDefinitionKey = exports.values_dataExtensionFields = exports.values_contactFields = exports.keys = exports.id = exports.key = exports.contactKeyAPIEvent = exports.contactKey = void 0;
4
+ const sfmc_operations_1 = require("./sfmc-operations");
4
5
  exports.contactKey = {
5
6
  label: 'Contact Key',
6
7
  description: 'The unique identifier that you assign to a contact. This will be used to create a contact if one does not already exist with this Contact Key.',
@@ -15,14 +16,16 @@ exports.contactKeyAPIEvent = {
15
16
  required: true
16
17
  };
17
18
  exports.key = {
18
- label: 'Data Extension Key',
19
- description: 'The external key of the data extension that you want to store information in. The data extension must be predefined in SFMC. The external key is required if a Data Extension ID is not provided.',
20
- type: 'string'
19
+ label: 'DEPRECATED: Data Extension Key',
20
+ description: 'Note: This field should be considered deprecated in favor of the hook input field "Data Extension ID". For backwards compatibility the field will not be deleted, and is instead hidden. The external key of the data extension that you want to store information in. The data extension must be predefined in SFMC. The external key is required if a Data Extension ID is not provided.',
21
+ type: 'string',
22
+ unsafe_hidden: true
21
23
  };
22
24
  exports.id = {
23
- label: 'Data Extension ID',
24
- description: 'The ID of the data extension that you want to store information in. The data extension must be predefined in SFMC. The ID is required if a Data Extension Key is not provided.',
25
- type: 'string'
25
+ label: 'DEPRECATED: Data Extension ID',
26
+ description: 'Note: This field should be considered deprecated in favor of the hook input field "Data Extension ID". For backwards compatibility the field will not be deleted, and is instead hidden. The ID of the data extension that you want to store information in. The data extension must be predefined in SFMC. The ID is required if a Data Extension Key is not provided.',
27
+ type: 'string',
28
+ unsafe_hidden: true
26
29
  };
27
30
  exports.keys = {
28
31
  label: 'Data Extension Primary Keys',
@@ -30,21 +33,24 @@ exports.keys = {
30
33
  type: 'object',
31
34
  required: true,
32
35
  defaultObjectUI: 'keyvalue:only',
33
- additionalProperties: true
36
+ additionalProperties: true,
37
+ dynamic: true
34
38
  };
35
39
  exports.values_contactFields = {
36
40
  label: 'Contact Fields',
37
41
  description: 'The fields in the data extension that contain data about a contact, such as Email, Last Name, etc. Fields must be created in the data extension before sending data for it. On the left-hand side, input the SFMC field name exactly how it appears in the data extension. On the right-hand side, map the Segment field that contains the corresponding value.',
38
42
  type: 'object',
39
43
  defaultObjectUI: 'keyvalue:only',
40
- required: true
44
+ required: true,
45
+ dynamic: true
41
46
  };
42
47
  exports.values_dataExtensionFields = {
43
48
  label: 'Data Extension Fields',
44
49
  description: 'The fields in the data extension that contain data about an event, such as Product Name, Revenue, Event Time, etc. Fields must be created in the data extension before sending data for it. On the left-hand side, input the SFMC field name exactly how it appears in the data extension. On the right-hand side, map the Segment field that contains the corresponding value.',
45
50
  type: 'object',
46
51
  defaultObjectUI: 'keyvalue:only',
47
- required: true
52
+ required: true,
53
+ dynamic: true
48
54
  };
49
55
  exports.eventDefinitionKey = {
50
56
  label: 'Event Definition Key',
@@ -72,4 +78,158 @@ exports.batch_size = {
72
78
  unsafe_hidden: true,
73
79
  default: 10
74
80
  };
81
+ const CREATE_OPERATION = {
82
+ match: 'all',
83
+ conditions: [{ fieldKey: 'operation', operator: 'is', value: 'create' }]
84
+ };
85
+ const SELECT_OPERATION = {
86
+ match: 'all',
87
+ conditions: [{ fieldKey: 'operation', operator: 'is', value: 'select' }]
88
+ };
89
+ const IS_SENDABLE = {
90
+ match: 'all',
91
+ conditions: [{ fieldKey: 'isSendable', operator: 'is', value: true }]
92
+ };
93
+ exports.dataExtensionHook = {
94
+ label: 'Create or Select Data Extension',
95
+ description: 'Connect to an existing data extension or create a new one in Salesforce Marketing Cloud.',
96
+ inputFields: {
97
+ operation: {
98
+ label: 'Operation',
99
+ description: 'Whether to create a new data extension or select an existing one for data delivery.',
100
+ type: 'string',
101
+ choices: [
102
+ { label: 'Create a new Data Extension', value: 'create' },
103
+ { label: 'Select an existing Data Extension', value: 'select' }
104
+ ],
105
+ required: true
106
+ },
107
+ dataExtensionId: {
108
+ label: 'Data Extension ID',
109
+ description: 'The identifier for the data extension.',
110
+ type: 'string',
111
+ depends_on: SELECT_OPERATION,
112
+ dynamic: async (request, { dynamicFieldContext, settings }) => {
113
+ const query = dynamicFieldContext?.query;
114
+ return await (0, sfmc_operations_1.getDataExtensions)(request, settings.subdomain, settings, query);
115
+ }
116
+ },
117
+ categoryId: {
118
+ label: 'Category ID (Folder ID)',
119
+ description: 'The identifier for the folder that contains the data extension.',
120
+ type: 'string',
121
+ required: CREATE_OPERATION,
122
+ depends_on: CREATE_OPERATION,
123
+ dynamic: async (request, { settings }) => {
124
+ return await (0, sfmc_operations_1.getCategories)(request, settings);
125
+ }
126
+ },
127
+ name: {
128
+ label: 'Data Extension Name',
129
+ description: 'The name of the data extension.',
130
+ type: 'string',
131
+ required: CREATE_OPERATION,
132
+ depends_on: CREATE_OPERATION
133
+ },
134
+ description: {
135
+ label: 'Data Extension Description',
136
+ description: 'The description of the data extension.',
137
+ type: 'string',
138
+ depends_on: CREATE_OPERATION
139
+ },
140
+ isSendable: {
141
+ label: 'Is Sendable',
142
+ type: 'boolean',
143
+ depends_on: CREATE_OPERATION,
144
+ description: 'Indicates whether the custom object can be used to send messages. If the value of this property is true, then the custom object is sendable'
145
+ },
146
+ sendableCustomObjectField: {
147
+ label: 'Sendable Custom Object Field',
148
+ description: 'The field on this data extension which is sendable. This must be a field that is present on this data extension.',
149
+ type: 'string',
150
+ depends_on: IS_SENDABLE,
151
+ required: IS_SENDABLE
152
+ },
153
+ sendableSubscriberField: {
154
+ label: 'Sendable Subscriber Field',
155
+ description: 'The relationship with "Subscribers" for the Sendable Custom Object Field.',
156
+ type: 'string',
157
+ depends_on: IS_SENDABLE,
158
+ required: IS_SENDABLE,
159
+ choices: [
160
+ { label: 'Subscriber Key', value: '_SubscriberKey' },
161
+ { label: 'Subscriber ID', value: '_SubscriberID' }
162
+ ]
163
+ },
164
+ columns: {
165
+ label: 'Data Extension Fields',
166
+ description: 'A list of fields to create in the data extension.',
167
+ type: 'object',
168
+ multiple: true,
169
+ defaultObjectUI: 'arrayeditor',
170
+ additionalProperties: true,
171
+ required: CREATE_OPERATION,
172
+ depends_on: CREATE_OPERATION,
173
+ properties: {
174
+ name: {
175
+ label: 'Field Name',
176
+ description: 'The name of the field.',
177
+ type: 'string',
178
+ required: true
179
+ },
180
+ type: {
181
+ label: 'Field Type',
182
+ description: 'The data type of the field.',
183
+ type: 'string',
184
+ required: true,
185
+ choices: ['Text', 'Number', 'Date', 'Boolean', 'EmailAddress', 'Phone', 'Decimal', 'Locale']
186
+ },
187
+ isNullable: {
188
+ label: 'Is Nullable',
189
+ description: 'Whether the field can be null.',
190
+ type: 'boolean',
191
+ required: true
192
+ },
193
+ isPrimaryKey: {
194
+ label: 'Is Primary Key',
195
+ description: 'Whether the field is a primary key.',
196
+ type: 'boolean',
197
+ required: true
198
+ },
199
+ length: {
200
+ label: 'Field Length',
201
+ description: 'The length of the field. Required for non-boolean fields',
202
+ type: 'integer'
203
+ },
204
+ scale: {
205
+ label: 'Decimal Scale',
206
+ description: 'The scale of the field. Required for Decimal fields',
207
+ type: 'integer'
208
+ },
209
+ description: {
210
+ label: 'Field Description',
211
+ description: 'The description of the field.',
212
+ type: 'string'
213
+ }
214
+ }
215
+ }
216
+ },
217
+ performHook: async (request, { settings, hookInputs }) => {
218
+ return await (0, sfmc_operations_1.selectOrCreateDataExtension)(request, settings.subdomain, hookInputs, settings);
219
+ },
220
+ outputTypes: {
221
+ id: {
222
+ label: 'Data Extension ID',
223
+ description: 'The identifier for the data extension.',
224
+ type: 'string',
225
+ required: true
226
+ },
227
+ name: {
228
+ label: 'Data Extension Name',
229
+ description: 'The name of the data extension.',
230
+ type: 'string',
231
+ required: true
232
+ }
233
+ }
234
+ };
75
235
  //# sourceMappingURL=sfmc-properties.js.map