@segment/action-destinations 3.398.0 → 3.398.1-staging-21829421a.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 (94) hide show
  1. package/dist/destinations/amazon-conversions-api/trackConversion/fields.js +2 -4
  2. package/dist/destinations/amazon-conversions-api/trackConversion/fields.js.map +1 -1
  3. package/dist/destinations/amazon-conversions-api/trackConversion/index.js +1 -1
  4. package/dist/destinations/amazon-conversions-api/trackConversion/index.js.map +1 -1
  5. package/dist/destinations/amazon-conversions-api/trackConversion/utils.js +3 -2
  6. package/dist/destinations/amazon-conversions-api/trackConversion/utils.js.map +1 -1
  7. package/dist/destinations/amazon-conversions-api/types.js.map +1 -1
  8. package/dist/destinations/amazon-conversions-api/utils.js.map +1 -1
  9. package/dist/destinations/braze/identifyUser2/generated-types.d.ts +6 -1
  10. package/dist/destinations/braze/identifyUser2/index.js +85 -10
  11. package/dist/destinations/braze/identifyUser2/index.js.map +1 -1
  12. package/dist/destinations/braze/index.js +5 -1
  13. package/dist/destinations/braze/index.js.map +1 -1
  14. package/dist/destinations/braze/triggerCampaign/functions/dynamic-field-functions.d.ts +23 -0
  15. package/dist/destinations/braze/triggerCampaign/functions/dynamic-field-functions.js +75 -0
  16. package/dist/destinations/braze/triggerCampaign/functions/dynamic-field-functions.js.map +1 -0
  17. package/dist/destinations/braze/triggerCampaign/generated-types.d.ts +33 -0
  18. package/dist/destinations/braze/triggerCampaign/generated-types.js +3 -0
  19. package/dist/destinations/braze/triggerCampaign/generated-types.js.map +1 -0
  20. package/dist/destinations/braze/triggerCampaign/index.d.ts +5 -0
  21. package/dist/destinations/braze/triggerCampaign/index.js +280 -0
  22. package/dist/destinations/braze/triggerCampaign/index.js.map +1 -0
  23. package/dist/destinations/braze/upsertCatalogItem/generated-types.d.ts +22 -0
  24. package/dist/destinations/braze/upsertCatalogItem/generated-types.js +3 -0
  25. package/dist/destinations/braze/upsertCatalogItem/generated-types.js.map +1 -0
  26. package/dist/destinations/braze/upsertCatalogItem/index.d.ts +5 -0
  27. package/dist/destinations/braze/upsertCatalogItem/index.js +267 -0
  28. package/dist/destinations/braze/upsertCatalogItem/index.js.map +1 -0
  29. package/dist/destinations/braze/upsertCatalogItem/types.d.ts +29 -0
  30. package/dist/destinations/braze/upsertCatalogItem/types.js +3 -0
  31. package/dist/destinations/braze/upsertCatalogItem/types.js.map +1 -0
  32. package/dist/destinations/braze/upsertCatalogItem/utils.d.ts +16 -0
  33. package/dist/destinations/braze/upsertCatalogItem/utils.js +185 -0
  34. package/dist/destinations/braze/upsertCatalogItem/utils.js.map +1 -0
  35. package/dist/destinations/braze-cohorts/syncAudiences/generated-types.d.ts +1 -0
  36. package/dist/destinations/braze-cohorts/syncAudiences/index.js +17 -3
  37. package/dist/destinations/braze-cohorts/syncAudiences/index.js.map +1 -1
  38. package/dist/destinations/customerio/index.js +1 -1
  39. package/dist/destinations/customerio/reportContentEvent/index.js +1 -1
  40. package/dist/destinations/dotdigital/api/types.d.ts +2 -2
  41. package/dist/destinations/dotdigital/enrolContact/index.js +1 -1
  42. package/dist/destinations/dotdigital/enrolContact/index.js.map +1 -1
  43. package/dist/destinations/facebook-custom-audiences/index.js +5 -16
  44. package/dist/destinations/facebook-custom-audiences/index.js.map +1 -1
  45. package/dist/destinations/index.js +1 -0
  46. package/dist/destinations/index.js.map +1 -1
  47. package/dist/destinations/kafka/constants.d.ts +2 -0
  48. package/dist/destinations/kafka/constants.js +6 -0
  49. package/dist/destinations/kafka/constants.js.map +1 -0
  50. package/dist/destinations/kafka/depends-on.d.ts +4 -0
  51. package/dist/destinations/kafka/depends-on.js +42 -0
  52. package/dist/destinations/kafka/depends-on.js.map +1 -0
  53. package/dist/destinations/kafka/index.js +8 -7
  54. package/dist/destinations/kafka/index.js.map +1 -1
  55. package/dist/destinations/kafka/send/index.js +4 -4
  56. package/dist/destinations/kafka/send/index.js.map +1 -1
  57. package/dist/destinations/kafka/types.d.ts +26 -0
  58. package/dist/destinations/kafka/types.js +5 -0
  59. package/dist/destinations/kafka/types.js.map +1 -0
  60. package/dist/destinations/kafka/utils.d.ts +5 -7
  61. package/dist/destinations/kafka/utils.js +78 -44
  62. package/dist/destinations/kafka/utils.js.map +1 -1
  63. package/dist/destinations/klaviyo/index.js +1 -1
  64. package/dist/destinations/liveramp-audiences/audienceEnteredS3/generated-types.d.ts +1 -0
  65. package/dist/destinations/liveramp-audiences/audienceEnteredS3/index.js +12 -3
  66. package/dist/destinations/liveramp-audiences/audienceEnteredS3/index.js.map +1 -1
  67. package/dist/destinations/liveramp-audiences/audienceEnteredS3/s3.d.ts +2 -1
  68. package/dist/destinations/liveramp-audiences/audienceEnteredS3/s3.js +14 -1
  69. package/dist/destinations/liveramp-audiences/audienceEnteredS3/s3.js.map +1 -1
  70. package/dist/destinations/liveramp-audiences/awsClient.d.ts +1 -0
  71. package/dist/destinations/liveramp-audiences/awsClient.js +2 -1
  72. package/dist/destinations/liveramp-audiences/awsClient.js.map +1 -1
  73. package/dist/destinations/ortto/common-fields.js.map +1 -1
  74. package/dist/destinations/ortto/trackActivity/index.js.map +1 -1
  75. package/dist/destinations/reddit-conversions-api/utils.js +1 -1
  76. package/dist/destinations/warehouse-test/client.d.ts +27 -0
  77. package/dist/destinations/warehouse-test/client.js +121 -0
  78. package/dist/destinations/warehouse-test/client.js.map +1 -0
  79. package/dist/destinations/warehouse-test/fields.d.ts +3 -0
  80. package/dist/destinations/warehouse-test/fields.js +15 -0
  81. package/dist/destinations/warehouse-test/fields.js.map +1 -0
  82. package/dist/destinations/warehouse-test/generated-types.d.ts +7 -0
  83. package/dist/destinations/warehouse-test/generated-types.js +3 -0
  84. package/dist/destinations/warehouse-test/generated-types.js.map +1 -0
  85. package/dist/destinations/warehouse-test/index.d.ts +4 -0
  86. package/dist/destinations/warehouse-test/index.js +58 -0
  87. package/dist/destinations/warehouse-test/index.js.map +1 -0
  88. package/dist/destinations/warehouse-test/syncToWarehouse/generated-types.d.ts +5 -0
  89. package/dist/destinations/warehouse-test/syncToWarehouse/generated-types.js +3 -0
  90. package/dist/destinations/warehouse-test/syncToWarehouse/generated-types.js.map +1 -0
  91. package/dist/destinations/warehouse-test/syncToWarehouse/index.d.ts +5 -0
  92. package/dist/destinations/warehouse-test/syncToWarehouse/index.js +37 -0
  93. package/dist/destinations/warehouse-test/syncToWarehouse/index.js.map +1 -0
  94. package/package.json +4 -4
