mcdev 4.3.0 → 4.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.fork/custom-commands.json +14 -0
- package/.github/ISSUE_TEMPLATE/bug.yml +2 -0
- package/boilerplate/gitignore-template +1 -0
- package/docs/dist/documentation.md +2 -40
- package/lib/Retriever.js +22 -19
- package/lib/metadataTypes/AccountUser.js +42 -13
- package/lib/metadataTypes/Asset.js +37 -42
- package/lib/metadataTypes/Automation.js +1 -1
- package/lib/metadataTypes/DataExtensionField.js +5 -3
- package/lib/metadataTypes/EmailSendDefinition.js +84 -44
- package/lib/metadataTypes/Interaction.js +74 -9
- package/lib/metadataTypes/List.js +17 -15
- package/lib/metadataTypes/MetadataType.js +1 -1
- package/lib/metadataTypes/TriggeredSendDefinition.js +6 -5
- package/lib/metadataTypes/definitions/EmailSendDefinition.definition.js +52 -31
- package/lib/metadataTypes/definitions/Interaction.definition.js +1 -1
- package/lib/metadataTypes/definitions/TransactionalEmail.definition.js +2 -2
- package/lib/metadataTypes/definitions/TransactionalPush.definition.js +2 -2
- package/lib/metadataTypes/definitions/TransactionalSMS.definition.js +2 -2
- package/lib/util/auth.js +8 -3
- package/lib/util/devops.js +8 -4
- package/lib/util/util.js +51 -9
- package/package.json +2 -1
- package/test/interaction.test.js +2 -2
- package/test/mockRoot/.mcdevrc.json +1 -1
- package/test/resourceFactory.js +20 -9
- package/test/resources/9999999/interaction/v1/interactions/key_0b76dccf-594c-b6dc-1acf-10c4493dcb84/get-response.json +219 -0
- package/test/resources/9999999/interaction/v1/interactions/key_testExisting_interaction/get-response.json +280 -0
- package/test/resources/9999999/triggeredSendDefinition/retrieve-response.xml +68 -0
|
@@ -104,15 +104,33 @@ class EmailSendDefinition extends MetadataType {
|
|
|
104
104
|
delete metadata.r__email_Name;
|
|
105
105
|
} else if (metadata.r__assetMessage_Key) {
|
|
106
106
|
// content builder
|
|
107
|
-
// * this ignores r__assetMessage_Name on purpose as that is only unique per parent folder but useful during PR reviews
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
107
|
+
// * this ignores r__assetMessage_Name on purpose\ as that is only unique per parent folder but useful during PR reviews
|
|
108
|
+
// will try to find the key with the bu mid at the end, if unable, will try to find the key without it
|
|
109
|
+
try {
|
|
110
|
+
// check asset key as provided
|
|
111
|
+
metadata.Email.ID = cache.searchForField(
|
|
112
|
+
'asset',
|
|
113
|
+
metadata.r__assetMessage_Key,
|
|
114
|
+
'customerKey',
|
|
115
|
+
'legacyData.legacyId'
|
|
116
|
+
);
|
|
117
|
+
delete metadata.r__assetMessage_Key;
|
|
118
|
+
delete metadata.r__assetMessage_Name;
|
|
119
|
+
} catch {
|
|
120
|
+
// if we deploy to another BU, try applying the BU's MID to the end, which we do in preDeployTasks for assets
|
|
121
|
+
|
|
122
|
+
// get suffix to update customer key at the end
|
|
123
|
+
const suffix = '-' + this.buObject.mid;
|
|
124
|
+
|
|
125
|
+
metadata.Email.ID = cache.searchForField(
|
|
126
|
+
'asset',
|
|
127
|
+
metadata.r__assetMessage_Key.slice(0, Math.max(0, 36 - suffix.length)) + suffix,
|
|
128
|
+
'customerKey',
|
|
129
|
+
'legacyData.legacyId'
|
|
130
|
+
);
|
|
131
|
+
delete metadata.r__assetMessage_Key;
|
|
132
|
+
delete metadata.r__assetMessage_Name;
|
|
133
|
+
}
|
|
116
134
|
}
|
|
117
135
|
// Target Audience DataExtension
|
|
118
136
|
// normalize first because this can be an array
|
|
@@ -129,7 +147,7 @@ class EmailSendDefinition extends MetadataType {
|
|
|
129
147
|
if (sdl.r__dataExtension_Key) {
|
|
130
148
|
if (sdl.DataSourceTypeID !== 'CustomObject') {
|
|
131
149
|
throw new Error(
|
|
132
|
-
`
|
|
150
|
+
` ☇ skipping ${this.definition.type} ${metadata.Name} (${metadata.CustomerKey}): Expecting DataSourceTypeID to equal 'CustomObject' when r__dataExtension_Key is defined; Found '${sdl.DataSourceTypeID}'`
|
|
133
151
|
);
|
|
134
152
|
}
|
|
135
153
|
sdl.CustomObjectID = cache.searchForField(
|
|
@@ -141,9 +159,13 @@ class EmailSendDefinition extends MetadataType {
|
|
|
141
159
|
delete sdl.r__dataExtension_Key;
|
|
142
160
|
} else if (sdl.DataSourceTypeID === 'CustomObject') {
|
|
143
161
|
throw new Error(
|
|
144
|
-
`
|
|
162
|
+
` ☇ skipping ${this.definition.type} ${metadata.Name} (${metadata.CustomerKey}): Expecting r__dataExtension_Key to be defined if DataSourceTypeID='CustomObject'`
|
|
145
163
|
);
|
|
146
164
|
}
|
|
165
|
+
if (!sdl.SalesForceObjectID || sdl.SalesForceObjectID === '') {
|
|
166
|
+
// otherwise this causes error 42117 / invalid ObjectID
|
|
167
|
+
delete sdl.SalesForceObjectID;
|
|
168
|
+
}
|
|
147
169
|
// get List (required)
|
|
148
170
|
if (sdl.r__list_PathName) {
|
|
149
171
|
sdl.List = {
|
|
@@ -152,7 +174,7 @@ class EmailSendDefinition extends MetadataType {
|
|
|
152
174
|
delete sdl.r__list_PathName;
|
|
153
175
|
} else {
|
|
154
176
|
throw new Error(
|
|
155
|
-
`Field SendDefinitionList.r__list_PathName was not defined. Please try re-retrieving this ESD from your source BU.`
|
|
177
|
+
` ☇ skipping ${this.definition.type} ${metadata.Name} (${metadata.CustomerKey}) Field SendDefinitionList.r__list_PathName was not defined. Please try re-retrieving this ESD from your source BU.`
|
|
156
178
|
);
|
|
157
179
|
}
|
|
158
180
|
}
|
|
@@ -182,33 +204,39 @@ class EmailSendDefinition extends MetadataType {
|
|
|
182
204
|
super.setFolderPath(metadata);
|
|
183
205
|
|
|
184
206
|
// email
|
|
185
|
-
|
|
186
|
-
// classic
|
|
187
|
-
const classicEmail = cache.searchForField('email', metadata.Email.ID, 'ID', 'Name');
|
|
188
|
-
metadata.r__email_Name = classicEmail;
|
|
189
|
-
delete metadata.Email;
|
|
190
|
-
} catch {
|
|
207
|
+
if (metadata.Email?.ID) {
|
|
191
208
|
try {
|
|
192
|
-
//
|
|
193
|
-
const
|
|
194
|
-
|
|
195
|
-
metadata.Email.ID,
|
|
196
|
-
'legacyData.legacyId',
|
|
197
|
-
'name'
|
|
198
|
-
);
|
|
199
|
-
metadata.r__assetMessage_Name = contentBuilderEmailName;
|
|
200
|
-
const contentBuilderEmailKey = cache.searchForField(
|
|
201
|
-
'asset',
|
|
202
|
-
metadata.Email.ID,
|
|
203
|
-
'legacyData.legacyId',
|
|
204
|
-
'customerKey'
|
|
205
|
-
);
|
|
206
|
-
metadata.r__assetMessage_Key = contentBuilderEmailKey;
|
|
209
|
+
// classic
|
|
210
|
+
const classicEmail = cache.searchForField('email', metadata.Email.ID, 'ID', 'Name');
|
|
211
|
+
metadata.r__email_Name = classicEmail;
|
|
207
212
|
delete metadata.Email;
|
|
208
213
|
} catch {
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
214
|
+
try {
|
|
215
|
+
// content builder
|
|
216
|
+
const contentBuilderEmailName = cache.searchForField(
|
|
217
|
+
'asset',
|
|
218
|
+
metadata.Email.ID,
|
|
219
|
+
'legacyData.legacyId',
|
|
220
|
+
'name'
|
|
221
|
+
);
|
|
222
|
+
metadata.r__assetMessage_Name = contentBuilderEmailName;
|
|
223
|
+
const contentBuilderEmailKey = cache.searchForField(
|
|
224
|
+
'asset',
|
|
225
|
+
metadata.Email.ID,
|
|
226
|
+
'legacyData.legacyId',
|
|
227
|
+
'customerKey'
|
|
228
|
+
);
|
|
229
|
+
metadata.r__assetMessage_Key = contentBuilderEmailKey;
|
|
230
|
+
delete metadata.Email;
|
|
231
|
+
} catch {
|
|
232
|
+
Util.logger.warn(
|
|
233
|
+
` - ${this.definition.type} ${metadata[this.definition.nameField]} (${
|
|
234
|
+
metadata[this.definition.keyField]
|
|
235
|
+
}): Could not find email with ID ${
|
|
236
|
+
metadata.Email.ID
|
|
237
|
+
} in Classic nor in Content Builder.`
|
|
238
|
+
);
|
|
239
|
+
}
|
|
212
240
|
}
|
|
213
241
|
}
|
|
214
242
|
// Target Audience DataExtension
|
|
@@ -232,18 +260,30 @@ class EmailSendDefinition extends MetadataType {
|
|
|
232
260
|
delete sdl.CustomObjectID;
|
|
233
261
|
} catch {
|
|
234
262
|
Util.logger.warn(
|
|
235
|
-
` - ${this.definition.
|
|
263
|
+
` - ${this.definition.type} ${metadata[this.definition.nameField]} (${
|
|
264
|
+
metadata[this.definition.keyField]
|
|
265
|
+
}): Could not find Target Audience (DataExtension) with ObjectID ${
|
|
266
|
+
sdl.CustomObjectID
|
|
267
|
+
}.`
|
|
236
268
|
);
|
|
237
269
|
}
|
|
238
270
|
}
|
|
239
271
|
// List
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
272
|
+
if (sdl.List?.ID) {
|
|
273
|
+
try {
|
|
274
|
+
sdl.r__list_PathName = cache.getListPathName(sdl.List.ID, 'ID');
|
|
275
|
+
delete sdl.List;
|
|
276
|
+
} catch (ex) {
|
|
277
|
+
Util.logger.warn(
|
|
278
|
+
` - ${this.definition.type} ${metadata[this.definition.nameField]} (${
|
|
279
|
+
metadata[this.definition.keyField]
|
|
280
|
+
}): ${ex.message}`
|
|
281
|
+
);
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
if (!sdl.SalesForceObjectID) {
|
|
285
|
+
// otherwise this causes error 42117 / invalid ObjectID
|
|
286
|
+
delete sdl.SalesForceObjectID;
|
|
247
287
|
}
|
|
248
288
|
}
|
|
249
289
|
|
|
@@ -27,6 +27,7 @@ class Interaction extends MetadataType {
|
|
|
27
27
|
* @returns {Promise.<TYPE.MetadataTypeMapObj>} Promise
|
|
28
28
|
*/
|
|
29
29
|
static async retrieve(retrieveDir, _, __, key) {
|
|
30
|
+
const extrasDefault = 'activities';
|
|
30
31
|
if (retrieveDir) {
|
|
31
32
|
// only print this during retrieve, not during retrieveForCache
|
|
32
33
|
Util.logBeta(this.definition.type);
|
|
@@ -59,17 +60,81 @@ class Interaction extends MetadataType {
|
|
|
59
60
|
}
|
|
60
61
|
/* eslint-enable unicorn/prefer-ternary */
|
|
61
62
|
}
|
|
62
|
-
// full details for retrieve, only base data for caching; reduces caching time from minutes to seconds
|
|
63
|
-
const extras = retrieveDir ? 'all' : '';
|
|
64
63
|
|
|
65
64
|
try {
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
65
|
+
const uri = `/interaction/v1/interactions/`;
|
|
66
|
+
if (singleKey || !retrieveDir) {
|
|
67
|
+
// full details for retrieve, only base data for caching; reduces caching time from minutes to seconds
|
|
68
|
+
const extras = retrieveDir && singleKey ? extrasDefault : '';
|
|
69
|
+
|
|
70
|
+
// caching or single retrieve
|
|
71
|
+
return await super.retrieveREST(
|
|
72
|
+
retrieveDir,
|
|
73
|
+
`${uri}${singleKey}?extras=${extras}`,
|
|
74
|
+
null,
|
|
75
|
+
null,
|
|
76
|
+
key
|
|
77
|
+
);
|
|
78
|
+
} else {
|
|
79
|
+
// retrieve all
|
|
80
|
+
const results = this.definition.restPagination
|
|
81
|
+
? await this.client.rest.getBulk(uri, this.definition.restPageSize || 500)
|
|
82
|
+
: await this.client.rest.get(uri);
|
|
83
|
+
// const results = this.parseResponseBody(response);
|
|
84
|
+
if (results.items?.length) {
|
|
85
|
+
// empty results will come back without "items" defined
|
|
86
|
+
Util.logger.info(
|
|
87
|
+
Util.getGrayMsg(
|
|
88
|
+
` - ${results.items?.length} ${this.definition.type}s found. Retrieving details...`
|
|
89
|
+
)
|
|
90
|
+
);
|
|
91
|
+
}
|
|
92
|
+
// full details for retrieve
|
|
93
|
+
const extras = extrasDefault;
|
|
94
|
+
|
|
95
|
+
const details = results.items
|
|
96
|
+
? await Promise.all(
|
|
97
|
+
results.items.map(async (a) => {
|
|
98
|
+
try {
|
|
99
|
+
return await this.client.rest.get(
|
|
100
|
+
`${uri}key:${a[this.definition.keyField]}?extras=${extras}`
|
|
101
|
+
);
|
|
102
|
+
} catch (ex) {
|
|
103
|
+
// if we do get here, we should log the error and continue instead of failing to download all automations
|
|
104
|
+
Util.logger.error(
|
|
105
|
+
` ☇ skipping ${this.definition.type} ${
|
|
106
|
+
a[this.definition.nameField]
|
|
107
|
+
} (${a[this.definition.keyField]}): ${ex.message} (${
|
|
108
|
+
ex.code
|
|
109
|
+
})${
|
|
110
|
+
ex.endpoint
|
|
111
|
+
? Util.getGrayMsg(
|
|
112
|
+
' - ' +
|
|
113
|
+
ex.endpoint.split(
|
|
114
|
+
'rest.marketingcloudapis.com'
|
|
115
|
+
)[1]
|
|
116
|
+
)
|
|
117
|
+
: ''
|
|
118
|
+
}`
|
|
119
|
+
);
|
|
120
|
+
return null;
|
|
121
|
+
}
|
|
122
|
+
})
|
|
123
|
+
)
|
|
124
|
+
: [];
|
|
125
|
+
const parsed = this.parseResponseBody({ items: details.filter(Boolean) });
|
|
126
|
+
|
|
127
|
+
// * retrieveDir is mandatory in this method as it is not used for caching (there is a seperate method for that)
|
|
128
|
+
const savedMetadata = await this.saveResults(parsed, retrieveDir, null, null);
|
|
129
|
+
Util.logger.info(
|
|
130
|
+
`Downloaded: ${this.definition.type} (${Object.keys(savedMetadata).length})` +
|
|
131
|
+
Util.getKeysString(key)
|
|
132
|
+
);
|
|
133
|
+
return {
|
|
134
|
+
metadata: parsed,
|
|
135
|
+
type: this.definition.type,
|
|
136
|
+
};
|
|
137
|
+
}
|
|
73
138
|
} catch (ex) {
|
|
74
139
|
// if the interaction does not exist, the API returns an error code which would otherwise bring execution to a hold
|
|
75
140
|
if (
|
|
@@ -53,21 +53,23 @@ class List extends MetadataType {
|
|
|
53
53
|
*/
|
|
54
54
|
static async retrieveForCache() {
|
|
55
55
|
const results = await this.retrieve();
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
56
|
+
const subTypeArr = [
|
|
57
|
+
'list',
|
|
58
|
+
'mysubs',
|
|
59
|
+
'suppression_list',
|
|
60
|
+
'publication',
|
|
61
|
+
'contextual_suppression_list',
|
|
62
|
+
];
|
|
63
|
+
Util.logger.debug('folders not cached but required for list');
|
|
64
|
+
Util.logger.info(' - Caching dependent Metadata: folder');
|
|
65
|
+
Util.logSubtypes(subTypeArr);
|
|
66
|
+
Folder.client = this.client;
|
|
67
|
+
Folder.buObject = this.buObject;
|
|
68
|
+
Folder.properties = this.properties;
|
|
69
|
+
const result = await Folder.retrieveForCache(null, subTypeArr);
|
|
70
|
+
if (cache.getCache()?.folder) {
|
|
71
|
+
cache.mergeMetadata('folder', result.metadata);
|
|
72
|
+
} else {
|
|
71
73
|
cache.setMetadata('folder', result.metadata);
|
|
72
74
|
}
|
|
73
75
|
for (const metadataEntry in results.metadata) {
|
|
@@ -725,7 +725,7 @@ class MetadataType {
|
|
|
725
725
|
Util.logger.info(
|
|
726
726
|
` - updated ${this.definition.type}: ${
|
|
727
727
|
metadataEntry[this.definition.keyField]
|
|
728
|
-
} /
|
|
728
|
+
} / ${metadataEntry[this.definition.nameField]}`
|
|
729
729
|
);
|
|
730
730
|
}
|
|
731
731
|
return response;
|
|
@@ -132,8 +132,9 @@ class TriggeredSendDefinition extends MetadataType {
|
|
|
132
132
|
this.setFolderPath(metadata);
|
|
133
133
|
} catch {
|
|
134
134
|
Util.logger.verbose(
|
|
135
|
-
`
|
|
135
|
+
` ☇ skipping ${this.definition.typeName} '${metadata.Name}'/'${metadata.CustomerKey}': Could not find folder.`
|
|
136
136
|
);
|
|
137
|
+
// do not save this TSD because it would not be visible in the user interface
|
|
137
138
|
return;
|
|
138
139
|
}
|
|
139
140
|
|
|
@@ -163,9 +164,9 @@ class TriggeredSendDefinition extends MetadataType {
|
|
|
163
164
|
delete metadata.Email;
|
|
164
165
|
} catch {
|
|
165
166
|
Util.logger.verbose(
|
|
166
|
-
` -
|
|
167
|
+
` - ${this.definition.typeName} '${metadata.Name}'/'${metadata.CustomerKey}': Could not find email with ID ${metadata.Email.ID} in Classic nor in Content Builder. This TSD cannot be replublished but potentially restarted with its cached version of the email.`
|
|
167
168
|
);
|
|
168
|
-
|
|
169
|
+
// save this TSD because it could be fixed by the user or potentially restarted without a fix; also, it might be used by a journey
|
|
169
170
|
}
|
|
170
171
|
}
|
|
171
172
|
// List (optional)
|
|
@@ -175,9 +176,9 @@ class TriggeredSendDefinition extends MetadataType {
|
|
|
175
176
|
delete metadata.List;
|
|
176
177
|
} catch (ex) {
|
|
177
178
|
Util.logger.verbose(
|
|
178
|
-
` -
|
|
179
|
+
` - ${this.definition.typeName} '${metadata.Name}'/'${metadata.CustomerKey}': ${ex.message}`
|
|
179
180
|
);
|
|
180
|
-
|
|
181
|
+
// save this TSD because it could be fixed by the user
|
|
181
182
|
}
|
|
182
183
|
}
|
|
183
184
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
module.exports = {
|
|
2
2
|
bodyIteratorField: 'Results',
|
|
3
|
-
dependencies: ['folder-userinitiatedsends', 'email', 'asset-message', 'dataExtension', 'list'], // filter,
|
|
3
|
+
dependencies: ['folder-userinitiatedsends', 'email', 'asset-message', 'dataExtension', 'list'], // filter(+), sendClassification(+), SenderProfile(n/a), DeliveryProfile(n/a)
|
|
4
4
|
folderType: 'userinitiatedsends',
|
|
5
5
|
hasExtended: false,
|
|
6
6
|
idField: 'ObjectID',
|
|
@@ -22,31 +22,31 @@ module.exports = {
|
|
|
22
22
|
isCreateable: true,
|
|
23
23
|
isUpdateable: true,
|
|
24
24
|
retrieving: true,
|
|
25
|
-
templating:
|
|
25
|
+
templating: true,
|
|
26
26
|
},
|
|
27
27
|
AutoBccEmail: {
|
|
28
28
|
isCreateable: true,
|
|
29
29
|
isUpdateable: true,
|
|
30
30
|
retrieving: true,
|
|
31
|
-
templating:
|
|
31
|
+
templating: true,
|
|
32
32
|
},
|
|
33
33
|
BccEmail: {
|
|
34
34
|
isCreateable: true,
|
|
35
35
|
isUpdateable: true,
|
|
36
36
|
retrieving: true,
|
|
37
|
-
templating:
|
|
37
|
+
templating: true,
|
|
38
38
|
},
|
|
39
39
|
CategoryID: {
|
|
40
40
|
isCreateable: true,
|
|
41
41
|
isUpdateable: true,
|
|
42
42
|
retrieving: true,
|
|
43
|
-
templating:
|
|
43
|
+
templating: true,
|
|
44
44
|
},
|
|
45
45
|
CCEmail: {
|
|
46
46
|
isCreateable: true,
|
|
47
47
|
isUpdateable: true,
|
|
48
48
|
retrieving: true,
|
|
49
|
-
templating:
|
|
49
|
+
templating: true,
|
|
50
50
|
},
|
|
51
51
|
'Client.ID': {
|
|
52
52
|
isCreateable: false,
|
|
@@ -61,8 +61,8 @@ module.exports = {
|
|
|
61
61
|
templating: false,
|
|
62
62
|
},
|
|
63
63
|
CreatedDate: {
|
|
64
|
-
isCreateable:
|
|
65
|
-
isUpdateable:
|
|
64
|
+
isCreateable: false,
|
|
65
|
+
isUpdateable: false,
|
|
66
66
|
retrieving: true,
|
|
67
67
|
templating: false,
|
|
68
68
|
},
|
|
@@ -70,19 +70,19 @@ module.exports = {
|
|
|
70
70
|
isCreateable: true,
|
|
71
71
|
isUpdateable: true,
|
|
72
72
|
retrieving: true,
|
|
73
|
-
templating:
|
|
73
|
+
templating: true,
|
|
74
74
|
},
|
|
75
75
|
DeduplicateByEmail: {
|
|
76
76
|
isCreateable: true,
|
|
77
77
|
isUpdateable: true,
|
|
78
78
|
retrieving: true,
|
|
79
|
-
templating:
|
|
79
|
+
templating: true,
|
|
80
80
|
},
|
|
81
81
|
'DeliveryProfile.CustomerKey': {
|
|
82
82
|
isCreateable: true,
|
|
83
83
|
isUpdateable: true,
|
|
84
84
|
retrieving: true,
|
|
85
|
-
templating:
|
|
85
|
+
templating: true,
|
|
86
86
|
},
|
|
87
87
|
'DeliveryProfile.DomainType': {
|
|
88
88
|
isCreateable: false,
|
|
@@ -130,13 +130,13 @@ module.exports = {
|
|
|
130
130
|
isCreateable: true,
|
|
131
131
|
isUpdateable: true,
|
|
132
132
|
retrieving: true,
|
|
133
|
-
templating:
|
|
133
|
+
templating: true,
|
|
134
134
|
},
|
|
135
135
|
'DeliveryProfile.PrivateIP': {
|
|
136
136
|
isCreateable: true,
|
|
137
137
|
isUpdateable: true,
|
|
138
138
|
retrieving: true,
|
|
139
|
-
templating:
|
|
139
|
+
templating: true,
|
|
140
140
|
},
|
|
141
141
|
'DeliveryProfile.SourceAddressType': {
|
|
142
142
|
isCreateable: false,
|
|
@@ -154,7 +154,7 @@ module.exports = {
|
|
|
154
154
|
isCreateable: true,
|
|
155
155
|
isUpdateable: true,
|
|
156
156
|
retrieving: true,
|
|
157
|
-
templating:
|
|
157
|
+
templating: true,
|
|
158
158
|
},
|
|
159
159
|
DomainType: {
|
|
160
160
|
isCreateable: false,
|
|
@@ -166,13 +166,13 @@ module.exports = {
|
|
|
166
166
|
isCreateable: true,
|
|
167
167
|
isUpdateable: true,
|
|
168
168
|
retrieving: true,
|
|
169
|
-
templating:
|
|
169
|
+
templating: true,
|
|
170
170
|
},
|
|
171
171
|
'Email.ID': {
|
|
172
172
|
isCreateable: true,
|
|
173
173
|
isUpdateable: true,
|
|
174
174
|
retrieving: true,
|
|
175
|
-
templating:
|
|
175
|
+
templating: true,
|
|
176
176
|
},
|
|
177
177
|
'Email.ObjectID': {
|
|
178
178
|
isCreateable: false,
|
|
@@ -186,17 +186,35 @@ module.exports = {
|
|
|
186
186
|
retrieving: false,
|
|
187
187
|
templating: false,
|
|
188
188
|
},
|
|
189
|
+
'Email.Name': {
|
|
190
|
+
isCreateable: true,
|
|
191
|
+
isUpdateable: true,
|
|
192
|
+
retrieving: false,
|
|
193
|
+
templating: false,
|
|
194
|
+
},
|
|
195
|
+
'Email.Subject': {
|
|
196
|
+
isCreateable: true,
|
|
197
|
+
isUpdateable: true,
|
|
198
|
+
retrieving: false,
|
|
199
|
+
templating: false,
|
|
200
|
+
},
|
|
201
|
+
'Email.Status': {
|
|
202
|
+
isCreateable: true,
|
|
203
|
+
isUpdateable: true,
|
|
204
|
+
retrieving: false,
|
|
205
|
+
templating: false,
|
|
206
|
+
},
|
|
189
207
|
EmailSubject: {
|
|
190
208
|
isCreateable: true,
|
|
191
209
|
isUpdateable: true,
|
|
192
210
|
retrieving: true,
|
|
193
|
-
templating:
|
|
211
|
+
templating: true,
|
|
194
212
|
},
|
|
195
213
|
ExclusionFilter: {
|
|
196
214
|
isCreateable: true,
|
|
197
215
|
isUpdateable: true,
|
|
198
216
|
retrieving: true,
|
|
199
|
-
templating:
|
|
217
|
+
templating: true,
|
|
200
218
|
},
|
|
201
219
|
FooterContentArea: {
|
|
202
220
|
isCreateable: false,
|
|
@@ -256,7 +274,7 @@ module.exports = {
|
|
|
256
274
|
isCreateable: true,
|
|
257
275
|
isUpdateable: true,
|
|
258
276
|
retrieving: true,
|
|
259
|
-
templating:
|
|
277
|
+
templating: true,
|
|
260
278
|
},
|
|
261
279
|
IsPlatformObject: {
|
|
262
280
|
isCreateable: true,
|
|
@@ -280,7 +298,7 @@ module.exports = {
|
|
|
280
298
|
isCreateable: true,
|
|
281
299
|
isUpdateable: true,
|
|
282
300
|
retrieving: true,
|
|
283
|
-
templating:
|
|
301
|
+
templating: true,
|
|
284
302
|
},
|
|
285
303
|
Keyword: {
|
|
286
304
|
isCreateable: false,
|
|
@@ -295,8 +313,8 @@ module.exports = {
|
|
|
295
313
|
templating: false,
|
|
296
314
|
},
|
|
297
315
|
ModifiedDate: {
|
|
298
|
-
isCreateable:
|
|
299
|
-
isUpdateable:
|
|
316
|
+
isCreateable: false,
|
|
317
|
+
isUpdateable: false,
|
|
300
318
|
retrieving: true,
|
|
301
319
|
templating: false,
|
|
302
320
|
},
|
|
@@ -304,7 +322,7 @@ module.exports = {
|
|
|
304
322
|
isCreateable: true,
|
|
305
323
|
isUpdateable: true,
|
|
306
324
|
retrieving: true,
|
|
307
|
-
templating:
|
|
325
|
+
templating: true,
|
|
308
326
|
},
|
|
309
327
|
ObjectID: {
|
|
310
328
|
isCreateable: false,
|
|
@@ -376,7 +394,7 @@ module.exports = {
|
|
|
376
394
|
isCreateable: true,
|
|
377
395
|
isUpdateable: true,
|
|
378
396
|
retrieving: true,
|
|
379
|
-
templating:
|
|
397
|
+
templating: true,
|
|
380
398
|
},
|
|
381
399
|
'SendClassification.ObjectID': {
|
|
382
400
|
isCreateable: false,
|
|
@@ -400,7 +418,7 @@ module.exports = {
|
|
|
400
418
|
isCreateable: true,
|
|
401
419
|
isUpdateable: true,
|
|
402
420
|
retrieving: true,
|
|
403
|
-
templating:
|
|
421
|
+
templating: true,
|
|
404
422
|
},
|
|
405
423
|
'SendDefinitionList[].ObjectID': {
|
|
406
424
|
isCreateable: false,
|
|
@@ -414,6 +432,9 @@ module.exports = {
|
|
|
414
432
|
retrieving: false,
|
|
415
433
|
templating: false,
|
|
416
434
|
},
|
|
435
|
+
'SendDefinitionList[].CustomObjectID': {
|
|
436
|
+
skipValidation: true, // cannot be asked for but will be retrieved
|
|
437
|
+
},
|
|
417
438
|
'SendDefinitionList[].SendDefinitionListType': {
|
|
418
439
|
skipValidation: true, // cannot be asked for but will be retrieved
|
|
419
440
|
},
|
|
@@ -448,7 +469,7 @@ module.exports = {
|
|
|
448
469
|
isCreateable: true,
|
|
449
470
|
isUpdateable: true,
|
|
450
471
|
retrieving: true,
|
|
451
|
-
templating:
|
|
472
|
+
templating: true,
|
|
452
473
|
},
|
|
453
474
|
'SenderProfile.FromAddress': {
|
|
454
475
|
isCreateable: false,
|
|
@@ -478,13 +499,13 @@ module.exports = {
|
|
|
478
499
|
isCreateable: true,
|
|
479
500
|
isUpdateable: true,
|
|
480
501
|
retrieving: true,
|
|
481
|
-
templating:
|
|
502
|
+
templating: true,
|
|
482
503
|
},
|
|
483
504
|
SendWindowClose: {
|
|
484
505
|
isCreateable: true,
|
|
485
506
|
isUpdateable: true,
|
|
486
507
|
retrieving: true,
|
|
487
|
-
templating:
|
|
508
|
+
templating: true,
|
|
488
509
|
},
|
|
489
510
|
SendWindowDelete: {
|
|
490
511
|
isCreateable: false,
|
|
@@ -496,7 +517,7 @@ module.exports = {
|
|
|
496
517
|
isCreateable: true,
|
|
497
518
|
isUpdateable: true,
|
|
498
519
|
retrieving: true,
|
|
499
|
-
templating:
|
|
520
|
+
templating: true,
|
|
500
521
|
},
|
|
501
522
|
SourceAddressType: {
|
|
502
523
|
isCreateable: false,
|
|
@@ -508,13 +529,13 @@ module.exports = {
|
|
|
508
529
|
isCreateable: true,
|
|
509
530
|
isUpdateable: true,
|
|
510
531
|
retrieving: true,
|
|
511
|
-
templating:
|
|
532
|
+
templating: true,
|
|
512
533
|
},
|
|
513
534
|
TestEmailAddr: {
|
|
514
535
|
isCreateable: true,
|
|
515
536
|
isUpdateable: true,
|
|
516
537
|
retrieving: true,
|
|
517
|
-
templating:
|
|
538
|
+
templating: true,
|
|
518
539
|
},
|
|
519
540
|
TimeZone: {
|
|
520
541
|
isCreateable: false,
|
|
@@ -15,7 +15,7 @@ module.exports = {
|
|
|
15
15
|
lastmodDateField: 'modifiedDate',
|
|
16
16
|
lastmodNameField: null,
|
|
17
17
|
restPagination: true,
|
|
18
|
-
restPageSize:
|
|
18
|
+
restPageSize: 500,
|
|
19
19
|
type: 'interaction',
|
|
20
20
|
typeDescription: 'Journey (internally called "Interaction").',
|
|
21
21
|
typeRetrieveByDefault: true,
|