@segment/action-destinations 3.271.0 → 3.272.0-staging-bbcb77c81

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 (161) hide show
  1. package/dist/destinations/amazon-ads/generated-types.d.ts +3 -0
  2. package/dist/destinations/amazon-ads/generated-types.js +3 -0
  3. package/dist/destinations/amazon-ads/generated-types.js.map +1 -0
  4. package/dist/destinations/amazon-ads/index.d.ts +4 -0
  5. package/dist/destinations/amazon-ads/index.js +87 -0
  6. package/dist/destinations/amazon-ads/index.js.map +1 -0
  7. package/dist/destinations/amazon-ads/syncAudiences/generated-types.d.ts +2 -0
  8. package/dist/destinations/amazon-ads/syncAudiences/generated-types.js +3 -0
  9. package/dist/destinations/amazon-ads/syncAudiences/generated-types.js.map +1 -0
  10. package/dist/destinations/amazon-ads/syncAudiences/index.d.ts +5 -0
  11. package/dist/destinations/amazon-ads/syncAudiences/index.js +15 -0
  12. package/dist/destinations/amazon-ads/syncAudiences/index.js.map +1 -0
  13. package/dist/destinations/amazon-ads/types.d.ts +22 -0
  14. package/dist/destinations/amazon-ads/types.js +11 -0
  15. package/dist/destinations/amazon-ads/types.js.map +1 -0
  16. package/dist/destinations/amazon-ads/utils.d.ts +31 -0
  17. package/dist/destinations/amazon-ads/utils.js +18 -0
  18. package/dist/destinations/amazon-ads/utils.js.map +1 -0
  19. package/dist/destinations/amazon-amc/index.js +20 -8
  20. package/dist/destinations/amazon-amc/index.js.map +1 -1
  21. package/dist/destinations/amazon-amc/syncAudiencesToDSP/index.js +1 -1
  22. package/dist/destinations/amazon-amc/syncAudiencesToDSP/index.js.map +1 -1
  23. package/dist/destinations/contentstack/constants.d.ts +3 -0
  24. package/dist/destinations/contentstack/constants.js +7 -0
  25. package/dist/destinations/contentstack/constants.js.map +1 -0
  26. package/dist/destinations/dynamic-yield-audiences/syncAudience/types.d.ts +22 -0
  27. package/dist/destinations/dynamic-yield-audiences/syncAudience/types.js +3 -0
  28. package/dist/destinations/dynamic-yield-audiences/syncAudience/types.js.map +1 -0
  29. package/dist/destinations/dynamic-yield-audiences/types.d.ts +8 -0
  30. package/dist/destinations/dynamic-yield-audiences/types.js +12 -0
  31. package/dist/destinations/dynamic-yield-audiences/types.js.map +1 -0
  32. package/dist/destinations/engage/utils/track.d.ts +17 -17
  33. package/dist/destinations/klaviyo/addProfileToList/generated-types.d.ts +18 -0
  34. package/dist/destinations/klaviyo/addProfileToList/index.js +10 -3
  35. package/dist/destinations/klaviyo/addProfileToList/index.js.map +1 -1
  36. package/dist/destinations/klaviyo/functions.d.ts +2 -2
  37. package/dist/destinations/klaviyo/functions.js +4 -3
  38. package/dist/destinations/klaviyo/functions.js.map +1 -1
  39. package/dist/destinations/klaviyo/orderCompleted/generated-types.d.ts +3 -5
  40. package/dist/destinations/klaviyo/orderCompleted/index.js +15 -16
  41. package/dist/destinations/klaviyo/orderCompleted/index.js.map +1 -1
  42. package/dist/destinations/klaviyo/properties.d.ts +7 -0
  43. package/dist/destinations/klaviyo/properties.js +92 -2
  44. package/dist/destinations/klaviyo/properties.js.map +1 -1
  45. package/dist/destinations/klaviyo/trackEvent/generated-types.d.ts +3 -5
  46. package/dist/destinations/klaviyo/trackEvent/index.js +15 -16
  47. package/dist/destinations/klaviyo/trackEvent/index.js.map +1 -1
  48. package/dist/destinations/klaviyo/types.d.ts +9 -3
  49. package/dist/destinations/klaviyo/upsertProfile/index.js +2 -1
  50. package/dist/destinations/klaviyo/upsertProfile/index.js.map +1 -1
  51. package/dist/destinations/responsys/asyncMergePetRecords/generated-types.d.ts +14 -0
  52. package/dist/destinations/responsys/asyncMergePetRecords/generated-types.js +3 -0
  53. package/dist/destinations/responsys/asyncMergePetRecords/generated-types.js.map +1 -0
  54. package/dist/destinations/responsys/asyncMergePetRecords/index.d.ts +5 -0
  55. package/dist/destinations/responsys/asyncMergePetRecords/index.js +113 -0
  56. package/dist/destinations/responsys/asyncMergePetRecords/index.js.map +1 -0
  57. package/dist/destinations/responsys/asyncMergeProfileListMembers/generated-types.d.ts +20 -0
  58. package/dist/destinations/responsys/asyncMergeProfileListMembers/generated-types.js +3 -0
  59. package/dist/destinations/responsys/asyncMergeProfileListMembers/generated-types.js.map +1 -0
  60. package/dist/destinations/responsys/asyncMergeProfileListMembers/index.d.ts +5 -0
  61. package/dist/destinations/responsys/asyncMergeProfileListMembers/index.js +174 -0
  62. package/dist/destinations/responsys/asyncMergeProfileListMembers/index.js.map +1 -0
  63. package/dist/destinations/responsys/rsp-operations.d.ts +14 -0
  64. package/dist/destinations/responsys/rsp-operations.js +33 -0
  65. package/dist/destinations/responsys/rsp-operations.js.map +1 -0
  66. package/dist/destinations/responsys/rsp-properties.d.ts +4 -0
  67. package/dist/destinations/responsys/rsp-properties.js +27 -0
  68. package/dist/destinations/responsys/rsp-properties.js.map +1 -0
  69. package/dist/destinations/responsys-cloud/generated-types.d.ts +20 -0
  70. package/dist/destinations/responsys-cloud/generated-types.js +3 -0
  71. package/dist/destinations/responsys-cloud/generated-types.js.map +1 -0
  72. package/dist/destinations/responsys-cloud/index.d.ts +4 -0
  73. package/dist/destinations/responsys-cloud/index.js +207 -0
  74. package/dist/destinations/responsys-cloud/index.js.map +1 -0
  75. package/dist/destinations/responsys-cloud/sendAudience/generated-types.d.ts +16 -0
  76. package/dist/destinations/responsys-cloud/sendAudience/generated-types.js +3 -0
  77. package/dist/destinations/responsys-cloud/sendAudience/generated-types.js.map +1 -0
  78. package/dist/destinations/responsys-cloud/sendAudience/index.d.ts +5 -0
  79. package/dist/destinations/responsys-cloud/sendAudience/index.js +109 -0
  80. package/dist/destinations/responsys-cloud/sendAudience/index.js.map +1 -0
  81. package/dist/destinations/responsys-cloud/sendCustomTraits/generated-types.d.ts +11 -0
  82. package/dist/destinations/responsys-cloud/sendCustomTraits/generated-types.js +3 -0
  83. package/dist/destinations/responsys-cloud/sendCustomTraits/generated-types.js.map +1 -0
  84. package/dist/destinations/responsys-cloud/sendCustomTraits/index.d.ts +5 -0
  85. package/dist/destinations/responsys-cloud/sendCustomTraits/index.js +72 -0
  86. package/dist/destinations/responsys-cloud/sendCustomTraits/index.js.map +1 -0
  87. package/dist/destinations/responsys-cloud/shared_properties.d.ts +3 -0
  88. package/dist/destinations/responsys-cloud/shared_properties.js +19 -0
  89. package/dist/destinations/responsys-cloud/shared_properties.js.map +1 -0
  90. package/dist/destinations/responsys-cloud/types.d.ts +38 -0
  91. package/dist/destinations/responsys-cloud/types.js +3 -0
  92. package/dist/destinations/responsys-cloud/types.js.map +1 -0
  93. package/dist/destinations/responsys-cloud/upsertListMember/generated-types.d.ts +14 -0
  94. package/dist/destinations/responsys-cloud/upsertListMember/generated-types.js +3 -0
  95. package/dist/destinations/responsys-cloud/upsertListMember/generated-types.js.map +1 -0
  96. package/dist/destinations/responsys-cloud/upsertListMember/index.d.ts +5 -0
  97. package/dist/destinations/responsys-cloud/upsertListMember/index.js +85 -0
  98. package/dist/destinations/responsys-cloud/upsertListMember/index.js.map +1 -0
  99. package/dist/destinations/responsys-cloud/utils.d.ts +20 -0
  100. package/dist/destinations/responsys-cloud/utils.js +179 -0
  101. package/dist/destinations/responsys-cloud/utils.js.map +1 -0
  102. package/dist/destinations/segment/index.js +5 -1
  103. package/dist/destinations/segment/index.js.map +1 -1
  104. package/dist/destinations/segment/properties.d.ts +4 -0
  105. package/dist/destinations/segment/properties.js +14 -1
  106. package/dist/destinations/segment/properties.js.map +1 -1
  107. package/dist/destinations/segment/segment-properties.d.ts +1 -0
  108. package/dist/destinations/segment/segment-properties.js +9 -1
  109. package/dist/destinations/segment/segment-properties.js.map +1 -1
  110. package/dist/destinations/segment/sendGroup/generated-types.d.ts +3 -0
  111. package/dist/destinations/segment/sendGroup/index.js +5 -1
  112. package/dist/destinations/segment/sendGroup/index.js.map +1 -1
  113. package/dist/destinations/segment/sendIdentify/generated-types.d.ts +3 -0
  114. package/dist/destinations/segment/sendIdentify/index.js +5 -1
  115. package/dist/destinations/segment/sendIdentify/index.js.map +1 -1
  116. package/dist/destinations/segment/sendPage/generated-types.d.ts +3 -0
  117. package/dist/destinations/segment/sendPage/index.js +5 -1
  118. package/dist/destinations/segment/sendPage/index.js.map +1 -1
  119. package/dist/destinations/segment/sendScreen/generated-types.d.ts +3 -0
  120. package/dist/destinations/segment/sendScreen/index.js +5 -1
  121. package/dist/destinations/segment/sendScreen/index.js.map +1 -1
  122. package/dist/destinations/segment/sendTrack/generated-types.d.ts +3 -0
  123. package/dist/destinations/segment/sendTrack/index.js +5 -1
  124. package/dist/destinations/segment/sendTrack/index.js.map +1 -1
  125. package/dist/destinations/segment-profiles/segment-properties.d.ts +1 -0
  126. package/dist/destinations/segment-profiles/segment-properties.js +9 -1
  127. package/dist/destinations/segment-profiles/segment-properties.js.map +1 -1
  128. package/dist/destinations/segment-profiles/sendGroup/generated-types.d.ts +3 -0
  129. package/dist/destinations/segment-profiles/sendGroup/index.js +8 -2
  130. package/dist/destinations/segment-profiles/sendGroup/index.js.map +1 -1
  131. package/dist/destinations/segment-profiles/sendIdentify/generated-types.d.ts +3 -0
  132. package/dist/destinations/segment-profiles/sendIdentify/index.js +6 -2
  133. package/dist/destinations/segment-profiles/sendIdentify/index.js.map +1 -1
  134. package/dist/destinations/segment-profiles/sendSubscription/generated-types.d.ts +3 -0
  135. package/dist/destinations/segment-profiles/sendSubscription/index.js +6 -2
  136. package/dist/destinations/segment-profiles/sendSubscription/index.js.map +1 -1
  137. package/dist/destinations/segment-profiles/sendSubscription/subscription-properties.d.ts +1 -0
  138. package/dist/destinations/segment-profiles/sendSubscription/subscription-properties.js +9 -1
  139. package/dist/destinations/segment-profiles/sendSubscription/subscription-properties.js.map +1 -1
  140. package/dist/destinations/segment-profiles/sendTrack/generated-types.d.ts +3 -0
  141. package/dist/destinations/segment-profiles/sendTrack/index.js +7 -1
  142. package/dist/destinations/segment-profiles/sendTrack/index.js.map +1 -1
  143. package/dist/destinations/snap-conversions-api/_tests_/capiV2tests.d.ts +1 -0
  144. package/dist/destinations/snap-conversions-api/_tests_/capiV2tests.js +381 -0
  145. package/dist/destinations/snap-conversions-api/_tests_/capiV2tests.js.map +1 -0
  146. package/dist/destinations/snap-conversions-api/_tests_/capiV3tests.d.ts +1 -0
  147. package/dist/destinations/snap-conversions-api/_tests_/capiV3tests.js +581 -0
  148. package/dist/destinations/snap-conversions-api/_tests_/capiV3tests.js.map +1 -0
  149. package/dist/destinations/snap-conversions-api/reportConversionEvent/snap-capi-v2.d.ts +4 -0
  150. package/dist/destinations/snap-conversions-api/reportConversionEvent/snap-capi-v2.js +97 -0
  151. package/dist/destinations/snap-conversions-api/reportConversionEvent/snap-capi-v2.js.map +1 -0
  152. package/dist/destinations/snap-conversions-api/snap-capi-properties.d.ts +30 -0
  153. package/dist/destinations/snap-conversions-api/snap-capi-properties.js +316 -0
  154. package/dist/destinations/snap-conversions-api/snap-capi-properties.js.map +1 -0
  155. package/dist/destinations/tiktok-conversions/reportWebEvent/formatter.d.ts +3 -0
  156. package/dist/destinations/tiktok-conversions/reportWebEvent/formatter.js +34 -0
  157. package/dist/destinations/tiktok-conversions/reportWebEvent/formatter.js.map +1 -0
  158. package/dist/destinations/tiktok-offline-conversions/reportOfflineEvent/formatter.d.ts +3 -0
  159. package/dist/destinations/tiktok-offline-conversions/reportOfflineEvent/formatter.js +43 -0
  160. package/dist/destinations/tiktok-offline-conversions/reportOfflineEvent/formatter.js.map +1 -0
  161. package/package.json +3 -3
