mcdev 5.2.0 → 6.0.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 (191) hide show
  1. package/.eslintrc.json +1 -1
  2. package/.fork/custom-commands.json +12 -0
  3. package/.github/ISSUE_TEMPLATE/bug.yml +2 -0
  4. package/.github/PULL_REQUEST_TEMPLATE/pr_template_release.md +19 -0
  5. package/.github/workflows/code-test.yml +1 -1
  6. package/.github/workflows/coverage-base-update.yml +1 -1
  7. package/.github/workflows/coverage-develop-branch.yml +2 -2
  8. package/.github/workflows/coverage-main-branch.yml +2 -2
  9. package/.github/workflows/coverage.yml +2 -2
  10. package/.github/workflows/npm-publish.yml +2 -2
  11. package/.prettierrc +7 -0
  12. package/docs/dist/documentation.md +388 -482
  13. package/jsconfig.json +5 -1
  14. package/lib/Builder.js +8 -8
  15. package/lib/Deployer.js +10 -10
  16. package/lib/MetadataTypeDefinitions.js +73 -38
  17. package/lib/MetadataTypeInfo.js +72 -37
  18. package/lib/Retriever.js +8 -8
  19. package/lib/cli.js +12 -7
  20. package/lib/index.js +28 -18
  21. package/lib/metadataTypes/Asset.js +12 -10
  22. package/lib/metadataTypes/AttributeGroup.js +7 -6
  23. package/lib/metadataTypes/AttributeSet.js +126 -18
  24. package/lib/metadataTypes/Automation.js +107 -78
  25. package/lib/metadataTypes/Campaign.js +7 -6
  26. package/lib/metadataTypes/ContentArea.js +7 -6
  27. package/lib/metadataTypes/DataExtension.js +475 -78
  28. package/lib/metadataTypes/DataExtensionField.js +36 -18
  29. package/lib/metadataTypes/DataExtensionTemplate.js +5 -4
  30. package/lib/metadataTypes/DataExtract.js +8 -7
  31. package/lib/metadataTypes/DataExtractType.js +5 -4
  32. package/lib/metadataTypes/Discovery.js +6 -5
  33. package/lib/metadataTypes/Email.js +6 -5
  34. package/lib/metadataTypes/EmailSend.js +7 -6
  35. package/lib/metadataTypes/Event.js +8 -7
  36. package/lib/metadataTypes/FileLocation.js +5 -4
  37. package/lib/metadataTypes/FileTransfer.js +8 -7
  38. package/lib/metadataTypes/Filter.js +5 -4
  39. package/lib/metadataTypes/Folder.js +9 -8
  40. package/lib/metadataTypes/ImportFile.js +8 -7
  41. package/lib/metadataTypes/Journey.js +17 -9
  42. package/lib/metadataTypes/List.js +9 -8
  43. package/lib/metadataTypes/MetadataType.js +100 -34
  44. package/lib/metadataTypes/MobileCode.js +5 -4
  45. package/lib/metadataTypes/MobileKeyword.js +9 -8
  46. package/lib/metadataTypes/MobileMessage.js +8 -7
  47. package/lib/metadataTypes/Query.js +9 -8
  48. package/lib/metadataTypes/Role.js +8 -7
  49. package/lib/metadataTypes/Script.js +7 -6
  50. package/lib/metadataTypes/SendClassification.js +5 -4
  51. package/lib/metadataTypes/TransactionalEmail.js +101 -23
  52. package/lib/metadataTypes/TransactionalMessage.js +9 -7
  53. package/lib/metadataTypes/TransactionalPush.js +7 -6
  54. package/lib/metadataTypes/TransactionalSMS.js +9 -8
  55. package/lib/metadataTypes/TriggeredSend.js +15 -12
  56. package/lib/metadataTypes/User.js +8 -7
  57. package/lib/metadataTypes/Verification.js +230 -0
  58. package/lib/metadataTypes/definitions/Asset.definition.js +1 -1
  59. package/lib/metadataTypes/definitions/AttributeGroup.definition.js +3 -3
  60. package/lib/metadataTypes/definitions/AttributeSet.definition.js +75 -22
  61. package/lib/metadataTypes/definitions/Automation.definition.js +2 -1
  62. package/lib/metadataTypes/definitions/Campaign.definition.js +1 -1
  63. package/lib/metadataTypes/definitions/ContentArea.definition.js +1 -1
  64. package/lib/metadataTypes/definitions/DataExtension.definition.js +1 -1
  65. package/lib/metadataTypes/definitions/DataExtensionField.definition.js +1 -1
  66. package/lib/metadataTypes/definitions/DataExtensionTemplate.definition.js +1 -1
  67. package/lib/metadataTypes/definitions/DataExtract.definition.js +1 -1
  68. package/lib/metadataTypes/definitions/DataExtractType.definition.js +1 -1
  69. package/lib/metadataTypes/definitions/Discovery.definition.js +1 -1
  70. package/lib/metadataTypes/definitions/Email.definition.js +1 -1
  71. package/lib/metadataTypes/definitions/EmailSend.definition.js +1 -1
  72. package/lib/metadataTypes/definitions/Event.definition.js +1 -1
  73. package/lib/metadataTypes/definitions/FileLocation.definition.js +1 -1
  74. package/lib/metadataTypes/definitions/FileTransfer.definition.js +1 -1
  75. package/lib/metadataTypes/definitions/Filter.definition.js +1 -1
  76. package/lib/metadataTypes/definitions/Folder.definition.js +1 -1
  77. package/lib/metadataTypes/definitions/ImportFile.definition.js +1 -1
  78. package/lib/metadataTypes/definitions/Journey.definition.js +1 -1
  79. package/lib/metadataTypes/definitions/List.definition.js +1 -1
  80. package/lib/metadataTypes/definitions/MobileCode.definition.js +1 -1
  81. package/lib/metadataTypes/definitions/MobileKeyword.definition.js +1 -1
  82. package/lib/metadataTypes/definitions/MobileMessage.definition.js +1 -1
  83. package/lib/metadataTypes/definitions/Query.definition.js +1 -1
  84. package/lib/metadataTypes/definitions/Role.definition.js +1 -1
  85. package/lib/metadataTypes/definitions/Script.definition.js +1 -1
  86. package/lib/metadataTypes/definitions/SendClassification.definition.js +1 -1
  87. package/lib/metadataTypes/definitions/TransactionalEmail.definition.js +20 -2
  88. package/lib/metadataTypes/definitions/TransactionalPush.definition.js +1 -1
  89. package/lib/metadataTypes/definitions/TransactionalSMS.definition.js +1 -1
  90. package/lib/metadataTypes/definitions/TriggeredSend.definition.js +1 -1
  91. package/lib/metadataTypes/definitions/User.definition.js +1 -1
  92. package/lib/metadataTypes/definitions/Verification.definition.js +88 -0
  93. package/lib/retrieveChangelog.js +4 -3
  94. package/lib/util/auth.js +11 -8
  95. package/lib/util/businessUnit.js +5 -5
  96. package/lib/util/cache.js +3 -3
  97. package/lib/util/cli.js +15 -13
  98. package/lib/util/config.js +10 -7
  99. package/lib/util/devops.js +12 -11
  100. package/lib/util/file.js +15 -14
  101. package/lib/util/init.config.js +11 -9
  102. package/lib/util/init.git.js +8 -7
  103. package/lib/util/init.js +12 -12
  104. package/lib/util/init.npm.js +7 -5
  105. package/lib/util/util.js +14 -12
  106. package/package.json +32 -27
  107. package/test/general.test.js +4 -6
  108. package/test/mockRoot/.mcdevrc.json +1 -1
  109. package/test/mockRoot/deploy/testInstance/_ParentBU_/dataExtension/testExisting_dataExtensionShared.dataExtension-meta.json +59 -0
  110. package/test/mockRoot/deploy/testInstance/_ParentBU_/dataExtension/testNew_dataExtensionShared.dataExtension-meta.json +23 -0
  111. package/test/mockRoot/deploy/testInstance/testBU/automation/testNew_automation.automation-meta.json +4 -0
  112. package/test/mockRoot/deploy/testInstance/testBU/dataExtension/testExisting_dataExtension.dataExtension-meta.json +1 -0
  113. package/test/mockRoot/deploy/testInstance/testBU/transactionalEmail/testExisting_temail.transactionalEmail-meta.json +3 -4
  114. package/test/mockRoot/deploy/testInstance/testBU/transactionalEmail/testNew_temail.transactionalEmail-meta.json +1 -6
  115. package/test/mockRoot/deploy/testInstance/testBU/verification/testExisting_39f6a488-20eb-4ba0-b0b9.verification-meta.json +11 -0
  116. package/test/mockRoot/deploy/testInstance/testBU/verification/testNew_39f6a488-20eb-4ba0-b0b9.verification-meta.json +11 -0
  117. package/test/resourceFactory.js +52 -26
  118. package/test/resources/1111111/data/v1/customobjectdata/key/testExisting_dataExtensionShared/rowset/get-response.json +13 -0
  119. package/test/resources/1111111/dataExtension/create-expected.json +23 -0
  120. package/test/resources/1111111/dataExtension/create-response.xml +59 -0
  121. package/test/resources/1111111/dataExtension/retrieve-expected.json +55 -0
  122. package/test/resources/1111111/dataExtension/retrieve-expected.md +18 -0
  123. package/test/resources/1111111/dataExtension/retrieve-response.xml +27 -1
  124. package/test/resources/1111111/dataExtension/update-expected.json +55 -0
  125. package/test/resources/1111111/dataExtension/update-response.xml +57 -0
  126. package/test/resources/1111111/dataExtensionField/retrieve-CustomerKey=[testExisting_dataExtensionShared].[TriggerUpdate_randomNumber_]-response.xml +45 -0
  127. package/test/resources/1111111/dataExtensionField/retrieve-DataExtension.CustomerKey=testExisting_dataExtensionShared-response.xml +98 -0
  128. package/test/resources/1111111/dataExtensionField/retrieve-DataExtension.CustomerKey=testNew_dataExtensionSharedORDataExtension.CustomerKey=testExisting_dataExtensionShared-response.xml +98 -0
  129. package/test/resources/1111111/dataExtensionField/retrieve-response.xml +98 -0
  130. package/test/resources/1111111/dataExtensionTemplate/retrieve-response.xml +303 -0
  131. package/test/resources/1111111/dataFolder/retrieve-ContentType=synchronizeddataextensionORContentType=shared_salesforcedataextensionORContentType=shared_dataextensionORContentType=shared_dataORContentType=salesforcedataextensionORContentType=dataextensionORContentType=hidden-response.xml +387 -0
  132. package/test/resources/1111111/dataFolder/retrieve-response.xml +353 -9
  133. package/test/resources/9999999/attributeSet/retrieve-expected.json +89 -694
  134. package/test/resources/9999999/automation/build-expected.json +4 -0
  135. package/test/resources/9999999/automation/create-expected.json +4 -0
  136. package/test/resources/9999999/automation/create-testNew_automation-expected.md +1 -0
  137. package/test/resources/9999999/automation/retrieve-expected.json +4 -0
  138. package/test/resources/9999999/automation/retrieve-testExisting_automation-expected.md +1 -0
  139. package/test/resources/9999999/automation/template-expected.json +4 -0
  140. package/test/resources/9999999/automation/v1/automations/08afb0e2-b00a-4c88-ad2e-1f7f8788c560/get-response.json +7 -0
  141. package/test/resources/9999999/automation/v1/automations/post-response.json +7 -0
  142. package/test/resources/9999999/automation/v1/dataverifications/post-response.json +12 -0
  143. package/test/resources/9999999/automation/v1/dataverifications/testExisting_39f6a488-20eb-4ba0-b0b9/delete-response.json +0 -0
  144. package/test/resources/9999999/automation/v1/dataverifications/testExisting_39f6a488-20eb-4ba0-b0b9/get-response.json +12 -0
  145. package/test/resources/9999999/automation/v1/dataverifications/testExisting_39f6a488-20eb-4ba0-b0b9/patch-response.json +12 -0
  146. package/test/resources/9999999/dataExtension/build-expected.json +16 -0
  147. package/test/resources/9999999/dataExtension/delete-response.xml +42 -0
  148. package/test/resources/9999999/dataExtension/retrieve-expected.json +16 -0
  149. package/test/resources/9999999/dataExtension/retrieve-expected.md +3 -1
  150. package/test/resources/9999999/dataExtension/template-expected.json +16 -0
  151. package/test/resources/9999999/dataExtension/update-expected.json +17 -1
  152. package/test/resources/9999999/dataExtensionField/retrieve-CustomerKey=[testExisting_dataExtension].[LastName]-response.xml +44 -0
  153. package/test/resources/9999999/dataExtensionField/retrieve-DataExtension.CustomerKey=testExisting_dataExtension-response.xml +36 -1
  154. package/test/resources/9999999/dataExtensionField/retrieve-response.xml +36 -1
  155. package/test/resources/9999999/dataFolder/retrieve-ContentType=synchronizeddataextensionORContentType=shared_salesforcedataextensionORContentType=shared_dataextensionORContentType=shared_dataORContentType=salesforcedataextensionORContentType=dataextensionORContentType=hidden-response.xml +117 -0
  156. package/test/resources/9999999/hub/v1/contacts/schema/attributeGroups/get-response.json +43 -0
  157. package/test/resources/9999999/hub/v1/contacts/schema/setDefinitions/get-response.json +387 -0
  158. package/test/resources/9999999/interaction/v1/interactions/233d4413-922c-4568-85a5-e5cc77efc3be/delete-response.json +1 -0
  159. package/test/resources/9999999/legacy/v1/beta/bulk/automations/automation/definition/get-response.json +1 -1
  160. package/test/resources/9999999/messaging/v1/email/definitions/post-response.json +1 -1
  161. package/test/resources/9999999/messaging/v1/email/definitions/testExisting_temail/delete-response.json +6 -0
  162. package/test/resources/9999999/transactionalEmail/build-expected.json +3 -7
  163. package/test/resources/9999999/transactionalEmail/get-expected.json +3 -7
  164. package/test/resources/9999999/transactionalEmail/patch-expected.json +3 -7
  165. package/test/resources/9999999/transactionalEmail/post-expected.json +3 -7
  166. package/test/resources/9999999/transactionalEmail/template-expected.json +3 -7
  167. package/test/resources/9999999/verification/build-expected.json +11 -0
  168. package/test/resources/9999999/verification/get-expected.json +11 -0
  169. package/test/resources/9999999/verification/patch-expected.json +11 -0
  170. package/test/resources/9999999/verification/post-expected.json +11 -0
  171. package/test/resources/9999999/verification/template-expected.json +11 -0
  172. package/test/type.attributeGroup.test.js +9 -12
  173. package/test/type.attributeSet.test.js +10 -13
  174. package/test/type.automation.test.js +34 -32
  175. package/test/type.dataExtension.test.js +210 -54
  176. package/test/type.dataExtract.test.js +15 -9
  177. package/test/type.fileTransfer.test.js +15 -9
  178. package/test/type.importFile.test.js +15 -9
  179. package/test/type.journey.test.js +43 -17
  180. package/test/type.mobileKeyword.test.js +11 -11
  181. package/test/type.mobileMessage.test.js +11 -11
  182. package/test/type.query.test.js +13 -14
  183. package/test/type.script.test.js +11 -9
  184. package/test/type.transactionalEmail.test.js +17 -17
  185. package/test/type.transactionalPush.test.js +7 -10
  186. package/test/type.transactionalSMS.test.js +7 -11
  187. package/test/type.triggeredSend.test.js +11 -10
  188. package/test/type.user.test.js +6 -8
  189. package/test/type.verification.test.js +172 -0
  190. package/test/utils.js +68 -48
  191. package/types/mcdev.d.js +16 -2