@@ -0,0 +1,280 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const actions_core_1 = require("@segment/actions-core");
4
+ const dynamic_field_functions_1 = require("./functions/dynamic-field-functions");
5
+ const action = {
6
+ title: 'Trigger Campaign',
7
+ description: 'Trigger a Braze Campaign via API-triggered delivery',
8
+ defaultSubscription: 'type = "track"',
9
+ dynamicFields: {
10
+ ...dynamic_field_functions_1.dynamicFields
11
+ },
12
+ fields: {
13
+ campaign_id: {
14
+ label: 'Campaign ID',
15
+ description: 'The ID of the Braze campaign to trigger. The campaign must be an API-triggered campaign created in Braze.',
16
+ type: 'string',
17
+ required: true,
18
+ dynamic: true
19
+ },
20
+ send_id: {
21
+ label: 'Send ID',
22
+ description: 'Optional string to identify the send. This can be used for send level analytics, or to cancel a send.',
23
+ type: 'string'
24
+ },
25
+ trigger_properties: {
26
+ label: 'Trigger Properties',
27
+ description: 'Optional data that will be used to personalize the campaign message. Personalization key-value pairs that will apply to all users in this request.',
28
+ type: 'object',
29
+ default: {
30
+ '@path': '$.properties'
31
+ }
32
+ },
33
+ broadcast: {
34
+ label: 'Broadcast',
35
+ description: 'Must be set to true when sending a message to an entire segment that a campaign targets. Only one of "broadcast", "recipients" or "audience" should be provided.',
36
+ type: 'boolean',
37
+ required: {
38
+ match: 'all',
39
+ conditions: [
40
+ {
41
+ fieldKey: 'recipients',
42
+ operator: 'is',
43
+ value: undefined
44
+ },
45
+ {
46
+ fieldKey: 'audience',
47
+ operator: 'is',
48
+ value: undefined
49
+ }
50
+ ]
51
+ },
52
+ depends_on: {
53
+ match: 'all',
54
+ conditions: [
55
+ {
56
+ fieldKey: 'recipients',
57
+ operator: 'is',
58
+ value: undefined
59
+ },
60
+ {
61
+ fieldKey: 'audience',
62
+ operator: 'is',
63
+ value: undefined
64
+ }
65
+ ]
66
+ }
67
+ },
68
+ attachments: {
69
+ label: 'Attachments',
70
+ description: 'Attachments to send along with the campaign. Limited to 2MB per file.',
71
+ type: 'object',
72
+ multiple: true,
73
+ properties: {
74
+ file_name: {
75
+ label: 'File Name',
76
+ description: 'The name of the file to be attached.',
77
+ type: 'string',
78
+ required: true
79
+ },
80
+ url: {
81
+ label: 'URL',
82
+ description: 'The URL of the file to be attached.',
83
+ type: 'string',
84
+ required: true
85
+ }
86
+ },
87
+ defaultObjectUI: 'arrayeditor'
88
+ },
89
+ recipients: {
90
+ label: 'Recipients',
91
+ description: 'An array of user identifiers to send the campaign to. Only one of "recipients", "broadcast" or "audience" should be provided.',
92
+ type: 'object',
93
+ multiple: true,
94
+ required: {
95
+ match: 'all',
96
+ conditions: [
97
+ {
98
+ fieldKey: 'broadcast',
99
+ operator: 'is',
100
+ value: undefined
101
+ },
102
+ {
103
+ fieldKey: 'audience',
104
+ operator: 'is',
105
+ value: undefined
106
+ }
107
+ ]
108
+ },
109
+ depends_on: {
110
+ match: 'all',
111
+ conditions: [
112
+ {
113
+ fieldKey: 'broadcast',
114
+ operator: 'is',
115
+ value: undefined
116
+ },
117
+ {
118
+ fieldKey: 'audience',
119
+ operator: 'is',
120
+ value: undefined
121
+ }
122
+ ]
123
+ },
124
+ properties: {
125
+ external_user_id: {
126
+ label: 'External User ID',
127
+ description: 'External identifier of user to receive message.',
128
+ type: 'string',
129
+ default: {
130
+ '@path': '$.userId'
131
+ }
132
+ },
133
+ user_alias: {
134
+ label: 'User Alias',
135
+ description: 'User alias object to identify the user.',
136
+ type: 'object'
137
+ },
138
+ email: {
139
+ label: 'Email',
140
+ description: 'Email address of user to receive message.',
141
+ type: 'string',
142
+ default: {
143
+ '@path': '$.traits.email'
144
+ }
145
+ },
146
+ trigger_properties: {
147
+ label: 'User Trigger Properties',
148
+ description: 'Properties that will override the default trigger_properties for a specific user.',
149
+ type: 'object'
150
+ },
151
+ send_to_existing_only: {
152
+ label: 'Send to Existing Only',
153
+ description: "Defaults to true, can't be used with user aliases; if set to false, an attributes object must also be included.",
154
+ type: 'boolean',
155
+ default: true,
156
+ required: true
157
+ },
158
+ attributes: {
159
+ label: 'User Attributes',
160
+ description: 'Fields in the attributes object will create or update an attribute of that name with the given value on the specified user profile before the message is sent and existing values will be overwritten.',
161
+ type: 'object'
162
+ }
163
+ }
164
+ },
165
+ prioritization: {
166
+ label: 'Prioritization',
167
+ description: 'Prioritization settings; required when using email. This prioritization will be applied to all recipients.',
168
+ type: 'object',
169
+ properties: {
170
+ first_priority: {
171
+ label: 'First Priority',
172
+ description: 'First priority in the prioritization sequence',
173
+ type: 'string',
174
+ choices: dynamic_field_functions_1.allPrioritizationChoices
175
+ },
176
+ second_priority: {
177
+ label: 'Second Priority',
178
+ description: 'Second priority in the prioritization sequence',
179
+ type: 'string',
180
+ dynamic: true,
181
+ choices: dynamic_field_functions_1.allPrioritizationChoices,
182
+ depends_on: {
183
+ match: 'all',
184
+ conditions: [
185
+ {
186
+ fieldKey: 'prioritization.first_priority',
187
+ operator: 'is_not',
188
+ value: undefined
189
+ }
190
+ ]
191
+ }
192
+ }
193
+ }
194
+ },
195
+ audience: {
196
+ label: 'Audience',
197
+ description: 'A standard audience object to specify the users to send the campaign to. Only one of "recipients", "broadcast" or "audience" should be provided.',
198
+ type: 'object',
199
+ required: {
200
+ match: 'all',
201
+ conditions: [
202
+ {
203
+ fieldKey: 'broadcast',
204
+ operator: 'is',
205
+ value: undefined
206
+ },
207
+ {
208
+ fieldKey: 'recipients',
209
+ operator: 'is',
210
+ value: undefined
211
+ }
212
+ ]
213
+ },
214
+ depends_on: {
215
+ match: 'all',
216
+ conditions: [
217
+ {
218
+ fieldKey: 'broadcast',
219
+ operator: 'is',
220
+ value: undefined
221
+ },
222
+ {
223
+ fieldKey: 'recipients',
224
+ operator: 'is',
225
+ value: undefined
226
+ }
227
+ ]
228
+ }
229
+ }
230
+ },
231
+ perform: async (request, { settings, payload }) => {
232
+ let targetingParamsCount = 0;
233
+ if (payload.broadcast)
234
+ targetingParamsCount++;
235
+ if (payload.recipients?.length)
236
+ targetingParamsCount++;
237
+ if (payload.audience)
238
+ targetingParamsCount++;
239
+ if (targetingParamsCount === 0) {
240
+ throw new actions_core_1.IntegrationError('One of "recipients", "broadcast" or "audience", must be provided.', 'Missing required fields', 400);
241
+ }
242
+ if (targetingParamsCount > 1) {
243
+ throw new actions_core_1.IntegrationError('Only one of "recipients", "broadcast" or "audience" should be provided.', 'Multiple targeting parameters provided', 400);
244
+ }
245
+ if (payload.recipients?.length && payload.prioritization) {
246
+ const prioritizationArray = [];
247
+ if (payload.prioritization?.first_priority) {
248
+ prioritizationArray.push(payload.prioritization.first_priority);
249
+ }
250
+ if (payload.prioritization?.second_priority) {
251
+ prioritizationArray.push(payload.prioritization.second_priority);
252
+ }
253
+ if (prioritizationArray.length > 0) {
254
+ payload.recipients = payload.recipients.map((recipient) => ({
255
+ ...recipient,
256
+ prioritization: prioritizationArray,
257
+ ...(recipient.send_to_existing_only !== true ? { send_to_existing_only: false } : {})
258
+ }));
259
+ }
260
+ delete payload.prioritization;
261
+ }
262
+ try {
263
+ return await request(`${settings.endpoint}/campaigns/trigger/send`, {
264
+ method: 'post',
265
+ json: payload
266
+ });
267
+ }
268
+ catch (error) {
269
+ if (error instanceof actions_core_1.HTTPError && error.response) {
270
+ const responseContent = error.response;
271
+ if (responseContent.data?.message) {
272
+ throw new actions_core_1.IntegrationError(responseContent.data.message, 'BRAZE_API_ERROR', error.response.status);
273
+ }
274
+ }
275
+ throw error;
276
+ }
277
+ }
278
+ };
279
+ exports.default = action;
280
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/destinations/braze/triggerCampaign/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ export interface Payload {
2
+ item?: {
3
+ [k: string]: unknown;
4
+ };
5
+ item_id: string;
6
+ enable_batching?: boolean;
7
+ batch_size?: number;
8
+ }
9
+ export interface OnMappingSaveInputs {
10
+ operation: string;
11
+ selected_catalog_name?: string;
12
+ created_catalog_name?: string;
13
+ description?: string;
14
+ columns?: {
15
+ name: string;
16
+ type: string;
17
+ [k: string]: unknown;
18
+ }[];
19
+ }
20
+ export interface OnMappingSaveOutputs {
21
+ catalog_name: string;
22
+ }
@@ -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/braze/upsertCatalogItem/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,267 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const actions_core_1 = require("@segment/actions-core");
7
+ const isEmpty_1 = __importDefault(require("lodash/isEmpty"));
8
+ const utils_1 = require("./utils");
9
+ const UPSERT_OPERATION = {
10
+ match: 'all',
11
+ conditions: [{ type: 'field', fieldKey: '__segment_internal_sync_mode', operator: 'is', value: 'upsert' }]
12
+ };
13
+ const CREATE_OPERATION = {
14
+ match: 'all',
15
+ conditions: [{ fieldKey: 'operation', operator: 'is', value: 'create' }]
16
+ };
17
+ const SELECT_OPERATION = {
18
+ match: 'all',
19
+ conditions: [{ fieldKey: 'operation', operator: 'is', value: 'select' }]
20
+ };
21
+ const catalogHook = {
22
+ label: 'Select or Create a Catalog',
23
+ description: 'Select an existing catalog or create a new one in Braze.',
24
+ inputFields: {
25
+ operation: {
26
+ label: 'Operation',
27
+ description: 'Whether to select an existing catalog or create a new one in Braze.',
28
+ type: 'string',
29
+ disabledInputMethods: ['literal', 'variable', 'function', 'freeform', 'enrichment'],
30
+ choices: [
31
+ { label: 'Create a new catalog', value: 'create' },
32
+ { label: 'Select an existing catalog', value: 'select' }
33
+ ],
34
+ required: true
35
+ },
36
+ selected_catalog_name: {
37
+ label: 'Catalog Name',
38
+ description: 'The unique name of the catalog.',
39
+ type: 'string',
40
+ required: SELECT_OPERATION,
41
+ disabledInputMethods: ['literal', 'variable', 'function', 'freeform', 'enrichment'],
42
+ depends_on: SELECT_OPERATION,
43
+ dynamic: async (request, { settings }) => {
44
+ return (0, utils_1.getCatalogNames)(request, { settings });
45
+ }
46
+ },
47
+ created_catalog_name: {
48
+ label: 'Catalog Name',
49
+ description: 'The name of the catalog. Must be unique. Maximum 250 characters. Supported characters: letters, numbers, hyphens, and underscores.',
50
+ type: 'string',
51
+ required: CREATE_OPERATION,
52
+ depends_on: CREATE_OPERATION
53
+ },
54
+ description: {
55
+ label: 'Catalog Description',
56
+ description: 'The description of the catalog. Maximum 250 characters.',
57
+ type: 'string',
58
+ depends_on: CREATE_OPERATION
59
+ },
60
+ columns: {
61
+ label: 'Catalog Fields',
62
+ description: 'A list of fields to create in the catalog. Maximum 500 fields. ID field is added by default.',
63
+ type: 'object',
64
+ multiple: true,
65
+ defaultObjectUI: 'arrayeditor',
66
+ additionalProperties: true,
67
+ required: CREATE_OPERATION,
68
+ depends_on: CREATE_OPERATION,
69
+ properties: {
70
+ name: {
71
+ label: 'Field Name',
72
+ description: 'The name of the field. Maximum 250 characters. Supported characters: letters, numbers, hyphens, and underscores.',
73
+ type: 'string',
74
+ required: true
75
+ },
76
+ type: {
77
+ label: 'Field Type',
78
+ description: 'The data type of the field.',
79
+ type: 'string',
80
+ required: true,
81
+ choices: ['string', 'number', 'time', 'boolean', 'object', 'array']
82
+ }
83
+ }
84
+ }
85
+ },
86
+ performHook: async (request, { settings, hookInputs }) => {
87
+ if (hookInputs?.operation === 'select') {
88
+ return {
89
+ successMessage: 'Catalog selected successfully',
90
+ savedData: {
91
+ catalog_name: hookInputs?.selected_catalog_name ?? ''
92
+ }
93
+ };
94
+ }
95
+ return await (0, utils_1.createCatalog)(request, settings.endpoint, hookInputs);
96
+ },
97
+ outputTypes: {
98
+ catalog_name: {
99
+ label: 'Catalog Name',
100
+ description: 'The name of the catalog.',
101
+ type: 'string',
102
+ required: true
103
+ }
104
+ }
105
+ };
106
+ const action = {
107
+ title: 'Upsert Catalog Item',
108
+ description: 'Upserts or deletes items in a catalog',
109
+ syncMode: {
110
+ description: 'Define how the records from your destination will be synced.',
111
+ label: 'How to sync records',
112
+ default: 'upsert',
113
+ choices: [
114
+ { label: 'Upsert Catalog Item', value: 'upsert' },
115
+ { label: 'Delete Catalog Item', value: 'delete' }
116
+ ]
117
+ },
118
+ fields: {
119
+ item: {
120
+ label: 'Catalog item to upsert',
121
+ description: 'The item to upsert in the catalog. The item object should contain fields that exist in the catalog. The item object should not contain the id field.',
122
+ type: 'object',
123
+ required: UPSERT_OPERATION,
124
+ depends_on: UPSERT_OPERATION,
125
+ defaultObjectUI: 'keyvalue:only',
126
+ dynamic: true
127
+ },
128
+ item_id: {
129
+ label: 'Item ID',
130
+ description: 'The unique identifier for the item. Maximum 250 characters. Supported characters: letters, numbers, hyphens, and underscores.',
131
+ type: 'string',
132
+ required: true,
133
+ maximum: 250,
134
+ minimum: 1
135
+ },
136
+ enable_batching: {
137
+ type: 'boolean',
138
+ label: 'Batch Data to Braze?',
139
+ description: 'If true, Segment will batch events before sending to Braze.',
140
+ default: true
141
+ },
142
+ batch_size: {
143
+ type: 'number',
144
+ label: 'Batch Size',
145
+ description: 'If batching is enabled, this is the number of events to include in each batch. Maximum 50 events per batch.',
146
+ minimum: 1,
147
+ maximum: 50,
148
+ default: 50,
149
+ unsafe_hidden: true
150
+ }
151
+ },
152
+ hooks: {
153
+ onMappingSave: { ...catalogHook }
154
+ },
155
+ dynamicFields: {
156
+ item: {
157
+ __keys__: async (request, { settings, payload }) => {
158
+ return await (0, utils_1.getItemKeys)(request, settings, payload);
159
+ }
160
+ }
161
+ },
162
+ perform: async (request, { settings, payload, syncMode, hookOutputs }) => {
163
+ const catalog_name = hookOutputs?.onMappingSave?.outputs?.catalog_name;
164
+ const { item_id = '' } = payload;
165
+ const { item = {} } = payload;
166
+ if (!(0, utils_1.isValidItemId)(item_id)) {
167
+ throw new actions_core_1.IntegrationError(`Invalid ID Format`, actions_core_1.ErrorCodes.PAYLOAD_VALIDATION_FAILED, 400);
168
+ }
169
+ if (syncMode === 'upsert') {
170
+ if ((0, actions_core_1.isObject)(item) && (0, isEmpty_1.default)(item)) {
171
+ throw new actions_core_1.IntegrationError('Item is required', actions_core_1.ErrorCodes.PAYLOAD_VALIDATION_FAILED, 400);
172
+ }
173
+ }
174
+ try {
175
+ return await request(`${settings.endpoint}/catalogs/${catalog_name}/items/${item_id}`, {
176
+ method: syncMode === 'upsert' ? 'PUT' : 'DELETE',
177
+ headers: {
178
+ 'Content-Type': 'application/json'
179
+ },
180
+ json: {
181
+ items: [item]
182
+ }
183
+ });
184
+ }
185
+ catch (error) {
186
+ if (error?.response?.data?.errors?.[0]?.id === 'item-not-found' &&
187
+ syncMode === 'delete') {
188
+ return {
189
+ status: 200,
190
+ message: 'Could not find item'
191
+ };
192
+ }
193
+ else {
194
+ throw new actions_core_1.IntegrationError(`${error?.response?.data?.errors?.[0]?.message}`, `Error ${syncMode}ing item`, error?.response?.status ?? 500);
195
+ }
196
+ }
197
+ },
198
+ performBatch: async (request, { settings, payload, syncMode, hookOutputs }) => {
199
+ const catalog_name = hookOutputs?.onMappingSave?.outputs?.catalog_name;
200
+ const multiStatusResponse = new actions_core_1.MultiStatusResponse();
201
+ const validPayloadMap = new Map();
202
+ const items = [];
203
+ for (let batchIndex = 0; batchIndex < payload.length; batchIndex++) {
204
+ const { item_id = '', item = {} } = payload[batchIndex];
205
+ if (validPayloadMap.has(item_id)) {
206
+ multiStatusResponse.setErrorResponseAtIndex(batchIndex, {
207
+ status: 400,
208
+ errortype: actions_core_1.ErrorCodes.PAYLOAD_VALIDATION_FAILED,
209
+ errormessage: 'Every item in the batch must have a unique item_id'
210
+ });
211
+ continue;
212
+ }
213
+ if (!(0, utils_1.isValidItemId)(item_id)) {
214
+ multiStatusResponse.setErrorResponseAtIndex(batchIndex, {
215
+ status: 400,
216
+ errortype: actions_core_1.ErrorCodes.PAYLOAD_VALIDATION_FAILED,
217
+ errormessage: 'Invalid ID Format'
218
+ });
219
+ continue;
220
+ }
221
+ let body = { id: item_id };
222
+ if (syncMode === 'upsert') {
223
+ if ((0, actions_core_1.isObject)(item) && (0, isEmpty_1.default)(item)) {
224
+ multiStatusResponse.setErrorResponseAtIndex(batchIndex, {
225
+ status: 400,
226
+ errortype: actions_core_1.ErrorCodes.PAYLOAD_VALIDATION_FAILED,
227
+ errormessage: 'Item is required'
228
+ });
229
+ continue;
230
+ }
231
+ body = {
232
+ id: item_id,
233
+ ...item
234
+ };
235
+ }
236
+ items.push(body);
237
+ validPayloadMap.set(item_id, batchIndex);
238
+ }
239
+ if (items.length === 0) {
240
+ return multiStatusResponse;
241
+ }
242
+ try {
243
+ const response = await request(`${settings.endpoint}/catalogs/${catalog_name}/items/`, {
244
+ method: syncMode === 'upsert' ? 'PUT' : 'DELETE',
245
+ headers: {
246
+ 'Content-Type': 'application/json'
247
+ },
248
+ json: {
249
+ items
250
+ }
251
+ });
252
+ validPayloadMap.forEach((index, id) => {
253
+ multiStatusResponse.setSuccessResponseAtIndex(index, {
254
+ status: 200,
255
+ sent: { ...payload[index]?.item, id },
256
+ body: response?.data
257
+ });
258
+ });
259
+ }
260
+ catch (error) {
261
+ (0, utils_1.processMultiStatusErrorResponse)(error?.response?.data, multiStatusResponse, validPayloadMap, payload);
262
+ }
263
+ return multiStatusResponse;
264
+ }
265
+ };
266
+ exports.default = action;
267
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/destinations/braze/upsertCatalogItem/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import { JSONLikeObject } from '@segment/actions-core/json-object';
2
+ export interface CatalogSchema {
3
+ description?: string;
4
+ fields?: {
5
+ name: string;
6
+ token: string;
7
+ type: 'string' | 'number' | 'time' | 'boolean';
8
+ }[];
9
+ name: string;
10
+ num_items?: Number;
11
+ storage_size?: Number;
12
+ updated_at?: string;
13
+ selections_size?: Number;
14
+ source?: Number;
15
+ selections: unknown[];
16
+ }
17
+ export interface ListCatalogsResponse {
18
+ catalogs?: CatalogSchema[];
19
+ message?: string;
20
+ }
21
+ export interface UpsertCatalogItemErrorResponse {
22
+ message?: string;
23
+ errors: {
24
+ id?: string;
25
+ message?: string;
26
+ parameters?: string[];
27
+ parameter_values?: string[] | JSONLikeObject[];
28
+ }[];
29
+ }
@@ -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/braze/upsertCatalogItem/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,16 @@
1
+ import { RequestClient } from '@segment/actions-core/create-request-client';
2
+ import { UpsertCatalogItemErrorResponse } from './types';
3
+ import { ActionHookResponse, MultiStatusResponse } from '@segment/actions-core/destination-kit/action';
4
+ import { OnMappingSaveInputs, Payload } from './generated-types';
5
+ import { DynamicFieldResponse } from '@segment/actions-core/index';
6
+ import { Settings } from '../generated-types';
7
+ export declare function getCatalogMetas(request: RequestClient, endpoint: string): Promise<import("./types").CatalogSchema[] | undefined>;
8
+ export declare function createCatalog(request: RequestClient, endpoint: string, hookInputs?: OnMappingSaveInputs): Promise<ActionHookResponse<{
9
+ catalog_name: string;
10
+ }>>;
11
+ export declare function isValidItemId(item_id: string): boolean;
12
+ export declare function processMultiStatusErrorResponse(response: UpsertCatalogItemErrorResponse, multiStatusResponse: MultiStatusResponse, validPayloadMap: Map<string, number>, payload: Payload[]): void;
13
+ export declare function getCatalogNames(request: RequestClient, { settings }: {
14
+ settings: Settings;
15
+ }): Promise<DynamicFieldResponse>;
16
+ export declare function getItemKeys(request: RequestClient, settings: Settings, payload: Payload): Promise<DynamicFieldResponse>;