@@ -0,0 +1,109 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const shared_properties_1 = require("../shared_properties");
4
+ const utils_1 = require("../utils");
5
+ const action = {
6
+ title: 'Send Audience',
7
+ description: 'Send Engage Audience to a Profile Extension Table in Responsys',
8
+ defaultSubscription: 'type = "identify" or type = "track"',
9
+ 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: true,
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
+ },
32
+ default: {
33
+ EMAIL_ADDRESS_: {
34
+ '@if': {
35
+ exists: { '@path': '$.traits.email' },
36
+ then: { '@path': '$.traits.email' },
37
+ else: { '@path': '$.context.traits.email' }
38
+ }
39
+ },
40
+ CUSTOMER_ID_: { '@path': '$.userId' }
41
+ }
42
+ },
43
+ computation_key: {
44
+ label: 'Segment Audience Key',
45
+ description: 'A unique identifier assigned to a specific audience in Segment.',
46
+ type: 'string',
47
+ required: true,
48
+ unsafe_hidden: true,
49
+ default: { '@path': '$.context.personas.computation_key' }
50
+ },
51
+ traits_or_props: {
52
+ label: 'Traits or Properties',
53
+ description: 'Hidden field used to access traits or properties objects from Engage payloads.',
54
+ type: 'object',
55
+ required: true,
56
+ unsafe_hidden: true,
57
+ default: {
58
+ '@if': {
59
+ exists: { '@path': '$.traits' },
60
+ then: { '@path': '$.traits' },
61
+ else: { '@path': '$.properties' }
62
+ }
63
+ }
64
+ },
65
+ computation_class: {
66
+ label: 'Segment Audience Computation Class',
67
+ description: "Hidden field used to verify that the payload is generated by an Audience. Payloads not containing computation_class = 'audience' will be dropped before the perform() fuction call.",
68
+ type: 'string',
69
+ required: true,
70
+ unsafe_hidden: true,
71
+ default: { '@path': '$.context.personas.computation_class' },
72
+ choices: [{ label: 'Audience', value: 'audience' }]
73
+ },
74
+ enable_batching: shared_properties_1.enable_batching,
75
+ batch_size: shared_properties_1.batch_size,
76
+ stringify: {
77
+ label: 'Stringify Recipient Data',
78
+ description: 'If true, all Recipient data will be converted to strings before being sent to Responsys.',
79
+ type: 'boolean',
80
+ required: true,
81
+ default: false
82
+ },
83
+ timestamp: {
84
+ label: 'Timestamp',
85
+ description: 'The timestamp of when the event occurred.',
86
+ type: 'datetime',
87
+ required: true,
88
+ unsafe_hidden: true,
89
+ default: {
90
+ '@path': '$.timestamp'
91
+ }
92
+ }
93
+ },
94
+ perform: async (request, data) => {
95
+ const { payload, settings, statsContext } = data;
96
+ const userDataFieldNames = utils_1.getUserDataFieldNames(data);
97
+ utils_1.validateCustomTraits({ profileExtensionTable: settings.profileExtensionTable, timestamp: payload.timestamp, statsContext: statsContext });
98
+ utils_1.validateListMemberPayload(payload.userData);
99
+ return utils_1.sendCustomTraits(request, [payload], data.settings, userDataFieldNames, true);
100
+ },
101
+ performBatch: async (request, data) => {
102
+ const { payload, settings, statsContext } = data;
103
+ const userDataFieldNames = utils_1.getUserDataFieldNames(data);
104
+ utils_1.validateCustomTraits({ profileExtensionTable: settings.profileExtensionTable, timestamp: payload[0].timestamp, statsContext: statsContext });
105
+ return utils_1.sendCustomTraits(request, data.payload, data.settings, userDataFieldNames, true);
106
+ }
107
+ };
108
+ exports.default = action;
109
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/destinations/responsys-cloud/sendAudience/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export interface Payload {
2
+ userData: {
3
+ EMAIL_ADDRESS_?: string;
4
+ CUSTOMER_ID_?: string;
5
+ [k: string]: unknown;
6
+ };
7
+ enable_batching?: boolean;
8
+ batch_size?: number;
9
+ stringify: boolean;
10
+ timestamp: string | number;
11
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=generated-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generated-types.js","sourceRoot":"","sources":["../../../../src/destinations/responsys-cloud/sendCustomTraits/generated-types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ import { ActionDefinition } from '@segment/actions-core';
2
+ import type { Settings } from '../generated-types';
3
+ import type { Payload } from './generated-types';
4
+ declare const action: ActionDefinition<Settings, Payload>;
5
+ export default action;
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const shared_properties_1 = require("../shared_properties");
4
+ const utils_1 = require("../utils");
5
+ const action = {
6
+ title: 'Send Custom Traits',
7
+ description: 'Send Custom Traits to a Profile Extension Table in Responsys',
8
+ defaultSubscription: 'type = "identify"',
9
+ 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: true,
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
+ },
32
+ default: {
33
+ EMAIL_ADDRESS_: { '@path': '$.traits.email' },
34
+ CUSTOMER_ID_: { '@path': '$.userId' }
35
+ }
36
+ },
37
+ enable_batching: shared_properties_1.enable_batching,
38
+ batch_size: shared_properties_1.batch_size,
39
+ stringify: {
40
+ label: 'Stringify Recipient Data',
41
+ description: 'If true, all Recipient data will be converted to strings before being sent to Responsys.',
42
+ type: 'boolean',
43
+ required: true,
44
+ default: false
45
+ },
46
+ timestamp: {
47
+ label: 'Timestamp',
48
+ description: 'The timestamp of when the event occurred.',
49
+ type: 'datetime',
50
+ required: true,
51
+ unsafe_hidden: true,
52
+ default: {
53
+ '@path': '$.timestamp'
54
+ }
55
+ }
56
+ },
57
+ perform: async (request, data) => {
58
+ const { payload, settings, statsContext } = data;
59
+ const userDataFieldNames = utils_1.getUserDataFieldNames(data);
60
+ utils_1.validateCustomTraits({ profileExtensionTable: settings.profileExtensionTable, timestamp: payload.timestamp, statsContext: statsContext });
61
+ utils_1.validateListMemberPayload(payload.userData);
62
+ return utils_1.sendCustomTraits(request, [payload], settings, userDataFieldNames);
63
+ },
64
+ performBatch: async (request, data) => {
65
+ const { payload, settings, statsContext } = data;
66
+ const userDataFieldNames = utils_1.getUserDataFieldNames(data);
67
+ utils_1.validateCustomTraits({ profileExtensionTable: settings.profileExtensionTable, timestamp: payload[0].timestamp, statsContext: statsContext });
68
+ return utils_1.sendCustomTraits(request, data.payload, data.settings, userDataFieldNames);
69
+ }
70
+ };
71
+ exports.default = action;
72
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/destinations/responsys-cloud/sendCustomTraits/index.ts"],"names":[],"mappings":";;AAGA,4DAAkE;AAClE,oCAAmH;AAGnH,MAAM,MAAM,GAAwC;IAClD,KAAK,EAAE,oBAAoB;IAC3B,WAAW,EAAE,8DAA8D;IAC3E,mBAAmB,EAAE,mBAAmB;IACxC,MAAM,EAAE;QACN,QAAQ,EAAE;YACR,KAAK,EAAE,gBAAgB;YACvB,WAAW,EAAE,oFAAoF;YACjG,IAAI,EAAE,QAAQ;YACd,eAAe,EAAE,UAAU;YAC3B,QAAQ,EAAE,IAAI;YACd,oBAAoB,EAAE,IAAI;YAC1B,UAAU,EAAE;gBACV,cAAc,EAAE;oBACd,KAAK,EAAE,eAAe;oBACtB,WAAW,EAAE,0BAA0B;oBACvC,IAAI,EAAE,QAAQ;oBACd,MAAM,EAAE,OAAO;oBACf,QAAQ,EAAE,KAAK;iBAChB;gBACD,YAAY,EAAE;oBACZ,KAAK,EAAE,aAAa;oBACpB,WAAW,EAAE,wBAAwB;oBACrC,IAAI,EAAE,QAAQ;oBACd,QAAQ,EAAE,KAAK;iBAChB;aACF;YACD,OAAO,EAAE;gBACP,cAAc,EAAE,EAAE,OAAO,EAAE,gBAAgB,EAAE;gBAC7C,YAAY,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE;aACtC;SACF;QACD,eAAe,EAAE,mCAAe;QAChC,UAAU,EAAE,8BAAU;QACtB,SAAS,EAAE;YACT,KAAK,EAAE,0BAA0B;YACjC,WAAW,EAAE,0FAA0F;YACvG,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE,KAAK;SACf;QACD,SAAS,EAAE;YACT,KAAK,EAAE,WAAW;YAClB,WAAW,EAAE,2CAA2C;YACxD,IAAI,EAAE,UAAU;YAChB,QAAQ,EAAE,IAAI;YACd,aAAa,EAAE,IAAI;YACnB,OAAO,EAAE;gBACP,OAAO,EAAE,aAAa;aACvB;SACF;KACF;IAED,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QAC/B,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,IAAI,CAAA;QAEhD,MAAM,kBAAkB,GAAG,6BAAqB,CAAC,IAAuB,CAAC,CAAA;QAEzE,4BAAoB,CAAC,EAAE,qBAAqB,EAAE,QAAQ,CAAC,qBAAqB,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC,CAAA;QAEzI,iCAAyB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;QAE3C,OAAO,wBAAgB,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,kBAAkB,CAAC,CAAA;IAC3E,CAAC;IAED,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QACpC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,IAAI,CAAA;QAEhD,MAAM,kBAAkB,GAAG,6BAAqB,CAAC,IAAuB,CAAC,CAAA;QAEzE,4BAAoB,CAAC,EAAE,qBAAqB,EAAE,QAAQ,CAAC,qBAAqB,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC,CAAA;QAE5I,OAAO,wBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAA;IACnF,CAAC;CACF,CAAA;AAED,kBAAe,MAAM,CAAA"}
@@ -0,0 +1,3 @@
1
+ import { InputField } from '@segment/actions-core/destination-kit/types';
2
+ export declare const enable_batching: InputField;
3
+ export declare const batch_size: InputField;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.batch_size = exports.enable_batching = void 0;
4
+ exports.enable_batching = {
5
+ label: 'Use Responsys Async API',
6
+ description: 'Once enabled, Segment will collect events into batches of 200 before sending to Responsys.',
7
+ type: 'boolean',
8
+ default: true,
9
+ unsafe_hidden: true
10
+ };
11
+ exports.batch_size = {
12
+ label: 'Batch Size',
13
+ description: 'Maximum number of events to include in each batch. Actual batch sizes may be lower.',
14
+ type: 'number',
15
+ required: false,
16
+ unsafe_hidden: true,
17
+ default: 200
18
+ };
19
+ //# sourceMappingURL=shared_properties.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared_properties.js","sourceRoot":"","sources":["../../../src/destinations/responsys-cloud/shared_properties.ts"],"names":[],"mappings":";;;AAEa,QAAA,eAAe,GAAe;IACzC,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"}
@@ -0,0 +1,38 @@
1
+ export interface Data {
2
+ rawMapping: {
3
+ userData: {
4
+ [k: string]: unknown;
5
+ };
6
+ };
7
+ }
8
+ export declare type MergeRule = {
9
+ htmlValue?: string;
10
+ optinValue?: string;
11
+ textValue?: string;
12
+ insertOnNoMatch?: boolean;
13
+ updateOnMatch?: string;
14
+ matchColumnName1?: string;
15
+ matchColumnName2?: string;
16
+ matchOperator?: string;
17
+ optoutValue?: string;
18
+ rejectRecordIfChannelEmpty?: string;
19
+ defaultPermissionStatus?: string;
20
+ };
21
+ export declare type RecordData = {
22
+ fieldNames: string[];
23
+ records: unknown[][];
24
+ mapTemplateName: string;
25
+ };
26
+ export declare type ListMemberRequestBody = {
27
+ recordData: RecordData;
28
+ } & {
29
+ mergeRule: MergeRule;
30
+ };
31
+ export declare type CustomTraitsRequestBody = {
32
+ recordData: RecordData;
33
+ } & {
34
+ insertOnNoMatch?: boolean;
35
+ updateOnMatch?: string;
36
+ matchColumnName1?: string;
37
+ matchColumnName2?: string;
38
+ };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/destinations/responsys-cloud/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,14 @@
1
+ export interface Payload {
2
+ userData: {
3
+ EMAIL_ADDRESS_?: string;
4
+ EMAIL_MD5_HASH_?: string;
5
+ EMAIL_SHA256_HASH_?: string;
6
+ RIID_?: string;
7
+ CUSTOMER_ID_?: string;
8
+ MOBILE_NUMBER_?: string;
9
+ [k: string]: unknown;
10
+ };
11
+ stringify: boolean;
12
+ enable_batching?: boolean;
13
+ batch_size?: number;
14
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=generated-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generated-types.js","sourceRoot":"","sources":["../../../../src/destinations/responsys-cloud/upsertListMember/generated-types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ import { ActionDefinition } from '@segment/actions-core';
2
+ import type { Settings } from '../generated-types';
3
+ import type { Payload } from './generated-types';
4
+ declare const action: ActionDefinition<Settings, Payload>;
5
+ export default action;
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const shared_properties_1 = require("../shared_properties");
4
+ const utils_1 = require("../utils");
5
+ const action = {
6
+ title: 'Upsert Profile List Member',
7
+ description: 'Create or update a Profile List Member in Responsys',
8
+ defaultSubscription: 'type = "identify"',
9
+ 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: true,
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
+ EMAIL_MD5_HASH_: {
26
+ label: 'Email Address MD5 Hash',
27
+ description: "An MD5 Hash of the user's email address.",
28
+ type: 'string',
29
+ required: false
30
+ },
31
+ EMAIL_SHA256_HASH_: {
32
+ label: 'Email Address SHA256 Hash',
33
+ description: "A SHA256 Hash of the user's email address.",
34
+ type: 'string',
35
+ required: false
36
+ },
37
+ RIID_: {
38
+ label: 'Recipient ID',
39
+ description: 'Recipient ID (RIID). RIID is required if Email Address is empty.',
40
+ type: 'string',
41
+ required: false
42
+ },
43
+ CUSTOMER_ID_: {
44
+ label: 'Customer ID',
45
+ description: 'Responsys Customer ID.',
46
+ type: 'string',
47
+ required: false
48
+ },
49
+ MOBILE_NUMBER_: {
50
+ label: 'Mobile Number',
51
+ description: "The user's Mobile Phone Number.",
52
+ type: 'string',
53
+ required: false
54
+ }
55
+ },
56
+ default: {
57
+ EMAIL_ADDRESS_: { '@path': '$.traits.email' },
58
+ EMAIL_MD5_HASH_: { '@path': '$.traits.email_md5_hash_' },
59
+ EMAIL_SHA256_HASH_: { '@path': '$.traits.email_sha256_hash' },
60
+ CUSTOMER_ID_: { '@path': '$.userId' },
61
+ MOBILE_NUMBER_: { '@path': '$.traits.phone' }
62
+ }
63
+ },
64
+ stringify: {
65
+ label: 'Stringify Recipient Data',
66
+ description: 'If true, all Recipient data will be converted to strings before being sent to Responsys.',
67
+ type: 'boolean',
68
+ required: true,
69
+ default: false
70
+ },
71
+ enable_batching: shared_properties_1.enable_batching,
72
+ batch_size: shared_properties_1.batch_size
73
+ },
74
+ perform: async (request, data) => {
75
+ const userDataFieldNames = utils_1.getUserDataFieldNames(data);
76
+ utils_1.validateListMemberPayload(data.payload.userData);
77
+ return utils_1.upsertListMembers(request, [data.payload], data.settings, userDataFieldNames);
78
+ },
79
+ performBatch: async (request, data) => {
80
+ const userDataFieldNames = utils_1.getUserDataFieldNames(data);
81
+ return utils_1.upsertListMembers(request, data.payload, data.settings, userDataFieldNames);
82
+ }
83
+ };
84
+ exports.default = action;
85
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/destinations/responsys-cloud/upsertListMember/index.ts"],"names":[],"mappings":";;AAGA,4DAAkE;AAClE,oCAA8F;AAG9F,MAAM,MAAM,GAAwC;IAClD,KAAK,EAAE,4BAA4B;IACnC,WAAW,EAAE,qDAAqD;IAClE,mBAAmB,EAAE,mBAAmB;IACxC,MAAM,EAAE;QACN,QAAQ,EAAE;YACR,KAAK,EAAE,gBAAgB;YACvB,WAAW,EAAE,oFAAoF;YACjG,IAAI,EAAE,QAAQ;YACd,eAAe,EAAE,UAAU;YAC3B,QAAQ,EAAE,IAAI;YACd,oBAAoB,EAAE,IAAI;YAC1B,UAAU,EAAE;gBACV,cAAc,EAAE;oBACd,KAAK,EAAE,eAAe;oBACtB,WAAW,EAAE,2BAA2B;oBACxC,IAAI,EAAE,QAAQ;oBACd,MAAM,EAAE,OAAO;oBACf,QAAQ,EAAE,KAAK;iBAChB;gBACD,eAAe,EAAE;oBACf,KAAK,EAAE,wBAAwB;oBAC/B,WAAW,EAAE,0CAA0C;oBACvD,IAAI,EAAE,QAAQ;oBACd,QAAQ,EAAE,KAAK;iBAChB;gBACD,kBAAkB,EAAE;oBAClB,KAAK,EAAE,2BAA2B;oBAClC,WAAW,EAAE,4CAA4C;oBACzD,IAAI,EAAE,QAAQ;oBACd,QAAQ,EAAE,KAAK;iBAChB;gBACD,KAAK,EAAE;oBACL,KAAK,EAAE,cAAc;oBACrB,WAAW,EAAE,mEAAmE;oBAChF,IAAI,EAAE,QAAQ;oBACd,QAAQ,EAAE,KAAK;iBAChB;gBACD,YAAY,EAAE;oBACZ,KAAK,EAAE,aAAa;oBACpB,WAAW,EAAE,wBAAwB;oBACrC,IAAI,EAAE,QAAQ;oBACd,QAAQ,EAAE,KAAK;iBAChB;gBACD,cAAc,EAAE;oBACd,KAAK,EAAE,eAAe;oBACtB,WAAW,EAAE,iCAAiC;oBAC9C,IAAI,EAAE,QAAQ;oBACd,QAAQ,EAAE,KAAK;iBAChB;aACF;YACD,OAAO,EAAE;gBACP,cAAc,EAAE,EAAE,OAAO,EAAE,gBAAgB,EAAE;gBAC7C,eAAe,EAAE,EAAE,OAAO,EAAE,0BAA0B,EAAE;gBACxD,kBAAkB,EAAE,EAAE,OAAO,EAAE,4BAA4B,EAAE;gBAC7D,YAAY,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE;gBACrC,cAAc,EAAE,EAAE,OAAO,EAAE,gBAAgB,EAAE;aAC9C;SACF;QACD,SAAS,EAAE;YACT,KAAK,EAAE,0BAA0B;YACjC,WAAW,EAAE,0FAA0F;YACvG,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE,KAAK;SACf;QACD,eAAe,EAAE,mCAAe;QAChC,UAAU,EAAE,8BAAU;KACvB;IAED,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QAC/B,MAAM,kBAAkB,GAAG,6BAAqB,CAAC,IAAuB,CAAC,CAAA;QAEzE,iCAAyB,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;QAEhD,OAAO,yBAAiB,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAA;IACtF,CAAC;IAED,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QACpC,MAAM,kBAAkB,GAAG,6BAAqB,CAAC,IAAuB,CAAC,CAAA;QAEzE,OAAO,yBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAA;IACpF,CAAC;CACF,CAAA;AAED,kBAAe,MAAM,CAAA"}
@@ -0,0 +1,20 @@
1
+ import { Payload as CustomTraitsPayload } from './sendCustomTraits/generated-types';
2
+ import { Payload as AudiencePayload } from './sendAudience/generated-types';
3
+ import { Payload as ListMemberPayload } from './upsertListMember/generated-types';
4
+ import { Data } from './types';
5
+ import { RequestClient, StatsContext } from '@segment/actions-core';
6
+ import type { Settings } from './generated-types';
7
+ export declare const validateCustomTraits: ({ profileExtensionTable, timestamp, statsContext }: {
8
+ profileExtensionTable?: string | undefined;
9
+ timestamp: string | number;
10
+ statsContext: StatsContext | undefined;
11
+ }) => void;
12
+ export declare const shouldRetry: (timestamp: string | number) => boolean;
13
+ export declare const validateListMemberPayload: ({ EMAIL_ADDRESS_, RIID_, CUSTOMER_ID_ }: {
14
+ EMAIL_ADDRESS_?: string | undefined;
15
+ RIID_?: string | undefined;
16
+ CUSTOMER_ID_?: string | undefined;
17
+ }) => void;
18
+ export declare const getUserDataFieldNames: (data: Data) => string[];
19
+ export declare const sendCustomTraits: (request: RequestClient, payload: CustomTraitsPayload[] | AudiencePayload[], settings: Settings, userDataFieldNames: string[], isAudience?: boolean | undefined) => Promise<import("@segment/actions-core").ModifiedResponse<unknown>>;
20
+ export declare const upsertListMembers: (request: RequestClient, payload: ListMemberPayload[], settings: Settings, userDataFieldNames: string[]) => Promise<import("@segment/actions-core").ModifiedResponse<unknown>>;
@@ -0,0 +1,179 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.upsertListMembers = exports.sendCustomTraits = exports.getUserDataFieldNames = exports.validateListMemberPayload = exports.shouldRetry = exports.validateCustomTraits = void 0;
4
+ const actions_core_1 = require("@segment/actions-core");
5
+ const validateCustomTraits = ({ profileExtensionTable, timestamp, statsContext }) => {
6
+ const statsClient = statsContext?.statsClient;
7
+ const statsTag = statsContext?.tags;
8
+ if (exports.shouldRetry(timestamp)) {
9
+ if (statsClient && statsTag) {
10
+ statsClient?.incr('responsysShouldRetryTRUE', 1, statsTag);
11
+ }
12
+ throw new actions_core_1.RetryableError('Event timestamp is within the retry window. Artificial delay to retry this event.', 429);
13
+ }
14
+ else {
15
+ if (statsClient && statsTag) {
16
+ statsClient?.incr('responsysShouldRetryFALSE', 1, statsTag);
17
+ }
18
+ }
19
+ if (!(typeof profileExtensionTable !== 'undefined' &&
20
+ profileExtensionTable !== null &&
21
+ profileExtensionTable.trim().length > 0)) {
22
+ throw new actions_core_1.IntegrationError('Send Custom Traits Action requires "PET Name" setting field to be populated', 'PET_NAME_SETTING_MISSING', 400);
23
+ }
24
+ };
25
+ exports.validateCustomTraits = validateCustomTraits;
26
+ const RETRY_MINUTES = 2;
27
+ const shouldRetry = (timestamp) => {
28
+ return (new Date().getTime() - new Date(timestamp).getTime()) / (1000 * 60) < RETRY_MINUTES;
29
+ };
30
+ exports.shouldRetry = shouldRetry;
31
+ const validateListMemberPayload = ({ EMAIL_ADDRESS_, RIID_, CUSTOMER_ID_ }) => {
32
+ if (!EMAIL_ADDRESS_ && !RIID_ && !CUSTOMER_ID_) {
33
+ throw new actions_core_1.PayloadValidationError('At least one of the following fields is required: Email Address, RIID, or Customer ID');
34
+ }
35
+ };
36
+ exports.validateListMemberPayload = validateListMemberPayload;
37
+ const getUserDataFieldNames = (data) => {
38
+ return Object.keys(data.rawMapping.userData);
39
+ };
40
+ exports.getUserDataFieldNames = getUserDataFieldNames;
41
+ const stringifyObject = (obj) => {
42
+ const stringifiedObj = {};
43
+ for (const key in obj) {
44
+ stringifiedObj[key] = typeof obj[key] !== 'string' ? JSON.stringify(obj[key]) : obj[key];
45
+ }
46
+ return stringifiedObj;
47
+ };
48
+ const sendCustomTraits = async (request, payload, settings, userDataFieldNames, isAudience) => {
49
+ let userDataArray;
50
+ if (isAudience) {
51
+ const audiencePayloads = payload;
52
+ userDataArray = audiencePayloads.map((obj) => {
53
+ const traitValue = obj.computation_key
54
+ ? { [obj.computation_key.toUpperCase()]: obj.traits_or_props[obj.computation_key] }
55
+ : {};
56
+ userDataFieldNames.push(obj.computation_key.toUpperCase());
57
+ return {
58
+ ...(obj.stringify ? stringifyObject(obj.userData) : obj.userData),
59
+ ...(obj.stringify ? stringifyObject(traitValue) : traitValue)
60
+ };
61
+ });
62
+ }
63
+ else {
64
+ const customTraitsPayloads = payload;
65
+ userDataArray = customTraitsPayloads.map((obj) => (obj.stringify ? stringifyObject(obj.userData) : obj.userData));
66
+ }
67
+ const records = userDataArray.map((userData) => {
68
+ return userDataFieldNames.map((fieldName) => {
69
+ return userData && fieldName in userData
70
+ ? userData[fieldName]
71
+ : '';
72
+ });
73
+ });
74
+ const recordData = {
75
+ fieldNames: userDataFieldNames.map((field) => field.toUpperCase()),
76
+ records,
77
+ mapTemplateName: ''
78
+ };
79
+ const requestBody = {
80
+ recordData,
81
+ insertOnNoMatch: settings.insertOnNoMatch,
82
+ updateOnMatch: settings.updateOnMatch,
83
+ matchColumnName1: settings.matchColumnName1,
84
+ matchColumnName2: settings.matchColumnName2 || ''
85
+ };
86
+ const path = `/rest/asyncApi/v1.3/lists/${settings.profileListName}/listExtensions/${settings.profileExtensionTable}/members`;
87
+ const endpoint = new URL(path, settings.baseUrl);
88
+ const response = await request(endpoint.href, {
89
+ method: 'POST',
90
+ body: JSON.stringify(requestBody)
91
+ });
92
+ if (settings.segmentWriteKey && settings.segmentWriteKeyRegion) {
93
+ try {
94
+ const body = response.data;
95
+ await request(settings.segmentWriteKeyRegion === 'EU'
96
+ ? 'events.eu1.segmentapis.com/v1/track'
97
+ : 'https://api.segment.io/v1/track', {
98
+ method: 'POST',
99
+ headers: {
100
+ Authorization: 'Basic ' + Buffer.from(settings.segmentWriteKey + ': ').toString('base64'),
101
+ 'Content-Type': 'application/json'
102
+ },
103
+ body: JSON.stringify({
104
+ type: 'track',
105
+ event: 'Responsys Response Message Received',
106
+ properties: body,
107
+ anonymousId: '__responsys__API__response__'
108
+ })
109
+ });
110
+ }
111
+ catch (error) {
112
+ }
113
+ }
114
+ return response;
115
+ };
116
+ exports.sendCustomTraits = sendCustomTraits;
117
+ const upsertListMembers = async (request, payload, settings, userDataFieldNames) => {
118
+ const userDataArray = payload.map((obj) => (obj.stringify ? stringifyObject(obj.userData) : obj.userData));
119
+ const records = userDataArray.map((userData) => {
120
+ return userDataFieldNames.map((fieldName) => {
121
+ return userData && fieldName in userData
122
+ ? userData[fieldName]
123
+ : '';
124
+ });
125
+ });
126
+ const recordData = {
127
+ fieldNames: userDataFieldNames,
128
+ records,
129
+ mapTemplateName: ''
130
+ };
131
+ const mergeRule = {
132
+ htmlValue: settings.htmlValue,
133
+ optinValue: settings.optinValue,
134
+ textValue: settings.textValue,
135
+ insertOnNoMatch: settings.insertOnNoMatch,
136
+ updateOnMatch: settings.updateOnMatch,
137
+ matchColumnName1: settings.matchColumnName1 + '_',
138
+ matchColumnName2: settings.matchColumnName2 ? settings.matchColumnName2 + '_' : '',
139
+ matchOperator: settings.matchOperator,
140
+ optoutValue: settings.optoutValue,
141
+ rejectRecordIfChannelEmpty: settings.rejectRecordIfChannelEmpty,
142
+ defaultPermissionStatus: settings.defaultPermissionStatus
143
+ };
144
+ const requestBody = {
145
+ recordData,
146
+ mergeRule
147
+ };
148
+ const path = `/rest/asyncApi/v1.3/lists/${settings.profileListName}/members`;
149
+ const endpoint = new URL(path, settings.baseUrl);
150
+ const response = await request(endpoint.href, {
151
+ method: 'POST',
152
+ body: JSON.stringify(requestBody)
153
+ });
154
+ if (settings.segmentWriteKey && settings.segmentWriteKeyRegion) {
155
+ try {
156
+ const body = response.data;
157
+ await request(settings.segmentWriteKeyRegion === 'EU'
158
+ ? 'events.eu1.segmentapis.com/v1/track'
159
+ : 'https://api.segment.io/v1/track', {
160
+ method: 'POST',
161
+ headers: {
162
+ Authorization: 'Basic ' + Buffer.from(settings.segmentWriteKey + ': ').toString('base64'),
163
+ 'Content-Type': 'application/json'
164
+ },
165
+ body: JSON.stringify({
166
+ type: 'track',
167
+ event: 'Responsys Response Message Received',
168
+ properties: body,
169
+ anonymousId: '__responsys__API__response__'
170
+ })
171
+ });
172
+ }
173
+ catch (error) {
174
+ }
175
+ }
176
+ return response;
177
+ };
178
+ exports.upsertListMembers = upsertListMembers;
179
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/destinations/responsys-cloud/utils.ts"],"names":[],"mappings":"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"}