Repository: Accenture/sfmc-devtools
Branch: main
Commit: 76970577de5f
Files: 1071
Total size: 6.8 MB
Directory structure:
gitextract_bi7k1rji/
├── .beautyamp.json
├── .bitbucket/
│ └── PULL_REQUEST_TEMPLATE.md
├── .coverage-comment-template.svelte
├── .editorconfig
├── .fork/
│ ├── .prettierrc
│ └── custom-commands.json
├── .gitattributes
├── .github/
│ ├── ISSUE_TEMPLATE/
│ │ ├── bug.yml
│ │ ├── feature_request.md
│ │ └── task.md
│ ├── PULL_REQUEST_TEMPLATE/
│ │ └── pr_template_release.md
│ ├── PULL_REQUEST_TEMPLATE.md
│ ├── copilot-instructions.md
│ ├── dependabot.yml
│ ├── pr-labeler.yml
│ └── workflows/
│ ├── close_issues_on_merge.yml
│ ├── code-test.yml
│ ├── coverage-base-update.yml
│ ├── coverage-develop-branch.yml
│ ├── coverage-main-branch.yml
│ ├── coverage.yml
│ ├── npm-publish.yml
│ ├── pr-labeler.yml
│ └── sync-milestone.yml
├── .gitignore
├── .husky/
│ ├── .gitignore
│ ├── commit-msg
│ ├── post-checkout
│ ├── post-merge
│ └── pre-commit
├── .issuetracker
├── .markdownlint.json
├── .markdownlint.md
├── .mcdev-validations.js
├── .npmrc
├── .nycrc.json
├── .prettierignore
├── .prettierrc
├── .vscode/
│ ├── extensions.json
│ ├── launch.json
│ └── settings.json
├── .vsls.json
├── @types/
│ ├── lib/
│ │ ├── Builder.d.ts
│ │ ├── Deployer.d.ts
│ │ ├── MetadataTypeDefinitions.d.ts
│ │ ├── MetadataTypeInfo.d.ts
│ │ ├── Retriever.d.ts
│ │ ├── cli.d.ts
│ │ ├── index.d.ts
│ │ ├── metadataTypes/
│ │ │ ├── Asset.d.ts
│ │ │ ├── AttributeGroup.d.ts
│ │ │ ├── AttributeSet.d.ts
│ │ │ ├── Automation.d.ts
│ │ │ ├── Campaign.d.ts
│ │ │ ├── ContentArea.d.ts
│ │ │ ├── DataExtension.d.ts
│ │ │ ├── DataExtensionField.d.ts
│ │ │ ├── DataExtensionTemplate.d.ts
│ │ │ ├── DataExtract.d.ts
│ │ │ ├── DataExtractType.d.ts
│ │ │ ├── DataFilter.d.ts
│ │ │ ├── DataFilterHidden.d.ts
│ │ │ ├── DeliveryProfile.d.ts
│ │ │ ├── Discovery.d.ts
│ │ │ ├── DomainVerification.d.ts
│ │ │ ├── Email.d.ts
│ │ │ ├── EmailSend.d.ts
│ │ │ ├── Event.d.ts
│ │ │ ├── FileLocation.d.ts
│ │ │ ├── FileTransfer.d.ts
│ │ │ ├── Filter.d.ts
│ │ │ ├── FilterDefinition.d.ts
│ │ │ ├── FilterDefinitionHidden.d.ts
│ │ │ ├── Folder.d.ts
│ │ │ ├── ImportFile.d.ts
│ │ │ ├── Journey.d.ts
│ │ │ ├── List.d.ts
│ │ │ ├── MetadataType.d.ts
│ │ │ ├── MobileCode.d.ts
│ │ │ ├── MobileKeyword.d.ts
│ │ │ ├── MobileMessage.d.ts
│ │ │ ├── Query.d.ts
│ │ │ ├── Role.d.ts
│ │ │ ├── Script.d.ts
│ │ │ ├── SendClassification.d.ts
│ │ │ ├── SenderProfile.d.ts
│ │ │ ├── TransactionalEmail.d.ts
│ │ │ ├── TransactionalMessage.d.ts
│ │ │ ├── TransactionalPush.d.ts
│ │ │ ├── TransactionalSMS.d.ts
│ │ │ ├── TriggeredSend.d.ts
│ │ │ ├── TriggeredSendSummary.d.ts
│ │ │ ├── User.d.ts
│ │ │ ├── Verification.d.ts
│ │ │ └── definitions/
│ │ │ ├── Asset.definition.d.ts
│ │ │ ├── AttributeGroup.definition.d.ts
│ │ │ ├── AttributeSet.definition.d.ts
│ │ │ ├── Automation.definition.d.ts
│ │ │ ├── Campaign.definition.d.ts
│ │ │ ├── ContentArea.definition.d.ts
│ │ │ ├── DataExtension.definition.d.ts
│ │ │ ├── DataExtensionField.definition.d.ts
│ │ │ ├── DataExtensionTemplate.definition.d.ts
│ │ │ ├── DataExtract.definition.d.ts
│ │ │ ├── DataExtractType.definition.d.ts
│ │ │ ├── DataFilter.definition.d.ts
│ │ │ ├── DataFilterHidden.definition.d.ts
│ │ │ ├── DeliveryProfile.definition.d.ts
│ │ │ ├── Discovery.definition.d.ts
│ │ │ ├── DomainVerification.definition.d.ts
│ │ │ ├── Email.definition.d.ts
│ │ │ ├── EmailSend.definition.d.ts
│ │ │ ├── Event.definition.d.ts
│ │ │ ├── FileLocation.definition.d.ts
│ │ │ ├── FileTransfer.definition.d.ts
│ │ │ ├── Filter.definition.d.ts
│ │ │ ├── FilterDefinition.definition.d.ts
│ │ │ ├── FilterDefinitionHidden.definition.d.ts
│ │ │ ├── Folder.definition.d.ts
│ │ │ ├── ImportFile.definition.d.ts
│ │ │ ├── Journey.definition.d.ts
│ │ │ ├── List.definition.d.ts
│ │ │ ├── MobileCode.definition.d.ts
│ │ │ ├── MobileKeyword.definition.d.ts
│ │ │ ├── MobileMessage.definition.d.ts
│ │ │ ├── Query.definition.d.ts
│ │ │ ├── Role.definition.d.ts
│ │ │ ├── Script.definition.d.ts
│ │ │ ├── SendClassification.definition.d.ts
│ │ │ ├── SenderProfile.definition.d.ts
│ │ │ ├── TransactionalEmail.definition.d.ts
│ │ │ ├── TransactionalMessage.definition.d.ts
│ │ │ ├── TransactionalPush.definition.d.ts
│ │ │ ├── TransactionalSMS.definition.d.ts
│ │ │ ├── TriggeredSend.definition.d.ts
│ │ │ ├── TriggeredSendSummary.definition.d.ts
│ │ │ ├── User.definition.d.ts
│ │ │ └── Verification.definition.d.ts
│ │ ├── retrieveChangelog.d.ts
│ │ └── util/
│ │ ├── auth.d.ts
│ │ ├── businessUnit.d.ts
│ │ ├── cache.d.ts
│ │ ├── cli.d.ts
│ │ ├── config.d.ts
│ │ ├── devops.d.ts
│ │ ├── file.d.ts
│ │ ├── init.config.d.ts
│ │ ├── init.d.ts
│ │ ├── init.git.d.ts
│ │ ├── init.npm.d.ts
│ │ ├── replaceContentBlockReference.d.ts
│ │ ├── util.d.ts
│ │ └── validations.d.ts
│ └── types/
│ └── mcdev.d.d.ts
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── boilerplate/
│ ├── config.json
│ ├── files/
│ │ ├── .beautyamp.json
│ │ ├── .editorconfig
│ │ ├── .gitattributes
│ │ ├── .npmrc
│ │ ├── .prettierrc
│ │ ├── .vscode/
│ │ │ ├── extensions.json
│ │ │ └── settings.json
│ │ ├── README.md
│ │ └── eslint.config.js
│ ├── forcedUpdates.json
│ ├── gitignore-template
│ └── npm-dependencies.json
├── docs/
│ └── dist/
│ └── considerations.md
├── eslint.config.js
├── lib/
│ ├── Builder.js
│ ├── Deployer.js
│ ├── MetadataTypeDefinitions.js
│ ├── MetadataTypeInfo.js
│ ├── Retriever.js
│ ├── cli.js
│ ├── index.js
│ ├── metadataTypes/
│ │ ├── Asset.js
│ │ ├── AttributeGroup.js
│ │ ├── AttributeSet.js
│ │ ├── Automation.js
│ │ ├── Campaign.js
│ │ ├── ContentArea.js
│ │ ├── DataExtension.js
│ │ ├── DataExtensionField.js
│ │ ├── DataExtensionTemplate.js
│ │ ├── DataExtract.js
│ │ ├── DataExtractType.js
│ │ ├── DataFilter.js
│ │ ├── DataFilterHidden.js
│ │ ├── DeliveryProfile.js
│ │ ├── Discovery.js
│ │ ├── DomainVerification.js
│ │ ├── Email.js
│ │ ├── EmailSend.js
│ │ ├── Event.js
│ │ ├── FileLocation.js
│ │ ├── FileTransfer.js
│ │ ├── Filter.js
│ │ ├── Folder.js
│ │ ├── ImportFile.js
│ │ ├── Journey.js
│ │ ├── List.js
│ │ ├── MetadataType.js
│ │ ├── MobileCode.js
│ │ ├── MobileKeyword.js
│ │ ├── MobileMessage.js
│ │ ├── Query.js
│ │ ├── Role.js
│ │ ├── Script.js
│ │ ├── SendClassification.js
│ │ ├── SenderProfile.js
│ │ ├── TransactionalEmail.js
│ │ ├── TransactionalMessage.js
│ │ ├── TransactionalPush.js
│ │ ├── TransactionalSMS.js
│ │ ├── TriggeredSend.js
│ │ ├── TriggeredSendSummary.js
│ │ ├── User.js
│ │ ├── Verification.js
│ │ └── definitions/
│ │ ├── Asset.definition.js
│ │ ├── AttributeGroup.definition.js
│ │ ├── AttributeSet.definition.js
│ │ ├── Automation.definition.js
│ │ ├── Campaign.definition.js
│ │ ├── ContentArea.definition.js
│ │ ├── DataExtension.definition.js
│ │ ├── DataExtensionField.definition.js
│ │ ├── DataExtensionTemplate.definition.js
│ │ ├── DataExtract.definition.js
│ │ ├── DataExtractType.definition.js
│ │ ├── DataFilter.definition.js
│ │ ├── DataFilterHidden.definition.js
│ │ ├── DeliveryProfile.definition.js
│ │ ├── Discovery.definition.js
│ │ ├── DomainVerification.definition.js
│ │ ├── Email.definition.js
│ │ ├── EmailSend.definition.js
│ │ ├── Event.definition.js
│ │ ├── FileLocation.definition.js
│ │ ├── FileTransfer.definition.js
│ │ ├── Filter.definition.js
│ │ ├── Folder.definition.js
│ │ ├── ImportFile.definition.js
│ │ ├── Journey.definition.js
│ │ ├── List.definition.js
│ │ ├── MobileCode.definition.js
│ │ ├── MobileKeyword.definition.js
│ │ ├── MobileMessage.definition.js
│ │ ├── Query.definition.js
│ │ ├── Role.definition.js
│ │ ├── Script.definition.js
│ │ ├── SendClassification.definition.js
│ │ ├── SenderProfile.definition.js
│ │ ├── TransactionalEmail.definition.js
│ │ ├── TransactionalMessage.definition.js
│ │ ├── TransactionalPush.definition.js
│ │ ├── TransactionalSMS.definition.js
│ │ ├── TriggeredSend.definition.js
│ │ ├── TriggeredSendSummary.definition.js
│ │ ├── User.definition.js
│ │ └── Verification.definition.js
│ ├── retrieveChangelog.js
│ └── util/
│ ├── auth.js
│ ├── businessUnit.js
│ ├── cache.js
│ ├── cli.js
│ ├── config.js
│ ├── devops.js
│ ├── file.js
│ ├── init.config.js
│ ├── init.git.js
│ ├── init.js
│ ├── init.npm.js
│ ├── replaceContentBlockReference.js
│ ├── util.js
│ └── validations.js
├── package.json
├── prepare-release.js
├── test/
│ ├── general.test.js
│ ├── mockRoot/
│ │ ├── .mcdev-auth.json
│ │ ├── .mcdev-validations.js
│ │ ├── .mcdevrc.json
│ │ └── deploy/
│ │ └── testInstance/
│ │ ├── _ParentBU_/
│ │ │ ├── dataExtension/
│ │ │ │ ├── testExisting_dataExtensionShared.dataExtension-meta.json
│ │ │ │ └── testNew_dataExtensionShared.dataExtension-meta.json
│ │ │ ├── query/
│ │ │ │ ├── testNew_query.query-meta.json
│ │ │ │ └── testNew_query.query-meta.sql
│ │ │ └── user/
│ │ │ ├── testBlocked_user.user-meta.json
│ │ │ ├── testExisting_user.user-meta.json
│ │ │ └── testNew_user.user-meta.json
│ │ └── testBU/
│ │ ├── asset/
│ │ │ ├── block/
│ │ │ │ ├── testExisting_asset_html-matchNamFail.asset-block-meta.html
│ │ │ │ ├── testExisting_asset_html-matchNamFail.asset-block-meta.json
│ │ │ │ ├── testExisting_asset_html-matchName.asset-block-meta.html
│ │ │ │ ├── testExisting_asset_html-matchName.asset-block-meta.json
│ │ │ │ ├── testExisting_asset_html-matchNameAdd.asset-block-meta.html
│ │ │ │ ├── testExisting_asset_html-matchNameAdd.asset-block-meta.json
│ │ │ │ ├── testNew_asset.asset-block-meta.html
│ │ │ │ ├── testNew_asset.asset-block-meta.json
│ │ │ │ ├── testNew_asset_htmlblock.asset-block-meta.html
│ │ │ │ ├── testNew_asset_htmlblock.asset-block-meta.json
│ │ │ │ ├── testNew_asset_withCBBK_notexisting.asset-block-meta.html
│ │ │ │ ├── testNew_asset_withCBBK_notexisting.asset-block-meta.json
│ │ │ │ ├── testNew_asset_withCBBK_preexisting.asset-block-meta.html
│ │ │ │ ├── testNew_asset_withCBBK_preexisting.asset-block-meta.json
│ │ │ │ ├── test_slash.asset-block-meta.html
│ │ │ │ └── test_slash.asset-block-meta.json
│ │ │ ├── message/
│ │ │ │ ├── testNew_assetMessage/
│ │ │ │ │ ├── testNew_assetMessage.asset-message-meta.json
│ │ │ │ │ └── views.html.content.asset-message-meta.html
│ │ │ │ └── testNew_asset_templatebasedemail/
│ │ │ │ ├── testNew_asset_templatebasedemail.asset-message-meta.json
│ │ │ │ └── views.html.content.asset-message-meta.html
│ │ │ └── template/
│ │ │ └── testNew_asset_template/
│ │ │ ├── content.asset-template-meta.html
│ │ │ └── testNew_asset_template.asset-template-meta.json
│ │ ├── automation/
│ │ │ ├── testExisting_automation.automation-meta.json
│ │ │ └── testNew_automation.automation-meta.json
│ │ ├── dataExtension/
│ │ │ ├── testExisting_dataExtension.dataExtension-meta.json
│ │ │ └── testNew_dataExtension.dataExtension-meta.json
│ │ ├── dataExtract/
│ │ │ ├── testExisting_dataExtract.dataExtract-meta.json
│ │ │ └── testNew_dataExtract.dataExtract-meta.json
│ │ ├── dataFilter/
│ │ │ ├── testExisting_dataFilter.dataFilter-meta.json
│ │ │ └── testNew_dataFilter.dataFilter-meta.json
│ │ ├── domainVerification/
│ │ │ ├── joern.berkefeld.New@accenture.com.domainVerification-meta.json
│ │ │ ├── joern.berkefeld@accenture.com.domainVerification-meta.json
│ │ │ └── mcdev.accenture.com.domainVerification-meta.json
│ │ ├── emailSend/
│ │ │ ├── testExisting_emailSend.emailSend-meta.json
│ │ │ └── testNew_emailSend.emailSend-meta.json
│ │ ├── event/
│ │ │ ├── testExisting_event.event-meta.json
│ │ │ ├── testNew_event_withExistingDE.event-meta.json
│ │ │ └── testNew_event_withSchema.event-meta.json
│ │ ├── fileLocation/
│ │ │ ├── ExactTarget Enhanced FTP.fileLocation-meta.json
│ │ │ ├── testExisting_fileLocation_aws.fileLocation-meta.json
│ │ │ └── testExisting_fileLocation_exsftp.fileLocation-meta.json
│ │ ├── fileTransfer/
│ │ │ ├── testExisting_fileTransfer.fileTransfer-meta.json
│ │ │ └── testNew_fileTransfer.fileTransfer-meta.json
│ │ ├── filter/
│ │ │ ├── testExisting_filter.filter-meta.json
│ │ │ └── testNew_filter.filter-meta.json
│ │ ├── importFile/
│ │ │ ├── testExisting_importFile.importFile-meta.json
│ │ │ └── testNew_importFile.importFile-meta.json
│ │ ├── journey/
│ │ │ ├── testExisting_journey_Multistep.journey-meta.json
│ │ │ ├── testExisting_journey_Quicksend.journey-meta.json
│ │ │ ├── testExisting_journey_updatecontact.journey-meta.json
│ │ │ ├── testExisting_journey_updatecontact_sharedDE.journey-meta.json
│ │ │ ├── testExisting_temail.journey-meta.json
│ │ │ ├── testExisting_temail_notPublished.journey-meta.json
│ │ │ └── testNew_temail_notPublished.journey-meta.json
│ │ ├── mobileKeyword/
│ │ │ ├── 4912312345678.TESTNEW_KEYWORD.mobileKeyword-meta.amp
│ │ │ ├── 4912312345678.TESTNEW_KEYWORD.mobileKeyword-meta.json
│ │ │ ├── 4912312345678.TESTNEW_KEYWORD_BLOCKED.mobileKeyword-meta.amp
│ │ │ └── 4912312345678.TESTNEW_KEYWORD_BLOCKED.mobileKeyword-meta.json
│ │ ├── mobileMessage/
│ │ │ ├── NTIzOjc4OjA.mobileMessage-meta.amp
│ │ │ ├── NTIzOjc4OjA.mobileMessage-meta.json
│ │ │ ├── new.mobileMessage-meta.amp
│ │ │ └── new.mobileMessage-meta.json
│ │ ├── query/
│ │ │ ├── testExisting_query.query-meta.json
│ │ │ ├── testExisting_query.query-meta.sql
│ │ │ ├── testExisting_query_fixKeys.query-meta.json
│ │ │ ├── testExisting_query_fixKeys.query-meta.sql
│ │ │ ├── testNew_query.query-meta.json
│ │ │ └── testNew_query.query-meta.sql
│ │ ├── script/
│ │ │ ├── testExisting_script.script-meta.json
│ │ │ ├── testExisting_script.script-meta.ssjs
│ │ │ ├── testNew_script.script-meta.json
│ │ │ └── testNew_script.script-meta.ssjs
│ │ ├── sendClassification/
│ │ │ ├── testExisting_sendClassification.sendClassification-meta.json
│ │ │ └── testNew_sendClassification.sendClassification-meta.json
│ │ ├── senderProfile/
│ │ │ ├── testExisting_senderProfile.senderProfile-meta.json
│ │ │ └── testNew_senderProfile.senderProfile-meta.json
│ │ ├── transactionalEmail/
│ │ │ ├── testExisting_temail.transactionalEmail-meta.json
│ │ │ └── testNew_temail.transactionalEmail-meta.json
│ │ ├── transactionalPush/
│ │ │ ├── testExisting_tpush.transactionalPush-meta.json
│ │ │ └── testNew_tpush.transactionalPush-meta.json
│ │ ├── transactionalSMS/
│ │ │ ├── testExisting_tsms.transactionalSMS-meta.amp
│ │ │ ├── testExisting_tsms.transactionalSMS-meta.json
│ │ │ ├── testNew_tsms.transactionalSMS-meta.amp
│ │ │ └── testNew_tsms.transactionalSMS-meta.json
│ │ ├── triggeredSend/
│ │ │ ├── testExisting_triggeredSend.triggeredSend-meta.json
│ │ │ └── testNew_triggeredSend.triggeredSend-meta.json
│ │ └── verification/
│ │ ├── testExisting_automation__s1.7.verification-meta.json
│ │ └── testNew_automation__s1.7.verification-meta.json
│ ├── resourceFactory.js
│ ├── resources/
│ │ ├── 1111111/
│ │ │ ├── accountUser/
│ │ │ │ ├── configure-response.xml
│ │ │ │ ├── create-response.xml
│ │ │ │ ├── retrieve-ActiveFlag=falseANDCustomerKey=testExisting_userANDEmaillike@-QAA-response.xml
│ │ │ │ ├── retrieve-ActiveFlag=falseANDEmaillike@-QAA-response.xml
│ │ │ │ ├── retrieve-ActiveFlag=trueANDCustomerKey=testExisting_userANDEmaillike@-QAA-response.xml
│ │ │ │ ├── retrieve-ActiveFlag=trueANDEmailisNullORNamelikeapp userANDMustChangePassword=false-QAA-response.xml
│ │ │ │ ├── retrieve-ActiveFlag=trueANDEmaillike@-QAA-response.xml
│ │ │ │ └── update-response.xml
│ │ │ ├── accountUserAccount/
│ │ │ │ ├── retrieve-AccountUser.AccountUserID=700301950-response.xml
│ │ │ │ └── retrieve-AccountUser.AccountUserIDIN700301950,700301951,7471228-response.xml
│ │ │ ├── automation/
│ │ │ │ └── v1/
│ │ │ │ └── queries/
│ │ │ │ ├── get-response.json
│ │ │ │ └── post-response.json
│ │ │ ├── businessUnit/
│ │ │ │ └── retrieve-ID=1111111-QAA-response.xml
│ │ │ ├── data/
│ │ │ │ └── v1/
│ │ │ │ └── customobjectdata/
│ │ │ │ └── key/
│ │ │ │ └── testExisting_dataExtensionShared/
│ │ │ │ └── rowset/
│ │ │ │ └── get-response.json
│ │ │ ├── dataExtension/
│ │ │ │ ├── create-expected.json
│ │ │ │ ├── create-response.xml
│ │ │ │ ├── retrieve-expected.json
│ │ │ │ ├── retrieve-expected.md
│ │ │ │ ├── retrieve-response.xml
│ │ │ │ ├── template_sharedDE-expected.json
│ │ │ │ ├── update-expected.json
│ │ │ │ └── update-response.xml
│ │ │ ├── dataExtensionField/
│ │ │ │ ├── retrieve-CustomerKey=[testExisting_dataExtensionShared].[TriggerUpdate_randomNumber_]-response.xml
│ │ │ │ ├── retrieve-DataExtension.CustomerKey=testExisting_dataExtensionShared-response.xml
│ │ │ │ ├── retrieve-DataExtension.CustomerKey=testNew_dataExtensionSharedORDataExtension.CustomerKey=testExisting_dataExtensionShared-response.xml
│ │ │ │ └── retrieve-response.xml
│ │ │ ├── dataExtensionTemplate/
│ │ │ │ └── retrieve-response.xml
│ │ │ ├── dataFolder/
│ │ │ │ ├── retrieve-ContentType=queryactivity-response.xml
│ │ │ │ ├── retrieve-ContentTypeINdataextension,hidden,queryactivity,salesforcedataextension,shared_data,shared_dataextension,shared_salesforcedataextension,synchronizeddataextension-response.xml
│ │ │ │ ├── retrieve-ContentTypeINdataextension,hidden,salesforcedataextension,shared_data,shared_dataextension,shared_salesforcedataextension,synchronizeddataextension-response.xml
│ │ │ │ ├── retrieve-ContentTypeINshared_data,shared_dataextension,shared_salesforcedataextension,synchronizeddataextension-response.xml
│ │ │ │ └── retrieve-response-.xml
│ │ │ ├── list/
│ │ │ │ └── retrieve-CustomerKey=All SubscribersORListName=All Subscribers-response.xml
│ │ │ ├── platform/
│ │ │ │ └── v1/
│ │ │ │ └── setup/
│ │ │ │ └── quickflow/
│ │ │ │ └── data/
│ │ │ │ └── get-response.json
│ │ │ ├── query/
│ │ │ │ ├── patch_keySuffix-expected.json
│ │ │ │ └── patch_keySuffix-expected.sql
│ │ │ ├── role/
│ │ │ │ └── retrieve-IsPrivate=false-response.xml
│ │ │ └── user/
│ │ │ ├── build-expected.json
│ │ │ ├── create-expected.json
│ │ │ ├── retrieve-expected.json
│ │ │ ├── retrieve-expected.md
│ │ │ ├── template-expected.json
│ │ │ └── update-expected.json
│ │ ├── 9999999/
│ │ │ ├── accountUser/
│ │ │ │ └── retrieve-response.xml
│ │ │ ├── asset/
│ │ │ │ ├── build-asset_htmlblock-expected.html
│ │ │ │ ├── build-asset_htmlblock-expected.json
│ │ │ │ ├── build-templatebasedemail-expected.json
│ │ │ │ ├── build-templatebasedemail-html-expected.html
│ │ │ │ ├── build-templatebasedemail-preheader-expected.amp
│ │ │ │ ├── create-expected.json
│ │ │ │ ├── resolveId-1234-notFound-expected.json
│ │ │ │ ├── resolveId-1295064-noPath-expected.json
│ │ │ │ ├── resolveId-1295064-withPath-expected.json
│ │ │ │ ├── retrieve-templatebasedemail-expected.json
│ │ │ │ ├── retrieve-templatebasedemail-html-expected.html
│ │ │ │ ├── retrieve-templatebasedemail-preheader-expected.amp
│ │ │ │ ├── template-emailTemplate-expected.json
│ │ │ │ ├── template-templatebasedemail-expected.json
│ │ │ │ ├── template-templatebasedemail-html-expected.html
│ │ │ │ ├── template-templatebasedemail-preheader-expected.amp
│ │ │ │ ├── template-testExisting_asset_htmlblock-expected.json
│ │ │ │ ├── testExisting_asset_htmlblock-retrieve-expected.html
│ │ │ │ ├── testExisting_asset_htmlblock-retrieve-expected.json
│ │ │ │ ├── testExisting_asset_message-html-rcb-id-expected.html
│ │ │ │ ├── testExisting_asset_message-html-rcb-key-expected.html
│ │ │ │ ├── testExisting_asset_message-html-rcb-name-expected.html
│ │ │ │ ├── testExisting_asset_message-preheader-rcb-id-expected.amp
│ │ │ │ ├── testExisting_asset_message-preheader-rcb-key-expected.amp
│ │ │ │ ├── testExisting_asset_message-preheader-rcb-name-expected.amp
│ │ │ │ ├── testExisting_asset_message-text-rcb-id-expected.amp
│ │ │ │ ├── testExisting_asset_message-text-rcb-key-expected.amp
│ │ │ │ ├── testExisting_asset_message-text-rcb-name-expected.amp
│ │ │ │ ├── test_coderesource_js-retrieve-expected.js
│ │ │ │ ├── test_coderesource_js-retrieve-expected.json
│ │ │ │ ├── test_coderesource_json-retrieve-expected.json
│ │ │ │ ├── test_coderesource_json-retrieve-expected.jsonc
│ │ │ │ ├── test_coderesource_xml-retrieve-expected.json
│ │ │ │ ├── test_coderesource_xml-retrieve-expected.xml
│ │ │ │ ├── test_interactivecontent-retrieve-expected.json
│ │ │ │ ├── test_landingpage-retrieve-expected.json
│ │ │ │ ├── test_microsite-retrieve-expected.json
│ │ │ │ └── v1/
│ │ │ │ └── content/
│ │ │ │ ├── assets/
│ │ │ │ │ ├── 1209971/
│ │ │ │ │ │ └── get-response.json
│ │ │ │ │ ├── 1295064/
│ │ │ │ │ │ ├── get-response.json
│ │ │ │ │ │ └── patch-response.json
│ │ │ │ │ ├── 1295065/
│ │ │ │ │ │ └── get-response.json
│ │ │ │ │ ├── 1295066/
│ │ │ │ │ │ └── get-response.json
│ │ │ │ │ ├── 1295067/
│ │ │ │ │ │ └── get-response.json
│ │ │ │ │ ├── 16992/
│ │ │ │ │ │ └── get-response.json
│ │ │ │ │ ├── 5286/
│ │ │ │ │ │ └── get-response.json
│ │ │ │ │ ├── 5289/
│ │ │ │ │ │ └── get-response.json
│ │ │ │ │ ├── 808714/
│ │ │ │ │ │ └── get-response.json
│ │ │ │ │ ├── 9451/
│ │ │ │ │ │ └── get-response.json
│ │ │ │ │ ├── 9456/
│ │ │ │ │ │ └── get-response.json
│ │ │ │ │ ├── 9458/
│ │ │ │ │ │ └── get-response.json
│ │ │ │ │ ├── 9460/
│ │ │ │ │ │ └── get-response.json
│ │ │ │ │ ├── 9463/
│ │ │ │ │ │ └── get-response.json
│ │ │ │ │ ├── 9465/
│ │ │ │ │ │ └── get-response.json
│ │ │ │ │ ├── 950143/
│ │ │ │ │ │ ├── delete-response.txt
│ │ │ │ │ │ └── get-response.json
│ │ │ │ │ ├── get-response-customerKey=testExisting_asset.json
│ │ │ │ │ ├── post-response-key=testNew_assetMessage.json
│ │ │ │ │ ├── post-response-key=testNew_asset_htmlblock.json
│ │ │ │ │ ├── post-response-key=testNew_asset_template.json
│ │ │ │ │ ├── post-response-key=testNew_asset_templatebasedemail.json
│ │ │ │ │ ├── post-response-key=testNew_asset_withCBBK_notexisting.json
│ │ │ │ │ ├── post-response-key=testNew_asset_withCBBK_preexisting.json
│ │ │ │ │ ├── post-response-key=test_slash.json
│ │ │ │ │ ├── post-response.json
│ │ │ │ │ └── query/
│ │ │ │ │ ├── +post-response-assetType.idIN3,195,196,197,198,199,200,201,202,203,210,211,212,213-slashfolder.json
│ │ │ │ │ ├── post-response-assetType.idIN1,205,206,230,232.json
│ │ │ │ │ ├── post-response-assetType.idIN1,3,14,15,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,205,206,210,211,212,213,215,216,217,218,219,220,221,222,223,224.json
│ │ │ │ │ ├── post-response-assetType.idIN1,3,4,14,15,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,205,206,210,211,212,213,214,215,216,217,218,219,220,221,222.json
│ │ │ │ │ ├── post-response-assetType.idIN1,3,4,5,14,15,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,205,206,207,208,209,210,211,212,213,214,215,216,217,218.json
│ │ │ │ │ ├── post-response-assetType.idIN1,5,205,206,207,208,209,230,232.json
│ │ │ │ │ ├── post-response-assetType.idIN14,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192.json
│ │ │ │ │ ├── post-response-assetType.idIN15,193,194.json
│ │ │ │ │ ├── post-response-assetType.idIN215,216,217,218,219,220,221,222,223,224,225,226,227,228.json
│ │ │ │ │ ├── post-response-assetType.idIN219,220,221,222,223,224,225,226,227,228,230,232,240,241,242,243,244,245.json
│ │ │ │ │ ├── post-response-assetType.idIN223,224,225,226,227,228,230,232.json
│ │ │ │ │ ├── post-response-assetType.idIN225,226,227,228,230,232.json
│ │ │ │ │ ├── post-response-assetType.idIN240,241,242,243,244,245.json
│ │ │ │ │ ├── post-response-assetType.idIN246,247,248,249.json
│ │ │ │ │ ├── post-response-assetType.idIN3,195,196,197,198,199,200,201,202,203,210,211,212,213.json
│ │ │ │ │ ├── post-response-assetType.idIN4,214.json
│ │ │ │ │ ├── post-response-assetType.idIN5,207,208,209.json
│ │ │ │ │ └── post-response-customerKey=testExisting_asset_htmlblock.json
│ │ │ │ └── categories/
│ │ │ │ └── post-response.json
│ │ │ ├── asset-deploy/
│ │ │ │ └── block/
│ │ │ │ ├── testNew_asset_badExtension.bad-type-extension.json
│ │ │ │ └── testNew_asset_badName_bad.asset-block-meta.json
│ │ │ ├── asset-deploy2/
│ │ │ │ └── block/
│ │ │ │ ├── testBlacklist_asset_htmlblock.asset-block-meta.html
│ │ │ │ └── testBlacklist_asset_htmlblock.asset-block-meta.json
│ │ │ ├── asset-slashfolder-deploy/
│ │ │ │ └── block/
│ │ │ │ ├── test_slash.asset-block-meta.html
│ │ │ │ └── test_slash.asset-block-meta.json
│ │ │ ├── attributeGroup/
│ │ │ │ └── retrieve-expected.json
│ │ │ ├── attributeSet/
│ │ │ │ └── retrieve-expected.json
│ │ │ ├── automation/
│ │ │ │ ├── build-expected.json
│ │ │ │ ├── clone-expected.json
│ │ │ │ ├── create-callout-expected.json
│ │ │ │ ├── create-expected.json
│ │ │ │ ├── create-testNew_automation-expected.md
│ │ │ │ ├── delete-response.xml
│ │ │ │ ├── patch_fixKeys-pause-expected.json
│ │ │ │ ├── patch_fixKeys-schedule-expected.json
│ │ │ │ ├── perform-08afb0e2-b00a-4c88-ad2e-1f7f8788c560-response.xml
│ │ │ │ ├── perform-08afb0e2-b00a-4c88-fixKey_pause-response.xml
│ │ │ │ ├── perform-08afb0e2-b00a-4c88-fixKey_schedule-response.xml
│ │ │ │ ├── perform-a8afb0e2-b00a-4c88-ad2e-1f7f8788c560-response.xml
│ │ │ │ ├── retrieve-expected.json
│ │ │ │ ├── retrieve-testExisting_automation-expected.md
│ │ │ │ ├── retrieve-wait-expected.json
│ │ │ │ ├── retrieve-wait-expected.md
│ │ │ │ ├── template-expected.json
│ │ │ │ ├── update-callout-expected.json
│ │ │ │ ├── update-expected.json
│ │ │ │ ├── update-testExisting_automation-expected.md
│ │ │ │ └── v1/
│ │ │ │ ├── automations/
│ │ │ │ │ ├── 08afb0e2-b00a-4c88-ad2e-1f7f8788c560/
│ │ │ │ │ │ ├── get-response.json
│ │ │ │ │ │ └── patch-response.json
│ │ │ │ │ ├── 08afb0e2-b00a-4c88-ad2e-pause/
│ │ │ │ │ │ ├── get-response.json
│ │ │ │ │ │ └── patch-response.json
│ │ │ │ │ ├── 08afb0e2-b00a-4c88-fixKey_pause/
│ │ │ │ │ │ ├── get-response.json
│ │ │ │ │ │ └── patch-response.json
│ │ │ │ │ ├── 08afb0e2-b00a-4c88-fixKey_schedule/
│ │ │ │ │ │ ├── get-response.json
│ │ │ │ │ │ └── patch-response.json
│ │ │ │ │ ├── 0fc2ac96-14ba-495a-8db9-3ddd4f8ac444-wait/
│ │ │ │ │ │ └── get-response.json
│ │ │ │ │ ├── 8f82c2a7-0bae-45a9-bdee-e631ab25c0d5/
│ │ │ │ │ │ └── get-response.json
│ │ │ │ │ ├── a8afb0e2-b00a-4c88-ad2e-1f7f8788c560/
│ │ │ │ │ │ └── get-response.json
│ │ │ │ │ └── post-response.json
│ │ │ │ ├── dataextracts/
│ │ │ │ │ ├── 56c5370a-f988-4f36-b0ee-0f876573f6d7/
│ │ │ │ │ │ ├── delete-response.txt
│ │ │ │ │ │ ├── get-response.json
│ │ │ │ │ │ └── patch-response.json
│ │ │ │ │ ├── get-response.json
│ │ │ │ │ └── post-response.json
│ │ │ │ ├── dataextracttypes/
│ │ │ │ │ └── get-response.json
│ │ │ │ ├── dataverifications/
│ │ │ │ │ ├── post-response.json
│ │ │ │ │ └── testExisting_39f6a488-20eb-4ba0-b0b9/
│ │ │ │ │ ├── delete-response.json
│ │ │ │ │ ├── get-response.json
│ │ │ │ │ └── patch-response.json
│ │ │ │ ├── filetransfers/
│ │ │ │ │ ├── 72c328ac-f5b0-4e37-91d3-a775666f15a6/
│ │ │ │ │ │ ├── delete-response.json
│ │ │ │ │ │ ├── get-response.json
│ │ │ │ │ │ └── patch-response.json
│ │ │ │ │ ├── get-response.json
│ │ │ │ │ └── post-response.json
│ │ │ │ ├── filters/
│ │ │ │ │ ├── a0f1a1bc-4ea1-44b3-8fe1-ce40ef35c1c0/
│ │ │ │ │ │ └── patch-response.json
│ │ │ │ │ ├── f018f237-f7ef-40b0-afc8-39ea2e5dcca4/
│ │ │ │ │ │ ├── delete-response.txt
│ │ │ │ │ │ ├── get-response.json
│ │ │ │ │ │ └── patch-response.json
│ │ │ │ │ └── get-response.json
│ │ │ │ ├── ftplocations/
│ │ │ │ │ └── get-response.json
│ │ │ │ ├── imports/
│ │ │ │ │ ├── 1ebf557b-372e-eb11-b81b-48df37d1dbd7/
│ │ │ │ │ │ └── get-response.json
│ │ │ │ │ ├── 9d16f42c-2260-ed11-b849-48df37d1de8b/
│ │ │ │ │ │ ├── delete-response.txt
│ │ │ │ │ │ ├── get-response.json
│ │ │ │ │ │ └── patch-response.json
│ │ │ │ │ ├── d2474efb-a449-ef11-b876-f40343c95928/
│ │ │ │ │ │ └── get-response.json
│ │ │ │ │ ├── get-response.json
│ │ │ │ │ └── post-response.json
│ │ │ │ ├── queries/
│ │ │ │ │ ├── 549f0568-607c-4940-afef-437965094dae/
│ │ │ │ │ │ └── actions/
│ │ │ │ │ │ └── start/
│ │ │ │ │ │ └── post-response.txt
│ │ │ │ │ ├── 549f0568-607c-4940-afef-437965094dat/
│ │ │ │ │ │ ├── actions/
│ │ │ │ │ │ │ └── start/
│ │ │ │ │ │ │ └── post-response.txt
│ │ │ │ │ │ ├── delete-response.json
│ │ │ │ │ │ ├── get-response.json
│ │ │ │ │ │ └── patch-response.json
│ │ │ │ │ ├── 549f0568-607c-4940-afef-437965094dat_fixKeys/
│ │ │ │ │ │ ├── get-response.json
│ │ │ │ │ │ └── patch-response.json
│ │ │ │ │ ├── 549f0568-607c-4940-afef-437965094dat_fixKeysSuffix/
│ │ │ │ │ │ ├── get-response.json
│ │ │ │ │ │ └── patch-response.json
│ │ │ │ │ ├── abcde-607c-4940-afef-437965094dat/
│ │ │ │ │ │ └── get-response.json
│ │ │ │ │ ├── get-response-Name=testExisting_query.json
│ │ │ │ │ ├── get-response.json
│ │ │ │ │ └── post-response.json
│ │ │ │ └── scripts/
│ │ │ │ ├── 39f6a488-20eb-4ba0-b0b9-023725b574e4/
│ │ │ │ │ ├── delete-response.txt
│ │ │ │ │ ├── get-response.json
│ │ │ │ │ └── patch-response.json
│ │ │ │ ├── get-response-name=testExisting_script.json
│ │ │ │ ├── get-response.json
│ │ │ │ └── post-response.json
│ │ │ ├── data/
│ │ │ │ └── v1/
│ │ │ │ ├── customobjectdata/
│ │ │ │ │ └── key/
│ │ │ │ │ └── testExisting_dataExtension/
│ │ │ │ │ └── rowset/
│ │ │ │ │ └── get-response.json
│ │ │ │ ├── filetransferlocation/
│ │ │ │ │ ├── Salesforce%20Objects%20%26%20Reports/
│ │ │ │ │ │ └── get-response.json
│ │ │ │ │ ├── testExisting_fileLocation_aws/
│ │ │ │ │ │ └── patch-response.json
│ │ │ │ │ ├── testExisting_fileLocation_azure/
│ │ │ │ │ │ ├── delete-response.json
│ │ │ │ │ │ └── get-response.json
│ │ │ │ │ └── testExisting_fileLocation_exsftp/
│ │ │ │ │ └── patch-response.json
│ │ │ │ └── filetransferlocations/
│ │ │ │ └── get-response.json
│ │ │ ├── dataExtension/
│ │ │ │ ├── build-expected.json
│ │ │ │ ├── create-expected.json
│ │ │ │ ├── create-response.xml
│ │ │ │ ├── delete-response.xml
│ │ │ │ ├── retrieve-CustomerKey=testExisting_dataExtension-response.xml
│ │ │ │ ├── retrieve-CustomerKey=testNew_event_withSchema-response.xml
│ │ │ │ ├── retrieve-Name=testExisting_dataExtension-response.xml
│ │ │ │ ├── retrieve-createdViaEvent-response.xml
│ │ │ │ ├── retrieve-expected.json
│ │ │ │ ├── retrieve-expected.md
│ │ │ │ ├── retrieve-response.xml
│ │ │ │ ├── retrieve_event_withSchema-expected.json
│ │ │ │ ├── template-expected.json
│ │ │ │ ├── update-afterCreatedViaEvent-response.xml
│ │ │ │ ├── update-callout-afterCreatedViaEvent-expected.xml
│ │ │ │ ├── update-expected.json
│ │ │ │ └── update-response.xml
│ │ │ ├── dataExtension-deploy/
│ │ │ │ └── testBlacklist_dataExtension.dataExtension-meta.json
│ │ │ ├── dataExtensionField/
│ │ │ │ ├── retrieve-CustomerKey=[testExisting_dataExtension].[LastName]-response.xml
│ │ │ │ ├── retrieve-DataExtension.CustomerKey=testExisting_dataExtension-response.xml
│ │ │ │ ├── retrieve-DataExtension.CustomerKey=testNew_dataExtensionORDataExtension.CustomerKey=testExisting_dataExtension-response.xml
│ │ │ │ ├── retrieve-DataExtension.CustomerKey=testNew_event_withSchema-response.xml
│ │ │ │ ├── retrieve-DataExtension.CustomerKeyINtestExisting_dataExtension,testNew_dataExtension-response.xml
│ │ │ │ ├── retrieve-Name=FirstName-response.xml
│ │ │ │ ├── retrieve-Name=LastName-response.xml
│ │ │ │ └── retrieve-response.xml
│ │ │ ├── dataExtensionTemplate/
│ │ │ │ └── retrieve-response.xml
│ │ │ ├── dataExtract/
│ │ │ │ ├── build-expected.json
│ │ │ │ ├── get-expected.json
│ │ │ │ ├── patch-expected.json
│ │ │ │ ├── post-expected.json
│ │ │ │ └── template-expected.json
│ │ │ ├── dataFilter/
│ │ │ │ ├── build-expected.json
│ │ │ │ ├── get-expected.json
│ │ │ │ ├── patch-expected.json
│ │ │ │ ├── post-expected.json
│ │ │ │ └── template-expected.json
│ │ │ ├── dataFolder/
│ │ │ │ ├── +retrieve-ContentTypeINasset,asset-shared,cloudpages-slashfolder-response.xml
│ │ │ │ ├── create-ContentType=asset,Name=testFolder_samePath,ParentFolderID=89397-response.xml
│ │ │ │ ├── create-ContentType=dataextension,Name=my,ParentFolderID=2-response.xml
│ │ │ │ ├── create-ContentType=dataextension,Name=path,ParentFolderID=862002-response.xml
│ │ │ │ ├── create-ContentType=dataextension,Name=sub,ParentFolderID=862001-response.xml
│ │ │ │ ├── create-ContentType=dataextension,Name=subpath,ParentFolderID=862003-response.xml
│ │ │ │ ├── create-response.xml
│ │ │ │ ├── retrieve-ContentType=asset-shared-QAA-response.xml
│ │ │ │ ├── retrieve-ContentType=asset-shared-response.xml
│ │ │ │ ├── retrieve-ContentType=automations-response.xml
│ │ │ │ ├── retrieve-ContentType=journey-response.xml
│ │ │ │ ├── retrieve-ContentType=queryactivity-response.xml
│ │ │ │ ├── retrieve-ContentType=ssjsactivity-response.xml
│ │ │ │ ├── retrieve-ContentType=userinitiatedsends-response.xml
│ │ │ │ ├── retrieve-ContentTypeINasset,asset-sha,automatio,cloudpage,dataexten,filteract,filterdef,hidden,journey,list,mysubs,publicati,queryacti,salesforc,shared_da,shared_da,shared_sa,ssjsactiv,synchroni,useriniti-response.xml
│ │ │ │ ├── retrieve-ContentTypeINasset,asset-sha,automatio,cloudpage,dataexten,hidden,journey,list,mysubs,publicati,queryacti,salesforc,shared_da,shared_da,shared_sa,ssjsactiv,synchroni,triggered,triggered,useriniti-response.xml
│ │ │ │ ├── retrieve-ContentTypeINasset,asset-sha,automatio,cloudpage,dataexten,hidden,journey,list,mysubs,publicati,queryacti,salesforc,shared_da,shared_da,shared_sa,ssjsactiv,synchroni,useriniti-response.xml
│ │ │ │ ├── retrieve-ContentTypeINasset,asset-sha,dataexten,salesforc,shared_da,shared_da,shared_sa,synchroni,automatio,useriniti,journey,mysubs,list,publicati,queryacti,ssjsactiv,triggered,triggered-response.xml
│ │ │ │ ├── retrieve-ContentTypeINasset,asset-shared,cloudpages,dataextension,hidden,salesforcedataextension,shared_data,shared_dataextension,shared_salesforcedataextension,synchronizeddataextension-response.xml
│ │ │ │ ├── retrieve-ContentTypeINasset,asset-shared,cloudpages,journey-response.xml
│ │ │ │ ├── retrieve-ContentTypeINasset,asset-shared,cloudpages,ssjsactivity-response.xml
│ │ │ │ ├── retrieve-ContentTypeINasset,asset-shared,cloudpages-response.xml
│ │ │ │ ├── retrieve-ContentTypeINasset,asset-shared,shared_data,shared_dataextension,shared_salesforcedataextension,synchronizeddataextension-QAA-response.xml
│ │ │ │ ├── retrieve-ContentTypeINasset,asset-shared-QAA-response.xml
│ │ │ │ ├── retrieve-ContentTypeINasset,asset-shared-response.xml
│ │ │ │ ├── retrieve-ContentTypeINasset-shared,shared_data,shared_dataextension,shared_salesforcedataextension,synchronizeddataextension-QAA-response.xml
│ │ │ │ ├── retrieve-ContentTypeINautomations,queryactivity-response.xml
│ │ │ │ ├── retrieve-ContentTypeINcontextual_suppression_list,hidden,list,mysubs,publication,suppression_list,triggered_send,triggered_send_journeybuilder-response.xml
│ │ │ │ ├── retrieve-ContentTypeINcontextual_suppression_list,list,mysubs,publication,suppression_list-response.xml
│ │ │ │ ├── retrieve-ContentTypeINdataextension,hidden,queryactivity,salesforcedataextension,shared_data,shared_dataextension,shared_salesforcedataextension,synchronizeddataextension-response.xml
│ │ │ │ ├── retrieve-ContentTypeINdataextension,hidden,salesforcedataextension,shared_data,shared_dataextension,shared_salesforcedataextension,synchronizeddataextension-response.xml
│ │ │ │ ├── retrieve-ContentTypeINdataextension,salesforcedataextension,shared_data,shared_dataextension,shared_salesforcedataextension,synchronizeddataextension-QAA-response.xml
│ │ │ │ ├── retrieve-ContentTypeINfilteractivity,hidden-response.xml
│ │ │ │ ├── retrieve-ContentTypeINfilterdefinition,hidden-response.xml
│ │ │ │ ├── retrieve-ContentTypeINhidden,shared_data,shared_dataextension,shared_salesforcedataextension,synchronizeddataextension-response.xml
│ │ │ │ ├── retrieve-ContentTypeINhidden,triggered_send,triggered_send_journeybuilder-response.xml
│ │ │ │ ├── retrieve-ContentTypeINshared_data,shared_dataextension,shared_salesforcedataextension,synchronizeddataextension-QAA-response.xml
│ │ │ │ ├── retrieve-QAA-response.xml
│ │ │ │ ├── retrieve-response.xml
│ │ │ │ ├── retrieve-samePathOtherBU-response.xml
│ │ │ │ └── update-response.xml
│ │ │ ├── deliveryProfile/
│ │ │ │ └── get-expected.json
│ │ │ ├── domainVerification/
│ │ │ │ ├── create-expected.json
│ │ │ │ ├── get-sap-expected.json
│ │ │ │ └── update-expected.json
│ │ │ ├── email/
│ │ │ │ ├── retrieve-response.xml
│ │ │ │ └── v1/
│ │ │ │ ├── category/
│ │ │ │ │ ├── post-response-parentCatId=290937,name=my,catType=automations.json
│ │ │ │ │ ├── post-response-parentCatId=862100,name=sub,catType=automations.json
│ │ │ │ │ ├── post-response-parentCatId=862101,name=path,catType=automations.json
│ │ │ │ │ └── post-response-parentCatId=862102,name=subpath,catType=automations.json
│ │ │ │ └── filters/
│ │ │ │ └── filterdefinition/
│ │ │ │ ├── 10ef27dd-4be8-4bf6-970a-8acf8e281e55/
│ │ │ │ │ ├── delete-response.txt
│ │ │ │ │ ├── get-response.json
│ │ │ │ │ └── patch-response.json
│ │ │ │ ├── category/
│ │ │ │ │ ├── 5318/
│ │ │ │ │ │ └── get-response.json
│ │ │ │ │ ├── 8502/
│ │ │ │ │ │ └── get-response.json
│ │ │ │ │ └── 8503/
│ │ │ │ │ └── get-response.json
│ │ │ │ └── post-response.json
│ │ │ ├── emailSend/
│ │ │ │ ├── build-expected.json
│ │ │ │ ├── get-expected.json
│ │ │ │ ├── patch-expected.json
│ │ │ │ ├── post-expected.json
│ │ │ │ └── template-expected.json
│ │ │ ├── emailSendDefinition/
│ │ │ │ ├── create-response.xml
│ │ │ │ ├── delete-response.xml
│ │ │ │ ├── retrieve-IsPlatformObject=falseANDDescriptionnotEqualsSFSendDefinition-response.xml
│ │ │ │ └── update-response.xml
│ │ │ ├── event/
│ │ │ │ ├── build-expected.json
│ │ │ │ ├── get-automation-expected.json
│ │ │ │ ├── get-expected.json
│ │ │ │ ├── get-published-expected.json
│ │ │ │ ├── post_withExistingDE-callout-expected.json
│ │ │ │ ├── post_withExistingDE-expected.json
│ │ │ │ ├── post_withSchema-callout-expected.json
│ │ │ │ ├── post_withSchema-expected.json
│ │ │ │ ├── put-callout-expected.json
│ │ │ │ ├── put-expected.json
│ │ │ │ └── template-expected.json
│ │ │ ├── event-deploy/
│ │ │ │ ├── testNew_event_badExtension.bad-type-extension.json
│ │ │ │ └── testNew_event_badName_bad.event-meta.json
│ │ │ ├── eventDefinition/
│ │ │ │ └── get-expected.json
│ │ │ ├── fileLocation/
│ │ │ │ ├── build-expected.json
│ │ │ │ ├── get-aws-expected.json
│ │ │ │ ├── get-azure-expected.json
│ │ │ │ ├── get-eftp-expected.json
│ │ │ │ ├── get-exsftp-expected.json
│ │ │ │ ├── get-gcp-expected.json
│ │ │ │ ├── get-sor-expected.json
│ │ │ │ ├── patch-aws-expected.json
│ │ │ │ ├── patch-exsftp-expected.json
│ │ │ │ └── template-expected.json
│ │ │ ├── fileTransfer/
│ │ │ │ ├── build-expected.json
│ │ │ │ ├── get-expected.json
│ │ │ │ ├── patch-expected.json
│ │ │ │ ├── post-expected.json
│ │ │ │ └── template-expected.json
│ │ │ ├── filter/
│ │ │ │ ├── build-expected.json
│ │ │ │ ├── get-expected.json
│ │ │ │ ├── patch-expected.json
│ │ │ │ ├── post-expected.json
│ │ │ │ └── template-expected.json
│ │ │ ├── filterActivity/
│ │ │ │ ├── create-response.xml
│ │ │ │ └── retrieve-CustomerKey=testExisting_filter-response.xml
│ │ │ ├── filterDefinition/
│ │ │ │ └── retrieve-CustomerKey=testExisting_dataFilter-response.xml
│ │ │ ├── folder-deploy/
│ │ │ │ ├── Data Extensions/
│ │ │ │ │ ├── my/
│ │ │ │ │ │ ├── sub/
│ │ │ │ │ │ │ ├── path/
│ │ │ │ │ │ │ │ └── subpath.folder-meta.json
│ │ │ │ │ │ │ └── path.folder-meta.json
│ │ │ │ │ │ └── sub.folder-meta.json
│ │ │ │ │ ├── my.folder-meta.json
│ │ │ │ │ └── testExisting_folder.folder-meta.json
│ │ │ │ └── my automations/
│ │ │ │ ├── my/
│ │ │ │ │ ├── sub/
│ │ │ │ │ │ ├── path/
│ │ │ │ │ │ │ └── subpath.folder-meta.json
│ │ │ │ │ │ └── path.folder-meta.json
│ │ │ │ │ └── sub.folder-meta.json
│ │ │ │ └── my.folder-meta.json
│ │ │ ├── folder-deploy-samepath/
│ │ │ │ └── Content Builder/
│ │ │ │ └── testFolder_samePath.folder-meta.json
│ │ │ ├── folder-deploy-slash/
│ │ │ │ └── Content Builder/
│ │ │ │ └── Headers%2FFolders.folder-meta.json
│ │ │ ├── hub/
│ │ │ │ └── v1/
│ │ │ │ └── contacts/
│ │ │ │ └── schema/
│ │ │ │ ├── attributeGroups/
│ │ │ │ │ └── get-response.json
│ │ │ │ └── setDefinitions/
│ │ │ │ └── get-response.json
│ │ │ ├── importDefinition/
│ │ │ │ ├── retrieve-CustomerKey=testExisting_importFile-response.xml
│ │ │ │ └── retrieve-Name=testExisting_importFile-response.xml
│ │ │ ├── importFile/
│ │ │ │ ├── build-expected.json
│ │ │ │ ├── get-dataImport-expected.json
│ │ │ │ ├── get-expected.json
│ │ │ │ ├── get-sms-expected.json
│ │ │ │ ├── patch-expected.json
│ │ │ │ ├── post-expected.json
│ │ │ │ └── template-expected.json
│ │ │ ├── interaction/
│ │ │ │ └── v1/
│ │ │ │ ├── eventDefinitions/
│ │ │ │ │ ├── get-response.json
│ │ │ │ │ ├── key_DEAudience-2e3c73b6-48cc-2ec0-5522-48636e1a236e/
│ │ │ │ │ │ └── get-response.json
│ │ │ │ │ ├── key_testExisting_event/
│ │ │ │ │ │ ├── delete-response.txt
│ │ │ │ │ │ └── put-response.json
│ │ │ │ │ ├── key_testExisting_event_automation/
│ │ │ │ │ │ └── get-response.json
│ │ │ │ │ ├── post_withExistingDE-response.json
│ │ │ │ │ └── post_withSchema-response.json
│ │ │ │ └── interactions/
│ │ │ │ ├── 0175b971-71a3-4d8e-98ac-48121f3fbf4f/
│ │ │ │ │ ├── audit/
│ │ │ │ │ │ └── all/
│ │ │ │ │ │ ├── get-response-versionNumber=1.json
│ │ │ │ │ │ ├── get-response-versionNumber=2.json
│ │ │ │ │ │ └── get-response-versionNumber=3.json
│ │ │ │ │ ├── delete-response-versionNumber=1.txt
│ │ │ │ │ ├── delete-response.txt
│ │ │ │ │ ├── get-response-versionNumber=1.json
│ │ │ │ │ ├── get-response-versionNumber=3.json
│ │ │ │ │ └── get-response.json
│ │ │ │ ├── 3c3f4112-9b43-43ca-8a89-aa0375b2c1a2/
│ │ │ │ │ ├── delete-response.txt
│ │ │ │ │ └── get-response.json
│ │ │ │ ├── dsfdsafdsa-922c-4568-85a5-e5cc77efc3be/
│ │ │ │ │ ├── audit/
│ │ │ │ │ │ └── all/
│ │ │ │ │ │ ├── get-response-versionNumber=1.json
│ │ │ │ │ │ └── get-response-versionNumber=2.json
│ │ │ │ │ └── delete-response.txt
│ │ │ │ ├── get-response-status=Published.json
│ │ │ │ ├── get-response.json
│ │ │ │ ├── key_testExisting_journey_Multistep/
│ │ │ │ │ ├── get-response-versionNumber=1.json
│ │ │ │ │ ├── get-response.json
│ │ │ │ │ └── put-response.json
│ │ │ │ ├── key_testExisting_journey_Quicksend/
│ │ │ │ │ ├── get-response-versionNumber=1.json
│ │ │ │ │ └── get-response.json
│ │ │ │ ├── key_testExisting_journey_updatecontact/
│ │ │ │ │ ├── get-response.json
│ │ │ │ │ └── put-response.json
│ │ │ │ ├── key_testExisting_journey_updatecontact_sharedDE/
│ │ │ │ │ ├── get-response.json
│ │ │ │ │ └── put-response.json
│ │ │ │ ├── key_testExisting_temail/
│ │ │ │ │ ├── get-response-versionNumber=1.json
│ │ │ │ │ ├── get-response.json
│ │ │ │ │ ├── put-response-paused.json
│ │ │ │ │ └── put-response.json
│ │ │ │ ├── key_testExisting_temail_notPublished/
│ │ │ │ │ ├── get-response-versionNumber=1.json
│ │ │ │ │ ├── get-response.json
│ │ │ │ │ └── put-response.json
│ │ │ │ ├── key_testNew_temail_notPublished/
│ │ │ │ │ └── get-response.json
│ │ │ │ ├── post-response.json
│ │ │ │ ├── publishAsync/
│ │ │ │ │ └── 0175b971-71a3-4d8e-98ac-48121f3fbf4f/
│ │ │ │ │ ├── post-response-versionNumber=1.json
│ │ │ │ │ └── post-response-versionNumber=3.json
│ │ │ │ ├── publishStatus/
│ │ │ │ │ └── 45f06c0a-3ed2-48b2-a6a8-b5119253f01c/
│ │ │ │ │ ├── get-response-failed.json
│ │ │ │ │ ├── get-response-success.json
│ │ │ │ │ └── get-response-successWarnings.json
│ │ │ │ ├── transactional/
│ │ │ │ │ ├── create/
│ │ │ │ │ │ └── post-response.json
│ │ │ │ │ ├── pause/
│ │ │ │ │ │ └── post-response.json
│ │ │ │ │ └── resume/
│ │ │ │ │ └── post-response.json
│ │ │ │ ├── validateAsync/
│ │ │ │ │ └── 0175b971-71a3-4d8e-98ac-48121f3fbf4f/
│ │ │ │ │ └── post-response.json
│ │ │ │ └── validateStatus/
│ │ │ │ └── 45f06c0a-3ed2-48b2-a6a8-b5119253f01c/
│ │ │ │ ├── get-response-failed.json
│ │ │ │ ├── get-response-success.json
│ │ │ │ ├── get-response-successWarnings.json
│ │ │ │ └── get-response.json
│ │ │ ├── journey/
│ │ │ │ ├── build-expected.json
│ │ │ │ ├── create-transactionaEmail-publish-expected.json
│ │ │ │ ├── get-multistep-expected.json
│ │ │ │ ├── get-published-expected.json
│ │ │ │ ├── get-quicksend-expected.json
│ │ │ │ ├── get-quicksend-rcb-id-expected.json
│ │ │ │ ├── get-quicksend-rcb-key-expected.json
│ │ │ │ ├── get-quicksend-rcb-name-expected.json
│ │ │ │ ├── get-transactionalEmail-expected.json
│ │ │ │ ├── get-updatecontact-expected.json
│ │ │ │ ├── get-updatecontact-sharedDE-expected.json
│ │ │ │ ├── post-expected.json
│ │ │ │ ├── publish-callout-expected.json
│ │ │ │ ├── put-expected.json
│ │ │ │ ├── put-updatecontact-expected.json
│ │ │ │ ├── put-updatecontact-sharedDE-expected.json
│ │ │ │ ├── template-expected.json
│ │ │ │ └── validate-callout-expected.json
│ │ │ ├── legacy/
│ │ │ │ └── v1/
│ │ │ │ ├── beta/
│ │ │ │ │ ├── automations/
│ │ │ │ │ │ └── notifications/
│ │ │ │ │ │ ├── RkpOcE9qSVh2VUdnYTVJbWFfWW14dzoyNTow/
│ │ │ │ │ │ │ ├── get-response.json
│ │ │ │ │ │ │ └── post-response.json
│ │ │ │ │ │ ├── RkpOcE9qSVh2VUdnYTVJbWFfWW14dzoyNTow-PAUSED/
│ │ │ │ │ │ │ └── get-response.json
│ │ │ │ │ │ ├── bHF6Q0Q3b1VXa21OdVQzZFQ0ckVSQToyNTow/
│ │ │ │ │ │ │ └── get-response.json
│ │ │ │ │ │ └── cDhLQ2o2NExxVVc5N3VZeHF5WEExUToyNTow/
│ │ │ │ │ │ └── get-response.json
│ │ │ │ │ ├── bulk/
│ │ │ │ │ │ └── automations/
│ │ │ │ │ │ └── automation/
│ │ │ │ │ │ └── definition/
│ │ │ │ │ │ ├── NewRkpOcE9qSVh2VUdnYTVJbWFfWW14dzoyNTow/
│ │ │ │ │ │ │ └── get-response.json
│ │ │ │ │ │ ├── RkpOcE9qSVh2VUdnYTVJbWFfWW14dzoyNTow/
│ │ │ │ │ │ │ └── get-response.json
│ │ │ │ │ │ ├── RkpOcE9qSVh2VUdnYTVJbWFfWW14dzoyNTow-PAUSED/
│ │ │ │ │ │ │ └── get-response.json
│ │ │ │ │ │ ├── bHF6Q0Q3b1VXa21OdVQzZFQ0ckVSQToyNTow/
│ │ │ │ │ │ │ └── get-response.json
│ │ │ │ │ │ ├── cDhLQ2o2NExxVVc5N3VZeHF5WEExUToyNTow/
│ │ │ │ │ │ │ └── get-response.json
│ │ │ │ │ │ ├── get-response.json
│ │ │ │ │ │ ├── post-response-pauseSchedule.json
│ │ │ │ │ │ └── post-response-schedule.json
│ │ │ │ │ ├── messaging/
│ │ │ │ │ │ └── deliverypolicy/
│ │ │ │ │ │ └── get-response.json
│ │ │ │ │ ├── mobile/
│ │ │ │ │ │ ├── code/
│ │ │ │ │ │ │ └── get-response.json
│ │ │ │ │ │ ├── imports/
│ │ │ │ │ │ │ └── get-response.json
│ │ │ │ │ │ ├── keyword/
│ │ │ │ │ │ │ ├── NXV4ZFMwTEFwRVczd3RaLUF5X3p5dzo4Njow/
│ │ │ │ │ │ │ │ └── get-response.json
│ │ │ │ │ │ │ ├── cTVJaG5oSDJPVUNHcUh6Z3pQT2tVdzo4Njow/
│ │ │ │ │ │ │ │ └── delete-response.json
│ │ │ │ │ │ │ ├── get-response.json
│ │ │ │ │ │ │ └── post-response.json
│ │ │ │ │ │ └── message/
│ │ │ │ │ │ ├── NTIzOjc4OjA/
│ │ │ │ │ │ │ ├── delete-response.json
│ │ │ │ │ │ │ ├── get-response.json
│ │ │ │ │ │ │ └── post-response.json
│ │ │ │ │ │ ├── NTQ3Ojc4OjA/
│ │ │ │ │ │ │ └── get-response.json
│ │ │ │ │ │ ├── get-response.json
│ │ │ │ │ │ └── post-response.json
│ │ │ │ │ └── object/
│ │ │ │ │ └── NWQwdnhEU3dFZWVBekJRQzdISWl0QTo0NTow/
│ │ │ │ │ └── get-response.json
│ │ │ │ └── beta2/
│ │ │ │ └── data/
│ │ │ │ └── campaign/
│ │ │ │ └── get-response.json
│ │ │ ├── list/
│ │ │ │ └── retrieve-response.xml
│ │ │ ├── messaging/
│ │ │ │ └── v1/
│ │ │ │ ├── domainverification/
│ │ │ │ │ ├── delete/
│ │ │ │ │ │ └── post-response.txt
│ │ │ │ │ ├── get-response.json
│ │ │ │ │ ├── post-response.txt
│ │ │ │ │ └── update/
│ │ │ │ │ └── post-response.txt
│ │ │ │ ├── email/
│ │ │ │ │ └── definitions/
│ │ │ │ │ ├── get-response.json
│ │ │ │ │ ├── post-response.json
│ │ │ │ │ ├── testExisting_temail/
│ │ │ │ │ │ ├── delete-response.json
│ │ │ │ │ │ ├── get-response.json
│ │ │ │ │ │ └── patch-response.json
│ │ │ │ │ ├── testExisting_temail_notPublished/
│ │ │ │ │ │ └── get-response.json
│ │ │ │ │ └── testNew_temail_notPublished/
│ │ │ │ │ └── get-response.json
│ │ │ │ ├── push/
│ │ │ │ │ └── definitions/
│ │ │ │ │ ├── get-response.json
│ │ │ │ │ ├── post-response.json
│ │ │ │ │ └── testExisting_tpush/
│ │ │ │ │ ├── get-response.json
│ │ │ │ │ └── patch-response.json
│ │ │ │ └── sms/
│ │ │ │ └── definitions/
│ │ │ │ ├── get-response.json
│ │ │ │ ├── post-response.json
│ │ │ │ └── testExisting_tsms/
│ │ │ │ ├── get-response.json
│ │ │ │ └── patch-response.json
│ │ │ ├── mobileKeyword/
│ │ │ │ ├── build-expected.amp
│ │ │ │ ├── build-expected.json
│ │ │ │ ├── get-expected.amp
│ │ │ │ ├── get-expected.json
│ │ │ │ ├── post-create-expected.amp
│ │ │ │ ├── post-create-expected.json
│ │ │ │ ├── template-expected.amp
│ │ │ │ └── template-expected.json
│ │ │ ├── mobileMessage/
│ │ │ │ ├── build-expected.amp
│ │ │ │ ├── build-expected.json
│ │ │ │ ├── get-expected.amp
│ │ │ │ ├── get-expected.json
│ │ │ │ ├── post-create-expected.amp
│ │ │ │ ├── post-create-expected.json
│ │ │ │ ├── post-update-expected.amp
│ │ │ │ ├── post-update-expected.json
│ │ │ │ ├── template-expected.amp
│ │ │ │ └── template-expected.json
│ │ │ ├── program/
│ │ │ │ ├── retrieve-CustomerKey=testExisting_automation-response.xml
│ │ │ │ ├── retrieve-CustomerKey=testExisting_automation_fixKey_pause-response.xml
│ │ │ │ ├── retrieve-CustomerKey=testExisting_automation_fixKey_schedule-response.xml
│ │ │ │ ├── retrieve-CustomerKey=testExisting_automation_fixedKey_paused-response.xml
│ │ │ │ ├── retrieve-CustomerKey=testExisting_automation_fixedKey_scheduled-response.xml
│ │ │ │ ├── retrieve-CustomerKey=testExisting_automation_pause-response.xml
│ │ │ │ ├── retrieve-CustomerKey=testNew_automation-response.xml
│ │ │ │ ├── retrieve-Name=testExisting_automation-response.xml
│ │ │ │ └── retrieve-response.xml
│ │ │ ├── query/
│ │ │ │ ├── build-expected.json
│ │ │ │ ├── build-expected.sql
│ │ │ │ ├── clone-expected.json
│ │ │ │ ├── clone-expected.sql
│ │ │ │ ├── get-expected.json
│ │ │ │ ├── get-expected.sql
│ │ │ │ ├── get2-expected.json
│ │ │ │ ├── get_sharedDE-expected.json
│ │ │ │ ├── get_sharedDE-expected.sql
│ │ │ │ ├── patch-expected.json
│ │ │ │ ├── patch-expected.sql
│ │ │ │ ├── patch_fixKeys-expected.json
│ │ │ │ ├── patch_fixKeys-expected.sql
│ │ │ │ ├── patch_fixKeysSuffix-expected.json
│ │ │ │ ├── patch_fixKeysSuffix-expected.sql
│ │ │ │ ├── post-expected.json
│ │ │ │ ├── post-expected.sql
│ │ │ │ ├── template-expected.json
│ │ │ │ ├── template-expected.sql
│ │ │ │ ├── template_sharedDE-expected.json
│ │ │ │ └── template_sharedDE-expected.sql
│ │ │ ├── queryDefinition/
│ │ │ │ ├── retrieve-CustomerKey=badANDStatus=Active-response.xml
│ │ │ │ ├── retrieve-CustomerKey=testExisting_query2ANDStatus=Active-response.xml
│ │ │ │ ├── retrieve-CustomerKey=testExisting_queryANDStatus=Active-response.xml
│ │ │ │ ├── retrieve-CustomerKey=testExisting_query_fixKeysANDStatus=Active-response.xml
│ │ │ │ ├── retrieve-CustomerKey=testExisting_query_fixKeysSuffixANDStatus=Active-response.xml
│ │ │ │ ├── retrieve-CustomerKey=testExisting_query_fixedKeysANDStatus=Active-response.xml
│ │ │ │ └── retrieve-CustomerKey=testNew_queryANDStatus=Active-response.xml
│ │ │ ├── script/
│ │ │ │ ├── build-expected.json
│ │ │ │ ├── build-expected.ssjs
│ │ │ │ ├── get-expected.json
│ │ │ │ ├── get-expected.ssjs
│ │ │ │ ├── get_ampincluded-expected.html
│ │ │ │ ├── get_ampincluded-expected.json
│ │ │ │ ├── get_ampincluded-rcb-id-expected.html
│ │ │ │ ├── get_ampincluded-rcb-key-expected.html
│ │ │ │ ├── get_ampincluded-rcb-name-expected.html
│ │ │ │ ├── get_ampscript-expected.html
│ │ │ │ ├── get_ampscript-expected.json
│ │ │ │ ├── get_ampscript-rcb-id-expected.html
│ │ │ │ ├── get_ampscript-rcb-key-expected.html
│ │ │ │ ├── get_ampscript-rcb-name-expected.html
│ │ │ │ ├── get_mixed-expected.html
│ │ │ │ ├── get_mixed-expected.json
│ │ │ │ ├── get_mixed-rcb-id-expected.html
│ │ │ │ ├── get_mixed-rcb-key-expected.html
│ │ │ │ ├── get_mixed-rcb-name-expected.html
│ │ │ │ ├── get_noScriptTag-expected.html
│ │ │ │ ├── get_noScriptTag-expected.json
│ │ │ │ ├── patch-expected.json
│ │ │ │ ├── patch-expected.ssjs
│ │ │ │ ├── post-expected.json
│ │ │ │ ├── post-expected.ssjs
│ │ │ │ ├── template-expected.json
│ │ │ │ └── template-expected.ssjs
│ │ │ ├── sendClassification/
│ │ │ │ ├── build-expected.json
│ │ │ │ ├── create-response.xml
│ │ │ │ ├── delete-response.xml
│ │ │ │ ├── get-expected.json
│ │ │ │ ├── patch-expected.json
│ │ │ │ ├── post-expected.json
│ │ │ │ ├── retrieve-response.xml
│ │ │ │ ├── template-expected.json
│ │ │ │ └── update-response.xml
│ │ │ ├── senderProfile/
│ │ │ │ ├── build-expected.json
│ │ │ │ ├── create-response.xml
│ │ │ │ ├── delete-response.xml
│ │ │ │ ├── get-expected.json
│ │ │ │ ├── get-rcb-id-expected.json
│ │ │ │ ├── get-rcb-key-expected.json
│ │ │ │ ├── get-rcb-name-expected.json
│ │ │ │ ├── patch-expected.json
│ │ │ │ ├── post-expected.json
│ │ │ │ ├── retrieve-CustomerKey=Default-response.xml
│ │ │ │ ├── retrieve-CustomerKey=wrong-key-response.xml
│ │ │ │ ├── retrieve-response.xml
│ │ │ │ ├── template-expected.json
│ │ │ │ └── update-response.xml
│ │ │ ├── transactionalEmail/
│ │ │ │ ├── build-expected.json
│ │ │ │ ├── create-publish-expected.json
│ │ │ │ ├── get-expected.json
│ │ │ │ ├── get-published-expected.json
│ │ │ │ ├── patch-expected.json
│ │ │ │ ├── post-expected.json
│ │ │ │ └── template-expected.json
│ │ │ ├── transactionalPush/
│ │ │ │ ├── build-expected.json
│ │ │ │ ├── get-expected.json
│ │ │ │ ├── patch-expected.json
│ │ │ │ ├── post-expected.json
│ │ │ │ └── template-expected.json
│ │ │ ├── transactionalSMS/
│ │ │ │ ├── build-expected.amp
│ │ │ │ ├── build-expected.json
│ │ │ │ ├── get-expected.amp
│ │ │ │ ├── get-expected.json
│ │ │ │ ├── patch-expected.amp
│ │ │ │ ├── patch-expected.json
│ │ │ │ ├── post-expected.amp
│ │ │ │ ├── post-expected.json
│ │ │ │ ├── template-expected.amp
│ │ │ │ └── template-expected.json
│ │ │ ├── triggeredSend/
│ │ │ │ ├── build-expected.json
│ │ │ │ ├── get-expected.json
│ │ │ │ ├── get-rcb-id-expected.json
│ │ │ │ ├── get-rcb-key-expected.json
│ │ │ │ ├── get-rcb-name-expected.json
│ │ │ │ ├── patch-expected.json
│ │ │ │ ├── post-expected.json
│ │ │ │ └── template-expected.json
│ │ │ ├── triggeredSendDefinition/
│ │ │ │ ├── create-response.xml
│ │ │ │ ├── delete-response.xml
│ │ │ │ ├── retrieve-CustomerKey=testExisting_triggeredSend-response.xml
│ │ │ │ ├── retrieve-CustomerKey=testExisting_triggeredSend_rcb-response.xml
│ │ │ │ ├── retrieve-TriggeredSendStatusINNew,Active,Inactive,Moved,Canceled-response.xml
│ │ │ │ ├── retrieve-TriggeredSendStatusINdummy,Active-response.xml
│ │ │ │ └── update-response.xml
│ │ │ ├── triggeredSendSummary/
│ │ │ │ ├── get-expected.json
│ │ │ │ └── retrieve-response.xml
│ │ │ └── verification/
│ │ │ ├── build-expected.json
│ │ │ ├── get-expected.json
│ │ │ ├── patch-expected.json
│ │ │ ├── post-expected.json
│ │ │ └── template-expected.json
│ │ ├── auth.json
│ │ ├── rest404-response.json
│ │ └── retrieve-response.xml
│ ├── type.asset.test.js
│ ├── type.attributeGroup.test.js
│ ├── type.attributeSet.test.js
│ ├── type.automation.test.js
│ ├── type.dataExtension.test.js
│ ├── type.dataExtensionField.test.js
│ ├── type.dataExtract.test.js
│ ├── type.dataFilter.test.js
│ ├── type.deliveryProfile.test.js
│ ├── type.domainVerification.test.js
│ ├── type.emailSend.test.js
│ ├── type.event.test.js
│ ├── type.fileLocation.test.js
│ ├── type.fileTransfer.test.js
│ ├── type.filter.test.js
│ ├── type.folder.test.js
│ ├── type.importFile.test.js
│ ├── type.journey.test.js
│ ├── type.mobileKeyword.test.js
│ ├── type.mobileMessage.test.js
│ ├── type.query.test.js
│ ├── type.script.test.js
│ ├── type.sendClassification.test.js
│ ├── type.senderProfile.test.js
│ ├── type.transactionalEmail.test.js
│ ├── type.transactionalPush.test.js
│ ├── type.transactionalSMS.test.js
│ ├── type.triggeredSend.test.js
│ ├── type.triggeredSendSummary.test.js
│ ├── type.user.test.js
│ ├── type.verification.test.js
│ └── utils.js
├── tsconfig.json
├── tsconfig.npmScripts.json
├── tsconfig.precommit.json
└── types/
└── mcdev.d.js
================================================
FILE CONTENTS
================================================
================================================
FILE: .beautyamp.json
================================================
{
"ampscript": {
"capitalizeAndOrNot": true,
"capitalizeIfFor": true,
"capitalizeSet": true,
"capitalizeVar": true,
"maxParametersPerLine": 4
},
"editor": {
"insertSpaces": true,
"tabSize": 4
}
}
================================================
FILE: .bitbucket/PULL_REQUEST_TEMPLATE.md
================================================
# PR details
## What is the purpose of this pull request? (put an "X" next to an item)
- [ ] Documentation update
- [ ] Bug fix
- [ ] New metadata support
- [ ] Enhanced metadata
- [ ] Add a CLI option
- [ ] Add something to the core
- [ ] Other, please explain:
## What changes did you make? (Give an overview)
...
## Is there anything you'd like reviewers to focus on?
...
================================================
FILE: .coverage-comment-template.svelte
================================================
Coverage Report
Commit:{short_commit_sha}
Base: {base_ref}@{base_short_commit_sha}
| Type |
{#if has_base_data}
Base |
{/if}
This PR |
{#each summary_list as { type, percent }}
| {type} |
{#if has_base_data}
{#if Number.isFinite(percent.base)}
{percent.base}%
{:else}
-
{/if}
|
{/if}
{#if Number.isFinite(percent.total)}
{percent.total}%
{#if has_base_data}
({formatPercentDiff(percent.diff)})
{/if}
{:else}
-
{/if}
|
{/each}
Details (changed files):
| File |
Statements |
Branches |
Functions |
Lines |
{#each changed_files_coverage_data as [file, data]}
{@const percents = [
data.statements.pct,
data.branches.pct,
data.functions.pct,
data.lines.pct,
]}
|
{file}
|
{#each percents as percent}
{#if Number.isFinite(percent)}
{percent}%
{:else}
-
{/if}
|
{/each}
{/each}
================================================
FILE: .editorconfig
================================================
root = true
[*]
end_of_line = lf
indent_style = space
indent_size = 4
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
================================================
FILE: .fork/.prettierrc
================================================
{
"useTabs": false,
"tabWidth": 2,
"printWidth": 40,
"trailingComma": "none"
}
================================================
FILE: .fork/custom-commands.json
================================================
[
{
"version" : 1
},
{
"action" : {
"type" : "url",
"url" : "https://github.com/Accenture/sfmc-devtools/compare/main...${ref:short}?expand=1&template=pr_template_release.md"
},
"name" : "Create PR/Release-PR to master branch",
"refTargets" : [
"localbranch",
"remotebranch"
],
"target" : "ref"
},
{
"action" : {
"type" : "url",
"url" : "https://github.com/Accenture/sfmc-devtools/compare/develop...${ref:short}?expand=1"
},
"name" : "Create PR/To develop branch",
"refTargets" : [
"localbranch",
"remotebranch"
],
"target" : "ref"
},
{
"action" : {
"type" : "url",
"url" : "https://github.com/Accenture/sfmc-devtools/compare/hotfix...${ref:short}?expand=1"
},
"name" : "Create PR/To hotfix branch",
"refTargets" : [
"localbranch",
"remotebranch"
],
"target" : "ref"
},
{
"action" : {
"script" : "SKIP_HOOKS=1 git switch ${ref}",
"showOutput" : false,
"type" : "sh",
"waitForExit" : true
},
"name" : "Skip Hooks/Checkout",
"refTargets" : [
"localbranch"
],
"target" : "ref"
},
{
"action" : {
"script" : "SKIP_HOOKS=1 git switch ${ref:short} && SKIP_HOOKS=2 git pull",
"showOutput" : false,
"type" : "sh",
"waitForExit" : true
},
"name" : "Skip Hooks/Checkout & Pull",
"refTargets" : [
"remotebranch"
],
"target" : "ref"
},
{
"name" : "Skip Hooks/Commit",
"refTargets" : [
"localbranch",
"remotebranch"
],
"target" : "ref",
"ui" : {
"buttons" : [
{
"action" : {
"args" : "commit -n -m \"$1{text}\" -m \" $2{text}\"",
"path" : "${git}",
"showOutput" : false,
"type" : "process",
"waitForExit" : true
},
"title" : "Commit without Hooks"
},
{
"action" : {
"type" : "cancel"
},
"title" : "Cancel"
}
],
"controls" : [
{
"placeholder" : "",
"text" : "",
"textBoxType" : "generic",
"title" : "Commit subject",
"type" : "textBox"
},
{
"placeholder" : "",
"text" : "",
"textBoxType" : "generic",
"title" : "Description",
"type" : "textBox"
}
],
"description" : "This will create a commit but not run pre-commit hooks",
"title" : "Commit skipping Hooks"
}
},
{
"action" : {
"script" : "SKIP_HOOKS=4 git merge ${ref:short}",
"showOutput" : false,
"type" : "sh",
"waitForExit" : true
},
"name" : "Skip Hooks/Merge into current branch",
"refTargets" : [
"localbranch"
],
"target" : "ref"
},
{
"action" : {
"script" : "SKIP_HOOKS=3 git pull",
"showOutput" : false,
"type" : "sh",
"waitForExit" : true
},
"name" : "Skip Hooks/Pull",
"refTargets" : [
"localbranch",
"remotebranch"
],
"target" : "ref"
}
]
================================================
FILE: .gitattributes
================================================
# Set the default behavior, in case people don't have core.autocrlf set.
* text=auto eol=lf
# Declare files that will always have LF line endings on checkout.
*.ssjs text eol=lf
@types/** linguist-generated
================================================
FILE: .github/ISSUE_TEMPLATE/bug.yml
================================================
name: 🐞 Bug
description: File a bug/issue
title: '[BUG] '
labels: [bug, NEW]
body:
- type: checkboxes
attributes:
label: Is there an existing issue for this?
description: Please [search here](https://github.com/Accenture/sfmc-devtools/issues) to see if an issue already exists for your problem.
options:
- label: I have searched the existing issues
required: true
- type: textarea
attributes:
label: Current Behavior
description: A clear & concise description of what you're experiencing.
validations:
required: false
- type: textarea
attributes:
label: Expected Behavior
description: A clear & concise description of what you expected to happen.
validations:
required: false
- type: textarea
attributes:
label: Steps To Reproduce
description: Steps to reproduce the behavior.
value: |
1. Go to '...'
2. Click on '....'
3. Run '...'
4. See error...
validations:
required: false
- type: dropdown
id: version
attributes:
label: Version
description: What version of our software are you running? (mcdev --version)
options:
- 9.0.3
- 9.0.2
- 9.0.1
- 9.0.0
- 8.4.0
- 8.3.1
- 8.3.0
- 8.2.1
- 8.2.0
- 8.1.0
- 8.0.2
- 8.0.1
- 8.0.0
- 7.10.1
- 7.10.0
- 7.9.0
- 7.8.0
- 7.7.2
- 7.7.1
- 7.7.0
- 7.6.3
- 7.6.2
- 7.6.1
- 7.6.0
- 7.5.0
- 7.4.4
- 7.4.3
- 7.4.2
- 7.4.1
- 7.4.0
- 7.3.1
- 7.3.0
- 7.2.0
- 7.1.4
- 7.1.3
- 7.1.2
- 7.1.1
- 7.1.0
- 7.0.4
- 7.0.3
- 7.0.2
- 7.0.1
- 7.0.0
- 6.0.2
- 6.0.1
- 6.0.0
- 5.3.0
- 5.2.0
- 5.1.0
- 5.0.2
- 5.0.1
- 5.0.0
- 4.3.4
- 4.3.3
- 4.3.2
- 4.3.1
- 4.3.0
- 4.2.1
- 4.2.0
- 4.1.12
- 4.1.11
- 4.1.10
- 4.1.9
- 4.1.8
- 4.1.7
- 4.1.6
- 4.1.5
- 4.1.4
- 4.1.3
- 4.1.2
- 4.1.1
- 4.1.0
- 4.0.2
- 4.0.1
- 4.0.0
- 3.1.3
- 3.1.2
- 3.1.1
- 3.1.0
- 3.0.3
- 3.0.2
- 3.0.1
- develop-branch
validations:
required: true
- type: textarea
attributes:
label: Environment
description: |
examples:
- **Operating system (Windows/Mac/Linux/...)**: Windows 10
- **Node (node --version)**: 13.14.0
- **npm (npm --version)**: 7.6.3
value: |
- OS:
- Node:
- npm:
validations:
required: false
- type: checkboxes
attributes:
label: Participation
options:
- label: I am willing to submit a pull request for this issue.
required: false
- type: textarea
attributes:
label: Additional comments
description: Is there anything else that's important for the team to know?
================================================
FILE: .github/ISSUE_TEMPLATE/feature_request.md
================================================
---
name: Feature request
about: Suggest an idea for this project
title: "[FEATURE] "
labels: NEW, enhancement
assignees: ''
---
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.
================================================
FILE: .github/ISSUE_TEMPLATE/task.md
================================================
---
name: Task
about: Technical improvements without functional impact / changes to the Documentation
title: "[TASK] "
labels: NEW, chore
assignees: ''
issueType: task
---
================================================
FILE: .github/PULL_REQUEST_TEMPLATE/pr_template_release.md
================================================
# Release details
## Checklist
### Before merge
- [ ] Wiki updated with info in ticket listed under **Documentation**
- [ ] ran `npm run prepare-release` (which runs `npm audit fix`, `npm run lint-ts`, `npm run lint:fix`, `git add`, `git commit`)
- [ ] pushed potential changes made by prepare-release
### After merge
- [ ] merged all dependabot PRs that target main branch
- [ ] updated [bug template](/.github/ISSUE_TEMPLATE/bug.yml) to include the new version
- [ ] updated [.mcdevrc](/test/mockRoot/.mcdevrc.json) for tests to the new version
- [ ] ran `npm run version:major/minor/patch`
- [ ] pushed version-prep commits
- [ ] merged main branch into develop branch
- [ ] closed GitHub milestone
- [ ] created [new GitHub Release](https://github.com/Accenture/sfmc-devtools/releases/new)
## Documentation
... insert updated documentation here ...
## Issues
- closes #1234567
================================================
FILE: .github/PULL_REQUEST_TEMPLATE.md
================================================
# PR details
## What changes did you make? (Give an overview)
- closes #1234
## Further details (optional)
...
## Checklist
- [ ] I have performed a self-review of my own code
- [ ] I have commented my code, particularly in hard-to-understand areas
- [ ] test scripts updated
- [ ] Wiki updated (if applicable)
================================================
FILE: .github/copilot-instructions.md
================================================
# GitHub Copilot Instructions for sfmc-devtools
Always assume a bug-ticket might be outdated and first try to verify if the described issue is still occurring.
## Commit Messages
Prefix every commit message with the issue number it was created for:
```
#1234:
```
Example: `#1234: fix journey deployment error`
## Branch Naming
Branch names must follow this pattern, where the type is derived from the issue type:
```
copilot/task/1234-issue-title
copilot/bug/1234-issue-title
copilot/feature/1234-issue-title
```
- Use `task` for task/chore issues
- Use `bug` for bug report issues
- Use `feature` for feature request/enhancement issues
- Replace spaces in the issue title with hyphens and use lowercase
## Pull Request Title
The PR title should be derived from the branch name:
```
Branch: copilot/task/1234-issue-title
PR title: task/1234 issue title
```
Format: `/ `
## Pull Request Description
Follow the structure defined in [PULL_REQUEST_TEMPLATE.md](./PULL_REQUEST_TEMPLATE.md):
```markdown
# PR details
## What changes did you make? (Give an overview)
- closes #1234
## Further details (optional)
...
## Checklist
- [ ] I have performed a self-review of my own code
- [ ] I have commented my code, particularly in hard-to-understand areas
- [ ] test scripts updated
- [ ] Wiki updated (if applicable)
```
Replace `#1234` with the actual issue number the PR is created for.
## Issue Relationship
Always link the PR to the issue it was created for by including `closes #` in the PR description.
## Labels
The repository has component labels prefixed with `c/` based on the class names in `lib/metadataTypes/`. When files in that directory are changed, assign the matching pre-existing `c/` label(s) to the PR.
Examples:
- Changes to `lib/metadataTypes/Journey.js` → assign label `c/journey`
- Changes to `lib/metadataTypes/Automation.js` → assign label `c/automation`
- Changes to `lib/metadataTypes/DataExtension.js` → assign label `c/dataextension`
The label name is `c/` followed by the lower camel-cased class name (filename without extension).
Only assign labels that already exist in the repository.
## Milestone
Assign the same milestone to the PR that the issue has assigned.
================================================
FILE: .github/dependabot.yml
================================================
# To get started with Dependabot version updates, you'll need to specify which
# package ecosystems to update and where the package manifests are located.
# Please see the documentation for all configuration options:
# https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
version: 2
updates:
- package-ecosystem: 'npm' # See documentation for possible values
directory: '/' # Location of package manifests
schedule:
interval: 'weekly'
target-branch: 'develop'
open-pull-requests-limit: 10
labels:
- 'dependencies'
- package-ecosystem: 'github-actions'
directory: '/'
schedule:
interval: 'weekly'
target-branch: 'main'
labels:
- 'dependencies'
- 'github-action'
================================================
FILE: .github/pr-labeler.yml
================================================
enhancement: ['feature/*', 'feat/*', 'copilot/feature/*']
bug: ['bugfix/*', 'bug/*', 'fix/*', 'hotfix/*', 'copilot/bug/*']
chore: ['chore/*', 'task/*', 'copilot/task/*']
================================================
FILE: .github/workflows/close_issues_on_merge.yml
================================================
name: Close issues related to a merged pull request based on master branch.
on:
pull_request:
types: [closed]
branches:
- develop
- hotfix
jobs:
closeIssueOnPrMergeTrigger:
permissions:
contents: read
pull-requests: read
issues: write
runs-on: ubuntu-latest
steps:
- name: Closes issues related to a merged pull request.
uses: ldez/gha-mjolnir@v1.5.0
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
================================================
FILE: .github/workflows/code-test.yml
================================================
# Custom tests for mcdev
#
name: "Code Testing"
on:
push:
branches: [main, develop, hotfix]
pull_request:
# The branches below must be a subset of the branches above
branches: [main, develop, hotfix]
jobs:
lintandTesting:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
node: ["20.19", 21, 22, 23, 24, 25]
name: lint & test w/ node v${{ matrix.node }}
permissions:
actions: read
contents: read
security-events: write
steps:
- name: Checkout repository
uses: actions/checkout@v6
- name: Setup node
uses: actions/setup-node@v6
with:
node-version: ${{ matrix.node }}
registry-url: https://registry.npmjs.org/
- run: npm ci --ignore-scripts
- run: npm run lint
# Assuming code passes, run tests
- name: Run mcdev-tests
run: npm run test
================================================
FILE: .github/workflows/coverage-base-update.yml
================================================
name: Update coverage comment # base-update.yml
on:
pull_request:
types: [edited]
permissions:
# allow dependabot to execute this workflow
pull-requests: write
jobs:
hello_world_job:
runs-on: ubuntu-latest
name: Test and report
steps:
- name: Checkout
uses: actions/checkout@v6
with:
ref: ${{ github.event.pull_request.head.sha }}
fetch-depth: 1000
- name: Prepare for Report Coverage (without nyc run)
run: |
npm i svelte-to-html@1.0.9
git fetch origin ${{ github.event.pull_request.base.ref }} --depth=1000
- name: Download artifact for base branch
uses: dawidd6/action-download-artifact@v19
continue-on-error: true
with:
workflow: ${{ github.event.pull_request.base.ref == 'main' && 'coverage-main-branch.yml' || github.event.pull_request.base.ref == 'develop' && 'coverage-develop-branch.yml' || 'coverage.yml' }}
workflow_conclusion: success
commit: ${{github.event.pull_request.base.sha}}
name: 'test-coverage-output'
path: base-artifacts
search_artifacts: true
- name: Download artifact for to be merged branch
uses: dawidd6/action-download-artifact@v19
continue-on-error: true
with:
workflow: 'coverage.yml'
workflow_conclusion: success
commit: ${{github.event.pull_request.head.sha}}
name: 'test-coverage-output'
path: artifacts
search_artifacts: true
- name: Check file existence
id: check_files
uses: andstor/file-existence-action@v3
with:
files: 'base-artifacts/coverage-summary.json, artifacts/coverage-summary.json'
- name: Update Coverage comment
uses: sidx1024/report-nyc-coverage-github-action@v1.2.7
if: steps.check_files.outputs.files_exists == 'true'
# Only runs if all of the files exists
with:
coverage_file: 'artifacts/coverage-summary.json'
base_coverage_file: 'base-artifacts/coverage-summary.json'
comment_template_file: '.coverage-comment-template.svelte'
================================================
FILE: .github/workflows/coverage-develop-branch.yml
================================================
name: Test coverage for develop branch # default-branch.yml
on:
push:
branches:
- develop
permissions:
# allow dependabot to execute this workflow
pull-requests: write
jobs:
hello_world_job:
runs-on: ubuntu-latest
name: Test and upload coverage
steps:
- name: Checkout
uses: actions/checkout@v6
with:
ref: ${{ github.event.ref }}
fetch-depth: 1000
- uses: actions/setup-node@v6
with:
node-version-file: ./package.json
- run: npm ci --ignore-scripts
- name: Run mcdev-tests with coverage
run: npm run coverage
- name: Prepare for Report Coverage (mini)
run: |
npx c8 report --reporter json-summary --exclude-after-remap false
- name: Upload coverage artifact
uses: actions/upload-artifact@v7
with:
name: test-coverage-output
path: coverage
overwrite: true
retention-days: 90
================================================
FILE: .github/workflows/coverage-main-branch.yml
================================================
name: Test coverage for main branch # default-branch.yml
on:
push:
branches:
- main
permissions:
# allow dependabot to execute this workflow
pull-requests: write
jobs:
hello_world_job:
runs-on: ubuntu-latest
name: Test and upload coverage
steps:
- name: Checkout
uses: actions/checkout@v6
with:
ref: ${{ github.event.ref }}
fetch-depth: 1000
- uses: actions/setup-node@v6
with:
node-version-file: ./package.json
- run: npm ci --ignore-scripts
- name: Run mcdev-tests with coverage
run: npm run coverage
- name: Prepare for Report Coverage (mini)
run: |
npx c8 report --reporter json-summary --exclude-after-remap false
- name: Upload coverage artifact
uses: actions/upload-artifact@v7
with:
name: test-coverage-output
path: coverage
overwrite: true
retention-days: 90
================================================
FILE: .github/workflows/coverage.yml
================================================
on: [pull_request]
name: Test coverage report # main.yml
permissions:
# allow dependabot to execute this workflow
pull-requests: write
jobs:
hello_world_job:
runs-on: ubuntu-latest
name: Test and report
steps:
- name: Checkout
uses: actions/checkout@v6
with:
ref: ${{ github.event.pull_request.head.sha }}
fetch-depth: 1000
- uses: actions/setup-node@v6
with:
node-version-file: ./package.json
- run: npm ci --ignore-scripts
- name: Run mcdev-tests with coverage
run: npm run coverage
- name: Prepare for Report Coverage
run: |
npx c8 report --reporter json-summary --exclude-after-remap false
npm i svelte-to-html@1.0.9
git fetch origin ${{ github.event.pull_request.base.ref }} --depth=1000
- name: Upload coverage artifact
uses: actions/upload-artifact@v7
with:
name: test-coverage-output
path: coverage
overwrite: true
retention-days: 90
- name: Download coverage artifact
uses: actions/download-artifact@v8
with:
path: artifacts/test-coverage-output
- name: Get Run ID
id: get_run_id
run: |
echo "name=run_id::$(\
gh run list \
--workflow "${{ github.event.pull_request.base.ref == 'main' && 'coverage-main-branch.yml' || github.event.pull_request.base.ref == 'develop' && 'coverage-develop-branch.yml' || 'coverage.yml' }}" \
--json conclusion,headSha,status,databaseId \
--jq ".[] | select( .conclusion == \"success\" and .headSha == \"${{github.event.pull_request.base.sha}}\") | .databaseId" \
)" >> $GITHUB_OUTPUT
env:
GITHUB_TOKEN: ${{ github.token }}
- name: Download artifact for base branch if available, previous
uses: dawidd6/action-download-artifact@v19
continue-on-error: true
with:
workflow: ${{ github.event.pull_request.base.ref == 'main' && 'coverage-main-branch.yml' || github.event.pull_request.base.ref == 'develop' && 'coverage-develop-branch.yml' || 'coverage.yml' }}
run_id: ${{steps.get_run_id.outputs.run_id}}
name: 'test-coverage-output'
path: base-artifacts
search_artifacts: true
- name: Check file existence
id: check_files
uses: andstor/file-existence-action@v3
with:
files: 'base-artifacts/coverage-summary.json, artifacts/test-coverage-output/coverage-summary.json'
- name: Report coverage
uses: sidx1024/report-nyc-coverage-github-action@v1.2.7
id: report
with:
coverage_file: 'artifacts/test-coverage-output/coverage-summary.json'
base_coverage_file: ${{steps.check_files.outputs.files_exists == 'true' && 'base-artifacts/coverage-summary.json' || ''}}
comment_template_file: '.coverage-comment-template.svelte'
================================================
FILE: .github/workflows/npm-publish.yml
================================================
# This workflow will run tests using node and then publish a package to GitHub Packages when a release is created
# For more information see: https://help.github.com/actions/language-and-framework-guides/publishing-nodejs-packages
name: Publish NPM on Release
on:
release:
types: [published]
permissions:
id-token: write # Required for OIDC
contents: read
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: actions/setup-node@v6
with:
node-version-file: ./package.json
- run: npm ci
- run: npm test
publish-npm:
needs: build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: actions/setup-node@v6
with:
node-version-file: ./package.json
registry-url: https://registry.npmjs.org/
- run: npm publish
- name: Close release milestone if empty
env:
GH_TOKEN: ${{ github.token }}
REPO: ${{ github.repository }}
RELEASE_TAG: ${{ github.event.release.tag_name }}
run: |
set -euo pipefail
owner="${REPO%%/*}"
repo="${REPO##*/}"
milestone_title="${RELEASE_TAG#v}"
if [ -z "${milestone_title}" ]; then
echo "Could not parse milestone version from release tag (tag=${RELEASE_TAG})."
exit 0
fi
milestones_json="$(gh api "repos/${owner}/${repo}/milestones?state=open&per_page=100")"
milestone_number="$(echo "$milestones_json" | jq -r \
--arg milestone_title "$milestone_title" \
'.[] | select(.title == $milestone_title) | .number' \
| head -n1)"
if [ -z "${milestone_number}" ] || [ "${milestone_number}" = "null" ]; then
echo "No matching open milestone found for parsed version '${milestone_title}'."
exit 0
fi
milestone="$(gh api "repos/${owner}/${repo}/milestones/${milestone_number}")"
state="$(echo "$milestone" | jq -r '.state')"
open_issues="$(echo "$milestone" | jq -r '.open_issues')"
title="$(echo "$milestone" | jq -r '.title')"
echo "Matched milestone #${milestone_number} '${title}' (state=${state}, open_issues=${open_issues})."
if [ "$state" != "open" ]; then
echo "Milestone is already closed. Nothing to do."
exit 0
fi
if [ "$open_issues" -ne 0 ]; then
echo "Milestone has open items. Skipping close."
exit 0
fi
gh api -X PATCH "repos/${owner}/${repo}/milestones/${milestone_number}" -f state="closed" >/dev/null
echo "Milestone #${milestone_number} closed."
================================================
FILE: .github/workflows/pr-labeler.yml
================================================
name: PR Labeler
on:
pull_request:
types: [opened]
permissions:
contents: read
jobs:
pr-labeler:
permissions:
contents: read # for TimonVS/pr-labeler-action to read config file
pull-requests: write # for TimonVS/pr-labeler-action to add labels in PR
runs-on: ubuntu-latest
steps:
- uses: TimonVS/pr-labeler-action@v5
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
configuration-path: .github/pr-labeler.yml # optional, .github/pr-labeler.yml is the default value
================================================
FILE: .github/workflows/sync-milestone.yml
================================================
name: Sync Milestone from Issue
on:
pull_request:
types: [opened, edited, reopened]
jobs:
sync-milestone:
runs-on: ubuntu-latest
permissions:
issues: read
pull-requests: write
steps:
- name: Sync Milestone
env:
GH_TOKEN: ${{ github.token }}
PR_NUMBER: ${{ github.event.pull_request.number }}
REPO: ${{ github.repository }}
OWNER: ${{ github.repository_owner }}
run: |
# 1. Get the milestone of the officially linked issues and the PR's current milestone via GraphQL
# This catches issues linked via "Fixes #123" and similar in the body or the UI sidebar.
API_RESPONSE=$(gh api graphql -f query='
query($owner: String!, $name: String!, $pr: Int!) {
repository(owner: $owner, name: $name) {
pullRequest(number: $pr) {
milestone {
number
}
closingIssuesReferences(first: 1) {
nodes {
milestone {
number
title
}
}
}
}
}
}' -F owner="$OWNER" -F name="${REPO#*/}" -F pr=$PR_NUMBER)
MILESTONE_NUMBER=$(echo "$API_RESPONSE" | jq -r '.data.repository.pullRequest.closingIssuesReferences.nodes[0].milestone.number // "null"')
MILESTONE_TITLE=$(echo "$API_RESPONSE" | jq -r '.data.repository.pullRequest.closingIssuesReferences.nodes[0].milestone.title // "null"')
CURRENT_PR_MILESTONE=$(echo "$API_RESPONSE" | jq -r '.data.repository.pullRequest.milestone.number // "null"')
# 2. Check if a milestone was found
if [ "$MILESTONE_NUMBER" != "null" ] && [ -n "$MILESTONE_NUMBER" ]; then
if [ "$MILESTONE_NUMBER" = "$CURRENT_PR_MILESTONE" ]; then
echo "PR already has milestone '$MILESTONE_TITLE' set. No update needed."
else
echo "Found milestone '$MILESTONE_TITLE' from linked issue. Assigning to PR..."
gh pr edit $PR_NUMBER --milestone "$MILESTONE_TITLE" --repo "$REPO"
fi
else
echo "No milestone found on linked issues or no issues linked."
fi
================================================
FILE: .gitignore
================================================
/.nyc_output/
/businessUnits/
/coverage/
/deploy/
/logs/
/retrieve/
/roles/
/template/
/tmp/
node_modules/
.mcdev-auth.json
.mcdevrc.json
.vscode/tasks.json
!test/mockRoot/*
================================================
FILE: .husky/.gitignore
================================================
_
================================================
FILE: .husky/commit-msg
================================================
INPUT_FILE=$1
START_LINE=`head -n1 $INPUT_FILE`
PATTERN="^(#[[:digit:]]|Merge|Revert)"
if ! echo "$START_LINE" | grep -qE "$PATTERN" ; then
echo "Bad commit message, see example: \"#431 commit message\", you provided: \"$START_LINE\""
exit 1
fi
================================================
FILE: .husky/post-checkout
================================================
#!/bin/sh
# ### git commit message template ###
git config commit.template .git/templatemessage
TICKETID=`git rev-parse --abbrev-ref HEAD | LC_ALL=en_US.utf8 grep -oP '^((copilot\/)?(feature|bug|bugfix|fix|hotfix|task|chore)\/)?\K\d{1,7}' || true`
if [ -z "$TICKETID" ]
then
TICKETID="0"
fi
TEMPLATE="#$TICKETID: "
echo "[POST-CHECKOUT] Setting template commit to '$TEMPLATE'"
# wrap $TEMPLATE in quotes or else it is trimmed automatically
echo "$TEMPLATE" > ".git/templatemessage"
if [ "${SKIP_HOOKS:-0}" -gt 0 ] 2>/dev/null; then
echo "[POST-CHECKOUT] skipping hooks ($SKIP_HOOKS)"
exit 0
fi
# ### run npm install ###
echo "[POST-CHECKOUT] 📦 Checking for changes to dependencies"
# $1 is the new HEAD pointer
NEWHEAD=$1
# $2 is the previous HEAD pointer
OLDHEAD=$2
# extract all paths to package-lock.json files
PACKAGES=$(git diff --name-only "$OLDHEAD" "$NEWHEAD" | grep -E "^package-lock\.json" || true)
if [ -n "$PACKAGES" ]; then
for package in $PACKAGES; do
echo "📦 $package was changed."
done
echo "📦 Running npm install to update your dependencies..."
npm install
npm run lint:fix
else
echo "📦 All packages up-to-date. No need to run npm install."
fi
================================================
FILE: .husky/post-merge
================================================
if [[ $SKIP_HOOKS>0 ]]; then
echo "[POST-MERGE] skipping hooks ($SKIP_HOOKS)"
exit 0
fi
# ### run npm install ###
echo "[POST-MERGE] 📦 Checking for changes to dependencies"
# define how to split strings into array elements
IFS=$'\n'
# extract all paths to package-lock.json files
PACKAGE_LOCK_REGEX="(^package-lock\.json)"
echo "[POST-MERGE] running git diff --name-only HEAD^1 HEAD"
PACKAGES=$(git diff --name-only HEAD^1 HEAD | grep -E $PACKAGE_LOCK_REGEX || true)
if [[ ${PACKAGES[@]} ]]; then
for package in $PACKAGES; do
echo "📦 $package was changed."
done
echo "📦 Running npm install to update your dependencies..."
npm install
npm run lint:fix
else
echo "📦 All packages up-to-date. No need to run npm install."
fi
================================================
FILE: .husky/pre-commit
================================================
# run lint-staged hooks
echo "[PRE-COMMIT] Run lint-staged"
lint-staged
# update typescript type declarations
echo "[PRE-COMMIT] Run typescript validation and create/update d.ts files"
tsc -p tsconfig.precommit.json
git add @types
================================================
FILE: .issuetracker
================================================
# Integration with Issue Tracker
#
# (note that '\' need to be escaped).
[issuetracker "Accenture Jira Rule"]
regex = "(CSCLSROZ)-(\\d+)"
url = "https://alm.accenture.com/jira/browse/$1-$2"
[issuetracker "GitHub Pull Request Rule"]
regex = "pull request #(\\d+)"
url = "https://github.com/Accenture/sfmc-devtools/pull/$1"
[issuetracker "GitHub Issue Rule"]
regex = "#(\\d+)"
url = "https://github.com/Accenture/sfmc-devtools/issues/$1"
================================================
FILE: .markdownlint.json
================================================
{
"default": true,
"line-length": false,
"no-duplicate-header": false,
"no-trailing-punctuation": false,
"no-inline-html": false,
"no-bare-urls": false,
"list-marker-space": {
"ul_single": 1,
"ol_single": 1,
"ul_multi": 1,
"ol_multi": 1
},
"ul-indent": { "indent": 2 },
"ol-prefix": { "style": "ordered" }
}
================================================
FILE: .markdownlint.md
================================================
# How to set up markdownlint rules
- [list of rules](https://github.com/DavidAnson/markdownlint/blob/master/doc/Rules.md)
- [how to configure in vscode](https://github.com/DavidAnson/vscode-markdownlint#configure)
================================================
FILE: .mcdev-validations.js
================================================
================================================
FILE: .npmrc
================================================
save-prefix=''
================================================
FILE: .nycrc.json
================================================
{
"all": true,
"include": ["lib/**"],
"exclude": ["lib/metadataTypes/definitions/*.js", "test/**", "types/**"]
}
================================================
FILE: .prettierignore
================================================
docs
node_modules
retrieve
================================================
FILE: .prettierrc
================================================
{
"tabWidth": 4,
"printWidth": 100,
"singleQuote": true,
"trailingComma": "es5",
"overrides": [
{
"files": "*.json",
"options": {
"parser": "json"
}
},
{
"files": "package.json|package-lock.json",
"options": {
"printWidth": 40
}
},
{
"files": "*.ssjs",
"options": {
"parser": "babel",
"trailingComma": "none"
}
},
{
"files": "*.md",
"options": {
"tabWidth": 2
}
}
]
}
================================================
FILE: .vscode/extensions.json
================================================
{
// See http://go.microsoft.com/fwlink/?LinkId=827846 to learn about workspace recommendations.
// Extension identifier format: ${publisher}.${name}. Example: vscode.csharp
// List of extensions which should be recommended for users of this workspace.
"recommendations": [
// collaboration
"aaron-bond.better-comments",
"github.vscode-pull-request-github",
"johnpapa.vscode-peacock",
// Linters
"dbaeumer.vscode-eslint",
// Formatting & colors
"editorconfig.editorconfig",
"esbenp.prettier-vscode",
"xnerd.ampscript-language",
"FiB.beautyAmp",
// mcdev tests
"hbenl.vscode-mocha-test-adapter",
"IBM.output-colorizer",
// Markdown / Readme.md
"joernberkefeld.markdown-preview-bitbucket-innersource"
]
}
================================================
FILE: .vscode/launch.json
================================================
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Launch Program",
"program": "${workspaceFolder}\\lib\\index.js",
"args": ["retrieve", "Dev"]
}
]
}
================================================
FILE: .vscode/settings.json
================================================
{
"editor.codeActionsOnSave": {
"source.fixAll.eslint": "explicit",
"source.fixAll.markdownlint": "explicit"
},
"editor.formatOnSave": true,
"files.associations": {
"*.ssjs": "javascript",
"*.html": "ampscript"
},
"files.eol": "\n",
"js/ts.implicitProjectConfig.checkJs": true,
"javascript.validate.enable": true,
"markdown.extension.italic.indicator": "_",
"markdown.extension.list.indentationSize": "adaptive",
"markdown.extension.toc.levels": "2..6",
"markdown.extension.toc.orderedList": false,
"markdown.extension.toc.slugifyMode": "github",
"markdown.extension.tableFormatter.enabled": false,
"sql-formatter.indent": " ",
"sql-formatter.uppercase": true,
"[html]": {
"editor.defaultFormatter": "FiB.beautyAmp"
},
"[javascript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[json]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[jsonc]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[markdown]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[typescript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"markdown-toc.orderedList": true,
"markdown-toc.insertAnchor": true,
"outline.showProperties": false,
"outline.showVariables": false,
"breadcrumbs.showVariables": false,
"breadcrumbs.showProperties": false,
"githubIssues.issueBranchTitle": "feature/${issueNumber}-${sanitizedIssueTitle}",
"githubIssues.queries": [
{
"label": "My Issues",
"query": "default"
},
{
"label": "New Issues",
"query": "no:assignee state:open repo:${owner}/${repository} sort:created-desc"
},
{
"label": "Created By Me",
"query": "author:${user} state:open repo:${owner}/${repository} sort:created-desc"
}
],
"vsicons.associations.files": [
{
"icon": "apex",
"languages": [
{ "ids": "ampscript", "defaultExtension": "amp" },
{ "ids": "AMPscript", "defaultExtension": "amp" }
],
"light": true,
"format": "FileFormat.svg"
}
],
"workbench.colorCustomizations": {
"activityBar.activeBackground": "#fbed80",
"activityBar.background": "#fbed80",
"activityBar.foreground": "#15202b",
"activityBar.inactiveForeground": "#15202b99",
"activityBarBadge.background": "#06b9a5",
"activityBarBadge.foreground": "#15202b",
"commandCenter.border": "#15202b99",
"sash.hoverBorder": "#fbed80",
"statusBar.background": "#f9e64f",
"statusBar.foreground": "#15202b",
"statusBarItem.hoverBackground": "#f7df1e",
"statusBarItem.remoteBackground": "#f9e64f",
"statusBarItem.remoteForeground": "#15202b",
"titleBar.activeBackground": "#f9e64f",
"titleBar.activeForeground": "#15202b",
"titleBar.inactiveBackground": "#f9e64f99",
"titleBar.inactiveForeground": "#15202b99"
},
"peacock.color": "#f9e64f"
}
================================================
FILE: .vsls.json
================================================
{
"$schema": "http://json.schemastore.org/vsls",
"gitignore": "none",
"excludeFiles": ["*.p12", "*.cer", "token", ".gitignore"],
"hideFiles": ["bin", "obj"]
}
================================================
FILE: @types/lib/Builder.d.ts
================================================
export default Builder;
export type BuObject = import("../types/mcdev.d.js").BuObject;
export type CodeExtract = import("../types/mcdev.d.js").CodeExtract;
export type CodeExtractItem = import("../types/mcdev.d.js").CodeExtractItem;
export type Mcdevrc = import("../types/mcdev.d.js").Mcdevrc;
export type MetadataTypeItem = import("../types/mcdev.d.js").MetadataTypeItem;
export type MetadataTypeItemDiff = import("../types/mcdev.d.js").MetadataTypeItemDiff;
export type MetadataTypeItemObj = import("../types/mcdev.d.js").MetadataTypeItemObj;
export type MetadataTypeMap = import("../types/mcdev.d.js").MetadataTypeMap;
export type MetadataTypeMapObj = import("../types/mcdev.d.js").MetadataTypeMapObj;
export type MultiMetadataTypeList = import("../types/mcdev.d.js").MultiMetadataTypeList;
export type SoapRequestParams = import("../types/mcdev.d.js").SoapRequestParams;
export type TemplateMap = import("../types/mcdev.d.js").TemplateMap;
/**
* @typedef {import('../types/mcdev.d.js').BuObject} BuObject
* @typedef {import('../types/mcdev.d.js').CodeExtract} CodeExtract
* @typedef {import('../types/mcdev.d.js').CodeExtractItem} CodeExtractItem
* @typedef {import('../types/mcdev.d.js').Mcdevrc} Mcdevrc
* @typedef {import('../types/mcdev.d.js').MetadataTypeItem} MetadataTypeItem
* @typedef {import('../types/mcdev.d.js').MetadataTypeItemDiff} MetadataTypeItemDiff
* @typedef {import('../types/mcdev.d.js').MetadataTypeItemObj} MetadataTypeItemObj
* @typedef {import('../types/mcdev.d.js').MetadataTypeMap} MetadataTypeMap
* @typedef {import('../types/mcdev.d.js').MetadataTypeMapObj} MetadataTypeMapObj
* @typedef {import('../types/mcdev.d.js').MultiMetadataTypeList} MultiMetadataTypeList
* @typedef {import('../types/mcdev.d.js').SoapRequestParams} SoapRequestParams
* @typedef {import('../types/mcdev.d.js').TemplateMap} TemplateMap
*/
/**
* Builds metadata from a template using market specific customisation
*/
declare class Builder {
/**
* Build a template based on a list of metadata files in the retrieve folder.
*
* @param {string} businessUnit references credentials from properties.json
* @param {string} selectedType supported metadata type
* @param {string[]} keyArr customerkey of the metadata
* @param {string[]} marketArr market localizations
* @returns {Promise.} -
*/
static buildTemplate(businessUnit: string, selectedType: string, keyArr: string[], marketArr: string[]): Promise;
/**
* Build a specific metadata file based on a template.
*
* @param {string} businessUnit references credentials from properties.json
* @param {string} selectedType supported metadata type
* @param {string[]} nameArr name of the metadata
* @param {string[]} marketArr market localizations
* @returns {Promise.} -
*/
static buildDefinition(businessUnit: string, selectedType: string, nameArr: string[], marketArr: string[]): Promise;
/**
* Build a specific metadata file based on a template using a list of bu-market combos
*
* @param {string} listName name of list of BU-market combos
* @param {string} type supported metadata type
* @param {string[]} nameArr name of the metadata
* @returns {Promise.