mcdev 3.1.3 → 4.0.1
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/.eslintrc.json +67 -7
- package/.github/ISSUE_TEMPLATE/bug.yml +2 -1
- package/.github/PULL_REQUEST_TEMPLATE.md +5 -3
- package/.github/dependabot.yml +14 -0
- package/.github/workflows/code-analysis.yml +57 -0
- package/.husky/commit-msg +10 -0
- package/.husky/post-checkout +5 -0
- package/.husky/pre-commit +2 -1
- package/.prettierrc +8 -0
- package/.vscode/settings.json +1 -1
- package/LICENSE +2 -2
- package/README.md +134 -45
- package/boilerplate/config.json +5 -11
- package/boilerplate/files/.prettierrc +8 -0
- package/boilerplate/files/.vscode/extensions.json +0 -1
- package/boilerplate/files/.vscode/settings.json +30 -2
- package/boilerplate/files/README.md +2 -2
- package/boilerplate/forcedUpdates.json +10 -0
- package/boilerplate/npm-dependencies.json +5 -5
- package/docs/dist/documentation.md +2807 -1730
- package/jsconfig.json +1 -1
- package/lib/Builder.js +171 -74
- package/lib/Deployer.js +244 -96
- package/lib/MetadataTypeDefinitions.js +2 -0
- package/lib/MetadataTypeInfo.js +2 -0
- package/lib/Retriever.js +61 -84
- package/lib/cli.js +116 -11
- package/lib/index.js +241 -561
- package/lib/metadataTypes/AccountUser.js +117 -103
- package/lib/metadataTypes/Asset.js +705 -255
- package/lib/metadataTypes/AttributeGroup.js +23 -12
- package/lib/metadataTypes/Automation.js +489 -392
- package/lib/metadataTypes/Campaign.js +33 -93
- package/lib/metadataTypes/ContentArea.js +31 -11
- package/lib/metadataTypes/DataExtension.js +387 -372
- package/lib/metadataTypes/DataExtensionField.js +131 -54
- package/lib/metadataTypes/DataExtensionTemplate.js +22 -4
- package/lib/metadataTypes/DataExtract.js +61 -48
- package/lib/metadataTypes/DataExtractType.js +14 -8
- package/lib/metadataTypes/Discovery.js +21 -16
- package/lib/metadataTypes/Email.js +32 -12
- package/lib/metadataTypes/EmailSendDefinition.js +85 -80
- package/lib/metadataTypes/EventDefinition.js +61 -43
- package/lib/metadataTypes/FileTransfer.js +72 -52
- package/lib/metadataTypes/Filter.js +11 -4
- package/lib/metadataTypes/Folder.js +149 -117
- package/lib/metadataTypes/FtpLocation.js +14 -8
- package/lib/metadataTypes/ImportFile.js +61 -64
- package/lib/metadataTypes/Interaction.js +19 -4
- package/lib/metadataTypes/List.js +54 -13
- package/lib/metadataTypes/MetadataType.js +664 -454
- package/lib/metadataTypes/MobileCode.js +46 -0
- package/lib/metadataTypes/MobileKeyword.js +114 -0
- package/lib/metadataTypes/Query.js +206 -105
- package/lib/metadataTypes/Role.js +76 -61
- package/lib/metadataTypes/Script.js +147 -83
- package/lib/metadataTypes/SetDefinition.js +20 -8
- package/lib/metadataTypes/TriggeredSendDefinition.js +78 -58
- package/lib/metadataTypes/definitions/Asset.definition.js +21 -10
- package/lib/metadataTypes/definitions/AttributeGroup.definition.js +12 -0
- package/lib/metadataTypes/definitions/Automation.definition.js +10 -5
- package/lib/metadataTypes/definitions/Campaign.definition.js +44 -1
- package/lib/metadataTypes/definitions/DataExtension.definition.js +4 -0
- package/lib/metadataTypes/definitions/DataExtensionTemplate.definition.js +6 -0
- package/lib/metadataTypes/definitions/DataExtract.definition.js +18 -14
- package/lib/metadataTypes/definitions/Discovery.definition.js +12 -0
- package/lib/metadataTypes/definitions/EmailSendDefinition.definition.js +4 -0
- package/lib/metadataTypes/definitions/EventDefinition.definition.js +22 -0
- package/lib/metadataTypes/definitions/FileTransfer.definition.js +4 -0
- package/lib/metadataTypes/definitions/Filter.definition.js +4 -0
- package/lib/metadataTypes/definitions/Folder.definition.js +6 -0
- package/lib/metadataTypes/definitions/FtpLocation.definition.js +4 -0
- package/lib/metadataTypes/definitions/ImportFile.definition.js +10 -5
- package/lib/metadataTypes/definitions/Interaction.definition.js +4 -0
- package/lib/metadataTypes/definitions/MobileCode.definition.js +163 -0
- package/lib/metadataTypes/definitions/MobileKeyword.definition.js +253 -0
- package/lib/metadataTypes/definitions/Query.definition.js +4 -0
- package/lib/metadataTypes/definitions/Role.definition.js +5 -0
- package/lib/metadataTypes/definitions/Script.definition.js +4 -0
- package/lib/metadataTypes/definitions/SetDefinition.definition.js +28 -0
- package/lib/metadataTypes/definitions/TriggeredSendDefinition.definition.js +4 -0
- package/lib/retrieveChangelog.js +7 -6
- package/lib/util/auth.js +117 -0
- package/lib/util/businessUnit.js +55 -66
- package/lib/util/cache.js +194 -0
- package/lib/util/cli.js +90 -116
- package/lib/util/config.js +302 -0
- package/lib/util/devops.js +250 -50
- package/lib/util/file.js +141 -201
- package/lib/util/init.config.js +208 -75
- package/lib/util/init.git.js +45 -50
- package/lib/util/init.js +72 -59
- package/lib/util/init.npm.js +48 -39
- package/lib/util/util.js +280 -564
- package/package.json +45 -34
- package/test/dataExtension.test.js +152 -0
- package/test/mockRoot/.mcdev-auth.json +8 -0
- package/test/mockRoot/.mcdevrc.json +67 -0
- package/test/mockRoot/deploy/testInstance/testBU/dataExtension/childBU_dataextension_test.dataExtension-meta.json +39 -0
- package/test/mockRoot/deploy/testInstance/testBU/dataExtension/testDataExtension.dataExtension-meta.json +23 -0
- package/test/mockRoot/deploy/testInstance/testBU/query/testExistingQuery.query-meta.json +11 -0
- package/test/mockRoot/deploy/testInstance/testBU/query/testExistingQuery.query-meta.sql +4 -0
- package/test/mockRoot/deploy/testInstance/testBU/query/testQuery.query-meta.json +11 -0
- package/test/mockRoot/deploy/testInstance/testBU/query/testQuery.query-meta.sql +4 -0
- package/test/query.test.js +149 -0
- package/test/resourceFactory.js +142 -0
- package/test/resources/1111111/dataFolder/retrieve-response.xml +43 -0
- package/test/resources/9999999/automation/v1/queries/549f0568-607c-4940-afef-437965094dat/patch-response.json +18 -0
- package/test/resources/9999999/automation/v1/queries/get-response.json +24 -0
- package/test/resources/9999999/automation/v1/queries/post-response.json +18 -0
- package/test/resources/9999999/dataExtension/build-expected.json +51 -0
- package/test/resources/9999999/dataExtension/create-expected.json +23 -0
- package/test/resources/9999999/dataExtension/create-response.xml +54 -0
- package/test/resources/9999999/dataExtension/retrieve-expected.json +51 -0
- package/test/resources/9999999/dataExtension/retrieve-response.xml +47 -0
- package/test/resources/9999999/dataExtension/template-expected.json +51 -0
- package/test/resources/9999999/dataExtension/update-expected.json +55 -0
- package/test/resources/9999999/dataExtension/update-response.xml +52 -0
- package/test/resources/9999999/dataExtensionField/retrieve-response.xml +93 -0
- package/test/resources/9999999/dataExtensionTemplate/retrieve-response.xml +303 -0
- package/test/resources/9999999/dataFolder/retrieve-response.xml +65 -0
- package/test/resources/9999999/query/build-expected.json +8 -0
- package/test/resources/9999999/query/get-expected.json +11 -0
- package/test/resources/9999999/query/patch-expected.json +11 -0
- package/test/resources/9999999/query/post-expected.json +11 -0
- package/test/resources/9999999/query/template-expected.json +8 -0
- package/test/resources/auth.json +32 -0
- package/test/resources/rest404-response.json +5 -0
- package/test/resources/retrieve-response.xml +21 -0
- package/test/utils.js +107 -0
- package/types/mcdev.d.js +301 -0
- package/CHANGELOG.md +0 -126
- package/PULL_REQUEST_TEMPLATE.md +0 -19
- package/test/util/file.js +0 -51
|
@@ -1,32 +1,44 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
+
const TYPE = require('../../types/mcdev.d');
|
|
3
4
|
const MetadataType = require('./MetadataType');
|
|
4
5
|
|
|
5
6
|
/**
|
|
6
7
|
* SetDefinition MetadataType
|
|
8
|
+
*
|
|
7
9
|
* @augments MetadataType
|
|
8
10
|
*/
|
|
9
11
|
class SetDefinition extends MetadataType {
|
|
10
12
|
/**
|
|
11
13
|
* Retrieves Metadata of schema set Definitions.
|
|
12
|
-
*
|
|
13
|
-
* @
|
|
14
|
+
*
|
|
15
|
+
* @param {string} retrieveDir Directory where retrieved metadata directory will be saved
|
|
16
|
+
* @param {void} [_] unused parameter
|
|
17
|
+
* @param {void} [__] unused parameter
|
|
18
|
+
* @param {void} [___] unused parameter
|
|
19
|
+
* @param {string} [key] customer key of single item to retrieve
|
|
20
|
+
* @returns {Promise.<TYPE.MetadataTypeMapObj>} Promise
|
|
14
21
|
*/
|
|
15
|
-
static retrieve(retrieveDir) {
|
|
16
|
-
return super.retrieveREST(
|
|
22
|
+
static retrieve(retrieveDir, _, __, ___, key) {
|
|
23
|
+
return super.retrieveREST(
|
|
24
|
+
retrieveDir,
|
|
25
|
+
'/hub/v1/contacts/schema/setDefinitions',
|
|
26
|
+
null,
|
|
27
|
+
null,
|
|
28
|
+
key
|
|
29
|
+
);
|
|
17
30
|
}
|
|
18
31
|
/**
|
|
19
32
|
* Retrieves Metadata of schema set definitions for caching.
|
|
20
|
-
*
|
|
33
|
+
*
|
|
34
|
+
* @returns {Promise.<TYPE.MetadataTypeMapObj>} Promise
|
|
21
35
|
*/
|
|
22
36
|
static retrieveForCache() {
|
|
23
|
-
return super.retrieveREST(null, '/hub/v1/contacts/schema/setDefinitions'
|
|
37
|
+
return super.retrieveREST(null, '/hub/v1/contacts/schema/setDefinitions');
|
|
24
38
|
}
|
|
25
39
|
}
|
|
26
40
|
|
|
27
41
|
// Assign definition to static attributes
|
|
28
42
|
SetDefinition.definition = require('../MetadataTypeDefinitions').setDefinition;
|
|
29
|
-
SetDefinition.cache = {};
|
|
30
|
-
SetDefinition.client = undefined;
|
|
31
43
|
|
|
32
44
|
module.exports = SetDefinition;
|
|
@@ -1,20 +1,29 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
+
const TYPE = require('../../types/mcdev.d');
|
|
3
4
|
const MetadataType = require('./MetadataType');
|
|
4
5
|
const Util = require('../util/util');
|
|
6
|
+
const cache = require('../util/cache');
|
|
5
7
|
|
|
6
8
|
/**
|
|
7
9
|
* MessageSendActivity MetadataType
|
|
10
|
+
*
|
|
8
11
|
* @augments MetadataType
|
|
9
12
|
*/
|
|
10
13
|
class TriggeredSendDefinition extends MetadataType {
|
|
11
14
|
/**
|
|
12
15
|
* Retrieves SOAP based metadata of metadata type into local filesystem. executes callback with retrieved metadata
|
|
13
|
-
*
|
|
14
|
-
* @
|
|
16
|
+
*
|
|
17
|
+
* @param {string} retrieveDir Directory where retrieved metadata directory will be saved
|
|
18
|
+
* @param {void} [_] unused parameter
|
|
19
|
+
* @param {void} [__] unused parameter
|
|
20
|
+
* @param {void} [___] unused parameter
|
|
21
|
+
* @param {string} [key] customer key of single item to retrieve
|
|
22
|
+
* @returns {Promise.<TYPE.MetadataTypeMapObj>} Promise of metadata
|
|
15
23
|
*/
|
|
16
|
-
static retrieve(retrieveDir) {
|
|
17
|
-
|
|
24
|
+
static retrieve(retrieveDir, _, __, ___, key) {
|
|
25
|
+
/** @type {TYPE.SoapRequestParams} */
|
|
26
|
+
let requestParams = {
|
|
18
27
|
filter: {
|
|
19
28
|
leftOperand: {
|
|
20
29
|
// somehow that parameter controls visible (non deleted?) email send activities
|
|
@@ -30,12 +39,28 @@ class TriggeredSendDefinition extends MetadataType {
|
|
|
30
39
|
},
|
|
31
40
|
},
|
|
32
41
|
};
|
|
33
|
-
|
|
42
|
+
if (key) {
|
|
43
|
+
// move original filter down one level into rightOperand and add key filter into leftOperand
|
|
44
|
+
requestParams = {
|
|
45
|
+
filter: {
|
|
46
|
+
leftOperand: {
|
|
47
|
+
leftOperand: 'CustomerKey',
|
|
48
|
+
operator: 'equals',
|
|
49
|
+
rightOperand: key,
|
|
50
|
+
},
|
|
51
|
+
operator: 'AND',
|
|
52
|
+
rightOperand: requestParams.filter,
|
|
53
|
+
},
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
return super.retrieveSOAP(retrieveDir, null, requestParams);
|
|
34
58
|
}
|
|
35
59
|
|
|
36
60
|
/**
|
|
37
61
|
* Create a single TSD.
|
|
38
|
-
*
|
|
62
|
+
*
|
|
63
|
+
* @param {TYPE.MetadataTypeItem} metadata single metadata entry
|
|
39
64
|
* @returns {Promise} Promise
|
|
40
65
|
*/
|
|
41
66
|
static create(metadata) {
|
|
@@ -44,7 +69,8 @@ class TriggeredSendDefinition extends MetadataType {
|
|
|
44
69
|
|
|
45
70
|
/**
|
|
46
71
|
* Updates a single TSD.
|
|
47
|
-
*
|
|
72
|
+
*
|
|
73
|
+
* @param {TYPE.MetadataTypeItem} metadata single metadata entry
|
|
48
74
|
* @returns {Promise} Promise
|
|
49
75
|
*/
|
|
50
76
|
static update(metadata) {
|
|
@@ -52,29 +78,41 @@ class TriggeredSendDefinition extends MetadataType {
|
|
|
52
78
|
// * this should be done manually to not accidentally purge production queues
|
|
53
79
|
return super.updateSOAP(metadata);
|
|
54
80
|
}
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Delete a metadata item from the specified business unit
|
|
84
|
+
*
|
|
85
|
+
* @param {TYPE.BuObject} buObject references credentials
|
|
86
|
+
* @param {string} customerKey Identifier of data extension
|
|
87
|
+
* @returns {Promise.<boolean>} deletion success status
|
|
88
|
+
*/
|
|
89
|
+
static deleteByKey(buObject, customerKey) {
|
|
90
|
+
return super.deleteByKeySOAP(buObject, customerKey, false);
|
|
91
|
+
}
|
|
92
|
+
|
|
55
93
|
/**
|
|
56
94
|
* checks if the current metadata entry should be saved on retrieve or not
|
|
95
|
+
*
|
|
57
96
|
* @static
|
|
58
|
-
* @param {
|
|
97
|
+
* @param {object} metadataEntry metadata entry
|
|
59
98
|
* @returns {boolean} if false, do not save
|
|
60
99
|
* @memberof MetadataType
|
|
61
100
|
*/
|
|
62
101
|
static isFiltered(metadataEntry) {
|
|
63
102
|
try {
|
|
64
103
|
// get folder path to be able to filter journey-created TSDs
|
|
65
|
-
const folderPath =
|
|
66
|
-
this.cache,
|
|
104
|
+
const folderPath = cache.searchForField(
|
|
67
105
|
'folder',
|
|
68
106
|
metadataEntry.CategoryID,
|
|
69
107
|
'ID',
|
|
70
108
|
'Path'
|
|
71
109
|
);
|
|
72
110
|
|
|
73
|
-
if (folderPath
|
|
111
|
+
if (folderPath?.startsWith('Journey Builder Sends/')) {
|
|
74
112
|
// filter out any triggered sends that were auto-created by journeys
|
|
75
113
|
return true;
|
|
76
114
|
}
|
|
77
|
-
} catch
|
|
115
|
+
} catch {
|
|
78
116
|
// handle it in parseMetadata()
|
|
79
117
|
}
|
|
80
118
|
return false;
|
|
@@ -82,24 +120,25 @@ class TriggeredSendDefinition extends MetadataType {
|
|
|
82
120
|
|
|
83
121
|
/**
|
|
84
122
|
* manages post retrieve steps
|
|
85
|
-
*
|
|
86
|
-
* @
|
|
123
|
+
*
|
|
124
|
+
* @param {TYPE.MetadataTypeItem} metadata a single query
|
|
125
|
+
* @returns {TYPE.MetadataTypeItem} Array with one metadata object and one query string
|
|
87
126
|
*/
|
|
88
127
|
static postRetrieveTasks(metadata) {
|
|
89
128
|
return this.parseMetadata(metadata);
|
|
90
129
|
}
|
|
91
130
|
/**
|
|
92
131
|
* parses retrieved Metadata before saving
|
|
93
|
-
*
|
|
94
|
-
* @
|
|
132
|
+
*
|
|
133
|
+
* @param {TYPE.MetadataTypeItem} metadata a single query activity definition
|
|
134
|
+
* @returns {TYPE.MetadataTypeItem} Array with one metadata object and one sql string
|
|
95
135
|
*/
|
|
96
136
|
static parseMetadata(metadata) {
|
|
97
137
|
// remove IsPlatformObject, always has to be 'false'
|
|
98
138
|
delete metadata.IsPlatformObject;
|
|
99
139
|
// folder
|
|
100
140
|
try {
|
|
101
|
-
metadata.r__folder_Path =
|
|
102
|
-
this.cache,
|
|
141
|
+
metadata.r__folder_Path = cache.searchForField(
|
|
103
142
|
'folder',
|
|
104
143
|
metadata.CategoryID,
|
|
105
144
|
'ID',
|
|
@@ -108,34 +147,26 @@ class TriggeredSendDefinition extends MetadataType {
|
|
|
108
147
|
delete metadata.CategoryID;
|
|
109
148
|
} catch (ex) {
|
|
110
149
|
Util.logger.warn(
|
|
111
|
-
`Triggered Send '${metadata.Name}'/'${metadata.CustomerKey}': ${ex.message}`
|
|
150
|
+
` - Triggered Send '${metadata.Name}'/'${metadata.CustomerKey}': ${ex.message}`
|
|
112
151
|
);
|
|
113
152
|
}
|
|
114
153
|
// email
|
|
115
154
|
try {
|
|
116
155
|
// classic
|
|
117
|
-
const classicEmail =
|
|
118
|
-
this.cache,
|
|
119
|
-
'email',
|
|
120
|
-
metadata.Email.ID,
|
|
121
|
-
'ID',
|
|
122
|
-
'Name'
|
|
123
|
-
);
|
|
156
|
+
const classicEmail = cache.searchForField('email', metadata.Email.ID, 'ID', 'Name');
|
|
124
157
|
metadata.r__email_Name = classicEmail;
|
|
125
158
|
delete metadata.Email;
|
|
126
|
-
} catch
|
|
159
|
+
} catch {
|
|
127
160
|
try {
|
|
128
161
|
// content builder
|
|
129
|
-
const contentBuilderEmailName =
|
|
130
|
-
this.cache,
|
|
162
|
+
const contentBuilderEmailName = cache.searchForField(
|
|
131
163
|
'asset',
|
|
132
164
|
metadata.Email.ID,
|
|
133
165
|
'legacyData.legacyId',
|
|
134
166
|
'name'
|
|
135
167
|
);
|
|
136
168
|
metadata.r__assetMessage_Name = contentBuilderEmailName;
|
|
137
|
-
const contentBuilderEmailKey =
|
|
138
|
-
this.cache,
|
|
169
|
+
const contentBuilderEmailKey = cache.searchForField(
|
|
139
170
|
'asset',
|
|
140
171
|
metadata.Email.ID,
|
|
141
172
|
'legacyData.legacyId',
|
|
@@ -143,23 +174,19 @@ class TriggeredSendDefinition extends MetadataType {
|
|
|
143
174
|
);
|
|
144
175
|
metadata.r__assetMessage_Key = contentBuilderEmailKey;
|
|
145
176
|
delete metadata.Email;
|
|
146
|
-
} catch
|
|
177
|
+
} catch {
|
|
147
178
|
Util.logger.warn(
|
|
148
|
-
|
|
179
|
+
` - ${this.definition.typeName} '${metadata.Name}'/'${metadata.CustomerKey}': Could not find email with ID ${metadata.Email.ID} in Classic nor in Content Builder.`
|
|
149
180
|
);
|
|
150
181
|
}
|
|
151
182
|
}
|
|
152
183
|
// List
|
|
153
184
|
try {
|
|
154
|
-
metadata.r__list_PathName =
|
|
155
|
-
this.cache,
|
|
156
|
-
metadata.List.ID,
|
|
157
|
-
'ID'
|
|
158
|
-
);
|
|
185
|
+
metadata.r__list_PathName = cache.getListPathName(metadata.List.ID, 'ID');
|
|
159
186
|
delete metadata.List;
|
|
160
187
|
} catch (ex) {
|
|
161
188
|
Util.logger.warn(
|
|
162
|
-
|
|
189
|
+
` - ${this.definition.typeName} '${metadata.Name}'/'${metadata.CustomerKey}': ${ex.message}`
|
|
163
190
|
);
|
|
164
191
|
}
|
|
165
192
|
|
|
@@ -167,15 +194,15 @@ class TriggeredSendDefinition extends MetadataType {
|
|
|
167
194
|
}
|
|
168
195
|
/**
|
|
169
196
|
* prepares a TSD for deployment
|
|
170
|
-
*
|
|
171
|
-
* @
|
|
197
|
+
*
|
|
198
|
+
* @param {TYPE.MetadataTypeItem} metadata of a single TSD
|
|
199
|
+
* @returns {TYPE.MetadataTypeItem} metadata object
|
|
172
200
|
*/
|
|
173
201
|
static async preDeployTasks(metadata) {
|
|
174
|
-
const cachedVersion =
|
|
202
|
+
const cachedVersion = cache.getByKey(this.definition.type, metadata.CustomerKey);
|
|
175
203
|
if (
|
|
176
|
-
cachedVersion &&
|
|
177
|
-
cachedVersion
|
|
178
|
-
cachedVersion.TriggeredSendStatus === metadata.TriggeredSendStatus
|
|
204
|
+
cachedVersion?.TriggeredSendStatus === 'Active' &&
|
|
205
|
+
cachedVersion?.TriggeredSendStatus === metadata.TriggeredSendStatus
|
|
179
206
|
) {
|
|
180
207
|
throw new Error(
|
|
181
208
|
`Please pause the Triggered Send '${metadata.Name}' before updating it. You may do so via GUI; or via Accenture SFMC DevTools by setting TriggeredSendStatus to 'Inactive'.`
|
|
@@ -184,27 +211,20 @@ class TriggeredSendDefinition extends MetadataType {
|
|
|
184
211
|
// re-add IsPlatformObject, required for visibility
|
|
185
212
|
metadata.IsPlatformObject = false;
|
|
186
213
|
// folder
|
|
187
|
-
metadata.CategoryID =
|
|
188
|
-
this.cache,
|
|
189
|
-
'folder',
|
|
190
|
-
metadata.r__folder_Path,
|
|
191
|
-
'Path',
|
|
192
|
-
'ID'
|
|
193
|
-
);
|
|
214
|
+
metadata.CategoryID = cache.searchForField('folder', metadata.r__folder_Path, 'Path', 'ID');
|
|
194
215
|
delete metadata.r__folder_Path;
|
|
195
216
|
// email
|
|
196
217
|
if (metadata.r__email_Name) {
|
|
197
218
|
// classic
|
|
198
219
|
metadata.Email = {
|
|
199
|
-
ID:
|
|
220
|
+
ID: cache.searchForField('email', metadata.r__email_Name, 'Name', 'ID'),
|
|
200
221
|
};
|
|
201
222
|
delete metadata.r__email_Name;
|
|
202
223
|
} else if (metadata.r__assetMessage_Key) {
|
|
203
224
|
// content builder
|
|
204
225
|
// * this ignores r__assetMessage_Name on purpose as that is only unique per parent folder but useful during PR reviews
|
|
205
226
|
metadata.Email = {
|
|
206
|
-
ID:
|
|
207
|
-
this.cache,
|
|
227
|
+
ID: cache.searchForField(
|
|
208
228
|
'asset',
|
|
209
229
|
metadata.r__assetMessage_Key,
|
|
210
230
|
'customerKey',
|
|
@@ -213,7 +233,7 @@ class TriggeredSendDefinition extends MetadataType {
|
|
|
213
233
|
};
|
|
214
234
|
delete metadata.r__assetMessage_Key;
|
|
215
235
|
delete metadata.r__assetMessage_Name;
|
|
216
|
-
} else if (metadata
|
|
236
|
+
} else if (metadata?.Email?.ID) {
|
|
217
237
|
throw new Error(
|
|
218
238
|
`r__assetMessage_Key / r__email_Name not defined but instead found Email.ID. Please try re-retrieving this TSD from your BU.`
|
|
219
239
|
);
|
|
@@ -221,10 +241,10 @@ class TriggeredSendDefinition extends MetadataType {
|
|
|
221
241
|
// get List
|
|
222
242
|
if (metadata.r__list_PathName) {
|
|
223
243
|
metadata.List = {
|
|
224
|
-
ID:
|
|
244
|
+
ID: cache.getListObjectId(metadata.r__list_PathName, 'ID'),
|
|
225
245
|
};
|
|
226
246
|
delete metadata.r__list_PathName;
|
|
227
|
-
} else if (metadata
|
|
247
|
+
} else if (metadata?.List?.ID) {
|
|
228
248
|
throw new Error(
|
|
229
249
|
`r__list_PathName not defined but instead found List.ID. Please try re-retrieving this TSD from your BU.`
|
|
230
250
|
);
|
|
@@ -7,6 +7,10 @@ module.exports = {
|
|
|
7
7
|
idField: 'id',
|
|
8
8
|
keyField: 'customerKey',
|
|
9
9
|
nameField: 'name',
|
|
10
|
+
createdDateField: 'createdDate',
|
|
11
|
+
createdNameField: 'createdBy.name',
|
|
12
|
+
lastmodDateField: 'modifiedDate',
|
|
13
|
+
lastmodNameField: 'modifiedBy.name',
|
|
10
14
|
restPagination: true,
|
|
11
15
|
type: 'asset',
|
|
12
16
|
typeDescription: 'Assets from Content Builder grouped into subtypes.',
|
|
@@ -68,7 +72,10 @@ module.exports = {
|
|
|
68
72
|
template: true,
|
|
69
73
|
},
|
|
70
74
|
businessUnitAvailability: {
|
|
71
|
-
|
|
75
|
+
isCreateable: false,
|
|
76
|
+
isUpdateable: true,
|
|
77
|
+
retrieving: true,
|
|
78
|
+
template: true,
|
|
72
79
|
},
|
|
73
80
|
category: {
|
|
74
81
|
isCreateable: true,
|
|
@@ -160,7 +167,7 @@ module.exports = {
|
|
|
160
167
|
'data.approvals': {
|
|
161
168
|
skipValidation: true,
|
|
162
169
|
},
|
|
163
|
-
'data.email.
|
|
170
|
+
'data.email.attributes': {
|
|
164
171
|
skipValidation: true,
|
|
165
172
|
},
|
|
166
173
|
'data.email.legacy': {
|
|
@@ -169,6 +176,9 @@ module.exports = {
|
|
|
169
176
|
retrieving: false,
|
|
170
177
|
template: false,
|
|
171
178
|
},
|
|
179
|
+
'data.email.options': {
|
|
180
|
+
skipValidation: true,
|
|
181
|
+
},
|
|
172
182
|
'data.portfolio': {
|
|
173
183
|
isCreateable: false,
|
|
174
184
|
isUpdateable: false,
|
|
@@ -278,8 +288,8 @@ module.exports = {
|
|
|
278
288
|
memberId: {
|
|
279
289
|
isCreateable: false,
|
|
280
290
|
isUpdateable: false,
|
|
281
|
-
retrieving:
|
|
282
|
-
template:
|
|
291
|
+
retrieving: true,
|
|
292
|
+
template: true,
|
|
283
293
|
},
|
|
284
294
|
meta: {
|
|
285
295
|
skipValidation: true,
|
|
@@ -363,8 +373,8 @@ module.exports = {
|
|
|
363
373
|
template: false,
|
|
364
374
|
},
|
|
365
375
|
sharingProperties: {
|
|
366
|
-
isCreateable:
|
|
367
|
-
isUpdateable:
|
|
376
|
+
isCreateable: false,
|
|
377
|
+
isUpdateable: false,
|
|
368
378
|
retrieving: true,
|
|
369
379
|
template: true,
|
|
370
380
|
},
|
|
@@ -372,14 +382,14 @@ module.exports = {
|
|
|
372
382
|
skipValidation: true,
|
|
373
383
|
},
|
|
374
384
|
'sharingProperties.sharedWith': {
|
|
375
|
-
isCreateable:
|
|
376
|
-
isUpdateable:
|
|
385
|
+
isCreateable: false,
|
|
386
|
+
isUpdateable: false,
|
|
377
387
|
retrieving: true,
|
|
378
388
|
template: true,
|
|
379
389
|
},
|
|
380
390
|
'sharingProperties.sharingType': {
|
|
381
|
-
isCreateable:
|
|
382
|
-
isUpdateable:
|
|
391
|
+
isCreateable: false,
|
|
392
|
+
isUpdateable: false,
|
|
383
393
|
retrieving: true,
|
|
384
394
|
template: true,
|
|
385
395
|
},
|
|
@@ -448,6 +458,7 @@ module.exports = {
|
|
|
448
458
|
'textfile',
|
|
449
459
|
'video',
|
|
450
460
|
],
|
|
461
|
+
binarySubtypes: ['archive', 'audio', 'document', 'image', 'rawimage', 'video'],
|
|
451
462
|
extendedSubTypes: {
|
|
452
463
|
asset: ['webpage', 'webtemplate', 'jsonmessage', 'icemailformblock'],
|
|
453
464
|
image: [
|
|
@@ -191,6 +191,18 @@ module.exports = {
|
|
|
191
191
|
retrieving: true,
|
|
192
192
|
template: null,
|
|
193
193
|
},
|
|
194
|
+
'localizedDescription.resourceSetKey': {
|
|
195
|
+
isCreateable: null,
|
|
196
|
+
isUpdateable: null,
|
|
197
|
+
retrieving: true,
|
|
198
|
+
template: null,
|
|
199
|
+
},
|
|
200
|
+
'localizedDescription.resourceValueKey': {
|
|
201
|
+
isCreateable: null,
|
|
202
|
+
isUpdateable: null,
|
|
203
|
+
retrieving: true,
|
|
204
|
+
template: null,
|
|
205
|
+
},
|
|
194
206
|
'localizedDescription.value': {
|
|
195
207
|
isCreateable: null,
|
|
196
208
|
isUpdateable: null,
|
|
@@ -32,6 +32,7 @@ module.exports = {
|
|
|
32
32
|
'query',
|
|
33
33
|
'script',
|
|
34
34
|
],
|
|
35
|
+
folderType: 'automation',
|
|
35
36
|
hasExtended: false,
|
|
36
37
|
filter: {
|
|
37
38
|
description: ['Event Definition Automation'],
|
|
@@ -39,6 +40,10 @@ module.exports = {
|
|
|
39
40
|
idField: 'id',
|
|
40
41
|
keyField: 'key',
|
|
41
42
|
nameField: 'name',
|
|
43
|
+
createdDateField: 'createdDate',
|
|
44
|
+
createdNameField: 'createdByName',
|
|
45
|
+
lastmodDateField: 'lastSavedDate',
|
|
46
|
+
lastmodNameField: 'lastSavedByName',
|
|
42
47
|
restPagination: false,
|
|
43
48
|
statusMapping: {
|
|
44
49
|
AwaitingTrigger: 7,
|
|
@@ -303,7 +308,7 @@ module.exports = {
|
|
|
303
308
|
},
|
|
304
309
|
key: {
|
|
305
310
|
isCreateable: true,
|
|
306
|
-
isUpdateable:
|
|
311
|
+
isUpdateable: true,
|
|
307
312
|
retrieving: true,
|
|
308
313
|
template: true,
|
|
309
314
|
},
|
|
@@ -469,8 +474,8 @@ module.exports = {
|
|
|
469
474
|
'steps[].activities[].displayOrder': {
|
|
470
475
|
isCreateable: true,
|
|
471
476
|
isUpdateable: true,
|
|
472
|
-
retrieving:
|
|
473
|
-
template:
|
|
477
|
+
retrieving: false,
|
|
478
|
+
template: false,
|
|
474
479
|
},
|
|
475
480
|
'steps[].activities[].id': {
|
|
476
481
|
isCreateable: true,
|
|
@@ -536,8 +541,8 @@ module.exports = {
|
|
|
536
541
|
template: true,
|
|
537
542
|
},
|
|
538
543
|
'steps[].step': {
|
|
539
|
-
isCreateable:
|
|
540
|
-
isUpdateable:
|
|
544
|
+
isCreateable: false,
|
|
545
|
+
isUpdateable: false,
|
|
541
546
|
retrieving: true,
|
|
542
547
|
template: true,
|
|
543
548
|
},
|
|
@@ -10,5 +10,48 @@ module.exports = {
|
|
|
10
10
|
typeDescription: 'Way of tagging/categorizing emails, journeys and alike.',
|
|
11
11
|
typeRetrieveByDefault: false,
|
|
12
12
|
typeName: 'Campaign Tag',
|
|
13
|
-
fields: {
|
|
13
|
+
fields: {
|
|
14
|
+
createdDate: {
|
|
15
|
+
isCreateable: false,
|
|
16
|
+
isUpdateable: false,
|
|
17
|
+
retrieving: true,
|
|
18
|
+
templating: false,
|
|
19
|
+
},
|
|
20
|
+
modifiedDate: {
|
|
21
|
+
isCreateable: false,
|
|
22
|
+
isUpdateable: false,
|
|
23
|
+
retrieving: true,
|
|
24
|
+
templating: false,
|
|
25
|
+
},
|
|
26
|
+
name: {
|
|
27
|
+
isCreateable: false,
|
|
28
|
+
isUpdateable: false,
|
|
29
|
+
retrieving: true,
|
|
30
|
+
templating: false,
|
|
31
|
+
},
|
|
32
|
+
description: {
|
|
33
|
+
isCreateable: false,
|
|
34
|
+
isUpdateable: false,
|
|
35
|
+
retrieving: true,
|
|
36
|
+
templating: false,
|
|
37
|
+
},
|
|
38
|
+
campaignCode: {
|
|
39
|
+
isCreateable: false,
|
|
40
|
+
isUpdateable: false,
|
|
41
|
+
retrieving: true,
|
|
42
|
+
templating: false,
|
|
43
|
+
},
|
|
44
|
+
color: {
|
|
45
|
+
isCreateable: false,
|
|
46
|
+
isUpdateable: false,
|
|
47
|
+
retrieving: true,
|
|
48
|
+
templating: false,
|
|
49
|
+
},
|
|
50
|
+
favorite: {
|
|
51
|
+
isCreateable: false,
|
|
52
|
+
isUpdateable: false,
|
|
53
|
+
retrieving: true,
|
|
54
|
+
templating: false,
|
|
55
|
+
},
|
|
56
|
+
},
|
|
14
57
|
};
|
|
@@ -80,6 +80,10 @@ module.exports = {
|
|
|
80
80
|
idField: 'ObjectID',
|
|
81
81
|
keyField: 'CustomerKey',
|
|
82
82
|
nameField: 'Name',
|
|
83
|
+
createdDateField: 'CreatedDate',
|
|
84
|
+
createdNameField: null,
|
|
85
|
+
lastmodDateField: 'ModifiedDate',
|
|
86
|
+
lastmodNameField: null,
|
|
83
87
|
restPagination: false,
|
|
84
88
|
type: 'dataExtension',
|
|
85
89
|
typeDescription: 'Database table schemas.',
|
|
@@ -60,6 +60,12 @@ module.exports = {
|
|
|
60
60
|
retrieving: false,
|
|
61
61
|
template: false,
|
|
62
62
|
},
|
|
63
|
+
PartnerProperties: {
|
|
64
|
+
isCreateable: false,
|
|
65
|
+
isUpdateable: false,
|
|
66
|
+
retrieving: false,
|
|
67
|
+
template: false,
|
|
68
|
+
},
|
|
63
69
|
IsSendable: { isCreateable: false, isUpdateable: false, retrieving: true, template: false },
|
|
64
70
|
IsTestable: { isCreateable: false, isUpdateable: false, retrieving: true, template: false },
|
|
65
71
|
SendableCustomObjectField: {
|
|
@@ -4,6 +4,10 @@ module.exports = {
|
|
|
4
4
|
hasExtended: true,
|
|
5
5
|
idField: 'dataExtractDefinitionId',
|
|
6
6
|
keyField: 'key',
|
|
7
|
+
createdDateField: 'createdDate',
|
|
8
|
+
createdNameField: 'createdBy',
|
|
9
|
+
lastmodDateField: 'modifiedDate',
|
|
10
|
+
lastmodNameField: 'modifiedBy',
|
|
7
11
|
nameField: 'name',
|
|
8
12
|
restPagination: true,
|
|
9
13
|
type: 'dataExtract',
|
|
@@ -30,8 +34,8 @@ module.exports = {
|
|
|
30
34
|
template: false,
|
|
31
35
|
},
|
|
32
36
|
dataExtractTypeId: {
|
|
33
|
-
isCreateable:
|
|
34
|
-
isUpdateable:
|
|
37
|
+
isCreateable: true,
|
|
38
|
+
isUpdateable: true,
|
|
35
39
|
retrieving: true,
|
|
36
40
|
template: true,
|
|
37
41
|
},
|
|
@@ -39,20 +43,20 @@ module.exports = {
|
|
|
39
43
|
skipValidation: true,
|
|
40
44
|
},
|
|
41
45
|
description: {
|
|
42
|
-
isCreateable:
|
|
43
|
-
isUpdateable:
|
|
46
|
+
isCreateable: true,
|
|
47
|
+
isUpdateable: true,
|
|
44
48
|
retrieving: true,
|
|
45
49
|
template: true,
|
|
46
50
|
},
|
|
47
51
|
endDate: {
|
|
48
|
-
isCreateable:
|
|
49
|
-
isUpdateable:
|
|
52
|
+
isCreateable: true,
|
|
53
|
+
isUpdateable: true,
|
|
50
54
|
retrieving: true,
|
|
51
55
|
template: true,
|
|
52
56
|
},
|
|
53
57
|
fileSpec: {
|
|
54
|
-
isCreateable:
|
|
55
|
-
isUpdateable:
|
|
58
|
+
isCreateable: true,
|
|
59
|
+
isUpdateable: true,
|
|
56
60
|
retrieving: true,
|
|
57
61
|
template: true,
|
|
58
62
|
},
|
|
@@ -63,8 +67,8 @@ module.exports = {
|
|
|
63
67
|
template: true,
|
|
64
68
|
},
|
|
65
69
|
key: {
|
|
66
|
-
isCreateable:
|
|
67
|
-
isUpdateable:
|
|
70
|
+
isCreateable: true,
|
|
71
|
+
isUpdateable: true,
|
|
68
72
|
retrieving: true,
|
|
69
73
|
template: true,
|
|
70
74
|
},
|
|
@@ -81,14 +85,14 @@ module.exports = {
|
|
|
81
85
|
template: false,
|
|
82
86
|
},
|
|
83
87
|
name: {
|
|
84
|
-
isCreateable:
|
|
85
|
-
isUpdateable:
|
|
88
|
+
isCreateable: true,
|
|
89
|
+
isUpdateable: true,
|
|
86
90
|
retrieving: true,
|
|
87
91
|
template: true,
|
|
88
92
|
},
|
|
89
93
|
startDate: {
|
|
90
|
-
isCreateable:
|
|
91
|
-
isUpdateable:
|
|
94
|
+
isCreateable: true,
|
|
95
|
+
isUpdateable: true,
|
|
92
96
|
retrieving: true,
|
|
93
97
|
template: true,
|
|
94
98
|
},
|
|
@@ -86,6 +86,18 @@ module.exports = {
|
|
|
86
86
|
methods: {
|
|
87
87
|
skipValidation: true,
|
|
88
88
|
},
|
|
89
|
+
metadata: {
|
|
90
|
+
isCreateable: false,
|
|
91
|
+
isUpdateable: false,
|
|
92
|
+
retrieving: true,
|
|
93
|
+
template: false,
|
|
94
|
+
},
|
|
95
|
+
'metadata.supportsResponseEncoding': {
|
|
96
|
+
isCreateable: false,
|
|
97
|
+
isUpdateable: false,
|
|
98
|
+
retrieving: true,
|
|
99
|
+
template: false,
|
|
100
|
+
},
|
|
89
101
|
name: {
|
|
90
102
|
isCreateable: false,
|
|
91
103
|
isUpdateable: false,
|