@@ -126,6 +126,9 @@ Provides default functionality that can be overwritten by child metadata type cl
126
126
  <dt><a href="#User">User</a> ⇐ <code><a href="#MetadataType">MetadataType</a></code></dt>
127
127
  <dd><p>MetadataType</p>
128
128
  </dd>
129
+ <dt><a href="#Verification">Verification</a> ⇐ <code><a href="#MetadataType">MetadataType</a></code></dt>
130
+ <dd><p>Verification MetadataType</p>
131
+ </dd>
129
132
  <dt><a href="#Retriever">Retriever</a></dt>
130
133
  <dd><p>Retrieves metadata from a business unit and saves it to the local filesystem.</p>
131
134
  </dd>
@@ -134,18 +137,6 @@ Provides default functionality that can be overwritten by child metadata type cl
134
137
  ## Constants
135
138
 
136
139
  <dl>
137
- <dt><a href="#Util">Util</a></dt>
138
- <dd><p>CLI entry for SFMC DevTools</p>
139
- </dd>
140
- <dt><a href="#MetadataTypeDefinitions">MetadataTypeDefinitions</a></dt>
141
- <dd><p>Provides access to all metadataType classes</p>
142
- </dd>
143
- <dt><a href="#MetadataTypeInfo">MetadataTypeInfo</a></dt>
144
- <dd><p>Provides access to all metadataType classes</p>
145
- </dd>
146
- <dt><a href="#mcdev">mcdev</a></dt>
147
- <dd><p>sample file on how to retrieve a simple changelog to use in GUIs or automated processing of any kind</p>
148
- </dd>
149
140
  <dt><a href="#BusinessUnit">BusinessUnit</a></dt>
150
141
  <dd><p>Helper that handles retrieval of BU info</p>
151
142
  </dd>
@@ -219,6 +210,33 @@ Provides default functionality that can be overwritten by child metadata type cl
219
210
  <dt><a href="#Automation.">Automation.(metadataMap, originalMetadataMap, key, [oldKey])</a> ⇒ <code>Promise.&lt;{key:string, response:object}&gt;</code></dt>
220
211
  <dd><p>helper for <a href="#Automation.postDeployTasks">postDeployTasks</a></p>
221
212
  </dd>
213
+ <dt><a href="#DataExtension.">DataExtension.(upsertedMetadata, originalMetadata, createdUpdated)</a> ⇒ <code>void</code></dt>
214
+ <dd><p>takes care of updating attribute groups on child BUs after an update to Shared DataExtensions
215
+ helper for <a href="#DataExtension.postDeployTasks">postDeployTasks</a>
216
+ fixes an issue where shared data extensions are not visible in data designer on child BU; SF known issue: <a href="https://issues.salesforce.com/#q=W-11031095">https://issues.salesforce.com/#q=W-11031095</a></p>
217
+ </dd>
218
+ <dt><a href="#DataExtension.">DataExtension.()</a> ⇒ <code>Array.&lt;string&gt;</code></dt>
219
+ <dd><p>helper for <a href="DataExtension.#fixShared">DataExtension.#fixShared</a></p>
220
+ </dd>
221
+ <dt><a href="#DataExtension.">DataExtension.(childBuName, buObjectParent, clientParent, sharedDataExtensionMap)</a> ⇒ <code>Promise.&lt;Array.&lt;string&gt;&gt;</code></dt>
222
+ <dd><p>helper for <a href="DataExtension.#fixShared">DataExtension.#fixShared</a></p>
223
+ </dd>
224
+ <dt><a href="#DataExtension.">DataExtension.(deId, deKey, buObjectChildBu, clientChildBu, buObjectParent, clientParent)</a> ⇒ <code>Promise.&lt;boolean&gt;</code></dt>
225
+ <dd><p>method that actually takes care of triggering the update for a particular BU-sharedDe combo
226
+ helper for <a href="DataExtension.#fixShared_onBU">DataExtension.#fixShared_onBU</a></p>
227
+ </dd>
228
+ <dt><a href="#DataExtension.">DataExtension.(buObjectChildBu, clientChildBu, deKey, deId)</a> ⇒ <code>Promise.&lt;string&gt;</code></dt>
229
+ <dd><p>add a new field to the shared DE to trigger an update to the data model
230
+ helper for <a href="DataExtension.#fixShared_item">DataExtension.#fixShared_item</a></p>
231
+ </dd>
232
+ <dt><a href="#DataExtension.">DataExtension.(randomSuffix, buObjectParent, clientParent, deKey)</a> ⇒ <code>Promise.&lt;string&gt;</code></dt>
233
+ <dd><p>get ID of the field added by <a href="DataExtension.#fixShared_item_addField">DataExtension.#fixShared_item_addField</a> on the shared DE via parent BU
234
+ helper for <a href="DataExtension.#fixShared_item">DataExtension.#fixShared_item</a></p>
235
+ </dd>
236
+ <dt><a href="#DataExtension.">DataExtension.(randomSuffix, buObjectChildBu, clientChildBu, deKey, fieldObjectID)</a> ⇒ <code>Promise</code></dt>
237
+ <dd><p>delete the field added by <a href="DataExtension.#fixShared_item_addField">DataExtension.#fixShared_item_addField</a>
238
+ helper for <a href="DataExtension.#fixShared_item">DataExtension.#fixShared_item</a></p>
239
+ </dd>
222
240
  <dt><a href="#getUserName">getUserName(userList, item, fieldname)</a> ⇒ <code>string</code></dt>
223
241
  <dd></dd>
224
242
  <dt><a href="#setupSDK">setupSDK(sessionKey, authObject)</a> ⇒ <code><a href="#SDK">SDK</a></code></dt>
@@ -266,6 +284,8 @@ Provides default functionality that can be overwritten by child metadata type cl
266
284
  </dd>
267
285
  <dt><a href="#AutomationItem">AutomationItem</a> : <code>object</code></dt>
268
286
  <dd></dd>
287
+ <dt><a href="#VerificationItem">VerificationItem</a> : <code>object</code></dt>
288
+ <dd></dd>
269
289
  <dt><a href="#SDK">SDK</a> : <code>Object.&lt;string, AutomationItem&gt;</code></dt>
270
290
  <dd></dd>
271
291
  <dt><a href="#skipInteraction">skipInteraction</a> : <code>object</code></dt>
@@ -498,6 +518,7 @@ main class
498
518
  **Kind**: global class
499
519
 
500
520
  * [Mcdev](#Mcdev)
521
+ * [.version()](#Mcdev.version) ⇒ <code>string</code>
501
522
  * [.setSkipInteraction([skipInteraction])](#Mcdev.setSkipInteraction) ⇒ <code>void</code>
502
523
  * [.setLoggingLevel(argv)](#Mcdev.setLoggingLevel) ⇒ <code>void</code>
503
524
  * [.setOptions(argv)](#Mcdev.setOptions) ⇒ <code>void</code>
@@ -524,6 +545,11 @@ main class
524
545
  * [.pause(businessUnit, [selectedType], [keys])](#Mcdev.pause) ⇒ <code>Promise.&lt;Object.&lt;string, Array.&lt;string&gt;&gt;&gt;</code>
525
546
  * [.fixKeys(businessUnit, selectedType, [keys])](#Mcdev.fixKeys) ⇒ <code>Promise.&lt;Object.&lt;string, Array.&lt;string&gt;&gt;&gt;</code>
526
547
 
548
+ <a name="Mcdev.version"></a>
549
+
550
+ ### Mcdev.version() ⇒ <code>string</code>
551
+ **Kind**: static method of [<code>Mcdev</code>](#Mcdev)
552
+ **Returns**: <code>string</code> - current version of mcdev
527
553
  <a name="Mcdev.setSkipInteraction"></a>
528
554
 
529
555
  ### Mcdev.setSkipInteraction([skipInteraction]) ⇒ <code>void</code>
@@ -1298,6 +1324,7 @@ AttributeSet MetadataType
1298
1324
  * [AttributeSet](#AttributeSet) ⇐ [<code>MetadataType</code>](#MetadataType)
1299
1325
  * [.retrieve(retrieveDir, [_], [__], [key])](#AttributeSet.retrieve) ⇒ <code>Promise.&lt;TYPE.MetadataTypeMapObj&gt;</code>
1300
1326
  * [.retrieveForCache()](#AttributeSet.retrieveForCache) ⇒ <code>Promise.&lt;TYPE.MetadataTypeMapObj&gt;</code>
1327
+ * [.fixShared_retrieve(sharedDataExtensionMap, fixShared_fields)](#AttributeSet.fixShared_retrieve) ⇒ <code>Promise.&lt;Array.&lt;string&gt;&gt;</code>
1301
1328
  * [.parseResponseBody(body, [singleRetrieve])](#AttributeSet.parseResponseBody) ⇒ <code>TYPE.MetadataTypeMap</code>
1302
1329
  * [.postRetrieveTasks(metadata)](#AttributeSet.postRetrieveTasks) ⇒ <code>TYPE.MetadataTypeItem</code>
1303
1330
  * [._getSystemValueDefinitions()](#AttributeSet._getSystemValueDefinitions) ⇒ <code>Array.&lt;object&gt;</code>
@@ -1324,6 +1351,20 @@ Retrieves Metadata of schema set definitions for caching.
1324
1351
 
1325
1352
  **Kind**: static method of [<code>AttributeSet</code>](#AttributeSet)
1326
1353
  **Returns**: <code>Promise.&lt;TYPE.MetadataTypeMapObj&gt;</code> - Promise
1354
+ <a name="AttributeSet.fixShared_retrieve"></a>
1355
+
1356
+ ### AttributeSet.fixShared\_retrieve(sharedDataExtensionMap, fixShared_fields) ⇒ <code>Promise.&lt;Array.&lt;string&gt;&gt;</code>
1357
+ used to identify updated shared data extensions that are used in attributeSets.
1358
+ helper for DataExtension.#fixShared_onBU
1359
+
1360
+ **Kind**: static method of [<code>AttributeSet</code>](#AttributeSet)
1361
+ **Returns**: <code>Promise.&lt;Array.&lt;string&gt;&gt;</code> - Promise of list of shared dataExtension IDs
1362
+
1363
+ | Param | Type | Description |
1364
+ | --- | --- | --- |
1365
+ | sharedDataExtensionMap | <code>Object.&lt;string, string&gt;</code> | ID-Key relationship of shared data extensions |
1366
+ | fixShared_fields | <code>object</code> | DataExtensionField.fixShared_fields |
1367
+
1327
1368
  <a name="AttributeSet.parseResponseBody"></a>
1328
1369
 
1329
1370
  ### AttributeSet.parseResponseBody(body, [singleRetrieve]) ⇒ <code>TYPE.MetadataTypeMap</code>
@@ -1366,6 +1407,7 @@ Automation MetadataType
1366
1407
 
1367
1408
  * [Automation](#Automation) ⇐ [<code>MetadataType</code>](#MetadataType)
1368
1409
  * [.retrieve(retrieveDir, [_], [__], [key])](#Automation.retrieve) ⇒ <code>Promise.&lt;TYPE.AutomationMapObj&gt;</code>
1410
+ * [.handleRESTErrors(ex, id)](#Automation.handleRESTErrors) ⇒ <code>null</code>
1369
1411
  * [.retrieveChangelog()](#Automation.retrieveChangelog) ⇒ <code>Promise.&lt;TYPE.AutomationMapObj&gt;</code>
1370
1412
  * [.retrieveForCache()](#Automation.retrieveForCache) ⇒ <code>Promise.&lt;TYPE.AutomationMapObj&gt;</code>
1371
1413
  * [.retrieveAsTemplate(templateDir, name, templateVariables)](#Automation.retrieveAsTemplate) ⇒ <code>Promise.&lt;TYPE.AutomationItemObj&gt;</code>
@@ -1403,6 +1445,19 @@ Retrieves Metadata of Automation
1403
1445
  | [__] | <code>void</code> | unused parameter |
1404
1446
  | [key] | <code>string</code> | customer key of single item to retrieve |
1405
1447
 
1448
+ <a name="Automation.handleRESTErrors"></a>
1449
+
1450
+ ### Automation.handleRESTErrors(ex, id) ⇒ <code>null</code>
1451
+ helper for [this.retrieveRESTcollection](this.retrieveRESTcollection)
1452
+
1453
+ **Kind**: static method of [<code>Automation</code>](#Automation)
1454
+ **Returns**: <code>null</code> - -
1455
+
1456
+ | Param | Type | Description |
1457
+ | --- | --- | --- |
1458
+ | ex | <code>Error</code> | exception |
1459
+ | id | <code>string</code> | id or key of item |
1460
+
1406
1461
  <a name="Automation.retrieveChangelog"></a>
1407
1462
 
1408
1463
  ### Automation.retrieveChangelog() ⇒ <code>Promise.&lt;TYPE.AutomationMapObj&gt;</code>
@@ -1781,6 +1836,7 @@ DataExtension MetadataType
1781
1836
  * [.update(metadata)](#DataExtension.update) ⇒ <code>Promise</code>
1782
1837
  * [.postDeployTasks(upsertedMetadata, originalMetadata, createdUpdated)](#DataExtension.postDeployTasks) ⇒ <code>void</code>
1783
1838
  * [.retrieve(retrieveDir, [additionalFields], [_], [key])](#DataExtension.retrieve) ⇒ <code>Promise.&lt;{metadata: TYPE.DataExtensionMap, type: string}&gt;</code>
1839
+ * [.retrieveSharedForCache([additionalFields])](#DataExtension.retrieveSharedForCache) ⇒ <code>Promise.&lt;TYPE.DataExtensionMap&gt;</code>
1784
1840
  * [.retrieveChangelog([additionalFields])](#DataExtension.retrieveChangelog) ⇒ <code>Promise.&lt;{metadata: TYPE.DataExtensionMap, type: string}&gt;</code>
1785
1841
  * [.postRetrieveTasks(metadata)](#DataExtension.postRetrieveTasks) ⇒ <code>TYPE.DataExtensionItem</code>
1786
1842
  * [.preDeployTasks(metadata)](#DataExtension.preDeployTasks) ⇒ <code>Promise.&lt;TYPE.DataExtensionItem&gt;</code>
@@ -1873,6 +1929,19 @@ Retrieves dataExtension metadata. Afterwards starts retrieval of dataExtensionCo
1873
1929
  | [_] | <code>void</code> | unused parameter |
1874
1930
  | [key] | <code>string</code> | customer key of single item to retrieve |
1875
1931
 
1932
+ <a name="DataExtension.retrieveSharedForCache"></a>
1933
+
1934
+ ### DataExtension.retrieveSharedForCache([additionalFields]) ⇒ <code>Promise.&lt;TYPE.DataExtensionMap&gt;</code>
1935
+ get shared dataExtensions from parent BU and merge them into the cache
1936
+ helper for [retrieve](#DataExtension.retrieve) and for AttributeSet.fixShared_retrieve
1937
+
1938
+ **Kind**: static method of [<code>DataExtension</code>](#DataExtension)
1939
+ **Returns**: <code>Promise.&lt;TYPE.DataExtensionMap&gt;</code> - keyField => metadata map
1940
+
1941
+ | Param | Type | Description |
1942
+ | --- | --- | --- |
1943
+ | [additionalFields] | <code>Array.&lt;string&gt;</code> | Returns specified fields even if their retrieve definition is not set to true |
1944
+
1876
1945
  <a name="DataExtension.retrieveChangelog"></a>
1877
1946
 
1878
1947
  ### DataExtension.retrieveChangelog([additionalFields]) ⇒ <code>Promise.&lt;{metadata: TYPE.DataExtensionMap, type: string}&gt;</code>
@@ -2007,7 +2076,7 @@ DataExtensionField MetadataType
2007
2076
  * [.postRetrieveTasks(metadata, forDataExtension)](#DataExtensionField.postRetrieveTasks) ⇒ <code>TYPE.DataExtensionFieldItem</code>
2008
2077
  * [.prepareDeployColumnsOnUpdate(deployColumns, deKey)](#DataExtensionField.prepareDeployColumnsOnUpdate) ⇒ <code>Promise.&lt;Object.&lt;string, TYPE.DataExtensionFieldItem&gt;&gt;</code>
2009
2078
  * [.deleteByKey(customerKey)](#DataExtensionField.deleteByKey) ⇒ <code>Promise.&lt;boolean&gt;</code>
2010
- * [.deleteByKeySOAP(customerKey)](#DataExtensionField.deleteByKeySOAP) ⇒ <code>boolean</code>
2079
+ * [.deleteByKeySOAP(customerKey, [fieldId])](#DataExtensionField.deleteByKeySOAP) ⇒ <code>boolean</code>
2011
2080
  * [.postDeleteTasks(customerKey)](#DataExtensionField.postDeleteTasks) ⇒ <code>void</code>
2012
2081
 
2013
2082
  <a name="DataExtensionField.retrieve"></a>
@@ -2102,7 +2171,7 @@ Delete a metadata item from the specified business unit
2102
2171
 
2103
2172
  <a name="DataExtensionField.deleteByKeySOAP"></a>
2104
2173
 
2105
- ### DataExtensionField.deleteByKeySOAP(customerKey) ⇒ <code>boolean</code>
2174
+ ### DataExtensionField.deleteByKeySOAP(customerKey, [fieldId]) ⇒ <code>boolean</code>
2106
2175
  Delete a data extension from the specified business unit
2107
2176
 
2108
2177
  **Kind**: static method of [<code>DataExtensionField</code>](#DataExtensionField)
@@ -2111,6 +2180,7 @@ Delete a data extension from the specified business unit
2111
2180
  | Param | Type | Description |
2112
2181
  | --- | --- | --- |
2113
2182
  | customerKey | <code>string</code> | Identifier of metadata |
2183
+ | [fieldId] | <code>string</code> | for programmatic deletes only one can pass in the ID directly |
2114
2184
 
2115
2185
  <a name="DataExtensionField.postDeleteTasks"></a>
2116
2186
 
@@ -3325,7 +3395,7 @@ Provides default functionality that can be overwritten by child metadata type cl
3325
3395
  * [.getFieldNamesToRetrieve([additionalFields], [isCaching])](#MetadataType.getFieldNamesToRetrieve) ⇒ <code>Array.&lt;string&gt;</code>
3326
3396
  * [.deploy(metadata, deployDir, retrieveDir)](#MetadataType.deploy) ⇒ <code>Promise.&lt;TYPE.MetadataTypeMap&gt;</code>
3327
3397
  * [.postDeployTasks(upsertResults, originalMetadata, createdUpdated)](#MetadataType.postDeployTasks) ⇒ <code>void</code>
3328
- * [.postCreateTasks(metadataEntry, apiResponse)](#MetadataType.postCreateTasks) ⇒ <code>void</code>
3398
+ * [.postCreateTasks(metadataEntry, apiResponse, metadataEntryWithAllFields)](#MetadataType.postCreateTasks) ⇒ <code>void</code>
3329
3399
  * [.postUpdateTasks(metadataEntry, apiResponse)](#MetadataType.postUpdateTasks) ⇒ <code>void</code>
3330
3400
  * [.postDeployTasks_legacyApi(metadataEntry, apiResponse)](#MetadataType.postDeployTasks_legacyApi) ⇒ <code>Promise.&lt;void&gt;</code>
3331
3401
  * [.postRetrieveTasks(metadata, targetDir, [isTemplating])](#MetadataType.postRetrieveTasks) ⇒ <code>TYPE.MetadataTypeItem</code>
@@ -3333,7 +3403,7 @@ Provides default functionality that can be overwritten by child metadata type cl
3333
3403
  * [.setFolderId(metadata)](#MetadataType.setFolderId)
3334
3404
  * [.retrieve(retrieveDir, [additionalFields], [subTypeArr], [key])](#MetadataType.retrieve) ⇒ <code>Promise.&lt;TYPE.MetadataTypeMapObj&gt;</code>
3335
3405
  * [.retrieveChangelog([additionalFields], [subTypeArr])](#MetadataType.retrieveChangelog) ⇒ <code>Promise.&lt;TYPE.MetadataTypeMapObj&gt;</code>
3336
- * [.retrieveForCache([additionalFields], [subTypeArr], [key])](#MetadataType.retrieveForCache) ⇒ <code>Promise.&lt;TYPE.MetadataTypeMapObj&gt;</code>
3406
+ * [.retrieveForCache([additionalFields], [subTypeArr])](#MetadataType.retrieveForCache) ⇒ <code>Promise.&lt;TYPE.MetadataTypeMapObj&gt;</code>
3337
3407
  * [.retrieveAsTemplate(templateDir, name, templateVariables, [subType])](#MetadataType.retrieveAsTemplate) ⇒ <code>Promise.&lt;TYPE.MetadataTypeItemObj&gt;</code>
3338
3408
  * [.retrieveTemplateREST(templateDir, uri, templateVariables, name)](#MetadataType.retrieveTemplateREST) ⇒ <code>Promise.&lt;{metadata: TYPE.MetadataTypeItem, type: string}&gt;</code>
3339
3409
  * [.buildTemplate(retrieveDir, templateDir, key, templateVariables)](#MetadataType.buildTemplate) ⇒ <code>Promise.&lt;TYPE.MetadataTypeItemObj&gt;</code>
@@ -3355,6 +3425,8 @@ Provides default functionality that can be overwritten by child metadata type cl
3355
3425
  * [.getSOAPErrorMsg(ex)](#MetadataType.getSOAPErrorMsg) ⇒ <code>string</code>
3356
3426
  * [.retrieveSOAP(retrieveDir, [requestParams], [singleRetrieve], [additionalFields])](#MetadataType.retrieveSOAP) ⇒ <code>Promise.&lt;TYPE.MetadataTypeMapObj&gt;</code>
3357
3427
  * [.retrieveREST(retrieveDir, uri, [templateVariables], [singleRetrieve])](#MetadataType.retrieveREST) ⇒ <code>Promise.&lt;{metadata: (TYPE.MetadataTypeMap\|TYPE.MetadataTypeItem), type: string}&gt;</code>
3428
+ * [.retrieveRESTcollection(urlArray, [concurrentRequests], [logAmountOfUrls])](#MetadataType.retrieveRESTcollection) ⇒ <code>Promise.&lt;{metadata: (TYPE.MetadataTypeMap\|TYPE.MetadataTypeItem), type: string}&gt;</code>
3429
+ * [.handleRESTErrors(ex, id)](#MetadataType.handleRESTErrors) ⇒ <code>null</code>
3358
3430
  * [.executeREST(uri, key)](#MetadataType.executeREST) ⇒ <code>Promise.&lt;{key:string, response:string}&gt;</code>
3359
3431
  * [.executeSOAP([metadataEntry])](#MetadataType.executeSOAP) ⇒ <code>Promise.&lt;{key:string, response:object}&gt;</code>
3360
3432
  * [.runDocumentOnRetrieve([singleRetrieve], metadataMap)](#MetadataType.runDocumentOnRetrieve) ⇒ <code>Promise.&lt;void&gt;</code>
@@ -3455,7 +3527,7 @@ Gets executed after deployment of metadata type
3455
3527
 
3456
3528
  <a name="MetadataType.postCreateTasks"></a>
3457
3529
 
3458
- ### MetadataType.postCreateTasks(metadataEntry, apiResponse) ⇒ <code>void</code>
3530
+ ### MetadataType.postCreateTasks(metadataEntry, apiResponse, metadataEntryWithAllFields) ⇒ <code>void</code>
3459
3531
  helper for [createREST](#MetadataType.createREST)
3460
3532
 
3461
3533
  **Kind**: static method of [<code>MetadataType</code>](#MetadataType)
@@ -3464,6 +3536,7 @@ helper for [createREST](#MetadataType.createREST)
3464
3536
  | --- | --- | --- |
3465
3537
  | metadataEntry | <code>TYPE.MetadataTypeItem</code> | a single metadata Entry |
3466
3538
  | apiResponse | <code>object</code> | varies depending on the API call |
3539
+ | metadataEntryWithAllFields | <code>TYPE.MetadataTypeItem</code> | like metadataEntry but before non-creatable fields were stripped |
3467
3540
 
3468
3541
  <a name="MetadataType.postUpdateTasks"></a>
3469
3542
 
@@ -3556,7 +3629,7 @@ Gets metadata from Marketing Cloud
3556
3629
 
3557
3630
  <a name="MetadataType.retrieveForCache"></a>
3558
3631
 
3559
- ### MetadataType.retrieveForCache([additionalFields], [subTypeArr], [key]) ⇒ <code>Promise.&lt;TYPE.MetadataTypeMapObj&gt;</code>
3632
+ ### MetadataType.retrieveForCache([additionalFields], [subTypeArr]) ⇒ <code>Promise.&lt;TYPE.MetadataTypeMapObj&gt;</code>
3560
3633
  Gets metadata cache with limited fields and does not store value to disk
3561
3634
 
3562
3635
  **Kind**: static method of [<code>MetadataType</code>](#MetadataType)
@@ -3566,7 +3639,6 @@ Gets metadata cache with limited fields and does not store value to disk
3566
3639
  | --- | --- | --- |
3567
3640
  | [additionalFields] | <code>Array.&lt;string&gt;</code> | Returns specified fields even if their retrieve definition is not set to true |
3568
3641
  | [subTypeArr] | <code>Array.&lt;string&gt;</code> | optionally limit to a single subtype |
3569
- | [key] | <code>string</code> | customer key of single item to retrieve |
3570
3642
 
3571
3643
  <a name="MetadataType.retrieveAsTemplate"></a>
3572
3644
 
@@ -3833,6 +3905,31 @@ Retrieves Metadata for Rest Types
3833
3905
  | [templateVariables] | <code>TYPE.TemplateMap</code> | variables to be replaced in the metadata |
3834
3906
  | [singleRetrieve] | <code>string</code> \| <code>number</code> | key of single item to filter by |
3835
3907
 
3908
+ <a name="MetadataType.retrieveRESTcollection"></a>
3909
+
3910
+ ### MetadataType.retrieveRESTcollection(urlArray, [concurrentRequests], [logAmountOfUrls]) ⇒ <code>Promise.&lt;{metadata: (TYPE.MetadataTypeMap\|TYPE.MetadataTypeItem), type: string}&gt;</code>
3911
+ **Kind**: static method of [<code>MetadataType</code>](#MetadataType)
3912
+ **Returns**: <code>Promise.&lt;{metadata: (TYPE.MetadataTypeMap\|TYPE.MetadataTypeItem), type: string}&gt;</code> - Promise of item map (single item for templated result)
3913
+
3914
+ | Param | Type | Default | Description |
3915
+ | --- | --- | --- | --- |
3916
+ | urlArray | <code>Array.&lt;object&gt;</code> | | {uri: string, id: string} combo of URL and ID/key of metadata |
3917
+ | [concurrentRequests] | <code>number</code> | <code>10</code> | optionally set a different amount of concurrent requests |
3918
+ | [logAmountOfUrls] | <code>boolean</code> | <code>true</code> | if true, prints an info message about to-be loaded amount of metadata |
3919
+
3920
+ <a name="MetadataType.handleRESTErrors"></a>
3921
+
3922
+ ### MetadataType.handleRESTErrors(ex, id) ⇒ <code>null</code>
3923
+ helper for [this.retrieveRESTcollection](this.retrieveRESTcollection)
3924
+
3925
+ **Kind**: static method of [<code>MetadataType</code>](#MetadataType)
3926
+ **Returns**: <code>null</code> - -
3927
+
3928
+ | Param | Type | Description |
3929
+ | --- | --- | --- |
3930
+ | ex | <code>Error</code> | exception |
3931
+ | id | <code>string</code> | id or key of item |
3932
+
3836
3933
  <a name="MetadataType.executeREST"></a>
3837
3934
 
3838
3935
  ### MetadataType.executeREST(uri, key) ⇒ <code>Promise.&lt;{key:string, response:string}&gt;</code>
@@ -5351,7 +5448,10 @@ TransactionalEmail MetadataType
5351
5448
  * [TransactionalEmail](#TransactionalEmail) ⇐ [<code>TransactionalMessage</code>](#TransactionalMessage)
5352
5449
  * [.update(metadata)](#TransactionalEmail.update) ⇒ <code>Promise</code>
5353
5450
  * [.preDeployTasks(metadata)](#TransactionalEmail.preDeployTasks) ⇒ <code>TYPE.MetadataTypeItem</code>
5451
+ * [.postCreateTasks(_, apiResponse)](#TransactionalEmail.postCreateTasks) ⇒ <code>void</code>
5452
+ * [.postDeployTasks()](#TransactionalEmail.postDeployTasks) ⇒ <code>void</code>
5354
5453
  * [.postRetrieveTasks(metadata)](#TransactionalEmail.postRetrieveTasks) ⇒ <code>TYPE.MetadataTypeItem</code>
5454
+ * [.deleteByKey(key)](#TransactionalEmail.deleteByKey) ⇒ <code>Promise.&lt;boolean&gt;</code>
5355
5455
 
5356
5456
  <a name="TransactionalEmail.update"></a>
5357
5457
 
@@ -5377,6 +5477,24 @@ prepares for deployment
5377
5477
  | --- | --- | --- |
5378
5478
  | metadata | <code>TYPE.MetadataTypeItem</code> | a single item |
5379
5479
 
5480
+ <a name="TransactionalEmail.postCreateTasks"></a>
5481
+
5482
+ ### TransactionalEmail.postCreateTasks(_, apiResponse) ⇒ <code>void</code>
5483
+ helper for [TransactionalEmail.createREST](TransactionalEmail.createREST)
5484
+
5485
+ **Kind**: static method of [<code>TransactionalEmail</code>](#TransactionalEmail)
5486
+
5487
+ | Param | Type | Description |
5488
+ | --- | --- | --- |
5489
+ | _ | <code>TYPE.MetadataTypeItem</code> | not used |
5490
+ | apiResponse | <code>object</code> | varies depending on the API call |
5491
+
5492
+ <a name="TransactionalEmail.postDeployTasks"></a>
5493
+
5494
+ ### TransactionalEmail.postDeployTasks() ⇒ <code>void</code>
5495
+ Gets executed after deployment of metadata type
5496
+
5497
+ **Kind**: static method of [<code>TransactionalEmail</code>](#TransactionalEmail)
5380
5498
  <a name="TransactionalEmail.postRetrieveTasks"></a>
5381
5499
 
5382
5500
  ### TransactionalEmail.postRetrieveTasks(metadata) ⇒ <code>TYPE.MetadataTypeItem</code>
@@ -5389,6 +5507,18 @@ manages post retrieve steps
5389
5507
  | --- | --- | --- |
5390
5508
  | metadata | <code>TYPE.MetadataTypeItem</code> | a single item |
5391
5509
 
5510
+ <a name="TransactionalEmail.deleteByKey"></a>
5511
+
5512
+ ### TransactionalEmail.deleteByKey(key) ⇒ <code>Promise.&lt;boolean&gt;</code>
5513
+ Delete a metadata item from the specified business unit
5514
+
5515
+ **Kind**: static method of [<code>TransactionalEmail</code>](#TransactionalEmail)
5516
+ **Returns**: <code>Promise.&lt;boolean&gt;</code> - deletion success status
5517
+
5518
+ | Param | Type | Description |
5519
+ | --- | --- | --- |
5520
+ | key | <code>string</code> | Identifier of item |
5521
+
5392
5522
  <a name="TransactionalMessage"></a>
5393
5523
 
5394
5524
  ## TransactionalMessage ⇐ [<code>MetadataType</code>](#MetadataType)
@@ -5399,7 +5529,7 @@ TransactionalMessage MetadataType
5399
5529
 
5400
5530
  * [TransactionalMessage](#TransactionalMessage) ⇐ [<code>MetadataType</code>](#MetadataType)
5401
5531
  * [.retrieve(retrieveDir, [_], [__], [key])](#TransactionalMessage.retrieve) ⇒ <code>Promise.&lt;TYPE.MetadataTypeMapObj&gt;</code>
5402
- * [.retrieveForCache()](#TransactionalMessage.retrieveForCache) ⇒ <code>Promise.&lt;TYPE.MetadataTypeMapObj&gt;</code>
5532
+ * [.retrieveForCache([key])](#TransactionalMessage.retrieveForCache) ⇒ <code>Promise.&lt;TYPE.MetadataTypeMapObj&gt;</code>
5403
5533
  * [.update(metadata)](#TransactionalMessage.update) ⇒ <code>Promise</code>
5404
5534
  * [.create(metadata)](#TransactionalMessage.create) ⇒ <code>Promise</code>
5405
5535
  * [.deleteByKey(key)](#TransactionalMessage.deleteByKey) ⇒ <code>Promise.&lt;boolean&gt;</code>
@@ -5421,11 +5551,16 @@ Retrieves Metadata
5421
5551
 
5422
5552
  <a name="TransactionalMessage.retrieveForCache"></a>
5423
5553
 
5424
- ### TransactionalMessage.retrieveForCache() ⇒ <code>Promise.&lt;TYPE.MetadataTypeMapObj&gt;</code>
5554
+ ### TransactionalMessage.retrieveForCache([key]) ⇒ <code>Promise.&lt;TYPE.MetadataTypeMapObj&gt;</code>
5425
5555
  Retrieves event definition metadata for caching
5426
5556
 
5427
5557
  **Kind**: static method of [<code>TransactionalMessage</code>](#TransactionalMessage)
5428
5558
  **Returns**: <code>Promise.&lt;TYPE.MetadataTypeMapObj&gt;</code> - Promise of metadata
5559
+
5560
+ | Param | Type | Description |
5561
+ | --- | --- | --- |
5562
+ | [key] | <code>string</code> | customer key of single item to cache |
5563
+
5429
5564
  <a name="TransactionalMessage.update"></a>
5430
5565
 
5431
5566
  ### TransactionalMessage.update(metadata) ⇒ <code>Promise</code>
@@ -5975,535 +6110,183 @@ manages post retrieve steps
5975
6110
  | --- | --- | --- |
5976
6111
  | metadata | <code>TYPE.MetadataTypeItem</code> | a single item |
5977
6112
 
5978
- <a name="Retriever"></a>
6113
+ <a name="Verification"></a>
5979
6114
 
5980
- ## Retriever
5981
- Retrieves metadata from a business unit and saves it to the local filesystem.
6115
+ ## Verification ⇐ [<code>MetadataType</code>](#MetadataType)
6116
+ Verification MetadataType
5982
6117
 
5983
6118
  **Kind**: global class
6119
+ **Extends**: [<code>MetadataType</code>](#MetadataType)
5984
6120
 
5985
- * [Retriever](#Retriever)
5986
- * [new Retriever(properties, buObject)](#new_Retriever_new)
5987
- * [.retrieve(metadataTypes, [namesOrKeys], [templateVariables], [changelogOnly])](#Retriever+retrieve) ⇒ <code>Promise.&lt;TYPE.MultiMetadataTypeList&gt;</code>
5988
- * [._getTypeDependencies(metadataTypes)](#Retriever+_getTypeDependencies) ⇒ <code>Array.&lt;TYPE.SupportedMetadataTypes&gt;</code>
6121
+ * [Verification](#Verification) ⇐ [<code>MetadataType</code>](#MetadataType)
6122
+ * [.retrieve(retrieveDir, [_], [__], key)](#Verification.retrieve) ⇒ <code>Promise.&lt;TYPE.MetadataTypeMapObj&gt;</code>
6123
+ * [.handleRESTErrors(ex, id)](#Verification.handleRESTErrors) ⇒ <code>null</code>
6124
+ * [.retrieveForCache()](#Verification.retrieveForCache) ⇒ <code>Promise.&lt;TYPE.MetadataTypeMapObj&gt;</code>
6125
+ * [.create(metadata)](#Verification.create) ⇒ <code>Promise</code>
6126
+ * [.postCreateTasks(metadataEntry, apiResponse, metadataEntryWithAllFields)](#Verification.postCreateTasks) ⇒ <code>void</code>
6127
+ * [.update(metadata)](#Verification.update) ⇒ <code>Promise</code>
6128
+ * [.preDeployTasks(metadata)](#Verification.preDeployTasks) ⇒ <code>TYPE.VerificationItem</code>
6129
+ * [.postRetrieveTasks(metadata)](#Verification.postRetrieveTasks) ⇒ <code>TYPE.VerificationItem</code>
6130
+ * [.deleteByKey(key)](#Verification.deleteByKey) ⇒ <code>Promise.&lt;boolean&gt;</code>
5989
6131
 
5990
- <a name="new_Retriever_new"></a>
6132
+ <a name="Verification.retrieve"></a>
5991
6133
 
5992
- ### new Retriever(properties, buObject)
5993
- Creates a Retriever, uses v2 auth if v2AuthOptions are passed.
6134
+ ### Verification.retrieve(retrieveDir, [_], [__], key) ⇒ <code>Promise.&lt;TYPE.MetadataTypeMapObj&gt;</code>
6135
+ Retrieves Metadata of Data Verification Activity.
5994
6136
 
6137
+ **Kind**: static method of [<code>Verification</code>](#Verification)
6138
+ **Returns**: <code>Promise.&lt;TYPE.MetadataTypeMapObj&gt;</code> - Promise of metadata
5995
6139
 
5996
6140
  | Param | Type | Description |
5997
6141
  | --- | --- | --- |
5998
- | properties | <code>TYPE.Mcdevrc</code> | General configuration to be used in retrieve |
5999
- | buObject | <code>TYPE.BuObject</code> | properties for auth |
6142
+ | retrieveDir | <code>string</code> | Directory where retrieved metadata directory will be saved |
6143
+ | [_] | <code>void</code> | unused parameter |
6144
+ | [__] | <code>void</code> | unused parameter |
6145
+ | key | <code>string</code> | customer key of single item to retrieve |
6000
6146
 
6001
- <a name="Retriever+retrieve"></a>
6147
+ <a name="Verification.handleRESTErrors"></a>
6002
6148
 
6003
- ### retriever.retrieve(metadataTypes, [namesOrKeys], [templateVariables], [changelogOnly]) ⇒ <code>Promise.&lt;TYPE.MultiMetadataTypeList&gt;</code>
6004
- Retrieve metadata of specified types into local file system and Retriever.metadata
6149
+ ### Verification.handleRESTErrors(ex, id) ⇒ <code>null</code>
6150
+ helper for [this.retrieveRESTcollection](this.retrieveRESTcollection)
6005
6151
 
6006
- **Kind**: instance method of [<code>Retriever</code>](#Retriever)
6007
- **Returns**: <code>Promise.&lt;TYPE.MultiMetadataTypeList&gt;</code> - Promise of a list of retrieved items grouped by type {automation:[...], query:[...]}
6152
+ **Kind**: static method of [<code>Verification</code>](#Verification)
6153
+ **Returns**: <code>null</code> - -
6008
6154
 
6009
6155
  | Param | Type | Description |
6010
6156
  | --- | --- | --- |
6011
- | metadataTypes | <code>Array.&lt;TYPE.SupportedMetadataTypes&gt;</code> | list of metadata types to retrieve; can include subtypes! |
6012
- | [namesOrKeys] | <code>Array.&lt;string&gt;</code> \| <code>TYPE.TypeKeyCombo</code> | name of Metadata to retrieveAsTemplate or list of keys for normal retrieval |
6013
- | [templateVariables] | <code>TYPE.TemplateMap</code> | Object of values which can be replaced (in case of templating) |
6014
- | [changelogOnly] | <code>boolean</code> | skip saving, only create json in memory |
6157
+ | ex | <code>Error</code> | exception |
6158
+ | id | <code>string</code> | id or key of item |
6015
6159
 
6016
- <a name="Retriever+_getTypeDependencies"></a>
6160
+ <a name="Verification.retrieveForCache"></a>
6017
6161
 
6018
- ### retriever.\_getTypeDependencies(metadataTypes) ⇒ <code>Array.&lt;TYPE.SupportedMetadataTypes&gt;</code>
6019
- helper for [Retriever.retrieve](Retriever.retrieve) to get all dependencies of the given types
6162
+ ### Verification.retrieveForCache() ⇒ <code>Promise.&lt;TYPE.MetadataTypeMapObj&gt;</code>
6163
+ Retrieves Metadata of Data Extract Activity for caching
6020
6164
 
6021
- **Kind**: instance method of [<code>Retriever</code>](#Retriever)
6022
- **Returns**: <code>Array.&lt;TYPE.SupportedMetadataTypes&gt;</code> - unique list dependent metadata types
6165
+ **Kind**: static method of [<code>Verification</code>](#Verification)
6166
+ **Returns**: <code>Promise.&lt;TYPE.MetadataTypeMapObj&gt;</code> - Promise of metadata
6167
+ <a name="Verification.create"></a>
6168
+
6169
+ ### Verification.create(metadata) ⇒ <code>Promise</code>
6170
+ Creates a single Data Extract
6171
+
6172
+ **Kind**: static method of [<code>Verification</code>](#Verification)
6173
+ **Returns**: <code>Promise</code> - Promise
6023
6174
 
6024
6175
  | Param | Type | Description |
6025
6176
  | --- | --- | --- |
6026
- | metadataTypes | <code>Array.&lt;TYPE.SupportedMetadataTypes&gt;</code> | list of metadata types to retrieve; can include subtypes! |
6177
+ | metadata | <code>TYPE.VerificationItem</code> | a single Data Extract |
6027
6178
 
6028
- <a name="Util"></a>
6179
+ <a name="Verification.postCreateTasks"></a>
6029
6180
 
6030
- ## Util
6031
- CLI entry for SFMC DevTools
6181
+ ### Verification.postCreateTasks(metadataEntry, apiResponse, metadataEntryWithAllFields) ⇒ <code>void</code>
6182
+ helper for [createREST](#MetadataType.createREST)
6032
6183
 
6033
- **Kind**: global constant
6184
+ **Kind**: static method of [<code>Verification</code>](#Verification)
6034
6185
 
6035
- * [Util](#Util)
6036
- * [.skipInteraction](#Util.skipInteraction) : <code>TYPE.skipInteraction</code>
6037
- * [.logger](#Util.logger) : <code>TYPE.Logger</code>
6038
- * [.filterObjByKeys(originalObj, [whitelistArr])](#Util.filterObjByKeys) <code>Object.&lt;string, \*&gt;</code>
6039
- * [.includesStartsWith(arr, search)](#Util.includesStartsWith) <code>boolean</code>
6040
- * [.includesStartsWithIndex(arr, search)](#Util.includesStartsWithIndex) ⇒ <code>number</code>
6041
- * [.checkMarket(market, properties)](#Util.checkMarket) ⇒ <code>boolean</code>
6042
- * [.verifyMarketList(mlName, properties)](#Util.verifyMarketList)
6043
- * [.signalFatalError()](#Util.signalFatalError) ⇒ <code>void</code>
6044
- * [.isTrue(attrValue)](#Util.isTrue) ⇒ <code>boolean</code>
6045
- * [.isFalse(attrValue)](#Util.isFalse) ⇒ <code>boolean</code>
6046
- * [._isValidType(selectedType, [handleOutside])](#Util._isValidType) ⇒ <code>boolean</code>
6047
- * [.getTypeAndSubType(selectedType)](#Util.getTypeAndSubType) ⇒ <code>Array.&lt;string&gt;</code>
6048
- * [.getRetrieveTypeChoices()](#Util.getRetrieveTypeChoices) ⇒ <code>Array.&lt;TYPE.SupportedMetadataTypes&gt;</code>
6049
- * [._createNewLoggerTransport([noLogFile])](#Util._createNewLoggerTransport) ⇒ <code>object</code>
6050
- * [.startLogger([restart], [noLogFile])](#Util.startLogger) ⇒ <code>void</code>
6051
- * [.metadataLogger(level, type, method, payload, [source])](#Util.metadataLogger) ⇒ <code>void</code>
6052
- * [.replaceByObject(str, obj)](#Util.replaceByObject) ⇒ <code>string</code> \| <code>object</code>
6053
- * [.inverseGet(objs, val)](#Util.inverseGet) ⇒ <code>string</code>
6054
- * [.getDependentMetadata(fixedType)](#Util.getDependentMetadata) ⇒ <code>Array.&lt;string&gt;</code>
6055
- * [.getMetadataHierachy(metadataTypes)](#Util.getMetadataHierachy) ⇒ <code>Object.&lt;string, Array.&lt;string&gt;&gt;</code>
6056
- * [.resolveObjPath(path, obj)](#Util.resolveObjPath) ⇒ <code>any</code>
6057
- * [.execSync(cmd, [args], [hideOutput])](#Util.execSync) ⇒ <code>string</code> \| <code>void</code>
6058
- * [.templateSearchResult(results, keyToSearch, searchValue)](#Util.templateSearchResult) ⇒ <code>TYPE.MetadataTypeItem</code>
6059
- * [.setLoggingLevel(argv)](#Util.setLoggingLevel) ⇒ <code>void</code>
6060
- * [.logBeta(type)](#Util.logBeta)
6061
- * [.getGrayMsg(msg)](#Util.getGrayMsg) ⇒ <code>string</code>
6062
- * [.logSubtypes(subTypeArr)](#Util.logSubtypes) ⇒ <code>void</code>
6063
- * [.getKeysString(keyArr, [isId])](#Util.getKeysString) ⇒ <code>string</code>
6064
- * [.sleep(ms)](#Util.sleep) ⇒ <code>Promise.&lt;void&gt;</code>
6065
- * [.getSsjs(code)](#Util.getSsjs) ⇒ <code>string</code>
6066
- * [.stringLike(testString, search)](#Util.stringLike) ⇒ <code>boolean</code>
6067
- * [.fieldsLike(metadata, [filters])](#Util.fieldsLike) ⇒ <code>boolean</code>
6068
- * [.capitalizeFirstLetter(str)](#Util.capitalizeFirstLetter) ⇒ <code>string</code>
6186
+ | Param | Type | Description |
6187
+ | --- | --- | --- |
6188
+ | metadataEntry | <code>TYPE.MetadataTypeItem</code> | a single metadata Entry |
6189
+ | apiResponse | <code>object</code> | varies depending on the API call |
6190
+ | metadataEntryWithAllFields | <code>TYPE.MetadataTypeItem</code> | like metadataEntry but before non-creatable fields were stripped |
6069
6191
 
6070
- <a name="Util.skipInteraction"></a>
6192
+ <a name="Verification.update"></a>
6071
6193
 
6072
- ### Util.skipInteraction : <code>TYPE.skipInteraction</code>
6073
- **Kind**: static property of [<code>Util</code>](#Util)
6074
- <a name="Util.logger"></a>
6194
+ ### Verification.update(metadata) <code>Promise</code>
6195
+ Updates a single Data Extract
6075
6196
 
6076
- ### Util.logger : <code>TYPE.Logger</code>
6077
- Logger that creates timestamped log file in 'logs/' directory
6197
+ **Kind**: static method of [<code>Verification</code>](#Verification)
6198
+ **Returns**: <code>Promise</code> - Promise
6078
6199
 
6079
- **Kind**: static property of [<code>Util</code>](#Util)
6080
- <a name="Util.filterObjByKeys"></a>
6200
+ | Param | Type | Description |
6201
+ | --- | --- | --- |
6202
+ | metadata | <code>TYPE.VerificationItem</code> | a single Data Extract |
6081
6203
 
6082
- ### Util.filterObjByKeys(originalObj, [whitelistArr]) ⇒ <code>Object.&lt;string, \*&gt;</code>
6083
- helper that allows filtering an object by its keys
6204
+ <a name="Verification.preDeployTasks"></a>
6084
6205
 
6085
- **Kind**: static method of [<code>Util</code>](#Util)
6086
- **Returns**: <code>Object.&lt;string, \*&gt;</code> - filtered object that only contains keys you provided
6206
+ ### Verification.preDeployTasks(metadata) <code>TYPE.VerificationItem</code>
6207
+ prepares a verification for deployment
6208
+
6209
+ **Kind**: static method of [<code>Verification</code>](#Verification)
6210
+ **Returns**: <code>TYPE.VerificationItem</code> - metadata object
6087
6211
 
6088
6212
  | Param | Type | Description |
6089
6213
  | --- | --- | --- |
6090
- | originalObj | <code>Object.&lt;string, \*&gt;</code> | object that you want to filter |
6091
- | [whitelistArr] | <code>Array.&lt;string&gt;</code> | positive filter. if not provided, returns originalObj without filter |
6214
+ | metadata | <code>TYPE.VerificationItem</code> | a single verification activity definition |
6092
6215
 
6093
- <a name="Util.includesStartsWith"></a>
6216
+ <a name="Verification.postRetrieveTasks"></a>
6094
6217
 
6095
- ### Util.includesStartsWith(arr, search) ⇒ <code>boolean</code>
6096
- extended Array.includes method that allows check if an array-element starts with a certain string
6218
+ ### Verification.postRetrieveTasks(metadata) ⇒ <code>TYPE.VerificationItem</code>
6219
+ parses retrieved Metadata before saving
6097
6220
 
6098
- **Kind**: static method of [<code>Util</code>](#Util)
6099
- **Returns**: <code>boolean</code> - found / not found
6221
+ **Kind**: static method of [<code>Verification</code>](#Verification)
6222
+ **Returns**: <code>TYPE.VerificationItem</code> - Array with one metadata object and one sql string
6100
6223
 
6101
6224
  | Param | Type | Description |
6102
6225
  | --- | --- | --- |
6103
- | arr | <code>Array.&lt;string&gt;</code> | your array of strigns |
6104
- | search | <code>string</code> | the string you are looking for |
6226
+ | metadata | <code>TYPE.VerificationItem</code> | a single verification activity definition |
6105
6227
 
6106
- <a name="Util.includesStartsWithIndex"></a>
6228
+ <a name="Verification.deleteByKey"></a>
6107
6229
 
6108
- ### Util.includesStartsWithIndex(arr, search) ⇒ <code>number</code>
6109
- extended Array.includes method that allows check if an array-element starts with a certain string
6230
+ ### Verification.deleteByKey(key) ⇒ <code>Promise.&lt;boolean&gt;</code>
6231
+ Delete a metadata item from the specified business unit
6110
6232
 
6111
- **Kind**: static method of [<code>Util</code>](#Util)
6112
- **Returns**: <code>number</code> - array index 0..n or -1 of not found
6233
+ **Kind**: static method of [<code>Verification</code>](#Verification)
6234
+ **Returns**: <code>Promise.&lt;boolean&gt;</code> - deletion success status
6113
6235
 
6114
6236
  | Param | Type | Description |
6115
6237
  | --- | --- | --- |
6116
- | arr | <code>Array.&lt;string&gt;</code> | your array of strigns |
6117
- | search | <code>string</code> | the string you are looking for |
6238
+ | key | <code>string</code> | Identifier of item |
6118
6239
 
6119
- <a name="Util.checkMarket"></a>
6240
+ <a name="Retriever"></a>
6120
6241
 
6121
- ### Util.checkMarket(market, properties) ⇒ <code>boolean</code>
6122
- check if a market name exists in current mcdev config
6242
+ ## Retriever
6243
+ Retrieves metadata from a business unit and saves it to the local filesystem.
6123
6244
 
6124
- **Kind**: static method of [<code>Util</code>](#Util)
6125
- **Returns**: <code>boolean</code> - found market or not
6245
+ **Kind**: global class
6126
6246
 
6127
- | Param | Type | Description |
6128
- | --- | --- | --- |
6129
- | market | <code>string</code> | market localizations |
6130
- | properties | <code>TYPE.Mcdevrc</code> | local mcdev config |
6247
+ * [Retriever](#Retriever)
6248
+ * [new Retriever(properties, buObject)](#new_Retriever_new)
6249
+ * [.retrieve(metadataTypes, [namesOrKeys], [templateVariables], [changelogOnly])](#Retriever+retrieve) ⇒ <code>Promise.&lt;TYPE.MultiMetadataTypeList&gt;</code>
6250
+ * [._getTypeDependencies(metadataTypes)](#Retriever+_getTypeDependencies) <code>Array.&lt;TYPE.SupportedMetadataTypes&gt;</code>
6131
6251
 
6132
- <a name="Util.verifyMarketList"></a>
6252
+ <a name="new_Retriever_new"></a>
6133
6253
 
6134
- ### Util.verifyMarketList(mlName, properties)
6135
- ensure provided MarketList exists and it's content including markets and BUs checks out
6254
+ ### new Retriever(properties, buObject)
6255
+ Creates a Retriever, uses v2 auth if v2AuthOptions are passed.
6136
6256
 
6137
- **Kind**: static method of [<code>Util</code>](#Util)
6138
6257
 
6139
6258
  | Param | Type | Description |
6140
6259
  | --- | --- | --- |
6141
- | mlName | <code>string</code> | name of marketList |
6142
6260
  | properties | <code>TYPE.Mcdevrc</code> | General configuration to be used in retrieve |
6261
+ | buObject | <code>TYPE.BuObject</code> | properties for auth |
6143
6262
 
6144
- <a name="Util.signalFatalError"></a>
6145
-
6146
- ### Util.signalFatalError() ⇒ <code>void</code>
6147
- used to ensure the program tells surrounding software that an unrecoverable error occured
6148
-
6149
- **Kind**: static method of [<code>Util</code>](#Util)
6150
- <a name="Util.isTrue"></a>
6263
+ <a name="Retriever+retrieve"></a>
6151
6264
 
6152
- ### Util.isTrue(attrValue) ⇒ <code>boolean</code>
6153
- SFMC accepts multiple true values for Boolean attributes for which we are checking here.
6154
- The same problem occurs when evaluating boolean CLI flags
6265
+ ### retriever.retrieve(metadataTypes, [namesOrKeys], [templateVariables], [changelogOnly]) ⇒ <code>Promise.&lt;TYPE.MultiMetadataTypeList&gt;</code>
6266
+ Retrieve metadata of specified types into local file system and Retriever.metadata
6155
6267
 
6156
- **Kind**: static method of [<code>Util</code>](#Util)
6157
- **Returns**: <code>boolean</code> - attribute value == true ? true : false
6268
+ **Kind**: instance method of [<code>Retriever</code>](#Retriever)
6269
+ **Returns**: <code>Promise.&lt;TYPE.MultiMetadataTypeList&gt;</code> - Promise of a list of retrieved items grouped by type {automation:[...], query:[...]}
6158
6270
 
6159
6271
  | Param | Type | Description |
6160
6272
  | --- | --- | --- |
6161
- | attrValue | <code>\*</code> | value |
6273
+ | metadataTypes | <code>Array.&lt;TYPE.SupportedMetadataTypes&gt;</code> | list of metadata types to retrieve; can include subtypes! |
6274
+ | [namesOrKeys] | <code>Array.&lt;string&gt;</code> \| <code>TYPE.TypeKeyCombo</code> | name of Metadata to retrieveAsTemplate or list of keys for normal retrieval |
6275
+ | [templateVariables] | <code>TYPE.TemplateMap</code> | Object of values which can be replaced (in case of templating) |
6276
+ | [changelogOnly] | <code>boolean</code> | skip saving, only create json in memory |
6162
6277
 
6163
- <a name="Util.isFalse"></a>
6278
+ <a name="Retriever+_getTypeDependencies"></a>
6164
6279
 
6165
- ### Util.isFalse(attrValue) ⇒ <code>boolean</code>
6166
- SFMC accepts multiple false values for Boolean attributes for which we are checking here.
6167
- The same problem occurs when evaluating boolean CLI flags
6280
+ ### retriever.\_getTypeDependencies(metadataTypes) ⇒ <code>Array.&lt;TYPE.SupportedMetadataTypes&gt;</code>
6281
+ helper for [Retriever.retrieve](Retriever.retrieve) to get all dependencies of the given types
6168
6282
 
6169
- **Kind**: static method of [<code>Util</code>](#Util)
6170
- **Returns**: <code>boolean</code> - attribute value == false ? true : false
6283
+ **Kind**: instance method of [<code>Retriever</code>](#Retriever)
6284
+ **Returns**: <code>Array.&lt;TYPE.SupportedMetadataTypes&gt;</code> - unique list dependent metadata types
6171
6285
 
6172
6286
  | Param | Type | Description |
6173
6287
  | --- | --- | --- |
6174
- | attrValue | <code>\*</code> | value |
6175
-
6176
- <a name="Util._isValidType"></a>
6177
-
6178
- ### Util.\_isValidType(selectedType, [handleOutside]) ⇒ <code>boolean</code>
6179
- helper for Mcdev.retrieve, Mcdev.retrieveAsTemplate and Mcdev.deploy
6180
-
6181
- **Kind**: static method of [<code>Util</code>](#Util)
6182
- **Returns**: <code>boolean</code> - type ok or not
6183
-
6184
- | Param | Type | Description |
6185
- | --- | --- | --- |
6186
- | selectedType | <code>TYPE.SupportedMetadataTypes</code> | type or type-subtype |
6187
- | [handleOutside] | <code>boolean</code> | if the API reponse is irregular this allows you to handle it outside of this generic method |
6188
-
6189
- <a name="Util.getTypeAndSubType"></a>
6190
-
6191
- ### Util.getTypeAndSubType(selectedType) ⇒ <code>Array.&lt;string&gt;</code>
6192
- helper that deals with extracting type and subtype
6193
-
6194
- **Kind**: static method of [<code>Util</code>](#Util)
6195
- **Returns**: <code>Array.&lt;string&gt;</code> - first elem is type, second elem is subType
6196
-
6197
- | Param | Type | Description |
6198
- | --- | --- | --- |
6199
- | selectedType | <code>string</code> | "type" or "type-subtype" |
6200
-
6201
- <a name="Util.getRetrieveTypeChoices"></a>
6202
-
6203
- ### Util.getRetrieveTypeChoices() ⇒ <code>Array.&lt;TYPE.SupportedMetadataTypes&gt;</code>
6204
- helper for getDefaultProperties()
6205
-
6206
- **Kind**: static method of [<code>Util</code>](#Util)
6207
- **Returns**: <code>Array.&lt;TYPE.SupportedMetadataTypes&gt;</code> - type choices
6208
- <a name="Util._createNewLoggerTransport"></a>
6209
-
6210
- ### Util.\_createNewLoggerTransport([noLogFile]) ⇒ <code>object</code>
6211
- wrapper around our standard winston logging to console and logfile
6212
-
6213
- **Kind**: static method of [<code>Util</code>](#Util)
6214
- **Returns**: <code>object</code> - initiated logger for console and file
6215
-
6216
- | Param | Type | Description |
6217
- | --- | --- | --- |
6218
- | [noLogFile] | <code>boolean</code> | optional flag to indicate if we should log to file; CLI logs are always on |
6219
-
6220
- <a name="Util.startLogger"></a>
6221
-
6222
- ### Util.startLogger([restart], [noLogFile]) ⇒ <code>void</code>
6223
- initiate winston logger
6224
-
6225
- **Kind**: static method of [<code>Util</code>](#Util)
6226
-
6227
- | Param | Type | Description |
6228
- | --- | --- | --- |
6229
- | [restart] | <code>boolean</code> | if true, logger will be restarted; otherwise, an existing logger will be used |
6230
- | [noLogFile] | <code>boolean</code> | if false, logger will log to file; otherwise, only to console |
6231
-
6232
- <a name="Util.metadataLogger"></a>
6233
-
6234
- ### Util.metadataLogger(level, type, method, payload, [source]) ⇒ <code>void</code>
6235
- Logger helper for Metadata functions
6236
-
6237
- **Kind**: static method of [<code>Util</code>](#Util)
6238
-
6239
- | Param | Type | Description |
6240
- | --- | --- | --- |
6241
- | level | <code>string</code> | of log (error, info, warn) |
6242
- | type | <code>string</code> | of metadata being referenced |
6243
- | method | <code>string</code> | name which log was called from |
6244
- | payload | <code>\*</code> | generic object which details the error |
6245
- | [source] | <code>string</code> | key/id of metadata which relates to error |
6246
-
6247
- <a name="Util.replaceByObject"></a>
6248
-
6249
- ### Util.replaceByObject(str, obj) ⇒ <code>string</code> \| <code>object</code>
6250
- replaces values in a JSON object string, based on a series of
6251
- key-value pairs (obj)
6252
-
6253
- **Kind**: static method of [<code>Util</code>](#Util)
6254
- **Returns**: <code>string</code> \| <code>object</code> - replaced version of str
6255
-
6256
- | Param | Type | Description |
6257
- | --- | --- | --- |
6258
- | str | <code>string</code> \| <code>object</code> | JSON object or its stringified version, which has values to be replaced |
6259
- | obj | <code>TYPE.TemplateMap</code> | key value object which contains keys to be replaced and values to be replaced with |
6260
-
6261
- <a name="Util.inverseGet"></a>
6262
-
6263
- ### Util.inverseGet(objs, val) ⇒ <code>string</code>
6264
- get key of an object based on the first matching value
6265
-
6266
- **Kind**: static method of [<code>Util</code>](#Util)
6267
- **Returns**: <code>string</code> - key
6268
-
6269
- | Param | Type | Description |
6270
- | --- | --- | --- |
6271
- | objs | <code>object</code> | object of objects to be searched |
6272
- | val | <code>string</code> | value to be searched for |
6273
-
6274
- <a name="Util.getDependentMetadata"></a>
6275
-
6276
- ### Util.getDependentMetadata(fixedType) ⇒ <code>Array.&lt;string&gt;</code>
6277
- helper for Mcdev.fixKeys. Retrieve dependent metadata
6278
-
6279
- **Kind**: static method of [<code>Util</code>](#Util)
6280
- **Returns**: <code>Array.&lt;string&gt;</code> - array of types that depend on the given type
6281
-
6282
- | Param | Type | Description |
6283
- | --- | --- | --- |
6284
- | fixedType | <code>string</code> | type of the metadata passed as a parameter to fixKeys function |
6285
-
6286
- <a name="Util.getMetadataHierachy"></a>
6287
-
6288
- ### Util.getMetadataHierachy(metadataTypes) ⇒ <code>Object.&lt;string, Array.&lt;string&gt;&gt;</code>
6289
- Returns Order in which metadata needs to be retrieved/deployed
6290
-
6291
- **Kind**: static method of [<code>Util</code>](#Util)
6292
- **Returns**: <code>Object.&lt;string, Array.&lt;string&gt;&gt;</code> - retrieve/deploy order as array
6293
-
6294
- | Param | Type | Description |
6295
- | --- | --- | --- |
6296
- | metadataTypes | <code>Array.&lt;string&gt;</code> | which should be retrieved/deployed |
6297
-
6298
- <a name="Util.resolveObjPath"></a>
6299
-
6300
- ### Util.resolveObjPath(path, obj) ⇒ <code>any</code>
6301
- let's you dynamically walk down an object and get a value
6302
-
6303
- **Kind**: static method of [<code>Util</code>](#Util)
6304
- **Returns**: <code>any</code> - value of obj.path
6305
-
6306
- | Param | Type | Description |
6307
- | --- | --- | --- |
6308
- | path | <code>string</code> | 'fieldA.fieldB.fieldC' |
6309
- | obj | <code>object</code> | some parent object |
6310
-
6311
- <a name="Util.execSync"></a>
6312
-
6313
- ### Util.execSync(cmd, [args], [hideOutput]) ⇒ <code>string</code> \| <code>void</code>
6314
- helper to run other commands as if run manually by user
6315
-
6316
- **Kind**: static method of [<code>Util</code>](#Util)
6317
- **Returns**: <code>string</code> \| <code>void</code> - output of command if hideOutput is true
6318
-
6319
- | Param | Type | Description |
6320
- | --- | --- | --- |
6321
- | cmd | <code>string</code> | to be executed command |
6322
- | [args] | <code>Array.&lt;string&gt;</code> | list of arguments |
6323
- | [hideOutput] | <code>boolean</code> | if true, output of command will be hidden from CLI |
6324
-
6325
- <a name="Util.templateSearchResult"></a>
6326
-
6327
- ### Util.templateSearchResult(results, keyToSearch, searchValue) ⇒ <code>TYPE.MetadataTypeItem</code>
6328
- standardize check to ensure only one result is returned from template search
6329
-
6330
- **Kind**: static method of [<code>Util</code>](#Util)
6331
- **Returns**: <code>TYPE.MetadataTypeItem</code> - metadata to be used in building template
6332
-
6333
- | Param | Type | Description |
6334
- | --- | --- | --- |
6335
- | results | <code>Array.&lt;TYPE.MetadataTypeItem&gt;</code> | array of metadata |
6336
- | keyToSearch | <code>string</code> | the field which contains the searched value |
6337
- | searchValue | <code>string</code> | the value which is being looked for |
6338
-
6339
- <a name="Util.setLoggingLevel"></a>
6340
-
6341
- ### Util.setLoggingLevel(argv) ⇒ <code>void</code>
6342
- configures what is displayed in the console
6343
-
6344
- **Kind**: static method of [<code>Util</code>](#Util)
6345
-
6346
- | Param | Type | Description |
6347
- | --- | --- | --- |
6348
- | argv | <code>object</code> | list of command line parameters given by user |
6349
- | [argv.silent] | <code>boolean</code> | only errors printed to CLI |
6350
- | [argv.verbose] | <code>boolean</code> | chatty user CLI output |
6351
- | [argv.debug] | <code>boolean</code> | enables developer output & features |
6352
-
6353
- <a name="Util.logBeta"></a>
6354
-
6355
- ### Util.logBeta(type)
6356
- outputs a warning that the given type is still in beta
6357
-
6358
- **Kind**: static method of [<code>Util</code>](#Util)
6359
-
6360
- | Param | Type | Description |
6361
- | --- | --- | --- |
6362
- | type | <code>string</code> | api name of the type thats in beta |
6363
-
6364
- <a name="Util.getGrayMsg"></a>
6365
-
6366
- ### Util.getGrayMsg(msg) ⇒ <code>string</code>
6367
- helper that wraps a message in the correct color codes to have them printed gray
6368
-
6369
- **Kind**: static method of [<code>Util</code>](#Util)
6370
- **Returns**: <code>string</code> - gray msg
6371
-
6372
- | Param | Type | Description |
6373
- | --- | --- | --- |
6374
- | msg | <code>string</code> | log message that should be wrapped with color codes |
6375
-
6376
- <a name="Util.logSubtypes"></a>
6377
-
6378
- ### Util.logSubtypes(subTypeArr) ⇒ <code>void</code>
6379
- helper to print the subtypes we filtered by
6380
-
6381
- **Kind**: static method of [<code>Util</code>](#Util)
6382
-
6383
- | Param | Type | Description |
6384
- | --- | --- | --- |
6385
- | subTypeArr | <code>Array.&lt;string&gt;</code> | list of subtypes to be printed |
6386
-
6387
- <a name="Util.getKeysString"></a>
6388
-
6389
- ### Util.getKeysString(keyArr, [isId]) ⇒ <code>string</code>
6390
- helper to print the subtypes we filtered by
6391
-
6392
- **Kind**: static method of [<code>Util</code>](#Util)
6393
- **Returns**: <code>string</code> - string to be appended to log message
6394
-
6395
- | Param | Type | Description |
6396
- | --- | --- | --- |
6397
- | keyArr | <code>Array.&lt;string&gt;</code> \| <code>string</code> | list of subtypes to be printed |
6398
- | [isId] | <code>boolean</code> | optional flag to indicate if key is an id |
6399
-
6400
- <a name="Util.sleep"></a>
6401
-
6402
- ### Util.sleep(ms) ⇒ <code>Promise.&lt;void&gt;</code>
6403
- pause execution of code; useful when multiple server calls are dependent on each other and might not be executed right away
6404
-
6405
- **Kind**: static method of [<code>Util</code>](#Util)
6406
- **Returns**: <code>Promise.&lt;void&gt;</code> - - promise to wait for
6407
-
6408
- | Param | Type | Description |
6409
- | --- | --- | --- |
6410
- | ms | <code>number</code> | time in miliseconds to wait |
6411
-
6412
- <a name="Util.getSsjs"></a>
6413
-
6414
- ### Util.getSsjs(code) ⇒ <code>string</code>
6415
- helper for Asset.extractCode and Script.prepExtractedCode to determine if a code block is a valid SSJS block
6416
-
6417
- **Kind**: static method of [<code>Util</code>](#Util)
6418
- **Returns**: <code>string</code> - the SSJS code if code block is a valid SSJS block, otherwise null
6419
-
6420
- | Param | Type | Description |
6421
- | --- | --- | --- |
6422
- | code | <code>string</code> | code block to check |
6423
-
6424
- **Example**
6425
- ```js
6426
- the following is invalid:
6427
- <script runat="server">
6428
- // 1
6429
- </script>
6430
- <script runat="server">
6431
- // 2
6432
- </script>
6433
-
6434
- the following is valid:
6435
- <script runat="server">
6436
- // 3
6437
- </script>
6438
- ```
6439
- <a name="Util.stringLike"></a>
6440
-
6441
- ### Util.stringLike(testString, search) ⇒ <code>boolean</code>
6442
- allows us to filter just like with SQL's LIKE operator
6443
-
6444
- **Kind**: static method of [<code>Util</code>](#Util)
6445
- **Returns**: <code>boolean</code> - true if testString matches search
6446
-
6447
- | Param | Type | Description |
6448
- | --- | --- | --- |
6449
- | testString | <code>string</code> | field value to test |
6450
- | search | <code>string</code> | search string in SQL LIKE format |
6451
-
6452
- <a name="Util.fieldsLike"></a>
6453
-
6454
- ### Util.fieldsLike(metadata, [filters]) ⇒ <code>boolean</code>
6455
- returns true if no LIKE filter is defined or if all filters match
6456
-
6457
- **Kind**: static method of [<code>Util</code>](#Util)
6458
- **Returns**: <code>boolean</code> - true if no LIKE filter is defined or if all filters match
6459
-
6460
- | Param | Type | Description |
6461
- | --- | --- | --- |
6462
- | metadata | <code>TYPE.MetadataTypeItem</code> | a single metadata item |
6463
- | [filters] | <code>object</code> | only used in recursive calls |
6464
-
6465
- <a name="Util.capitalizeFirstLetter"></a>
6466
-
6467
- ### Util.capitalizeFirstLetter(str) ⇒ <code>string</code>
6468
- helper used by SOAP methods to ensure the type always uses an upper-cased first letter
6469
-
6470
- **Kind**: static method of [<code>Util</code>](#Util)
6471
- **Returns**: <code>string</code> - str with first letter capitalized
6472
-
6473
- | Param | Type | Description |
6474
- | --- | --- | --- |
6475
- | str | <code>string</code> | string to capitalize |
6476
-
6477
- <a name="MetadataTypeDefinitions"></a>
6478
-
6479
- ## MetadataTypeDefinitions
6480
- Provides access to all metadataType classes
6481
-
6482
- **Kind**: global constant
6483
- <a name="MetadataTypeInfo"></a>
6484
-
6485
- ## MetadataTypeInfo
6486
- Provides access to all metadataType classes
6487
-
6488
- **Kind**: global constant
6489
- <a name="mcdev"></a>
6490
-
6491
- ## mcdev
6492
- sample file on how to retrieve a simple changelog to use in GUIs or automated processing of any kind
6288
+ | metadataTypes | <code>Array.&lt;TYPE.SupportedMetadataTypes&gt;</code> | list of metadata types to retrieve; can include subtypes! |
6493
6289
 
6494
- **Kind**: global constant
6495
- **Example**
6496
- ```js
6497
- [{
6498
- name: 'deName',
6499
- key: 'deKey',
6500
- t: 'dataExtension',
6501
- cd: '2020-05-06T00:16:00.737',
6502
- cb: 'name of creator',
6503
- ld: '2020-05-06T00:16:00.737',
6504
- lb: 'name of lastmodified'
6505
- }]
6506
- ```
6507
6290
  <a name="BusinessUnit"></a>
6508
6291
 
6509
6292
  ## BusinessUnit
@@ -6855,7 +6638,7 @@ File extends fs-extra. It adds logger and util methods for file handling
6855
6638
  * [.writeJSONToFile(directory, filename, content)](#File.writeJSONToFile) ⇒ <code>Promise</code>
6856
6639
  * [.writePrettyToFile(directory, filename, filetype, content, [templateVariables])](#File.writePrettyToFile) ⇒ <code>Promise.&lt;boolean&gt;</code>
6857
6640
  * [._beautify_beautyAmp(content)](#File._beautify_beautyAmp) ⇒ <code>string</code>
6858
- * [._beautify_prettier(directory, filename, filetype, content)](#File._beautify_prettier) ⇒ <code>string</code>
6641
+ * [._beautify_prettier(directory, filename, filetype, content)](#File._beautify_prettier) ⇒ <code>Promise.&lt;string&gt;</code>
6859
6642
  * [.writeToFile(directory, filename, filetype, content, [encoding])](#File.writeToFile) ⇒ <code>Promise.&lt;boolean&gt;</code>
6860
6643
  * [.readJSONFile(directory, filename, sync, cleanPath)](#File.readJSONFile) ⇒ <code>Promise.&lt;object&gt;</code> \| <code>object</code> \| <code>void</code>
6861
6644
  * [.readFilteredFilename(directory, filename, filetype, [encoding])](#File.readFilteredFilename) ⇒ <code>Promise.&lt;string&gt;</code> \| <code>void</code>
@@ -6970,12 +6753,12 @@ helper for [writePrettyToFile](#File.writePrettyToFile), applying beautyAmp onto
6970
6753
 
6971
6754
  <a name="File._beautify_prettier"></a>
6972
6755
 
6973
- ### File.\_beautify\_prettier(directory, filename, filetype, content) ⇒ <code>string</code>
6756
+ ### File.\_beautify\_prettier(directory, filename, filetype, content) ⇒ <code>Promise.&lt;string&gt;</code>
6974
6757
  helper for [writePrettyToFile](#File.writePrettyToFile), applying prettier onto given stringified content
6975
6758
  ! Important: run 'await File.initPrettier()' in your MetadataType.retrieve() once before hitting this
6976
6759
 
6977
6760
  **Kind**: static method of [<code>File</code>](#File)
6978
- **Returns**: <code>string</code> - original string on error; formatted string on success
6761
+ **Returns**: <code>Promise.&lt;string&gt;</code> - original string on error; formatted string on success
6979
6762
 
6980
6763
  | Param | Type | Description |
6981
6764
  | --- | --- | --- |
@@ -8539,6 +8322,110 @@ helper for [postDeployTasks](#Automation.postDeployTasks)
8539
8322
  | key | <code>string</code> | current customer key |
8540
8323
  | [oldKey] | <code>string</code> | old customer key before fixKey / changeKeyValue / changeKeyField |
8541
8324
 
8325
+ <a name="DataExtension."></a>
8326
+
8327
+ ## DataExtension.(upsertedMetadata, originalMetadata, createdUpdated) ⇒ <code>void</code>
8328
+ takes care of updating attribute groups on child BUs after an update to Shared DataExtensions
8329
+ helper for [postDeployTasks](#DataExtension.postDeployTasks)
8330
+ fixes an issue where shared data extensions are not visible in data designer on child BU; SF known issue: https://issues.salesforce.com/#q=W-11031095
8331
+
8332
+ **Kind**: global function
8333
+
8334
+ | Param | Type | Description |
8335
+ | --- | --- | --- |
8336
+ | upsertedMetadata | <code>TYPE.DataExtensionMap</code> | metadata mapped by their keyField |
8337
+ | originalMetadata | <code>TYPE.DataExtensionMap</code> | metadata to be updated (contains additioanl fields) |
8338
+ | createdUpdated | <code>Object</code> | counter representing successful creates/updates |
8339
+
8340
+ <a name="DataExtension."></a>
8341
+
8342
+ ## DataExtension.() ⇒ <code>Array.&lt;string&gt;</code>
8343
+ helper for [DataExtension.#fixShared](DataExtension.#fixShared)
8344
+
8345
+ **Kind**: global function
8346
+ **Returns**: <code>Array.&lt;string&gt;</code> - list of selected BU names
8347
+ <a name="DataExtension."></a>
8348
+
8349
+ ## DataExtension.(childBuName, buObjectParent, clientParent, sharedDataExtensionMap) ⇒ <code>Promise.&lt;Array.&lt;string&gt;&gt;</code>
8350
+ helper for [DataExtension.#fixShared](DataExtension.#fixShared)
8351
+
8352
+ **Kind**: global function
8353
+ **Returns**: <code>Promise.&lt;Array.&lt;string&gt;&gt;</code> - updated shared DE keys on BU
8354
+
8355
+ | Param | Type | Description |
8356
+ | --- | --- | --- |
8357
+ | childBuName | <code>string</code> | name of child BU to fix |
8358
+ | buObjectParent | <code>TYPE.BuObject</code> | bu object for parent BU |
8359
+ | clientParent | <code>object</code> | SDK for parent BU |
8360
+ | sharedDataExtensionMap | <code>Object.&lt;string, string&gt;</code> | ID-Key relationship of shared data extensions |
8361
+
8362
+ <a name="DataExtension."></a>
8363
+
8364
+ ## DataExtension.(deId, deKey, buObjectChildBu, clientChildBu, buObjectParent, clientParent) ⇒ <code>Promise.&lt;boolean&gt;</code>
8365
+ method that actually takes care of triggering the update for a particular BU-sharedDe combo
8366
+ helper for [DataExtension.#fixShared_onBU](DataExtension.#fixShared_onBU)
8367
+
8368
+ **Kind**: global function
8369
+ **Returns**: <code>Promise.&lt;boolean&gt;</code> - flag that signals if the fix was successful
8370
+
8371
+ | Param | Type | Description |
8372
+ | --- | --- | --- |
8373
+ | deId | <code>string</code> | data extension ObjectID |
8374
+ | deKey | <code>string</code> | dataExtension key |
8375
+ | buObjectChildBu | <code>TYPE.BuObject</code> | BU object for Child BU |
8376
+ | clientChildBu | <code>object</code> | SDK for child BU |
8377
+ | buObjectParent | <code>TYPE.BuObject</code> | BU object for Parent BU |
8378
+ | clientParent | <code>object</code> | SDK for parent BU |
8379
+
8380
+ <a name="DataExtension."></a>
8381
+
8382
+ ## DataExtension.(buObjectChildBu, clientChildBu, deKey, deId) ⇒ <code>Promise.&lt;string&gt;</code>
8383
+ add a new field to the shared DE to trigger an update to the data model
8384
+ helper for [DataExtension.#fixShared_item](DataExtension.#fixShared_item)
8385
+
8386
+ **Kind**: global function
8387
+ **Returns**: <code>Promise.&lt;string&gt;</code> - randomSuffix
8388
+
8389
+ | Param | Type | Description |
8390
+ | --- | --- | --- |
8391
+ | buObjectChildBu | <code>TYPE.BuObject</code> | BU object for Child BU |
8392
+ | clientChildBu | <code>object</code> | SDK for child BU |
8393
+ | deKey | <code>string</code> | dataExtension key |
8394
+ | deId | <code>string</code> | dataExtension ObjectID |
8395
+
8396
+ <a name="DataExtension."></a>
8397
+
8398
+ ## DataExtension.(randomSuffix, buObjectParent, clientParent, deKey) ⇒ <code>Promise.&lt;string&gt;</code>
8399
+ get ID of the field added by [DataExtension.#fixShared_item_addField](DataExtension.#fixShared_item_addField) on the shared DE via parent BU
8400
+ helper for [DataExtension.#fixShared_item](DataExtension.#fixShared_item)
8401
+
8402
+ **Kind**: global function
8403
+ **Returns**: <code>Promise.&lt;string&gt;</code> - fieldObjectID
8404
+
8405
+ | Param | Type | Description |
8406
+ | --- | --- | --- |
8407
+ | randomSuffix | <code>string</code> | - |
8408
+ | buObjectParent | <code>TYPE.BuObject</code> | BU object for Parent BU |
8409
+ | clientParent | <code>object</code> | SDK for parent BU |
8410
+ | deKey | <code>string</code> | dataExtension key |
8411
+
8412
+ <a name="DataExtension."></a>
8413
+
8414
+ ## DataExtension.(randomSuffix, buObjectChildBu, clientChildBu, deKey, fieldObjectID) ⇒ <code>Promise</code>
8415
+ delete the field added by [DataExtension.#fixShared_item_addField](DataExtension.#fixShared_item_addField)
8416
+ helper for [DataExtension.#fixShared_item](DataExtension.#fixShared_item)
8417
+
8418
+ **Kind**: global function
8419
+ **Returns**: <code>Promise</code> - -
8420
+
8421
+ | Param | Type | Description |
8422
+ | --- | --- | --- |
8423
+ | randomSuffix | <code>string</code> | - |
8424
+ | buObjectChildBu | <code>TYPE.BuObject</code> | BU object for Child BU |
8425
+ | clientChildBu | <code>object</code> | SDK for child BU |
8426
+ | deKey | <code>string</code> | dataExtension key |
8427
+ | fieldObjectID | <code>string</code> | field ObjectID |
8428
+
8542
8429
  <a name="getUserName"></a>
8543
8430
 
8544
8431
  ## getUserName(userList, item, fieldname) ⇒ <code>string</code>
@@ -8874,6 +8761,25 @@ SOAP format
8874
8761
  | r__folder_Path | <code>string</code> | folder path |
8875
8762
  | [categoryId] | <code>string</code> | holds folder ID, replaced with r__folder_Path during retrieve |
8876
8763
 
8764
+ <a name="VerificationItem"></a>
8765
+
8766
+ ## VerificationItem : <code>object</code>
8767
+ **Kind**: global typedef
8768
+ **Properties**
8769
+
8770
+ | Name | Type | Description |
8771
+ | --- | --- | --- |
8772
+ | dataVerificationDefinitionId | <code>string</code> | ID / Key |
8773
+ | verificationType | <code>&#x27;IsEqualTo&#x27;</code> \| <code>&#x27;IsLessThan&#x27;</code> \| <code>&#x27;IsGreaterThan&#x27;</code> \| <code>&#x27;IsOutsideRange&#x27;</code> \| <code>&#x27;IsInsideRange&#x27;</code> \| <code>&#x27;IsNotEqualTo&#x27;</code> \| <code>&#x27;IsNotLessThan&#x27;</code> \| <code>&#x27;IsNotGreaterThan&#x27;</code> \| <code>&#x27;IsNotOutsideRange&#x27;</code> \| <code>&#x27;IsNotInsideRange&#x27;</code> | key |
8774
+ | value1 | <code>number</code> | used for all verificationTypes; lower value for IsOutsideRange, IsInsideRange, IsNotOutsideRange, IsNotInsideRange |
8775
+ | value2 | <code>number</code> | only used for IsOutsideRange, IsInsideRange, IsNotOutsideRange, IsNotInsideRange; otherwise set to 0 |
8776
+ | shouldStopOnFailure | <code>boolean</code> | flag to stop automation if verification fails |
8777
+ | shouldEmailOnFailure | <code>boolean</code> | flag to send email if verification fails |
8778
+ | notificationEmailAddress | <code>string</code> | email address to send notification to; empty string if shouldEmailOnFailure=false |
8779
+ | notificationEmailMessage | <code>string</code> | email message to send; empty string if shouldEmailOnFailure=false |
8780
+ | createdBy | <code>number</code> | user id of creator |
8781
+ | r__dataExtension_CustomerKey | <code>string</code> | key of target data extension |
8782
+
8877
8783
  <a name="SDK"></a>
8878
8784
 
8879
8785
  ## SDK : <code>Object.&lt;string, AutomationItem&gt;</code>